diff --git a/BUILD.gn b/BUILD.gn
index ab7465f..309939b 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1013,6 +1013,7 @@
       ":layout_test_data_mojo_bindings_lite",
       "//content/shell:content_shell",
       "//content/test:mojo_web_test_bindings_js_data_deps",
+      "//content/test:mojo_web_test_old_names_bindings_js_data_deps",
       "//content/shell:mojo_bindings_js_data_deps",
       "//device/bluetooth/public/mojom:fake_bluetooth_interfaces_js_data_deps",
       "//device/vr/public/mojom:mojom_js_data_deps",
diff --git a/DEPS b/DEPS
index 036c602..0843451 100644
--- a/DEPS
+++ b/DEPS
@@ -142,11 +142,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': 'aee26ea14efc9bcbfa99fd2e3947dd59ca72bdea',
+  'skia_revision': '1540b3ba37cfc881f3df98950abd81cf502a312b',
   # 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': '8bccdcf52f80f1308b967e916fe90fe5a7759699',
+  'v8_revision': 'd406d536f00f808b26df1187aba9d5456c765f99',
   # 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.
@@ -154,7 +154,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': '3ffbaed656aeab3239a75edb69a1ae7ca7fdb458',
+  'angle_revision': 'cb8b4a5716ba08ec797010a6c9c247034db13c1f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -162,7 +162,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '5cf6e209650c59fc779e0019b7e6fac39a6ce9f8',
+  'pdfium_revision': '1bd6c15c766419e0fc952909ea7ca5520093e74c',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling BoringSSL
   # and whatever else without interference from each other.
@@ -189,11 +189,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling NaCl
   # and whatever else without interference from each other.
-  'nacl_revision': 'c4cf6f0621b94cca4053b19fa01ef329f5663880',
+  'nacl_revision': '058a26f57015051953a727add26e7e26348b9558',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling freetype
   # and whatever else without interference from each other.
-  'freetype_revision': '8cf046c38d4c6ada76ba070562beff0d5041f795',
+  'freetype_revision': '05439f5cc69eaa3deaf3db52a7999af09a2c293a',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling HarfBuzz
   # and whatever else without interference from each other.
@@ -205,7 +205,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '0285f89eed34ed53cdd4f0d550acbbdfd7b3f7eb',
+  'catapult_revision': '4eede9e813940ba5e06556027172f1e8a740b46c',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -261,7 +261,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'spv_tools_revision': 'b8ab80843f67479b1b0c096138e62ec78145f05b',
+  'spv_tools_revision': '0c4feb643b89d1792b02f7cbef315e9d95633bd7',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -273,11 +273,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'shaderc_revision': '77d7b65ee2a1ad30e68975bfbeaa68e15db5036b',
+  'shaderc_revision': '1f2dec1e12341170ebdc7723111ec17537cf8336',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': '6be313225eaae51e390fcc4db5aed12c4f306f89',
+  'dawn_revision': '8f93871dfff513ce9f0d19debf3f22144399aa6b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -806,7 +806,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'c4ec2639c7ed67f8a2679e8ff478a27c9ac30893',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '8679d594ec31c11d77ffa1dba03fb2adbc033697',
       'condition': 'checkout_linux',
   },
 
@@ -831,7 +831,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '55dad64f46e8552be3c3c684b37196a73b3578e5',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '3b07526aec5572513374e26191e83d367a6e1f7b',
 
   'src/third_party/devtools-node-modules':
     Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'),
@@ -900,7 +900,7 @@
   },
 
   'src/third_party/glslang/src':
-    Var('chromium_git') + '/external/github.com/KhronosGroup/glslang.git' + '@' + '4b4b41a63499d34c527ee4f714dde8072f60c900',
+    Var('chromium_git') + '/external/github.com/KhronosGroup/glslang.git' + '@' + '8aa9a7bb8f74869ab9cfd2c9bd51cef1741004e7',
 
   'src/third_party/google_toolbox_for_mac/src': {
       'url': Var('chromium_git') + '/external/github.com/google/google-toolbox-for-mac.git' + '@' + Var('google_toolbox_for_mac_revision'),
@@ -1191,7 +1191,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' +  'd8448ae7b07a4ff20e08b93da2954973d2ea35d4',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' +  '726371f57927f51b743cae80f8643b6468457651',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1261,7 +1261,7 @@
       'packages': [
           {
               'package': 'chromium/third_party/r8',
-              'version': 'jfE9VkwFvzhAgaBwY40d5HnUk_gcPl8H5vqsTQtb7DYC',
+              'version': '6xVKWv-ssICwyU5FC1osaRpeZio2kM4Tko33I_SIK-EC',
           },
       ],
       'condition': 'checkout_android',
@@ -1359,7 +1359,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '91350f8ecf9ab2922ee062c114e4a759f24bd8d0',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'a0eefc17f7e81bb23cdaed0985136d42d9527e4f',
+    Var('webrtc_git') + '/src.git' + '@' + 'cb60a8b64c94c0f2ef4ace56d07b99934e0e4fbe',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1400,7 +1400,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@31aa7d39c69e0bdede9904318bc7ab2649870b3e',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@bb5517877b5ea1ef6191688b7bff76289ab39d6c',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
index fd1490e0..7aa346a 100644
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -901,6 +901,8 @@
     "java/src/org/chromium/android_webview/permission/AwGeolocationCallback.java",
     "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
     "java/src/org/chromium/android_webview/policy/AwPolicyProvider.java",
+    "java/src/org/chromium/android_webview/ui/util/CrashInfoLoader.java",
+    "java/src/org/chromium/android_webview/ui/util/UploadedCrashesInfoLoader.java",
   ]
   deps = [
     ":android_webview_commandline_java",
diff --git a/android_webview/java/src/org/chromium/android_webview/ui/util/CrashInfoLoader.java b/android_webview/java/src/org/chromium/android_webview/ui/util/CrashInfoLoader.java
new file mode 100644
index 0000000..1b3b137
--- /dev/null
+++ b/android_webview/java/src/org/chromium/android_webview/ui/util/CrashInfoLoader.java
@@ -0,0 +1,47 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+package org.chromium.android_webview.ui.util;
+
+import java.util.List;
+
+/**
+ * An abstract class that collects info about WebView crashes.
+ */
+public abstract class CrashInfoLoader {
+    /**
+     * Crash file report/minidump upload status.
+     */
+    public static enum UploadState {
+        SKIPPED,
+        PENDING,
+        PENDING_USER_REQUESTED,
+        UPLOADED,
+    }
+
+    /**
+     * A class that bundles various information about a crash.
+     */
+    public static class CrashInfo {
+        public UploadState uploadState;
+
+        // ID for locally stored data that may or may not be uploaded.
+        public String localId;
+        // The time the data was captured. This is useful if the data is stored locally when
+        // captured and uploaded at a later time.
+        public long captureTime = -1;
+        public String packageName;
+        public List<String> variations;
+
+        // These fields are only valid when |uploadState| == Uploaded.
+        public String uploadId;
+        public long uploadTime = -1;
+    }
+
+    /**
+     * Loads all crashes info from source.
+     *
+     * @return list of crashes info.
+     */
+    public abstract List<CrashInfo> loadCrashesInfo();
+}
diff --git a/android_webview/java/src/org/chromium/android_webview/ui/util/UploadedCrashesInfoLoader.java b/android_webview/java/src/org/chromium/android_webview/ui/util/UploadedCrashesInfoLoader.java
new file mode 100644
index 0000000..6c17c67
--- /dev/null
+++ b/android_webview/java/src/org/chromium/android_webview/ui/util/UploadedCrashesInfoLoader.java
@@ -0,0 +1,76 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+package org.chromium.android_webview.ui.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Parses upload log file in crash directory where crash upload id and time are written.
+ */
+public class UploadedCrashesInfoLoader extends CrashInfoLoader {
+    private File mLogFile;
+
+    /**
+     * @param logsFile upload log file to parse.
+     */
+    public UploadedCrashesInfoLoader(File logFile) {
+        mLogFile = logFile;
+    }
+
+    /**
+     * Parse and load crashes upload info from upload log file.
+     *
+     * @return list of crashes info.
+     */
+    @Override
+    public List<CrashInfo> loadCrashesInfo() {
+        List<CrashInfo> uploads = new ArrayList<>();
+
+        if (mLogFile.exists()) {
+            try {
+                BufferedReader reader = new BufferedReader(new FileReader(mLogFile));
+                String line = reader.readLine();
+                while (line != null) {
+                    CrashInfo info = parseLogEntry(line);
+                    if (info != null) {
+                        uploads.add(info);
+                    }
+                    line = reader.readLine();
+                }
+                reader.close();
+            } catch (IOException e) {
+            }
+        }
+
+        return uploads;
+    }
+
+    private CrashInfo parseLogEntry(String logEntry) {
+        // uploads log entry are on the format:
+        // <upload-time>,<upload-id>,<crash-local-id>
+        String[] components = logEntry.split(",");
+        // Skip any blank (or corrupted) lines or that have missing info.
+        if (components.length != 3 || components[0].isEmpty() || components[1].isEmpty()
+                || components[2].isEmpty()) {
+            return null;
+        }
+
+        CrashInfo info = new CrashInfo();
+        info.uploadState = UploadState.UPLOADED;
+        try {
+            info.uploadTime = Long.parseLong(components[0]);
+        } catch (NumberFormatException e) {
+            return null;
+        }
+        info.uploadId = components[1];
+        info.localId = components[2];
+
+        return info;
+    }
+}
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/ui/util/UploadedCrashesInfoLoaderTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/ui/util/UploadedCrashesInfoLoaderTest.java
new file mode 100644
index 0000000..c7b45c4
--- /dev/null
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/ui/util/UploadedCrashesInfoLoaderTest.java
@@ -0,0 +1,162 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.android_webview.test.ui.util;
+
+import static org.chromium.android_webview.test.OnlyRunIn.ProcessMode.SINGLE_PROCESS;
+
+import android.support.test.filters.SmallTest;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.android_webview.test.AwJUnit4ClassRunner;
+import org.chromium.android_webview.test.OnlyRunIn;
+import org.chromium.android_webview.ui.util.CrashInfoLoader.CrashInfo;
+import org.chromium.android_webview.ui.util.CrashInfoLoader.UploadState;
+import org.chromium.android_webview.ui.util.UploadedCrashesInfoLoader;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Unit tests for UploadedCrashesInfoLoader.
+ */
+@RunWith(AwJUnit4ClassRunner.class)
+@OnlyRunIn(SINGLE_PROCESS)
+public class UploadedCrashesInfoLoaderTest {
+    private final static String TEST_UPLOAD_TIME_STR = "1234567890";
+    private final static long TEST_UPLOAD_TIME = Long.parseLong(TEST_UPLOAD_TIME_STR);
+    private final static String TEST_UPLOAD_ID = "0123456789abcdef";
+    private final static String TEST_LOCAL_ID = "fedcba9876543210";
+
+    private File mLogFile;
+
+    private static void writeUploadLogs(File logFile, List<String> logEntries) throws IOException {
+        FileWriter writer = new FileWriter(logFile, /* Appending */ false);
+        BufferedWriter bw = new BufferedWriter(writer);
+        for (String entry : logEntries) {
+            bw.write(entry);
+            bw.newLine();
+        }
+        bw.close();
+    }
+
+    @Before
+    public void setUp() throws IOException {
+        mLogFile = File.createTempFile("uploads", "log");
+    }
+
+    @After
+    public void tearDown() {
+        mLogFile.delete();
+    }
+
+    @Test
+    @SmallTest
+    public void testParseSingleEntry() throws IOException {
+        List<String> logs = new ArrayList<>();
+        logs.add(TEST_UPLOAD_TIME_STR + "," + TEST_UPLOAD_ID + "," + TEST_LOCAL_ID);
+        writeUploadLogs(mLogFile, logs);
+
+        UploadedCrashesInfoLoader crashesInfoLoader = new UploadedCrashesInfoLoader(mLogFile);
+        List<CrashInfo> infoList = crashesInfoLoader.loadCrashesInfo();
+
+        Assert.assertEquals(1, infoList.size());
+
+        CrashInfo crashInfo = infoList.get(0);
+        Assert.assertEquals(TEST_UPLOAD_TIME, crashInfo.uploadTime);
+        Assert.assertEquals(TEST_UPLOAD_ID, crashInfo.uploadId);
+        Assert.assertEquals(TEST_LOCAL_ID, crashInfo.localId);
+        Assert.assertEquals(UploadState.UPLOADED, crashInfo.uploadState);
+    }
+
+    @Test
+    @SmallTest
+    public void testParseMultipleEntries() throws IOException {
+        List<String> logs = new ArrayList<>();
+        for (int i = 1; i <= 4; ++i) {
+            String testEntry = TEST_UPLOAD_TIME_STR + ","
+                    + "upload" + Integer.toString(i) + ","
+                    + "local" + Integer.toString(i);
+            logs.add(testEntry);
+        }
+        writeUploadLogs(mLogFile, logs);
+
+        UploadedCrashesInfoLoader crashesInfoLoader = new UploadedCrashesInfoLoader(mLogFile);
+        List<CrashInfo> infoList = crashesInfoLoader.loadCrashesInfo();
+
+        Assert.assertEquals(4, infoList.size());
+        for (int i = 1; i <= 4; ++i) {
+            CrashInfo crashInfo = infoList.get(i - 1);
+            Assert.assertEquals(TEST_UPLOAD_TIME, crashInfo.uploadTime);
+            Assert.assertEquals("upload" + Integer.toString(i), crashInfo.uploadId);
+            Assert.assertEquals("local" + Integer.toString(i), crashInfo.localId);
+            Assert.assertEquals(UploadState.UPLOADED, crashInfo.uploadState);
+        }
+    }
+
+    @Test
+    @SmallTest
+    public void testParseInvalidEntries() throws IOException {
+        List<String> logs = new ArrayList<>();
+        // Valid logs
+        for (int i = 1; i <= 2; ++i) {
+            String testEntry = TEST_UPLOAD_TIME_STR + ","
+                    + "upload" + Integer.toString(i) + ","
+                    + "local" + Integer.toString(i);
+            logs.add(testEntry);
+        }
+        // Invalid logs
+        // invalid upload time
+        logs.add("12345678a,1a2b3c,4d5e6f");
+        // missing upload time
+        logs.add(",1a2b3c,4d5e6f");
+        // empty log
+        logs.add(",,");
+        // missing upload id
+        logs.add("123456789,,4d5e6f");
+        // missing local id
+        logs.add("123456789,1a2b3c,");
+        // less components
+        logs.add("123456789,1a2b3c");
+        // too many components
+        logs.add("123456789,1a2b3c,4d5e6f,1011121314");
+        for (int i = 3; i <= 4; ++i) {
+            String testEntry = TEST_UPLOAD_TIME_STR + ","
+                    + "upload" + Integer.toString(i) + ","
+                    + "local" + Integer.toString(i);
+            logs.add(testEntry);
+        }
+        writeUploadLogs(mLogFile, logs);
+
+        UploadedCrashesInfoLoader crashesInfoLoader = new UploadedCrashesInfoLoader(mLogFile);
+        List<CrashInfo> infoList = crashesInfoLoader.loadCrashesInfo();
+
+        Assert.assertEquals(4, infoList.size());
+        for (int i = 1; i <= 4; ++i) {
+            CrashInfo crashInfo = infoList.get(i - 1);
+            Assert.assertEquals(TEST_UPLOAD_TIME, crashInfo.uploadTime);
+            Assert.assertEquals("upload" + Integer.toString(i), crashInfo.uploadId);
+            Assert.assertEquals("local" + Integer.toString(i), crashInfo.localId);
+            Assert.assertEquals(UploadState.UPLOADED, crashInfo.uploadState);
+        }
+    }
+
+    @Test
+    @SmallTest
+    public void testParseNonExistFile() throws IOException {
+        mLogFile.delete();
+        UploadedCrashesInfoLoader crashesInfoLoader = new UploadedCrashesInfoLoader(mLogFile);
+        List<CrashInfo> infoList = crashesInfoLoader.loadCrashesInfo();
+        Assert.assertEquals(0, infoList.size());
+    }
+}
diff --git a/android_webview/lib/DEPS b/android_webview/lib/DEPS
index 572fe0c..06f115c 100644
--- a/android_webview/lib/DEPS
+++ b/android_webview/lib/DEPS
@@ -1,6 +1,10 @@
 include_rules = [
   "+cc/base/switches.h",
-  "+components",  # For jni registers.
+  "+components/autofill/core",
+  "+components/crash/core",
+  "+components/safe_browsing/android",
+  "+components/spellcheck/common",
+  "+components/viz/common",
   "+content/public",
   "+gin/public",
   "+gin/v8_initializer.h",
diff --git a/android_webview/test/BUILD.gn b/android_webview/test/BUILD.gn
index 26a0179..c7899db9 100644
--- a/android_webview/test/BUILD.gn
+++ b/android_webview/test/BUILD.gn
@@ -275,6 +275,7 @@
     "../javatests/src/org/chromium/android_webview/test/services/MockVariationsSeedServer.java",
     "../javatests/src/org/chromium/android_webview/test/services/VariationsSeedServerTest.java",
     "../javatests/src/org/chromium/android_webview/test/services/VisualStateCallbackTest.java",
+    "../javatests/src/org/chromium/android_webview/test/ui/util/UploadedCrashesInfoLoaderTest.java",
     "../javatests/src/org/chromium/android_webview/test/util/AwQuotaManagerBridgeTestUtil.java",
     "../javatests/src/org/chromium/android_webview/test/util/AwTestTouchUtils.java",
     "../javatests/src/org/chromium/android_webview/test/util/CommonResources.java",
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 68fe670..4826457 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -784,8 +784,8 @@
     "system/network/vpn_list_view.h",
     "system/network/wifi_toggle_notification_controller.cc",
     "system/network/wifi_toggle_notification_controller.h",
-    "system/night_light/night_light_controller.cc",
-    "system/night_light/night_light_controller.h",
+    "system/night_light/night_light_controller_impl.cc",
+    "system/night_light/night_light_controller_impl.h",
     "system/night_light/night_light_feature_pod_controller.cc",
     "system/night_light/night_light_feature_pod_controller.h",
     "system/night_light/night_light_toggle_button.cc",
diff --git a/ash/accessibility/accessibility_controller_impl.cc b/ash/accessibility/accessibility_controller_impl.cc
index bcc863ad..9eb834c 100644
--- a/ash/accessibility/accessibility_controller_impl.cc
+++ b/ash/accessibility/accessibility_controller_impl.cc
@@ -1040,10 +1040,22 @@
       prefs::kAccessibilityAutoclickMenuPosition));
 }
 
+void AccessibilityControllerImpl::RequestAutoclickScrollableBoundsForPoint(
+    gfx::Point& point_in_screen) {
+  if (client_)
+    client_->RequestAutoclickScrollableBoundsForPoint(point_in_screen);
+}
+
 void AccessibilityControllerImpl::UpdateAutoclickMenuBoundsIfNeeded() {
   Shell::Get()->autoclick_controller()->UpdateAutoclickMenuBoundsIfNeeded();
 }
 
+void AccessibilityControllerImpl::OnAutoclickScrollableBoundsFound(
+    gfx::Rect& bounds_in_screen) {
+  Shell::Get()->autoclick_controller()->OnAutoclickScrollableBoundsFound(
+      bounds_in_screen);
+}
+
 void AccessibilityControllerImpl::UpdateCaretHighlightFromPref() {
   DCHECK(active_user_prefs_);
   const bool enabled = active_user_prefs_->GetBoolean(
diff --git a/ash/accessibility/accessibility_controller_impl.h b/ash/accessibility/accessibility_controller_impl.h
index cff0696b..1d64890 100644
--- a/ash/accessibility/accessibility_controller_impl.h
+++ b/ash/accessibility/accessibility_controller_impl.h
@@ -26,6 +26,10 @@
 }  // namespace mojom
 }  // namespace ax
 
+namespace gfx {
+class Point;
+}  // namespace gfx
+
 namespace ash {
 
 class AccessibilityHighlightController;
@@ -75,6 +79,7 @@
   AutoclickEventType GetAutoclickEventType();
   void SetAutoclickMenuPosition(AutoclickMenuPosition position);
   AutoclickMenuPosition GetAutoclickMenuPosition();
+  void RequestAutoclickScrollableBoundsForPoint(gfx::Point& point_in_screen);
 
   // Update the autoclick menu bounds if necessary. This may need to happen when
   // the display work area changes, or if system ui regions change (like the
@@ -182,6 +187,7 @@
       SwitchAccessEventHandlerDelegate* delegate) override;
   void SetDictationActive(bool is_active) override;
   void ToggleDictationFromSource(DictationToggleSource source) override;
+  void OnAutoclickScrollableBoundsFound(gfx::Rect& bounds_in_screen) override;
   void ForwardKeyEventsToSwitchAccess(bool should_forward) override;
   base::string16 GetBatteryDescription() const override;
   void SetVirtualKeyboardVisible(bool is_visible) override;
diff --git a/ash/accessibility/test_accessibility_controller_client.cc b/ash/accessibility/test_accessibility_controller_client.cc
index 754a39b..0c08653 100644
--- a/ash/accessibility/test_accessibility_controller_client.cc
+++ b/ash/accessibility/test_accessibility_controller_client.cc
@@ -60,6 +60,9 @@
   ++select_to_speak_state_change_requests_;
 }
 
+void TestAccessibilityControllerClient::
+    RequestAutoclickScrollableBoundsForPoint(gfx::Point& point_in_screen) {}
+
 int32_t TestAccessibilityControllerClient::GetPlayedEarconAndReset() {
   int32_t tmp = sound_key_;
   sound_key_ = -1;
diff --git a/ash/accessibility/test_accessibility_controller_client.h b/ash/accessibility/test_accessibility_controller_client.h
index cd86ce0..42868d8 100644
--- a/ash/accessibility/test_accessibility_controller_client.h
+++ b/ash/accessibility/test_accessibility_controller_client.h
@@ -35,6 +35,8 @@
   bool ShouldToggleSpokenFeedbackViaTouch() const override;
   void PlaySpokenFeedbackToggleCountdown(int tick_count) override;
   void RequestSelectToSpeakStateChange() override;
+  void RequestAutoclickScrollableBoundsForPoint(
+      gfx::Point& point_in_screen) override;
 
   int32_t GetPlayedEarconAndReset();
 
diff --git a/ash/app_list/views/app_list_folder_view.cc b/ash/app_list/views/app_list_folder_view.cc
index e8e7409..d9f433c 100644
--- a/ash/app_list/views/app_list_folder_view.cc
+++ b/ash/app_list/views/app_list_folder_view.cc
@@ -30,7 +30,6 @@
 #include "ui/compositor/layer_animation_observer.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/events/event.h"
-#include "ui/gfx/animation/animation_delegate.h"
 #include "ui/gfx/animation/slide_animation.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/geometry/rect_conversions.h"
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc
index eb5deef..beba1be 100644
--- a/ash/app_list/views/apps_grid_view.cc
+++ b/ash/app_list/views/apps_grid_view.cc
@@ -120,18 +120,19 @@
 // the original position, then the item is moved to just before its target
 // position and opacity set to 0. When the animation runs, this delegate moves
 // the layer and fades it out while fading in the item at the same time.
-class RowMoveAnimationDelegate : public gfx::AnimationDelegate {
+class RowMoveAnimationDelegate : public views::AnimationDelegateViews {
  public:
   RowMoveAnimationDelegate(views::View* view,
                            ui::Layer* layer,
                            const gfx::Rect& layer_target)
-      : view_(view),
+      : views::AnimationDelegateViews(view),
+        view_(view),
         layer_(layer),
         layer_start_(layer ? layer->bounds() : gfx::Rect()),
         layer_target_(layer_target) {}
   ~RowMoveAnimationDelegate() override {}
 
-  // gfx::AnimationDelegate overrides:
+  // views::AnimationDelegateViews:
   void AnimationProgressed(const gfx::Animation* animation) override {
     view_->layer()->SetOpacity(animation->GetCurrentValue());
     view_->layer()->ScheduleDraw();
@@ -166,13 +167,14 @@
 // ItemRemoveAnimationDelegate is used to show animation for removing an item.
 // This happens when user drags an item into a folder. The dragged item will
 // be removed from the original list after it is dropped into the folder.
-class ItemRemoveAnimationDelegate : public gfx::AnimationDelegate {
+class ItemRemoveAnimationDelegate : public views::AnimationDelegateViews {
  public:
-  explicit ItemRemoveAnimationDelegate(views::View* view) : view_(view) {}
+  explicit ItemRemoveAnimationDelegate(views::View* view)
+      : views::AnimationDelegateViews(view), view_(view) {}
 
   ~ItemRemoveAnimationDelegate() override {}
 
-  // gfx::AnimationDelegate overrides:
+  // views::AnimationDelegateViews:
   void AnimationProgressed(const gfx::Animation* animation) override {
     view_->layer()->SetOpacity(1 - animation->GetCurrentValue());
     view_->layer()->ScheduleDraw();
@@ -187,15 +189,18 @@
 // ItemMoveAnimationDelegate observes when an item finishes animating when it is
 // not moving between rows. This is to ensure an item is repainted for the
 // "zoom out" case when releasing an item being dragged.
-class ItemMoveAnimationDelegate : public gfx::AnimationDelegate {
+class ItemMoveAnimationDelegate : public views::AnimationDelegateViews {
  public:
   explicit ItemMoveAnimationDelegate(AppListItemView* view,
                                      bool is_released_drag_view)
-      : view_(view), is_released_drag_view_(is_released_drag_view) {
+      : views::AnimationDelegateViews(view),
+        view_(view),
+        is_released_drag_view_(is_released_drag_view) {
     if (is_released_drag_view_)
       view_->title()->SetVisible(false);
   }
 
+  // views::AnimationDelegateViews:
   void AnimationEnded(const gfx::Animation* animation) override {
     if (is_released_drag_view_)
       view_->title()->SetVisible(true);
@@ -280,7 +285,7 @@
   ui::Layer* layer() { return &layer_; }
 
  private:
-  // ui::LayerDelegate overrides:
+  // ui::LayerDelegate:
   // TODO(warx): using a mask is expensive. It would be more efficient to avoid
   // the mask for the central area and only use it for top/bottom areas.
   void OnPaintLayer(const ui::PaintContext& context) override {
diff --git a/ash/ash_prefs.cc b/ash/ash_prefs.cc
index d2946cf..68236c18 100644
--- a/ash/ash_prefs.cc
+++ b/ash/ash_prefs.cc
@@ -18,7 +18,7 @@
 #include "ash/system/caps_lock_notification_controller.h"
 #include "ash/system/message_center/message_center_controller.h"
 #include "ash/system/network/vpn_list_view.h"
-#include "ash/system/night_light/night_light_controller.h"
+#include "ash/system/night_light/night_light_controller_impl.h"
 #include "ash/system/palette/palette_tray.h"
 #include "ash/system/palette/palette_welcome_bubble.h"
 #include "ash/system/power/power_prefs.h"
@@ -43,7 +43,7 @@
   LogoutButtonTray::RegisterProfilePrefs(registry);
   MediaControllerImpl::RegisterProfilePrefs(registry);
   MessageCenterController::RegisterProfilePrefs(registry);
-  NightLightController::RegisterProfilePrefs(registry);
+  NightLightControllerImpl::RegisterProfilePrefs(registry);
   PaletteTray::RegisterProfilePrefs(registry);
   PaletteWelcomeBubble::RegisterProfilePrefs(registry);
   ShelfController::RegisterProfilePrefs(registry);
diff --git a/ash/assistant/ui/assistant_container_view_animator_legacy_impl.cc b/ash/assistant/ui/assistant_container_view_animator_legacy_impl.cc
index 981b151a..74a0a2d3 100644
--- a/ash/assistant/ui/assistant_container_view_animator_legacy_impl.cc
+++ b/ash/assistant/ui/assistant_container_view_animator_legacy_impl.cc
@@ -44,7 +44,8 @@
     AssistantContainerViewAnimatorLegacyImpl(
         AssistantViewDelegate* delegate,
         AssistantContainerView* assistant_container_view)
-    : AssistantContainerViewAnimator(delegate, assistant_container_view) {}
+    : AssistantContainerViewAnimator(delegate, assistant_container_view),
+      views::AnimationDelegateViews(assistant_container_view) {}
 
 AssistantContainerViewAnimatorLegacyImpl::
     ~AssistantContainerViewAnimatorLegacyImpl() = default;
@@ -84,8 +85,8 @@
     animation_->SetSlideDuration(kAnimationDurationMs);
 
     // Cache start and end animation values.
-    start_size_ = gfx::SizeF(assistant_container_view_->size());
-    end_size_ = gfx::SizeF(assistant_container_view_->GetPreferredSize());
+    start_size_ = assistant_container_view_->size();
+    end_size_ = assistant_container_view_->GetPreferredSize();
     start_radius_ = assistant_container_view_->GetCornerRadius();
 
     // Cache start frame number for measuring animation smoothness.
@@ -155,11 +156,8 @@
   const int center_x = bounds.CenterPoint().x();
 
   // Interpolate size at our current animation value.
-  const gfx::SizeF size = gfx::Tween::SizeValueBetween(
-      animation->GetCurrentValue(), start_size_, end_size_);
-
-  // Use our interpolated size.
-  bounds.set_size(gfx::Size(size.width(), size.height()));
+  bounds.set_size(gfx::Tween::SizeValueBetween(animation->GetCurrentValue(),
+                                               start_size_, end_size_));
 
   // Maintain original |center_x| and |bottom| positions.
   bounds.set_x(std::max(center_x - (bounds.width() / 2), 0));
diff --git a/ash/assistant/ui/assistant_container_view_animator_legacy_impl.h b/ash/assistant/ui/assistant_container_view_animator_legacy_impl.h
index ab6a74aa..ab1a2832 100644
--- a/ash/assistant/ui/assistant_container_view_animator_legacy_impl.h
+++ b/ash/assistant/ui/assistant_container_view_animator_legacy_impl.h
@@ -11,8 +11,8 @@
 #include "base/component_export.h"
 #include "base/macros.h"
 #include "ui/compositor/layer.h"
-#include "ui/gfx/animation/animation_delegate.h"
-#include "ui/gfx/geometry/size_f.h"
+#include "ui/gfx/geometry/size.h"
+#include "ui/views/animation/animation_delegate_views.h"
 
 namespace gfx {
 class SlideAnimation;
@@ -30,7 +30,7 @@
 // not very performant and we are working to deprecate this implementation.
 class COMPONENT_EXPORT(ASSISTANT_UI) AssistantContainerViewAnimatorLegacyImpl
     : public AssistantContainerViewAnimator,
-      public gfx::AnimationDelegate {
+      public views::AnimationDelegateViews {
  public:
   AssistantContainerViewAnimatorLegacyImpl(
       AssistantViewDelegate* delegate,
@@ -48,7 +48,7 @@
       base::Optional<AssistantEntryPoint> entry_point,
       base::Optional<AssistantExitPoint> exit_point) override;
 
-  // gfx::AnimationDelegate:
+  // views::AnimationDelegatViews:
   void AnimationProgressed(const gfx::Animation* animation) override;
   void AnimationEnded(const gfx::Animation* animation) override;
 
@@ -61,8 +61,8 @@
 
   // Animation.
   std::unique_ptr<gfx::SlideAnimation> animation_;
-  gfx::SizeF start_size_;
-  gfx::SizeF end_size_;
+  gfx::Size start_size_;
+  gfx::Size end_size_;
   int start_radius_ = 0;
   int end_radius_ = 0;
   int start_frame_number_ = 0;
diff --git a/ash/autoclick/autoclick_controller.cc b/ash/autoclick/autoclick_controller.cc
index ac1e1c7..fe6e1f0d 100644
--- a/ash/autoclick/autoclick_controller.cc
+++ b/ash/autoclick/autoclick_controller.cc
@@ -151,6 +151,7 @@
           }));
       disable_dialog_ = dialog->GetWeakPtr();
     } else {
+      HideScrollPosition();
       Shell::Get()->RemovePreTargetHandler(this);
       menu_bubble_controller_ = nullptr;
       enabled_ = enabled;
@@ -262,6 +263,15 @@
   over_scroll_button_ = false;
 }
 
+void AutoclickController::OnAutoclickScrollableBoundsFound(
+    gfx::Rect& bounds_in_screen) {
+  // TODO(katie): Don't call this on the very first time scrollable bounds
+  // are found for each time the type is changed to scroll. We want the
+  // default first position of the scrollbar to be next to the menu bubble.
+  // TODO(katie): Set the scroll bubble position using the bounds.
+  menu_bubble_controller_->SetScrollPoint(scroll_location_);
+}
+
 void AutoclickController::UpdateAutoclickMenuBoundsIfNeeded() {
   if (menu_bubble_controller_)
     menu_bubble_controller_->SetPosition(menu_position_);
@@ -332,12 +342,9 @@
     } else {
       scroll_location_ = gesture_anchor_location_;
       UpdateScrollPosition(scroll_location_);
-      // If the user has requested a new point on the screen as the target of
-      // scrolls, move the scroll bubble close to that point.
-      // TODO(katie): Determine the scrollable region using the automation API
-      // and a component extension, and pass in the region as well as a single
-      // point here, per the spec.
-      menu_bubble_controller_->SetScrollPoint(scroll_location_);
+      Shell::Get()
+          ->accessibility_controller()
+          ->RequestAutoclickScrollableBoundsForPoint(scroll_location_);
       base::RecordAction(
           base::UserMetricsAction("Accessibility.Autoclick.ChangeScrollPoint"));
     }
@@ -498,6 +505,9 @@
                          ->GetPrimaryRootWindow()
                          ->GetBoundsInScreen()
                          .CenterPoint();
+  Shell::Get()
+      ->accessibility_controller()
+      ->RequestAutoclickScrollableBoundsForPoint(scroll_location_);
 }
 
 void AutoclickController::UpdateScrollPosition(
@@ -521,6 +531,8 @@
     autoclick_scroll_position_handler_.reset();
   if (scroll_position_widget_)
     scroll_position_widget_.reset();
+
+  // TODO(katie): Clear any Autoclick scroll focus rings here.
 }
 
 bool AutoclickController::DragInProgress() const {
diff --git a/ash/autoclick/autoclick_controller.h b/ash/autoclick/autoclick_controller.h
index 8ffd7d6..dfe4312 100644
--- a/ash/autoclick/autoclick_controller.h
+++ b/ash/autoclick/autoclick_controller.h
@@ -85,6 +85,10 @@
   // The cursor has exited a scroll (up/down/left/right) button.
   void OnExitedScrollButton();
 
+  // The Autoclick extension has found scrollble bounds at the current scroll
+  // point.
+  void OnAutoclickScrollableBoundsFound(gfx::Rect& bounds_in_screen);
+
   // Update the bubble menu bounds if necessary to avoid system UI.
   void UpdateAutoclickMenuBoundsIfNeeded();
 
diff --git a/ash/components/strings/ash_components_strings_am.xtb b/ash/components/strings/ash_components_strings_am.xtb
index 8a237a8..70287ef 100644
--- a/ash/components/strings/ash_components_strings_am.xtb
+++ b/ash/components/strings/ash_components_strings_am.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="am">
 <translation id="104962181688258143">የፋይሎች መተግበሪያን ይክፈቱ</translation>
+<translation id="1098295134904615027">በቀኝ በኩል ምናባዊውን ዴስክ አግብር</translation>
 <translation id="1122869341872663659"><ph name="N" /> ፍለጋ ውጤቶችን ለ<ph name="QUERY" /> በማሳየት ላይ</translation>
 <translation id="1195667586424773550">አገናኙን ወደ የትሩ አድራሻ አሞሌ ይጎትቱት</translation>
 <translation id="1204450209689312104">አዲስ ትር ማንነት በማያሳውቅ ሁነታ ውስጥ ይክፈቱ</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">ፍለጋ </translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> ወይም <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">ወደ የመስመር መጨረሻ ይሂዱ</translation>
+<translation id="1499072997694708844">ማናቸውንም ክፍት አግኝ መስኮት ይዝጉ ወይም የእርስዎን አሁን ያለውን ገጽ መጫን ያስቁሙ</translation>
 <translation id="1510238584712386396">ማስጀመሪያ</translation>
 <translation id="152892567002884378">ድምጽ ጨምር</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />፣ ከዚያ <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">በአድራሻ አሞሌው ላይ ወዳለው ግቤትዎ www. እና .com ያክሉ፣ ከዚያ ገጹን ይክፈቱ</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />፣ ከዚያ <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> ወይም <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">በግራ በኩል ምናባዊውን ዴስክ አግብር</translation>
 <translation id="1996162290124031907">ወደ የሚቀጥለው ትር ይሂዱ</translation>
 <translation id="2010818616644390445">በመስኮቱ ውስጥ ያለው የመጨረሻ ትር ይሂዱ</translation>
 <translation id="2040706009561734834">አስጀማሪውን ይክፈቱ/ይዝጉ</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">ቅጽበታዊ ገጽ እይታን ያነሳል</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">የአድራሻ አሞሌ ላይ አተኩር</translation>
+<translation id="3165428420335997629">አዲስ ምናባዊ ዴስክ ፍጠር</translation>
 <translation id="3256109297135787951">በእርስዎ መደርደሪያ ላይ በንጥሉ ላይ ያለውን ማድመቂያ ያስወግዱ</translation>
 <translation id="3288816184963444640">የአሁኑን መስኮት ይዝጉ</translation>
 <translation id="3407560819924487926">የተግባር አስተዳዳሪን ያምጡት</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">የአሁኑን ገጽ ይፈልጉ</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> ይጫኑ እና አገናኝ ጠቅ ያድርጉ</translation>
 <translation id="561814908794220892">ድረ-ገጹን በአዲስ ትር ውስጥ ይክፈቱ</translation>
+<translation id="5620219513321115856">ንቁ መስኮትን በቀኝ በኩል ወደ ያለው ዴስክ ያንቀሳቅሱ</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> ወይም <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">አገናኙን በአዲስ ትር ውስጥ ይክፈቱ</translation>
 <translation id="5757474750054631686">ቁልፍ ሰሌዳን ያጨልሙ (የጀርባ ብርሃን ላላቸው ቁልፍ ሰሌዳዎች ብቻ)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">ማያ ገጽን 90 ዲግሪ አሽከርክር</translation>
 <translation id="8241665785394195545">ቅንፍ ቀኝ</translation>
 <translation id="8264941229485248811">የገንቢ መሣሪያዎች መርማሪን አሳይ ወይም ደብቅ</translation>
+<translation id="8355937569537581904">አሁን ያለውን ምናባዊ ዴክክ አስወግድ</translation>
 <translation id="836869401750819675">የውርዶች ገጽን ይክፈቱ</translation>
 <translation id="8388247778047144397">አገናኙን በትሩ ድርድር ላይ ወዳለ ባዶ ቦታ ይጎትቱት</translation>
 <translation id="8389638407792712197">አዲስ መስኮት ይክፈቱ</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">ቀዳሚውን ቃል ወይም ፊደል ይምረጡ</translation>
 <translation id="8727232706774971183">የእርስዎን ማሳወቂያዎች ይመልከቱ</translation>
 <translation id="8855885154700222542">የሙሉ ማያ ገጽ እይታ ቁልፍ</translation>
+<translation id="8881584919399569791">ንቁ መስኮትን በግራ በኩል ወደ ያለው ዴስክ ያንቀሳቅሱ</translation>
 <translation id="88986195241502842">ገጽ ወደ ታች</translation>
 <translation id="8924883688469390268">ወደ ቀደሚው ተጠቃሚ ቀይር</translation>
 <translation id="8977648847395357314">በአድራሻ አሞሌ ውስጥ ይዘቱን ይምረጡ</translation>
diff --git a/ash/components/strings/ash_components_strings_ar.xtb b/ash/components/strings/ash_components_strings_ar.xtb
index f464c84..206d293 100644
--- a/ash/components/strings/ash_components_strings_ar.xtb
+++ b/ash/components/strings/ash_components_strings_ar.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ar">
 <translation id="104962181688258143">فتح تطبيق الملفات</translation>
+<translation id="1098295134904615027">تفعيل سطح المكتب الافتراضي الأيسر</translation>
 <translation id="1122869341872663659">الاطّلاع <ph name="N" /> على نتائج بحث <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">اسحب الرابط إلى شريط عناوين علامة التبويب</translation>
 <translation id="1204450209689312104">فتح نافذة جديدة في وضع التصفح المتخفي</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">البحث</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> أو <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">الانتقال إلى نهاية السطر</translation>
+<translation id="1499072997694708844">عليك إغلاق أي نوافذ بحث مفتوحة أو إيقاف تحميل الصفحة الحالية.</translation>
 <translation id="1510238584712386396">المشغّل</translation>
 <translation id="152892567002884378">رفع مستوى الصوت</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />، ثم <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">‏إضافة .www وcom. إلى الإدخال في شريط العناوين، ثم فتح الصفحة</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />، ثم <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> أو <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">تفعيل سطح المكتب الافتراضي الأيمن</translation>
 <translation id="1996162290124031907">الانتقال إلى علامة التبويب التالية</translation>
 <translation id="2010818616644390445">الانتقال إلى علامة التبويب الأخيرة في النافذة</translation>
 <translation id="2040706009561734834">فتح مشغِّل التطبيقات أو إغلاقه</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">أخذ لقطة شاشة</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">تركيز شريط العناوين</translation>
+<translation id="3165428420335997629">إنشاء سطح مكتب افتراضي جديد</translation>
 <translation id="3256109297135787951">إزالة التحديد عن عنصر على الرف</translation>
 <translation id="3288816184963444640">إغلاق النافذة الحالية</translation>
 <translation id="3407560819924487926">استدعاء إدارة المهام</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">البحث في الصفحة الحالية</translation>
 <translation id="5563050856984839829">اضغط على <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> وانقر على رابط</translation>
 <translation id="561814908794220892">فتح صفحة الويب في علامة تبويب جديدة</translation>
+<translation id="5620219513321115856">نقل نافذة نشطة إلى سطح المكتب الأيسر</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> أو <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">فتح الرابط في علامة التبويب</translation>
 <translation id="5757474750054631686">تعتيم لوحة المفاتيح (للوحات المفاتيح المزودة بإضاءة خلفية فقط)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">تدوير الشاشة بزاوية 90 درجة</translation>
 <translation id="8241665785394195545">القوس الأيمن</translation>
 <translation id="8264941229485248811">إظهار مراقب "أدوات المطوِّرين" أو إخفاؤه</translation>
+<translation id="8355937569537581904">إزالة سطح المكتب الافتراضي الحالي</translation>
 <translation id="836869401750819675">فتح صفحة "التنزيلات"</translation>
 <translation id="8388247778047144397">اسحب الرابط إلى منطقة فارغة على شريط علامات التبويب</translation>
 <translation id="8389638407792712197">فتح نافذة جديدة</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">تحديد الكلمة السابقة أو الحرف السابق</translation>
 <translation id="8727232706774971183">الاطلاع على الإشعارات</translation>
 <translation id="8855885154700222542">مفتاح ملء الشاشة</translation>
+<translation id="8881584919399569791">نقل نافذة نشطة إلى سطح المكتب الأيمن</translation>
 <translation id="88986195241502842">صفحة لأسفل</translation>
 <translation id="8924883688469390268">التبديل إلى المستخدم السابق</translation>
 <translation id="8977648847395357314">تحديد المحتوى في شريط العناوين</translation>
diff --git a/ash/components/strings/ash_components_strings_bg.xtb b/ash/components/strings/ash_components_strings_bg.xtb
index 62848f8..e01077f 100644
--- a/ash/components/strings/ash_components_strings_bg.xtb
+++ b/ash/components/strings/ash_components_strings_bg.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="bg">
 <translation id="104962181688258143">Отваряне на приложението Файлове</translation>
+<translation id="1098295134904615027">Активиране на виртуалния работен кът отдясно</translation>
 <translation id="1122869341872663659">Показват се <ph name="N" /> резултата от търсенето на „<ph name="QUERY" />“</translation>
 <translation id="1195667586424773550">Преместете с плъзгане връзката в адресната лента на раздела</translation>
 <translation id="1204450209689312104">Отваряне на нов прозорец в режим „инкогнито“</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Търсене</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> или <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Преминаване в края на реда</translation>
+<translation id="1499072997694708844">Затваряне на всеки отворен прозорец за търсене или спиране на зареждането на текущата ви страница</translation>
 <translation id="1510238584712386396">Стартов панел</translation>
 <translation id="152892567002884378">Увеличаване на силата на звука</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> и след това <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Добавяне на www. и .com към въведеното в адресната лента и отваряне на съответната страница</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> и след това <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> или <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Активиране на виртуалния работен кът отляво</translation>
 <translation id="1996162290124031907">Към следващия раздел</translation>
 <translation id="2010818616644390445">Преминаване към последния раздел в прозореца</translation>
 <translation id="2040706009561734834">Отваряне/затваряне на стартовия панел</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Създаване на екранна снимка</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Преместване на фокуса върху адресната лента</translation>
+<translation id="3165428420335997629">Създаване на нов виртуален работен кът</translation>
 <translation id="3256109297135787951">Премахване на фокуса от елемент в лавицата</translation>
 <translation id="3288816184963444640">Затваряне на текущия прозорец</translation>
 <translation id="3407560819924487926">Показване на диспечера на задачите</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Търсене в текущата страница</translation>
 <translation id="5563050856984839829">Натиснете <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> и кликнете върху връзка</translation>
 <translation id="561814908794220892">Отваряне на уеб страницата в нов раздел</translation>
+<translation id="5620219513321115856">Преместване на активния прозорец към работния кът отдясно</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> или <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Отваряне на връзката в раздела</translation>
 <translation id="5757474750054631686">Намаляване на яркостта на клавиатурата (само за клавиатури с подсветка)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Завъртане на екрана на 90 градуса</translation>
 <translation id="8241665785394195545">дясна квадратна скоба</translation>
 <translation id="8264941229485248811">Показване или скриване на панела за проверка в инструментите за програмисти</translation>
+<translation id="8355937569537581904">Премахване на текущия виртуален работен кът</translation>
 <translation id="836869401750819675">Отваряне на страницата „Изтегляния“</translation>
 <translation id="8388247778047144397">Преместете с плъзгане връзката до празен участък на лентата с раздели</translation>
 <translation id="8389638407792712197">Отваряне на нов прозорец</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Избиране на предишната дума или буква</translation>
 <translation id="8727232706774971183">Преглед на известията ви</translation>
 <translation id="8855885154700222542">Клавиш за цял екран</translation>
+<translation id="8881584919399569791">Преместване на активния прозорец към работния кът отляво</translation>
 <translation id="88986195241502842">Страница надолу</translation>
 <translation id="8924883688469390268">Превключване към предишния потребител</translation>
 <translation id="8977648847395357314">Избиране на съдържанието в адресната лента</translation>
diff --git a/ash/components/strings/ash_components_strings_bn.xtb b/ash/components/strings/ash_components_strings_bn.xtb
index b0ed9a96..0d82c75 100644
--- a/ash/components/strings/ash_components_strings_bn.xtb
+++ b/ash/components/strings/ash_components_strings_bn.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="bn">
 <translation id="104962181688258143">ফাইল অ্যাপ খুলুন</translation>
+<translation id="1098295134904615027">ডানদিকের ভার্চুয়াল ডেস্ক চালু করুন</translation>
 <translation id="1122869341872663659"><ph name="QUERY" /> এর জন্যে <ph name="N" />টি ফলাফল দেখানো হচ্ছে</translation>
 <translation id="1195667586424773550">ট্যাব অ্যাড্রেস বারে লিঙ্কটি টেনে আনুন</translation>
 <translation id="1204450209689312104">ছদ্মবেশী মোডে একটি নতুন উইন্ডো খুলুন</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">সার্চ করুন</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> অথবা <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">লাইনের শেষে যান</translation>
+<translation id="1499072997694708844">কোনও খোলা খোঁজার উইন্ডো বা বর্তমান পৃষ্ঠাটি লোড করা বন্ধ করুন</translation>
 <translation id="1510238584712386396">লঞ্চার</translation>
 <translation id="152892567002884378">ভলিউম বাড়ান</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, তারপর <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">অ্যাড্রেস বারে আপনার ইনপুটে www. এবং .com যোগ করে পৃষ্ঠা খুলুন</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, তারপর <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> অথবা <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">বাঁদিকের ভার্চুয়াল ডেস্ক চালু করুন</translation>
 <translation id="1996162290124031907">পরের ট্যাবে যান</translation>
 <translation id="2010818616644390445">উইন্ডোটির শেষ ট্যাবে যান</translation>
 <translation id="2040706009561734834">লঞ্চার খুলুন/বন্ধ করুন</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">স্ক্রিনশট নিন</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">ফোকাস অ্যাড্রেস বার</translation>
+<translation id="3165428420335997629">একটি নতুন ভার্চুয়াল ডেস্ক তৈরি করুন</translation>
 <translation id="3256109297135787951">আপনার শেল্ফে আইটেম থেকে হাইলাইট সরিয়ে দিন</translation>
 <translation id="3288816184963444640">বর্তমান উইন্ডোটি বন্ধ করুন</translation>
 <translation id="3407560819924487926">টাস্ক ম্যানেজার আনুন</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">বর্তমান পৃষ্ঠায় খুঁজুন</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> টিপুন এবং একটি লিঙ্ক ক্লিক করুন</translation>
 <translation id="561814908794220892">একটি নতুন ট্যাবে ওয়েবপৃষ্ঠা খুলুন</translation>
+<translation id="5620219513321115856">চালু উইন্ডোকে ডানদিকের ডেস্কে সরান</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> অথবা <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">ট্যাবে লিঙ্কটি খুলুন</translation>
 <translation id="5757474750054631686">কীবোর্ডের আলো কম করুন (শুধুমাত্র ব্যাকলিট কীবোর্ডের জন্য)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">স্ক্রিনকে ৯০ ডিগ্রি ঘোরান</translation>
 <translation id="8241665785394195545">ডানদিকের ব্র্যাকেট দেওয়ার বোতাম</translation>
 <translation id="8264941229485248811">ডেভেলপার টুল পরিদর্শক দেখান বা লুকান</translation>
+<translation id="8355937569537581904">বর্তমানের ভার্চুয়াল ডেস্কটি সরিয়ে দিন</translation>
 <translation id="836869401750819675">ডাউনলোড হওয়া পৃষ্ঠাটি খুলুন</translation>
 <translation id="8388247778047144397">ট্যাব বারের ফাঁকা অঞ্চলে একটি লিঙ্ক টেনে আনুন</translation>
 <translation id="8389638407792712197">নতুন উইন্ডো খুলুন</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">আগের শব্দ অথবা অক্ষরটি বেছে নিন</translation>
 <translation id="8727232706774971183">আপনার বিজ্ঞপ্তিগুলি দেখুন</translation>
 <translation id="8855885154700222542">ফুলস্ক্রিন করার বোতাম</translation>
+<translation id="8881584919399569791">চালু উইন্ডোকে বাঁদিকের ডেস্কে সরান</translation>
 <translation id="88986195241502842">পৃষ্ঠায় নীচের দিকে যান</translation>
 <translation id="8924883688469390268">আগের ব্যবহারকারীকে বেছে নিন</translation>
 <translation id="8977648847395357314">অ্যাড্রেস বারে থাকা কন্টেন্টটি বেছে নিন</translation>
diff --git a/ash/components/strings/ash_components_strings_ca.xtb b/ash/components/strings/ash_components_strings_ca.xtb
index 96f7e1d..8aa2b1ea 100644
--- a/ash/components/strings/ash_components_strings_ca.xtb
+++ b/ash/components/strings/ash_components_strings_ca.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ca">
 <translation id="104962181688258143">Obre l'aplicació Fitxers</translation>
+<translation id="1098295134904615027">Activa l'escriptori virtual de la dreta</translation>
 <translation id="1122869341872663659">Es mostren <ph name="N" /> resultats de cerca per a <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Arrossega l'enllaç a la barra d'adreces de la pestanya</translation>
 <translation id="1204450209689312104">Obre una finestra nova en mode d'incògnit</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Cerca</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> o <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Ves al final de la línia</translation>
+<translation id="1499072997694708844">Tanca les finestres de cerca que tinguis obertes o deixa de carregar la pàgina actual</translation>
 <translation id="1510238584712386396">Menú d'aplicacions</translation>
 <translation id="152892567002884378">Apuja el volum</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> i després <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Afegeix www. i .com al text de la barra d'adreces i obre la pàgina</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> i després <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> o <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Activa l'escriptori virtual de l'esquerra</translation>
 <translation id="1996162290124031907">Ves a la pestanya següent</translation>
 <translation id="2010818616644390445">Ves a l'última pestanya de la finestra</translation>
 <translation id="2040706009561734834">Obre/tanca el menú d'aplicacions</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Fes una captura de pantalla</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Mou el focus a la barra d'adreces</translation>
+<translation id="3165428420335997629">Crea un escriptori virtual nou</translation>
 <translation id="3256109297135787951">Deixa de destacar un element del prestatge</translation>
 <translation id="3288816184963444640">Tanca la finestra actual</translation>
 <translation id="3407560819924487926">Obre el gestor de tasques</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Fes una cerca a la pàgina actual</translation>
 <translation id="5563050856984839829">Prem <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> i fes clic en un enllaç</translation>
 <translation id="561814908794220892">Obre la pàgina web en una pestanya nova</translation>
+<translation id="5620219513321115856">Mou la finestra activa a l'escriptori de la dreta</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> o <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Obre l'enllaç a la pestanya</translation>
 <translation id="5757474750054631686">Atenua el teclat (només als teclats retroil·luminats)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Gira la pantalla 90 graus</translation>
 <translation id="8241665785394195545">claudàtor de tancament</translation>
 <translation id="8264941229485248811">Mostra o amaga l'inspector d'eines per a desenvolupadors</translation>
+<translation id="8355937569537581904">Suprimeix l'escriptori virtual actual</translation>
 <translation id="836869401750819675">Obre la pàgina Baixades</translation>
 <translation id="8388247778047144397">Arrossega l'enllaç a una àrea buida de la barra de pestanyes</translation>
 <translation id="8389638407792712197">Obre una finestra nova</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Selecciona la paraula o la lletra anterior</translation>
 <translation id="8727232706774971183">Mostra les notificacions</translation>
 <translation id="8855885154700222542">Tecla de pantalla completa</translation>
+<translation id="8881584919399569791">Mou la finestra activa a l'escriptori de l'esquerra</translation>
 <translation id="88986195241502842">Av Pàg</translation>
 <translation id="8924883688469390268">Canvia a l'usuari anterior</translation>
 <translation id="8977648847395357314">Selecciona el contingut de la barra d'adreces</translation>
diff --git a/ash/components/strings/ash_components_strings_cs.xtb b/ash/components/strings/ash_components_strings_cs.xtb
index dae3d00..fc79e23 100644
--- a/ash/components/strings/ash_components_strings_cs.xtb
+++ b/ash/components/strings/ash_components_strings_cs.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="cs">
 <translation id="104962181688258143">Otevřít aplikaci Soubory</translation>
+<translation id="1098295134904615027">Aktivovat virtuální plochu vpravo</translation>
 <translation id="1122869341872663659">Zobrazují se výsledky vyhledávání (<ph name="N" />) na téma <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Přetáhněte odkaz na adresní řádek na kartě</translation>
 <translation id="1204450209689312104">Otevřít nové okno v anonymním režimu</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Vyhledávání</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> nebo <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Přejít na konec řádku</translation>
+<translation id="1499072997694708844">Zavřete otevřené okno vyhledávání nebo zastavte načítání své aktuální stránky</translation>
 <translation id="1510238584712386396">Spouštěč</translation>
 <translation id="152892567002884378">Zvýšit hlasitost</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> a poté <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Přidat k zadanému řetězci na adresním řádku www. a .com a poté otevřít stránku</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> a poté <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> nebo <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktivovat virtuální plochu vlevo</translation>
 <translation id="1996162290124031907">Přejít na další kartu</translation>
 <translation id="2010818616644390445">Přejít na poslední kartu v okně</translation>
 <translation id="2040706009561734834">Otevřít/zavřít spouštěč</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Pořídit snímek obrazovky</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Přepnout do adresního řádku</translation>
+<translation id="3165428420335997629">Vytvořit novou virtuální plochu</translation>
 <translation id="3256109297135787951">Odebrat zvýraznění z položky na poličce</translation>
 <translation id="3288816184963444640">Zavřít aktuální okno</translation>
 <translation id="3407560819924487926">Otevřít správce úloh</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Vyhledávat na aktuální stránce</translation>
 <translation id="5563050856984839829">Stiskněte <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> a klikněte na odkaz</translation>
 <translation id="561814908794220892">Otevřít webovou stránku na nové kartě</translation>
+<translation id="5620219513321115856">Přesunout aktivní okno na plochu vpravo</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> nebo <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Otevřít odkaz na dané kartě</translation>
 <translation id="5757474750054631686">Snížit jas klávesnice (pouze u podsvícených klávesnic)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Otočit obrazovku o 90 stupňů</translation>
 <translation id="8241665785394195545">pravá hranatá závorka</translation>
 <translation id="8264941229485248811">Zobrazit nebo skrýt panel Nástroje pro vývojáře</translation>
+<translation id="8355937569537581904">Odstranit aktuální virtuální plochu</translation>
 <translation id="836869401750819675">Otevřít stránku Stažené soubory</translation>
 <translation id="8388247778047144397">Přetáhněte odkaz na prázdné místo na liště karet</translation>
 <translation id="8389638407792712197">Otevřít nové okno</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Vybrat předchozí slovo nebo písmeno.</translation>
 <translation id="8727232706774971183">Zobrazit oznámení</translation>
 <translation id="8855885154700222542">Tlačítko celé obrazovky</translation>
+<translation id="8881584919399569791">Přesunout aktivní okno na plochu vlevo</translation>
 <translation id="88986195241502842">O stránku dolů</translation>
 <translation id="8924883688469390268">Přepnout na předchozího uživatele</translation>
 <translation id="8977648847395357314">Vybrat obsah adresního řádku</translation>
diff --git a/ash/components/strings/ash_components_strings_da.xtb b/ash/components/strings/ash_components_strings_da.xtb
index a594fcc..f88d9e5f 100644
--- a/ash/components/strings/ash_components_strings_da.xtb
+++ b/ash/components/strings/ash_components_strings_da.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="da">
 <translation id="104962181688258143">Åbn appen Filer</translation>
+<translation id="1098295134904615027">Aktivér det virtuelle skrivebord til højre</translation>
 <translation id="1122869341872663659">Viser <ph name="N" /> søgeresultater for <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Træk linket til adresselinjen på fanen</translation>
 <translation id="1204450209689312104">Åbn et nyt vindue i inkognitotilstand</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Søg</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> eller <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Gå til slutningen af linjen</translation>
+<translation id="1499072997694708844">Luk eventuelle åbne søgevinduer, eller stop indlæsningen af din aktuelle side</translation>
 <translation id="1510238584712386396">Appliste</translation>
 <translation id="152892567002884378">Lydstyrke op</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> og derefter <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Føj www. og .com til dit input i adresselinjen, og åbn siden</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> og derefter <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> eller <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktivér det virtuelle skrivebord til venstre</translation>
 <translation id="1996162290124031907">Gå til næste fane</translation>
 <translation id="2010818616644390445">Gå til den sidste fane i vinduet</translation>
 <translation id="2040706009561734834">Åbn/luk applisten</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Tag screenshot</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Fokuser på adresselinje</translation>
+<translation id="3165428420335997629">Opret et nyt virtuelt skrivebord</translation>
 <translation id="3256109297135787951">Fjern fremhævningen af et element på din hylde</translation>
 <translation id="3288816184963444640">Luk det aktuelle vindue</translation>
 <translation id="3407560819924487926">Se Jobliste</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Søg på den aktuelle side</translation>
 <translation id="5563050856984839829">Tryk på <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" />, og klik på et link</translation>
 <translation id="561814908794220892">Åbn websiden på en ny fane</translation>
+<translation id="5620219513321115856">Flyt det aktive vindue til skrivebordet til højre</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> eller <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Åbn linket på fanen</translation>
 <translation id="5757474750054631686">Dæmp tastaturets lys (gælder kun for tastaturer med bagbelyste taster)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Roter skærmen 90 grader</translation>
 <translation id="8241665785394195545">højre vinkelparentes</translation>
 <translation id="8264941229485248811">Vis eller skjul kontrolløren i Udviklerværktøjer</translation>
+<translation id="8355937569537581904">Fjern det aktuelle virtuelle skrivebord</translation>
 <translation id="836869401750819675">Åbn siden Downloads</translation>
 <translation id="8388247778047144397">Træk linket til et tomt område på fanelinjen</translation>
 <translation id="8389638407792712197">Åbn et nyt vindue</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Markér det forrige ord eller bogstav</translation>
 <translation id="8727232706774971183">Se dine notifikationer</translation>
 <translation id="8855885154700222542">Tast til fuld skærm</translation>
+<translation id="8881584919399569791">Flyt det aktive vindue til skrivebordet til venstre</translation>
 <translation id="88986195241502842">Gå en side ned</translation>
 <translation id="8924883688469390268">Skift til forrige bruger</translation>
 <translation id="8977648847395357314">Markér indholdet i adresselinjen</translation>
diff --git a/ash/components/strings/ash_components_strings_de.xtb b/ash/components/strings/ash_components_strings_de.xtb
index e7dc5c9..d76d87f2 100644
--- a/ash/components/strings/ash_components_strings_de.xtb
+++ b/ash/components/strings/ash_components_strings_de.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="de">
 <translation id="104962181688258143">App "Dateien" öffnen</translation>
+<translation id="1098295134904615027">Rechten virtuellen Arbeitsbereich aktivieren</translation>
 <translation id="1122869341872663659"><ph name="N" /> Suchergebnisse für <ph name="QUERY" /> werden angezeigt</translation>
 <translation id="1195667586424773550">Link in Adressleiste des Tabs ziehen</translation>
 <translation id="1204450209689312104">Neues Fenster im Inkognitomodus öffnen</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Suchen</translation>
 <translation id="1454364489140280055">"<ph name="CTRL" />" <ph name="SEPARATOR1" /> "<ph name="SHIFT1" />" <ph name="SEPARATOR2" /> "<ph name="G" />" oder "<ph name="SHIFT2" />" <ph name="SEPARATOR3" /> "<ph name="ENTER" />"</translation>
 <translation id="1477442857810932985">Zum Zeilenende springen</translation>
+<translation id="1499072997694708844">Schließen Sie alle geöffneten Fenster oder beenden Sie das Laden der aktuellen Seite</translation>
 <translation id="1510238584712386396">Launcher</translation>
 <translation id="152892567002884378">Lauter</translation>
 <translation id="1560480564179555003">"<ph name="SHIFT" />" <ph name="SEPARATOR1" /> "<ph name="ALT" />" <ph name="SEPARATOR2" /> "<ph name="L" />", dann "<ph name="ESC" />"</translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435">"<ph name="MODIFIER1" />" <ph name="SEPARATOR1" /> "<ph name="MODIFIER2" />" <ph name="SEPARATOR2" /> "<ph name="KEY" />"</translation>
 <translation id="1733525068429116555">"www." und ".com" zur Eingabe in der Adressleiste hinzufügen und die Seite dann öffnen</translation>
 <translation id="1920446759863417809">"<ph name="SHIFT1" />" <ph name="SEPARATOR1" /> "<ph name="ALT" />" <ph name="SEPARATOR2" /> "<ph name="L" />", dann "<ph name="SHIFT2" />" <ph name="SEPARATOR3" /> "<ph name="TAB" />" oder "<ph name="LEFT" />"</translation>
+<translation id="1929866390202038233">Linken virtuellen Arbeitsbereich aktivieren</translation>
 <translation id="1996162290124031907">Auf den nächsten Tab klicken</translation>
 <translation id="2010818616644390445">Auf den letzten Tab im Fenster klicken</translation>
 <translation id="2040706009561734834">Launcher öffnen/schließen</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Screenshot aufnehmen</translation>
 <translation id="3126026824346185272">Strg</translation>
 <translation id="3140353188828248647">Adressleiste fokussieren</translation>
+<translation id="3165428420335997629">Neuen virtuellen Arbeitsbereich erstellen</translation>
 <translation id="3256109297135787951">Markierung eines Elements in der Ablage entfernen</translation>
 <translation id="3288816184963444640">Aktuelles Fenster schließen</translation>
 <translation id="3407560819924487926">Task-Manager aufrufen</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Auf der aktuellen Seite suchen</translation>
 <translation id="5563050856984839829">"<ph name="CTRL" />" <ph name="SEPARATOR" /> "<ph name="SHIFT" />" gedrückt halten und auf einen Link klicken</translation>
 <translation id="561814908794220892">Webseite in einem neuen Tab öffnen</translation>
+<translation id="5620219513321115856">Aktives Fenster in den rechten Arbeitsbereich verschieben</translation>
 <translation id="5710621673935162997">"<ph name="CTRL" />" <ph name="SEPARATOR1" /> "<ph name="L" />" oder "<ph name="ALT" />" <ph name="SEPARATOR2" /> "<ph name="D" />"</translation>
 <translation id="5757111373163288447">Link in dem Tab öffnen</translation>
 <translation id="5757474750054631686">Tastatur dimmen (nur für beleuchtete Tastaturen)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Bildschirm um 90 Grad drehen</translation>
 <translation id="8241665785394195545">schließende eckige Klammer</translation>
 <translation id="8264941229485248811">Entwicklertools-Inspector ein- oder ausblenden</translation>
+<translation id="8355937569537581904">Aktuellen virtuellen Arbeitsbereich entfernen</translation>
 <translation id="836869401750819675">Seite "Downloads" öffnen</translation>
 <translation id="8388247778047144397">Link in einen leeren Bereich auf der Tableiste ziehen</translation>
 <translation id="8389638407792712197">Neues Fenster öffnen</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Vorheriges Wort oder vorherigen Buchstaben markieren</translation>
 <translation id="8727232706774971183">Benachrichtigungen ansehen</translation>
 <translation id="8855885154700222542">Taste für Vollbildmodus</translation>
+<translation id="8881584919399569791">Aktives Fenster in den linken Arbeitsbereich verschieben</translation>
 <translation id="88986195241502842">Bildlauf nach unten</translation>
 <translation id="8924883688469390268">Zum vorherigen Nutzer wechseln</translation>
 <translation id="8977648847395357314">Inhalt der Adressleiste auswählen</translation>
diff --git a/ash/components/strings/ash_components_strings_el.xtb b/ash/components/strings/ash_components_strings_el.xtb
index 62c59e3c..5366d8b4 100644
--- a/ash/components/strings/ash_components_strings_el.xtb
+++ b/ash/components/strings/ash_components_strings_el.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="el">
 <translation id="104962181688258143">Άνοιγμα εφαρμογής Αρχεία</translation>
+<translation id="1098295134904615027">Ενεργοποιήστε το εικονικό γραφείο στα δεξιά</translation>
 <translation id="1122869341872663659">Εμφάνιση <ph name="N" /> αποτελεσμάτων αναζήτησης για <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Σύρετε τον σύνδεσμο στη γραμμή διευθύνσεων της καρτέλας</translation>
 <translation id="1204450209689312104">Άνοιγμα νέου παραθύρου σε κατάσταση ανώνυμης περιήγησης</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Αναζήτηση</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> ή <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Μετάβαση στο τέλος της γραμμής</translation>
+<translation id="1499072997694708844">Κλείστε τυχόν παράθυρα εύρεσης ή σταματήστε τη φόρτωση της τρέχουσα σελίδας</translation>
 <translation id="1510238584712386396">Λειτουργία εκκίνησης</translation>
 <translation id="152892567002884378">Αύξηση έντασης ήχου</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> και έπειτα <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Προσθέστε το www. και το .com στο κείμενο που έχετε πληκτρολογήσει στη γραμμή διευθύνσεων και έπειτα ανοίξτε τη σελίδα</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> και έπειτα <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> ή <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Ενεργοποιήστε το εικονικό γραφείο στα αριστερά</translation>
 <translation id="1996162290124031907">Μετάβαση στην επόμενη καρτέλα</translation>
 <translation id="2010818616644390445">Μετάβαση στην τελευταία καρτέλα στο παράθυρο</translation>
 <translation id="2040706009561734834">Άνοιγμα/κλείσιμο εφαρμογής εκκίνησης</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Λήψη στιγμιότυπου οθόνης</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Εστίαση γραμμής διευθύνσεων</translation>
+<translation id="3165428420335997629">Δημιουργήστε νέο εικονικό γραφείο</translation>
 <translation id="3256109297135787951">Κατάργηση της επισήμανσης από κάποιο στοιχείο στο ράφι σας</translation>
 <translation id="3288816184963444640">Κλείσιμο τρέχοντος παραθύρου</translation>
 <translation id="3407560819924487926">Εμφάνιση της Διαχείρισης Εργασιών</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Αναζήτηση στην τρέχουσα σελίδα</translation>
 <translation id="5563050856984839829">Πατήστε <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> και κάντε κλικ σε έναν σύνδεσμο</translation>
 <translation id="561814908794220892">Άνοιγμα της ιστοσελίδας σε νέα καρτέλα</translation>
+<translation id="5620219513321115856">Μετακινήστε το ενεργό παράθυρο στο γραφείο στα δεξιά</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> ή <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Άνοιγμα του συνδέσμου στην καρτέλα</translation>
 <translation id="5757474750054631686">Μείωση φωτεινότητας πληκτρολογίου (μόνο για πληκτρολόγια με οπίσθιο φωτισμό)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Περιστροφή οθόνης κατά 90 μοίρες</translation>
 <translation id="8241665785394195545">Δεξιά αγκύλη</translation>
 <translation id="8264941229485248811">Εμφάνιση ή απόκρυψη του πλαισίου επιθεώρησης "Εργαλεία για προγραμματιστές"</translation>
+<translation id="8355937569537581904">Καταργήστε το τρέχον εικονικό γραφείο</translation>
 <translation id="836869401750819675">Άνοιγμα σελίδας "Λήψεις"</translation>
 <translation id="8388247778047144397">Σύρετε τον σύνδεσμο σε μια κενή περιοχή της γραμμής καρτελών</translation>
 <translation id="8389638407792712197">Άνοιγμα νέου παραθύρου</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Επιλογή προηγούμενης λέξης ή γράμματος</translation>
 <translation id="8727232706774971183">Εμφάνιση όλων των ειδοποιήσεών σας</translation>
 <translation id="8855885154700222542">Πλήκτρο πλήρους οθόνης</translation>
+<translation id="8881584919399569791">Μετακινήστε το ενεργό παράθυρο στο γραφείο στα αριστερά</translation>
 <translation id="88986195241502842">Page down</translation>
 <translation id="8924883688469390268">Εναλλαγή στον προηγούμενο χρήστη</translation>
 <translation id="8977648847395357314">Επιλογή του περιεχομένου στη γραμμή διευθύνσεων</translation>
diff --git a/ash/components/strings/ash_components_strings_en-GB.xtb b/ash/components/strings/ash_components_strings_en-GB.xtb
index a8fd41c..d41a02f9 100644
--- a/ash/components/strings/ash_components_strings_en-GB.xtb
+++ b/ash/components/strings/ash_components_strings_en-GB.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="en-GB">
 <translation id="104962181688258143">Open the Files app</translation>
+<translation id="1098295134904615027">Activate the virtual desk on the right</translation>
 <translation id="1122869341872663659">Displaying <ph name="N" /> search results for <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Drag the link to the tab's address bar</translation>
 <translation id="1204450209689312104">Open a new window in incognito mode</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Search</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> or <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Go to end of line</translation>
+<translation id="1499072997694708844">Close any open window or stop the loading of your current page</translation>
 <translation id="1510238584712386396">Launcher</translation>
 <translation id="152892567002884378">Volume up</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, then <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Add www. and .com to your input in the address bar, then open the page</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, then <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> or <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Activate the virtual desk on the left</translation>
 <translation id="1996162290124031907">Go to next tab</translation>
 <translation id="2010818616644390445">Go to the last tab in the window</translation>
 <translation id="2040706009561734834">Open/close the launcher</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Take screenshot</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Focus address bar</translation>
+<translation id="3165428420335997629">Create a new virtual desk</translation>
 <translation id="3256109297135787951">Remove the highlight from an item on your shelf</translation>
 <translation id="3288816184963444640">Close the current window</translation>
 <translation id="3407560819924487926">Bring up task manager</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Search the current page</translation>
 <translation id="5563050856984839829">Press <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> and click a link</translation>
 <translation id="561814908794220892">Open the web page in a new tab</translation>
+<translation id="5620219513321115856">Move active window to the desk on the right</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> or <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Open the link in the tab</translation>
 <translation id="5757474750054631686">Dim keyboard (for backlit keyboards only)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Rotate screen 90 degrees</translation>
 <translation id="8241665785394195545">bracket right</translation>
 <translation id="8264941229485248811">Show or hide the Developer Tools inspector</translation>
+<translation id="8355937569537581904">Remove the current virtual desk</translation>
 <translation id="836869401750819675">Open the Downloads page</translation>
 <translation id="8388247778047144397">Drag the link to a blank area on the tab strip</translation>
 <translation id="8389638407792712197">Open new window</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Select previous word or letter</translation>
 <translation id="8727232706774971183">See your notifications</translation>
 <translation id="8855885154700222542">Full-screen key</translation>
+<translation id="8881584919399569791">Move active window to the desk on the left</translation>
 <translation id="88986195241502842">Page down</translation>
 <translation id="8924883688469390268">Switch to the previous user</translation>
 <translation id="8977648847395357314">Select the content in the address bar</translation>
diff --git a/ash/components/strings/ash_components_strings_es-419.xtb b/ash/components/strings/ash_components_strings_es-419.xtb
index 9b370b3..0c020ed 100644
--- a/ash/components/strings/ash_components_strings_es-419.xtb
+++ b/ash/components/strings/ash_components_strings_es-419.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="es-419">
 <translation id="104962181688258143">Abrir la app de Archivos</translation>
+<translation id="1098295134904615027">Activa el escritorio virtual de la derecha</translation>
 <translation id="1122869341872663659">Se muestran <ph name="N" /> resultados de búsqueda para <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Arrastrar el vínculo a la barra de direcciones de la pestaña</translation>
 <translation id="1204450209689312104">Abrir una ventana nueva en modo de navegación incógnito</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Buscar</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> o <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Ir al final de la línea</translation>
+<translation id="1499072997694708844">Cierra cualquier ventana de búsqueda abierta o detiene la carga de la página actual</translation>
 <translation id="1510238584712386396">Selector</translation>
 <translation id="152892567002884378">Subir el volumen</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, luego <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Agregar www. y .com a la entrada en la barra de direcciones y, luego, abrir la página</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, luego <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> o <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Activa el escritorio virtual de la izquierda</translation>
 <translation id="1996162290124031907">Ir a la pestaña siguiente</translation>
 <translation id="2010818616644390445">Ir a la última pestaña de la ventana</translation>
 <translation id="2040706009561734834">Abrir y cerrar el selector</translation>
@@ -33,7 +36,7 @@
 <translation id="2185166372312820725">Ir a la pestaña anterior</translation>
 <translation id="2194790690264064655">Presiona <ph name="CTRL" /> y, luego, haz clic en un vínculo</translation>
 <translation id="2246352309084894470">Abrir o cerrar el Selector de pantalla completa</translation>
-<translation id="2354531887393764880">tiempo</translation>
+<translation id="2354531887393764880">punto</translation>
 <translation id="2382644247745281995">No es compatible con el diseño del teclado actual</translation>
 <translation id="2397416548179033562">Mostrar el menú de Chrome</translation>
 <translation id="2424073332829844142">Activar y desactivar Bloq Mayús</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Tomar captura de pantalla</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Enfoque en la barra de direcciones</translation>
+<translation id="3165428420335997629">Crea un nuevo escritorio virtual</translation>
 <translation id="3256109297135787951">Dejar de destacar un elemento en la biblioteca</translation>
 <translation id="3288816184963444640">Cerrar la ventana actual</translation>
 <translation id="3407560819924487926">Mostrar el Administrador de tareas</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Buscar en la página actual</translation>
 <translation id="5563050856984839829">Presiona <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> y haz clic en un vínculo</translation>
 <translation id="561814908794220892">Abrir la página web en una pestaña nueva</translation>
+<translation id="5620219513321115856">Mueve la ventana activa al escritorio de la derecha</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> o <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Abrir el vínculo en la pestaña</translation>
 <translation id="5757474750054631686">Atenuar el teclado (solo para teclados retroiluminados)</translation>
@@ -161,7 +166,7 @@
 <translation id="7422707470576323858">Cambiar al siguiente método de entrada disponible</translation>
 <translation id="743754632698445141">Dejar de fijar una app</translation>
 <translation id="7439718573248533901">Borrar la letra siguiente (borrar siguiente)</translation>
-<translation id="7500368597227394048">guion</translation>
+<translation id="7500368597227394048">guión</translation>
 <translation id="7611271430932669992">Mover el foco a ventanas emergentes y diálogos</translation>
 <translation id="766326951329901120">Pegar el contenido del portapapeles como texto sin formato</translation>
 <translation id="7703010453515335249">corchete de apertura</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Rotar la pantalla 90 grados</translation>
 <translation id="8241665785394195545">corchete de cierre</translation>
 <translation id="8264941229485248811">Mostrar u ocultar el inspector de Herramientas para desarrolladores</translation>
+<translation id="8355937569537581904">Quita el escritorio virtual actual</translation>
 <translation id="836869401750819675">Abrir la página de descargas</translation>
 <translation id="8388247778047144397">Arrastra el vínculo al área en blanco de la barra de pestañas</translation>
 <translation id="8389638407792712197">Abrir una ventana nueva</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Seleccionar la palabra o letra anterior</translation>
 <translation id="8727232706774971183">Ver tus notificaciones</translation>
 <translation id="8855885154700222542">Tecla de pantalla completa</translation>
+<translation id="8881584919399569791">Mueve la ventana activa al escritorio de la izquierda</translation>
 <translation id="88986195241502842">Avanzar página</translation>
 <translation id="8924883688469390268">Cambiar al usuario anterior</translation>
 <translation id="8977648847395357314">Seleccionar el contenido en la barra de direcciones</translation>
diff --git a/ash/components/strings/ash_components_strings_es.xtb b/ash/components/strings/ash_components_strings_es.xtb
index 6b687e5..423c157 100644
--- a/ash/components/strings/ash_components_strings_es.xtb
+++ b/ash/components/strings/ash_components_strings_es.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="es">
 <translation id="104962181688258143">Abrir la aplicación Archivos</translation>
+<translation id="1098295134904615027">Activa el escritorio virtual de la derecha</translation>
 <translation id="1122869341872663659">Mostrando <ph name="N" /> resultados de búsqueda de <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Arrastra el enlace a la barra de direcciones de la pestaña</translation>
 <translation id="1204450209689312104">Abrir una ventana nueva en modo de incógnito</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Buscar</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> o <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Ir al final de la línea</translation>
+<translation id="1499072997694708844">Cierra todas las ventanas de búsqueda abiertas o detén la carga de la página actual</translation>
 <translation id="1510238584712386396">Menú de aplicaciones</translation>
 <translation id="152892567002884378">Subir el volumen</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> y <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Añadir www. y .com al texto introducido en la barra de direcciones y abrir la página</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> y <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> o <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Activa el escritorio virtual de la izquierda</translation>
 <translation id="1996162290124031907">Ir a la siguiente pestaña</translation>
 <translation id="2010818616644390445">Ir a la última pestaña de la ventana</translation>
 <translation id="2040706009561734834">Abrir/cerrar el menú de aplicaciones</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Hacer una captura de pantalla</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Activar barra de direcciones</translation>
+<translation id="3165428420335997629">Crea un escritorio virtual</translation>
 <translation id="3256109297135787951">Dejar de destacar un elemento de la estantería</translation>
 <translation id="3288816184963444640">Cerrar la ventana actual</translation>
 <translation id="3407560819924487926">Abrir el administrador de tareas</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Hacer búsquedas en la página actual</translation>
 <translation id="5563050856984839829">Pulsa <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> y haz clic en un enlace</translation>
 <translation id="561814908794220892">Abrir la página web en una pestaña nueva</translation>
+<translation id="5620219513321115856">Mover la ventana activa al escritorio de la derecha</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> o <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Abrir el enlace en la pestaña</translation>
 <translation id="5757474750054631686">Atenuar la luz del teclado (solo para teclados retroiluminados)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Girar la pantalla 90 grados</translation>
 <translation id="8241665785394195545">corchete derecho</translation>
 <translation id="8264941229485248811">Mostrar u ocultar el inspector de herramientas para desarrolladores</translation>
+<translation id="8355937569537581904">Quita el escritorio virtual actual</translation>
 <translation id="836869401750819675">Abrir la página Descargas</translation>
 <translation id="8388247778047144397">Arrastra el enlace a un área en blanco de la barra de pestañas</translation>
 <translation id="8389638407792712197">Abrir nueva ventana</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Seleccionar la palabra o la letra anterior</translation>
 <translation id="8727232706774971183">Ver las notificaciones</translation>
 <translation id="8855885154700222542">Tecla de pantalla completa</translation>
+<translation id="8881584919399569791">Mover la ventana activa al escritorio de la izquierda</translation>
 <translation id="88986195241502842">Avanzar página</translation>
 <translation id="8924883688469390268">Cambiar al usuario anterior</translation>
 <translation id="8977648847395357314">Seleccionar el contenido de la barra de direcciones</translation>
diff --git a/ash/components/strings/ash_components_strings_et.xtb b/ash/components/strings/ash_components_strings_et.xtb
index 5f726ee..519a4fb 100644
--- a/ash/components/strings/ash_components_strings_et.xtb
+++ b/ash/components/strings/ash_components_strings_et.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="et">
 <translation id="104962181688258143">Rakenduse Failid avamine</translation>
+<translation id="1098295134904615027">Parempoolse virtuaalse töölaua aktiveerimine</translation>
 <translation id="1122869341872663659">Kuvatud on päringu <ph name="QUERY" /> <ph name="N" /> otsingutulemust</translation>
 <translation id="1195667586424773550">Lohistage link vahelehe aadressiribale</translation>
 <translation id="1204450209689312104">Uue akna avamine inkognito režiimis</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Otsi</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /> <ph name="SEPARATOR1" /> <ph name="SHIFT1" /> <ph name="SEPARATOR2" /> <ph name="G" /> või <ph name="SHIFT2" /> <ph name="SEPARATOR3" /> <ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Mine rea lõppu</translation>
+<translation id="1499072997694708844">Kõigi avatud akende sulgemine või teie praeguse lehe laadimise peatamine</translation>
 <translation id="1510238584712386396">Käivitaja</translation>
 <translation id="152892567002884378">Helitugevuse suurendamine</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /> <ph name="SEPARATOR1" /> <ph name="ALT" /> <ph name="SEPARATOR2" /> <ph name="L" />, seejärel <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /> <ph name="SEPARATOR1" /> <ph name="MODIFIER2" /> <ph name="SEPARATOR2" /> <ph name="KEY" /></translation>
 <translation id="1733525068429116555">Laiendite www. ja .com lisamine aadressiribale ning siis lehe avamine</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /> <ph name="SEPARATOR1" /> <ph name="ALT" /> <ph name="SEPARATOR2" /> <ph name="L" />, seejärel <ph name="SHIFT2" /> <ph name="SEPARATOR3" /> <ph name="TAB" /> või <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Vasakpoolse virtuaalse töölaua aktiveerimine</translation>
 <translation id="1996162290124031907">Järgmisele vahelehele liikumine</translation>
 <translation id="2010818616644390445">Aknas viimasele vahelehele liikumine</translation>
 <translation id="2040706009561734834">Avab/suleb käivitusprogrammi</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Teeb kuvatõmmise</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Keskendub aadressiribale</translation>
+<translation id="3165428420335997629">Uue virtuaalse töölaua loomine</translation>
 <translation id="3256109297135787951">Riiulis oleva üksuse esiletõstu eemaldamine</translation>
 <translation id="3288816184963444640">Praeguse akna sulgemine</translation>
 <translation id="3407560819924487926">Tegumihalduri esiletoomine</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Aktiivselt lehelt otsimine</translation>
 <translation id="5563050856984839829">Vajutage klahvikombinatsiooni <ph name="CTRL" /> <ph name="SEPARATOR" /> <ph name="SHIFT" /> ja klõpsake lingil</translation>
 <translation id="561814908794220892">Veebilehe avamine uuel vahelehel</translation>
+<translation id="5620219513321115856">Aktiivne aken teisaldatakse parempoolsele töölauale</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /> <ph name="SEPARATOR1" /> <ph name="L" /> või <ph name="ALT" /> <ph name="SEPARATOR2" /> <ph name="D" /></translation>
 <translation id="5757111373163288447">Lingi avamine vahelehel</translation>
 <translation id="5757474750054631686">Klaviatuuri hämardamine (ainult taustvalgusega klaviatuuride puhul)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Ekraani pööramine 90 kraadi</translation>
 <translation id="8241665785394195545">Parem nurksulg</translation>
 <translation id="8264941229485248811">Kuvab või peidab arendajatööriistade inspektori</translation>
+<translation id="8355937569537581904">Praeguse virtuaalse töölaua eemaldamine</translation>
 <translation id="836869401750819675">Allalaadimiste lehe avamine</translation>
 <translation id="8388247778047144397">Lohistage link vahelehtede ribal tühjale alale</translation>
 <translation id="8389638407792712197">Uue akna avamine</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Eelmise sõna või tähe valimine</translation>
 <translation id="8727232706774971183">Märguannete vaatamine</translation>
 <translation id="8855885154700222542">Täisekraani klahv</translation>
+<translation id="8881584919399569791">Aktiivne aken teisaldatakse vasakpoolsele töölauale</translation>
 <translation id="88986195241502842">Lehe lõppu</translation>
 <translation id="8924883688469390268">Eelmisele kasutajale vahetamine</translation>
 <translation id="8977648847395357314">Aadressiriba sisu valimine</translation>
diff --git a/ash/components/strings/ash_components_strings_fa.xtb b/ash/components/strings/ash_components_strings_fa.xtb
index 76b307a4..6e0f2d7 100644
--- a/ash/components/strings/ash_components_strings_fa.xtb
+++ b/ash/components/strings/ash_components_strings_fa.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="fa">
 <translation id="104962181688258143">‏باز کردن برنامه Files</translation>
+<translation id="1098295134904615027">میز مجازی در سمت چپ فعال شود</translation>
 <translation id="1122869341872663659">درحال نمایش <ph name="N" /> نتیجه جستجو برای <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">کشیدن پیوند به نوار نشانی برگه</translation>
 <translation id="1204450209689312104">باز کردن پنجره جدید در حالت ناشناس</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">جستجو</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> یا <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">رفتن به انتهای خط</translation>
+<translation id="1499072997694708844">همه پوشه‌های جستجوی بازی را ببندید یا بارگیری صفحه کنونی را متوقف کنید</translation>
 <translation id="1510238584712386396">راه‌انداز</translation>
 <translation id="152892567002884378">افزایش صدا</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> و سپس <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">‏افزودن www.‎ و ‎.com به ورودی‌تان در نوار نشانی و سپس باز کردن صفحه</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> و سپس <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> یا <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">میز مجازی در سمت راست فعال شود</translation>
 <translation id="1996162290124031907">رفتن به برگه بعدی</translation>
 <translation id="2010818616644390445">رفتن به آخرین برگه در پنجره</translation>
 <translation id="2040706009561734834">باز کردن/بستن راه‌انداز</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">گرفتن عکس صفحه‌نمایش</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">فوکوس نوار آدرس</translation>
+<translation id="3165428420335997629">میز مجازی جدیدی ایجاد شود</translation>
 <translation id="3256109297135787951">حذف برجسته‌سازی از مورد روی قفسه</translation>
 <translation id="3288816184963444640">بستن پنجره فعلی</translation>
 <translation id="3407560819924487926">باز کردن مدیر فعالیت‌ها</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">جستجوی صفحه کنونی</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> را فشار دهید و روی پیوندی کلیک کنید</translation>
 <translation id="561814908794220892">بازکردن صفحه وب در یک برگه جدید</translation>
+<translation id="5620219513321115856">پنجره فعال را به میز سمت چپ ببرید</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> یا <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">بازکردن پیوند در برگه</translation>
 <translation id="5757474750054631686">کم کردن نور صفحه‌کلید (فقط برای صفحه‌کلیدهایی که نور پس‌زمینه دارند)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">چرخاندن ۹۰ درجه‌ای صفحه</translation>
 <translation id="8241665785394195545">کمانک راست</translation>
 <translation id="8264941229485248811">نمایش یا پنهان کردن بازرس «ابزارهای برنامه‌نویس»</translation>
+<translation id="8355937569537581904">میز مجازی کنونی حذف شود</translation>
 <translation id="836869401750819675">باز کردن صفحه بارگیری</translation>
 <translation id="8388247778047144397">کشیدن پیوند به قسمتی خالی در نوار برگه</translation>
 <translation id="8389638407792712197">باز کردن پنجره جدید</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">انتخاب کلمه یا حرف قبل</translation>
 <translation id="8727232706774971183">دیدن اعلان‌ها</translation>
 <translation id="8855885154700222542">کلید تمام‌صفحه</translation>
+<translation id="8881584919399569791">پنجره فعال را به میز سمت راست ببرید</translation>
 <translation id="88986195241502842">صفحه پایین</translation>
 <translation id="8924883688469390268">جابه‌جا شدن به کاربر قبلی</translation>
 <translation id="8977648847395357314">انتخاب محتوا در نوار نشانی</translation>
diff --git a/ash/components/strings/ash_components_strings_fi.xtb b/ash/components/strings/ash_components_strings_fi.xtb
index 93e638a1..0f188122 100644
--- a/ash/components/strings/ash_components_strings_fi.xtb
+++ b/ash/components/strings/ash_components_strings_fi.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="fi">
 <translation id="104962181688258143">Avaa Tiedostot-sovellus</translation>
+<translation id="1098295134904615027">Aktivoi oikealla oleva virtuaalityöpöytä</translation>
 <translation id="1122869341872663659">Näytetään <ph name="N" /> hakutulosta kyselylle <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Vedä linkki välilehden osoitepalkkiin.</translation>
 <translation id="1204450209689312104">Avaa uusi ikkuna incognito-tilassa</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Haku</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> tai <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Siirry rivin loppuun</translation>
+<translation id="1499072997694708844">Sulje avoin hakuikkuna tai pysäytä nykyisen sivun lataaminen</translation>
 <translation id="1510238584712386396">Käynnistysohjelma</translation>
 <translation id="152892567002884378">Lisää äänenvoimakkuutta</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, sitten <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Lisää osoitekentässä olevaan tekstiin www. ja .com, ja avaa sitten sivu</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, sitten <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> tai <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktivoi vasemmalla oleva virtuaalityöpöytä</translation>
 <translation id="1996162290124031907">Siirry seuraavalle välilehdelle</translation>
 <translation id="2010818616644390445">Siirry ikkunan viimeiselle välilehdelle</translation>
 <translation id="2040706009561734834">Avaa/sulkee käynnistysohjelman</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Ota kuvakaappaus</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Keskitä osoitepalkkiin</translation>
+<translation id="3165428420335997629">Luo uusi virtuaalityöpöytä</translation>
 <translation id="3256109297135787951">Poista korostus hyllyssä olevasta kohteesta</translation>
 <translation id="3288816184963444640">Sulje nykyinen ikkuna</translation>
 <translation id="3407560819924487926">Aktivoi tehtävänhallinta</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Etsi nykyiseltä sivulta</translation>
 <translation id="5563050856984839829">Paina <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> ja klikkaa linkkiä.</translation>
 <translation id="561814908794220892">Avaa verkkosivu uudella välilehdellä</translation>
+<translation id="5620219513321115856">Siirrä aktiivinen ikkuna oikealla olevalle työpöydälle</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> tai <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Avaa linkki välilehdellä</translation>
 <translation id="5757474750054631686">Himmennä näppäimistö (jos se on taustavalaistu)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Kierrä näyttöä 90 astetta</translation>
 <translation id="8241665785394195545">oikeanpuoleinen hakasulje</translation>
 <translation id="8264941229485248811">Näyttää tai piilottaa Kehittäjien työkalut ‑tarkastajan</translation>
+<translation id="8355937569537581904">Poista nykyinen virtuaalityöpöytä</translation>
 <translation id="836869401750819675">Avaa Lataukset-sivu</translation>
 <translation id="8388247778047144397">Vedä linkki välilehtirivin tyhjään kohtaan.</translation>
 <translation id="8389638407792712197">Avaa uusi ikkuna</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Valitse edellinen sana tai kirjain</translation>
 <translation id="8727232706774971183">Näytä ilmoitukset</translation>
 <translation id="8855885154700222542">Koko näyttö ‑näppäin</translation>
+<translation id="8881584919399569791">Siirrä aktiivinen ikkuna vasemmalla olevalle työpöydälle</translation>
 <translation id="88986195241502842">Sivu alas</translation>
 <translation id="8924883688469390268">Vaihda edelliseen käyttäjään</translation>
 <translation id="8977648847395357314">Valitse osoitepalkin sisältö</translation>
diff --git a/ash/components/strings/ash_components_strings_fil.xtb b/ash/components/strings/ash_components_strings_fil.xtb
index 135e276..8034af16 100644
--- a/ash/components/strings/ash_components_strings_fil.xtb
+++ b/ash/components/strings/ash_components_strings_fil.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="fil">
 <translation id="104962181688258143">Buksan ang app na Mga File</translation>
+<translation id="1098295134904615027">I-activate ang virtual desk sa kanan</translation>
 <translation id="1122869341872663659">Nagpapakita ng <ph name="N" /> (na) resulta ng paghahanap para sa <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">I-drag ang link sa address bar ng tab</translation>
 <translation id="1204450209689312104">Magbukas ng bagong window sa incognito mode</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Hanapin</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> o <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Pumunta sa dulo ng linya</translation>
+<translation id="1499072997694708844">Isara ang anumang nakabukas na window sa paghahanap o ihinto ang pag-load ng iyong kasalukuyang page</translation>
 <translation id="1510238584712386396">Launcher</translation>
 <translation id="152892567002884378">Lakasan ang volume</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, pagkatapos ay <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Idagdag ang www. at .com sa iyong input sa address bar, pagkatapos ay buksan ang page</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, pagkatapos ay <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> o <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">I-activate ang virtual desk sa kaliwa</translation>
 <translation id="1996162290124031907">Pumunta sa susunod na tab</translation>
 <translation id="2010818616644390445">Pumunta sa huling tab sa window</translation>
 <translation id="2040706009561734834">Buksan/isara ang launcher</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Kunin screenshot</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Address bar sa pagtuon</translation>
+<translation id="3165428420335997629">Gumawa ng bagong virtual desk</translation>
 <translation id="3256109297135787951">Nag-aalis ng highlight sa isang item sa iyong shelf</translation>
 <translation id="3288816184963444640">Isara ang kasalukuyang window</translation>
 <translation id="3407560819924487926">Palabasin ang task manager</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Maghanap sa kasalukuyang page</translation>
 <translation id="5563050856984839829">Pindutin ang <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> at mag-click ng link</translation>
 <translation id="561814908794220892">Buksan ang webpage sa isang bagong tab</translation>
+<translation id="5620219513321115856">Ilipat ang aktibong window sa desk sa kanan</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> o <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Buksan ang link sa tab</translation>
 <translation id="5757474750054631686">Padilimin ang keyboard (para lang sa mga keyboard na may backlight)</translation>
@@ -164,7 +169,7 @@
 <translation id="7500368597227394048">gitling</translation>
 <translation id="7611271430932669992">Inililipat ang focus sa mga popup at dialog</translation>
 <translation id="766326951329901120">I-paste ang content mula sa clipboard bilang plain text</translation>
-<translation id="7703010453515335249">kaliwang panaklong</translation>
+<translation id="7703010453515335249">kaliwang bracket</translation>
 <translation id="7724603315864178912">I-cut</translation>
 <translation id="7730490981846175479"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, pagkatapos ay <ph name="SPACE" /> o <ph name="ENTER" /></translation>
 <translation id="7787242579016742662">Magbukas ng file sa browser</translation>
@@ -174,8 +179,9 @@
 <translation id="8147954207400281792"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="K" /> o <ph name="E" /></translation>
 <translation id="8232835244134740473">Nililipat-lipat ang focus sa: Lugar ng status (kung saan lumalabas ang iyong larawan sa account), Launcher, Address bar, Bookmarks bar (kung nakikita), Webpage na nakabukas, at Bar ng mga download (kung nakikita).</translation>
 <translation id="8234414138295101081">I-rotate ang screen nang 90 degrees</translation>
-<translation id="8241665785394195545">kanang panaklong</translation>
+<translation id="8241665785394195545">kanang bracket</translation>
 <translation id="8264941229485248811">Ipakita o itago ang inspector ng Mga Tool ng Developer</translation>
+<translation id="8355937569537581904">Alisin ang kasalukuyang virtual desk</translation>
 <translation id="836869401750819675">Buksan ang page ng Mga Download</translation>
 <translation id="8388247778047144397">I-drag ang link sa isang blankong bahagi sa tab strip</translation>
 <translation id="8389638407792712197">Magbukas ng bagong window</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Piliin ang nakaraang salita o titik</translation>
 <translation id="8727232706774971183">Tingnan ang iyong mga notification</translation>
 <translation id="8855885154700222542">Key ng fullscreen</translation>
+<translation id="8881584919399569791">Ilipat ang aktibong window sa desk sa kaliwa</translation>
 <translation id="88986195241502842">Pababa sa pahina</translation>
 <translation id="8924883688469390268">Lumipat sa nakaraang user</translation>
 <translation id="8977648847395357314">Piliin ang content sa address bar</translation>
diff --git a/ash/components/strings/ash_components_strings_fr.xtb b/ash/components/strings/ash_components_strings_fr.xtb
index 86ebaad..e1573ec 100644
--- a/ash/components/strings/ash_components_strings_fr.xtb
+++ b/ash/components/strings/ash_components_strings_fr.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="fr">
 <translation id="104962181688258143">Ouvrir l'application Fichiers</translation>
+<translation id="1098295134904615027">Activez le bureau virtuel à droite</translation>
 <translation id="1122869341872663659">Afficher <ph name="N" /> résultats de recherche pour <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Faites glisser le lien vers la barre d'adresse de l'onglet</translation>
 <translation id="1204450209689312104">Ouvrir une nouvelle fenêtre en mode navigation privée</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Rechercher</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> ou <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Accéder à la fin de la ligne</translation>
+<translation id="1499072997694708844">Fermez n'importe quelle fenêtre de recherche ouverte ou arrêtez le chargement de la page actuelle</translation>
 <translation id="1510238584712386396">Lanceur d'applications</translation>
 <translation id="152892567002884378">Augmenter le volume</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, puis <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Ajouter "www." et ".com" à votre saisie dans la barre d'adresse et ouvrir la page</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, puis <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> ou <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Activez le bureau virtuel à gauche</translation>
 <translation id="1996162290124031907">Accéder à l'onglet suivant</translation>
 <translation id="2010818616644390445">Accéder au dernier onglet dans la fenêtre</translation>
 <translation id="2040706009561734834">Ouvrir ou fermer le lanceur d'applications</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Faire une capture d'écran</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Activer la barre d'adresse</translation>
+<translation id="3165428420335997629">Créez un bureau virtuel</translation>
 <translation id="3256109297135787951">Supprimer la mise en surbrillance d'un élément sur l'étagère</translation>
 <translation id="3288816184963444640">Fermer la fenêtre active</translation>
 <translation id="3407560819924487926">Ouvrir le gestionnaire de tâches</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Rechercher sur la page active</translation>
 <translation id="5563050856984839829">Appuyez sur <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> et cliquez sur un lien</translation>
 <translation id="561814908794220892">Ouvrir la page Web dans un nouvel onglet</translation>
+<translation id="5620219513321115856">Déplacez la fenêtre active vers le bureau à droite</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> ou <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Ouvrir le lien dans l'onglet</translation>
 <translation id="5757474750054631686">Réduire la luminosité du clavier (claviers rétroéclairés uniquement)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Faire pivoter l'écran de 90 degrés</translation>
 <translation id="8241665785394195545">crochet droit</translation>
 <translation id="8264941229485248811">Afficher ou masquer l'inspecteur des Outils pour les développeurs</translation>
+<translation id="8355937569537581904">Supprimez le bureau virtuel actuel</translation>
 <translation id="836869401750819675">Ouvrir la page "Téléchargements"</translation>
 <translation id="8388247778047144397">Faites glisser le lien vers une zone vierge de la barre d'onglets</translation>
 <translation id="8389638407792712197">Ouvrir une nouvelle fenêtre</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Sélectionner la lettre ou le mot précédents</translation>
 <translation id="8727232706774971183">Voir vos notifications</translation>
 <translation id="8855885154700222542">Touche de plein écran</translation>
+<translation id="8881584919399569791">Déplacez la fenêtre active vers le bureau à gauche</translation>
 <translation id="88986195241502842">Accéder à la page suivante</translation>
 <translation id="8924883688469390268">Passer à l'utilisateur précédent</translation>
 <translation id="8977648847395357314">Sélectionner le contenu de la barre d'adresse</translation>
diff --git a/ash/components/strings/ash_components_strings_gu.xtb b/ash/components/strings/ash_components_strings_gu.xtb
index c20e386..854a920 100644
--- a/ash/components/strings/ash_components_strings_gu.xtb
+++ b/ash/components/strings/ash_components_strings_gu.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="gu">
 <translation id="104962181688258143">Files ઍપ ખોલો</translation>
+<translation id="1098295134904615027">જમણી બાજુના વર્ચ્યુયલ ડેસ્કને સક્રિય કરો</translation>
 <translation id="1122869341872663659"><ph name="QUERY" /> માટે <ph name="N" /> શોધ પરિણામો ડિસ્પ્લે કરી રહ્યાં છીએ</translation>
 <translation id="1195667586424773550">ટૅબના ઍડ્રેસ બારમાં લિંકને ખેંચો</translation>
 <translation id="1204450209689312104">છૂપા મોડમાં એક નવી વિંડો ખોલો</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">શોધો</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> અથવા <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">રેખાના અંત પર જાઓ</translation>
+<translation id="1499072997694708844">કોઈપણ ખુલ્લી શોધ વિંડોને બંધ કરો અથવા તમારા વર્તમાન પેજને લોડ કરવાનું રોકો</translation>
 <translation id="1510238584712386396">લૉન્ચર</translation>
 <translation id="152892567002884378">વૉલ્યૂમ વધારો</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, પછી <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">ઍડ્રેસ બારમાંના તમારા ઇનપુટમાં www. અને .com ઉમેરો, પછી પેજ ખોલો</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, પછી <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> અથવા <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">ડાબી બાજુના વર્ચ્યુયલ ડેસ્કને સક્રિય કરો</translation>
 <translation id="1996162290124031907">આગળના ટૅબ પર જાઓ</translation>
 <translation id="2010818616644390445">વિંડોમાં છેલ્લા ટૅબ પર જાઓ</translation>
 <translation id="2040706009561734834">લૉન્ચર ખોલો/બંધ કરો</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">સ્ક્રીનશૉટ લો</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">સરનામાં બાર પર ફોકસ કરો</translation>
+<translation id="3165428420335997629">નવું વર્ચ્યુયલ ડેસ્ક બનાવો</translation>
 <translation id="3256109297135787951">તમારા શેલ્ફ પર આઇટમમાંથી હાઇલાઇટ કાઢી નાખો</translation>
 <translation id="3288816184963444640">વર્તમાન વિંડો બંધ કરો</translation>
 <translation id="3407560819924487926">કાર્ય મેનેજર લાવો</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">હાલનું પેજ શોધો</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> દબાવો અને લિંક પર ક્લિક કરો</translation>
 <translation id="561814908794220892">વેબપેજ નવા ટૅબમાં ખોલો</translation>
+<translation id="5620219513321115856">વધુ સક્રિય વિંડોને જમણી બાજુએ ડેસ્ક પર ખસેડો</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> અથવા <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">લિંકને ટૅબમાં ખોલો</translation>
 <translation id="5757474750054631686">ડિમ કીબોર્ડ (માત્ર બૅકલિટ કીબોર્ડ માટે)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">સ્ક્રીનને 90 ડિગ્રીએ ફેરવો</translation>
 <translation id="8241665785394195545">જમણો કૌંસ</translation>
 <translation id="8264941229485248811">ડેવલપર સાધનો ઇન્સ્પેક્ટર બતાવો અથવા છુપાવો</translation>
+<translation id="8355937569537581904">વર્તમાન વર્ચ્યુઅલ ડેસ્ક કાઢી નાખો</translation>
 <translation id="836869401750819675">ડાઉનલોડ પેજ ખોલો</translation>
 <translation id="8388247778047144397">લિંકને ટૅબ સ્ટ્રિપ પરના ખાલી વિસ્તારમાં ખેંચો</translation>
 <translation id="8389638407792712197">નવી વિંડો ખોલો</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">પાછલો શબ્દ અથવા અક્ષર પસંદ કરો</translation>
 <translation id="8727232706774971183">તમારા નોટિફિકેશનો જુઓ</translation>
 <translation id="8855885154700222542">પૂર્ણસ્ક્રીન કી</translation>
+<translation id="8881584919399569791">વધુ સક્રિય વિંડોને ડાબી બાજુએ ડેસ્ક પર ખસેડો</translation>
 <translation id="88986195241502842">પૃષ્ઠ નીચે</translation>
 <translation id="8924883688469390268">પાછલા વપરાશકર્તા પર સ્વિચ કરો</translation>
 <translation id="8977648847395357314">ઍડ્રેસ બારમાં કન્ટેન્ટ પસંદ કરો</translation>
diff --git a/ash/components/strings/ash_components_strings_hi.xtb b/ash/components/strings/ash_components_strings_hi.xtb
index 0342bc6..fa55bbd 100644
--- a/ash/components/strings/ash_components_strings_hi.xtb
+++ b/ash/components/strings/ash_components_strings_hi.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="hi">
 <translation id="104962181688258143">Files ऐप्लिकेशन खोलें</translation>
+<translation id="1098295134904615027">दाईं ओर मौजूद वर्चुअल डेस्क चालू करें</translation>
 <translation id="1122869341872663659"><ph name="QUERY" /> के लिए <ph name="N" /> खोज नतीजे दिखाए जा रहे हैं</translation>
 <translation id="1195667586424773550">लिंक को टैब के पता बार में खींचें और छोड़ें</translation>
 <translation id="1204450209689312104">गुप्त मोड में नई विंडो खोलें</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">खोजें</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> या <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">लाइन के आखिर में जाएं</translation>
+<translation id="1499072997694708844">सभी खुली हुई विंडो बंद करें या अपने मौजूदा पेज को लोड करना रोकें</translation>
 <translation id="1510238584712386396">लॉन्चर</translation>
 <translation id="152892567002884378">वॉल्यूम बढ़ाएं</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, फिर <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">पता बार में अपने इनपुट में www. और .com जोड़ें, फिर पेज खोलें</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, फिर <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> या <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">बाईं ओर मौजूद वर्चुअल डेस्क चालू करें</translation>
 <translation id="1996162290124031907">अगले टैब पर जाएं</translation>
 <translation id="2010818616644390445">विंडो में आखिरी टैब पर जाएंं</translation>
 <translation id="2040706009561734834">लॉन्चर खोलें/बंद करें</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">स्क्रीनशॉट लें</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">पता बार को फ़ोकस करें</translation>
+<translation id="3165428420335997629">नया वर्चुअल डेस्क बनाएं</translation>
 <translation id="3256109297135787951">अपने शेल्फ़ पर मौजूद किसी आइटम से हाइलाइट हटाएं</translation>
 <translation id="3288816184963444640">अभी वाली विंडो बंद करें</translation>
 <translation id="3407560819924487926">काम का प्रबंधक सामने लाएं</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">अभी वाले पेज में खोजें</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> दबाएं और किसी लिंक पर क्लिक करें</translation>
 <translation id="561814908794220892">वेबपेज को नए टैब में खोलें</translation>
+<translation id="5620219513321115856">चालू विंडो को दाईं तरफ़ के डेस्क पर ले जाएं</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> या <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">लिंक को टैब में खोलें</translation>
 <translation id="5757474750054631686">कीबोर्ड की रोशनी कम करें (केवल बैकलिट कीबोर्ड के लिए)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">स्‍क्रीन को 90 डिग्री पर घुमाएं</translation>
 <translation id="8241665785394195545">दायां ब्रैकेट</translation>
 <translation id="8264941229485248811">डेवलपर टूल इंस्पेक्टर दिखाएं या छिपाएं</translation>
+<translation id="8355937569537581904">मौजूदा वर्चुअल डेस्क हटाएं</translation>
 <translation id="836869401750819675">डाउनलोड पेज खोलें</translation>
 <translation id="8388247778047144397">लिंक को टैब स्‍ट्रिप पर खाली जगह में खींचें और छोड़ें</translation>
 <translation id="8389638407792712197">नई विंडो खोलें</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">पिछला शब्द या अक्षर चुनें</translation>
 <translation id="8727232706774971183">अपनी सूचनाएं देखें</translation>
 <translation id="8855885154700222542">फ़ुलस्क्रीन कुंजी</translation>
+<translation id="8881584919399569791">चालू विंडो को बाईं तरफ़ के डेस्क पर ले जाएं</translation>
 <translation id="88986195241502842">Page down</translation>
 <translation id="8924883688469390268">पिछले उपयोगकर्ता पर स्विच करें</translation>
 <translation id="8977648847395357314">पता बार में सामग्री चुनें</translation>
diff --git a/ash/components/strings/ash_components_strings_hr.xtb b/ash/components/strings/ash_components_strings_hr.xtb
index 89330e85..fbf9f9a 100644
--- a/ash/components/strings/ash_components_strings_hr.xtb
+++ b/ash/components/strings/ash_components_strings_hr.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="hr">
 <translation id="104962181688258143">Otvaranje aplikacije Datoteke</translation>
+<translation id="1098295134904615027">Aktiviranje virtualne radne površine zdesna</translation>
 <translation id="1122869341872663659">Prikazuju se rezultati pretraživanja (<ph name="N" />) za upit <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Povlačenje veze na adresnu traku kartice</translation>
 <translation id="1204450209689312104">Otvaranje novog prozora u anonimnom načinu</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Traži</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> ili <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Prelazak na kraj retka</translation>
+<translation id="1499072997694708844">Zatvaranje svih otvorenih prozora za traženje ili zaustavljanje učitavanja trenutačne stranice</translation>
 <translation id="1510238584712386396">Pokretač</translation>
 <translation id="152892567002884378">Pojačavanje glasnoće</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, a zatim <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Dodavanje elementa www. ili .com unosu u adresnoj traci i otvaranje stranice</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, a zatim <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> ili <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktiviranje virtualne radne površine slijeva</translation>
 <translation id="1996162290124031907">Prelazak na sljedeću karticu</translation>
 <translation id="2010818616644390445">Prelazak na zadnju karticu u prozoru</translation>
 <translation id="2040706009561734834">Otvori/zatvori pokretač</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Snimi zaslon</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Fokusiraj adresnu traku</translation>
+<translation id="3165428420335997629">Izrada nove virtualne radne površine</translation>
 <translation id="3256109297135787951">Poništavanje isticanja neke stavke na polici</translation>
 <translation id="3288816184963444640">Zatvaranje trenutačnog prozora</translation>
 <translation id="3407560819924487926">Prikazivanje upravitelja zadataka</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Pretraživanje trenutačne stranice</translation>
 <translation id="5563050856984839829">Pritisnite <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> i kliknite vezu</translation>
 <translation id="561814908794220892">Otvaranje web-stranice u novoj kartici</translation>
+<translation id="5620219513321115856">Premještanje aktivnog prozora na radnu površinu zdesna</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> ili <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Otvaranje veze u kartici</translation>
 <translation id="5757474750054631686">Zatamnjivanje tipkovnice (samo za tipkovnice s pozadinskim osvjetljenjem)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Zakretanje zaslona za 90 stupnjeva</translation>
 <translation id="8241665785394195545">desna zagrada</translation>
 <translation id="8264941229485248811">Prikaz ili sakrivanje inspektora Alata za razvojne programere</translation>
+<translation id="8355937569537581904">Uklanjanje trenutačne virtualne radne površine</translation>
 <translation id="836869401750819675">Otvaranje stranice preuzimanja</translation>
 <translation id="8388247778047144397">Povucite vezu na prazno područje na vrpci kartica</translation>
 <translation id="8389638407792712197">Otvaranje novog prozora</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Odabir prethodne riječi ili slova</translation>
 <translation id="8727232706774971183">Pregled obavijesti</translation>
 <translation id="8855885154700222542">tipka cijelog zaslona</translation>
+<translation id="8881584919399569791">Premještanje aktivnog prozora na radnu površinu slijeva</translation>
 <translation id="88986195241502842">Stranica prema dolje</translation>
 <translation id="8924883688469390268">Prelazak na prethodnog korisnika</translation>
 <translation id="8977648847395357314">Odabir sadržaja u adresnoj traci</translation>
diff --git a/ash/components/strings/ash_components_strings_hu.xtb b/ash/components/strings/ash_components_strings_hu.xtb
index 5ea6580..e6b1b7bb 100644
--- a/ash/components/strings/ash_components_strings_hu.xtb
+++ b/ash/components/strings/ash_components_strings_hu.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="hu">
 <translation id="104962181688258143">A Fájlok alkalmazás megnyitása</translation>
+<translation id="1098295134904615027">A jobb oldali virtuális asztal aktiválása</translation>
 <translation id="1122869341872663659"><ph name="N" /> keresési találat megjelenítve a következőre: <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">A link húzása a lap címsávjára</translation>
 <translation id="1204450209689312104">Új ablak megnyitása inkognitómódban</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Keresés</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> vagy <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Ugrás a sor végére</translation>
+<translation id="1499072997694708844">A megnyitott keresőablakok bezárása vagy az aktuális oldal betöltésének leállítása</translation>
 <translation id="1510238584712386396">Indító</translation>
 <translation id="152892567002884378">Hangerő növelése</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, majd <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">www. és .com hozzáadása a címsávba beírt szöveghez, majd az oldal megnyitása</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, majd <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> vagy <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">A bal oldali virtuális asztal aktiválása</translation>
 <translation id="1996162290124031907">Ugrás a következő lapra</translation>
 <translation id="2010818616644390445">Ugrás az ablak utolsó lapjára</translation>
 <translation id="2040706009561734834">Az indító megnyitása, illetve bezárása</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Képernyőkép készítése</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Fókuszálás a címsávra</translation>
+<translation id="3165428420335997629">Új virtuális asztal létrehozása</translation>
 <translation id="3256109297135787951">A kiemelés eltávolítása a polcon található elemről</translation>
 <translation id="3288816184963444640">A jelenlegi ablak bezárása</translation>
 <translation id="3407560819924487926">Feladatkezelő megnyitása</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Keresés az aktuális oldalon</translation>
 <translation id="5563050856984839829">Tartsa lenyomva a <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> billentyűt, és kattintson a linkre</translation>
 <translation id="561814908794220892">Weboldal megnyitása új lapon</translation>
+<translation id="5620219513321115856">Az aktív ablaknak a jobb oldali asztalra helyezése</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> vagy <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Link megnyitása a lapon</translation>
 <translation id="5757474750054631686">Billentyűzet megvilágításának halványítása (csak háttérvilágítással rendelkező billentyűzeteknél)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Képernyő elforgatása 90 fokkal</translation>
 <translation id="8241665785394195545">jobb oldali szögletes zárójel</translation>
 <translation id="8264941229485248811">A Fejlesztői eszközök ellenőrző panelének megjelenítése vagy elrejtése</translation>
+<translation id="8355937569537581904">A jelenlegi virtuális asztal eltávolítása</translation>
 <translation id="836869401750819675">A Letöltések oldal megnyitása</translation>
 <translation id="8388247778047144397">A link húzása a lapsor egy üres területére</translation>
 <translation id="8389638407792712197">Új ablak megnyitása</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Az előző szó vagy betű kijelölése</translation>
 <translation id="8727232706774971183">Az értesítések megtekintése</translation>
 <translation id="8855885154700222542">Teljes képernyő billentyű</translation>
+<translation id="8881584919399569791">Az aktív ablaknak a bal oldali asztalra helyezése</translation>
 <translation id="88986195241502842">Lapozás lefelé</translation>
 <translation id="8924883688469390268">Váltás az előző felhasználóra</translation>
 <translation id="8977648847395357314">A címsávban lévő tartalom kijelölése</translation>
diff --git a/ash/components/strings/ash_components_strings_id.xtb b/ash/components/strings/ash_components_strings_id.xtb
index 01bbb867..8f0d832 100644
--- a/ash/components/strings/ash_components_strings_id.xtb
+++ b/ash/components/strings/ash_components_strings_id.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="id">
 <translation id="104962181688258143">Membuka aplikasi File</translation>
+<translation id="1098295134904615027">Aktifkan halaman kerja virtual di sebelah kanan</translation>
 <translation id="1122869341872663659">Menampilkan hasil penelusuran <ph name="N" /> untuk <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Tarik link ke kolom URL tab</translation>
 <translation id="1204450209689312104">Membuka jendela baru dalam mode penyamaran</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Telusuri</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> atau <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Ke akhir baris</translation>
+<translation id="1499072997694708844">Tutup jendela penelusuran apa pun yang terbuka atau hentikan pemuatan halaman saat ini</translation>
 <translation id="1510238584712386396">Peluncur</translation>
 <translation id="152892567002884378">Mengeraskan volume</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, lalu <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Menambahkan www. dan .com ke masukan Anda dalam kolom URL, lalu membuka halaman</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, lalu <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> atau <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktifkan halaman kerja virtual di sebelah kiri</translation>
 <translation id="1996162290124031907">Membuka tab berikutnya</translation>
 <translation id="2010818616644390445">Membuka tab terakhir di jendela</translation>
 <translation id="2040706009561734834">Membuka/menutup peluncur</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Ambil screenshot</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Fokus ke bilah alamat</translation>
+<translation id="3165428420335997629">Buat halaman kerja virtual baru</translation>
 <translation id="3256109297135787951">Menghapus tanda dari item di rak</translation>
 <translation id="3288816184963444640">Menutup jendela aktif</translation>
 <translation id="3407560819924487926">Memunculkan pengelola tugas</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Menelusuri halaman aktif</translation>
 <translation id="5563050856984839829">Tekan <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" />, lalu klik link</translation>
 <translation id="561814908794220892">Membuka halaman di tab baru</translation>
+<translation id="5620219513321115856">Pindahkan jendela aktif ke halaman kerja di sebelah kanan</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> atau <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Membuka link di tab</translation>
 <translation id="5757474750054631686">Meredupkan keyboard (khusus keyboard dengan lampu latar)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Memutar layar 90 derajat</translation>
 <translation id="8241665785394195545">tanda kurung siku tutup</translation>
 <translation id="8264941229485248811">Menampilkan atau menyembunyikan pemeriksa Developer Tools</translation>
+<translation id="8355937569537581904">Hapus halaman kerja virtual saat ini</translation>
 <translation id="836869401750819675">Membuka halaman Download</translation>
 <translation id="8388247778047144397">Tarik link ke area kosong di tab setrip</translation>
 <translation id="8389638407792712197">Membuka jendela baru</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Memilih kata atau huruf sebelumnya</translation>
 <translation id="8727232706774971183">Melihat notifikasi</translation>
 <translation id="8855885154700222542">Tombol layar penuh</translation>
+<translation id="8881584919399569791">Pindahkan jendela aktif ke halaman kerja di sebelah kiri</translation>
 <translation id="88986195241502842">Page down</translation>
 <translation id="8924883688469390268">Beralih ke pengguna sebelumnya</translation>
 <translation id="8977648847395357314">Memilih konten di kolom URL</translation>
diff --git a/ash/components/strings/ash_components_strings_it.xtb b/ash/components/strings/ash_components_strings_it.xtb
index 43bb64a..40a0423d 100644
--- a/ash/components/strings/ash_components_strings_it.xtb
+++ b/ash/components/strings/ash_components_strings_it.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="it">
 <translation id="104962181688258143">Apre l'app File</translation>
+<translation id="1098295134904615027">Attiva la scrivania virtuale a destra</translation>
 <translation id="1122869341872663659">Sono visualizzati <ph name="N" /> risultati di ricerca relativi a <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Trascina il link nella barra degli indirizzi della scheda</translation>
 <translation id="1204450209689312104">Apre una nuova finestra in modalità di navigazione in incognito</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Cerca</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> o <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Vai alla fine della riga</translation>
+<translation id="1499072997694708844">Chiudi le finestre di ricerca aperte o interrompi il caricamento della pagina attuale</translation>
 <translation id="1510238584712386396">Avvio applicazioni</translation>
 <translation id="152892567002884378">Alza il volume</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, quindi <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Aggiunge www. e .com all'indirizzo inserito nella barra degli indirizzi, quindi apre la pagina</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, quindi <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> o <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Attiva la scrivania virtuale a sinistra</translation>
 <translation id="1996162290124031907">Passa alla scheda successiva</translation>
 <translation id="2010818616644390445">Passa all'ultima scheda della finestra</translation>
 <translation id="2040706009561734834">Consente di aprire/chiudere Avvio app</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Acquisisce uno screenshot</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Area attiva nella barra degli indirizzi</translation>
+<translation id="3165428420335997629">Crea una nuova scrivania virtuale</translation>
 <translation id="3256109297135787951">Consente di rimuovere l'evidenziazione da un elemento sulla shelf</translation>
 <translation id="3288816184963444640">Chiude la finestra corrente</translation>
 <translation id="3407560819924487926">Apre il Task Manager</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Esegue ricerche nella pagina corrente</translation>
 <translation id="5563050856984839829">Premi <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> e fai clic su un link</translation>
 <translation id="561814908794220892">Apre la pagina web in una nuova scheda</translation>
+<translation id="5620219513321115856">Sposta la finestra attiva sulla scrivania a destra</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> o <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Apre il link nella scheda</translation>
 <translation id="5757474750054631686">Oscura la tastiera (soltanto per tastiere retroilluminate)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Ruota lo schermo di 90 gradi</translation>
 <translation id="8241665785394195545">parentesi quadra chiusa</translation>
 <translation id="8264941229485248811">Consente di mostrare o nascondere il controllo Strumenti per sviluppatori</translation>
+<translation id="8355937569537581904">Rimuovi l'attuale scrivania virtuale</translation>
 <translation id="836869401750819675">Apre la pagina Download</translation>
 <translation id="8388247778047144397">Trascina il link in un'area vuota della tabstrip</translation>
 <translation id="8389638407792712197">Apre una nuova finestra</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Seleziona la parola o la lettera precedente</translation>
 <translation id="8727232706774971183">Visualizza le notifiche</translation>
 <translation id="8855885154700222542">Tasto schermo intero</translation>
+<translation id="8881584919399569791">Sposta la finestra attiva sulla scrivania a sinistra</translation>
 <translation id="88986195241502842">Pagina giù</translation>
 <translation id="8924883688469390268">Passa all'utente precedente</translation>
 <translation id="8977648847395357314">Seleziona i contenuti della barra degli indirizzi</translation>
diff --git a/ash/components/strings/ash_components_strings_iw.xtb b/ash/components/strings/ash_components_strings_iw.xtb
index ef464021..3542c31 100644
--- a/ash/components/strings/ash_components_strings_iw.xtb
+++ b/ash/components/strings/ash_components_strings_iw.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="iw">
 <translation id="104962181688258143">פתיחת האפליקציה 'קבצים'</translation>
+<translation id="1098295134904615027">הפעלת שולחן העבודה הווירטואלי שמימין</translation>
 <translation id="1122869341872663659">מוצגות <ph name="N" /> תוצאות חיפוש לגבי <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">גרירת הקישור אל שורת כתובת האתר של הכרטיסייה</translation>
 <translation id="1204450209689312104">פתיחת חלון חדש במצב גלישה בסתר</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">חפש</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> או <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">מעבר לסוף השורה</translation>
+<translation id="1499072997694708844">סגירה של כל חלונות החיפוש הפתוחים או הפסקת הטעינה של הדף הנוכחי</translation>
 <translation id="1510238584712386396">מרכז האפליקציות</translation>
 <translation id="152892567002884378">הגברת עוצמת הקול</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> ואז <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">‏הוספת www. ו-‎ .comלקלט בשורת כתובת האתר, ולאחר מכן פתיחת הדף</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> ואז <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> או <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">הפעלת שולחן העבודה הווירטואלי שמשמאל</translation>
 <translation id="1996162290124031907">מעבר לכרטיסייה הבאה</translation>
 <translation id="2010818616644390445">מעבר לכרטיסייה האחרונה בחלון</translation>
 <translation id="2040706009561734834">פתיחה/סגירה של מרכז האפליקציות</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">ביצוע של צילום מסך</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">התמקדות בשורת כתובת האתר</translation>
+<translation id="3165428420335997629">יצירה של שולחן עבודה וירטואלי חדש</translation>
 <translation id="3256109297135787951">הסרת הסימון מפריט במדף</translation>
 <translation id="3288816184963444640">סגירת החלון הנוכחי</translation>
 <translation id="3407560819924487926">פתיחת מנהל המשימות</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">חיפוש בדף הנוכחי</translation>
 <translation id="5563050856984839829">הקשה על <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> ולחיצה על קישור</translation>
 <translation id="561814908794220892">פתיחת דף האינטרנט בכרטיסייה חדשה</translation>
+<translation id="5620219513321115856">העברת החלון הפעיל אל שולחן העבודה שמימין</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> או <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">פתיחת הקישור בכרטיסייה</translation>
 <translation id="5757474750054631686">עמעום המקלדת (למקלדות עם תאורה אחורית בלבד)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">סיבוב המסך ב-90 מעלות</translation>
 <translation id="8241665785394195545">סוגר ימני</translation>
 <translation id="8264941229485248811">הצגה או הסתרה של בודק 'כלים למפתחים'</translation>
+<translation id="8355937569537581904">הסרה של שולחן העבודה הווירטואלי הנוכחי</translation>
 <translation id="836869401750819675">פתיחת הדף 'הורדות'</translation>
 <translation id="8388247778047144397">גרירת הקישור לאזור ריק בשורת הכרטיסיות</translation>
 <translation id="8389638407792712197">פתיחת חלון חדש</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">בחירת המילה או האות הקודמת</translation>
 <translation id="8727232706774971183">הצגת ההודעות שלך</translation>
 <translation id="8855885154700222542">מקש מסך מלא</translation>
+<translation id="8881584919399569791">העברת החלון הפעיל אל שולחן העבודה שמשמאל</translation>
 <translation id="88986195241502842">Page down</translation>
 <translation id="8924883688469390268">מעבר למשתמש הקודם</translation>
 <translation id="8977648847395357314">בחירת התוכן בשורת כתובת האתר</translation>
diff --git a/ash/components/strings/ash_components_strings_ja.xtb b/ash/components/strings/ash_components_strings_ja.xtb
index 69eb9cc..73b0ed4d 100644
--- a/ash/components/strings/ash_components_strings_ja.xtb
+++ b/ash/components/strings/ash_components_strings_ja.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ja">
 <translation id="104962181688258143">ファイルアプリを起動する</translation>
+<translation id="1098295134904615027">右の仮想デスクを有効にします</translation>
 <translation id="1122869341872663659">「<ph name="QUERY" />」の検索結果 <ph name="N" /> 件を表示しています</translation>
 <translation id="1195667586424773550">リンクをドラッグしてタブのアドレスバーに移動する</translation>
 <translation id="1204450209689312104">新しいウィンドウをシークレット モードで開く</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">検索</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> キーまたは <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /> キーを押す</translation>
 <translation id="1477442857810932985">行の末尾に移動します</translation>
+<translation id="1499072997694708844">開いている検索ウィンドウをすべて閉じるか、現在のページの読み込みを停止します</translation>
 <translation id="1510238584712386396">ランチャー</translation>
 <translation id="152892567002884378">音量を上げる</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> キーを押した状態で <ph name="ESC" /> キーを押す</translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /> キーを押す</translation>
 <translation id="1733525068429116555">アドレスバーに入力した語句に www. と .com を追加してページを開く</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> キーを押した状態で <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> キーまたは <ph name="LEFT" /> キーを押す</translation>
+<translation id="1929866390202038233">左の仮想デスクを有効にします</translation>
 <translation id="1996162290124031907">次のタブに移動する</translation>
 <translation id="2010818616644390445">ウィンドウ内の最後のタブに移動する</translation>
 <translation id="2040706009561734834">ランチャーを開くか閉じます</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">スクリーンショットを撮る</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">アドレスバーにフォーカスを移す</translation>
+<translation id="3165428420335997629">新しい仮想デスクを作成します</translation>
 <translation id="3256109297135787951">シェルフのアイテムのハイライト表示を解除します</translation>
 <translation id="3288816184963444640">現在のウィンドウを閉じる</translation>
 <translation id="3407560819924487926">タスク マネージャを表示する</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">現在のページ内を検索する</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> キーを押しながらリンクをクリックする</translation>
 <translation id="561814908794220892">新しいタブでウェブページを開く</translation>
+<translation id="5620219513321115856">アクティブなウィンドウを右のデスクに移動します</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> キーまたは <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /> キーを押す</translation>
 <translation id="5757111373163288447">ドラッグ先のタブでリンクを開く</translation>
 <translation id="5757474750054631686">キーボードの明るさを下げる(バックライト付きキーボードのみ)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">画面を 90 度回転させる</translation>
 <translation id="8241665785394195545">右角かっこ</translation>
 <translation id="8264941229485248811">デベロッパー ツール インスペクタの表示と非表示を切り替えます</translation>
+<translation id="8355937569537581904">現在の仮想デスクを削除します</translation>
 <translation id="836869401750819675">ダウンロード ページを開く</translation>
 <translation id="8388247778047144397">リンクをドラッグしてタブストリップの空白領域に移動する</translation>
 <translation id="8389638407792712197">新しいウィンドウを開く</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">前の単語または文字を選択する</translation>
 <translation id="8727232706774971183">通知を表示する</translation>
 <translation id="8855885154700222542">全画面表示キー</translation>
+<translation id="8881584919399569791">アクティブなウィンドウを左のデスクに移動します</translation>
 <translation id="88986195241502842">ページ内を下に移動</translation>
 <translation id="8924883688469390268">前のユーザーに切り替えます</translation>
 <translation id="8977648847395357314">アドレスバーの内容を選択します</translation>
diff --git a/ash/components/strings/ash_components_strings_kn.xtb b/ash/components/strings/ash_components_strings_kn.xtb
index 701c1bf..7598b893 100644
--- a/ash/components/strings/ash_components_strings_kn.xtb
+++ b/ash/components/strings/ash_components_strings_kn.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="kn">
 <translation id="104962181688258143">ಫೈಲ್‌ಗಳ ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಿರಿ</translation>
+<translation id="1098295134904615027">ಬಲಬದಿಯಲ್ಲಿರುವ ವರ್ಚುವಲ್ ಡೆಸ್ಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="1122869341872663659"><ph name="QUERY" /> ಗಾಗಿ <ph name="N" /> ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="1195667586424773550">ಟ್ಯಾಬ್‌ನ ವಿಳಾಸ ಪಟ್ಟಿಗೆ ಲಿಂಕ್‌ ಅನ್ನು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ</translation>
 <translation id="1204450209689312104">ಅಜ್ಞಾತ ಮೋಡ್‌ನಲ್ಲಿ ಹೊಸ ವಿಂಡೋ ತೆರೆಯಿರಿ</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">ಹುಡುಕಾಟ</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> ಅಥವಾ <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">ಸಾಲಿನ ಅಂತ್ಯಕ್ಕೆ ಹೋಗಿ</translation>
+<translation id="1499072997694708844">ತೆರೆದಿರುವ ಹುಡುಕಾಟ ವಿಂಡೋವನ್ನು ಮುಚ್ಚಿ ಅಥವಾ ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪುಟದ ಲೋಡ್ ಮಾಡುವಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಿ</translation>
 <translation id="1510238584712386396">ಲಾಂಚರ್</translation>
 <translation id="152892567002884378">ವಾಲ್ಯೂಮ್ ಹೆಚ್ಚು ಮಾಡಿ</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, ನಂತರ <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">ವಿಳಾಸ ಪಟ್ಟಿಯಲ್ಲಿ ನಿಮ್ಮ ಇನ್‌ಪುಟ್‌ಗೆ www. ಮತ್ತು .com ಅನ್ನು ಸೇರಿಸಿ, ನಂತರ ಪುಟವನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, ನಂತರ <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> ಅಥವಾ <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">ಎಡಬದಿಯಲ್ಲಿರುವ ವರ್ಚುವಲ್ ಡೆಸ್ಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="1996162290124031907">ಮುಂದಿನ ಟ್ಯಾಬ್‌ಗೆ ಹೋಗಿ</translation>
 <translation id="2010818616644390445">ವಿಂಡೋದಲ್ಲಿ ಕೊನೆಯ ಟ್ಯಾಬ್‌ಗೆ ಹೋಗಿ</translation>
 <translation id="2040706009561734834">ಲಾಂಚರ್ ಅನ್ನು ತೆರೆಯಿರಿ/ಮುಚ್ಚಿ</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">ವಿಳಾಸ ಪಟ್ಟಿಯನ್ನು ಗಮನಿಸಿ</translation>
+<translation id="3165428420335997629">ಹೊಸ ವರ್ಚುವಲ್ ಡೆಸ್ಕ್ ಅನ್ನು ರಚಿಸಿ</translation>
 <translation id="3256109297135787951">ನಿಮ್ಮ ಶೆಲ್ಫ್‌ನಲ್ಲಿರುವ ಐಟಂನಿಂದ ಹೈಲೈಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="3288816184963444640">ಪ್ರಸ್ತುತ ವಿಂಡೋ ಮುಚ್ಚಿ</translation>
 <translation id="3407560819924487926">ಹೊಸ ಕಾರ್ಯ ನಿರ್ವಾಹಕವನ್ನು ತೆರೆಯುತ್ತದೆ</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">ಪ್ರಸ್ತುತ ಪುಟವನ್ನು ಹುಡುಕಿ</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> ಒತ್ತಿರಿ ಮತ್ತು ಲಿಂಕ್‌ ಅನ್ನು ಕ್ಲಿಕ್‌ ಮಾಡಿ</translation>
 <translation id="561814908794220892">ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ವೆಬ್‌ಪುಟವನ್ನು ತೆರೆಯಿರಿ</translation>
+<translation id="5620219513321115856">ಸಕ್ರಿಯ ವಿಂಡೋವನ್ನು, ಬಲಬದಿಯಲ್ಲಿರುವ ಡೆಸ್ಕ್‌ಗೆ ಸರಿಸಿ</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> ಅಥವಾ <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">ಟ್ಯಾಬ್‌ನಲ್ಲಿ ಲಿಂಕ್ ತೆರೆಯಿರಿ</translation>
 <translation id="5757474750054631686">ಮಂದ ಕೀಬೋರ್ಡ್(ಬ್ಯಾಕ್‌‌ಲಿಟ್‌‌ ಕೀಬೋರ್ಡ್‌ಗಳಿಗಾಗಿ ಮಾತ್ರ)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">ಪರದೆಯನ್ನು 90 ಡಿಗ್ರಿಗಳಲ್ಲಿ ತಿರುಗಿಸಿ</translation>
 <translation id="8241665785394195545">ಬಲ ಆವರಣ</translation>
 <translation id="8264941229485248811">ಡೆವಲಪರ್ ಪರಿಕರಗಳ ಪರೀಕ್ಷಕವನ್ನು ತೋರಿಸಿ ಅಥವಾ ಮರೆಮಾಡಿ</translation>
+<translation id="8355937569537581904">ಪ್ರಸ್ತುತ ವರ್ಚುವಲ್ ಡೆಸ್ಕ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="836869401750819675">ಡೌನ್‌ಲೋಡ್‌ಗಳ ಪುಟ ತೆರೆಯಿರಿ</translation>
 <translation id="8388247778047144397">ಟ್ಯಾಬ್ ಪಟ್ಟಿಯಲ್ಲಿನ ಖಾಲಿ ವಲಯಕ್ಕೆ ಲಿಂಕ್ ಎಳೆಯಿರಿ</translation>
 <translation id="8389638407792712197">ಹೊಸ ವಿಂಡೋವನ್ನು ತೆರೆಯಿರಿ</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">ಹಿಂದಿನ ಪದ ಅಥವಾ ಅಕ್ಷರವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</translation>
 <translation id="8727232706774971183">ನಿಮ್ಮ ಅಧಿಸೂಚನೆಗಳನ್ನು ನೋಡಿ</translation>
 <translation id="8855885154700222542">ಪೂರ್ಣಪರದೆ ಕೀ</translation>
+<translation id="8881584919399569791">ಸಕ್ರಿಯ ವಿಂಡೋವನ್ನು, ಎಡಬದಿಯಲ್ಲಿರುವ ಡೆಸ್ಕ್‌ಗೆ ಸರಿಸಿ</translation>
 <translation id="88986195241502842">Page down</translation>
 <translation id="8924883688469390268">ಹಿಂದಿನ ಬಳಕೆದಾರರಿಗೆ ಬದಲಿಸಿ</translation>
 <translation id="8977648847395357314">ವಿಳಾಸದ ಪಟ್ಟಿಯಲ್ಲಿರುವ ವಿಷಯವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</translation>
diff --git a/ash/components/strings/ash_components_strings_ko.xtb b/ash/components/strings/ash_components_strings_ko.xtb
index 68a7556..95c26f4a 100644
--- a/ash/components/strings/ash_components_strings_ko.xtb
+++ b/ash/components/strings/ash_components_strings_ko.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ko">
 <translation id="104962181688258143">파일 앱 열기</translation>
+<translation id="1098295134904615027">오른쪽에서 가상 데스크를 활성화합니다.</translation>
 <translation id="1122869341872663659"><ph name="QUERY" />에 관한 검색결과 <ph name="N" />개 표시 중</translation>
 <translation id="1195667586424773550">링크를 탭의 검색주소창으로 드래그하세요.</translation>
 <translation id="1204450209689312104">시크릿 모드로 새 창 열기</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">검색</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> 또는 <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">행의 끝으로 이동</translation>
+<translation id="1499072997694708844">열려 있는 찾기 창을 닫거나 현재 페이지 로드를 중지합니다.</translation>
 <translation id="1510238584712386396">런처</translation>
 <translation id="152892567002884378">볼륨 크게</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />을 누르고 <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">검색주소창에 입력한 주소에 www. 및 .com을 추가한 후 페이지 열기</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />을 누르고 <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> 또는 <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">왼쪽에서 가상 데스크를 활성화합니다.</translation>
 <translation id="1996162290124031907">다음 탭으로 이동</translation>
 <translation id="2010818616644390445">창의 마지막 탭으로 이동</translation>
 <translation id="2040706009561734834">런처 열기/닫기</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">스크린샷 찍기</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">주소 표시줄로 이동</translation>
+<translation id="3165428420335997629">새로운 가상 데스크를 만듭니다.</translation>
 <translation id="3256109297135787951">실행기에 있는 항목에서 강조표시를 삭제합니다.</translation>
 <translation id="3288816184963444640">현재 창 닫기</translation>
 <translation id="3407560819924487926">작업 관리자 호출</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">현재 페이지 검색</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" />를 누르고 링크를 클릭</translation>
 <translation id="561814908794220892">새 탭에서 웹페이지 열기</translation>
+<translation id="5620219513321115856">활성 창을 오른쪽 데스크로 옮깁니다.</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> 또는 <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">탭에서 링크 열기</translation>
 <translation id="5757474750054631686">키보드 어둡게(백라이트 키보드만 해당)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">화면 90도 회전</translation>
 <translation id="8241665785394195545">오른쪽 대괄호</translation>
 <translation id="8264941229485248811">Developer Tools 검사기 표시 또는 숨기기</translation>
+<translation id="8355937569537581904">현재 가상 데스크를 삭제합니다.</translation>
 <translation id="836869401750819675">다운로드 페이지 열기</translation>
 <translation id="8388247778047144397">링크를 탭 표시줄의 빈 영역으로 드래그</translation>
 <translation id="8389638407792712197">새 창 열기</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">이전 단어 또는 글자를 선택</translation>
 <translation id="8727232706774971183">알림 확인</translation>
 <translation id="8855885154700222542">전체화면 키</translation>
+<translation id="8881584919399569791">활성 창을 왼쪽 데스크로 옮깁니다.</translation>
 <translation id="88986195241502842">페이지 아래로</translation>
 <translation id="8924883688469390268">이전 사용자로 전환</translation>
 <translation id="8977648847395357314">검색주소창의 콘텐츠를 선택</translation>
diff --git a/ash/components/strings/ash_components_strings_lt.xtb b/ash/components/strings/ash_components_strings_lt.xtb
index 63494275..5aa6dc9 100644
--- a/ash/components/strings/ash_components_strings_lt.xtb
+++ b/ash/components/strings/ash_components_strings_lt.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="lt">
 <translation id="104962181688258143">Atidaryti Failų programą</translation>
+<translation id="1098295134904615027">Aktyvinamas virtualusis pultas dešinėje</translation>
 <translation id="1122869341872663659">Rodomi paieškos rezultatai (<ph name="N" />) pagal užklausą „<ph name="QUERY" />“</translation>
 <translation id="1195667586424773550">Nuvilkite nuorodą į skirtuko adreso juostą</translation>
 <translation id="1204450209689312104">Atidaryti naują langą inkognito režimu</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Ieškoti</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> arba <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Eiti į eilutės pabaigą</translation>
+<translation id="1499072997694708844">Uždaromas bet kuris atidarytas paieškos langas arba sustabdomas dabartinio puslapio įkėlimas</translation>
 <translation id="1510238584712386396">Paleidimo priemonė</translation>
 <translation id="152892567002884378">Padidinti garsumą</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, tada <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Pridėkite „www.“ ir „.com“ prie įvesties adreso juostoje, tada atidarykite puslapį</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, tada <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> arba <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktyvinamas virtualusis pultas kairėje</translation>
 <translation id="1996162290124031907">Eiti į kitą skirtuką</translation>
 <translation id="2010818616644390445">Eiti į paskutinį skirtuką lange</translation>
 <translation id="2040706009561734834">Atidaryti / uždaryti paleidimo priemonę</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Padaryti ekrano kopiją</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Fokusuoti adreso juostą</translation>
+<translation id="3165428420335997629">Sukuriamas naujas virtualusis pultas</translation>
 <translation id="3256109297135787951">Pašalinti elemento lentynoje paryškinimą</translation>
 <translation id="3288816184963444640">Uždaryti esamą langą</translation>
 <translation id="3407560819924487926">Rodyti užduočių tvarkytuvę</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Ieškoti dabartiniame puslapyje</translation>
 <translation id="5563050856984839829">Paspauskite <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> ir spustelėkite nuorodą</translation>
 <translation id="561814908794220892">Atidaryti tinklalapį naujame skirtuke</translation>
+<translation id="5620219513321115856">Aktyvus langas perkeliamas į pultą dešinėje</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> arba <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Atidaryti nuorodą skirtuke</translation>
 <translation id="5757474750054631686">Pritemdyti klaviatūrą (skirta tik klaviatūroms su foniniu apšvietimu)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Pasukti ekraną 90 laipsnių kampu</translation>
 <translation id="8241665785394195545">uždaromasis laužtinis skliaustas</translation>
 <translation id="8264941229485248811">Rodyti arba slėpti kūrėjo įrankių tikrinimo priemonę</translation>
+<translation id="8355937569537581904">Pašalinamas dabartinis virtualusis pultas</translation>
 <translation id="836869401750819675">Atidaryti atsisiuntimų puslapį</translation>
 <translation id="8388247778047144397">Nuvilkite nuorodą į tuščią sritį skirtuko juostelėje</translation>
 <translation id="8389638407792712197">Atidaryti naują langą</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Pasirinkti ankstesnį žodį ar raidę</translation>
 <translation id="8727232706774971183">Žiūrėti pranešimus</translation>
 <translation id="8855885154700222542">Viso ekrano klavišas</translation>
+<translation id="8881584919399569791">Aktyvus langas perkeliamas į pultą kairėje</translation>
 <translation id="88986195241502842">Puslapiu žemyn</translation>
 <translation id="8924883688469390268">Perjungti į ankstesnį naudotoją</translation>
 <translation id="8977648847395357314">Pasirinkti adreso juostos turinį</translation>
diff --git a/ash/components/strings/ash_components_strings_lv.xtb b/ash/components/strings/ash_components_strings_lv.xtb
index 5afabd7e..c850282e 100644
--- a/ash/components/strings/ash_components_strings_lv.xtb
+++ b/ash/components/strings/ash_components_strings_lv.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="lv">
 <translation id="104962181688258143">Atvērt lietotni Faili</translation>
+<translation id="1098295134904615027">Aktivizēt virtuālo darbvietu labajā pusē</translation>
 <translation id="1122869341872663659">Tiek rādīti <ph name="N" /> meklēšanas rezultāti vaicājumam “<ph name="QUERY" />”.</translation>
 <translation id="1195667586424773550">Vilkt saiti uz cilnes adreses joslu</translation>
 <translation id="1204450209689312104">Atvērt jaunu logu inkognito režīmā</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Meklēt</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> vai <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Pāriet uz rindas beigām</translation>
+<translation id="1499072997694708844">Aizveriet atvērtos meklēšanas logus vai pārtrauciet pašreizējās lapas ielādi</translation>
 <translation id="1510238584712386396">Lietojumprogrammu palaidējs</translation>
 <translation id="152892567002884378">Palielināt skaļumu</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, pēc tam <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Pievienot www. un .com ievadītajam tekstam adreses joslā, pēc tam atvērt lapu</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, pēc tam <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> vai <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktivizēt virtuālo darbvietu kreisajā pusē</translation>
 <translation id="1996162290124031907">Pāriet uz nākamo cilni</translation>
 <translation id="2010818616644390445">Pāriet uz loga pēdējo cilni</translation>
 <translation id="2040706009561734834">Atvērt/aizvērt palaidēju</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Uzņemt ekrānuzņēmumu</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Iezīmēt adreses joslu</translation>
+<translation id="3165428420335997629">Izveidot jaunu virtuālo darbvietu</translation>
 <translation id="3256109297135787951">Noņemt plauktā izceltā vienuma izcelšanu</translation>
 <translation id="3288816184963444640">Aizvērt pašreizējo logu</translation>
 <translation id="3407560819924487926">Parādīt uzdevumu pārvaldnieku</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Meklēt pašreizējā lapā</translation>
 <translation id="5563050856984839829">Nospiediet <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> un noklikšķiniet uz saites</translation>
 <translation id="561814908794220892">Atvērt tīmekļa lapu jaunā cilnē</translation>
+<translation id="5620219513321115856">Pārvietot aktīvo logu uz darbvietu labajā pusē</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> vai <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Atvērt saiti cilnē</translation>
 <translation id="5757474750054631686">Izslēgt tastatūras apgaismojumu (tikai tastatūrām ar aizmugures apgaismojumu)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Pagriezt ekrānu par 90 grādiem</translation>
 <translation id="8241665785394195545">labā iekava</translation>
 <translation id="8264941229485248811">Rādīt vai paslēpt izstrādātāja rīku kontrolieri</translation>
+<translation id="8355937569537581904">Noņemt virtuālo darbvietu</translation>
 <translation id="836869401750819675">Atvērt lapu Lejupielādes</translation>
 <translation id="8388247778047144397">Vilkt saiti uz tukšu apgabalu ciļņu joslā</translation>
 <translation id="8389638407792712197">Atvērt jaunu logu</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Atlasīt iepriekšējo vārdu vai burtu</translation>
 <translation id="8727232706774971183">Skatīt paziņojumus</translation>
 <translation id="8855885154700222542">Pilnekrāna taustiņš</translation>
+<translation id="8881584919399569791">Pārvietot aktīvo logu uz darbvietu kreisajā pusē</translation>
 <translation id="88986195241502842">Lejup</translation>
 <translation id="8924883688469390268">Pārslēgt iepriekšējo lietotāju</translation>
 <translation id="8977648847395357314">Atlasīt adreses joslas saturu</translation>
diff --git a/ash/components/strings/ash_components_strings_ml.xtb b/ash/components/strings/ash_components_strings_ml.xtb
index 7e7aebc..675a0ab 100644
--- a/ash/components/strings/ash_components_strings_ml.xtb
+++ b/ash/components/strings/ash_components_strings_ml.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ml">
 <translation id="104962181688258143">'ഫയലുകൾ' ആപ്പ് തുറക്കുക</translation>
+<translation id="1098295134904615027">വലതുവശത്ത് വെർച്വൽ ഡെസ്‌ക് സജീവമാക്കുക</translation>
 <translation id="1122869341872663659"><ph name="QUERY" /> എന്നതിനായി <ph name="N" /> തിരയൽ ഫലങ്ങൾ കാണിക്കുന്നു</translation>
 <translation id="1195667586424773550">ടാബിന്റെ വിലാസ ബാറിലേക്ക് ലിങ്ക് വലിച്ചിടുക</translation>
 <translation id="1204450209689312104">അദൃശ്യ മോഡിൽ പുതിയൊരു വിൻഡോ തുറക്കുക</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">തിരയുക</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> അല്ലെങ്കിൽ <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">വരിയുടെ അവസാനത്തിലേക്ക് പോകുക</translation>
+<translation id="1499072997694708844">തുറന്നിരിക്കുന്ന ഏതെങ്കിലും കണ്ടെത്തൽ വിൻഡോ അടയ്‌ക്കുക അല്ലെങ്കിൽ നിങ്ങളുടെ നിലവിലെ പേജ് ലോഡ് ചെയ്യുന്നത് അവസാനിപ്പിക്കുക</translation>
 <translation id="1510238584712386396">ലോഞ്ചർ</translation>
 <translation id="152892567002884378">ശബ്ദം കൂട്ടുക</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, തുടർന്ന് <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">വിലാസ ബാറിലെ നിങ്ങളുടെ ഇന്‍‌പുട്ടിൽ www., .com എന്നിവ ചേർത്ത ശേഷം പേജ് തുറക്കുക</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, തുടർന്ന് <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> അല്ലെങ്കിൽ <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">ഇടതുവശത്ത് വെർച്വൽ ഡെസ്‌ക് സജീവമാക്കുക</translation>
 <translation id="1996162290124031907">അടുത്ത ടാബിലേക്ക് പോവുക</translation>
 <translation id="2010818616644390445">വിൻഡോയിലെ അവസാന ടാബിലേക്ക് പോവുക</translation>
 <translation id="2040706009561734834">ലോഞ്ചർ തുറക്കുക/അടയ്ക്കുക</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">സ്ക്രീന്‍ഷോട്ട് എടുക്കുക</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">വിലാസ ബാര്‍ ഫോക്കസ് ചെയ്യുക</translation>
+<translation id="3165428420335997629">പുതിയ വെർച്വൽ ഡെസ്‌ക് സൃഷ്‌ടിക്കുക</translation>
 <translation id="3256109297135787951">നിങ്ങളുടെ ഷെൽഫിലെ ഒരു ഇനത്തിൽ നിന്ന് ഹൈലൈറ്റ് നീക്കം ചെയ്യുക</translation>
 <translation id="3288816184963444640">നിലവിലെ വിൻഡോ അടയ്‌ക്കുക</translation>
 <translation id="3407560819924487926">ടാസ്‌ക് മാനേജർ ഉപയോഗപ്പെടുത്തുക</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">നിലവിലെ പേജ് തിരയുക</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> അമർത്തി, ഒരു ലിങ്ക് ക്ലിക്ക് ചെയ്യുക</translation>
 <translation id="561814908794220892">പുതിയ ടാബിൽ വെബ്‌പേജ് തുറക്കുക</translation>
+<translation id="5620219513321115856">സജീവമായ വിൻഡോ വലതുവശത്തെ ഡെസ്‌ക്കിലേക്ക് നീക്കുക</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> അല്ലെങ്കിൽ <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">ടാബിൽ ലിങ്ക് തുറക്കുക</translation>
 <translation id="5757474750054631686">കീബോഡ് മങ്ങിക്കുക (ബാക്ക്‌ലൈറ്റ് കീബോഡുകൾക്ക് മാത്രം)</translation>
@@ -161,7 +166,7 @@
 <translation id="7422707470576323858">ലഭ്യമായ അടുത്ത ഇൻപുട്ട് രീതിയിലേക്ക് മാറുക</translation>
 <translation id="743754632698445141">ഒരു ആപ്പ് അൺപിൻ ചെയ്യുക</translation>
 <translation id="7439718573248533901">അടുത്ത അക്ഷരം ഇല്ലാതാക്കുക (ഫോർവേഡ് ഡിലീറ്റ്)</translation>
-<translation id="7500368597227394048">ഹൈഫൺ</translation>
+<translation id="7500368597227394048">ഹൈഫൻ</translation>
 <translation id="7611271430932669992">പോപ്-അപ്പുകളിലേക്കും ഡയലോഗുകളിലേക്കും ഫോക്കസ് നീക്കുക</translation>
 <translation id="766326951329901120">ക്ലിപ്‌ബോർഡിൽ നിന്നുള്ള ഉള്ളടക്കം സാധാരണ വാചകമായി ഒട്ടിക്കുക</translation>
 <translation id="7703010453515335249">ഇടത് ബ്രാക്കറ്റ്</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">സ്‌ക്രീൻ 90 ഡിഗ്രി തിരിക്കുക</translation>
 <translation id="8241665785394195545">വലത് ബ്രാക്കറ്റ്</translation>
 <translation id="8264941229485248811">ഡെവലപ്പര്‍ ടൂൾസ് ഇൻസ്‌പെക്‌ടർ കാണിക്കുക അല്ലെങ്കിൽ അദൃശ്യമാക്കുക</translation>
+<translation id="8355937569537581904">നിലവിലെ വെർച്വൽ ഡെസ്‌ക് നീക്കം ചെയ്യുക</translation>
 <translation id="836869401750819675">ഡൗൺലോഡുകളുടെ പേജ് തുറക്കുക</translation>
 <translation id="8388247778047144397">ടാബ് സ്‌ട്രിപ്പിലെ ശൂന്യമായ ഏരിയയിലേക്ക് ലിങ്ക് വലിച്ചിടുക</translation>
 <translation id="8389638407792712197">പുതിയ വിൻഡോ തുറക്കുക</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">മുൻ വാക്കോ അക്ഷരമോ തിരഞ്ഞെടുക്കുക</translation>
 <translation id="8727232706774971183">നിങ്ങളുടെ അറിയിപ്പുകൾ കാണുക</translation>
 <translation id="8855885154700222542">പൂർണ്ണ സ്‌ക്രീൻ കീ</translation>
+<translation id="8881584919399569791">സജീവമായ വിൻഡോ ഇടതുവശത്തെ ഡെസ്‌ക്കിലേക്ക് നീക്കുക</translation>
 <translation id="88986195241502842">Page down</translation>
 <translation id="8924883688469390268">മുമ്പത്തെ ഉപയോക്താവിലേക്ക് മാറുക</translation>
 <translation id="8977648847395357314">വിലാസ ബാറിലെ ഉള്ളടക്കം തിരഞ്ഞെടുക്കുക</translation>
diff --git a/ash/components/strings/ash_components_strings_mr.xtb b/ash/components/strings/ash_components_strings_mr.xtb
index 7780740c..15a5584 100644
--- a/ash/components/strings/ash_components_strings_mr.xtb
+++ b/ash/components/strings/ash_components_strings_mr.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="mr">
 <translation id="104962181688258143">फायली अ‍ॅप उघडा</translation>
+<translation id="1098295134904615027">व्हर्च्युअल डेस्क उजवीकडे सुरू करा</translation>
 <translation id="1122869341872663659"><ph name="QUERY" /> साठी <ph name="N" /> शोध परिणाम दाखवत आहे</translation>
 <translation id="1195667586424773550">लिंक ड्रॅग करून टॅबच्या अ‍ॅड्रेस बारवर आणा</translation>
 <translation id="1204450209689312104">एक नवीन विंडो गुप्त मोडमध्ये उघडा</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">शोधा</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> किंवा <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">ओळीच्या शेवटी जा</translation>
+<translation id="1499072997694708844">कोणतीही उघडी असलेली शोध विंडो बंद करा किंवा तुमचे सध्याचे पेज लोड करणे थांबवा</translation>
 <translation id="1510238584712386396">लाँचर</translation>
 <translation id="152892567002884378">आवाज मोठा करा</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, नंतर <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">अ‍ॅड्रेस बारमधील तुमच्या इनपुटमध्ये www. आणि .com जोडा, त्यानंतर पेज उघडा</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, त्यानंतर <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> किंवा <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">व्हर्च्युअल डेस्क डावीकडे सुरू करा</translation>
 <translation id="1996162290124031907">पुढील टॅबवर जा</translation>
 <translation id="2010818616644390445">विंडोमधील अंतिम टॅबवर जा</translation>
 <translation id="2040706009561734834">लाँचर उघडा/बंद करा</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">स्क्रीनशॉट घ्या</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">अ‍ॅड्रेस बारवर फोकस करा</translation>
+<translation id="3165428420335997629">नवीन व्हर्च्युअल डेस्क तयार करा</translation>
 <translation id="3256109297135787951">तुमच्या शेल्फवरील आयटमवरील हायलाइट काढून टाका</translation>
 <translation id="3288816184963444640">ही विंडो बंद करा</translation>
 <translation id="3407560819924487926">टास्क मॅनेजर वर आणा</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">सध्याचे पेज शोधा</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> दाबा आणि एखाद्या लिंकवर क्लिक करा</translation>
 <translation id="561814908794220892">वेबपेज एखाद्या नवीन टॅबमध्ये उघडा</translation>
+<translation id="5620219513321115856">सुरू असलेली विंडो डेस्कच्या उजव्या बाजूला हलवा</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> किंवा <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">लिंक टॅबमध्ये उघडा</translation>
 <translation id="5757474750054631686">कीबोर्डचा प्रकाश मंद करा (फक्त बॅकलिट कीबोर्डसाठी)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">स्क्रीन ९० अंशात फिरवा</translation>
 <translation id="8241665785394195545">उजवा कंस</translation>
 <translation id="8264941229485248811">डेव्हलपर टूल परीक्षक दाखवा किंवा लपवा</translation>
+<translation id="8355937569537581904">सध्याचा व्हर्च्युअल डेस्क काढून टाका</translation>
 <translation id="836869401750819675">डाउनलोड पेज उघडा</translation>
 <translation id="8388247778047144397">टॅब स्ट्रिपवरील एका रिक्त भागावर एखादी लिंक ड्रॅग करा</translation>
 <translation id="8389638407792712197">नवीन विंडो उघडा</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">आधीचा शब्द किंवा अक्षर निवडा</translation>
 <translation id="8727232706774971183">तुमच्या सूचना पाहा</translation>
 <translation id="8855885154700222542">क्षेत्रे की</translation>
+<translation id="8881584919399569791">सुरू असलेली विंडो डेस्कच्या डाव्या बाजूला हलवा</translation>
 <translation id="88986195241502842">पृष्ठ खाली</translation>
 <translation id="8924883688469390268">मागील वापरकर्त्यावर स्विच करा</translation>
 <translation id="8977648847395357314">अॅड्रेस बारमध्ये आशय निवडा</translation>
diff --git a/ash/components/strings/ash_components_strings_ms.xtb b/ash/components/strings/ash_components_strings_ms.xtb
index 4a8a095..800a85b3 100644
--- a/ash/components/strings/ash_components_strings_ms.xtb
+++ b/ash/components/strings/ash_components_strings_ms.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ms">
 <translation id="104962181688258143">Buka apl Fail</translation>
+<translation id="1098295134904615027">Aktifkan meja maya di sebelah kanan</translation>
 <translation id="1122869341872663659">Memaparkan <ph name="N" /> hasil carian untuk <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Seret pautan ke bar alamat tab</translation>
 <translation id="1204450209689312104">Buka tetingkap baharu dalam mod inkognito</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Carian</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> atau <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Pergi ke hujung baris</translation>
+<translation id="1499072997694708844">Tutup mana-mana tetingkap cari yang terbuka atau berhenti memuatkan halaman semasa anda</translation>
 <translation id="1510238584712386396">Pelancar</translation>
 <translation id="152892567002884378">Tambah kelantangan</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, kemudian <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Tambahkan www. dan .com pada input dalam bar alamat, kemudian buka halaman</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, kemudian <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> atau <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktifkan meja maya di sebelah kiri</translation>
 <translation id="1996162290124031907">Pergi ke tab seterusnya</translation>
 <translation id="2010818616644390445">Pergi ke tab terakhir dalam tetingkap</translation>
 <translation id="2040706009561734834">Buka/tutup pelancar</translation>
@@ -33,7 +36,7 @@
 <translation id="2185166372312820725">Pergi ke tab sebelumnya</translation>
 <translation id="2194790690264064655">Tekan <ph name="CTRL" /> dan klik pautan</translation>
 <translation id="2246352309084894470">Buka/tutup pelancar skrin penuh</translation>
-<translation id="2354531887393764880">masa</translation>
+<translation id="2354531887393764880">titik</translation>
 <translation id="2382644247745281995">Tidak disokong dengan reka letak papan kekunci semasa</translation>
 <translation id="2397416548179033562">Paparkan menu Chrome</translation>
 <translation id="2424073332829844142">Hidupkan dan matikan Kekunci Caps Lock</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Ambil tangkapan skrin</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Tumpukan bar alamat</translation>
+<translation id="3165428420335997629">Buat meja maya baharu</translation>
 <translation id="3256109297135787951">Buang serlahan daripada item pada rak anda</translation>
 <translation id="3288816184963444640">Tutup tetingkap semasa</translation>
 <translation id="3407560819924487926">Paparkan pengurus tugas</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Cari di halaman semasa</translation>
 <translation id="5563050856984839829">Tekan <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> dan klik pautan</translation>
 <translation id="561814908794220892">Buka halaman web dalam tab baharu</translation>
+<translation id="5620219513321115856">Alih tetingkap aktif ke meja di sebelah kanan</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> atau <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Buka pautan dalam tab</translation>
 <translation id="5757474750054631686">Malapkan papan kekunci (untuk papan kekunci bercahaya belakang sahaja)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Putar skrin 90 darjah</translation>
 <translation id="8241665785394195545">tanda kurung kanan</translation>
 <translation id="8264941229485248811">Tunjukkan atau sembunyikan pemeriksa Alat Pembangun</translation>
+<translation id="8355937569537581904">Alih keluar meja maya semasa</translation>
 <translation id="836869401750819675">Buka halaman Muat Turun</translation>
 <translation id="8388247778047144397">Seret pautan ke bahagian kosong pada jalur tab</translation>
 <translation id="8389638407792712197">Buka tetingkap baharu</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Pilih perkataan atau huruf sebelumnya</translation>
 <translation id="8727232706774971183">Lihat pemberitahuan anda</translation>
 <translation id="8855885154700222542">Kekunci skrin penuh</translation>
+<translation id="8881584919399569791">Alih tetingkap aktif ke meja di sebelah kiri</translation>
 <translation id="88986195241502842">Halaman bawah</translation>
 <translation id="8924883688469390268">Beralih kepada pengguna sebelumnya</translation>
 <translation id="8977648847395357314">Pilih kandungan dalam bar alamat</translation>
diff --git a/ash/components/strings/ash_components_strings_nl.xtb b/ash/components/strings/ash_components_strings_nl.xtb
index b5f7118..1fcfa38 100644
--- a/ash/components/strings/ash_components_strings_nl.xtb
+++ b/ash/components/strings/ash_components_strings_nl.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="nl">
 <translation id="104962181688258143">De app Bestanden openen</translation>
+<translation id="1098295134904615027">Het virtuele bureau aan de rechterkant activeren</translation>
 <translation id="1122869341872663659">Er worden <ph name="N" /> zoekresultaten voor <ph name="QUERY" /> getoond</translation>
 <translation id="1195667586424773550">Sleep de link naar de adresbalk van het tabblad</translation>
 <translation id="1204450209689312104">Een nieuw venster openen in de incognitomodus</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Zoeken</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> of <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Naar het einde van de regel gaan</translation>
+<translation id="1499072997694708844">Geopende zoekvensters sluiten of het laden van de huidige pagina stoppen</translation>
 <translation id="1510238584712386396">Launcher</translation>
 <translation id="152892567002884378">Volume omhoog</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, en dan <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">www. en .com toevoegen aan je invoer in de adresbalk en de pagina vervolgens openen</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, en dan <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> of <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Het virtuele bureau aan de linkerkant activeren</translation>
 <translation id="1996162290124031907">Naar het volgende tabblad gaan</translation>
 <translation id="2010818616644390445">Naar het laatste tabblad in het venster gaan</translation>
 <translation id="2040706009561734834">De launcher openen/sluiten</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Screenshot maken</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Adresbalk activeren</translation>
+<translation id="3165428420335997629">Een nieuw virtueel bureau maken</translation>
 <translation id="3256109297135787951">De markering voor een item op je plank verwijderen</translation>
 <translation id="3288816184963444640">Het huidige venster sluiten</translation>
 <translation id="3407560819924487926">Taakbeheer weergeven</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Zoeken op de huidige pagina</translation>
 <translation id="5563050856984839829">Druk op <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> en klik op een link</translation>
 <translation id="561814908794220892">De webpagina openen op een nieuw tabblad</translation>
+<translation id="5620219513321115856">Actief venster verplaatsen naar het bureau aan de rechterkant</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> of <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">De link openen op het tabblad</translation>
 <translation id="5757474750054631686">Toetsenbord dimmen (alleen voor toetsenborden met achtergrondverlichting)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Scherm 90 graden draaien</translation>
 <translation id="8241665785394195545">rechte haak rechts</translation>
 <translation id="8264941229485248811">De Developer Tools-inspector weergeven of verbergen</translation>
+<translation id="8355937569537581904">Het huidige virtuele bureau verwijderen</translation>
 <translation id="836869401750819675">De pagina Downloads openen</translation>
 <translation id="8388247778047144397">Sleep de link naar een blanco gedeelte van de tabbladstrook</translation>
 <translation id="8389638407792712197">Nieuw venster openen</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Het vorige woord of de vorige letter selecteren</translation>
 <translation id="8727232706774971183">Je meldingen bekijken</translation>
 <translation id="8855885154700222542">Toets voor volledig scherm</translation>
+<translation id="8881584919399569791">Actief venster verplaatsen naar het bureau aan de linkerkant</translation>
 <translation id="88986195241502842">Page Down</translation>
 <translation id="8924883688469390268">Overschakelen naar de vorige gebruiker</translation>
 <translation id="8977648847395357314">De inhoud in de adresbalk selecteren</translation>
diff --git a/ash/components/strings/ash_components_strings_no.xtb b/ash/components/strings/ash_components_strings_no.xtb
index df18746..6487144 100644
--- a/ash/components/strings/ash_components_strings_no.xtb
+++ b/ash/components/strings/ash_components_strings_no.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="no">
 <translation id="104962181688258143">Åpne Filer-appen</translation>
+<translation id="1098295134904615027">Aktivér det virtuelle skrivebordet til høyre</translation>
 <translation id="1122869341872663659">Viser <ph name="N" /> søkeresultater for <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Dra linken til adressefeltet i fanen</translation>
 <translation id="1204450209689312104">Åpne et nytt vindu i inkognitomodus</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Søk</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> eller <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Gå til slutten av linjen</translation>
+<translation id="1499072997694708844">Lukk åpne søkevinduer eller stopp innlasting av den gjeldende siden</translation>
 <translation id="1510238584712386396">Appvelger</translation>
 <translation id="152892567002884378">Volum opp</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> og så <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Legg til www. og .com i det du har skrevet i adressefeltet, og åpne siden</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> og så <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> eller <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktivér det virtuelle skrivebordet til venstre</translation>
 <translation id="1996162290124031907">Gå til neste fane</translation>
 <translation id="2010818616644390445">Gå til den siste fanen i vinduet</translation>
 <translation id="2040706009561734834">Åpne/lukk appoversikten</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Ta skjermdump</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Fokuser adressefelt</translation>
+<translation id="3165428420335997629">Opprett et nytt virtuelt skrivebord</translation>
 <translation id="3256109297135787951">Fjern fremhevingen av et element på hyllen</translation>
 <translation id="3288816184963444640">Lukk det aktive vinduet</translation>
 <translation id="3407560819924487926">Hent frem oppgavebehandlingen</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Søk på den aktive siden</translation>
 <translation id="5563050856984839829">Trykk på <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> og klikk på en link</translation>
 <translation id="561814908794220892">Åpne nettsiden i en ny fane</translation>
+<translation id="5620219513321115856">Flytt det aktive vinduet til skrivebordet til høyre</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> eller <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Åpne linken i fanen</translation>
 <translation id="5757474750054631686">Reduser lysstyrken på tastaturlyset (bare for tastaturer med bakgrunnslys)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Rotér skjermen 90 grader</translation>
 <translation id="8241665785394195545">høyre hakeparentes</translation>
 <translation id="8264941229485248811">Vis eller skjul inspektøren for utviklerverktøy</translation>
+<translation id="8355937569537581904">Fjern det gjeldende virtuelle skrivebordet</translation>
 <translation id="836869401750819675">Åpne nedlastingssiden</translation>
 <translation id="8388247778047144397">Dra linken til et tomt område på faneraden.</translation>
 <translation id="8389638407792712197">Åpne et nytt vindu</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Velg forrige ord eller bokstav</translation>
 <translation id="8727232706774971183">Se varslene dine</translation>
 <translation id="8855885154700222542">Tast for fullskjermmodus</translation>
+<translation id="8881584919399569791">Flytt det aktive vinduet til skrivebordet til venstre</translation>
 <translation id="88986195241502842">Ned én side</translation>
 <translation id="8924883688469390268">Bytt til den forrige brukeren</translation>
 <translation id="8977648847395357314">Merk innholdet i adressefeltet</translation>
diff --git a/ash/components/strings/ash_components_strings_pl.xtb b/ash/components/strings/ash_components_strings_pl.xtb
index 70ba7e6..b1fef3ee 100644
--- a/ash/components/strings/ash_components_strings_pl.xtb
+++ b/ash/components/strings/ash_components_strings_pl.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="pl">
 <translation id="104962181688258143">Otwórz aplikację Pliki</translation>
+<translation id="1098295134904615027">Aktywuj wirtualne biurko po prawej</translation>
 <translation id="1122869341872663659">Wyświetlam wyniki wyszukiwania (<ph name="N" />) dla: <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Przeciągnij link na pasek adresu na karcie</translation>
 <translation id="1204450209689312104">Otwórz nowe okno w trybie incognito</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Szukaj</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> lub <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Przejdź na koniec wiersza</translation>
+<translation id="1499072997694708844">Zamknij wszystkie otwarte okna lub zatrzymaj wczytywanie bieżącej strony</translation>
 <translation id="1510238584712386396">Menu z aplikacjami</translation>
 <translation id="152892567002884378">Zwiększ głośność</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, a następnie <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Dodaj www. i .com do ciągu wpisanego w pasku adresu i otwórz stronę</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, a następnie <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> lub <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktywuj wirtualne biurko po lewej</translation>
 <translation id="1996162290124031907">Przejdź do następnej karty</translation>
 <translation id="2010818616644390445">Przejdź do ostatniej karty w oknie</translation>
 <translation id="2040706009561734834">Otwórz/zamknij menu z aplikacjami</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Zapisz zrzut ekranu</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Zaznacz pasek adresu</translation>
+<translation id="3165428420335997629">Utwórz nowe wirtualne biurko</translation>
 <translation id="3256109297135787951">Anuluj zaznaczenia elementu na półce</translation>
 <translation id="3288816184963444640">Zamknij bieżące okno</translation>
 <translation id="3407560819924487926">Otwórz menedżera zadań</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Przeszukaj bieżącą stronę</translation>
 <translation id="5563050856984839829">Naciśnij <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> i kliknij link</translation>
 <translation id="561814908794220892">Otwórz stronę w nowej karcie</translation>
+<translation id="5620219513321115856">Przenieś aktywne okno na biurko po prawej</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> lub <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Otwórz link w tej karcie</translation>
 <translation id="5757474750054631686">Przyciemnij klawiaturę (dotyczy tylko klawiatur podświetlanych)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Obróć ekran o 90 stopni</translation>
 <translation id="8241665785394195545">prawy nawias</translation>
 <translation id="8264941229485248811">Pokaż lub ukryj inspektora z Narzędzi dla deweloperów</translation>
+<translation id="8355937569537581904">Usuń bieżące wirtualne biurko</translation>
 <translation id="836869401750819675">Otwórz stronę Pobrane pliki</translation>
 <translation id="8388247778047144397">Przeciągnij link na pusty obszar na pasku kart</translation>
 <translation id="8389638407792712197">Otwórz nowe okno</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Zaznacz poprzednie słowo lub znak</translation>
 <translation id="8727232706774971183">Zobacz powiadomienia</translation>
 <translation id="8855885154700222542">Klawisz trybu pełnoekranowego</translation>
+<translation id="8881584919399569791">Przenieś aktywne okno na biurko po lewej</translation>
 <translation id="88986195241502842">Strona w dół</translation>
 <translation id="8924883688469390268">Przełącz do poprzedniego użytkownika</translation>
 <translation id="8977648847395357314">Zaznacz zawartość paska adresu</translation>
diff --git a/ash/components/strings/ash_components_strings_pt-BR.xtb b/ash/components/strings/ash_components_strings_pt-BR.xtb
index f31917b..5d5dd92 100644
--- a/ash/components/strings/ash_components_strings_pt-BR.xtb
+++ b/ash/components/strings/ash_components_strings_pt-BR.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="pt-BR">
 <translation id="104962181688258143">Abrir o app Arquivos</translation>
+<translation id="1098295134904615027">Ativar a área de trabalho à direita</translation>
 <translation id="1122869341872663659">Exibindo <ph name="N" /> resultados da pesquisa para <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Arrastar o link até a barra de endereço da guia</translation>
 <translation id="1204450209689312104">Abrir uma nova janela no modo de navegação anônima</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Pesquisar</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> ou <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Ir para o fim da linha</translation>
+<translation id="1499072997694708844">Fechar janelas abertas ou interromper carregamento da página atual</translation>
 <translation id="1510238584712386396">Iniciador</translation>
 <translation id="152892567002884378">Aumentar volume</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> e depois <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Adicionar www. e .com à entrada na barra de endereço e depois abrir a página</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> e depois <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> ou <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Ativar a área de trabalho à esquerda</translation>
 <translation id="1996162290124031907">Ir para a próxima guia</translation>
 <translation id="2010818616644390445">Ir para a última guia da janela</translation>
 <translation id="2040706009561734834">Abrir/fechar o acesso rápido</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Faça uma captura de tela</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Foco na barra de endereço</translation>
+<translation id="3165428420335997629">Criar uma nova área de trabalho virtual</translation>
 <translation id="3256109297135787951">Remover o destaque de um item na estante</translation>
 <translation id="3288816184963444640">Fechar a janela atual</translation>
 <translation id="3407560819924487926">Abrir o gerenciador de tarefas</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Pesquisar na página atual</translation>
 <translation id="5563050856984839829">Pressione <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> e clique em um link</translation>
 <translation id="561814908794220892">Abrir a página da Web em uma nova guia</translation>
+<translation id="5620219513321115856">Mover a janela ativa para a área de trabalho à direita</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> ou <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Abrir o link na guia</translation>
 <translation id="5757474750054631686">Escurecer teclado (apenas para teclados retroiluminados)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Girar a tela em 90 graus</translation>
 <translation id="8241665785394195545">colchete direito</translation>
 <translation id="8264941229485248811">Mostrar ou ocultar o inspetor de Ferramentas para Desenvolvedores</translation>
+<translation id="8355937569537581904">Remover área de trabalho virtual atual</translation>
 <translation id="836869401750819675">Abrir Downloads</translation>
 <translation id="8388247778047144397">Arrastar o link até uma área em branco na barra de guias</translation>
 <translation id="8389638407792712197">Abrir nova janela</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Selecionar palavra ou letra anterior</translation>
 <translation id="8727232706774971183">Ver suas notificações</translation>
 <translation id="8855885154700222542">Tecla de tela cheia</translation>
+<translation id="8881584919399569791">Mover a janela ativa para a área de trabalho à esquerda</translation>
 <translation id="88986195241502842">Página para baixo</translation>
 <translation id="8924883688469390268">Alternar para o usuário anterior</translation>
 <translation id="8977648847395357314">Selecionar o conteúdo na barra de endereço</translation>
diff --git a/ash/components/strings/ash_components_strings_pt-PT.xtb b/ash/components/strings/ash_components_strings_pt-PT.xtb
index 38b8aaec..91651e3 100644
--- a/ash/components/strings/ash_components_strings_pt-PT.xtb
+++ b/ash/components/strings/ash_components_strings_pt-PT.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="pt-PT">
 <translation id="104962181688258143">Abrir a aplicação Ficheiros</translation>
+<translation id="1098295134904615027">Ative o espaço de trabalho virtual à direita.</translation>
 <translation id="1122869341872663659">A apresentar <ph name="N" /> resultados da pesquisa para <ph name="QUERY" />.</translation>
 <translation id="1195667586424773550">Arraste o link para a barra de endereço do separador.</translation>
 <translation id="1204450209689312104">Abrir uma nova janela em modo de navegação anónima</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Pesquisar</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> ou <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" />.</translation>
 <translation id="1477442857810932985">Ir para o fim da linha</translation>
+<translation id="1499072997694708844">Feche todas as janelas abertas ou pare o carregamento da página atual.</translation>
 <translation id="1510238584712386396">Iniciador</translation>
 <translation id="152892567002884378">Aumentar o volume</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, em seguida, <ph name="ESC" />.</translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Adicionar www. e .com à informação introduzida na barra de endereço e, em seguida, abrir a página</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> e, em seguida, <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> ou <ph name="LEFT" />.</translation>
+<translation id="1929866390202038233">Ative o espaço de trabalho virtual à esquerda.</translation>
 <translation id="1996162290124031907">Aceder ao separador seguinte</translation>
 <translation id="2010818616644390445">Ir para o último separador na janela</translation>
 <translation id="2040706009561734834">Abrir/fechar o iniciador</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Criar captura de ecrã</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Focar barra de endereço</translation>
+<translation id="3165428420335997629">Crie um novo espaço de trabalho virtual.</translation>
 <translation id="3256109297135787951">Remover o realce de um item na prateleira</translation>
 <translation id="3288816184963444640">Fechar a janela atual</translation>
 <translation id="3407560819924487926">Abrir o Gestor de tarefas</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Pesquisar na página atual</translation>
 <translation id="5563050856984839829">Prima <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> e clique num link.</translation>
 <translation id="561814908794220892">Abrir a página Web num novo separador</translation>
+<translation id="5620219513321115856">Mova a janela ativa para o espaço de trabalho à direita.</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> ou <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" />.</translation>
 <translation id="5757111373163288447">Abrir o link no separador</translation>
 <translation id="5757474750054631686">Diminuir o brilho do teclado (apenas para teclados retroiluminados)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Rodar o ecrã 90 graus</translation>
 <translation id="8241665785394195545">parêntese reto direito</translation>
 <translation id="8264941229485248811">Mostrar ou ocultar o inspetor das Ferramentas do programador</translation>
+<translation id="8355937569537581904">Remova o espaço de trabalho virtual atual.</translation>
 <translation id="836869401750819675">Abrir a página Transferências</translation>
 <translation id="8388247778047144397">Arraste o link para uma área em branco na Faixa de separadores.</translation>
 <translation id="8389638407792712197">Abrir nova janela</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Selecionar a palavra ou letra anterior</translation>
 <translation id="8727232706774971183">Ver as suas notificações</translation>
 <translation id="8855885154700222542">Tecla de ecrã inteiro</translation>
+<translation id="8881584919399569791">Mova a janela ativa para o espaço de trabalho à esquerda.</translation>
 <translation id="88986195241502842">Página para baixo</translation>
 <translation id="8924883688469390268">Mudar para o utilizador anterior</translation>
 <translation id="8977648847395357314">Selecionar o conteúdo na barra de endereço</translation>
diff --git a/ash/components/strings/ash_components_strings_ro.xtb b/ash/components/strings/ash_components_strings_ro.xtb
index 93d2033..667cf213 100644
--- a/ash/components/strings/ash_components_strings_ro.xtb
+++ b/ash/components/strings/ash_components_strings_ro.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ro">
 <translation id="104962181688258143">Deschide aplicația Fișiere</translation>
+<translation id="1098295134904615027">Activează desktopul virtual din dreapta</translation>
 <translation id="1122869341872663659">Se afișează <ph name="N" /> rezultate ale căutării pentru <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Trage linkul în bara de adrese a filei</translation>
 <translation id="1204450209689312104">Deschide o fereastră nouă în modul incognito</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Caută</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> sau <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Treci la sfârșitul rândului</translation>
+<translation id="1499072997694708844">Închide orice fereastră de căutare deschisă sau oprește încărcarea paginii actuale</translation>
 <translation id="1510238584712386396">Lansator</translation>
 <translation id="152892567002884378">Mărește volumul</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, apoi <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Adăugă www. și .com la ce ai introdus în bara de adrese, apoi deschide pagina</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, apoi <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> sau <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Activează desktopul virtual din stânga</translation>
 <translation id="1996162290124031907">Accesează fila următoare</translation>
 <translation id="2010818616644390445">Accesează ultima filă din fereastră</translation>
 <translation id="2040706009561734834">Deschide/închide lansatorul</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Realizează o captură de ecran</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Focalizează pe bara de adrese</translation>
+<translation id="3165428420335997629">Creează un nou desktop virtual</translation>
 <translation id="3256109297135787951">Elimină evidențierea de pe un element de pe raft</translation>
 <translation id="3288816184963444640">Închide fereastra curentă</translation>
 <translation id="3407560819924487926">Afișează managerul de activități</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Caută pe pagina curentă</translation>
 <translation id="5563050856984839829">Apasă pe <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> și dă clic pe un link</translation>
 <translation id="561814908794220892">Deschide pagina web într-o filă nouă</translation>
+<translation id="5620219513321115856">Mută fereastra activă în dreapta pe desktop</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> sau <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Deschide linkul în fila respectivă</translation>
 <translation id="5757474750054631686">Redu luminozitatea tastaturii (numai pentru tastaturi cu iluminare)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Rotește ecranul la 90 de grade</translation>
 <translation id="8241665785394195545">paranteză de dreapta</translation>
 <translation id="8264941229485248811">Afișează sau ascunde inspectorul Developer Tools</translation>
+<translation id="8355937569537581904">Elimină desktopul virtual actual</translation>
 <translation id="836869401750819675">Deschide pagina Descărcări</translation>
 <translation id="8388247778047144397">Trage linkul într-o zonă liberă a barei de file</translation>
 <translation id="8389638407792712197">Deschide o fereastră nouă</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Selectează cuvântul anterior sau litera anterioară</translation>
 <translation id="8727232706774971183">Vezi notificările</translation>
 <translation id="8855885154700222542">Tasta pentru ecran complet</translation>
+<translation id="8881584919399569791">Mută fereastra activă în stânga pe desktop</translation>
 <translation id="88986195241502842">O pagină mai jos</translation>
 <translation id="8924883688469390268">Comută la utilizatorul anterior</translation>
 <translation id="8977648847395357314">Selectează conținutul din bara de adrese</translation>
diff --git a/ash/components/strings/ash_components_strings_ru.xtb b/ash/components/strings/ash_components_strings_ru.xtb
index 9408677..0e67cb364 100644
--- a/ash/components/strings/ash_components_strings_ru.xtb
+++ b/ash/components/strings/ash_components_strings_ru.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ru">
 <translation id="104962181688258143">Открыть приложение "Файлы"</translation>
+<translation id="1098295134904615027">Включить виртуальный рабочий стол справа</translation>
 <translation id="1122869341872663659">Результатов поиска по запросу "<ph name="QUERY" />": <ph name="N" /></translation>
 <translation id="1195667586424773550">Перетащить ссылку в адресную строку вкладки</translation>
 <translation id="1204450209689312104">Открыть новое окно в режиме инкогнито</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Поиск</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> или <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Перейти к концу строки</translation>
+<translation id="1499072997694708844">Закрыть любое поисковое окно или остановить загрузку текущей страницы</translation>
 <translation id="1510238584712386396">Панель запуска</translation>
 <translation id="152892567002884378">Увеличить громкость</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, затем <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Добавить www. и .com к тексту в адресной строке и открыть веб-страницу</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, затем <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> или <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Включить виртуальный рабочий стол слева</translation>
 <translation id="1996162290124031907">Перейти на следующую вкладку</translation>
 <translation id="2010818616644390445">Перейти на последнюю вкладку в окне</translation>
 <translation id="2040706009561734834">Открыть или закрыть панель запуска</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Скриншот</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Курсор в адресную строку</translation>
+<translation id="3165428420335997629">Создать виртуальный рабочий стол</translation>
 <translation id="3256109297135787951">Снять выделение с объекта на панели запуска.</translation>
 <translation id="3288816184963444640">Закрыть активное окно</translation>
 <translation id="3407560819924487926">Открыть диспетчер задач</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Искать на странице</translation>
 <translation id="5563050856984839829">Нажать <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> и перейти по ссылке</translation>
 <translation id="561814908794220892">Открыть веб-страницу в новой вкладке</translation>
+<translation id="5620219513321115856">Переместить активное окно на рабочий стол справа</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> или <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Открыть ссылку в этой вкладке</translation>
 <translation id="5757474750054631686">Приглушить подсветку клавиатуры (для клавиатур с подсветкой)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Повернуть экран на 90 градусов</translation>
 <translation id="8241665785394195545">правая скобка</translation>
 <translation id="8264941229485248811">Показать или скрыть инспектор инструментов разработчика</translation>
+<translation id="8355937569537581904">Удалить текущий виртуальный рабочий стол</translation>
 <translation id="836869401750819675">Открыть страницу "Скачанные файлы"</translation>
 <translation id="8388247778047144397">Перетащить ссылку в пустую область на панели вкладок</translation>
 <translation id="8389638407792712197">Открыть новое окно</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Выбрать предыдущее слово или букву</translation>
 <translation id="8727232706774971183">Посмотреть уведомления</translation>
 <translation id="8855885154700222542">Клавиша полноэкранного режима</translation>
+<translation id="8881584919399569791">Переместить активное окно на рабочий стол слева</translation>
 <translation id="88986195241502842">На страницу вниз</translation>
 <translation id="8924883688469390268">Переключиться на предыдущего пользователя</translation>
 <translation id="8977648847395357314">Выбрать текст в адресной строке</translation>
diff --git a/ash/components/strings/ash_components_strings_sk.xtb b/ash/components/strings/ash_components_strings_sk.xtb
index 2e0e2ac..95b83a8 100644
--- a/ash/components/strings/ash_components_strings_sk.xtb
+++ b/ash/components/strings/ash_components_strings_sk.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="sk">
 <translation id="104962181688258143">Otvorenie aplikácie Súbory</translation>
+<translation id="1098295134904615027">Aktivovať virtuálne pracovné prostredie napravo</translation>
 <translation id="1122869341872663659">Zobrazujú sa výsledky vyhľadávania (<ph name="N" />) na tému <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Presunutie odkazu na panel s adresou na karte</translation>
 <translation id="1204450209689312104">Otvorenie nového okna v režime inkognito</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Vyhľadávanie</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> alebo <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Prejsť na koniec riadka</translation>
+<translation id="1499072997694708844">Zatvoriť všetky otvorené okná vyhľadávania alebo zastaviť načítavanie aktuálnej stránky</translation>
 <translation id="1510238584712386396">Spúšťač</translation>
 <translation id="152892567002884378">Zvýšenie hlasitosti</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, potom <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Pridanie predpony www. a prípony .com k zadanému vstupu v paneli s adresou a následné otvorenie stránky</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, potom <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> alebo <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktivovať virtuálne pracovné prostredie naľavo</translation>
 <translation id="1996162290124031907">Prechod na ďalšiu kartu</translation>
 <translation id="2010818616644390445">Prechod na poslednú kartu v okne</translation>
 <translation id="2040706009561734834">Otvoriť/zavrieť spúšťač</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Nasnímať obrazovku</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Zamerať na panel s adresou</translation>
+<translation id="3165428420335997629">Vytvoriť nové virtuálne pracovné prostredie</translation>
 <translation id="3256109297135787951">Odstránenie zvýraznenia položky na poličke</translation>
 <translation id="3288816184963444640">Zavretie aktuálneho okna</translation>
 <translation id="3407560819924487926">Zobrazenie správcu úloh</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Hľadanie na aktuálnej stránke</translation>
 <translation id="5563050856984839829">Stlačenie klávesa <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> a kliknutie na odkaz</translation>
 <translation id="561814908794220892">Otvorenie webovej stránky na novej karte</translation>
+<translation id="5620219513321115856">Presunúť aktívne okno do pracovného prostredia vpravo</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> alebo <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Otvorenie odkazu na danej karte</translation>
 <translation id="5757474750054631686">Zníženie jasu klávesnice (iba v prípade podsvietených klávesníc)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Otočenie obrazovky o 90 stupňov</translation>
 <translation id="8241665785394195545">pravá hranatá zátvorka</translation>
 <translation id="8264941229485248811">Zobrazenie alebo skrytie kontroly s nástrojmi pre vývojárov</translation>
+<translation id="8355937569537581904">Odstrániť aktuálne virtuálne pracovné prostredie</translation>
 <translation id="836869401750819675">Otvorenie stránky Stiahnuté súbory</translation>
 <translation id="8388247778047144397">Presunutie odkazu do prázdnej oblasti na paneli kariet</translation>
 <translation id="8389638407792712197">Otvorenie nového okna</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Výber predchádzajúceho slova alebo písmena</translation>
 <translation id="8727232706774971183">Zobrazenie upozornení</translation>
 <translation id="8855885154700222542">Kláves celej obrazovky</translation>
+<translation id="8881584919399569791">Presunúť aktívne okno do pracovného prostredia vľavo</translation>
 <translation id="88986195241502842">Posunúť stránku nadol</translation>
 <translation id="8924883688469390268">Prepnutie na predchádzajúceho používateľa</translation>
 <translation id="8977648847395357314">Výber obsahu v paneli s adresou</translation>
diff --git a/ash/components/strings/ash_components_strings_sl.xtb b/ash/components/strings/ash_components_strings_sl.xtb
index 5c74cf6..67937aa 100644
--- a/ash/components/strings/ash_components_strings_sl.xtb
+++ b/ash/components/strings/ash_components_strings_sl.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="sl">
 <translation id="104962181688258143">Odpiranje aplikacije Datoteke</translation>
+<translation id="1098295134904615027">Aktiviranje navideznega namizja na desni</translation>
 <translation id="1122869341872663659">Prikaz toliko rezultatov iskanja za poizvedbo <ph name="QUERY" />: <ph name="N" /></translation>
 <translation id="1195667586424773550">Povlecite povezavo v naslovno vrstico zavihka</translation>
 <translation id="1204450209689312104">Odpiranje novega okna v načinu brez beleženja zgodovine</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Išči</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /> <ph name="SEPARATOR1" /> <ph name="SHIFT1" /> <ph name="SEPARATOR2" /> <ph name="G" /> ali <ph name="SHIFT2" /> <ph name="SEPARATOR3" /> <ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Pomik na konec vrstice</translation>
+<translation id="1499072997694708844">Zapiranje odprtih oken za iskanje ali ustavitev nalaganja trenutne strani</translation>
 <translation id="1510238584712386396">Zaganjalnik</translation>
 <translation id="152892567002884378">Povečanje glasnosti</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /> <ph name="SEPARATOR1" /> <ph name="ALT" /> <ph name="SEPARATOR2" /> <ph name="L" />, nato <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /> <ph name="SEPARATOR1" /> <ph name="MODIFIER2" /> <ph name="SEPARATOR2" /> <ph name="KEY" /></translation>
 <translation id="1733525068429116555">Dodajanje www. in .com vnosu v naslovni vrstici, nato pa odpiranje strani</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /> <ph name="SEPARATOR1" /> <ph name="ALT" /> <ph name="SEPARATOR2" /> <ph name="L" />, nato <ph name="SHIFT2" /> <ph name="SEPARATOR3" /> <ph name="TAB" /> ali <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktiviranje navideznega namizja na levi</translation>
 <translation id="1996162290124031907">Premik na naslednji zavihek</translation>
 <translation id="2010818616644390445">Premik na zadnji zavihek v oknu</translation>
 <translation id="2040706009561734834">Odpiranje/zapiranje zaganjalnika</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Izdelava posnetka zaslona</translation>
 <translation id="3126026824346185272">CTRL</translation>
 <translation id="3140353188828248647">Preklopi na naslovno vrstico</translation>
+<translation id="3165428420335997629">Ustvarjanje novega navideznega namizja</translation>
 <translation id="3256109297135787951">Opustitev označevanja elementa na polici</translation>
 <translation id="3288816184963444640">Zapiranje trenutnega okna</translation>
 <translation id="3407560819924487926">Prikazovanje upravitelja opravil</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Iskanje po trenutni strani</translation>
 <translation id="5563050856984839829">Pritisnite <ph name="CTRL" /> <ph name="SEPARATOR" /> <ph name="SHIFT" /> in kliknite povezavo</translation>
 <translation id="561814908794220892">Odpiranje spletne strani na novem zavihku</translation>
+<translation id="5620219513321115856">Premik aktivnega okna na namizje na desni</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /> <ph name="SEPARATOR1" /> <ph name="L" /> ali <ph name="ALT" /> <ph name="SEPARATOR2" /> <ph name="D" /></translation>
 <translation id="5757111373163288447">Odpiranje povezave na zavihku</translation>
 <translation id="5757474750054631686">Zatemnitev tipkovnice (samo za osvetljene tipkovnice)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Sukanje zaslona za 90 stopinj</translation>
 <translation id="8241665785394195545">zaklepaj</translation>
 <translation id="8264941229485248811">Prikaz ali skrivanje nadzornika orodij za razvijalce</translation>
+<translation id="8355937569537581904">Odstranitev trenutnega navideznega namizja</translation>
 <translation id="836869401750819675">Odpiranje strani s prenosi</translation>
 <translation id="8388247778047144397">Povlecite povezavo na prazno območje na traku z zavihki</translation>
 <translation id="8389638407792712197">Odpiranje novega okna</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Izbira prejšnje besede ali črke</translation>
 <translation id="8727232706774971183">Ogled obvestil</translation>
 <translation id="8855885154700222542">Tipka za celozaslonski način</translation>
+<translation id="8881584919399569791">Premik aktivnega okna na namizje na levi</translation>
 <translation id="88986195241502842">Page Down</translation>
 <translation id="8924883688469390268">Preklop na prejšnjega uporabnika</translation>
 <translation id="8977648847395357314">Izbira vsebine v naslovni vrstici</translation>
diff --git a/ash/components/strings/ash_components_strings_sr.xtb b/ash/components/strings/ash_components_strings_sr.xtb
index 6351e47d..551a4fa1 100644
--- a/ash/components/strings/ash_components_strings_sr.xtb
+++ b/ash/components/strings/ash_components_strings_sr.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="sr">
 <translation id="104962181688258143">Отворите апликацију Датотеке</translation>
+<translation id="1098295134904615027">Активирајте виртуелну радну површину на десној страни</translation>
 <translation id="1122869341872663659">Приказује резултате претраге (<ph name="N" />) за упит <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Превуците линк у траку за адресу картице</translation>
 <translation id="1204450209689312104">Отворите нови прозор у режиму без архивирања</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Претражи</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> или <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Идите на крај реда</translation>
+<translation id="1499072997694708844">Затворите све прозоре за тражење или зауставите учитавање актуелне странице</translation>
 <translation id="1510238584712386396">Покретач</translation>
 <translation id="152892567002884378">Појачајте звук</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, па <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Додајте елементе www. и .com уносу у траци за адресу, па отворите страницу</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, па <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> или <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Активирајте виртуелну радну површину на левој страни</translation>
 <translation id="1996162290124031907">Идите на следећу картицу</translation>
 <translation id="2010818616644390445">Идите на последњу картицу у прозору</translation>
 <translation id="2040706009561734834">Отворите/затворите покретач</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Сними екран</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Фокусирање траке за адресу</translation>
+<translation id="3165428420335997629">Направите нову вуртуелну радну површину</translation>
 <translation id="3256109297135787951">Уклоните истицање са ставке на полици</translation>
 <translation id="3288816184963444640">Затворите тренутно отворени прозор</translation>
 <translation id="3407560819924487926">Покрените менаџер задатка</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Претражите тренутну страницу</translation>
 <translation id="5563050856984839829">Притисните <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> и кликните на линк</translation>
 <translation id="561814908794220892">Отворите веб-страницу на новој картици</translation>
+<translation id="5620219513321115856">Преместите активни прозор на радну површину на десној страни</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> или <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Отворите линк на картици</translation>
 <translation id="5757474750054631686">Смањите осветљеност тастатуре (само за тастатуре са позадинским осветљењем)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Ротирајте екран за 90 степени</translation>
 <translation id="8241665785394195545">десна заграда</translation>
 <translation id="8264941229485248811">Прикажите или сакријте инспектор Алатке за програмере</translation>
+<translation id="8355937569537581904">Уклоните актуелну виртуелну радну површину</translation>
 <translation id="836869401750819675">Отворите страницу Преузимања</translation>
 <translation id="8388247778047144397">Превуците линк у празну област на траци са картицама</translation>
 <translation id="8389638407792712197">Отворите нови прозор</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Изаберите претходну реч или слово</translation>
 <translation id="8727232706774971183">Прегледајте обавештења</translation>
 <translation id="8855885154700222542">Тастер за цео екран</translation>
+<translation id="8881584919399569791">Преместите активни прозор на радну површину на левој страни</translation>
 <translation id="88986195241502842">Страница надоле</translation>
 <translation id="8924883688469390268">Пређите на претходног корисника</translation>
 <translation id="8977648847395357314">Изаберите садржај из траке за адресу</translation>
diff --git a/ash/components/strings/ash_components_strings_sv.xtb b/ash/components/strings/ash_components_strings_sv.xtb
index e9e456e8..c16d756 100644
--- a/ash/components/strings/ash_components_strings_sv.xtb
+++ b/ash/components/strings/ash_components_strings_sv.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="sv">
 <translation id="104962181688258143">Öppna appen Filer</translation>
+<translation id="1098295134904615027">Aktivera det virtuella skrivbordet till höger</translation>
 <translation id="1122869341872663659">Visar <ph name="N" /> sökresultat för <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Dra länken till flikens adressfält</translation>
 <translation id="1204450209689312104">Öppna ett nytt fönster i inkognitoläge</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Sök</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> eller <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Gå till slutet av raden</translation>
+<translation id="1499072997694708844">Stäng öppna sökfönster eller avbryt inläsningen av den aktuella sidan</translation>
 <translation id="1510238584712386396">Startprogram</translation>
 <translation id="152892567002884378">Höj volymen</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, sedan <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Lägg till www. och .com före och efter det du skriver i adressfältet och öppna sedan sidan</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, sedan <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> eller <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Aktivera det virtuella skrivbordet till vänster</translation>
 <translation id="1996162290124031907">Öppna nästa flik</translation>
 <translation id="2010818616644390445">Öppna den sista fliken i fönstret</translation>
 <translation id="2040706009561734834">Öppna eller stäng översikten</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Ta skärmbild</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Fokusera på adressfältet</translation>
+<translation id="3165428420335997629">Skapa ett nytt virtuellt skrivbord</translation>
 <translation id="3256109297135787951">Ta bort markeringen från ett objekt på hyllan</translation>
 <translation id="3288816184963444640">Stäng aktuellt fönster</translation>
 <translation id="3407560819924487926">Öppna aktivitetshanteraren</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Sök på den aktuella sidan</translation>
 <translation id="5563050856984839829">Tryck på <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> och klicka på en länk</translation>
 <translation id="561814908794220892">Öppna webbsidan på en ny flik</translation>
+<translation id="5620219513321115856">Flytta det aktiva fönstret till skrivbordet till höger</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> eller <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Öppna länken på fliken</translation>
 <translation id="5757474750054631686">Svagare belysning (endast tangentbord med belysning underifrån)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Rotera skärmen 90 grader</translation>
 <translation id="8241665785394195545">höger parentes</translation>
 <translation id="8264941229485248811">Visa eller dölj Utvecklarverktyg-inspektören</translation>
+<translation id="8355937569537581904">Ta bort det aktuella virtuella skrivbordet</translation>
 <translation id="836869401750819675">Öppna sidan Nedladdningar</translation>
 <translation id="8388247778047144397">Dra länken till ett tomt område i flikhuvudet</translation>
 <translation id="8389638407792712197">Öppna nytt fönster</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Markera föregående ord eller bokstav</translation>
 <translation id="8727232706774971183">Visa dina aviseringar</translation>
 <translation id="8855885154700222542">Tangent för helskärm</translation>
+<translation id="8881584919399569791">Flytta det aktiva fönstret till skrivbordet till vänster</translation>
 <translation id="88986195241502842">Nedåt en sida</translation>
 <translation id="8924883688469390268">Växla till föregående användare</translation>
 <translation id="8977648847395357314">Markera texten i adressfältet</translation>
diff --git a/ash/components/strings/ash_components_strings_sw.xtb b/ash/components/strings/ash_components_strings_sw.xtb
index 5d857ca..98cc7cd2 100644
--- a/ash/components/strings/ash_components_strings_sw.xtb
+++ b/ash/components/strings/ash_components_strings_sw.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="sw">
 <translation id="104962181688258143">Fungua programu ya Faili</translation>
+<translation id="1098295134904615027">Washa kiolesura cha kulia</translation>
 <translation id="1122869341872663659">Inaonyesha matokeo <ph name="N" /> ya utafutaji wa <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Buruta kiungo hadi kwenye sehemu ya anwani katika kichupo</translation>
 <translation id="1204450209689312104">Fungua dirisha jipya katika hali fiche</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Tafuta</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> au <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Nenda kwenye mwisho wa mstari</translation>
+<translation id="1499072997694708844">Funga dirisha lolote la kutafutia au acha kupakia ukurasa wako wa sasa</translation>
 <translation id="1510238584712386396">Kizindua</translation>
 <translation id="152892567002884378">Ongeza sauti</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, kisha <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Ongeza www. na .com kwenye maandishi uliyoandika katika sehemu ya anwani, kisha ufungue ukurasa</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, kisha <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> au <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Washa kiolesura cha kushoto</translation>
 <translation id="1996162290124031907">Nenda kwenye kichupo kinachofuata</translation>
 <translation id="2010818616644390445">Nenda kwenye kichupo cha mwisho katika dirisha</translation>
 <translation id="2040706009561734834">Fungua au ufunge kifungua programu</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Piga picha ya skrini</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Lenga upau anwani</translation>
+<translation id="3165428420335997629">Weka kiolesura kipya</translation>
 <translation id="3256109297135787951">Acha kuangazia kipengee kwenye rafu yako</translation>
 <translation id="3288816184963444640">Funga dirisha la sasa</translation>
 <translation id="3407560819924487926">Fungua kidhibiti cha shughuli kwenye Chrome</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Tafuta kwenye ukurasa wa sasa</translation>
 <translation id="5563050856984839829">Bonyeza <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> na ubofye kiungo</translation>
 <translation id="561814908794220892">Fungua ukurasa wa wavuti katika kichupo kipya</translation>
+<translation id="5620219513321115856">Sogeza dirisha linalotumika kwenye kiolesura cha kulia</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> au <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Fungua kiungo katika kichupo</translation>
 <translation id="5757474750054631686">Punguza mwangaza wa kibodi (katika kibodi zenye mwanga wa nyuma pekee)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Zungusha skrini kwa digrii 90</translation>
 <translation id="8241665785394195545">bano la kulia</translation>
 <translation id="8264941229485248811">Onyesha au ufiche kikaguzi cha Zana za Wasanidi Programu</translation>
+<translation id="8355937569537581904">Ondoa kiolesura cha sasa</translation>
 <translation id="836869401750819675">Fungua ukurasa wa Vipakuliwa</translation>
 <translation id="8388247778047144397">Buruta kiungo kwenye sehemu tupu katika ukanda wa vichupo</translation>
 <translation id="8389638407792712197">Fungua dirisha jipya</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Chagua neno au herufi ya awali</translation>
 <translation id="8727232706774971183">Angalia arifa zako</translation>
 <translation id="8855885154700222542">Kitufe cha skrini nzima</translation>
+<translation id="8881584919399569791">Sogeza dirisha linalotumika kwenye kiolesura cha kushoto</translation>
 <translation id="88986195241502842">Ukurasa mmoja chini</translation>
 <translation id="8924883688469390268">Nenda kwenye mtumiaji wa awali</translation>
 <translation id="8977648847395357314">Chagua maudhui katika sehemu ya anwani</translation>
diff --git a/ash/components/strings/ash_components_strings_ta.xtb b/ash/components/strings/ash_components_strings_ta.xtb
index f6a594e..9ed082f82 100644
--- a/ash/components/strings/ash_components_strings_ta.xtb
+++ b/ash/components/strings/ash_components_strings_ta.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ta">
 <translation id="104962181688258143">கோப்புகள் பயன்பாட்டைத் திறக்கும்</translation>
+<translation id="1098295134904615027">விர்ச்சுவல் டெஸ்க்கை வலதுபுறத்தில் இயக்கும்</translation>
 <translation id="1122869341872663659"><ph name="QUERY" />க்கான <ph name="N" /> தேடல் முடிவுகளைக் காட்டுகிறது</translation>
 <translation id="1195667586424773550">தாவலின் முகவரிப் பட்டிக்கு இணைப்பை இழுக்கவும்</translation>
 <translation id="1204450209689312104">புதிய சாளரத்தை மறைநிலையில் திறக்கும்</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">தேடல்</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> அல்லது <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">வரியின் இறுதிக்குச் செல்லும்</translation>
+<translation id="1499072997694708844">தேடல் சாளரம் திறந்திருந்தால் அதை மூடலாம் அல்லது தற்போதைய பக்கம் காட்டப்படுவதை நிறுத்தலாம்</translation>
 <translation id="1510238584712386396">துவக்கி</translation>
 <translation id="152892567002884378">ஒலியளவை அதிகரிக்கும்</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, பின்னர் <ph name="ESC" />ஐ அழுத்தவும்</translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">முகவரிப் பட்டியில் உங்கள் உள்ளீட்டில் www., .com ஆகியவற்றைச் சேர்த்து, பின்னர் பக்கத்தைத் திறக்கும்</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, பின்னர் <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> அல்லது <ph name="LEFT" />ஐ அழுத்தவும்</translation>
+<translation id="1929866390202038233">விர்ச்சுவல் டெஸ்க்கை இடதுபுறத்தில் இயக்கும்</translation>
 <translation id="1996162290124031907">அடுத்த தாவலுக்குச் செல்லும்</translation>
 <translation id="2010818616644390445">சாளரத்தில் கடைசித் தாவலுக்குச் செல்லும்</translation>
 <translation id="2040706009561734834">தொடக்கியைத் திறக்கும்/மூடும்</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">ஸ்கிரீன் ஷாட்டை எடுக்கும்</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">முகவரிப் பட்டியைக் கவனித்திடுங்கள்</translation>
+<translation id="3165428420335997629">புதிய விர்ச்சுவல் டெஸ்க்கை உருவாக்கும்</translation>
 <translation id="3256109297135787951">உங்கள் ஷெல்ஃபில் உருப்படியைத் தனிப்படுத்தியதை அகற்றும்</translation>
 <translation id="3288816184963444640">தற்போதைய சாளரத்தை மூடும்</translation>
 <translation id="3407560819924487926">செயல் நிர்வாகியைத் திறக்கும்</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">தற்போதைய பக்கத்தில் தேடும்</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" />ஐ அழுத்தி, இணைப்பைக் கிளிக் செய்யவும்</translation>
 <translation id="561814908794220892">புதிய தாவலில் இணையப் பக்கத்தைத் திறக்கும்</translation>
+<translation id="5620219513321115856">செயலிலுள்ள சாளரத்தை வலதுபுறத்தில் உள்ள டெஸ்க்கிற்கு நகர்த்தும்</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> அல்லது <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">தாவலில் இணைப்பைத் திறக்கும்</translation>
 <translation id="5757474750054631686">விசைப்பலகையை மங்கலாக்கும் (பின்னணி வெளிச்சம் கொண்ட விசைப்பலகைகளுக்கு மட்டும்)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">திரையை 90 டிகிரிக்குச் சுழற்றும்</translation>
 <translation id="8241665785394195545">வலது அடைப்புக்குறி</translation>
 <translation id="8264941229485248811">டெவெலப்பர் கருவிகள் கண்காணிப்பானைக் காட்டும் அல்லது மறைக்கும்</translation>
+<translation id="8355937569537581904">தற்போதைய விர்ச்சுவல் டெஸ்க்கை அகற்றும்</translation>
 <translation id="836869401750819675">பதிவிறக்கங்கள் பக்கத்தைத் திறக்கும்</translation>
 <translation id="8388247778047144397">தாவல் பட்டையில் உள்ள வெற்றுப் பகுதிக்கு இணைப்பை இழுக்கும்</translation>
 <translation id="8389638407792712197">புதிய சாளரத்தைத் திறக்கும்</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">முந்தைய சொல்லை அல்லது எழுத்தைத் தேர்ந்தெடுக்கும்</translation>
 <translation id="8727232706774971183">உங்கள் அறிவிப்புகளைக் காட்டும்</translation>
 <translation id="8855885154700222542">முழுத்திரை விசை</translation>
+<translation id="8881584919399569791">செயலிலுள்ள சாளரத்தை இடதுபுறத்தில் உள்ள டெஸ்க்கிற்கு நகர்த்தும்</translation>
 <translation id="88986195241502842">பக்கத்தின் கீழே</translation>
 <translation id="8924883688469390268">முந்தைய பயனருக்குச் செல்லும்</translation>
 <translation id="8977648847395357314">முகவரிப் பட்டியில் உள்ள உள்ளடக்கத்தைத் தேர்ந்தெடுக்கும்</translation>
diff --git a/ash/components/strings/ash_components_strings_te.xtb b/ash/components/strings/ash_components_strings_te.xtb
index 5840510..0370d76 100644
--- a/ash/components/strings/ash_components_strings_te.xtb
+++ b/ash/components/strings/ash_components_strings_te.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="te">
 <translation id="104962181688258143">ఫైల్స్ యాప్‌ను తెరవండి</translation>
+<translation id="1098295134904615027">కుడివైపు గల వర్చువల్ డెస్క్‌ను యాక్టివేట్ చేస్తుంది</translation>
 <translation id="1122869341872663659"><ph name="QUERY" /> కోసం <ph name="N" /> ఫలితాలను చూపుతోంది</translation>
 <translation id="1195667586424773550">ట్యాబ్ యొక్క చిరునామా బార్‌లోకి లింక్‌ను లాగండి</translation>
 <translation id="1204450209689312104">కొత్త విండోను అజ్ఞాత మోడ్‌లో తెరవండి</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">వెతుకు</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> లేదా <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">పంక్తి చివరికి వెళ్లు</translation>
+<translation id="1499072997694708844">ఏదైనా తెరవబడిన 'కనుగొను' విండోను మూసివేస్తుంది లేదా మీ ప్రస్తుత పేజీని లోడ్ కాకుండా ఆపివేస్తుంది</translation>
 <translation id="1510238584712386396">లాంచర్</translation>
 <translation id="152892567002884378">వాల్యూమ్ పెంచండి</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, ఆపై <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">చిరునామా బార్‌లో మీరు నమోదు చేసే దానికి www. మరియు .com జోడించి, ఆపై పేజీని తెరవండి</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, ఆపై <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> లేదా <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">ఎడమవైపు గల వర్చువల్ డెస్క్‌ను యాక్టివేట్ చేస్తుంది</translation>
 <translation id="1996162290124031907">తదుపరి ట్యాబ్‌కు వెళ్లండి</translation>
 <translation id="2010818616644390445">విండోలో చివరి ట్యాబ్‌కు వెళ్లండి</translation>
 <translation id="2040706009561734834">లాంచర్‌ని తెరవండి/మూసివేయండి</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">స్క్రీన్‌షాట్ తీయండి</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">ఫోకస్ చిరునామా బార్</translation>
+<translation id="3165428420335997629">కొత్త వర్చువల్ డెస్క్‌ను సృష్టిస్తుంది</translation>
 <translation id="3256109297135787951">మీ అరలోని ఒక అంశానికి ఉన్న హైలైట్‌ను తీసివేయండి</translation>
 <translation id="3288816184963444640">ప్రస్తుత విండోను మూసివేయండి</translation>
 <translation id="3407560819924487926">కార్య నిర్వాహకుడిని తెరవండి</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">ప్రస్తుత పేజీని వెతకండి</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" />ను నొక్కి, లింక్‌ను క్లిక్ చేయండి</translation>
 <translation id="561814908794220892">వెబ్‌పేజీని కొత్త ట్యాబ్‌లో తెరవండి</translation>
+<translation id="5620219513321115856">యాక్టివ్ విండోను కుడివైపు డెస్క్‌కు తరలిస్తుంది</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> లేదా <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">ట్యాబ్‌లో లింక్‌ను తెరవండి</translation>
 <translation id="5757474750054631686">కీబోర్డ్ ప్రకాశాన్ని తగ్గించండి (నేపథ్య కాంతి ఉన్న కీబోర్డ్‌లకు మాత్రమే)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">స్క్రీన్‌ని 90 డిగ్రీలు తిప్పండి</translation>
 <translation id="8241665785394195545">కుడి బ్రాకెట్</translation>
 <translation id="8264941229485248811">డెవలపర్ సాధనాల ఇన్‌స్పెక్టర్‌ను చూపండి లేదా దాచండి</translation>
+<translation id="8355937569537581904">ప్రస్తుత వర్చువల్ డెస్క్‌ను తీసివేస్తుంది</translation>
 <translation id="836869401750819675">డౌన్‌లోడ్‌ల పేజీని తెరవండి</translation>
 <translation id="8388247778047144397">లింక్‌ను ట్యాబ్ స్ట్రిప్‌లోని ఖాళీ ప్రాంతంలోకి లాగండి</translation>
 <translation id="8389638407792712197">కొత్త విండోను తెరవండి</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">మునుపటి పదం లేదా అక్షరాన్ని ఎంచుకోండి</translation>
 <translation id="8727232706774971183">మీ నోటిఫికేషన్‌లను చూడండి</translation>
 <translation id="8855885154700222542">పూర్తిస్క్రీన్ కీ</translation>
+<translation id="8881584919399569791">యాక్టివ్ విండోను ఎడమవైపు డెస్క్‌కు తరలిస్తుంది</translation>
 <translation id="88986195241502842">దిగువ పేజీకి వెళుతుంది</translation>
 <translation id="8924883688469390268">మునుపటి వినియోగదారుకు మారండి</translation>
 <translation id="8977648847395357314">చిరునామా బార్‌‍లోని కంటెంట్‌ను ఎంచుకోండి</translation>
diff --git a/ash/components/strings/ash_components_strings_th.xtb b/ash/components/strings/ash_components_strings_th.xtb
index 33fbbc3..ad90368 100644
--- a/ash/components/strings/ash_components_strings_th.xtb
+++ b/ash/components/strings/ash_components_strings_th.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="th">
 <translation id="104962181688258143">เปิดแอปไฟล์</translation>
+<translation id="1098295134904615027">เปิดใช้งานพื้นที่ทำงานเสมือนทางด้านขวา</translation>
 <translation id="1122869341872663659">กำลังแสดงผลการค้นหา <ph name="QUERY" /> <ph name="N" /> รายการ</translation>
 <translation id="1195667586424773550">ลากลิงก์ไปยังแถบที่อยู่ของแท็บ</translation>
 <translation id="1204450209689312104">เปิดหน้าต่างใหม่ในโหมดไม่ระบุตัวตน</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">ค้นหา</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> หรือ <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">ไปที่ท้ายบรรทัด</translation>
+<translation id="1499072997694708844">ปิดหน้าต่างการค้นหาที่เปิดอยู่หรือหยุดการโหลดหน้าปัจจุบัน</translation>
 <translation id="1510238584712386396">ตัวเรียกใช้งาน</translation>
 <translation id="152892567002884378">เพิ่มระดับเสียง</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> แล้วกด <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">เพิ่ม www. และ .com ในข้อมูลที่คุณป้อนลงในแถบที่อยู่ แล้วเปิดหน้าเว็บนั้น</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> แล้วกด <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> หรือ <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">เปิดใช้งานพื้นที่ทำงานเสมือนทางด้านซ้าย</translation>
 <translation id="1996162290124031907">ไปที่แท็บถัดไป</translation>
 <translation id="2010818616644390445">ไปที่แท็บสุดท้ายในหน้าต่าง</translation>
 <translation id="2040706009561734834">เปิด/ปิด Launcher</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">จับภาพหน้าจอ</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">โฟกัสแถบที่อยู่</translation>
+<translation id="3165428420335997629">สร้างพื้นที่ทำงานเสมือนใหม่</translation>
 <translation id="3256109297135787951">นำไฮไลต์ออกจากรายการบนชั้นวาง</translation>
 <translation id="3288816184963444640">ปิดหน้าต่างปัจจุบัน</translation>
 <translation id="3407560819924487926">เรียกใช้ตัวจัดการงาน</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">ค้นหาในหน้าปัจจุบัน</translation>
 <translation id="5563050856984839829">กด <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> และคลิกลิงก์</translation>
 <translation id="561814908794220892">เปิดหน้าเว็บในแท็บใหม่</translation>
+<translation id="5620219513321115856">ย้ายหน้าต่างที่เปิดใช้งานอยู่ไปยังพื้นที่ทำงานทางด้านขวา</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> หรือ <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">เปิดลิงก์ในแท็บใหม่</translation>
 <translation id="5757474750054631686">หรี่แสงแป้นพิมพ์ (เฉพาะแป้นพิมพ์เรืองแสง)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">หมุนหน้าจอ 90 องศา</translation>
 <translation id="8241665785394195545">วงเล็บปิด</translation>
 <translation id="8264941229485248811">แสดงหรือซ่อนตัวตรวจสอบเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์</translation>
+<translation id="8355937569537581904">นำพื้นที่ทำงานเสมือนที่ใช้อยู่ออก</translation>
 <translation id="836869401750819675">เปิดหน้าดาวน์โหลด</translation>
 <translation id="8388247778047144397">ลากลิงก์ไปยังพื้นที่ว่างบนแนวแท็บ</translation>
 <translation id="8389638407792712197">เปิดหน้าต่างใหม่</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">เลือกคำหรืออักษรก่อนหน้า</translation>
 <translation id="8727232706774971183">ดูการแจ้งเตือน</translation>
 <translation id="8855885154700222542">แป้นแสดงเต็มหน้าจอ</translation>
+<translation id="8881584919399569791">ย้ายหน้าต่างที่เปิดใช้งานอยู่ไปยังพื้นที่ทำงานทางด้านซ้าย</translation>
 <translation id="88986195241502842">เลื่อนหน้าลง</translation>
 <translation id="8924883688469390268">เปลี่ยนเป็นผู้ใช้ก่อนหน้า</translation>
 <translation id="8977648847395357314">เลือกเนื้อหาในแถบที่อยู่</translation>
diff --git a/ash/components/strings/ash_components_strings_tr.xtb b/ash/components/strings/ash_components_strings_tr.xtb
index 6d7b611..b6cdf72 100644
--- a/ash/components/strings/ash_components_strings_tr.xtb
+++ b/ash/components/strings/ash_components_strings_tr.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="tr">
 <translation id="104962181688258143">Dosyalar uygulamasını açar</translation>
+<translation id="1098295134904615027">Sağdaki sanal masayı etkinleştir</translation>
 <translation id="1122869341872663659"><ph name="QUERY" /> için <ph name="N" /> arama sonucu gösteriliyor</translation>
 <translation id="1195667586424773550">Bağlantıyı sekmenin adres çubuğuna sürükleyin</translation>
 <translation id="1204450209689312104">Gizli modda yeni bir pencere açar</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Ara</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> veya <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Satırın sonuna gider</translation>
+<translation id="1499072997694708844">Açık durumdaki tüm bulma pencerelerini kapat veya geçerli sayfanın yüklenmesini durdur</translation>
 <translation id="1510238584712386396">Başlatıcı</translation>
 <translation id="152892567002884378">Sesi açar</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, daha sonra <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Adres çubuğuna yazdığınız metnin başına www. ve sonuna .com ifadelerini ekleyip sayfayı açar</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, daha sonra <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> veya <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Soldaki sanal masayı etkinleştir</translation>
 <translation id="1996162290124031907">Sonraki sekmeye gider</translation>
 <translation id="2010818616644390445">Penceredeki son sekmeye gider</translation>
 <translation id="2040706009561734834">Başlatıcıyı açar/kapatır</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Ekran görüntüsü al</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Adres çubuğuna odaklan</translation>
+<translation id="3165428420335997629">Yeni bir sanal masa oluştur</translation>
 <translation id="3256109297135787951">Rafınızdaki bir öğenin vurgusunu kaldırır</translation>
 <translation id="3288816184963444640">Geçerli pencereyi kapatır</translation>
 <translation id="3407560819924487926">Görev yöneticisini açar</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Geçerli sayfada arama yapar</translation>
 <translation id="5563050856984839829"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> tuşlarına basın ve bir bağlantıyı tıklayın</translation>
 <translation id="561814908794220892">Web sayfasını yeni bir sekmede açar</translation>
+<translation id="5620219513321115856">Etkin pencereyi sağdaki masaya taşı</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> veya <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Bağlantıyı sekmede açar</translation>
 <translation id="5757474750054631686">Klavyenin ışığını kısar (yalnızca arkadan aydınlatmalı klavyeler için)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Ekranı 90 derece döndürür</translation>
 <translation id="8241665785394195545">sağ parantez</translation>
 <translation id="8264941229485248811">Geliştirici Araçları denetleyicisini gösterir veya gizler</translation>
+<translation id="8355937569537581904">Mevcut sanal masayı kaldır</translation>
 <translation id="836869401750819675">İndirilenler sayfasını açar</translation>
 <translation id="8388247778047144397">Bağlantıyı sekme şeridindeki boş bir alana sürükleyin</translation>
 <translation id="8389638407792712197">Yeni pencere açar</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Önceki kelimeyi veya harfi seçer</translation>
 <translation id="8727232706774971183">Bildirimlerinizi gösterir</translation>
 <translation id="8855885154700222542">Tam ekran tuşu</translation>
+<translation id="8881584919399569791">Etkin pencereyi soldaki masaya taşı</translation>
 <translation id="88986195241502842">Bir sayfa aşağı gider</translation>
 <translation id="8924883688469390268">Önceki kullanıcıya geçer</translation>
 <translation id="8977648847395357314">Adres çubuğundaki içeriği seçer</translation>
diff --git a/ash/components/strings/ash_components_strings_uk.xtb b/ash/components/strings/ash_components_strings_uk.xtb
index db1b344d..7b34814 100644
--- a/ash/components/strings/ash_components_strings_uk.xtb
+++ b/ash/components/strings/ash_components_strings_uk.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="uk">
 <translation id="104962181688258143">Відкрити додаток Файли</translation>
+<translation id="1098295134904615027">Активувати віртуальний робочий стіл праворуч</translation>
 <translation id="1122869341872663659">Показано результати пошуку (<ph name="N" />) за запитом "<ph name="QUERY" />"</translation>
 <translation id="1195667586424773550">Перетягніть посилання в адресний рядок вкладки</translation>
 <translation id="1204450209689312104">Відкрити нове вікно в режимі анонімного перегляду</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Пошук</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> або <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Перейти в кінець рядка</translation>
+<translation id="1499072997694708844">Закрити всі вікна пошуку або припинити завантаження поточної сторінки</translation>
 <translation id="1510238584712386396">Панель запуску</translation>
 <translation id="152892567002884378">Збільшити гучність</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, а тоді <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Додати www. та .com до тексту в адресному рядку й відкрити сторінку</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, а тоді <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> або <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Активувати віртуальний робочий стіл ліворуч</translation>
 <translation id="1996162290124031907">Перейти на наступну вкладку</translation>
 <translation id="2010818616644390445">Перейти на останню вкладку у вікні</translation>
 <translation id="2040706009561734834">Відкрити чи закрити панель запуску</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Зробити знімок екрана</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Активувати адресний рядок</translation>
+<translation id="3165428420335997629">Створити новий віртуальний робочий стіл</translation>
 <translation id="3256109297135787951">Скасувати виділення елемента на полиці</translation>
 <translation id="3288816184963444640">Закрити поточне вікно</translation>
 <translation id="3407560819924487926">Відкрити Диспетчер завдань</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Шукати на поточній сторінці</translation>
 <translation id="5563050856984839829">Натисніть <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> і посилання</translation>
 <translation id="561814908794220892">Відкрити веб-сторінку в новій вкладці</translation>
+<translation id="5620219513321115856">Перемістити активне вікно на робочий стіл праворуч</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> або <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Відкрити посилання в поточній вкладці</translation>
 <translation id="5757474750054631686">Зменшити яскравість клавіатури (лише для клавіатур із підсвічуванням)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Обернути екран на 90 градусів</translation>
 <translation id="8241665785394195545">права квадратна дужка</translation>
 <translation id="8264941229485248811">Показати чи сховати інспектор Інструментів розробника</translation>
+<translation id="8355937569537581904">Видалити поточний віртуальний робочий стіл</translation>
 <translation id="836869401750819675">Відкрити сторінку завантажень</translation>
 <translation id="8388247778047144397">Перетягніть посилання на порожнє місце на панелі вкладок</translation>
 <translation id="8389638407792712197">Відкрити нове вікно</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Виділити попереднє слово або літеру</translation>
 <translation id="8727232706774971183">Переглянути сповіщення</translation>
 <translation id="8855885154700222542">Клавіша повноекранного режиму</translation>
+<translation id="8881584919399569791">Перемістити активне вікно на робочий стіл ліворуч</translation>
 <translation id="88986195241502842">Сторінка вниз</translation>
 <translation id="8924883688469390268">Перейти в попередній профіль користувача</translation>
 <translation id="8977648847395357314">Виділити вміст в адресному рядку</translation>
diff --git a/ash/components/strings/ash_components_strings_vi.xtb b/ash/components/strings/ash_components_strings_vi.xtb
index 320223f4..759b3a6 100644
--- a/ash/components/strings/ash_components_strings_vi.xtb
+++ b/ash/components/strings/ash_components_strings_vi.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="vi">
 <translation id="104962181688258143">Mở ứng dụng Tệp</translation>
+<translation id="1098295134904615027">Kích hoạt không gian làm việc ảo ở bên phải</translation>
 <translation id="1122869341872663659">Hiển thị <ph name="N" /> kết quả tìm kiếm cho <ph name="QUERY" /></translation>
 <translation id="1195667586424773550">Kéo liên kết vào thanh địa chỉ của tab</translation>
 <translation id="1204450209689312104">Mở cửa sổ mới ở chế độ ẩn danh</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">Tìm kiếm</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> hoặc <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">Chuyển đến cuối dòng</translation>
+<translation id="1499072997694708844">Đóng bất kỳ cửa sổ tìm kiếm nào đang mở hoặc ngừng tải trang hiện tại</translation>
 <translation id="1510238584712386396">Trình chạy</translation>
 <translation id="152892567002884378">Tăng âm lượng</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, rồi đến <ph name="ESC" /></translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">Thêm www. và .com vào nội dung mà bạn nhập trên thanh địa chỉ rồi mở trang</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, rồi đến <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> hoặc <ph name="LEFT" /></translation>
+<translation id="1929866390202038233">Kích hoạt không gian làm việc ảo ở bên trái</translation>
 <translation id="1996162290124031907">Chuyển sang tab tiếp theo</translation>
 <translation id="2010818616644390445">Chuyển đến tab cuối cùng trong cửa sổ</translation>
 <translation id="2040706009561734834">Mở/đóng trình chạy</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">Chụp ảnh màn hình</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">Thanh địa chỉ chính</translation>
+<translation id="3165428420335997629">Tạo không gian làm việc ảo mới</translation>
 <translation id="3256109297135787951">Xóa mục đã đánh dấu trên giá</translation>
 <translation id="3288816184963444640">Đóng cửa sổ hiện tại</translation>
 <translation id="3407560819924487926">Hiển thị trình quản lý tác vụ</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">Tìm kiếm trên trang hiện tại</translation>
 <translation id="5563050856984839829">Nhấn <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> và nhấp vào một liên kết</translation>
 <translation id="561814908794220892">Mở trang web trong tab mới</translation>
+<translation id="5620219513321115856">Di chuyển cửa sổ đang hoạt động sang không gian làm việc ở bên phải</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> hoặc <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">Mở liên kết trong tab</translation>
 <translation id="5757474750054631686">Giảm ánh sáng bàn phím (chỉ dành cho bàn phím có đèn nền)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">Xoay màn hình 90 độ</translation>
 <translation id="8241665785394195545">dấu ngoặc vuông phải</translation>
 <translation id="8264941229485248811">Hiển thị hoặc ẩn trình kiểm tra Công cụ dành cho nhà phát triển</translation>
+<translation id="8355937569537581904">Xóa không gian làm việc ảo hiện tại</translation>
 <translation id="836869401750819675">Mở trang Tệp đã tải xuống</translation>
 <translation id="8388247778047144397">Kéo liên kết vào một vùng trống trên thanh tab</translation>
 <translation id="8389638407792712197">Mở cửa sổ mới</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">Chọn chữ cái hoặc từ đứng trước</translation>
 <translation id="8727232706774971183">Xem thông báo</translation>
 <translation id="8855885154700222542">Phím toàn màn hình</translation>
+<translation id="8881584919399569791">Di chuyển cửa sổ đang hoạt động sang không gian làm việc ở bên trái</translation>
 <translation id="88986195241502842">Trang dưới</translation>
 <translation id="8924883688469390268">Chuyển về người dùng trước</translation>
 <translation id="8977648847395357314">Chọn nội dung trong thanh địa chỉ</translation>
diff --git a/ash/components/strings/ash_components_strings_zh-CN.xtb b/ash/components/strings/ash_components_strings_zh-CN.xtb
index d338589..0ede61a 100644
--- a/ash/components/strings/ash_components_strings_zh-CN.xtb
+++ b/ash/components/strings/ash_components_strings_zh-CN.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="zh-CN">
 <translation id="104962181688258143">打开“文件”应用</translation>
+<translation id="1098295134904615027">启用右侧的虚拟桌面</translation>
 <translation id="1122869341872663659">目前显示的是与“<ph name="QUERY" />”相符的 <ph name="N" /> 条搜索结果</translation>
 <translation id="1195667586424773550">将链接拖到标签页的地址栏中</translation>
 <translation id="1204450209689312104">在无痕模式下打开新窗口</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">搜索</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> 或 <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /></translation>
 <translation id="1477442857810932985">转至行末</translation>
+<translation id="1499072997694708844">关闭所有已打开的查找窗口,或停止加载当前网页</translation>
 <translation id="1510238584712386396">启动器</translation>
 <translation id="152892567002884378">调高音量</translation>
 <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />,然后按 <ph name="ESC" /> 键</translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /></translation>
 <translation id="1733525068429116555">将 www. 和 .com 添加到您在搜索栏内输入的内容中,然后打开相应网页</translation>
 <translation id="1920446759863417809"><ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />,然后按 <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> 或<ph name="LEFT" />键</translation>
+<translation id="1929866390202038233">启用左侧的虚拟桌面</translation>
 <translation id="1996162290124031907">转到下一个标签页</translation>
 <translation id="2010818616644390445">转到窗口中的最后一个标签页</translation>
 <translation id="2040706009561734834">打开/关闭启动器</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">生成屏幕截图</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">将地址栏设为焦点</translation>
+<translation id="3165428420335997629">创建新的虚拟桌面</translation>
 <translation id="3256109297135787951">取消任务栏中某项内容的突出显示状态</translation>
 <translation id="3288816184963444640">关闭当前窗口</translation>
 <translation id="3407560819924487926">启动任务管理器</translation>
@@ -79,7 +83,7 @@
 <translation id="3792178297143798024">打开任务栏中突出显示的内容</translation>
 <translation id="379295446891231126"><ph name="CTRL" /><ph name="SEPARATOR" /> 1 至 8</translation>
 <translation id="3837047332182291558">调亮键盘(仅适用于背光键盘)</translation>
-<translation id="3949671998904569433">英文逗号</translation>
+<translation id="3949671998904569433">逗号</translation>
 <translation id="3976863468609830880">点击任务栏中的最后一个图标</translation>
 <translation id="3994783594793697310">重置显示内容的缩放级别</translation>
 <translation id="4026843240379844265">在各个显示屏之间移动活动窗口</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">在当前网页中搜索</translation>
 <translation id="5563050856984839829">在按 <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> 的同时点击链接</translation>
 <translation id="561814908794220892">在新标签页中打开网页</translation>
+<translation id="5620219513321115856">将活动窗口移至右侧的桌面</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> 或 <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /></translation>
 <translation id="5757111373163288447">在标签页中打开链接</translation>
 <translation id="5757474750054631686">调暗键盘(仅适用于背光键盘)</translation>
@@ -176,6 +181,7 @@
 <translation id="8234414138295101081">将屏幕旋转 90 度</translation>
 <translation id="8241665785394195545">右中括号</translation>
 <translation id="8264941229485248811">显示或隐藏开发者工具检查器</translation>
+<translation id="8355937569537581904">移除当前的虚拟桌面</translation>
 <translation id="836869401750819675">打开“下载内容”页面</translation>
 <translation id="8388247778047144397">将链接拖到标签栏的空白区域中</translation>
 <translation id="8389638407792712197">打开新窗口</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">选择上一个字词或字母</translation>
 <translation id="8727232706774971183">查看通知</translation>
 <translation id="8855885154700222542">全屏键</translation>
+<translation id="8881584919399569791">将活动窗口移至左侧的桌面</translation>
 <translation id="88986195241502842">向下翻页</translation>
 <translation id="8924883688469390268">切换回上一位用户</translation>
 <translation id="8977648847395357314">选择地址栏中的内容</translation>
diff --git a/ash/components/strings/ash_components_strings_zh-TW.xtb b/ash/components/strings/ash_components_strings_zh-TW.xtb
index da749b7..0474558 100644
--- a/ash/components/strings/ash_components_strings_zh-TW.xtb
+++ b/ash/components/strings/ash_components_strings_zh-TW.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="zh-TW">
 <translation id="104962181688258143">開啟「檔案」應用程式</translation>
+<translation id="1098295134904615027">啟用右側的虛擬桌面</translation>
 <translation id="1122869341872663659">目前顯示 <ph name="N" /> 項與「<ph name="QUERY" />」相符的搜尋結果</translation>
 <translation id="1195667586424773550">將連結拖曳至該分頁的網址列</translation>
 <translation id="1204450209689312104">以無痕模式開啟新視窗</translation>
@@ -12,6 +13,7 @@
 <translation id="1383876407941801731">搜尋</translation>
 <translation id="1454364489140280055"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="SHIFT1" /><ph name="SEPARATOR2" /><ph name="G" /> 鍵或 <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="ENTER" /> 鍵</translation>
 <translation id="1477442857810932985">移到行尾</translation>
+<translation id="1499072997694708844">關閉所有已開啟的尋找視窗,或停止載入目前的頁面</translation>
 <translation id="1510238584712386396">啟動器</translation>
 <translation id="152892567002884378">調高音量</translation>
 <translation id="1560480564179555003">按下 <ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> 鍵,然後按下 <ph name="ESC" /> 鍵</translation>
@@ -22,6 +24,7 @@
 <translation id="1732295673545939435"><ph name="MODIFIER1" /><ph name="SEPARATOR1" /><ph name="MODIFIER2" /><ph name="SEPARATOR2" /><ph name="KEY" /> 鍵</translation>
 <translation id="1733525068429116555">為你在網址列中輸入的字串加上 www. 和 .com 並開啟網頁</translation>
 <translation id="1920446759863417809">按下 <ph name="SHIFT1" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> 鍵,然後按下 <ph name="SHIFT2" /><ph name="SEPARATOR3" /><ph name="TAB" /> 鍵或 <ph name="LEFT" /> 鍵</translation>
+<translation id="1929866390202038233">啟用左側的虛擬桌面</translation>
 <translation id="1996162290124031907">前往下一個分頁</translation>
 <translation id="2010818616644390445">前往視窗中的最後一個分頁</translation>
 <translation id="2040706009561734834">開啟/關閉啟動器</translation>
@@ -61,6 +64,7 @@
 <translation id="3105917916468784889">擷取螢幕畫面</translation>
 <translation id="3126026824346185272">Ctrl</translation>
 <translation id="3140353188828248647">將焦點移至網址列</translation>
+<translation id="3165428420335997629">建立新的虛擬桌面</translation>
 <translation id="3256109297135787951">取消檔案櫃項目的醒目顯示狀態</translation>
 <translation id="3288816184963444640">關閉目前的視窗</translation>
 <translation id="3407560819924487926">開啟工作管理員</translation>
@@ -114,6 +118,7 @@
 <translation id="5554139136362089836">搜尋目前網頁</translation>
 <translation id="5563050856984839829">按住 <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> 鍵,然後按一下連結</translation>
 <translation id="561814908794220892">在新分頁中開啟網頁</translation>
+<translation id="5620219513321115856">將使用中的視窗移至右側桌面</translation>
 <translation id="5710621673935162997"><ph name="CTRL" /><ph name="SEPARATOR1" /><ph name="L" /> 鍵或 <ph name="ALT" /><ph name="SEPARATOR2" /><ph name="D" /> 鍵</translation>
 <translation id="5757111373163288447">在該分頁開啟連結</translation>
 <translation id="5757474750054631686">鍵盤變暗 (僅適用於背光鍵盤)</translation>
@@ -164,7 +169,7 @@
 <translation id="7500368597227394048">連字號</translation>
 <translation id="7611271430932669992">將焦點移至彈出式視窗和對話方塊</translation>
 <translation id="766326951329901120">以純文字貼上剪貼簿中的內容</translation>
-<translation id="7703010453515335249">左括號</translation>
+<translation id="7703010453515335249">左方括號</translation>
 <translation id="7724603315864178912">剪下</translation>
 <translation id="7730490981846175479">按下 <ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> 鍵,然後按下 <ph name="SPACE" /> 或 <ph name="ENTER" /> 鍵</translation>
 <translation id="7787242579016742662">在瀏覽器中開啟檔案</translation>
@@ -174,8 +179,9 @@
 <translation id="8147954207400281792"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="K" /> 鍵或 <ph name="E" /> 鍵</translation>
 <translation id="8232835244134740473">在以下位置之間切換焦點:狀態區 (你的帳戶相片顯示位置)、啟動器網址列、書籤列 (如有顯示)、開啟的網頁和下載內容列 (如有顯示)。</translation>
 <translation id="8234414138295101081">將畫面旋轉 90 度</translation>
-<translation id="8241665785394195545">右括號</translation>
+<translation id="8241665785394195545">右方括號</translation>
 <translation id="8264941229485248811">顯示或隱藏開發人員工具檢查器</translation>
+<translation id="8355937569537581904">移除目前的虛擬桌面</translation>
 <translation id="836869401750819675">開啟下載內容頁面</translation>
 <translation id="8388247778047144397">將連結拖曳至分頁列中的空白區域</translation>
 <translation id="8389638407792712197">開啟新視窗</translation>
@@ -187,6 +193,7 @@
 <translation id="8717459106217102612">選取上一個字詞或字母</translation>
 <translation id="8727232706774971183">查看通知</translation>
 <translation id="8855885154700222542">全螢幕鍵</translation>
+<translation id="8881584919399569791">將使用中的視窗移至左側桌面</translation>
 <translation id="88986195241502842">Page Down 鍵</translation>
 <translation id="8924883688469390268">切換至上一個使用者</translation>
 <translation id="8977648847395357314">選取網址列中的內容</translation>
diff --git a/ash/display/touch_calibrator_view.cc b/ash/display/touch_calibrator_view.cc
index ec9b5b6..015fd99 100644
--- a/ash/display/touch_calibrator_view.cc
+++ b/ash/display/touch_calibrator_view.cc
@@ -124,7 +124,8 @@
 // min and max radius. The animation takes |animation_duration| milliseconds
 // to complete. The center of these circles are at the center of the view
 // element.
-class CircularThrobberView : public views::View, public gfx::AnimationDelegate {
+class CircularThrobberView : public views::View,
+                             public views::AnimationDelegateViews {
  public:
   CircularThrobberView(int width,
                        const SkColor& inner_circle_color,
@@ -132,10 +133,10 @@
                        int animation_duration);
   ~CircularThrobberView() override;
 
-  // views::View overrides:
+  // views::View:
   void OnPaint(gfx::Canvas* canvas) override;
 
-  // gfx::AnimationDelegate overrides:
+  // views::AnimationDelegateViews:
   void AnimationProgressed(const gfx::Animation* animation) override;
 
  private:
@@ -166,7 +167,8 @@
                                            const SkColor& inner_circle_color,
                                            const SkColor& outer_circle_color,
                                            int animation_duration)
-    : inner_radius_(width / 4),
+    : views::AnimationDelegateViews(this),
+      inner_radius_(width / 4),
       outer_radius_(inner_radius_),
       smallest_radius_animated_circle_(width * kThrobberCircleRadiusFactor),
       largest_radius_animated_circle_(width / 2),
@@ -213,7 +215,7 @@
                           int animation_duration);
   ~TouchTargetThrobberView() override;
 
-  // views::View overrides:
+  // views::View:
   void OnPaint(gfx::Canvas* canvas) override;
 
  private:
@@ -271,7 +273,7 @@
   HintBox(const gfx::Rect& bounds, int border_radius);
   ~HintBox() override;
 
-  // views::View overrides:
+  // views::View:
   void OnPaint(gfx::Canvas* canvas) override;
 
   void SetLabel(const base::string16& text, const SkColor& color);
@@ -411,7 +413,7 @@
   CompletionMessageView(const gfx::Rect& bounds, const base::string16& message);
   ~CompletionMessageView() override;
 
-  // views::View overrides:
+  // views::View:
   void OnPaint(gfx::Canvas* canvas) override;
 
  private:
@@ -462,7 +464,8 @@
 
 TouchCalibratorView::TouchCalibratorView(const display::Display& target_display,
                                          bool is_primary_view)
-    : display_(target_display),
+    : views::AnimationDelegateViews(this),
+      display_(target_display),
       is_primary_view_(is_primary_view),
       exit_label_(nullptr),
       tap_label_(nullptr),
diff --git a/ash/display/touch_calibrator_view.h b/ash/display/touch_calibrator_view.h
index 6a0497c4..a64fb7d 100644
--- a/ash/display/touch_calibrator_view.h
+++ b/ash/display/touch_calibrator_view.h
@@ -10,7 +10,7 @@
 #include "cc/paint/paint_flags.h"
 #include "ui/compositor/layer_animation_observer.h"
 #include "ui/display/display.h"
-#include "ui/gfx/animation/animation_delegate.h"
+#include "ui/views/animation/animation_delegate_views.h"
 #include "ui/views/view.h"
 
 namespace views {
@@ -38,7 +38,7 @@
 // |TouchCalibratorView| acts as a state machine and has an API to toggle its
 // state or get the current state.
 class ASH_EXPORT TouchCalibratorView : public views::View,
-                                       public gfx::AnimationDelegate,
+                                       public views::AnimationDelegateViews,
                                        public ui::LayerAnimationObserver {
  public:
   // Different states of |TouchCalibratorView| in order.
@@ -70,11 +70,11 @@
                       bool is_primary_view);
   ~TouchCalibratorView() override;
 
-  // views::View overrides:
+  // views::View:
   void OnPaint(gfx::Canvas* canvas) override;
   void OnPaintBackground(gfx::Canvas* canvas) override;
 
-  // gfx::AnimationDelegate overrides:
+  // views::AnimationDelegateViews:
   void AnimationEnded(const gfx::Animation* animation) override;
   void AnimationProgressed(const gfx::Animation* animation) override;
   void AnimationCanceled(const gfx::Animation* animation) override;
diff --git a/ash/mojo_interface_factory.cc b/ash/mojo_interface_factory.cc
index 52e29c2..49466198 100644
--- a/ash/mojo_interface_factory.cc
+++ b/ash/mojo_interface_factory.cc
@@ -21,7 +21,6 @@
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
 #include "ash/system/network/vpn_list.h"
-#include "ash/system/night_light/night_light_controller.h"
 #include "ash/tray_action/tray_action.h"
 #include "base/bind.h"
 #include "base/lazy_instance.h"
@@ -86,12 +85,6 @@
     Shell::Get()->ime_controller()->BindRequest(std::move(request));
 }
 
-void BindNightLightControllerRequestOnMainThread(
-    mojom::NightLightControllerRequest request) {
-  if (Shell::HasInstance())
-    Shell::Get()->night_light_controller()->BindRequest(std::move(request));
-}
-
 void BindTrayActionRequestOnMainThread(mojom::TrayActionRequest request) {
   if (Shell::HasInstance())
     Shell::Get()->tray_action()->BindRequest(std::move(request));
@@ -140,9 +133,6 @@
       base::BindRepeating(&BindImeControllerRequestOnMainThread),
       main_thread_task_runner);
   registry->AddInterface(
-      base::BindRepeating(&BindNightLightControllerRequestOnMainThread),
-      main_thread_task_runner);
-  registry->AddInterface(
       base::BindRepeating(&BindTrayActionRequestOnMainThread),
       main_thread_task_runner);
   registry->AddInterface(
diff --git a/ash/public/cpp/BUILD.gn b/ash/public/cpp/BUILD.gn
index 07f5872..4dd0ee1 100644
--- a/ash/public/cpp/BUILD.gn
+++ b/ash/public/cpp/BUILD.gn
@@ -131,6 +131,8 @@
     "network_icon_image_source.h",
     "new_window_delegate.cc",
     "new_window_delegate.h",
+    "night_light_controller.cc",
+    "night_light_controller.h",
     "note_taking_client.cc",
     "note_taking_client.h",
     "notification_utils.cc",
diff --git a/ash/public/cpp/accessibility_controller.h b/ash/public/cpp/accessibility_controller.h
index 9812d46d..af54194 100644
--- a/ash/public/cpp/accessibility_controller.h
+++ b/ash/public/cpp/accessibility_controller.h
@@ -80,6 +80,10 @@
   // Starts or stops dictation. Records metrics for toggling via SwitchAccess.
   virtual void ToggleDictationFromSource(DictationToggleSource source) = 0;
 
+  // Called when the Automatic Clicks extension finds scrollable bounds.
+  virtual void OnAutoclickScrollableBoundsFound(
+      gfx::Rect& bounds_in_screen) = 0;
+
   // Tells the Switch Access Event Handler whether to forward all key events to
   // the Switch Access extension.
   virtual void ForwardKeyEventsToSwitchAccess(bool should_forward) = 0;
diff --git a/ash/public/cpp/accessibility_controller_client.h b/ash/public/cpp/accessibility_controller_client.h
index 2931489b..c9cc1448 100644
--- a/ash/public/cpp/accessibility_controller_client.h
+++ b/ash/public/cpp/accessibility_controller_client.h
@@ -14,6 +14,10 @@
 }  // namespace mojom
 }  // namespace ax
 
+namespace gfx {
+class Point;
+}  // namespace gfx
+
 namespace ash {
 
 enum class AccessibilityAlert;
@@ -66,8 +70,13 @@
   // Select-to-Speak is not speaking, move to capturing state; if
   // Select-to-Speak is speaking, cancel speaking and move to inactive state.
   virtual void RequestSelectToSpeakStateChange() = 0;
+
+  // Requests that the Automatic Clicks extension get the nearest scrollable
+  // bounds to the given point in screen coordinates.
+  virtual void RequestAutoclickScrollableBoundsForPoint(
+      gfx::Point& point_in_screen) = 0;
 };
 
 }  // namespace ash
 
-#endif  // ASH_PUBLIC_CPP_ACCESSIBILITY_CONTROLLER_CLIENT_H_
\ No newline at end of file
+#endif  // ASH_PUBLIC_CPP_ACCESSIBILITY_CONTROLLER_CLIENT_H_
diff --git a/ash/public/cpp/caption_buttons/frame_caption_button_container_view.cc b/ash/public/cpp/caption_buttons/frame_caption_button_container_view.cc
index d0d4a39..4abb310a 100644
--- a/ash/public/cpp/caption_buttons/frame_caption_button_container_view.cc
+++ b/ash/public/cpp/caption_buttons/frame_caption_button_container_view.cc
@@ -151,7 +151,8 @@
 
 FrameCaptionButtonContainerView::FrameCaptionButtonContainerView(
     views::Widget* frame)
-    : frame_(frame),
+    : views::AnimationDelegateViews(frame->GetRootView()),
+      frame_(frame),
       model_(std::make_unique<DefaultCaptionButtonModel>(frame)) {
   auto layout = std::make_unique<views::BoxLayout>(
       views::BoxLayout::Orientation::kHorizontal);
diff --git a/ash/public/cpp/caption_buttons/frame_caption_button_container_view.h b/ash/public/cpp/caption_buttons/frame_caption_button_container_view.h
index f313c29..43db0df 100644
--- a/ash/public/cpp/caption_buttons/frame_caption_button_container_view.h
+++ b/ash/public/cpp/caption_buttons/frame_caption_button_container_view.h
@@ -12,7 +12,7 @@
 #include "ash/public/cpp/caption_buttons/frame_size_button_delegate.h"
 #include "ash/public/cpp/caption_buttons/snap_controller.h"
 #include "base/macros.h"
-#include "ui/gfx/animation/animation_delegate.h"
+#include "ui/views/animation/animation_delegate_views.h"
 #include "ui/views/controls/button/button.h"
 #include "ui/views/view.h"
 #include "ui/views/window/frame_caption_button.h"
@@ -34,7 +34,7 @@
     : public views::View,
       public views::ButtonListener,
       public FrameSizeButtonDelegate,
-      public gfx::AnimationDelegate {
+      public views::AnimationDelegateViews {
  public:
   static const char kViewClassName[];
 
@@ -107,7 +107,7 @@
   void ChildPreferredSizeChanged(View* child) override;
   void ChildVisibilityChanged(View* child) override;
 
-  // gfx::AnimationDelegate:
+  // views::AnimationDelegateViews:
   void AnimationEnded(const gfx::Animation* animation) override;
   void AnimationProgressed(const gfx::Animation* animation) override;
 
diff --git a/ash/public/cpp/frame_header.cc b/ash/public/cpp/frame_header.cc
index 4150d7ef..c5ef705 100644
--- a/ash/public/cpp/frame_header.cc
+++ b/ash/public/cpp/frame_header.cc
@@ -191,7 +191,9 @@
 // FrameHeader, protected:
 
 FrameHeader::FrameHeader(views::Widget* target_widget, views::View* view)
-    : target_widget_(target_widget), view_(view) {
+    : views::AnimationDelegateViews(view),
+      target_widget_(target_widget),
+      view_(view) {
   DCHECK(target_widget);
   DCHECK(view);
 }
diff --git a/ash/public/cpp/frame_header.h b/ash/public/cpp/frame_header.h
index 3c1f0f8..13bfa68 100644
--- a/ash/public/cpp/frame_header.h
+++ b/ash/public/cpp/frame_header.h
@@ -10,8 +10,8 @@
 #include "base/strings/string16.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/base/ui_base_types.h"
-#include "ui/gfx/animation/animation_delegate.h"
 #include "ui/gfx/animation/slide_animation.h"
+#include "ui/views/animation/animation_delegate_views.h"
 #include "ui/views/window/frame_caption_button.h"
 
 namespace gfx {
@@ -28,7 +28,7 @@
 namespace ash {
 
 // Helper class for managing the window header.
-class ASH_PUBLIC_EXPORT FrameHeader : public gfx::AnimationDelegate {
+class ASH_PUBLIC_EXPORT FrameHeader : public views::AnimationDelegateViews {
  public:
   enum Mode { MODE_ACTIVE, MODE_INACTIVE };
 
@@ -77,7 +77,7 @@
   // regardless of what WidgetDelegate::ShouldShowWindowTitle() returns.
   void SetFrameTextOverride(const base::string16& frame_text_override);
 
-  // gfx::AnimationDelegate:
+  // views::AnimationDelegateViews:
   void AnimationProgressed(const gfx::Animation* animation) override;
 
  protected:
diff --git a/ash/public/cpp/manifest.cc b/ash/public/cpp/manifest.cc
index 9a68fb2..48f78ec 100644
--- a/ash/public/cpp/manifest.cc
+++ b/ash/public/cpp/manifest.cc
@@ -9,7 +9,6 @@
 #include "ash/public/interfaces/constants.mojom.h"
 #include "ash/public/interfaces/cros_display_config.mojom.h"
 #include "ash/public/interfaces/ime_controller.mojom.h"
-#include "ash/public/interfaces/night_light_controller.mojom.h"
 #include "ash/public/interfaces/tray_action.mojom.h"
 #include "ash/public/interfaces/voice_interaction_controller.mojom.h"
 #include "ash/public/interfaces/vpn_list.mojom.h"
@@ -50,8 +49,8 @@
                   mojom::AssistantScreenContextController,
                   mojom::AssistantVolumeControl,
                   mojom::CrosDisplayConfigController, mojom::ImeController,
-                  mojom::NightLightController, mojom::TrayAction,
-                  mojom::VoiceInteractionController, mojom::VpnList>())
+                  mojom::TrayAction, mojom::VoiceInteractionController,
+                  mojom::VpnList>())
           .RequireCapability("*", "accessibility")
           .RequireCapability("*", "app")
           .RequireCapability(content::mojom::kServiceName, "navigation")
diff --git a/ash/public/cpp/night_light_controller.cc b/ash/public/cpp/night_light_controller.cc
new file mode 100644
index 0000000..4d24644
--- /dev/null
+++ b/ash/public/cpp/night_light_controller.cc
@@ -0,0 +1,36 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/public/cpp/night_light_controller.h"
+
+#include "base/logging.h"
+
+namespace ash {
+namespace {
+NightLightController* g_night_light_controller = nullptr;
+}
+
+// static
+NightLightController* NightLightController::GetInstance() {
+  return g_night_light_controller;
+}
+
+NightLightController::NightLightController() {
+  DCHECK(!g_night_light_controller);
+  g_night_light_controller = this;
+}
+NightLightController::~NightLightController() {
+  DCHECK_EQ(g_night_light_controller, this);
+  g_night_light_controller = nullptr;
+}
+
+void NightLightController::AddObserver(Observer* observer) {
+  observers_.AddObserver(observer);
+}
+
+void NightLightController::RemoveObserver(Observer* observer) {
+  observers_.RemoveObserver(observer);
+}
+
+}  // namespace ash
diff --git a/ash/public/cpp/night_light_controller.h b/ash/public/cpp/night_light_controller.h
new file mode 100644
index 0000000..a0ec6e3
--- /dev/null
+++ b/ash/public/cpp/night_light_controller.h
@@ -0,0 +1,84 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_PUBLIC_CPP_NIGHT_LIGHT_CONTROLLER_H_
+#define ASH_PUBLIC_CPP_NIGHT_LIGHT_CONTROLLER_H_
+
+#include "ash/public/cpp/ash_public_export.h"
+#include "base/macros.h"
+#include "base/observer_list.h"
+
+namespace ash {
+
+class ASH_PUBLIC_EXPORT NightLightController {
+ public:
+  // These values are written to logs. New enum values can be added, but
+  // existing enums must never be renumbered or deleted and reused.
+  enum ScheduleType {
+    // Automatic toggling of NightLight is turned off.
+    kNone = 0,
+
+    // Turned automatically on at the user's local sunset time, and off at the
+    // user's local sunrise time.
+    kSunsetToSunrise = 1,
+
+    // Toggled automatically based on the custom set start and end times
+    // selected by the user from the system settings.
+    kCustom = 2,
+
+    // kMaxValue is required for UMA_HISTOGRAM_ENUMERATION.
+    kMaxValue = kCustom,
+  };
+
+  // Represents a geolocation position fix. It's "simple" because it doesn't
+  // expose all the parameters of the position interface as defined by the
+  // Geolocation API Specification:
+  //   https://dev.w3.org/geo/api/spec-source.html#position_interface
+  // The NightLightController is only interested in valid latitude and
+  // longitude. It also doesn't require any specific accuracy. The more accurate
+  // the positions, the more accurate sunset and sunrise times calculations.
+  // However, an IP-based geoposition is considered good enough.
+  struct SimpleGeoposition {
+    bool operator==(const SimpleGeoposition& other) const {
+      return latitude == other.latitude && longitude == other.longitude;
+    }
+    double latitude;
+    double longitude;
+  };
+
+  class Observer {
+   public:
+    // Notifies observers with the new schedule type whenever it changes.
+    virtual void OnScheduleTypeChanged(ScheduleType new_type) {}
+
+    // Emitted when the NightLight status is changed.
+    virtual void OnNightLightEnabledChanged(bool enabled) {}
+
+   protected:
+    virtual ~Observer() {}
+  };
+
+  static NightLightController* GetInstance();
+
+  // Provides the NightLightController with the user's geoposition so that it
+  // can calculate the sunset and sunrise times. This should only be called when
+  // the schedule type is set to "Sunset to Sunrise".
+  virtual void SetCurrentGeoposition(const SimpleGeoposition& position) = 0;
+
+  void AddObserver(Observer* observer);
+  void RemoveObserver(Observer* observer);
+
+ protected:
+  NightLightController();
+  virtual ~NightLightController();
+
+  base::ObserverList<Observer>::Unchecked observers_;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(NightLightController);
+};
+
+}  // namespace ash
+
+#endif  // ASH_PUBLIC_CPP_NIGHT_LIGHT_CONTROLLER_H_
diff --git a/ash/public/interfaces/BUILD.gn b/ash/public/interfaces/BUILD.gn
index 316ff54..0702956 100644
--- a/ash/public/interfaces/BUILD.gn
+++ b/ash/public/interfaces/BUILD.gn
@@ -14,7 +14,6 @@
     "cros_display_config.mojom",
     "ime_controller.mojom",
     "ime_info.mojom",
-    "night_light_controller.mojom",
     "tray_action.mojom",
     "voice_interaction_controller.mojom",
     "vpn_list.mojom",
diff --git a/ash/public/interfaces/night_light_controller.mojom b/ash/public/interfaces/night_light_controller.mojom
deleted file mode 100644
index ddad119..0000000
--- a/ash/public/interfaces/night_light_controller.mojom
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 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.
-
-module ash.mojom;
-
-// Represents a geolocation position fix. It's "simple" because it doesn't
-// expose all the parameters of the position interface as defined by the
-// Geolocation API Specification:
-// (https://dev.w3.org/geo/api/spec-source.html#position_interface).
-// The NightLightController is only interested in valid latitude and longitude.
-// It also doesn't require any specific accuracy. The more accurate the
-// positions, the more accurate sunset and sunrise times calculations. However,
-// an IP-based geoposition is considered good enough.
-struct SimpleGeoposition {
-  double latitude;
-  double longitude;
-};
-
-// Used by a client (e.g. Chrome) to provide the current user's geoposition.
-interface NightLightController {
-  // These values are written to logs. New enum values can be added, but
-  // existing enums must never be renumbered or deleted and reused.
-  enum ScheduleType {
-    // Automatic toggling of NightLight is turned off.
-    kNone = 0,
-
-    // Turned automatically on at the user's local sunset time, and off at the
-    // user's local sunrise time.
-    kSunsetToSunrise = 1,
-
-    // Toggled automatically based on the custom set start and end times
-    // selected by the user from the system settings.
-    kCustom = 2,
-  };
-
-  // Sets the client that will be notified of changes in the Night Light
-  // schedule type.
-  SetClient(NightLightClient client);
-
-  // Provides the NightLightController with the user's geoposition so that it
-  // can calculate the sunset and sunrise times. This should only be called when
-  // the schedule type is set to "Sunset to Sunrise".
-  SetCurrentGeoposition(SimpleGeoposition position);
-};
-
-// Used by ash to notify a client (e.g. Chrome) of the changes in the Night
-// Light schedule type.
-interface NightLightClient {
-  // Notifies the client with the new schedule type whenever it changes.
-  OnScheduleTypeChanged(NightLightController.ScheduleType new_type);
-};
diff --git a/ash/shell.cc b/ash/shell.cc
index a253384c..dc24de3 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -102,7 +102,7 @@
 #include "ash/system/model/virtual_keyboard_model.h"
 #include "ash/system/network/sms_observer.h"
 #include "ash/system/network/vpn_list.h"
-#include "ash/system/night_light/night_light_controller.h"
+#include "ash/system/night_light/night_light_controller_impl.h"
 #include "ash/system/power/backlights_forced_off_setter.h"
 #include "ash/system/power/peripheral_battery_notifier.h"
 #include "ash/system/power/power_button_controller.h"
@@ -422,10 +422,6 @@
   return docked_magnifier_controller_.get();
 }
 
-NightLightController* Shell::night_light_controller() {
-  return night_light_controller_.get();
-}
-
 ::wm::ActivationClient* Shell::activation_client() {
   return focus_controller_.get();
 }
@@ -780,8 +776,8 @@
   // Removes itself as an observer of |pref_service_|.
   shelf_controller_.reset();
 
-  // NightLightController depends on the PrefService as well as the window tree
-  // host manager, and must be destructed before them. crbug.com/724231.
+  // NightLightControllerImpl depends on the PrefService as well as the window
+  // tree host manager, and must be destructed before them. crbug.com/724231.
   night_light_controller_ = nullptr;
   // Similarly for DockedMagnifierControllerImpl.
   docked_magnifier_controller_ = nullptr;
@@ -935,7 +931,7 @@
 
   // Night Light depends on the display manager, the display color manager, and
   // aura::Env, so initialize it after all have been initialized.
-  night_light_controller_ = std::make_unique<NightLightController>();
+  night_light_controller_ = std::make_unique<NightLightControllerImpl>();
 
   // The WindowModalityController needs to be at the front of the input event
   // pretarget handler list to ensure that it processes input events when modal
diff --git a/ash/shell.h b/ash/shell.h
index 4bedc0a..0e36641d 100644
--- a/ash/shell.h
+++ b/ash/shell.h
@@ -143,7 +143,7 @@
 class MouseCursorEventFilter;
 class MruWindowTracker;
 class MultiDeviceNotificationPresenter;
-class NightLightController;
+class NightLightControllerImpl;
 class OverlayEventFilter;
 class OverviewController;
 class PartialMagnificationController;
@@ -414,7 +414,9 @@
     return mouse_cursor_filter_.get();
   }
   MruWindowTracker* mru_window_tracker() { return mru_window_tracker_.get(); }
-  NightLightController* night_light_controller();
+  NightLightControllerImpl* night_light_controller() {
+    return night_light_controller_.get();
+  }
   OverlayEventFilter* overlay_filter() { return overlay_filter_.get(); }
   PartialMagnificationController* partial_magnification_controller() {
     return partial_magnification_controller_.get();
@@ -675,7 +677,7 @@
       multidevice_notification_presenter_;
   std::unique_ptr<ResizeShadowController> resize_shadow_controller_;
   std::unique_ptr<SessionControllerImpl> session_controller_;
-  std::unique_ptr<NightLightController> night_light_controller_;
+  std::unique_ptr<NightLightControllerImpl> night_light_controller_;
   std::unique_ptr<PolicyRecommendationRestorer> policy_recommendation_restorer_;
   std::unique_ptr<ScreenSwitchCheckController> screen_switch_check_controller_;
   std::unique_ptr<ShelfController> shelf_controller_;
diff --git a/ash/strings/ash_strings_am.xtb b/ash/strings/ash_strings_am.xtb
index b9c7020..44ac96d 100644
--- a/ash/strings/ash_strings_am.xtb
+++ b/ash/strings/ash_strings_am.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">የእርስዎን ቋንቋ ያቀናብሩ</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">ጽሑፍ ግቤት</translation>
 <translation id="1993072747612765854">ስለቅርብ ጊዜው የ<ph name="SYSTEM_APP_NAME" /> ዝማኔ የበለጠ ይረዱ</translation>
 <translation id="1995660704900986789">ኃይል አጥፋ</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">የተገናኙ የUSB-C መሣሪያዎችን ኃይል በመሙላት ላይ</translation>
 <translation id="7705524343798198388">ቪ ፒ ኤን</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ማሳወቂያ}one{# ማሳወቂያዎች}other{# ማሳወቂያዎች}}</translation>
+<translation id="7749443890790263709">የተደረሰባቸው የዴስኮች ከፍተኛ ብዛት።</translation>
 <translation id="776344839111254542">የዝማኔ ዝርዝሮችን ለማየት ጠቅ ያድርጉ</translation>
 <translation id="7780159184141939021">ማያ ገጹን አሽከርክር</translation>
 <translation id="7796353162336583443">ማስታወሻ ለመያዝ፣ ቅጽበታዊ ገጽ እይታን ለማንሳት፣ Google ረዳቱን፣ ሌዘር ጠቋሚውን ወይም ማጉያ መነጽሩን ለመጠቀም በመደርደሪያው ላይ ያለውን የስታይለስ አዝራሩን መታ ያድርጉ።</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">ማስታወሻን ይፍጠሩ</translation>
 <translation id="8375916635258623388">ይህ <ph name="DEVICE_NAME" /> እና የእርስዎ ስልክ በራስ-ሰር ይገናኛሉ</translation>
+<translation id="8388750414311082622">የመጨረሻ ዴስክ ሊወገድ አይችልም።</translation>
 <translation id="8392451568018454956">የ<ph name="USER_EMAIL_ADDRESS" /> አማራጮች ምናሌ</translation>
 <translation id="8394567579869570560">የእርስዎ ወላጅ ይህን መሣሪያ ቆልፈውታል</translation>
 <translation id="8406981827175133772">የሙሉ ማያ ገጽ ማጉያ</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index 9e060e2..abe0891 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0 درجة</translation>
 <translation id="1957958912175573503">تعيين اللغة</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">إدخال نصي</translation>
 <translation id="1993072747612765854">مزيد من المعلومات حول آخر تحديث لتطبيق <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">إيقاف التشغيل</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">‏جارٍ شحن أجهزة USB-C المتصلة</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{إشعار واحد}zero{# إشعار}two{إشعاران (#)}few{# إشعارات}many{# إشعارًا}other{# إشعار}}</translation>
+<translation id="7749443890790263709">تم تجاوز أقصى عدد مسموح به من محطات الإرساء.</translation>
 <translation id="776344839111254542">النقر لعرض تفاصيل التحديث</translation>
 <translation id="7780159184141939021">تدوير الشاشة</translation>
 <translation id="7796353162336583443">‏انقر على زر قلم الشاشة على الرف لتدوين ملاحظة أو الحصول على لقطة شاشة أو استخدام مساعد Google أو مؤشر الليزر أو العدسة المكبرة.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">إنشاء ملاحظة</translation>
 <translation id="8375916635258623388">سيتم الربط تلقائيًا بين جهاز <ph name="DEVICE_NAME" /> هذا وهاتفك.</translation>
+<translation id="8388750414311082622">تتعذّر إزالة سطح المكتب الأخير.</translation>
 <translation id="8392451568018454956">قائمة الخيارات لـ <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">قفّل أحد الوالدين هذا الجهاز</translation>
 <translation id="8406981827175133772">مُكبِّر بوضع ملء الشاشة</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 07e7e60a..c09445c 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Задайте език</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Въвеждане на текст</translation>
 <translation id="1993072747612765854">Научете повече за най-новата актуализация на <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Изключване</translation>
 <translation id="2012624427112548395">Ctrl + клавиш „Търсене“ + H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Свързаните устройства с USB-C се зареждат</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 известие}other{# известия}}</translation>
+<translation id="7749443890790263709">Достигнат е максималният брой работни кътове.</translation>
 <translation id="776344839111254542">Кликнете, за да видите подробности за актуализацията</translation>
 <translation id="7780159184141939021">Завъртане на екрана</translation>
 <translation id="7796353162336583443">Докоснете бутона с икона на писалка в лавицата, за да създадете бележка, да направите екранна снимка или да използвате Google Асистент, лазерната показалка или лупата.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Създаване на бележка</translation>
 <translation id="8375916635258623388">Това устройство <ph name="DEVICE_NAME" /> и телефонът ви ще се свържат автоматично</translation>
+<translation id="8388750414311082622">Последният работен кът не може да бъде премахнат.</translation>
 <translation id="8392451568018454956">Меню с опции за <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Родителят ви заключи това устройство</translation>
 <translation id="8406981827175133772">Лупа за увеличаване на целия екран</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index 1ff11b5..72b80dc 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">০°</translation>
 <translation id="1957958912175573503">আপনার ভাষা সেট করুন</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">টেক্সট লেখার ফিল্ড</translation>
 <translation id="1993072747612765854">সাম্প্রতিক <ph name="SYSTEM_APP_NAME" /> আপডেট সম্পর্কে আরও জানুন</translation>
 <translation id="1995660704900986789">পাওয়ার বন্ধ করুন</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">সংযুক্ত USB-C ডিভাইসগুলি চার্জ হচ্ছে</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{১টি বিজ্ঞপ্তি}one{#টি বিজ্ঞপ্তি}other{#টি বিজ্ঞপ্তি}}</translation>
+<translation id="7749443890790263709">সর্বাধিক সংখ্যক ডেস্ক যোগ করা হয়ে গেছে।</translation>
 <translation id="776344839111254542">আপডেটের বিশদ বিবরণ জানার জন্য ক্লিক করুন</translation>
 <translation id="7780159184141939021">স্ক্রিন ঘোরান</translation>
 <translation id="7796353162336583443">একটি নোট, স্ক্রিনশট নিতে, Google অ্যাসিস্ট্যান্ট, লেজার পয়েন্টার বা ম্যাগনিফিকেশনের কাচ ব্যবহার করার জন্য শেলফের স্টাইলাস বোতামটি ট্যাপ করুন।</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">নোট তৈরি করুন</translation>
 <translation id="8375916635258623388">এই <ph name="DEVICE_NAME" />টি এবং আপনার ফোন নিজে থেকেই কানেক্ট হয়ে যাবে</translation>
+<translation id="8388750414311082622">শেষ ডেস্কটি সরানো যায়নি।</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> এর জন্য বিকল্পগুলির মেনু</translation>
 <translation id="8394567579869570560">আপনার অভিভাবক এই ডিভাইসটি লক করে দিয়েছেন</translation>
 <translation id="8406981827175133772">ফুল-স্ক্রিন ম্যাগনিফায়ার</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb
index 408e53097..245ef7b 100644
--- a/ash/strings/ash_strings_ca.xtb
+++ b/ash/strings/ash_strings_ca.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Estableix el teu idioma</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Introducció de text</translation>
 <translation id="1993072747612765854">Obtén més informació sobre l'última actualització de: <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Apaga</translation>
 <translation id="2012624427112548395">Ctrl+Cerca+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">S'estan carregant els dispositius USB-C connectats</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificació}other{# notificacions}}</translation>
+<translation id="7749443890790263709">S'ha assolit el nombre màxim d'escriptoris.</translation>
 <translation id="776344839111254542">Fes clic per veure els detalls de l'actualització</translation>
 <translation id="7780159184141939021">Gira la pantalla</translation>
 <translation id="7796353162336583443">Toca el botó del llapis òptic al prestatge per escriure una nota, fer una captura de pantalla, utilitzar l'Assistent de Google o fer-lo servir com a punter làser o lupa.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Crea una nota</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> i el teu telèfon es connectaran automàticament</translation>
+<translation id="8388750414311082622">L'últim escriptori no es pot suprimir.</translation>
 <translation id="8392451568018454956">Menú d'opcions per a <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">El teu pare o la teva mare han bloquejat aquest dispositiu</translation>
 <translation id="8406981827175133772">Lupa de pantalla completa</translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index 7400b9c..d990e177 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Nastavit jazyk</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Zadávání textu</translation>
 <translation id="1993072747612765854">Další informace o nejnovější aktualizaci systému <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Vypnout</translation>
 <translation id="2012624427112548395">Ctrl+Hledat+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Nabíjení připojených zařízení USB Type-C</translation>
 <translation id="7705524343798198388">Síť VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 oznámení}few{# oznámení}many{# oznámení}other{# oznámení}}</translation>
+<translation id="7749443890790263709">Byl dosažen maximální počet ploch.</translation>
 <translation id="776344839111254542">Kliknutím zobrazíte podrobnosti o aktualizaci</translation>
 <translation id="7780159184141939021">Otočit obrazovku</translation>
 <translation id="7796353162336583443">Klepnutím na tlačítko dotykového pera na poličce můžete pořídit poznámku nebo snímek obrazovky, případně použít Asistenta Google, laserové ukazovátko nebo lupu.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Vytvořit poznámku</translation>
 <translation id="8375916635258623388">Toto zařízení <ph name="DEVICE_NAME" />a váš telefon se automaticky spojí</translation>
+<translation id="8388750414311082622">Poslední plochu nelze odstranit.</translation>
 <translation id="8392451568018454956">Nabídka možností pro uživatele <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Rodič toto zařízení uzamkl</translation>
 <translation id="8406981827175133772">Lupa celé obrazovky</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb
index 7edb75e..4740ace5 100644
--- a/ash/strings/ash_strings_da.xtb
+++ b/ash/strings/ash_strings_da.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Angiv dit sprog</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Tekstinput</translation>
 <translation id="1993072747612765854">Få flere oplysninger om den nyeste <ph name="SYSTEM_APP_NAME" />-opdatering</translation>
 <translation id="1995660704900986789">Sluk</translation>
 <translation id="2012624427112548395">Ctrl+Søg+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Oplader tilsluttede USB-C-enheder</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifikation}one{# notifikation}other{# notifikationer}}</translation>
+<translation id="7749443890790263709">Det maksimale antal skriveborde er nået.</translation>
 <translation id="776344839111254542">Klik for at se opdateringsoplysninger</translation>
 <translation id="7780159184141939021">Roter skærm</translation>
 <translation id="7796353162336583443">Tryk på knappen for styluspen på hylden for at skrive en note, tage et screenshot eller bruge Google Assistent, laserpegepinden eller luppen.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Opret note</translation>
 <translation id="8375916635258623388">Denne <ph name="DEVICE_NAME" /> og din telefon forbindes automatisk</translation>
+<translation id="8388750414311082622">Det seneste skrivebord kan ikke fjernes.</translation>
 <translation id="8392451568018454956">Menuen Indstillinger for <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Din forælder har låst denne enhed</translation>
 <translation id="8406981827175133772">Forstørrelse af fuld skærm</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb
index 697ea40..db62b19 100644
--- a/ash/strings/ash_strings_de.xtb
+++ b/ash/strings/ash_strings_de.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Sprache festlegen</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Texteingabe</translation>
 <translation id="1993072747612765854">Weitere Informationen zum aktuellen <ph name="SYSTEM_APP_NAME" />-Update</translation>
 <translation id="1995660704900986789">Ausschalten</translation>
 <translation id="2012624427112548395">Strg + Suche + H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Verbundene USB-C-Geräte werden geladen</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 Benachrichtigung}other{# Benachrichtigungen}}</translation>
+<translation id="7749443890790263709">Maximale Anzahl von Arbeitsbereichen erreicht.</translation>
 <translation id="776344839111254542">Zum Aufrufen von Aktualisierungsdetails klicken</translation>
 <translation id="7780159184141939021">Bildschirm drehen</translation>
 <translation id="7796353162336583443">Tippen Sie auf die Eingabestift-Schaltfläche in der Ablage, um Notizen oder Screenshots zu erstellen, Google Assistant zu aktivieren oder den Laserpointer oder die Lupe zu verwenden.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" /> <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Notiz erstellen</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> und Ihr Smartphone werden automatisch miteinander verbunden</translation>
+<translation id="8388750414311082622">Letzter Arbeitsbereich kann nicht entfernt werden.</translation>
 <translation id="8392451568018454956">Optionsmenü für <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Deine Eltern haben dieses Gerät gesperrt</translation>
 <translation id="8406981827175133772">Vollbildlupe</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb
index 07417fb..edf532bc 100644
--- a/ash/strings/ash_strings_el.xtb
+++ b/ash/strings/ash_strings_el.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Ρύθμιση της γλώσσας σας</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Εισαγωγή κειμένου</translation>
 <translation id="1993072747612765854">Μάθετε περισσότερα σχετικά με την πιο πρόσφατη ενημέρωση της εφαρμογής <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Απενεργοποίηση</translation>
 <translation id="2012624427112548395">Ctrl+Πλήκτρο αναζήτησης+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Φόρτιση συνδεδεμένων συσκευών USB-C</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ειδοποίηση}other{# ειδοποιήσεις}}</translation>
+<translation id="7749443890790263709">Συμπληρώθηκε ο μέγιστος αριθμός γραφείων.</translation>
 <translation id="776344839111254542">Κάντε κλικ, για να δείτε τις λεπτομέρειες της ενημέρωσης</translation>
 <translation id="7780159184141939021">Περιστροφή οθόνης</translation>
 <translation id="7796353162336583443">Πατήστε το κουμπί με τη γραφίδα στο ράφι, για να δημιουργήσετε μια σημείωση, ένα στιγμιότυπο οθόνης, να χρησιμοποιήσετε τον Βοηθό Google, τον δείκτη λέιζερ ή τον μεγεθυντικό φακό.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Δημιουργία σημείωσης</translation>
 <translation id="8375916635258623388">Η συσκευή <ph name="DEVICE_NAME" /> και το τηλέφωνό σας θα συνδεθούν αυτόματα</translation>
+<translation id="8388750414311082622">Δεν είναι δυνατή η κατάργηση του τελευταίου γραφείου.</translation>
 <translation id="8392451568018454956">Μενού επιλογών για τη διεύθυνση <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Ο γονέας σας κλείδωσε αυτήν τη συσκευή</translation>
 <translation id="8406981827175133772">Μεγεθυντικός φακός πλήρους οθόνης</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index 879085b..5566bf5 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Set your language</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Text input</translation>
 <translation id="1993072747612765854">Learn more about the latest <ph name="SYSTEM_APP_NAME" /> update</translation>
 <translation id="1995660704900986789">Power off</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Charging connected USB-C devices</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}other{# notifications}}</translation>
+<translation id="7749443890790263709">Maximum number of desks reached.</translation>
 <translation id="776344839111254542">Click to view update details</translation>
 <translation id="7780159184141939021">Rotate screen</translation>
 <translation id="7796353162336583443">Tap the stylus button on the shelf to take a note, screenshot, use the Google Assistant, laser pointer or magnifying glass.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Create note</translation>
 <translation id="8375916635258623388">This <ph name="DEVICE_NAME" /> and your phone will connect automatically</translation>
+<translation id="8388750414311082622">Last desk can't be removed.</translation>
 <translation id="8392451568018454956">Options menu for <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Your parent has locked this device</translation>
 <translation id="8406981827175133772">Full-screen Magnifier</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index fbdde137..c3d6929e 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Establecer el idioma</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Ingreso de texto</translation>
 <translation id="1993072747612765854">Más información sobre la actualización más reciente de <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Apagar</translation>
 <translation id="2012624427112548395">Ctrl+Buscar+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Cargando dispositivos USB-C conectados</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificaciones}}</translation>
+<translation id="7749443890790263709">Se alcanzó la cantidad máxima de escritorios.</translation>
 <translation id="776344839111254542">Haz clic para ver los detalles de la actualización</translation>
 <translation id="7780159184141939021">Girar pantalla</translation>
 <translation id="7796353162336583443">Presiona el botón de la pluma stylus en la biblioteca para tomar notas o capturas de pantalla, usar el Asistente de Google y activar las funciones de puntero láser o lupa.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Crear nota</translation>
 <translation id="8375916635258623388">Este dispositivo <ph name="DEVICE_NAME" /> y el teléfono se conectarán automáticamente</translation>
+<translation id="8388750414311082622">No se puede quitar el último escritorio.</translation>
 <translation id="8392451568018454956">Menú de opciones para <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Tus padres bloquearon este dispositivo</translation>
 <translation id="8406981827175133772">Lupa de pantalla completa</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index d03fe4e..7d0962dd 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Elegir el idioma</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Introducción de texto</translation>
 <translation id="1993072747612765854">Consulta más información sobre la última actualización de <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Apagar</translation>
 <translation id="2012624427112548395">Ctrl + Tecla de búsqueda + H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Cargando los dispositivos USB tipo C conectados</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificaciones}}</translation>
+<translation id="7749443890790263709">Has alcanzado el número máximo de escritorios.</translation>
 <translation id="776344839111254542">Haz clic para ver los detalles de la actualización</translation>
 <translation id="7780159184141939021">Girar pantalla</translation>
 <translation id="7796353162336583443">Toca el botón del lápiz óptico situado en la estantería para tomar una nota, hacer una captura de pantalla o utilizar el Asistente de Google, el puntero láser o la lupa.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Crear nota</translation>
 <translation id="8375916635258623388">Este <ph name="DEVICE_NAME" /> y tu teléfono se conectarán automáticamente</translation>
+<translation id="8388750414311082622">No se puede quitar el último escritorio.</translation>
 <translation id="8392451568018454956">Menú de opciones de <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Tu padre, madre o tutor han bloqueado este dispositivo</translation>
 <translation id="8406981827175133772">Lupa de pantalla completa</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb
index 346ec0cb..c3b7618a 100644
--- a/ash/strings/ash_strings_et.xtb
+++ b/ash/strings/ash_strings_et.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Valige keel</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Tekstisisestus</translation>
 <translation id="1993072747612765854">Vaadake lisateavet operatsioonisüsteemi <ph name="SYSTEM_APP_NAME" /> uusima värskenduse kohta</translation>
 <translation id="1995660704900986789">Lülita välja</translation>
 <translation id="2012624427112548395">Ctrl + otsinguklahv + H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Ühendatud C-tüüpi USB-seadmete laadimine</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 märguanne}other{# märguannet}}</translation>
+<translation id="7749443890790263709">Töölaudade maksimaalne arv on täis.</translation>
 <translation id="776344839111254542">Klõpsake värskenduse üksikasjade vaatamiseks</translation>
 <translation id="7780159184141939021">Ekraanikuva pööramine</translation>
 <translation id="7796353162336583443">Puudutage riiulil elektronpliiatsi nuppu, et teha märkmeid, jäädvustada ekraanipilti, kasutada Google'i assistenti, laserkursorit või suurendusklaasi.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" /> <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Märkme loomine</translation>
 <translation id="8375916635258623388">See <ph name="DEVICE_NAME" /> ja teie telefon ühendatakse automaatselt</translation>
+<translation id="8388750414311082622">Viimast töölauda ei saa eemaldada.</translation>
 <translation id="8392451568018454956">Konto <ph name="USER_EMAIL_ADDRESS" /> valikute menüü</translation>
 <translation id="8394567579869570560">Vanem lukustas selle seadme</translation>
 <translation id="8406981827175133772">Täisekraani luup</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 05b28247..2aec3d1 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">۰ درجه</translation>
 <translation id="1957958912175573503">تنظیم زبان</translation>
 <translation id="1969011864782743497">‏<ph name="DEVICE_NAME" /> (‏USB)</translation>
+<translation id="1978498689038657292">ورودی نوشتار</translation>
 <translation id="1993072747612765854">درباره جدیدترین به‌روزرسانی‌ <ph name="SYSTEM_APP_NAME" /> بیشتر بدانید.</translation>
 <translation id="1995660704900986789">خاموش کردن</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">‏در حال شارژ کردن دستگاه‌های USB-C متصل</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{۱ اعلان}one{# اعلان}other{# اعلان}}</translation>
+<translation id="7749443890790263709">به حداکثر تعداد میز رسیده‌اید.</translation>
 <translation id="776344839111254542">برای مشاهده جزئیات به‌روزرسانی کلیک کنید</translation>
 <translation id="7780159184141939021">چرخش صفحه</translation>
 <translation id="7796353162336583443">‏برای یادداشت‌برداری، گرفتن عکس صفحه‌نمایش، استفاده از «دستیار Google»، نشانگر لیزری یا ذره‌بین، روی دکمه قلم در قفسه ضربه بزنید.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">یادداشت ایجاد کنید</translation>
 <translation id="8375916635258623388">این <ph name="DEVICE_NAME" /> و تلفنتان به‌طور خودکار متصل می‌شوند</translation>
+<translation id="8388750414311082622">میز آخر را نمی‌توان حذف کرد.</translation>
 <translation id="8392451568018454956">منوی گزینه‌ها برای <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">پدر یا مادرتان این دستگاه را قفل کرده است</translation>
 <translation id="8406981827175133772">ذره‌بین تمام‌صفحه</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index b6ab501..0b5b79e 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Määritä kieli</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Tekstinsyöttö</translation>
 <translation id="1993072747612765854">Lue lisää uusimmasta <ph name="SYSTEM_APP_NAME" /> ‑päivityksestä.</translation>
 <translation id="1995660704900986789">Virta pois</translation>
 <translation id="2012624427112548395">Ctrl + haku + H</translation>
@@ -439,6 +440,7 @@
 <translation id="7692480393933218409">Ladataan yhdistettyjä C-tyypin USB-laitteita</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ilmoitus}other{# ilmoitusta}}</translation>
+<translation id="7749443890790263709">Työpöytiä on enimmäismäärä.</translation>
 <translation id="776344839111254542">Klikkaa nähdäksesi päivityksen tiedot</translation>
 <translation id="7780159184141939021">Käännä näyttö</translation>
 <translation id="7796353162336583443">Napauttamalla hyllyn näyttökynäpainiketta voit tehdä muistiinpanoja, tallentaa kuvakaappauksen ja käyttää Google Assistantia, laserosoitinta tai suurennuslasia.</translation>
@@ -482,6 +484,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" /> <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Luo muistiinpano</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> muodostaa yhteyden puhelimeesi automaattisesti</translation>
+<translation id="8388750414311082622">Viimeistä työpöytää ei voi poistaa.</translation>
 <translation id="8392451568018454956">Tilin <ph name="USER_EMAIL_ADDRESS" /> vaihtoehtovalikko</translation>
 <translation id="8394567579869570560">Vanhempasi lukitsi tämän laitteen</translation>
 <translation id="8406981827175133772">Koko näytön suurennus</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index 964bb2b..38629765 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Itakda ang iyong wika</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Pag-input ng text</translation>
 <translation id="1993072747612765854">Matuto pa tungkol sa pinakabagong update sa <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">I-off</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">China-charge ang mga nakakonektang USB-C device</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}other{# na notification}}</translation>
+<translation id="7749443890790263709">Naabot ang maximum na bilang ng desk.</translation>
 <translation id="776344839111254542">I-click upang tingnan ang mga detalye ng update</translation>
 <translation id="7780159184141939021">I-rotate ang Screen</translation>
 <translation id="7796353162336583443">I-tap ang button ng stylus sa shelf upang magsulat ng tala, mag-screenshot, gamitin ang Google Assistant, laser pointer, o magnifying glass.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Gumawa ng tala</translation>
 <translation id="8375916635258623388">Awtomatikong kokonekta ang <ph name="DEVICE_NAME" /> na ito at ang iyong telepono</translation>
+<translation id="8388750414311082622">Hindi puwedeng alisin ang huling desk.</translation>
 <translation id="8392451568018454956">Menu ng mga pagpipilian para sa <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Ni-lock ng iyong magulang ang device na ito</translation>
 <translation id="8406981827175133772">Fullscreen Magnifier</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index 32d6d8a..09eea90 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Définir la langue</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Saisie de texte</translation>
 <translation id="1993072747612765854">En savoir plus sur la dernière mise à jour <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Éteindre</translation>
 <translation id="2012624427112548395">Ctrl+Recherche+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Charge des appareils USB de type C connectés</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}other{# notifications}}</translation>
+<translation id="7749443890790263709">Vous avez atteint le nombre maximal de bureaux.</translation>
 <translation id="776344839111254542">Cliquer pour afficher les informations relatives à la mise à jour</translation>
 <translation id="7780159184141939021">Rotation d'écran</translation>
 <translation id="7796353162336583443">Appuyez sur le bouton du stylet situé sur l'étagère pour prendre des notes, effectuer des captures d'écran et utiliser l'Assistant Google, le pointeur laser ou la loupe.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Créer une note</translation>
 <translation id="8375916635258623388">L'appareil <ph name="DEVICE_NAME" /> et votre téléphone seront associés automatiquement</translation>
+<translation id="8388750414311082622">Impossible de supprimer le dernier bureau.</translation>
 <translation id="8392451568018454956">Menu "Options" de l'adresse e-mail <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Ton parent a verrouillé cet appareil</translation>
 <translation id="8406981827175133772">Loupe plein écran</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index 439e7bfd..dc517c9 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">તમારી ભાષા સેટ કરો</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">ટેક્સ્ટ ઇનપુટ</translation>
 <translation id="1993072747612765854">નવીનતમ <ph name="SYSTEM_APP_NAME" /> અપડેટ વિશે વધુ જાણો</translation>
 <translation id="1995660704900986789">પાવર બંધ કરો</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">કનેક્ટ કરેલા USB-C ઉપકરણોને ચાર્જ કરી રહ્યાં છે</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 નોટિફિકેશન}one{# નોટિફિકેશન}other{# નોટિફિકેશન}}</translation>
+<translation id="7749443890790263709">ડેસ્કની મહત્તમ સંખ્યા પર પહોંચી ગયા.</translation>
 <translation id="776344839111254542">અપડેટની વિગતો જોવા માટે ક્લિક કરો</translation>
 <translation id="7780159184141939021">સ્ક્રીનને ફેરવો</translation>
 <translation id="7796353162336583443">એક નોંધ અથવા સ્ક્રીનશૉટ લેવા, Google સહાયક, લૅઝર પૉઇન્ટર અથવા બૃહદદર્શક કાચનો ઉપયોગ કરવા માટે શેલ્ફ પરના સ્ટાઇલસ બટનને ટૅપ કરો.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">નોંધ બનાવો</translation>
 <translation id="8375916635258623388">આ <ph name="DEVICE_NAME" /> અને તમારો ફોન ઑટોમૅટિક રીતે કનેક્ટ થશે</translation>
+<translation id="8388750414311082622">છેલ્લું ડેસ્ક કાઢી નાખી શકાતું નથી.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> માટે વિકલ્પો મેનૂ</translation>
 <translation id="8394567579869570560">તમારા માતાપિતાએ આ ડિવાઇસને લૉક કર્યું છે</translation>
 <translation id="8406981827175133772">પૂર્ણસ્ક્રીન મૅગ્નિફાયર</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb
index 0711912..4942584 100644
--- a/ash/strings/ash_strings_hi.xtb
+++ b/ash/strings/ash_strings_hi.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">अपनी भाषा सेट करें</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">टेक्स्ट इनपुट</translation>
 <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> के नए अपडेट के बारे में ज़्यादा जानें</translation>
 <translation id="1995660704900986789">पावर बंद करें</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">कनेक्ट किए गए USB-C डिवाइस चार्ज कर रहा है</translation>
 <translation id="7705524343798198388">वीपीएन</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{एक सूचना}one{# सूचनाएं}other{# सूचनाएं}}</translation>
+<translation id="7749443890790263709">ज़्यादा से ज़्यादा इतने ही डेस्क जोड़े जा सकते हैं.</translation>
 <translation id="776344839111254542">अपडेट के विवरण देखने के लिए क्लिक करें</translation>
 <translation id="7780159184141939021">स्क्रीन घुमाएं</translation>
 <translation id="7796353162336583443">नोट लेने, स्क्रीनशॉट लेने और Google Assistant, लेज़र पॉइंटर या आवर्धक ग्लास का इस्तेमाल करने के लिए अलमारी में मौजूद स्टाइलस बटन पर टैप करें.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">नोट बनाएं</translation>
 <translation id="8375916635258623388">यह <ph name="DEVICE_NAME" /> और आपका फ़ोन, अपने आप कनेक्ट हो जाएंगे</translation>
+<translation id="8388750414311082622">आखिरी डेस्क को हटाया नहीं जा सकता.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> के लिए विकल्प मेन्यू</translation>
 <translation id="8394567579869570560">आपके अभिभावक ने यह डिवाइस लॉक कर दिया है</translation>
 <translation id="8406981827175133772">फ़ुलस्क्रीन पर सामग्री को बड़ा दिखाने की सुविधा</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index 7903a09..52a19c9 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Postavite jezik</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Unos teksta</translation>
 <translation id="1993072747612765854">Saznajte više o najnovijem ažuriranju za <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Isključi</translation>
 <translation id="2012624427112548395">Ctrl + Search + H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Punjenje povezanih USB-C uređaja</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obavijest}one{# obavijest}few{# obavijesti}other{# obavijesti}}</translation>
+<translation id="7749443890790263709">Dosegnut je maksimalan broj radnih površina.</translation>
 <translation id="776344839111254542">Kliknite da biste vidjeli pojedinosti o ažuriranju</translation>
 <translation id="7780159184141939021">Zakretanje zaslona</translation>
 <translation id="7796353162336583443">Dodirnite gumb pisaljke na polici da biste napisali bilješku, izradili snimku zaslona ili upotrijebili Google asistent, laserski pokazivač ili povećalo.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Izrada bilješke</translation>
 <translation id="8375916635258623388">Ovaj uređaj <ph name="DEVICE_NAME" /> i vaš telefon povezat će se automatski</translation>
+<translation id="8388750414311082622">Zadnja radna površina ne može se ukloniti.</translation>
 <translation id="8392451568018454956">Izbornik opcija za korisnika <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Tvoj je roditelj zaključao ovaj uređaj</translation>
 <translation id="8406981827175133772">Povećalo za cijeli zaslon</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb
index 979d036..7fc1700 100644
--- a/ash/strings/ash_strings_hu.xtb
+++ b/ash/strings/ash_strings_hu.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Nyelv beállítása</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Szöveges bevitel</translation>
 <translation id="1993072747612765854">További információ a legújabb <ph name="SYSTEM_APP_NAME" />-frissítésről</translation>
 <translation id="1995660704900986789">Kikapcsolás</translation>
 <translation id="2012624427112548395">Ctrl+Keresés+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">C típusú USB-vel kompatibilis eszközök töltése</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 értesítés}other{# értesítés}}</translation>
+<translation id="7749443890790263709">Elérte az asztalok maximális számát.</translation>
 <translation id="776344839111254542">Kattintson a frissítés részleteinek megtekintéséhez</translation>
 <translation id="7780159184141939021">Képernyő elforgatása</translation>
 <translation id="7796353162336583443">Koppintson az érintőceruza gombjára a polcon, ha jegyzetet vagy képernyőképet szeretne készíteni, illetve ha a Google Segédet, a lézermutatót vagy a nagyítót kívánja használni.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Jegyzet létrehozása</translation>
 <translation id="8375916635258623388">A(z) <ph name="DEVICE_NAME" /> eszköz és a telefon automatikusan csatlakozik majd egymáshoz</translation>
+<translation id="8388750414311082622">Nem lehetséges a legutóbbi asztal eltávolítása.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> beállításainak menüje</translation>
 <translation id="8394567579869570560">A szülőd zárolta az eszközt</translation>
 <translation id="8406981827175133772">Teljes képernyős nagyító</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index ecfa8a34..ec65a55 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Setel bahasa Anda</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Masukan teks</translation>
 <translation id="1993072747612765854">Pelajari lebih lanjut update <ph name="SYSTEM_APP_NAME" /> terbaru</translation>
 <translation id="1995660704900986789">Matikan perangkat</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Mengisi daya perangkat USB-C yang tersambung</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifikasi}other{# notifikasi}}</translation>
+<translation id="7749443890790263709">Jumlah halaman kerja maksimum tercapai.</translation>
 <translation id="776344839111254542">Klik untuk melihat detail update</translation>
 <translation id="7780159184141939021">Memutar Layar</translation>
 <translation id="7796353162336583443">Ketuk tombol stilus di rak untuk mencatat, mengambil screenshot, menggunakan asisten, penunjuk laser, atau kaca pembesar.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Buat catatan</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> ini dan ponsel Anda akan terhubung otomatis</translation>
+<translation id="8388750414311082622">Halaman kerja terakhir tidak dapat dihapus.</translation>
 <translation id="8392451568018454956">Menu opsi untuk <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Orang tuamu mengunci perangkat ini</translation>
 <translation id="8406981827175133772">Kaca Pembesar Layar Penuh</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb
index c21feb78..52115d2 100644
--- a/ash/strings/ash_strings_it.xtb
+++ b/ash/strings/ash_strings_it.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Imposta la lingua</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Inserimento testo</translation>
 <translation id="1993072747612765854">Leggi ulteriori informazioni sull'ultimo aggiornamento di <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Spegni</translation>
 <translation id="2012624427112548395">CTRL + tasto per la ricerca + H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Dispositivi USB-C collegati in carica</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifica}other{# notifiche}}</translation>
+<translation id="7749443890790263709">Numero massimo di scrivanie raggiunto.</translation>
 <translation id="776344839111254542">Fai clic per visualizzare i dettagli dell'aggiornamento</translation>
 <translation id="7780159184141939021">Ruota lo schermo</translation>
 <translation id="7796353162336583443">Tocca il pulsante dello stilo nella shelf per creare note, acquisire screenshot, usare l'Assistente Google, il puntatore laser o la lente d'ingrandimento.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Crea nota</translation>
 <translation id="8375916635258623388">Questo dispositivo <ph name="DEVICE_NAME" /> e il telefono si connetteranno automaticamente</translation>
+<translation id="8388750414311082622">Impossibile rimuovere l'ultima scrivania.</translation>
 <translation id="8392451568018454956">Menu Opzioni per <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Uno dei tuoi genitori ha bloccato questo dispositivo</translation>
 <translation id="8406981827175133772">Lente d'ingrandimento a schermo intero</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index 3da61ec..dc87a6f 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">‎0°‎</translation>
 <translation id="1957958912175573503">בחירת שפה</translation>
 <translation id="1969011864782743497">‏<ph name="DEVICE_NAME" />‏ (USB)</translation>
+<translation id="1978498689038657292">קלט טקסט</translation>
 <translation id="1993072747612765854">מידע נוסף על העדכון האחרון של <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">כיבוי</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -438,6 +439,7 @@
 <translation id="7692480393933218409">‏טעינת מכשירים מחוברים עם יציאת USB-C</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{הודעה אחת}two{2 הודעות}many{# הודעות}other{# הודעות}}</translation>
+<translation id="7749443890790263709">הגעת למספר המקסימלי של שולחנות עבודה.</translation>
 <translation id="776344839111254542">לחץ כדי להציג את פרטי העדכון</translation>
 <translation id="7780159184141939021">סיבוב המסך</translation>
 <translation id="7796353162336583443">‏כדי לרשום הערה או לצלם צילום מסך, או כדי להשתמש ב-Google Assistant, בסמן הלייזר או בזכוכית המגדלת, צריך להקיש על לחצן הסטיילוס במדף.</translation>
@@ -481,6 +483,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">יצירת הערה</translation>
 <translation id="8375916635258623388">מכשיר <ph name="DEVICE_NAME" /> זה והטלפון יחוברו באופן אוטומטי</translation>
+<translation id="8388750414311082622">לא ניתן להסיר את שולחן העבודה האחרון.</translation>
 <translation id="8392451568018454956">תפריט אפשרויות עבור <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">הורה נעל את המכשיר הזה</translation>
 <translation id="8406981827175133772">זכוכית מגדלת במסך מלא</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index 8889e7d..c1bb27b 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">言語を設定</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" />(USB)</translation>
+<translation id="1978498689038657292">テキストを入力</translation>
 <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> の最新アップデートの詳細をご確認ください</translation>
 <translation id="1995660704900986789">電源を切る</translation>
 <translation id="2012624427112548395">Ctrl+検索+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">接続された USB-C デバイスを充電しています</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 件の通知}other{# 件の通知}}</translation>
+<translation id="7749443890790263709">デスクの数が上限に達しました。</translation>
 <translation id="776344839111254542">クリックしてアップデートの詳細を表示する</translation>
 <translation id="7780159184141939021">画面の回転</translation>
 <translation id="7796353162336583443">シェルフにあるタッチペン ボタンをタップして、メモやスクリーンショットをとったり、Google アシスタント、レーザー ポインタ、虫メガネを使用したりすることができます。</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">メモを作成</translation>
 <translation id="8375916635258623388">この <ph name="DEVICE_NAME" /> とお使いのスマートフォンは自動的に接続されます</translation>
+<translation id="8388750414311082622">最後のデスクは削除できません。</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> のオプション メニュー</translation>
 <translation id="8394567579869570560">保護者の方がこのデバイスをロックしました</translation>
 <translation id="8406981827175133772">拡大鏡(全画面)</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index 2836bbe..0989825 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">ನಿಮ್ಮ ಭಾಷೆಯನ್ನು ಹೊಂದಿಸಿ</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">ಪಠ್ಯ ಇನ್‌ಪುಟ್</translation>
 <translation id="1993072747612765854">ಇತ್ತೀಚಿನ <ph name="SYSTEM_APP_NAME" /> ಅಪ್‌ಡೇಟ್ ಕುರಿತು ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation>
 <translation id="1995660704900986789">ಪವರ್ ಆಫ್</translation>
 <translation id="2012624427112548395">Ctrl+ಹುಡುಕಾಟ+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">ಸಂಪರ್ಕಿತ USB-C ಸಾಧನಗಳನ್ನು ಚಾರ್ಜ್ ಮಾಡುತ್ತಿದೆ</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ಅಧಿಸೂಚನೆ}one{# ಅಧಿಸೂಚನೆಗಳು}other{# ಅಧಿಸೂಚನೆಗಳು}}</translation>
+<translation id="7749443890790263709">ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯ ಡೆಸ್ಕ್‌ಗಳನ್ನು ತಲುಪಲಾಗಿದೆ.</translation>
 <translation id="776344839111254542">ಅಪ್‌ಡೇಟ್‌ ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ</translation>
 <translation id="7780159184141939021">ಪರದೆಯನ್ನು ತಿರುಗಿಸಿ</translation>
 <translation id="7796353162336583443">ಟಿಪ್ಪಣಿ, ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳುವಾಗ, Google ಸಹಾಯಕ, ಲೇಸರ್‌ ಪಾಯಿಂಟರ್ ಅಥವಾ ಭೂತಗನ್ನಡಿ ಬಳಸಲು ಶೆಲ್ಫ್‌ನಲ್ಲಿ ಸ್ಟೈಲಸ್ ಬಟನ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">ಟಿಪ್ಪಣಿ ರಚಿಸಿ</translation>
 <translation id="8375916635258623388">ಈ <ph name="DEVICE_NAME" /> ಸಾಧನ ಮತ್ತು ನಿಮ್ಮ ಫೋನ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಗೊಳ್ಳುತ್ತವೆ</translation>
+<translation id="8388750414311082622">ಕೊನೆಯ ಡೆಸ್ಕ್ ಅನ್ನು ತೆಗೆದುಹಾಕುವಂತಿಲ್ಲ.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> ಅವರಿಗಾಗಿ ಆಯ್ಕೆಗಳ ಮೆನು</translation>
 <translation id="8394567579869570560">ನಿಮ್ಮ ಪೋಷಕರು ಈ ಸಾಧನವನ್ನು ಲಾಕ್ ಮಾಡಿದ್ದಾರೆ</translation>
 <translation id="8406981827175133772">ಫುಲ್‌ಸ್ಕ್ರೀನ್ ವರ್ಧಕ</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index b2a27fa0..1eb1d46 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">언어 설정</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" />(USB)</translation>
+<translation id="1978498689038657292">텍스트 입력</translation>
 <translation id="1993072747612765854">최신 <ph name="SYSTEM_APP_NAME" /> 업데이트에 관해 자세히 알아보세요.</translation>
 <translation id="1995660704900986789">끄기</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">연결된 USB-C 기기 충전 중</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{알림 1개}other{알림 #개}}</translation>
+<translation id="7749443890790263709">최대 데스크 개수에 도달했습니다.</translation>
 <translation id="776344839111254542">업데이트 세부정보를 보려면 클릭하세요.</translation>
 <translation id="7780159184141939021">화면 회전</translation>
 <translation id="7796353162336583443">실행기에서 스타일러스 버튼을 탭하여 메모를 작성하거나, 스크린샷을 찍거나, Google 어시스턴트, 레이저 포인터, 돋보기를 활용할 수 있습니다.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">메모 만들기</translation>
 <translation id="8375916635258623388">이 <ph name="DEVICE_NAME" />과(와) 휴대전화가 자동으로 연결됩니다.</translation>
+<translation id="8388750414311082622">마지막 데스크는 삭제할 수 없습니다.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" />의 옵션 메뉴</translation>
 <translation id="8394567579869570560">부모님이 이 기기를 잠갔습니다.</translation>
 <translation id="8406981827175133772">전체화면 돋보기</translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index 87b2748a..23b96bc 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Kalbos nustatymas</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Teksto įvestis</translation>
 <translation id="1993072747612765854">Sužinokite daugiau apie naujausią „<ph name="SYSTEM_APP_NAME" />“ naujinį</translation>
 <translation id="1995660704900986789">Išjungti maitinimą</translation>
 <translation id="2012624427112548395">„Ctrl“ + paieškos klavišas + H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Įkraunami prijungti USB-C įrenginiai</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 pranešimas}one{# pranešimas}few{# pranešimai}many{# pranešimo}other{# pranešimų}}</translation>
+<translation id="7749443890790263709">Pasiektas didžiausias pultų skaičius.</translation>
 <translation id="776344839111254542">Spustelėkite ir peržiūrėkite išsamią atnaujinimo informaciją</translation>
 <translation id="7780159184141939021">Ekrano pasukimas</translation>
 <translation id="7796353162336583443">Palieskite rašiklio mygtuką lentynoje, kad galėtumėte sukurti užrašą, ekrano kopiją, naudoti „Google“ padėjėją, lazerinį žymeklį arba didinamąjį stiklą.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Sukurti užrašą</translation>
 <translation id="8375916635258623388">Šis „<ph name="DEVICE_NAME" />“ įrenginys ir telefonas bus susieti automatiškai</translation>
+<translation id="8388750414311082622">Negalima pašalinti paskutinio pulto.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> skirtų parinkčių meniu</translation>
 <translation id="8394567579869570560">Vienas iš tėvų užrakino šį įrenginį</translation>
 <translation id="8406981827175133772">Viso ekrano didintuvas</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb
index 9704de9..9cf1da5b 100644
--- a/ash/strings/ash_strings_lv.xtb
+++ b/ash/strings/ash_strings_lv.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Iestatiet savu valodu.</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Teksta ievade</translation>
 <translation id="1993072747612765854">Uzzināt vairāk par pēdējo <ph name="SYSTEM_APP_NAME" /> atjauninājumu</translation>
 <translation id="1995660704900986789">Izslēgt</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Notiek pievienoto USB-C ierīču uzlāde</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 paziņojums}zero{# paziņojumu}one{# paziņojums}other{# paziņojumi}}</translation>
+<translation id="7749443890790263709">Sasniegts maksimālais darbvietu skaits.</translation>
 <translation id="776344839111254542">Noklikšķiniet, lai skatītu atjauninājuma datus.</translation>
 <translation id="7780159184141939021">Ekrāna pagriešana</translation>
 <translation id="7796353162336583443">Pieskarieties skārienekrāna pildspalvas pogai plauktā, lai veiktu piezīmes vai ekrānuzņēmumus, izmantotu Google asistentu, lāzera rādītāju vai lupu.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Izveidot piezīmi</translation>
 <translation id="8375916635258623388">Tiks automātiski izveidots šīs ierīces <ph name="DEVICE_NAME" /> un jūsu tālruņa savienojums</translation>
+<translation id="8388750414311082622">Pēdējo darbvietu nevar noņemt.</translation>
 <translation id="8392451568018454956">Opciju izvēlne kontam <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Jūsu vecāki bloķēja šo ierīci</translation>
 <translation id="8406981827175133772">Pilnekrāna lupa</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb
index e987ca6..e2735b95 100644
--- a/ash/strings/ash_strings_ml.xtb
+++ b/ash/strings/ash_strings_ml.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">നിങ്ങളുടെ ഭാഷ സജ്ജീകരിക്കുക</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">ടെക്‌സ്‌റ്റ് ഇൻപുട്ട്</translation>
 <translation id="1993072747612765854">ഏറ്റവും പുതിയ <ph name="SYSTEM_APP_NAME" /> അപ്‌ഡേറ്റിനെ കുറിച്ച് കൂടുതലറിയുക</translation>
 <translation id="1995660704900986789">പവർ ഓഫാക്കുക</translation>
 <translation id="2012624427112548395">Ctrl+തിരയൽ+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">കണക്‌റ്റുചെയ്‌ത USB-C ഉപകരണങ്ങൾ ചാർജ് ചെയ്യുന്നു</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{ഒരു അറിയിപ്പ്}other{# അറിയിപ്പുകൾ}}</translation>
+<translation id="7749443890790263709">ഡെസ്‌ക്കുകളുടെ പരമാവധി എണ്ണത്തിൽ എത്തിയിരിക്കുന്നു.</translation>
 <translation id="776344839111254542">അപ്‌ഡേറ്റ് ചെയ്‌ത വിശദാംശങ്ങൾ കാണാൻ ‌ക്ലിക്ക് ചെയ്യുക</translation>
 <translation id="7780159184141939021">സ്‌ക്രീൻ തിരിക്കുക</translation>
 <translation id="7796353162336583443">കുറിപ്പോ സ്‌ക്രീന്‍ഷോട്ടോ എടുക്കാനും Google സഹായിയോ ലേസർ പോയിന്‍ററോ ഭൂതക്കണ്ണാടിയോ ഉപയോഗിക്കാനും ഷെൽഫിലെ സ്‌റ്റൈലസ് ബട്ടൺ ടാപ്പ് ചെയ്യുക.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">കുറിപ്പ് സൃഷ്‌ടിക്കുക</translation>
 <translation id="8375916635258623388">ഈ <ph name="DEVICE_NAME" /> ഉം നിങ്ങളുടെ ഫോണും സ്വമേധയാ കണക്റ്റ് ചെയ്യും</translation>
+<translation id="8388750414311082622">അവസാന ഡെസ്‌ക്കിനെ നീക്കം ചെയ്യാനാവില്ല.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> എന്നതിനുള്ള ഓപ്‌ഷൻ മെനു</translation>
 <translation id="8394567579869570560">നിങ്ങളുടെ രക്ഷിതാവ് ഈ ഉപകരണം ലോക്ക് ചെയ്‌തു</translation>
 <translation id="8406981827175133772">പൂർണ്ണസ്‌ക്രീൻ മാഗ്‌നിഫയർ</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index 06dacce..45af1833 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">तुमची भाषा सेट करा</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">मजकूर इनपुट</translation>
 <translation id="1993072747612765854"><ph name="SYSTEM_APP_NAME" /> च्या नवीनतम अपडेटबाबत अधिक जाणून घ्या</translation>
 <translation id="1995660704900986789">बंद करा</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">कनेक्ट केलेले USB-C डिव्‍हाइसेस चार्ज करीत आहे</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{एक सूचना}other{# सूचना}}</translation>
+<translation id="7749443890790263709">डेस्कची कमाल मर्यादा गाठली आहे.</translation>
 <translation id="776344839111254542">अपडेट तपशील पाहण्यासाठी क्लिक करा</translation>
 <translation id="7780159184141939021">स्क्रीन फिरवा</translation>
 <translation id="7796353162336583443">नोंद करून घेण्यासाठी, स्क्रीनशॉट घेण्यासाठी, Google Assistant, लेझर पॉइंटर किंवा भिंग वापरण्यासाठी शेल्फवरील स्टायलस बटणावर टॅप करा.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">टीप तयार करा</translation>
 <translation id="8375916635258623388">हे <ph name="DEVICE_NAME" />आणि तुमचा फोन आपोआप कनेक्ट होतील</translation>
+<translation id="8388750414311082622">शेवटचा डेस्क काढून टाकू शकत नाही.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> साठी पर्याय मेनू</translation>
 <translation id="8394567579869570560">तुमच्या पालकाने हे डिव्हाइस लॉक केले</translation>
 <translation id="8406981827175133772">फुलस्क्रीन मॅग्निफायर</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index a292ae2..ebf13f7 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Tetapkan bahasa anda</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Input teks</translation>
 <translation id="1993072747612765854">Ketahui lebih lanjut tentang kemas kini <ph name="SYSTEM_APP_NAME" /> yang terbaharu</translation>
 <translation id="1995660704900986789">Matikan kuasa</translation>
 <translation id="2012624427112548395">Ctrl+Cari+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Mengecas peranti USB-C yang disambungkan</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 pemberitahuan}other{# pemberitahuan}}</translation>
+<translation id="7749443890790263709">Bilangan maksimum meja dicapai.</translation>
 <translation id="776344839111254542">Klik untuk melihat butiran kemas kini</translation>
 <translation id="7780159184141939021">Putarkan Skrin</translation>
 <translation id="7796353162336583443">Ketik butang stilus pada rak untuk mencatat nota, mengambil tangkapan skrin, menggunakan Google Assistant, penuding laser atau kanta pembesar.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Buat nota</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> ini dan telefon anda akan disambungkan secara automatik</translation>
+<translation id="8388750414311082622">Meja terakhir tidak boleh dialih keluar.</translation>
 <translation id="8392451568018454956">Menu pilihan untuk <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Ibu/bapa anda mengunci peranti ini</translation>
 <translation id="8406981827175133772">Penggadang Skrin Penuh</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb
index 2c745db..271bf16 100644
--- a/ash/strings/ash_strings_nl.xtb
+++ b/ash/strings/ash_strings_nl.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Je taal instellen</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Tekstinvoer</translation>
 <translation id="1993072747612765854">Meer informatie over de laatste update van <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Uitschakelen</translation>
 <translation id="2012624427112548395">Ctrl+Zoeken+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">De aangesloten USB-C-apparaten worden opgeladen</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{Eén melding}other{# meldingen}}</translation>
+<translation id="7749443890790263709">Maximum aantal bureaus bereikt.</translation>
 <translation id="776344839111254542">Klik om updategegevens te bekijken</translation>
 <translation id="7780159184141939021">Scherm draaien</translation>
 <translation id="7796353162336583443">Tik op de stylusknop op de plank om een notitie of screenshot te maken of de Google Assistent, de laserpen of het vergrootglas te gebruiken.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Notitie maken</translation>
 <translation id="8375916635258623388">Deze <ph name="DEVICE_NAME" /> en je telefoon maken automatisch verbinding</translation>
+<translation id="8388750414311082622">Het laatste bureau kan niet worden verwijderd.</translation>
 <translation id="8392451568018454956">Optiemenu voor <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Je ouder heeft dit apparaat vergrendeld</translation>
 <translation id="8406981827175133772">Volledig scherm vergroten</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index 3a99548..890b890fe8 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Velg språk</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Skriving av tekst</translation>
 <translation id="1993072747612765854">Finn ut mer om den nyeste <ph name="SYSTEM_APP_NAME" />-oppdateringen</translation>
 <translation id="1995660704900986789">Slå av</translation>
 <translation id="2012624427112548395">Ctrl + Søk + H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Lader de tilkoblede USB-C-enhetene</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 varsel}other{# varsler}}</translation>
+<translation id="7749443890790263709">Maksimalt antall skrivebord er nådd.</translation>
 <translation id="776344839111254542">Klikk for å se oppdateringsdetaljene</translation>
 <translation id="7780159184141939021">Rotér skjermen</translation>
 <translation id="7796353162336583443">Trykk på pekepenn-knappen på hyllen for å gjøre et notat, ta en skjermdump eller bruke Google-assistenten, laserpekeren eller forstørrelsesglasset.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" /><ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Opprett et notat</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> og telefonen din kobles sammen automatisk</translation>
+<translation id="8388750414311082622">Det siste skrivebordet kan ikke fjernes.</translation>
 <translation id="8392451568018454956">Alternativmenyen for <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Forelderen din har låst denne enheten</translation>
 <translation id="8406981827175133772">Lupe for hele skjermen</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index 8b199945..51bfbbc 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Ustaw język</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Wprowadzanie tekstu</translation>
 <translation id="1993072747612765854">Więcej informacji o najnowszej aktualizacji <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Wyłącz</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Ładowanie urządzeń podłączonych do portu USB-C</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 powiadomienie}few{# powiadomienia}many{# powiadomień}other{# powiadomienia}}</translation>
+<translation id="7749443890790263709">Osiągnięto maksymalną liczbę biurek.</translation>
 <translation id="776344839111254542">Kliknij, by wyświetlić szczegóły aktualizacji</translation>
 <translation id="7780159184141939021">Obróć ekran</translation>
 <translation id="7796353162336583443">Kliknij przycisk rysika na półce, by zrobić notatkę lub zrzut ekranu, skorzystać z Asystenta Google albo użyć wskaźnika laserowego lub lupy.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" /> <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Utwórz notatkę</translation>
 <translation id="8375916635258623388">To urządzenie <ph name="DEVICE_NAME" /> i Twój telefon będą się łączyć automatycznie</translation>
+<translation id="8388750414311082622">Ostatniego biurka nie można usunąć.</translation>
 <translation id="8392451568018454956">Menu opcji dla <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Twój rodzic zablokował urządzenie</translation>
 <translation id="8406981827175133772">Lupa pełnego ekranu</translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb
index bc4ae43..f840b1a 100644
--- a/ash/strings/ash_strings_pt-BR.xtb
+++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Configurar idioma</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Entrada de texto</translation>
 <translation id="1993072747612765854">Saiba mais sobre a última atualização do <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Desligar</translation>
 <translation id="2012624427112548395">Ctrl+Pesquisa+H</translation>
@@ -438,6 +439,7 @@
 <translation id="7692480393933218409">Carregando dispositivos USB-C conectados</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificação}one{# notificação}other{# notificações}}</translation>
+<translation id="7749443890790263709">O número máximo de áreas de trabalho foi atingido.</translation>
 <translation id="776344839111254542">Clique para ver detalhes da atualização</translation>
 <translation id="7780159184141939021">Girar tela</translation>
 <translation id="7796353162336583443">Toque no botão da stylus na estante para criar uma nota, uma captura de tela, usar o Google Assistente, o apontador laser ou a lupa.</translation>
@@ -481,6 +483,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Criar nota</translation>
 <translation id="8375916635258623388">Este <ph name="DEVICE_NAME" /> e seu smartphone serão conectados automaticamente</translation>
+<translation id="8388750414311082622">Não é possível remover a última área de trabalho.</translation>
 <translation id="8392451568018454956">Menu de opções para <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Seu pai/mãe bloqueou o dispositivo</translation>
 <translation id="8406981827175133772">Lupa de tela cheia</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index 981c7c8..2e427b7 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Definir o idioma</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Entrada de texto</translation>
 <translation id="1993072747612765854">Saiba mais sobre a mais recente atualização do <ph name="SYSTEM_APP_NAME" />.</translation>
 <translation id="1995660704900986789">Desligar</translation>
 <translation id="2012624427112548395">Ctrl + Pesquisa + H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">A carregar os dispositivos USB-C ligados</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificação}other{# notificações}}</translation>
+<translation id="7749443890790263709">Atingiu o número máximo de espaços de trabalho.</translation>
 <translation id="776344839111254542">Clique para ver os detalhes da atualização</translation>
 <translation id="7780159184141939021">Rodar ecrã</translation>
 <translation id="7796353162336583443">Toque no botão da caneta stylus na prateleira para tirar uma nota, criar uma captura de ecrã ou utilizar o Assistente Google, o ponteiro de laser ou a lupa.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Criar nota</translation>
 <translation id="8375916635258623388">Este <ph name="DEVICE_NAME" /> e o telemóvel serão associados automaticamente.</translation>
+<translation id="8388750414311082622">Não é possível remover o último espaço de trabalho.</translation>
 <translation id="8392451568018454956">Menu de opções para <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Os teus pais bloquearam este dispositivo</translation>
 <translation id="8406981827175133772">Lupa de ecrã inteiro</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb
index 6a7580e..db7e492 100644
--- a/ash/strings/ash_strings_ro.xtb
+++ b/ash/strings/ash_strings_ro.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Setează limba</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Introducere text</translation>
 <translation id="1993072747612765854">Află mai multe despre cea mai recentă actualizare <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Oprește alimentarea</translation>
 <translation id="2012624427112548395">Ctrl + tasta de căutare + H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Se încarcă dispozitivele USB-C conectate</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{O notificare}few{# notificări}other{# de notificări}}</translation>
+<translation id="7749443890790263709">S-a atins numărul maxim de desktopuri.</translation>
 <translation id="776344839111254542">Dă clic pentru a vedea detaliile actualizării</translation>
 <translation id="7780159184141939021">Rotește ecranul</translation>
 <translation id="7796353162336583443">Atinge butonul creion de pe raft ca să creezi note și capturi de ecran, să folosești Asistentul Google, indicatorul laser sau lupa.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Creează o notă</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> și telefonul se vor conecta automat</translation>
+<translation id="8388750414311082622">Ultimul desktop nu poate fi eliminat.</translation>
 <translation id="8392451568018454956">Meniu cu opțiuni pentru <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Părintele tău a blocat dispozitivul</translation>
 <translation id="8406981827175133772">Lupă de ecran complet</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index 8b4d394..9c68b0c 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Выберите язык</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Ввод текста</translation>
 <translation id="1993072747612765854">Подробнее о последнем обновлении <ph name="SYSTEM_APP_NAME" />…</translation>
 <translation id="1995660704900986789">Выключить</translation>
 <translation id="2012624427112548395">CTRL + ПОИСК + H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Подключенные устройства USB-C заряжаются</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 уведомление}one{# уведомление}few{# уведомления}many{# уведомлений}other{# уведомления}}</translation>
+<translation id="7749443890790263709">Достигнуто максимально допустимое количество рабочих столов.</translation>
 <translation id="776344839111254542">Нажмите, чтобы просмотреть информацию об обновлении</translation>
 <translation id="7780159184141939021">Поворот экрана</translation>
 <translation id="7796353162336583443">Нажмите кнопку стилуса на панели запуска, чтобы создать заметку, запустить Ассистента либо использовать стилус в качестве лупы или лазерной указки.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Создать заметку</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> и телефон будут подключены друг к другу автоматически</translation>
+<translation id="8388750414311082622">Удалить единственный рабочий стол нельзя.</translation>
 <translation id="8392451568018454956">Меню параметров пользователя "<ph name="USER_EMAIL_ADDRESS" />"</translation>
 <translation id="8394567579869570560">Ваш родитель заблокировал это устройство.</translation>
 <translation id="8406981827175133772">Полноэкранная лупа</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb
index 4614de67..b37113e 100644
--- a/ash/strings/ash_strings_sk.xtb
+++ b/ash/strings/ash_strings_sk.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Nastavenie jazyka</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Zadávanie textu</translation>
 <translation id="1993072747612765854">Ďalšie informácie o najnovšej aktualizácii aplikácie <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Vypnúť</translation>
 <translation id="2012624427112548395">Ctrl+Hľadať+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Nabíjajú sa pripojené zariadenia USB-C</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 upozornenie}few{# upozornenia}many{# notifications}other{# upozornení}}</translation>
+<translation id="7749443890790263709">Dosiahli ste maximálny počet pracovných prostredí.</translation>
 <translation id="776344839111254542">Kliknutím zobrazíte podrobnosti o aktualizácii</translation>
 <translation id="7780159184141939021">Otáčanie obrazovky</translation>
 <translation id="7796353162336583443">Klepnite na tlačidlo dotykového pera na poličke a vytvorte poznámku, snímku obrazovky, použite Asistenta Google, laserové ukazovadlo alebo lupu.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Vytvoriť poznámku</translation>
 <translation id="8375916635258623388">Toto zariadenie <ph name="DEVICE_NAME" /> a váš telefón sa automaticky pripoja</translation>
+<translation id="8388750414311082622">Posledné pracovné prostredie sa nedá odstrániť.</translation>
 <translation id="8392451568018454956">Ponuka možností pre používateľa <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Tvoj rodič uzamkol toto zariadenie</translation>
 <translation id="8406981827175133772">Lupa na celú obrazovku</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index 7db7de6d..03bf7b1c 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Nastavitev jezika</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Vnos besedila</translation>
 <translation id="1993072747612765854">Več informacij o najnovejši posodobitvi za <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Izklop</translation>
 <translation id="2012624427112548395">Ctrl+ tipka za iskanje + H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Polnjenje povezanih naprav USB-C</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obvestilo}one{# obvestilo}two{# obvestili}few{# obvestila}other{# obvestil}}</translation>
+<translation id="7749443890790263709">Doseženo je največje dovoljeno število namizij.</translation>
 <translation id="776344839111254542">Kliknite, če si želite ogledati podrobnosti o posodobitvi</translation>
 <translation id="7780159184141939021">Zasuk zaslona</translation>
 <translation id="7796353162336583443">Dotaknite se gumba pisala na polici, če želite ustvariti zapisek, posneti posnetek zaslona ali uporabiti Pomočnika Google, laserski kazalnik ali povečevalno steklo.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Ustvarjanje zapiska</translation>
 <translation id="8375916635258623388">Ta naprava <ph name="DEVICE_NAME" /> in telefon se bosta samodejno povezala</translation>
+<translation id="8388750414311082622">Zadnjega namizja ni mogoče odstraniti.</translation>
 <translation id="8392451568018454956">Meni z možnostmi za <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Tvoj starš je zaklenil to napravo</translation>
 <translation id="8406981827175133772">Celozaslonska lupa</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index 0ec11dc..b4c8e3c 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Подесите језик</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Унос текста</translation>
 <translation id="1993072747612765854">Сазнајте више о најновијем ажурирању за: <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Искључи</translation>
 <translation id="2012624427112548395">Ctrl + тастер за претрагу + H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Пуњење повезаних уређаја са USB прикључком типа C</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 обавештење}one{# обавештење}few{# обавештења}other{# обавештења}}</translation>
+<translation id="7749443890790263709">Достигли сте максималан број радних површина.</translation>
 <translation id="776344839111254542">Кликните за приказ детаља ажурирања</translation>
 <translation id="7780159184141939021">Ротирајте екран</translation>
 <translation id="7796353162336583443">Додирните дугме писаљке на полици да бисте направили белешку и снимак екрана и да бисте користили Google помоћник, ласерски показивач или лупу.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Направите белешку</translation>
 <translation id="8375916635258623388">Овај <ph name="DEVICE_NAME" /> и телефон ће се аутоматски повезати</translation>
+<translation id="8388750414311082622">Не можемо да уклонимо последњу радну површину.</translation>
 <translation id="8392451568018454956">Мени са опцијама за <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Родитељ је закључао овај уређај</translation>
 <translation id="8406981827175133772">Лупа за цео екран</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index 820f6a06a..97141e9 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Ställ in språk</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Textinmatning</translation>
 <translation id="1993072747612765854">Läs mer om den senaste uppdateringen av <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Stäng av</translation>
 <translation id="2012624427112548395">Ctrl+Sök+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Laddar anslutna USB-C-enheter</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 avisering}other{# aviseringar}}</translation>
+<translation id="7749443890790263709">Det högsta tillåtna antalet skrivbord har uppnåtts.</translation>
 <translation id="776344839111254542">Klicka här om du vill se mer information om uppdateringen</translation>
 <translation id="7780159184141939021">Rotera skärmen</translation>
 <translation id="7796353162336583443">När du har tryckt på e-pennan på hyllan kan du anteckna, ta en skärmdump eller använda Google Assistent, laserpekaren eller förstoringsglaset.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Skapa anteckning</translation>
 <translation id="8375916635258623388">Denna <ph name="DEVICE_NAME" /> ansluts automatiskt till din mobil</translation>
+<translation id="8388750414311082622">Det sista skrivbordet går inte att ta bort.</translation>
 <translation id="8392451568018454956">Alternativmenyn för <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Din förälder har låst enheten</translation>
 <translation id="8406981827175133772">Helskärmsförstoring</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb
index ecb57d50..f4434e2 100644
--- a/ash/strings/ash_strings_sw.xtb
+++ b/ash/strings/ash_strings_sw.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Weka lugha yako</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Uingizaji wa maandishi</translation>
 <translation id="1993072747612765854">Pata maelezo zaidi kuhusu sasisho la hivi majuzi la <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Zima</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Kinachaji vifaa vilivyounganishwa vya USB-C</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{Arifa 1}other{Arifa #}}</translation>
+<translation id="7749443890790263709">Umefikia idadi ya juu zaidi violesura.</translation>
 <translation id="776344839111254542">Bofya ili uone maelezo ya masasisho</translation>
 <translation id="7780159184141939021">Zungusha Skrini</translation>
 <translation id="7796353162336583443">Gusa kitufe cha stylus kwenye rafu ili uandike kidokezo, upige picha ya skrini, utumie programu ya Mratibu, kielekezi cha leza au lenzi.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Unda kidokezo</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> hii na simu yako zitaunganishwa kiotomatiki</translation>
+<translation id="8388750414311082622">Huruhusiwi kuondoa kiolesura cha mwisho.</translation>
 <translation id="8392451568018454956">Menyu ya chaguo za <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Kifaa hiki kimefungwa na mzazi wako</translation>
 <translation id="8406981827175133772">Kikuzaji cha Skrini Nzima</translation>
diff --git a/ash/strings/ash_strings_ta.xtb b/ash/strings/ash_strings_ta.xtb
index f0f3f46..a59b591a 100644
--- a/ash/strings/ash_strings_ta.xtb
+++ b/ash/strings/ash_strings_ta.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">எனது மொழியை அமை</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">உரை உள்ளீடு</translation>
 <translation id="1993072747612765854">சமீபத்திய <ph name="SYSTEM_APP_NAME" /> புதுப்பிப்பைப் பற்றி மேலும் அறிக</translation>
 <translation id="1995660704900986789">முடக்கு</translation>
 <translation id="2012624427112548395">Ctrl+தேடல்+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">இணைக்கப்பட்ட USB-C சாதனங்களுக்குச் சார்ஜ் ஏற்றப்படுகிறது</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 அறிவிப்பு}other{# அறிவிப்புகள்}}</translation>
+<translation id="7749443890790263709">டெஸ்க்குகளின் எண்ணிக்கை அதிகபட்ச வரம்பை எட்டிவிட்டது.</translation>
 <translation id="776344839111254542">புதுப்பிப்பு விவரங்களைப் பார்க்க, கிளிக் செய்யவும்</translation>
 <translation id="7780159184141939021">திரைச் சுழற்சி</translation>
 <translation id="7796353162336583443">குறிப்பெடுக்க, ஸ்கிரீன்ஷாட்டை எடுக்க, Google அசிஸ்டண்ட், லேசர் பாயிண்டர் அல்லது உருப்பெருக்கியைப் பயன்படுத்த, ஷெல்ஃபில் உள்ள ஸ்டைலஸ் பொத்தானைத் தட்டவும்.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">குறிப்பை உருவாக்கு</translation>
 <translation id="8375916635258623388">இந்த <ph name="DEVICE_NAME" /> உம் உங்கள் ஃபோனும் தானாக இணைக்கப்படும்</translation>
+<translation id="8388750414311082622">இறுதி டெஸ்க்கை அகற்ற இயலாது.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> க்கான விருப்பத்தேர்வுகள் மெனு</translation>
 <translation id="8394567579869570560">உங்கள் பெற்றோர் இந்தச் சாதனத்தைப் பூட்டிவிட்டனர்</translation>
 <translation id="8406981827175133772">முழுத்திரைப் பெரிதாக்கி</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index a5b7abe..447b33b2 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">మీ భాషని సెట్ చేయండి</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">వచన ఇన్‌పుట్</translation>
 <translation id="1993072747612765854">తాజా <ph name="SYSTEM_APP_NAME" /> అప్‌డేట్ గురించి మరింత తెలుసుకోండి</translation>
 <translation id="1995660704900986789">పవర్ ఆఫ్ చేయి</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">కనెక్ట్ చేసిన USB-C పరికరాలను ఛార్జ్ చేస్తోంది</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 నోటిఫికేషన్‌}other{# నోటిఫికేషన్‌లు}}</translation>
+<translation id="7749443890790263709">గరిష్ట డెస్క్‌ల సంఖ్యను చేరుకుంది.</translation>
 <translation id="776344839111254542">అప్‌డేట్ వివరాలను వీక్షించడం కోసం క్లిక్ చేయండి</translation>
 <translation id="7780159184141939021">స్క్రీన్‌ను తిప్పండి</translation>
 <translation id="7796353162336583443">గమనికను రాయడానికి, స్క్రీన్‌షాట్‌ను తీయడానికి, Google అసిస్టెంట్, లేజర్ పాయింటర్ లేదా భూతద్దాన్ని ఉపయోగించడానికి అరలో స్టైలస్ బటన్‌ను నొక్కండి.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">గమనికను సృష్టించండి</translation>
 <translation id="8375916635258623388">ఈ <ph name="DEVICE_NAME" /> మరియు మీ ఫోన్‌ ఆటోమెటిక్‌గా కనెక్ట్ చేయబడతాయి</translation>
+<translation id="8388750414311082622">చివరి డెస్క్‌ను తీసివేయలేరు.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> కోసం ఎంపికల మెను</translation>
 <translation id="8394567579869570560">మీ తల్లి/తండ్రి ఈ పరికరాన్ని లాక్ చేసి ఉంచారు</translation>
 <translation id="8406981827175133772">పూర్తి స్క్రీన్ మాగ్నిఫైయర్</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index b8668d6f..2efeff9 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">ตั้งค่าภาษา</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">การป้อนข้อความ</translation>
 <translation id="1993072747612765854">ดูข้อมูลเพิ่มเติมเกี่ยวกับอัปเดตล่าสุดของ <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">ปิดเครื่อง</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">กำลังชาร์จอุปกรณ์ USB-C ที่เชื่อมต่ออยู่</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{การแจ้งเตือน 1 รายการ}other{การแจ้งเตือน # รายการ}}</translation>
+<translation id="7749443890790263709">มีพื้นที่ทำงานครบตามจำนวนสูงสุดแล้ว</translation>
 <translation id="776344839111254542">คลิกเพื่อดูรายละเอียดการอัปเดต</translation>
 <translation id="7780159184141939021">หมุนหน้าจอ</translation>
 <translation id="7796353162336583443">แตะปุ่มสไตลัสในชั้นวางเพื่อจดโน้ต บันทึกภาพหน้าจอ ตลอดจนใช้ Google Assistant ตัวชี้เลเซอร์ หรือแว่นขยาย</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">สร้างโน้ต</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> นี้และโทรศัพท์จะเชื่อมต่อกันโดยอัตโนมัติ</translation>
+<translation id="8388750414311082622">นำพื้นที่ทำงานสุดท้ายออกไม่ได้</translation>
 <translation id="8392451568018454956">เมนูตัวเลือกสำหรับ <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">ผู้ปกครองของคุณล็อกอุปกรณ์นี้ไว้</translation>
 <translation id="8406981827175133772">แว่นขยายทั้งหน้าจอ</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index 4254937..ddc646dd 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Dilinizi ayarlayın</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Metin girişi</translation>
 <translation id="1993072747612765854">En yeni <ph name="SYSTEM_APP_NAME" /> güncellemesi ile ilgili daha fazla bilgi edinin</translation>
 <translation id="1995660704900986789">Kapat</translation>
 <translation id="2012624427112548395">Ctrl+Arama+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Bağlı USB-C cihazlar şarj ediliyor</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 bildirim}other{# bildirim}}</translation>
+<translation id="7749443890790263709">Maksimum masa sayısına ulaşıldı.</translation>
 <translation id="776344839111254542">Güncelleme ayrıntılarını görüntülemek için tıklayın</translation>
 <translation id="7780159184141939021">Ekranı Döndür</translation>
 <translation id="7796353162336583443">Not veya ekran görüntüsü almak, Google Asistan, lazer işaretçi veya büyüteç işlevlerini kullanmak için raftaki ekran kalemi düğmesine dokunun.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Not oluştur</translation>
 <translation id="8375916635258623388">Bu <ph name="DEVICE_NAME" /> ve telefonunuz otomatik olarak bağlanacaktır</translation>
+<translation id="8388750414311082622">Son masa kaldırılamaz.</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> seçenekler menüsü</translation>
 <translation id="8394567579869570560">Ebeveyniniz bu cihazı kilitledi</translation>
 <translation id="8406981827175133772">Tam Ekran Büyüteci</translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb
index 8ed944c..072d556 100644
--- a/ash/strings/ash_strings_uk.xtb
+++ b/ash/strings/ash_strings_uk.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Вибрати мову</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Ввести текст</translation>
 <translation id="1993072747612765854">Докладніше про останнє оновлення додатка <ph name="SYSTEM_APP_NAME" /></translation>
 <translation id="1995660704900986789">Вимкнути</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">Заряджає пристрої, під’єднанї до порту USB-C</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 cповіщення}one{# сповіщення}few{# сповіщення}many{# сповіщень}other{# сповіщення}}</translation>
+<translation id="7749443890790263709">Ви додали максимальну кількість робочих столів.</translation>
 <translation id="776344839111254542">Натисніть, щоб переглянути деталі оновлення</translation>
 <translation id="7780159184141939021">Обернути екран</translation>
 <translation id="7796353162336583443">Щоб додавати примітки та знімки екрана, користуватися Google Асистентом або використовувати стилус як лазерний вказівник чи лупу, торкніться кнопки стилуса на полиці.</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" /> <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Створити нотатку</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> і ваш телефон під’єднуватимуться автоматично</translation>
+<translation id="8388750414311082622">Останній робочий стіл не можна видалити.</translation>
 <translation id="8392451568018454956">Меню параметрів для <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Батьки заблокували цей пристрій</translation>
 <translation id="8406981827175133772">Лупа для всього екрана</translation>
diff --git a/ash/strings/ash_strings_vi.xtb b/ash/strings/ash_strings_vi.xtb
index 32d87f5d..50438b7 100644
--- a/ash/strings/ash_strings_vi.xtb
+++ b/ash/strings/ash_strings_vi.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">Đặt ngôn ngữ</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">Nhập văn bản</translation>
 <translation id="1993072747612765854">Tìm hiểu thêm về bản cập nhật <ph name="SYSTEM_APP_NAME" /> mới nhất</translation>
 <translation id="1995660704900986789">Tắt nguồn</translation>
 <translation id="2012624427112548395">Ctrl+Search+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">Đang sạc thiết bị USB-C được kết nối</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 thông báo}other{# thông báo}}</translation>
+<translation id="7749443890790263709">Đã đạt đến số lượng không gian làm việc tối đa.</translation>
 <translation id="776344839111254542">Nhấp để xem chi tiết cập nhật</translation>
 <translation id="7780159184141939021">Xoay màn hình</translation>
 <translation id="7796353162336583443">Hãy nhấn vào nút bút cảm ứng trên giá để ghi chú, chụp ảnh màn hình, sử dụng Trợ lý Google, chế độ con trỏ laser hoặc kính lúp.</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">Tạo ghi chú</translation>
 <translation id="8375916635258623388"><ph name="DEVICE_NAME" /> này và điện thoại của bạn sẽ tự động kết nối</translation>
+<translation id="8388750414311082622">Không thể xóa không gian làm việc gần đây nhất.</translation>
 <translation id="8392451568018454956">Menu tùy chọn dành cho <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="8394567579869570560">Cha mẹ của bạn đã khóa thiết bị này</translation>
 <translation id="8406981827175133772">Phóng to toàn màn hình</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 24b6e56..d7641df 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">设置语言</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">文字输入</translation>
 <translation id="1993072747612765854">详细了解最新的 <ph name="SYSTEM_APP_NAME" />更新</translation>
 <translation id="1995660704900986789">关机</translation>
 <translation id="2012624427112548395">Ctrl+搜索键+H</translation>
@@ -437,6 +438,7 @@
 <translation id="7692480393933218409">正在为已连接的 USB-C 设备充电</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 条通知}other{# 条通知}}</translation>
+<translation id="7749443890790263709">已达到桌面数量上限。</translation>
 <translation id="776344839111254542">点击即可查看相关更新的详情</translation>
 <translation id="7780159184141939021">旋转屏幕</translation>
 <translation id="7796353162336583443">点按任务栏中的触控笔按钮可开始记事、截取屏幕截图,以及使用 Google 助理、激光笔或放大镜。</translation>
@@ -480,6 +482,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">创建记事</translation>
 <translation id="8375916635258623388">此<ph name="DEVICE_NAME" />将会自动连接到您的手机</translation>
+<translation id="8388750414311082622">无法移除最后一个桌面。</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> 的“选项”菜单</translation>
 <translation id="8394567579869570560">您的家长锁定了此设备</translation>
 <translation id="8406981827175133772">全屏放大镜</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 438048d..1f8dda7 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -73,6 +73,7 @@
 <translation id="1957803754585243749">0°</translation>
 <translation id="1957958912175573503">設定語言</translation>
 <translation id="1969011864782743497"><ph name="DEVICE_NAME" /> (USB)</translation>
+<translation id="1978498689038657292">文字輸入</translation>
 <translation id="1993072747612765854">進一步瞭解最新的 <ph name="SYSTEM_APP_NAME" />更新內容</translation>
 <translation id="1995660704900986789">關閉</translation>
 <translation id="2012624427112548395">Ctrl 鍵 + 搜尋鍵 + H 鍵</translation>
@@ -436,6 +437,7 @@
 <translation id="7692480393933218409">正在為連接的 USB-C 裝置充電</translation>
 <translation id="7705524343798198388">VPN</translation>
 <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 則通知}other{# 則通知}}</translation>
+<translation id="7749443890790263709">桌面數量已達上限。</translation>
 <translation id="776344839111254542">按一下即可查看更新詳細資料</translation>
 <translation id="7780159184141939021">旋轉螢幕</translation>
 <translation id="7796353162336583443">輕觸檔案櫃的觸控筆圖示即可寫筆記、擷取螢幕畫面,以及使用 Google 助理、雷射筆和放大鏡。</translation>
@@ -479,6 +481,7 @@
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
 <translation id="8351131234907093545">寫筆記</translation>
 <translation id="8375916635258623388">這部 <ph name="DEVICE_NAME" /> 會自動連結到你的手機</translation>
+<translation id="8388750414311082622">無法移除最後一個桌面。</translation>
 <translation id="8392451568018454956"><ph name="USER_EMAIL_ADDRESS" /> 的選項選單</translation>
 <translation id="8394567579869570560">你的家長已鎖定這部裝置</translation>
 <translation id="8406981827175133772">全螢幕放大鏡</translation>
diff --git a/ash/system/message_center/unified_message_list_view.cc b/ash/system/message_center/unified_message_list_view.cc
index b002c1a..12a7ac49 100644
--- a/ash/system/message_center/unified_message_list_view.cc
+++ b/ash/system/message_center/unified_message_list_view.cc
@@ -212,7 +212,8 @@
 UnifiedMessageListView::UnifiedMessageListView(
     UnifiedMessageCenterView* message_center_view,
     UnifiedSystemTrayModel* model)
-    : message_center_view_(message_center_view),
+    : views::AnimationDelegateViews(this),
+      message_center_view_(message_center_view),
       model_(model),
       animation_(std::make_unique<gfx::LinearAnimation>(this)) {
   MessageCenter::Get()->AddObserver(this);
diff --git a/ash/system/message_center/unified_message_list_view.h b/ash/system/message_center/unified_message_list_view.h
index f2aee1b..07ff2ed 100644
--- a/ash/system/message_center/unified_message_list_view.h
+++ b/ash/system/message_center/unified_message_list_view.h
@@ -6,9 +6,9 @@
 #define ASH_SYSTEM_MESSAGE_CENTER_UNIFIED_MESSAGE_LIST_VIEW_H_
 
 #include "ash/ash_export.h"
-#include "ui/gfx/animation/animation_delegate.h"
 #include "ui/message_center/message_center_observer.h"
 #include "ui/message_center/views/message_view.h"
+#include "ui/views/animation/animation_delegate_views.h"
 #include "ui/views/view.h"
 
 namespace gfx {
@@ -31,7 +31,7 @@
     : public views::View,
       public message_center::MessageCenterObserver,
       public message_center::MessageView::SlideObserver,
-      public gfx::AnimationDelegate {
+      public views::AnimationDelegateViews {
  public:
   // |message_center_view| can be null in unit tests.
   UnifiedMessageListView(UnifiedMessageCenterView* message_center_view,
@@ -87,7 +87,7 @@
   // message_center::MessageView::SlideObserver:
   void OnSlideStarted(const std::string& notification_id) override;
 
-  // gfx::AnimationDelegate:
+  // views::AnimationDelegateViews:
   void AnimationEnded(const gfx::Animation* animation) override;
   void AnimationProgressed(const gfx::Animation* animation) override;
   void AnimationCanceled(const gfx::Animation* animation) override;
diff --git a/ash/system/night_light/night_light_controller.cc b/ash/system/night_light/night_light_controller_impl.cc
similarity index 84%
rename from ash/system/night_light/night_light_controller.cc
rename to ash/system/night_light/night_light_controller_impl.cc
index e049a73..366858a 100644
--- a/ash/system/night_light/night_light_controller.cc
+++ b/ash/system/night_light/night_light_controller_impl.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "ash/system/night_light/night_light_controller.h"
+#include "ash/system/night_light/night_light_controller_impl.h"
 
 #include <cmath>
 #include <memory>
@@ -59,17 +59,20 @@
 // The color temperature animation frames per second.
 constexpr int kNightLightAnimationFrameRate = 30;
 
-class NightLightControllerDelegateImpl : public NightLightController::Delegate {
+class NightLightControllerDelegateImpl
+    : public NightLightControllerImpl::Delegate {
  public:
   NightLightControllerDelegateImpl() = default;
   ~NightLightControllerDelegateImpl() override = default;
 
-  // ash::NightLightController::Delegate:
+  // ash::NightLightControllerImpl::Delegate:
   base::Time GetNow() const override { return base::Time::Now(); }
   base::Time GetSunsetTime() const override { return GetSunRiseSet(false); }
   base::Time GetSunriseTime() const override { return GetSunRiseSet(true); }
-  void SetGeoposition(mojom::SimpleGeopositionPtr position) override {
-    geoposition_ = std::move(position);
+  void SetGeoposition(
+      const NightLightController::SimpleGeoposition& position) override {
+    geoposition_ =
+        std::make_unique<NightLightController::SimpleGeoposition>(position);
   }
   bool HasGeoposition() const override { return !!geoposition_; }
 
@@ -101,7 +104,7 @@
     return base::Time::FromDoubleT(sun_rise_set_ms / 1000.0);
   }
 
-  mojom::SimpleGeopositionPtr geoposition_;
+  std::unique_ptr<NightLightController::SimpleGeoposition> geoposition_;
 
   DISALLOW_COPY_AND_ASSIGN(NightLightControllerDelegateImpl);
 };
@@ -124,14 +127,15 @@
 SkMatrix44 MatrixFromTemperature(float temperature,
                                  bool in_linear_gamma_space) {
   if (in_linear_gamma_space)
-    temperature = NightLightController::GetNonLinearTemperature(temperature);
+    temperature =
+        NightLightControllerImpl::GetNonLinearTemperature(temperature);
 
   SkMatrix44 matrix(SkMatrix44::kIdentity_Constructor);
   if (temperature != 0.0f) {
     const float blue_scale =
-        NightLightController::BlueColorScaleFromTemperature(temperature);
+        NightLightControllerImpl::BlueColorScaleFromTemperature(temperature);
     const float green_scale =
-        NightLightController::GreenColorScaleFromTemperature(
+        NightLightControllerImpl::GreenColorScaleFromTemperature(
             temperature, in_linear_gamma_space);
 
     matrix.set(1, 1, green_scale);
@@ -223,7 +227,7 @@
         wth_manager->GetRootWindowForDisplayId(display_id);
     if (!root_window) {
       // Some displays' hosts may have not being initialized yet. In this case
-      // NightLightController::OnHostInitialized() will take care of those
+      // NightLightControllerImpl::OnHostInitialized() will take care of those
       // hosts.
       continue;
     }
@@ -299,17 +303,16 @@
   DISALLOW_COPY_AND_ASSIGN(ColorTemperatureAnimation);
 };
 
-NightLightController::NightLightController()
+NightLightControllerImpl::NightLightControllerImpl()
     : delegate_(std::make_unique<NightLightControllerDelegateImpl>()),
-      temperature_animation_(std::make_unique<ColorTemperatureAnimation>()),
-      binding_(this) {
+      temperature_animation_(std::make_unique<ColorTemperatureAnimation>()) {
   Shell::Get()->session_controller()->AddObserver(this);
   Shell::Get()->window_tree_host_manager()->AddObserver(this);
   aura::Env::GetInstance()->AddObserver(this);
   chromeos::PowerManagerClient::Get()->AddObserver(this);
 }
 
-NightLightController::~NightLightController() {
+NightLightControllerImpl::~NightLightControllerImpl() {
   chromeos::PowerManagerClient::Get()->RemoveObserver(this);
   aura::Env::GetInstance()->RemoveObserver(this);
   Shell::Get()->window_tree_host_manager()->RemoveObserver(this);
@@ -317,7 +320,8 @@
 }
 
 // static
-void NightLightController::RegisterProfilePrefs(PrefRegistrySimple* registry) {
+void NightLightControllerImpl::RegisterProfilePrefs(
+    PrefRegistrySimple* registry) {
   registry->RegisterBooleanPref(prefs::kNightLightEnabled, false,
                                 PrefRegistry::PUBLIC);
   registry->RegisterDoublePref(prefs::kNightLightTemperature,
@@ -338,12 +342,13 @@
 }
 
 // static
-float NightLightController::BlueColorScaleFromTemperature(float temperature) {
+float NightLightControllerImpl::BlueColorScaleFromTemperature(
+    float temperature) {
   return 1.0f - temperature;
 }
 
 // static
-float NightLightController::GreenColorScaleFromTemperature(
+float NightLightControllerImpl::GreenColorScaleFromTemperature(
     float temperature,
     bool in_linear_space) {
   // If we only tone down the blue scale, the screen will look very green so
@@ -353,37 +358,24 @@
 }
 
 // static
-float NightLightController::GetNonLinearTemperature(float temperature) {
+float NightLightControllerImpl::GetNonLinearTemperature(float temperature) {
   constexpr float kGammaFactor = 1.0f / 2.2f;
   return std::pow(temperature, kGammaFactor);
 }
 
-void NightLightController::BindRequest(
-    mojom::NightLightControllerRequest request) {
-  binding_.Bind(std::move(request));
-}
-
-void NightLightController::AddObserver(Observer* observer) {
-  observers_.AddObserver(observer);
-}
-
-void NightLightController::RemoveObserver(Observer* observer) {
-  observers_.RemoveObserver(observer);
-}
-
-bool NightLightController::GetEnabled() const {
+bool NightLightControllerImpl::GetEnabled() const {
   return active_user_pref_service_ &&
          active_user_pref_service_->GetBoolean(prefs::kNightLightEnabled);
 }
 
-float NightLightController::GetColorTemperature() const {
+float NightLightControllerImpl::GetColorTemperature() const {
   if (active_user_pref_service_)
     return active_user_pref_service_->GetDouble(prefs::kNightLightTemperature);
 
   return kDefaultColorTemperature;
 }
 
-NightLightController::ScheduleType NightLightController::GetScheduleType()
+NightLightController::ScheduleType NightLightControllerImpl::GetScheduleType()
     const {
   if (active_user_pref_service_) {
     return static_cast<ScheduleType>(
@@ -393,7 +385,7 @@
   return ScheduleType::kNone;
 }
 
-TimeOfDay NightLightController::GetCustomStartTime() const {
+TimeOfDay NightLightControllerImpl::GetCustomStartTime() const {
   if (active_user_pref_service_) {
     return TimeOfDay(active_user_pref_service_->GetInteger(
         prefs::kNightLightCustomStartTime));
@@ -402,7 +394,7 @@
   return TimeOfDay(kDefaultStartTimeOffsetMinutes);
 }
 
-TimeOfDay NightLightController::GetCustomEndTime() const {
+TimeOfDay NightLightControllerImpl::GetCustomEndTime() const {
   if (active_user_pref_service_) {
     return TimeOfDay(
         active_user_pref_service_->GetInteger(prefs::kNightLightCustomEndTime));
@@ -411,15 +403,15 @@
   return TimeOfDay(kDefaultEndTimeOffsetMinutes);
 }
 
-void NightLightController::SetEnabled(bool enabled,
-                                      AnimationDuration animation_type) {
+void NightLightControllerImpl::SetEnabled(bool enabled,
+                                          AnimationDuration animation_type) {
   if (active_user_pref_service_) {
     animation_duration_ = animation_type;
     active_user_pref_service_->SetBoolean(prefs::kNightLightEnabled, enabled);
   }
 }
 
-void NightLightController::SetColorTemperature(float temperature) {
+void NightLightControllerImpl::SetColorTemperature(float temperature) {
   DCHECK_GE(temperature, 0.0f);
   DCHECK_LE(temperature, 1.0f);
   if (active_user_pref_service_) {
@@ -428,14 +420,14 @@
   }
 }
 
-void NightLightController::SetScheduleType(ScheduleType type) {
+void NightLightControllerImpl::SetScheduleType(ScheduleType type) {
   if (active_user_pref_service_) {
     active_user_pref_service_->SetInteger(prefs::kNightLightScheduleType,
                                           static_cast<int>(type));
   }
 }
 
-void NightLightController::SetCustomStartTime(TimeOfDay start_time) {
+void NightLightControllerImpl::SetCustomStartTime(TimeOfDay start_time) {
   if (active_user_pref_service_) {
     active_user_pref_service_->SetInteger(
         prefs::kNightLightCustomStartTime,
@@ -443,7 +435,7 @@
   }
 }
 
-void NightLightController::SetCustomEndTime(TimeOfDay end_time) {
+void NightLightControllerImpl::SetCustomEndTime(TimeOfDay end_time) {
   if (active_user_pref_service_) {
     active_user_pref_service_->SetInteger(
         prefs::kNightLightCustomEndTime,
@@ -451,37 +443,37 @@
   }
 }
 
-void NightLightController::Toggle() {
+void NightLightControllerImpl::Toggle() {
   SetEnabled(!GetEnabled(), AnimationDuration::kShort);
 }
 
-void NightLightController::OnDisplayConfigurationChanged() {
+void NightLightControllerImpl::OnDisplayConfigurationChanged() {
   // When display configurations changes, we should re-apply the current
   // temperature immediately without animation.
   ApplyTemperatureToAllDisplays(GetEnabled() ? GetColorTemperature() : 0.0f);
 }
 
-void NightLightController::OnHostInitialized(aura::WindowTreeHost* host) {
+void NightLightControllerImpl::OnHostInitialized(aura::WindowTreeHost* host) {
   // This newly initialized |host| could be of a newly added display, or of a
   // newly created mirroring display (either for mirroring or unified). we need
   // to apply the current temperature immediately without animation.
   ApplyTemperatureToHost(host, GetEnabled() ? GetColorTemperature() : 0.0f);
 }
 
-void NightLightController::OnActiveUserPrefServiceChanged(
+void NightLightControllerImpl::OnActiveUserPrefServiceChanged(
     PrefService* pref_service) {
   // Initial login and user switching in multi profiles.
   active_user_pref_service_ = pref_service;
   InitFromUserPrefs();
 }
 
-void NightLightController::SetCurrentGeoposition(
-    mojom::SimpleGeopositionPtr position) {
+void NightLightControllerImpl::SetCurrentGeoposition(
+    const SimpleGeoposition& position) {
   VLOG(1) << "Received new geoposition.";
 
   is_current_geoposition_from_cache_ = false;
   StoreCachedGeoposition(position);
-  delegate_->SetGeoposition(std::move(position));
+  delegate_->SetGeoposition(position);
 
   // If the schedule type is sunset to sunrise, then a potential change in the
   // geoposition might mean a change in the start and end times. In this case,
@@ -490,28 +482,19 @@
     Refresh(true /* did_schedule_change */);
 }
 
-void NightLightController::SetClient(mojom::NightLightClientPtr client) {
-  client_ = std::move(client);
-
-  if (client_) {
-    client_.set_connection_error_handler(base::Bind(
-        &NightLightController::SetClient, base::Unretained(this), nullptr));
-    NotifyClientWithScheduleChange();
-  }
-}
-
-void NightLightController::SuspendDone(const base::TimeDelta& sleep_duration) {
+void NightLightControllerImpl::SuspendDone(
+    const base::TimeDelta& sleep_duration) {
   // Time changes while the device is suspended. We need to refresh the schedule
   // upon device resume to know what the status should be now.
   Refresh(true /* did_schedule_change */);
 }
 
-void NightLightController::SetDelegateForTesting(
+void NightLightControllerImpl::SetDelegateForTesting(
     std::unique_ptr<Delegate> delegate) {
   delegate_ = std::move(delegate);
 }
 
-void NightLightController::LoadCachedGeopositionIfNeeded() {
+void NightLightControllerImpl::LoadCachedGeopositionIfNeeded() {
   DCHECK(active_user_pref_service_);
 
   // Even if there is a geoposition, but it's coming from a previously cached
@@ -532,16 +515,14 @@
   }
 
   VLOG(1) << "Temporarily using a previously cached geoposition.";
-  delegate_->SetGeoposition(mojom::SimpleGeoposition::New(
+  delegate_->SetGeoposition(SimpleGeoposition{
       active_user_pref_service_->GetDouble(prefs::kNightLightCachedLatitude),
-      active_user_pref_service_->GetDouble(prefs::kNightLightCachedLongitude)));
+      active_user_pref_service_->GetDouble(prefs::kNightLightCachedLongitude)});
   is_current_geoposition_from_cache_ = true;
 }
 
-void NightLightController::StoreCachedGeoposition(
-    const mojom::SimpleGeopositionPtr& position) {
-  DCHECK(position);
-
+void NightLightControllerImpl::StoreCachedGeoposition(
+    const SimpleGeoposition& position) {
   const SessionControllerImpl* session_controller =
       Shell::Get()->session_controller();
   for (const auto& user_session : session_controller->GetUserSessions()) {
@@ -551,13 +532,13 @@
       continue;
 
     pref_service->SetDouble(prefs::kNightLightCachedLatitude,
-                            position->latitude);
+                            position.latitude);
     pref_service->SetDouble(prefs::kNightLightCachedLongitude,
-                            position->longitude);
+                            position.longitude);
   }
 }
 
-void NightLightController::RefreshLayersTemperature() {
+void NightLightControllerImpl::RefreshLayersTemperature() {
   const float new_temperature = GetEnabled() ? GetColorTemperature() : 0.0f;
   temperature_animation_->AnimateToNewValue(
       new_temperature, animation_duration_ == AnimationDuration::kShort
@@ -575,38 +556,41 @@
   Shell::Get()->UpdateCursorCompositingEnabled();
 }
 
-void NightLightController::StartWatchingPrefsChanges() {
+void NightLightControllerImpl::StartWatchingPrefsChanges() {
   DCHECK(active_user_pref_service_);
 
   pref_change_registrar_ = std::make_unique<PrefChangeRegistrar>();
   pref_change_registrar_->Init(active_user_pref_service_);
   pref_change_registrar_->Add(
       prefs::kNightLightEnabled,
-      base::BindRepeating(&NightLightController::OnEnabledPrefChanged,
+      base::BindRepeating(&NightLightControllerImpl::OnEnabledPrefChanged,
                           base::Unretained(this)));
   pref_change_registrar_->Add(
       prefs::kNightLightTemperature,
-      base::BindRepeating(&NightLightController::OnColorTemperaturePrefChanged,
-                          base::Unretained(this)));
+      base::BindRepeating(
+          &NightLightControllerImpl::OnColorTemperaturePrefChanged,
+          base::Unretained(this)));
   pref_change_registrar_->Add(
       prefs::kNightLightScheduleType,
-      base::BindRepeating(&NightLightController::OnScheduleTypePrefChanged,
+      base::BindRepeating(&NightLightControllerImpl::OnScheduleTypePrefChanged,
                           base::Unretained(this)));
   pref_change_registrar_->Add(
       prefs::kNightLightCustomStartTime,
-      base::BindRepeating(&NightLightController::OnCustomSchedulePrefsChanged,
-                          base::Unretained(this)));
+      base::BindRepeating(
+          &NightLightControllerImpl::OnCustomSchedulePrefsChanged,
+          base::Unretained(this)));
   pref_change_registrar_->Add(
       prefs::kNightLightCustomEndTime,
-      base::BindRepeating(&NightLightController::OnCustomSchedulePrefsChanged,
-                          base::Unretained(this)));
+      base::BindRepeating(
+          &NightLightControllerImpl::OnCustomSchedulePrefsChanged,
+          base::Unretained(this)));
 
   // Note: No need to observe changes in the cached latitude/longitude since
   // they're only accessed here in ash. We only load them when the active user
   // changes, and store them whenever we receive an updated geoposition.
 }
 
-void NightLightController::InitFromUserPrefs() {
+void NightLightControllerImpl::InitFromUserPrefs() {
   StartWatchingPrefsChanges();
   LoadCachedGeopositionIfNeeded();
   Refresh(true /* did_schedule_change */);
@@ -614,28 +598,28 @@
   NotifyClientWithScheduleChange();
 }
 
-void NightLightController::NotifyStatusChanged() {
+void NightLightControllerImpl::NotifyStatusChanged() {
   for (auto& observer : observers_)
     observer.OnNightLightEnabledChanged(GetEnabled());
 }
 
-void NightLightController::NotifyClientWithScheduleChange() {
-  if (client_)
-    client_->OnScheduleTypeChanged(GetScheduleType());
+void NightLightControllerImpl::NotifyClientWithScheduleChange() {
+  for (auto& observer : observers_)
+    observer.OnScheduleTypeChanged(GetScheduleType());
 }
 
-void NightLightController::OnEnabledPrefChanged() {
+void NightLightControllerImpl::OnEnabledPrefChanged() {
   DCHECK(active_user_pref_service_);
   Refresh(false /* did_schedule_change */);
   NotifyStatusChanged();
 }
 
-void NightLightController::OnColorTemperaturePrefChanged() {
+void NightLightControllerImpl::OnColorTemperaturePrefChanged() {
   DCHECK(active_user_pref_service_);
   RefreshLayersTemperature();
 }
 
-void NightLightController::OnScheduleTypePrefChanged() {
+void NightLightControllerImpl::OnScheduleTypePrefChanged() {
   DCHECK(active_user_pref_service_);
   NotifyClientWithScheduleChange();
   Refresh(true /* did_schedule_change */);
@@ -643,12 +627,12 @@
   UMA_HISTOGRAM_ENUMERATION("Ash.NightLight.ScheduleType", GetScheduleType());
 }
 
-void NightLightController::OnCustomSchedulePrefsChanged() {
+void NightLightControllerImpl::OnCustomSchedulePrefsChanged() {
   DCHECK(active_user_pref_service_);
   Refresh(true /* did_schedule_change */);
 }
 
-void NightLightController::Refresh(bool did_schedule_change) {
+void NightLightControllerImpl::Refresh(bool did_schedule_change) {
   RefreshLayersTemperature();
 
   const ScheduleType type = GetScheduleType();
@@ -670,9 +654,9 @@
   }
 }
 
-void NightLightController::RefreshScheduleTimer(base::Time start_time,
-                                                base::Time end_time,
-                                                bool did_schedule_change) {
+void NightLightControllerImpl::RefreshScheduleTimer(base::Time start_time,
+                                                    base::Time end_time,
+                                                    bool did_schedule_change) {
   if (GetScheduleType() == ScheduleType::kNone) {
     NOTREACHED();
     timer_.Stop();
@@ -786,14 +770,14 @@
   ScheduleNextToggle(GetEnabled() ? end_time - now : start_time - now);
 }
 
-void NightLightController::ScheduleNextToggle(base::TimeDelta delay) {
+void NightLightControllerImpl::ScheduleNextToggle(base::TimeDelta delay) {
   const bool new_status = !GetEnabled();
   VLOG(1) << "Setting Night Light to toggle to "
           << (new_status ? "enabled" : "disabled") << " at "
           << base::TimeFormatTimeOfDay(delegate_->GetNow() + delay);
   timer_.Start(
       FROM_HERE, delay,
-      base::Bind(&NightLightController::SetEnabled, base::Unretained(this),
+      base::Bind(&NightLightControllerImpl::SetEnabled, base::Unretained(this),
                  new_status, AnimationDuration::kLong));
 }
 
diff --git a/ash/system/night_light/night_light_controller.h b/ash/system/night_light/night_light_controller_impl.h
similarity index 86%
rename from ash/system/night_light/night_light_controller.h
rename to ash/system/night_light/night_light_controller_impl.h
index 3916e13..f5fff94 100644
--- a/ash/system/night_light/night_light_controller.h
+++ b/ash/system/night_light/night_light_controller_impl.h
@@ -2,22 +2,20 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef ASH_SYSTEM_NIGHT_LIGHT_NIGHT_LIGHT_CONTROLLER_H_
-#define ASH_SYSTEM_NIGHT_LIGHT_NIGHT_LIGHT_CONTROLLER_H_
+#ifndef ASH_SYSTEM_NIGHT_LIGHT_NIGHT_LIGHT_CONTROLLER_IMPL_H_
+#define ASH_SYSTEM_NIGHT_LIGHT_NIGHT_LIGHT_CONTROLLER_IMPL_H_
 
 #include <memory>
 
 #include "ash/ash_export.h"
 #include "ash/display/window_tree_host_manager.h"
-#include "ash/public/interfaces/night_light_controller.mojom.h"
+#include "ash/public/cpp/night_light_controller.h"
 #include "ash/session/session_observer.h"
 #include "ash/system/night_light/time_of_day.h"
-#include "base/observer_list.h"
 #include "base/time/time.h"
 #include "base/timer/timer.h"
 #include "chromeos/dbus/power/power_manager_client.h"
 #include "components/prefs/pref_change_registrar.h"
-#include "mojo/public/cpp/bindings/binding.h"
 #include "ui/aura/env_observer.h"
 
 class PrefRegistrySimple;
@@ -36,15 +34,13 @@
 // displays' hosts, rather than on the Unified host, so that we can use the
 // CRTC matrix if available (the Unified host doesn't correspond to an actual
 // display).
-class ASH_EXPORT NightLightController
-    : public mojom::NightLightController,
+class ASH_EXPORT NightLightControllerImpl
+    : public NightLightController,
       public WindowTreeHostManager::Observer,
       public aura::EnvObserver,
       public SessionObserver,
       public chromeos::PowerManagerClient::Observer {
  public:
-  using ScheduleType = mojom::NightLightController::ScheduleType;
-
   enum class AnimationDuration {
     // Short animation (2 seconds) used for manual changes of NightLight status
     // and temperature by the user.
@@ -73,23 +69,14 @@
 
     // Provides the delegate with the geoposition so that it can be used to
     // calculate sunset and sunrise times.
-    virtual void SetGeoposition(mojom::SimpleGeopositionPtr position) = 0;
+    virtual void SetGeoposition(const SimpleGeoposition& position) = 0;
 
     // Returns true if a geoposition value is available.
     virtual bool HasGeoposition() const = 0;
   };
 
-  class Observer {
-   public:
-    // Emitted when the NightLight status is changed.
-    virtual void OnNightLightEnabledChanged(bool enabled) = 0;
-
-   protected:
-    virtual ~Observer() {}
-  };
-
-  NightLightController();
-  ~NightLightController() override;
+  NightLightControllerImpl();
+  ~NightLightControllerImpl() override;
 
   static void RegisterProfilePrefs(PrefRegistrySimple* registry);
 
@@ -126,11 +113,6 @@
     return is_current_geoposition_from_cache_;
   }
 
-  void BindRequest(mojom::NightLightControllerRequest request);
-
-  void AddObserver(Observer* observer);
-  void RemoveObserver(Observer* observer);
-
   // Get the NightLight settings stored in the current active user prefs.
   bool GetEnabled() const;
   float GetColorTemperature() const;
@@ -159,9 +141,8 @@
   // SessionObserver:
   void OnActiveUserPrefServiceChanged(PrefService* pref_service) override;
 
-  // ash::mojom::NightLightController:
-  void SetCurrentGeoposition(mojom::SimpleGeopositionPtr position) override;
-  void SetClient(mojom::NightLightClientPtr client) override;
+  // ash::NightLightController:
+  void SetCurrentGeoposition(const SimpleGeoposition& position) override;
 
   // chromeos::PowerManagerClient::Observer:
   void SuspendDone(const base::TimeDelta& sleep_duration) override;
@@ -176,7 +157,7 @@
   // Called whenever we receive a new geoposition update to cache it in all
   // logged-in users' prefs so that it can be used later in the event of not
   // being able to retrieve a valid geoposition.
-  void StoreCachedGeoposition(const mojom::SimpleGeopositionPtr& position);
+  void StoreCachedGeoposition(const SimpleGeoposition& position);
 
   void RefreshLayersTemperature();
 
@@ -254,15 +235,9 @@
   // controlled by this class from the WebUI settings.
   std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
 
-  base::ObserverList<Observer>::Unchecked observers_;
-
-  mojo::Binding<mojom::NightLightController> binding_;
-
-  mojom::NightLightClientPtr client_;
-
-  DISALLOW_COPY_AND_ASSIGN(NightLightController);
+  DISALLOW_COPY_AND_ASSIGN(NightLightControllerImpl);
 };
 
 }  // namespace ash
 
-#endif  // ASH_SYSTEM_NIGHT_LIGHT_NIGHT_LIGHT_CONTROLLER_H_
+#endif  // ASH_SYSTEM_NIGHT_LIGHT_NIGHT_LIGHT_CONTROLLER_IMPL_H_
diff --git a/ash/system/night_light/night_light_controller_unittest.cc b/ash/system/night_light/night_light_controller_unittest.cc
index 16e5b43..a5cbe33 100644
--- a/ash/system/night_light/night_light_controller_unittest.cc
+++ b/ash/system/night_light/night_light_controller_unittest.cc
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "ash/system/night_light/night_light_controller.h"
-
 #include <cmath>
 #include <limits>
 #include <sstream>
@@ -17,6 +15,7 @@
 #include "ash/session/session_controller_impl.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
+#include "ash/system/night_light/night_light_controller_impl.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/ash_test_helper.h"
 #include "ash/test_shell_delegate.h"
@@ -41,7 +40,7 @@
 constexpr char kUser1Email[] = "user1@nightlight";
 constexpr char kUser2Email[] = "user2@nightlight";
 
-NightLightController* GetController() {
+NightLightControllerImpl* GetController() {
   return Shell::Get()->night_light_controller();
 }
 
@@ -62,9 +61,9 @@
   const float green_scale = matrix.get(1, 1);
   EXPECT_FLOAT_EQ(
       blue_scale,
-      NightLightController::BlueColorScaleFromTemperature(temperature));
+      NightLightControllerImpl::BlueColorScaleFromTemperature(temperature));
   EXPECT_FLOAT_EQ(green_scale,
-                  NightLightController::GreenColorScaleFromTemperature(
+                  NightLightControllerImpl::GreenColorScaleFromTemperature(
                       temperature, false /* in_linear_gamma_space */));
 }
 
@@ -103,7 +102,7 @@
 constexpr int kFakePosition2_SunsetOffset = 17 * 60;
 constexpr int kFakePosition2_SunriseOffset = 3 * 60;
 
-class TestDelegate : public NightLightController::Delegate {
+class TestDelegate : public NightLightControllerImpl::Delegate {
  public:
   TestDelegate() = default;
   ~TestDelegate() override = default;
@@ -112,19 +111,21 @@
   void SetFakeSunset(TimeOfDay time) { fake_sunset_ = time.ToTimeToday(); }
   void SetFakeSunrise(TimeOfDay time) { fake_sunrise_ = time.ToTimeToday(); }
 
-  // ash::NightLightController::Delegate
+  // ash::NightLightControllerImpl::Delegate
   base::Time GetNow() const override { return fake_now_; }
   base::Time GetSunsetTime() const override { return fake_sunset_; }
   base::Time GetSunriseTime() const override { return fake_sunrise_; }
-  void SetGeoposition(mojom::SimpleGeopositionPtr position) override {
+  void SetGeoposition(
+      const NightLightController::SimpleGeoposition& position) override {
     has_geoposition_ = true;
-    if (position.Equals(mojom::SimpleGeoposition::New(
-            kFakePosition1_Latitude, kFakePosition1_Longitude))) {
+    if (position == NightLightController::SimpleGeoposition{
+                        kFakePosition1_Latitude, kFakePosition1_Longitude}) {
       // Set sunset and sunrise times associated with fake position 1.
       SetFakeSunset(TimeOfDay(kFakePosition1_SunsetOffset));
       SetFakeSunrise(TimeOfDay(kFakePosition1_SunriseOffset));
-    } else if (position.Equals(mojom::SimpleGeoposition::New(
-                   kFakePosition2_Latitude, kFakePosition2_Longitude))) {
+    } else if (position ==
+               NightLightController::SimpleGeoposition{
+                   kFakePosition2_Latitude, kFakePosition2_Longitude}) {
       // Set sunset and sunrise times associated with fake position 2.
       SetFakeSunset(TimeOfDay(kFakePosition2_SunsetOffset));
       SetFakeSunrise(TimeOfDay(kFakePosition2_SunriseOffset));
@@ -183,7 +184,7 @@
 
   void SetNightLightEnabled(bool enabled) {
     GetController()->SetEnabled(
-        enabled, NightLightController::AnimationDuration::kShort);
+        enabled, NightLightControllerImpl::AnimationDuration::kShort);
   }
 
  private:
@@ -198,7 +199,7 @@
   UpdateDisplay("800x600,800x600");
 
   TestObserver observer;
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   SetNightLightEnabled(false);
   ASSERT_FALSE(controller->GetEnabled());
   TestCompositorsTemperature(0.0f);
@@ -217,7 +218,7 @@
   UpdateDisplay("800x600,800x600");
 
   TestObserver observer;
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   SetNightLightEnabled(false);
   ASSERT_FALSE(controller->GetEnabled());
 
@@ -257,7 +258,7 @@
 
 TEST_F(NightLightTest, TestNightLightWithDisplayConfigurationChanges) {
   // Start with one display and enable NightLight.
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   SetNightLightEnabled(true);
   ASSERT_TRUE(controller->GetEnabled());
   const float temperature = 0.2f;
@@ -310,7 +311,7 @@
 // user's prefs.
 TEST_F(NightLightTest, TestUserSwitchAndSettingsPersistence) {
   // Test start with user1 logged in.
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   SetNightLightEnabled(true);
   EXPECT_TRUE(controller->GetEnabled());
   const float user1_temperature = 0.8f;
@@ -342,7 +343,7 @@
 // Preferences are seen by the controlled and applied properly.
 TEST_F(NightLightTest, TestOutsidePreferencesChangesAreApplied) {
   // Test start with user1 logged in.
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   user1_pref_service()->SetBoolean(prefs::kNightLightEnabled, true);
   EXPECT_TRUE(controller->GetEnabled());
   const float temperature1 = 0.65f;
@@ -359,7 +360,7 @@
 
 // Tests transitioning from kNone to kCustom and back to kNone schedule types.
 TEST_F(NightLightTest, TestScheduleNoneToCustomTransition) {
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   // Now is 6:00 PM.
   delegate()->SetFakeNow(TimeOfDay(18 * 60));
   SetNightLightEnabled(false);
@@ -384,7 +385,7 @@
   controller->SetScheduleType(NightLightController::ScheduleType::kCustom);
   EXPECT_TRUE(controller->GetEnabled());
   TestCompositorsTemperature(controller->GetColorTemperature());
-  EXPECT_EQ(NightLightController::AnimationDuration::kShort,
+  EXPECT_EQ(NightLightControllerImpl::AnimationDuration::kShort,
             controller->last_animation_duration());
   EXPECT_TRUE(controller->timer()->IsRunning());
   EXPECT_EQ(base::TimeDelta::FromHours(2),
@@ -401,7 +402,7 @@
 // Tests what happens when the time now reaches the end of the NightLight
 // interval when NightLight mode is on.
 TEST_F(NightLightTest, TestCustomScheduleReachingEndTime) {
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   delegate()->SetFakeNow(TimeOfDay(18 * 60));
   controller->SetCustomStartTime(TimeOfDay(15 * 60));
   controller->SetCustomEndTime(TimeOfDay(20 * 60));
@@ -422,7 +423,7 @@
   controller->timer()->FireNow();
   EXPECT_FALSE(controller->GetEnabled());
   TestCompositorsTemperature(0.0f);
-  EXPECT_EQ(NightLightController::AnimationDuration::kLong,
+  EXPECT_EQ(NightLightControllerImpl::AnimationDuration::kLong,
             controller->last_animation_duration());
   // The timer should still be running, but now scheduling the start at 3:00 PM
   // tomorrow which is 19 hours from "now" (8:00 PM).
@@ -441,7 +442,7 @@
   //        |                   |              |
   //      start                end            now
   //
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   delegate()->SetFakeNow(TimeOfDay(23 * 60));
   controller->SetCustomStartTime(TimeOfDay(15 * 60));
   controller->SetCustomEndTime(TimeOfDay(20 * 60));
@@ -457,7 +458,7 @@
   controller->Toggle();
   EXPECT_TRUE(controller->GetEnabled());
   TestCompositorsTemperature(controller->GetColorTemperature());
-  EXPECT_EQ(NightLightController::AnimationDuration::kShort,
+  EXPECT_EQ(NightLightControllerImpl::AnimationDuration::kShort,
             controller->last_animation_duration());
   // The timer should still be running, but NightLight should automatically
   // turn off at 8:00 PM tomorrow, which is 21 hours from now (11:00 PM).
@@ -470,7 +471,7 @@
   controller->Toggle();
   EXPECT_FALSE(controller->GetEnabled());
   TestCompositorsTemperature(0.0f);
-  EXPECT_EQ(NightLightController::AnimationDuration::kShort,
+  EXPECT_EQ(NightLightControllerImpl::AnimationDuration::kShort,
             controller->last_animation_duration());
   EXPECT_TRUE(controller->timer()->IsRunning());
   EXPECT_EQ(base::TimeDelta::FromHours(16),
@@ -486,7 +487,7 @@
   //        |             |             |
   //       now          start          end
   //
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   delegate()->SetFakeNow(TimeOfDay(16 * 60));  // 4:00 PM.
   SetNightLightEnabled(false);
   controller->SetScheduleType(NightLightController::ScheduleType::kNone);
@@ -529,7 +530,7 @@
   //        |             |         |          |                 |
   //       now      custom start  sunset   custom end         sunrise
   //
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   delegate()->SetFakeNow(TimeOfDay(16 * 60));     // 4:00 PM.
   delegate()->SetFakeSunset(TimeOfDay(20 * 60));  // 8:00 PM.
   delegate()->SetFakeSunrise(TimeOfDay(5 * 60));  // 5:00 AM.
@@ -553,7 +554,7 @@
   controller->timer()->FireNow();
   EXPECT_TRUE(controller->GetEnabled());
   TestCompositorsTemperature(controller->GetColorTemperature());
-  EXPECT_EQ(NightLightController::AnimationDuration::kLong,
+  EXPECT_EQ(NightLightControllerImpl::AnimationDuration::kLong,
             controller->last_animation_duration());
   // Timer is running scheduling the end at sunrise.
   EXPECT_TRUE(controller->timer()->IsRunning());
@@ -565,7 +566,7 @@
   controller->timer()->FireNow();
   EXPECT_FALSE(controller->GetEnabled());
   TestCompositorsTemperature(0.0f);
-  EXPECT_EQ(NightLightController::AnimationDuration::kLong,
+  EXPECT_EQ(NightLightControllerImpl::AnimationDuration::kLong,
             controller->last_animation_duration());
   // Timer is running scheduling the start at the next sunset.
   EXPECT_TRUE(controller->timer()->IsRunning());
@@ -583,10 +584,10 @@
   //        |           |                  |
   //       now        sunset            sunrise
   //
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   delegate()->SetFakeNow(TimeOfDay(16 * 60));  // 4:00 PM.
-  controller->SetCurrentGeoposition(mojom::SimpleGeoposition::New(
-      kFakePosition1_Latitude, kFakePosition1_Longitude));
+  controller->SetCurrentGeoposition(NightLightController::SimpleGeoposition{
+      kFakePosition1_Latitude, kFakePosition1_Longitude});
 
   // Expect that timer is running and the start is scheduled after 4 hours.
   controller->SetScheduleType(
@@ -602,7 +603,7 @@
   controller->timer()->FireNow();
   EXPECT_TRUE(controller->GetEnabled());
   TestCompositorsTemperature(controller->GetColorTemperature());
-  EXPECT_EQ(NightLightController::AnimationDuration::kLong,
+  EXPECT_EQ(NightLightControllerImpl::AnimationDuration::kLong,
             controller->last_animation_duration());
   // Timer is running scheduling the end at sunrise.
   EXPECT_TRUE(controller->timer()->IsRunning());
@@ -617,8 +618,8 @@
   //        |           |                  |
   //      sunset       now               sunrise
   //
-  controller->SetCurrentGeoposition(mojom::SimpleGeoposition::New(
-      kFakePosition2_Latitude, kFakePosition2_Longitude));
+  controller->SetCurrentGeoposition(NightLightController::SimpleGeoposition{
+      kFakePosition2_Latitude, kFakePosition2_Longitude});
 
   // Expect that the scheduled end delay has been updated, and the status hasn't
   // changed.
@@ -633,7 +634,7 @@
   controller->timer()->FireNow();
   EXPECT_FALSE(controller->GetEnabled());
   TestCompositorsTemperature(0.0f);
-  EXPECT_EQ(NightLightController::AnimationDuration::kLong,
+  EXPECT_EQ(NightLightControllerImpl::AnimationDuration::kLong,
             controller->last_animation_duration());
   // Timer is running scheduling the start at the next sunset.
   EXPECT_TRUE(controller->timer()->IsRunning());
@@ -644,7 +645,7 @@
 // Tests the behavior when there is no valid geoposition for example due to lack
 // of connectivity.
 TEST_F(NightLightTest, AbsentValidGeoposition) {
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   ASSERT_FALSE(delegate()->HasGeoposition());
 
   // Initially, no values are stored in either of the two users' prefs.
@@ -691,8 +692,8 @@
   EXPECT_EQ(delegate()->GetSunriseTime(), kSunrise1.ToTimeToday());
 
   // Now simulate receiving a geoposition update of fake geoposition 2.
-  controller->SetCurrentGeoposition(mojom::SimpleGeoposition::New(
-      kFakePosition2_Latitude, kFakePosition2_Longitude));
+  controller->SetCurrentGeoposition(NightLightController::SimpleGeoposition{
+      kFakePosition2_Latitude, kFakePosition2_Longitude});
   EXPECT_TRUE(delegate()->HasGeoposition());
   EXPECT_FALSE(controller->is_current_geoposition_from_cache());
   EXPECT_EQ(delegate()->GetSunsetTime(), kSunset2.ToTimeToday());
@@ -720,8 +721,8 @@
   user2_pref_service()->ClearPref(prefs::kNightLightCachedLongitude);
 
   // Now simulate receiving a geoposition update of fake geoposition 1.
-  controller->SetCurrentGeoposition(mojom::SimpleGeoposition::New(
-      kFakePosition1_Latitude, kFakePosition1_Longitude));
+  controller->SetCurrentGeoposition(NightLightController::SimpleGeoposition{
+      kFakePosition1_Latitude, kFakePosition1_Longitude});
   EXPECT_TRUE(delegate()->HasGeoposition());
   EXPECT_FALSE(controller->is_current_geoposition_from_cache());
   EXPECT_EQ(delegate()->GetSunsetTime(), kSunset1.ToTimeToday());
@@ -739,7 +740,7 @@
 // Tests that on device resume from sleep, the NightLight status is updated
 // correctly if the time has changed meanwhile.
 TEST_F(NightLightTest, TestCustomScheduleOnResume) {
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   // Now is 4:00 PM.
   delegate()->SetFakeNow(TimeOfDay(16 * 60));
   SetNightLightEnabled(false);
@@ -782,7 +783,7 @@
 //
 // Case 1: "Now" is less than both "end" and "start".
 TEST_F(NightLightTest, TestCustomScheduleInvertedStartAndEndTimesCase1) {
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   // Now is 4:00 AM.
   delegate()->SetFakeNow(TimeOfDay(4 * 60));
   SetNightLightEnabled(false);
@@ -808,7 +809,7 @@
 
 // Case 2: "Now" is between "end" and "start".
 TEST_F(NightLightTest, TestCustomScheduleInvertedStartAndEndTimesCase2) {
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   // Now is 6:00 AM.
   delegate()->SetFakeNow(TimeOfDay(6 * 60));
   SetNightLightEnabled(false);
@@ -834,7 +835,7 @@
 
 // Case 3: "Now" is greater than both "start" and "end".
 TEST_F(NightLightTest, TestCustomScheduleInvertedStartAndEndTimesCase3) {
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   // Now is 11:00 PM.
   delegate()->SetFakeNow(TimeOfDay(23 * 60));
   SetNightLightEnabled(false);
@@ -957,12 +958,13 @@
                         bool in_linear_gamma_space,
                         const std::string& logger_actions_string) const {
     if (in_linear_gamma_space)
-      temperature = NightLightController::GetNonLinearTemperature(temperature);
+      temperature =
+          NightLightControllerImpl::GetNonLinearTemperature(temperature);
     constexpr float kRedScale = 1.0f;
     const float blue_scale =
-        NightLightController::BlueColorScaleFromTemperature(temperature);
+        NightLightControllerImpl::BlueColorScaleFromTemperature(temperature);
     const float green_scale =
-        NightLightController::GreenColorScaleFromTemperature(
+        NightLightControllerImpl::GreenColorScaleFromTemperature(
             temperature, in_linear_gamma_space);
     std::stringstream pattern_stream;
     pattern_stream << "*set_color_matrix(id=" << display_id
@@ -997,7 +999,7 @@
   ASSERT_EQ(2u, RootWindowController::root_window_controllers().size());
 
   // Turn on Night Light:
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   SetNightLightEnabled(true);
   float temperature = 0.2f;
   GetLoggerActionsAndClear();
@@ -1055,7 +1057,7 @@
   ASSERT_EQ(2u, RootWindowController::root_window_controllers().size());
 
   // Turn on Night Light:
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   SetNightLightEnabled(true);
   float temperature = 0.2f;
   GetLoggerActionsAndClear();
@@ -1094,7 +1096,7 @@
   ASSERT_EQ(2u, RootWindowController::root_window_controllers().size());
 
   // Turn on Night Light:
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   SetNightLightEnabled(true);
   const float temperature = 0.2f;
   GetLoggerActionsAndClear();
@@ -1125,7 +1127,7 @@
   ASSERT_EQ(2u, RootWindowController::root_window_controllers().size());
 
   // Turn on Night Light:
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   SetNightLightEnabled(true);
   const float temperature = 0.2f;
   GetLoggerActionsAndClear();
@@ -1153,7 +1155,7 @@
   ASSERT_EQ(2u, RootWindowController::root_window_controllers().size());
 
   // Turn on Night Light:
-  NightLightController* controller = GetController();
+  NightLightControllerImpl* controller = GetController();
   SetNightLightEnabled(true);
   const float temperature = 0.2f;
   GetLoggerActionsAndClear();
diff --git a/ash/system/night_light/night_light_feature_pod_controller.cc b/ash/system/night_light/night_light_feature_pod_controller.cc
index fe0be01..88beca8 100644
--- a/ash/system/night_light/night_light_feature_pod_controller.cc
+++ b/ash/system/night_light/night_light_feature_pod_controller.cc
@@ -10,7 +10,7 @@
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/system_tray_model.h"
-#include "ash/system/night_light/night_light_controller.h"
+#include "ash/system/night_light/night_light_controller_impl.h"
 #include "ash/system/tray/tray_popup_utils.h"
 #include "ash/system/unified/feature_pod_button.h"
 #include "ash/system/unified/unified_system_tray_controller.h"
diff --git a/ash/system/night_light/night_light_toggle_button.cc b/ash/system/night_light/night_light_toggle_button.cc
index cc3974a0..2679fc4d 100644
--- a/ash/system/night_light/night_light_toggle_button.cc
+++ b/ash/system/night_light/night_light_toggle_button.cc
@@ -6,7 +6,7 @@
 
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
-#include "ash/system/night_light/night_light_controller.h"
+#include "ash/system/night_light/night_light_controller_impl.h"
 #include "ash/system/tray/tray_constants.h"
 #include "ash/system/tray/tray_popup_item_style.h"
 #include "ui/accessibility/ax_enums.mojom.h"
diff --git a/ash/system/tray/tray_item_view.cc b/ash/system/tray/tray_item_view.cc
index f16a046..1bc2768 100644
--- a/ash/system/tray/tray_item_view.cc
+++ b/ash/system/tray/tray_item_view.cc
@@ -33,7 +33,10 @@
 }
 
 TrayItemView::TrayItemView(Shelf* shelf)
-    : shelf_(shelf), label_(NULL), image_view_(NULL) {
+    : views::AnimationDelegateViews(this),
+      shelf_(shelf),
+      label_(NULL),
+      image_view_(NULL) {
   DCHECK(shelf_);
   SetPaintToLayer();
   layer()->SetFillsBoundsOpaquely(false);
diff --git a/ash/system/tray/tray_item_view.h b/ash/system/tray/tray_item_view.h
index 4973ef14..ee13c1e 100644
--- a/ash/system/tray/tray_item_view.h
+++ b/ash/system/tray/tray_item_view.h
@@ -9,7 +9,7 @@
 
 #include "ash/ash_export.h"
 #include "base/macros.h"
-#include "ui/gfx/animation/animation_delegate.h"
+#include "ui/views/animation/animation_delegate_views.h"
 #include "ui/views/controls/label.h"
 #include "ui/views/view.h"
 
@@ -45,7 +45,7 @@
 // correctly when the visibility/size of the tray item changes. It also adds
 // animation when showing/hiding the item in the tray.
 class ASH_EXPORT TrayItemView : public views::View,
-                                public gfx::AnimationDelegate {
+                                public views::AnimationDelegateViews {
  public:
   explicit TrayItemView(Shelf* shelf);
   ~TrayItemView() override;
@@ -58,7 +58,7 @@
   IconizedLabel* label() const { return label_; }
   views::ImageView* image_view() const { return image_view_; }
 
-  // Overridden from views::View.
+  // views::View.
   void SetVisible(bool visible) override;
   gfx::Size CalculatePreferredSize() const override;
   int GetHeightForWidth(int width) const override;
@@ -72,10 +72,10 @@
   bool IsHorizontalAlignment() const;
 
  private:
-  // Overridden from views::View.
+  // views::View.
   void ChildPreferredSizeChanged(View* child) override;
 
-  // Overridden from gfx::AnimationDelegate.
+  // views::AnimationDelegateViews.
   void AnimationProgressed(const gfx::Animation* animation) override;
   void AnimationEnded(const gfx::Animation* animation) override;
   void AnimationCanceled(const gfx::Animation* animation) override;
diff --git a/ash/touch/touch_hud_renderer.cc b/ash/touch/touch_hud_renderer.cc
index 8c32e51..4817df6f 100644
--- a/ash/touch/touch_hud_renderer.cc
+++ b/ash/touch/touch_hud_renderer.cc
@@ -9,11 +9,11 @@
 #include "ui/compositor/layer.h"
 #include "ui/compositor/layer_owner.h"
 #include "ui/events/event.h"
-#include "ui/gfx/animation/animation_delegate.h"
 #include "ui/gfx/animation/linear_animation.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/skia_util.h"
+#include "ui/views/animation/animation_delegate_views.h"
 #include "ui/views/view.h"
 #include "ui/views/widget/widget.h"
 #include "ui/views/widget/widget_observer.h"
@@ -30,10 +30,11 @@
 
 // TouchPointView draws a single touch point.
 class TouchPointView : public views::View,
-                       public gfx::AnimationDelegate,
+                       public views::AnimationDelegateViews,
                        public views::WidgetObserver {
  public:
-  explicit TouchPointView(views::Widget* parent_widget) {
+  explicit TouchPointView(views::Widget* parent_widget)
+      : views::AnimationDelegateViews(this) {
     set_owned_by_client();
     SetPaintToLayer();
     layer()->SetFillsBoundsOpaquely(false);
@@ -93,7 +94,7 @@
     canvas->DrawCircle(center, SkIntToScalar(kPointRadius), stroke_flags);
   }
 
-  // gfx::AnimationDelegate:
+  // views::AnimationDelegateViews:
   void AnimationEnded(const gfx::Animation* animation) override {
     DCHECK_EQ(fadeout_.get(), animation);
     owned_self_reference_.reset();
diff --git a/ash/wm/overview/overview_grid.cc b/ash/wm/overview/overview_grid.cc
index 1b13f52..bcc9bc7 100644
--- a/ash/wm/overview/overview_grid.cc
+++ b/ash/wm/overview/overview_grid.cc
@@ -177,6 +177,9 @@
   aura::Window* parent = dragged_window->parent();
   gfx::Rect bounds = dragged_window->bounds();
   ::wm::ConvertRectToScreen(parent, &bounds);
+  bounds.Inset(/*left=*/0,
+               /*top=*/dragged_window->GetProperty(aura::client::kTopViewInset),
+               /*right=*/0, /*bottom=*/0);
   views::Widget::InitParams params;
   params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS;
   params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
diff --git a/ash/wm/splitview/split_view_divider.cc b/ash/wm/splitview/split_view_divider.cc
index 54443cd..73ac1b5 100644
--- a/ash/wm/splitview/split_view_divider.cc
+++ b/ash/wm/splitview/split_view_divider.cc
@@ -10,6 +10,7 @@
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/screen_util.h"
 #include "ash/shell.h"
+#include "ash/wm/desks/desks_util.h"
 #include "ash/wm/splitview/split_view_constants.h"
 #include "ash/wm/splitview/split_view_controller.h"
 #include "ash/wm/splitview/split_view_divider_handler_view.h"
@@ -325,11 +326,10 @@
 }
 
 gfx::Rect SplitViewDivider::GetDividerBoundsInScreen(bool is_dragging) {
-  aura::Window* root_window =
-      divider_widget_->GetNativeWindow()->GetRootWindow();
   const gfx::Rect work_area_bounds_in_screen =
       screen_util::GetDisplayWorkAreaBoundsInScreenForActiveDeskContainer(
-          root_window);
+          Shell::GetPrimaryRootWindow()->GetChildById(
+              desks_util::GetActiveDeskContainerId()));
   const int divider_position = controller_->divider_position();
   const OrientationLockType screen_orientation = GetCurrentScreenOrientation();
   return GetDividerBoundsInScreen(work_area_bounds_in_screen,
diff --git a/base/BUILD.gn b/base/BUILD.gn
index 415fc69..b9834a8 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -622,7 +622,6 @@
     "profiler/native_unwinder_mac.h",
     "profiler/native_unwinder_win.cc",
     "profiler/native_unwinder_win.h",
-    "profiler/profile_builder.cc",
     "profiler/profile_builder.h",
     "profiler/register_context.h",
     "profiler/sample_metadata.cc",
@@ -863,6 +862,8 @@
     "task/thread_pool/thread_group_native_win.h",
     "task/thread_pool/thread_pool.cc",
     "task/thread_pool/thread_pool.h",
+    "task/thread_pool/thread_pool_clock.cc",
+    "task/thread_pool/thread_pool_clock.h",
     "task/thread_pool/thread_pool_impl.cc",
     "task/thread_pool/thread_pool_impl.h",
     "task/thread_pool/tracked_ref.h",
diff --git a/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java b/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java
index 68e551f..c625211 100644
--- a/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java
+++ b/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java
@@ -24,7 +24,6 @@
 import android.graphics.drawable.LayerDrawable;
 import android.graphics.drawable.TransitionDrawable;
 import android.graphics.drawable.VectorDrawable;
-import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.PowerManager;
@@ -50,7 +49,6 @@
 import android.widget.PopupWindow;
 import android.widget.TextView;
 
-import java.io.File;
 import java.io.UnsupportedEncodingException;
 
 /**
@@ -500,18 +498,6 @@
     }
 
     /**
-     * Get the URI for a downloaded file.
-     *
-     * @param file A downloaded file.
-     * @return URI for |file|.
-     */
-    public static Uri getUriForDownloadedFile(File file) {
-        return Build.VERSION.SDK_INT > Build.VERSION_CODES.M
-                ? FileUtils.getUriForFile(file)
-                : Uri.fromFile(file);
-    }
-
-    /**
      * @see android.view.Window#FEATURE_INDETERMINATE_PROGRESS
      */
     public static void setWindowIndeterminateProgress(Window window) {
diff --git a/base/android/linker/BUILD.gn b/base/android/linker/BUILD.gn
index dd5a0d6f31..1f1821d 100644
--- a/base/android/linker/BUILD.gn
+++ b/base/android/linker/BUILD.gn
@@ -9,7 +9,10 @@
 
 shared_library("chromium_android_linker") {
   sources = [
+    "legacy_linker_jni.cc",
+    "legacy_linker_jni.h",
     "linker_jni.cc",
+    "linker_jni.h",
   ]
 
   # The NDK contains the crazy_linker here:
diff --git a/base/android/linker/legacy_linker_jni.cc b/base/android/linker/legacy_linker_jni.cc
new file mode 100644
index 0000000..0a2477e0
--- /dev/null
+++ b/base/android/linker/legacy_linker_jni.cc
@@ -0,0 +1,253 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This is the version of the Android-specific Chromium linker that uses
+// the crazy linker to load libraries.
+
+// This source code *cannot* depend on anything from base/ or the C++
+// STL, to keep the final library small, and avoid ugly dependency issues.
+
+#include "legacy_linker_jni.h"
+
+#include <crazy_linker.h>
+#include <fcntl.h>
+#include <jni.h>
+#include <limits.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "linker_jni.h"
+
+namespace chromium_android_linker {
+namespace {
+
+// The linker uses a single crazy_context_t object created on demand.
+// There is no need to protect this against concurrent access, locking
+// is already handled on the Java side.
+crazy_context_t* GetCrazyContext() {
+  static crazy_context_t* s_crazy_context = nullptr;
+
+  if (!s_crazy_context) {
+    // Create new context.
+    s_crazy_context = crazy_context_create();
+
+    // Ensure libraries located in the same directory as the linker
+    // can be loaded before system ones.
+    crazy_add_search_path_for_address(
+        reinterpret_cast<void*>(&GetCrazyContext));
+  }
+
+  return s_crazy_context;
+}
+
+// A scoped crazy_library_t that automatically closes the handle
+// on scope exit, unless Release() has been called.
+class ScopedLibrary {
+ public:
+  ScopedLibrary() : lib_(nullptr) {}
+
+  ~ScopedLibrary() {
+    if (lib_)
+      crazy_library_close_with_context(lib_, GetCrazyContext());
+  }
+
+  crazy_library_t* Get() { return lib_; }
+
+  crazy_library_t** GetPtr() { return &lib_; }
+
+  crazy_library_t* Release() {
+    crazy_library_t* ret = lib_;
+    lib_ = nullptr;
+    return ret;
+  }
+
+ private:
+  crazy_library_t* lib_;
+};
+
+// We identify the abi tag for which the linker is running. This allows
+// us to select the library which matches the abi of the linker.
+
+#if defined(__arm__) && defined(__ARM_ARCH_7A__)
+#define CURRENT_ABI "armeabi-v7a"
+#elif defined(__arm__)
+#define CURRENT_ABI "armeabi"
+#elif defined(__i386__)
+#define CURRENT_ABI "x86"
+#elif defined(__mips__)
+#define CURRENT_ABI "mips"
+#elif defined(__x86_64__)
+#define CURRENT_ABI "x86_64"
+#elif defined(__aarch64__)
+#define CURRENT_ABI "arm64-v8a"
+#else
+#error "Unsupported target abi"
+#endif
+
+// Add a zip archive file path to the context's current search path
+// list. Making it possible to load libraries directly from it.
+JNI_GENERATOR_EXPORT bool
+Java_org_chromium_base_library_1loader_LegacyLinker_nativeAddZipArchivePath(
+    JNIEnv* env,
+    jclass clazz,
+    jstring apk_path_obj) {
+  String apk_path(env, apk_path_obj);
+
+  char search_path[512];
+  snprintf(search_path, sizeof(search_path), "%s!lib/" CURRENT_ABI "/",
+           apk_path.c_str());
+
+  crazy_add_search_path(search_path);
+  return true;
+}
+
+// Load a library with the chromium linker. This will also call its
+// JNI_OnLoad() method, which shall register its methods. Note that
+// lazy native method resolution will _not_ work after this, because
+// Dalvik uses the system's dlsym() which won't see the new library,
+// so explicit registration is mandatory.
+//
+// |env| is the current JNI environment handle.
+// |clazz| is the static class handle for org.chromium.base.Linker,
+// and is ignored here.
+// |library_name| is the library name (e.g. libfoo.so).
+// |load_address| is an explicit load address.
+// |lib_info_obj| is a LibInfo handle used to communicate information
+// with the Java side.
+// Return true on success.
+JNI_GENERATOR_EXPORT bool
+Java_org_chromium_base_library_1loader_LegacyLinker_nativeLoadLibrary(
+    JNIEnv* env,
+    jclass clazz,
+    jstring lib_name_obj,
+    jlong load_address,
+    jobject lib_info_obj) {
+  String library_name(env, lib_name_obj);
+  LOG_INFO("Called for %s, at address 0x%llx", library_name.c_str(),
+           load_address);
+  crazy_context_t* context = GetCrazyContext();
+
+  if (!IsValidAddress(load_address)) {
+    LOG_ERROR("Invalid address 0x%llx",
+              static_cast<unsigned long long>(load_address));
+    return false;
+  }
+
+  // Set the desired load address (0 means randomize it).
+  crazy_context_set_load_address(context, static_cast<size_t>(load_address));
+
+  ScopedLibrary library;
+  if (!crazy_library_open(library.GetPtr(), library_name.c_str(), context)) {
+    return false;
+  }
+
+  crazy_library_info_t info;
+  if (!crazy_library_get_info(library.Get(), context, &info)) {
+    LOG_ERROR("Could not get library information for %s: %s",
+              library_name.c_str(), crazy_context_get_error(context));
+    return false;
+  }
+
+  // Release library object to keep it alive after the function returns.
+  library.Release();
+
+  s_lib_info_fields.SetLoadInfo(env, lib_info_obj, info.load_address,
+                                info.load_size);
+  LOG_INFO("Success loading library %s", library_name.c_str());
+  return true;
+}
+
+JNI_GENERATOR_EXPORT jboolean
+Java_org_chromium_base_library_1loader_LegacyLinker_nativeCreateSharedRelro(
+    JNIEnv* env,
+    jclass clazz,
+    jstring library_name,
+    jlong load_address,
+    jobject lib_info_obj) {
+  String lib_name(env, library_name);
+
+  LOG_INFO("Called for %s", lib_name.c_str());
+
+  if (!IsValidAddress(load_address)) {
+    LOG_ERROR("Invalid address 0x%llx",
+              static_cast<unsigned long long>(load_address));
+    return false;
+  }
+
+  ScopedLibrary library;
+  if (!crazy_library_find_by_name(lib_name.c_str(), library.GetPtr())) {
+    LOG_ERROR("Could not find %s", lib_name.c_str());
+    return false;
+  }
+
+  crazy_context_t* context = GetCrazyContext();
+  size_t relro_start = 0;
+  size_t relro_size = 0;
+  int relro_fd = -1;
+
+  if (!crazy_library_create_shared_relro(
+          library.Get(), context, static_cast<size_t>(load_address),
+          &relro_start, &relro_size, &relro_fd)) {
+    LOG_ERROR("Could not create shared RELRO sharing for %s: %s\n",
+              lib_name.c_str(), crazy_context_get_error(context));
+    return false;
+  }
+
+  s_lib_info_fields.SetRelroInfo(env, lib_info_obj, relro_start, relro_size,
+                                 relro_fd);
+  return true;
+}
+
+JNI_GENERATOR_EXPORT jboolean
+Java_org_chromium_base_library_1loader_LegacyLinker_nativeUseSharedRelro(
+    JNIEnv* env,
+    jclass clazz,
+    jstring library_name,
+    jobject lib_info_obj) {
+  String lib_name(env, library_name);
+
+  LOG_INFO("Called for %s, lib_info_ref=%p", lib_name.c_str(), lib_info_obj);
+
+  ScopedLibrary library;
+  if (!crazy_library_find_by_name(lib_name.c_str(), library.GetPtr())) {
+    LOG_ERROR("Could not find %s", lib_name.c_str());
+    return false;
+  }
+
+  crazy_context_t* context = GetCrazyContext();
+  size_t relro_start = 0;
+  size_t relro_size = 0;
+  int relro_fd = -1;
+  s_lib_info_fields.GetRelroInfo(env, lib_info_obj, &relro_start, &relro_size,
+                                 &relro_fd);
+
+  LOG_INFO("library=%s relro start=%p size=%p fd=%d", lib_name.c_str(),
+           (void*)relro_start, (void*)relro_size, relro_fd);
+
+  if (!crazy_library_use_shared_relro(library.Get(), context, relro_start,
+                                      relro_size, relro_fd)) {
+    LOG_ERROR("Could not use shared RELRO for %s: %s", lib_name.c_str(),
+              crazy_context_get_error(context));
+    return false;
+  }
+
+  LOG_INFO("Library %s using shared RELRO section!", lib_name.c_str());
+
+  return true;
+}
+
+}  // namespace
+
+bool LegacyLinkerJNIInit(JavaVM* vm, JNIEnv* env) {
+  LOG_INFO("Entering");
+
+  // Save JavaVM* handle into linker, so that it can call JNI_OnLoad()
+  // automatically when loading libraries containing JNI entry points.
+  crazy_set_java_vm(vm, JNI_VERSION_1_4);
+
+  return true;
+}
+
+}  // namespace chromium_android_linker
diff --git a/base/android/linker/legacy_linker_jni.h b/base/android/linker/legacy_linker_jni.h
new file mode 100644
index 0000000..fcacf12
--- /dev/null
+++ b/base/android/linker/legacy_linker_jni.h
@@ -0,0 +1,21 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BASE_ANDROID_LINKER_LEGACY_LINKER_JNI_H_
+#define BASE_ANDROID_LINKER_LEGACY_LINKER_JNI_H_
+
+#include <jni.h>
+
+namespace chromium_android_linker {
+
+// JNI_OnLoad() initialization hook for the legacy linker.
+// Sets up JNI and other initializations for native linker code.
+// |vm| is the Java VM handle passed to JNI_OnLoad().
+// |env| is the current JNI environment handle.
+// On success, returns true.
+extern bool LegacyLinkerJNIInit(JavaVM* vm, JNIEnv* env);
+
+}  // namespace chromium_android_linker
+
+#endif  // BASE_ANDROID_LINKER_LEGACY_LINKER_JNI_H_
diff --git a/base/android/linker/linker_jni.cc b/base/android/linker/linker_jni.cc
index 15d2691..dbd3508 100644
--- a/base/android/linker/linker_jni.cc
+++ b/base/android/linker/linker_jni.cc
@@ -12,69 +12,19 @@
 // This source code *cannot* depend on anything from base/ or the C++
 // STL, to keep the final library small, and avoid ugly dependency issues.
 
-#include <android/log.h>
+#include "linker_jni.h"
+
 #include <jni.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/mman.h>
 
-#include "build/build_config.h"
-
-#include <crazy_linker.h>
-
-// Set this to 1 to enable debug traces to the Android log.
-// Note that LOG() from "base/logging.h" cannot be used, since it is
-// in base/ which hasn't been loaded yet.
-#define DEBUG 0
-
-#define TAG "cr_ChromiumAndroidLinker"
-
-#if DEBUG
-#define LOG_INFO(FORMAT, ...)                                             \
-  __android_log_print(ANDROID_LOG_INFO, TAG, "%s: " FORMAT, __FUNCTION__, \
-                      ##__VA_ARGS__)
-#else
-#define LOG_INFO(FORMAT, ...) ((void)0)
-#endif
-#define LOG_ERROR(FORMAT, ...)                                             \
-  __android_log_print(ANDROID_LOG_ERROR, TAG, "%s: " FORMAT, __FUNCTION__, \
-                      ##__VA_ARGS__)
-
-#define UNUSED __attribute__((unused))
-
-#if defined(ARCH_CPU_X86)
-// Dalvik JIT generated code doesn't guarantee 16-byte stack alignment on
-// x86 - use force_align_arg_pointer to realign the stack at the JNI
-// boundary. https://crbug.com/655248
-#define JNI_GENERATOR_EXPORT \
-  extern "C" __attribute__((visibility("default"), force_align_arg_pointer))
-#else
-#define JNI_GENERATOR_EXPORT extern "C" __attribute__((visibility("default")))
-#endif
+#include "legacy_linker_jni.h"
 
 namespace chromium_android_linker {
 
-namespace {
-
-// Larger than the largest library we might attempt to load.
-constexpr size_t kAddressSpaceReservationSize = 192 * 1024 * 1024;
-
-// A simple scoped UTF String class that can be initialized from
-// a Java jstring handle. Modeled like std::string, which cannot
-// be used here.
-class String {
- public:
-  String(JNIEnv* env, jstring str);
-
-  inline ~String() { ::free(ptr_); }
-
-  inline const char* c_str() const { return ptr_ ? ptr_ : ""; }
-  inline size_t size() const { return size_; }
-
- private:
-  char* ptr_;
-  size_t size_;
-};
+// Variable containing LibInfo for the loaded library.
+LibInfo_class s_lib_info_fields;
 
 // Simple scoped UTF String class constructor.
 String::String(JNIEnv* env, jstring str) {
@@ -131,126 +81,6 @@
   return true;
 }
 
-// A class used to model the field IDs of the org.chromium.base.Linker
-// LibInfo inner class, used to communicate data with the Java side
-// of the linker.
-struct LibInfo_class {
-  jfieldID load_address_id;
-  jfieldID load_size_id;
-  jfieldID relro_start_id;
-  jfieldID relro_size_id;
-  jfieldID relro_fd_id;
-
-  // Initialize an instance.
-  bool Init(JNIEnv* env) {
-    jclass clazz;
-    if (!InitClassReference(
-            env, "org/chromium/base/library_loader/Linker$LibInfo", &clazz)) {
-      return false;
-    }
-
-    return InitFieldId(env, clazz, "mLoadAddress", "J", &load_address_id) &&
-           InitFieldId(env, clazz, "mLoadSize", "J", &load_size_id) &&
-           InitFieldId(env, clazz, "mRelroStart", "J", &relro_start_id) &&
-           InitFieldId(env, clazz, "mRelroSize", "J", &relro_size_id) &&
-           InitFieldId(env, clazz, "mRelroFd", "I", &relro_fd_id);
-  }
-
-  void SetLoadInfo(JNIEnv* env,
-                   jobject library_info_obj,
-                   size_t load_address,
-                   size_t load_size) {
-    env->SetLongField(library_info_obj, load_address_id, load_address);
-    env->SetLongField(library_info_obj, load_size_id, load_size);
-  }
-
-  void SetRelroInfo(JNIEnv* env,
-                    jobject library_info_obj,
-                    size_t relro_start,
-                    size_t relro_size,
-                    int relro_fd) {
-    env->SetLongField(library_info_obj, relro_start_id, relro_start);
-    env->SetLongField(library_info_obj, relro_size_id, relro_size);
-    env->SetIntField(library_info_obj, relro_fd_id, relro_fd);
-  }
-
-  // Use this instance to convert a RelroInfo reference into
-  // a crazy_library_info_t.
-  void GetRelroInfo(JNIEnv* env,
-                    jobject library_info_obj,
-                    size_t* relro_start,
-                    size_t* relro_size,
-                    int* relro_fd) {
-    if (relro_start) {
-      *relro_start = static_cast<size_t>(
-          env->GetLongField(library_info_obj, relro_start_id));
-    }
-
-    if (relro_size) {
-      *relro_size = static_cast<size_t>(
-          env->GetLongField(library_info_obj, relro_size_id));
-    }
-
-    if (relro_fd) {
-      *relro_fd = env->GetIntField(library_info_obj, relro_fd_id);
-    }
-  }
-};
-
-// Variable containing LibInfo for the loaded library.
-LibInfo_class s_lib_info_fields;
-
-// Return true iff |address| is a valid address for the target CPU.
-inline bool IsValidAddress(jlong address) {
-  return static_cast<jlong>(static_cast<size_t>(address)) == address;
-}
-
-// The linker uses a single crazy_context_t object created on demand.
-// There is no need to protect this against concurrent access, locking
-// is already handled on the Java side.
-crazy_context_t* GetCrazyContext() {
-  static crazy_context_t* s_crazy_context = nullptr;
-
-  if (!s_crazy_context) {
-    // Create new context.
-    s_crazy_context = crazy_context_create();
-
-    // Ensure libraries located in the same directory as the linker
-    // can be loaded before system ones.
-    crazy_add_search_path_for_address(
-        reinterpret_cast<void*>(&GetCrazyContext));
-  }
-
-  return s_crazy_context;
-}
-
-// A scoped crazy_library_t that automatically closes the handle
-// on scope exit, unless Release() has been called.
-class ScopedLibrary {
- public:
-  ScopedLibrary() : lib_(nullptr) {}
-
-  ~ScopedLibrary() {
-    if (lib_)
-      crazy_library_close_with_context(lib_, GetCrazyContext());
-  }
-
-  crazy_library_t* Get() { return lib_; }
-
-  crazy_library_t** GetPtr() { return &lib_; }
-
-  crazy_library_t* Release() {
-    crazy_library_t* ret = lib_;
-    lib_ = nullptr;
-    return ret;
-  }
-
- private:
-  crazy_library_t* lib_;
-};
-
-}  // namespace
-
 // Use Android ASLR to create a random address into which we expect to be
 // able to load libraries. Note that this is probabilistic; we unmap the
 // address we get from mmap and assume we can re-map into it later. This
@@ -276,178 +106,10 @@
   return static_cast<jlong>(reinterpret_cast<uintptr_t>(address));
 }
 
-// We identify the abi tag for which the linker is running. This allows
-// us to select the library which matches the abi of the linker.
-
-#if defined(__arm__) && defined(__ARM_ARCH_7A__)
-#define CURRENT_ABI "armeabi-v7a"
-#elif defined(__arm__)
-#define CURRENT_ABI "armeabi"
-#elif defined(__i386__)
-#define CURRENT_ABI "x86"
-#elif defined(__mips__)
-#define CURRENT_ABI "mips"
-#elif defined(__x86_64__)
-#define CURRENT_ABI "x86_64"
-#elif defined(__aarch64__)
-#define CURRENT_ABI "arm64-v8a"
-#else
-#error "Unsupported target abi"
-#endif
-
-// Add a zip archive file path to the context's current search path
-// list. Making it possible to load libraries directly from it.
-JNI_GENERATOR_EXPORT bool
-Java_org_chromium_base_library_1loader_LegacyLinker_nativeAddZipArchivePath(
-    JNIEnv* env,
-    jclass clazz,
-    jstring apk_path_obj) {
-  String apk_path(env, apk_path_obj);
-
-  char search_path[512];
-  snprintf(search_path, sizeof(search_path), "%s!lib/" CURRENT_ABI "/",
-           apk_path.c_str());
-
-  crazy_add_search_path(search_path);
-  return true;
-}
-
-// Load a library with the chromium linker. This will also call its
-// JNI_OnLoad() method, which shall register its methods. Note that
-// lazy native method resolution will _not_ work after this, because
-// Dalvik uses the system's dlsym() which won't see the new library,
-// so explicit registration is mandatory.
-//
-// |env| is the current JNI environment handle.
-// |clazz| is the static class handle for org.chromium.base.Linker,
-// and is ignored here.
-// |library_name| is the library name (e.g. libfoo.so).
-// |load_address| is an explicit load address.
-// |lib_info_obj| is a LibInfo handle used to communicate information
-// with the Java side.
-// Return true on success.
-JNI_GENERATOR_EXPORT bool
-Java_org_chromium_base_library_1loader_LegacyLinker_nativeLoadLibrary(
-    JNIEnv* env,
-    jclass clazz,
-    jstring lib_name_obj,
-    jlong load_address,
-    jobject lib_info_obj) {
-  String library_name(env, lib_name_obj);
-  LOG_INFO("Called for %s, at address 0x%llx", library_name, load_address);
-  crazy_context_t* context = GetCrazyContext();
-
-  if (!IsValidAddress(load_address)) {
-    LOG_ERROR("Invalid address 0x%llx",
-              static_cast<unsigned long long>(load_address));
-    return false;
-  }
-
-  // Set the desired load address (0 means randomize it).
-  crazy_context_set_load_address(context, static_cast<size_t>(load_address));
-
-  ScopedLibrary library;
-  if (!crazy_library_open(library.GetPtr(), library_name.c_str(), context)) {
-    return false;
-  }
-
-  crazy_library_info_t info;
-  if (!crazy_library_get_info(library.Get(), context, &info)) {
-    LOG_ERROR("Could not get library information for %s: %s",
-              library_name.c_str(), crazy_context_get_error(context));
-    return false;
-  }
-
-  // Release library object to keep it alive after the function returns.
-  library.Release();
-
-  s_lib_info_fields.SetLoadInfo(env, lib_info_obj, info.load_address,
-                                info.load_size);
-  LOG_INFO("Success loading library %s", library_name.c_str());
-  return true;
-}
-
-JNI_GENERATOR_EXPORT jboolean
-Java_org_chromium_base_library_1loader_LegacyLinker_nativeCreateSharedRelro(
-    JNIEnv* env,
-    jclass clazz,
-    jstring library_name,
-    jlong load_address,
-    jobject lib_info_obj) {
-  String lib_name(env, library_name);
-
-  LOG_INFO("Called for %s", lib_name.c_str());
-
-  if (!IsValidAddress(load_address)) {
-    LOG_ERROR("Invalid address 0x%llx",
-              static_cast<unsigned long long>(load_address));
-    return false;
-  }
-
-  ScopedLibrary library;
-  if (!crazy_library_find_by_name(lib_name.c_str(), library.GetPtr())) {
-    LOG_ERROR("Could not find %s", lib_name.c_str());
-    return false;
-  }
-
-  crazy_context_t* context = GetCrazyContext();
-  size_t relro_start = 0;
-  size_t relro_size = 0;
-  int relro_fd = -1;
-
-  if (!crazy_library_create_shared_relro(
-          library.Get(), context, static_cast<size_t>(load_address),
-          &relro_start, &relro_size, &relro_fd)) {
-    LOG_ERROR("Could not create shared RELRO sharing for %s: %s\n",
-              lib_name.c_str(), crazy_context_get_error(context));
-    return false;
-  }
-
-  s_lib_info_fields.SetRelroInfo(env, lib_info_obj, relro_start, relro_size,
-                                 relro_fd);
-  return true;
-}
-
-JNI_GENERATOR_EXPORT jboolean
-Java_org_chromium_base_library_1loader_LegacyLinker_nativeUseSharedRelro(
-    JNIEnv* env,
-    jclass clazz,
-    jstring library_name,
-    jobject lib_info_obj) {
-  String lib_name(env, library_name);
-
-  LOG_INFO("Called for %s, lib_info_ref=%p", lib_name.c_str(), lib_info_obj);
-
-  ScopedLibrary library;
-  if (!crazy_library_find_by_name(lib_name.c_str(), library.GetPtr())) {
-    LOG_ERROR("Could not find %s", lib_name.c_str());
-    return false;
-  }
-
-  crazy_context_t* context = GetCrazyContext();
-  size_t relro_start = 0;
-  size_t relro_size = 0;
-  int relro_fd = -1;
-  s_lib_info_fields.GetRelroInfo(env, lib_info_obj, &relro_start, &relro_size,
-                                 &relro_fd);
-
-  LOG_INFO("library=%s relro start=%p size=%p fd=%d", lib_name.c_str(),
-           (void*)relro_start, (void*)relro_size, relro_fd);
-
-  if (!crazy_library_use_shared_relro(library.Get(), context, relro_start,
-                                      relro_size, relro_fd)) {
-    LOG_ERROR("Could not use shared RELRO for %s: %s", lib_name.c_str(),
-              crazy_context_get_error(context));
-    return false;
-  }
-
-  LOG_INFO("Library %s using shared RELRO section!", lib_name.c_str());
-
-  return true;
-}
+namespace {
 
 // JNI_OnLoad() initialization hook.
-static bool LinkerJNIInit(JavaVM* vm, JNIEnv* env) {
+bool LinkerJNIInit(JavaVM* vm, JNIEnv* env) {
   // Find LibInfo field ids.
   LOG_INFO("Caching field IDs");
   if (!s_lib_info_fields.Init(env)) {
@@ -457,16 +119,6 @@
   return true;
 }
 
-static bool LegacyLinkerJNIInit(JavaVM* vm, JNIEnv* env) {
-  LOG_INFO("Entering");
-
-  // Save JavaVM* handle into linker, so that it can call JNI_OnLoad()
-  // automatically when loading libraries containing JNI entry points.
-  crazy_set_java_vm(vm, JNI_VERSION_1_4);
-
-  return true;
-}
-
 // JNI_OnLoad() hook called when the linker library is loaded through
 // the regular System.LoadLibrary) API. This shall save the Java VM
 // handle and initialize LibInfo fields.
@@ -488,6 +140,7 @@
   return JNI_VERSION_1_4;
 }
 
+}  // namespace
 }  // namespace chromium_android_linker
 
 jint JNI_OnLoad(JavaVM* vm, void* reserved) {
diff --git a/base/android/linker/linker_jni.h b/base/android/linker/linker_jni.h
new file mode 100644
index 0000000..fe761a3
--- /dev/null
+++ b/base/android/linker/linker_jni.h
@@ -0,0 +1,200 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This is the Android-specific Chromium linker, a tiny shared library
+// implementing a custom dynamic linker that can be used to load the
+// real Chromium libraries.
+
+// The main point of this linker is to be able to share the RELRO
+// section of libcontentshell.so (or equivalent) between the browser and
+// renderer process.
+
+// This source code *cannot* depend on anything from base/ or the C++
+// STL, to keep the final library small, and avoid ugly dependency issues.
+
+#ifndef BASE_ANDROID_LINKER_LINKER_JNI_H_
+#define BASE_ANDROID_LINKER_LINKER_JNI_H_
+
+#include <android/log.h>
+#include <jni.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "build/build_config.h"
+
+// Set this to 1 to enable debug traces to the Android log.
+// Note that LOG() from "base/logging.h" cannot be used, since it is
+// in base/ which hasn't been loaded yet.
+#define DEBUG 0
+
+#define TAG "cr_ChromiumAndroidLinker"
+
+#if DEBUG
+#define LOG_INFO(FORMAT, ...)                                             \
+  __android_log_print(ANDROID_LOG_INFO, TAG, "%s: " FORMAT, __FUNCTION__, \
+                      ##__VA_ARGS__)
+#else
+#define LOG_INFO(FORMAT, ...) ((void)0)
+#endif
+#define LOG_ERROR(FORMAT, ...)                                             \
+  __android_log_print(ANDROID_LOG_ERROR, TAG, "%s: " FORMAT, __FUNCTION__, \
+                      ##__VA_ARGS__)
+
+#define UNUSED __attribute__((unused))
+
+// See commentary in crazy_linker_elf_loader.cpp for the effect of setting
+// this. If changing there, change here also.
+//
+// For more, see:
+//   https://crbug.com/504410
+#define RESERVE_BREAKPAD_GUARD_REGION 1
+
+#if defined(ARCH_CPU_X86)
+// Dalvik JIT generated code doesn't guarantee 16-byte stack alignment on
+// x86 - use force_align_arg_pointer to realign the stack at the JNI
+// boundary. https://crbug.com/655248
+#define JNI_GENERATOR_EXPORT \
+  extern "C" __attribute__((visibility("default"), force_align_arg_pointer))
+#else
+#define JNI_GENERATOR_EXPORT extern "C" __attribute__((visibility("default")))
+#endif
+
+namespace chromium_android_linker {
+
+// Larger than the largest library we might attempt to load.
+static const size_t kAddressSpaceReservationSize = 192 * 1024 * 1024;
+
+// Size of any Breakpad guard region. 16MB is comfortably larger than the
+// ~6MB relocation packing of the current 64-bit libchrome.so, the largest we
+// expect to encounter.
+#if RESERVE_BREAKPAD_GUARD_REGION
+static const size_t kBreakpadGuardRegionBytes = 16 * 1024 * 1024;
+#endif
+
+// A simple scoped UTF String class that can be initialized from
+// a Java jstring handle. Modeled like std::string, which cannot
+// be used here.
+class String {
+ public:
+  String(JNIEnv* env, jstring str);
+
+  inline ~String() { ::free(ptr_); }
+
+  inline const char* c_str() const { return ptr_ ? ptr_ : ""; }
+  inline size_t size() const { return size_; }
+
+ private:
+  char* ptr_;
+  size_t size_;
+};
+
+// Return true iff |address| is a valid address for the target CPU.
+inline bool IsValidAddress(jlong address) {
+  return static_cast<jlong>(static_cast<size_t>(address)) == address;
+}
+
+// Find the jclass JNI reference corresponding to a given |class_name|.
+// |env| is the current JNI environment handle.
+// On success, return true and set |*clazz|.
+extern bool InitClassReference(JNIEnv* env,
+                               const char* class_name,
+                               jclass* clazz);
+
+// Initialize a jfieldID corresponding to the field of a given |clazz|,
+// with name |field_name| and signature |field_sig|.
+// |env| is the current JNI environment handle.
+// On success, return true and set |*field_id|.
+extern bool InitFieldId(JNIEnv* env,
+                        jclass clazz,
+                        const char* field_name,
+                        const char* field_sig,
+                        jfieldID* field_id);
+
+// Initialize a jfieldID corresponding to the static field of a given |clazz|,
+// with name |field_name| and signature |field_sig|.
+// |env| is the current JNI environment handle.
+// On success, return true and set |*field_id|.
+extern bool InitStaticFieldId(JNIEnv* env,
+                              jclass clazz,
+                              const char* field_name,
+                              const char* field_sig,
+                              jfieldID* field_id);
+
+// Use Android ASLR to create a random library load address.
+// |env| is the current JNI environment handle, and |clazz| a class.
+// Returns the address selected by ASLR.
+extern jlong GetRandomBaseLoadAddress(JNIEnv* env, jclass clazz);
+
+// A class used to model the field IDs of the org.chromium.base.Linker
+// LibInfo inner class, used to communicate data with the Java side
+// of the linker.
+struct LibInfo_class {
+  jfieldID load_address_id;
+  jfieldID load_size_id;
+  jfieldID relro_start_id;
+  jfieldID relro_size_id;
+  jfieldID relro_fd_id;
+
+  // Initialize an instance.
+  bool Init(JNIEnv* env) {
+    jclass clazz;
+    if (!InitClassReference(
+            env, "org/chromium/base/library_loader/Linker$LibInfo", &clazz)) {
+      return false;
+    }
+
+    return InitFieldId(env, clazz, "mLoadAddress", "J", &load_address_id) &&
+           InitFieldId(env, clazz, "mLoadSize", "J", &load_size_id) &&
+           InitFieldId(env, clazz, "mRelroStart", "J", &relro_start_id) &&
+           InitFieldId(env, clazz, "mRelroSize", "J", &relro_size_id) &&
+           InitFieldId(env, clazz, "mRelroFd", "I", &relro_fd_id);
+  }
+
+  void SetLoadInfo(JNIEnv* env,
+                   jobject library_info_obj,
+                   size_t load_address,
+                   size_t load_size) {
+    env->SetLongField(library_info_obj, load_address_id, load_address);
+    env->SetLongField(library_info_obj, load_size_id, load_size);
+  }
+
+  void SetRelroInfo(JNIEnv* env,
+                    jobject library_info_obj,
+                    size_t relro_start,
+                    size_t relro_size,
+                    int relro_fd) {
+    env->SetLongField(library_info_obj, relro_start_id, relro_start);
+    env->SetLongField(library_info_obj, relro_size_id, relro_size);
+    env->SetIntField(library_info_obj, relro_fd_id, relro_fd);
+  }
+
+  // Use this instance to convert a RelroInfo reference into
+  // a crazy_library_info_t.
+  void GetRelroInfo(JNIEnv* env,
+                    jobject library_info_obj,
+                    size_t* relro_start,
+                    size_t* relro_size,
+                    int* relro_fd) {
+    if (relro_start) {
+      *relro_start = static_cast<size_t>(
+          env->GetLongField(library_info_obj, relro_start_id));
+    }
+
+    if (relro_size) {
+      *relro_size = static_cast<size_t>(
+          env->GetLongField(library_info_obj, relro_size_id));
+    }
+
+    if (relro_fd) {
+      *relro_fd = env->GetIntField(library_info_obj, relro_fd_id);
+    }
+  }
+};
+
+// Variable containing LibInfo for the loaded library.
+extern LibInfo_class s_lib_info_fields;
+
+}  // namespace chromium_android_linker
+
+#endif  // BASE_ANDROID_LINKER_LINKER_JNI_H_
diff --git a/base/android/proguard/dcheck_is_off.flags b/base/android/proguard/dcheck_is_off.flags
index 258e8ba..546be11 100644
--- a/base/android/proguard/dcheck_is_off.flags
+++ b/base/android/proguard/dcheck_is_off.flags
@@ -5,4 +5,6 @@
 # Contains flags that are applied only when ENABLE_DCHECK=false.
 
 # Ensure that LifetimeAssert implementation is not reachable in release.
--checkdiscard class org.chromium.base.LifetimeAssert$WrappedReference { *; }
+# Temporarily commenting this out until R8 rolls with a fix to the optimization
+# that should remove this class. See b/135918413.
+#-checkdiscard class org.chromium.base.LifetimeAssert$WrappedReference { *; }
diff --git a/base/memory/read_only_shared_memory_region.h b/base/memory/read_only_shared_memory_region.h
index 08d0c1e..6f00758 100644
--- a/base/memory/read_only_shared_memory_region.h
+++ b/base/memory/read_only_shared_memory_region.h
@@ -131,7 +131,7 @@
   // Helper function to check return value of
   // ReadOnlySharedMemoryRegion::Create(). |region| and |mapping| either both
   // valid or invalid.
-  bool IsValid() {
+  bool IsValid() const {
     DCHECK_EQ(region.IsValid(), mapping.IsValid());
     return region.IsValid() && mapping.IsValid();
   }
diff --git a/base/profiler/metadata_recorder.cc b/base/profiler/metadata_recorder.cc
index 5783da8..baca29a 100644
--- a/base/profiler/metadata_recorder.cc
+++ b/base/profiler/metadata_recorder.cc
@@ -21,33 +21,20 @@
 void MetadataRecorder::Set(uint64_t name_hash, int64_t value) {
   base::AutoLock lock(write_lock_);
 
-  // Acquiring the |write_lock_| ensures that:
-  //
-  //   - We don't try to write into the same new slot at the same time as
-  //     another thread
-  //   - We see all writes by other threads (acquiring a mutex implies acquire
-  //     semantics)
+  // Acquiring the |write_lock_| guarantees that two simultaneous writes don't
+  // attempt to create items in the same slot. Use of memory_order_release
+  // guarantees that all writes performed by other threads to the metadata items
+  // will be seen by the time we reach this point.
   size_t item_slots_used = item_slots_used_.load(std::memory_order_relaxed);
   for (size_t i = 0; i < item_slots_used; ++i) {
     auto& item = items_[i];
     if (item.name_hash == name_hash) {
       item.value.store(value, std::memory_order_relaxed);
-
-      const bool was_active =
-          item.is_active.exchange(true, std::memory_order_release);
-      if (!was_active)
-        inactive_item_count_--;
-
+      item.is_active.store(true, std::memory_order_release);
       return;
     }
   }
 
-  item_slots_used = TryReclaimInactiveSlots(item_slots_used);
-
-  // TODO(charliea): Add an UMA histogram to track the number of occupied
-  // metadata slots.
-  // See: https://crbug.com/980308
-
   // There should always be room in this data structure because there are more
   // reserved slots than there are unique metadata names in Chromium.
   DCHECK_NE(item_slots_used, items_.size())
@@ -57,7 +44,7 @@
   // Wait until the item is fully created before setting |is_active| to true and
   // incrementing |item_slots_used_|, which will signal to readers that the item
   // is ready.
-  auto& item = items_[item_slots_used];
+  auto& item = items_[item_slots_used_];
   item.name_hash = name_hash;
   item.value.store(value, std::memory_order_relaxed);
   item.is_active.store(true, std::memory_order_release);
@@ -71,45 +58,16 @@
   for (size_t i = 0; i < item_slots_used; ++i) {
     auto& item = items_[i];
     if (item.name_hash == name_hash) {
-      // A removed item will occupy its slot until that slot is reclaimed.
-      const bool was_active =
-          item.is_active.exchange(false, std::memory_order_relaxed);
-      if (was_active)
-        inactive_item_count_++;
-
-      return;
+      // A removed item will occupy its slot indefinitely.
+      item.is_active.store(false, std::memory_order_release);
     }
   }
 }
 
-MetadataRecorder::ScopedGetItems::ScopedGetItems(
-    MetadataRecorder* metadata_recorder)
-    : metadata_recorder_(metadata_recorder),
-      auto_lock_(std::make_unique<AutoLock>(metadata_recorder->read_lock_)) {}
-
-MetadataRecorder::ScopedGetItems::~ScopedGetItems() {}
-
-size_t MetadataRecorder::ScopedGetItems::GetItems(
-    ProfileBuilder::MetadataItemArray* const items) {
-  if (!auto_lock_) {
-    NOTREACHED()
-        << "GetItems() can only be called once on each ScopedGetItems "
-           "instance because the read lock is released when it is called.";
-  }
-
-  size_t item_count = metadata_recorder_->GetItems(items);
-  auto_lock_.reset();
-  return item_count;
-}
-
-std::unique_ptr<ProfileBuilder::MetadataProvider>
-MetadataRecorder::CreateMetadataProvider() {
-  return std::make_unique<MetadataRecorder::ScopedGetItems>(this);
-}
-
-size_t MetadataRecorder::GetItems(
-    ProfileBuilder::MetadataItemArray* const items) const {
-  read_lock_.AssertAcquired();
+size_t MetadataRecorder::GetItems(ItemArray* const items) const {
+  // TODO(charliea): Defragment the item array if we can successfully acquire
+  // the write lock here. This will require either making this function
+  // non-const or |items_| mutable.
 
   // If a writer adds a new item after this load, it will be ignored.  We do
   // this instead of calling item_slots_used_.load() explicitly in the for loop
@@ -129,75 +87,12 @@
     // Because we wait until |is_active| is set to consider an item active and
     // that field is always set last, we ignore half-created items.
     if (item.is_active.load(std::memory_order_acquire)) {
-      (*items)[write_index++] = ProfileBuilder::MetadataItem{
-          item.name_hash, item.value.load(std::memory_order_relaxed)};
+      (*items)[write_index++] =
+          Item{item.name_hash, item.value.load(std::memory_order_relaxed)};
     }
   }
 
   return write_index;
 }
 
-size_t MetadataRecorder::TryReclaimInactiveSlots(size_t item_slots_used) {
-  const size_t remaining_slots =
-      ProfileBuilder::MAX_METADATA_COUNT - item_slots_used;
-
-  if (inactive_item_count_ == 0 || inactive_item_count_ < remaining_slots) {
-    // This reclaiming threshold has a few nice properties:
-    //
-    //   - It avoids reclaiming when no items have been removed
-    //   - It makes doing so more likely as free slots become more scarce
-    //   - It makes doing so less likely when the benefits are lower
-    return item_slots_used;
-  }
-
-  if (read_lock_.Try()) {
-    // The lock isn't already held by a reader or another thread reclaiming
-    // slots.
-    item_slots_used = ReclaimInactiveSlots(item_slots_used);
-    read_lock_.Release();
-  }
-
-  return item_slots_used;
-}
-
-size_t MetadataRecorder::ReclaimInactiveSlots(size_t item_slots_used) {
-  // From here until the end of the reclamation, we can safely use
-  // memory_order_relaxed for all reads and writes. We don't need
-  // memory_order_acquire because acquiring the write mutex gives acquire
-  // semantics and no other threads can write after we hold that mutex. We don't
-  // need memory_order_release because no readers can read until we release the
-  // read mutex, which itself has release semantics.
-  size_t first_inactive_item_idx = 0;
-  size_t last_active_item_idx = item_slots_used - 1;
-  while (first_inactive_item_idx < last_active_item_idx) {
-    ItemInternal& inactive_item = items_[first_inactive_item_idx];
-    ItemInternal& active_item = items_[last_active_item_idx];
-
-    if (inactive_item.is_active.load(std::memory_order_relaxed)) {
-      // Keep seeking forward to an inactive item.
-      ++first_inactive_item_idx;
-      continue;
-    }
-
-    if (!active_item.is_active.load(std::memory_order_relaxed)) {
-      // Keep seeking backward to an active item. Skipping over this item
-      // indicates that we're freeing the slot at this index.
-      --last_active_item_idx;
-      item_slots_used--;
-      continue;
-    }
-
-    inactive_item.name_hash = active_item.name_hash;
-    inactive_item.value.store(active_item.value.load(std::memory_order_relaxed),
-                              std::memory_order_relaxed);
-    inactive_item.is_active.store(true, std::memory_order_relaxed);
-
-    ++first_inactive_item_idx;
-    --last_active_item_idx;
-    item_slots_used--;
-  }
-
-  item_slots_used_.store(item_slots_used, std::memory_order_relaxed);
-  return item_slots_used;
-}
 }  // namespace base
diff --git a/base/profiler/metadata_recorder.h b/base/profiler/metadata_recorder.h
index 5b50786..346a5a1 100644
--- a/base/profiler/metadata_recorder.h
+++ b/base/profiler/metadata_recorder.h
@@ -9,9 +9,7 @@
 #include <atomic>
 #include <utility>
 
-#include "base/profiler/profile_builder.h"
 #include "base/synchronization/lock.h"
-#include "base/thread_annotations.h"
 
 namespace base {
 
@@ -21,105 +19,6 @@
 // with the sample.
 //
 // Methods on this class are safe to call unsynchronized from arbitrary threads.
-//
-// This class was designed to read metadata from a single sampling thread and
-// write metadata from many Chrome threads within the same process. These other
-// threads might be suspended by the sampling thread at any time in order to
-// collect a sample.
-//
-// This class has a few notable constraints:
-//
-// A) If a lock that's required to read the metadata might be held while writing
-//    the metadata, that lock must be acquirable *before* the thread is
-//    suspended. Otherwise, the sampling thread might suspend the target thread
-//    while it is holding the required lock, causing deadlock.
-//
-//      Ramifications:
-//
-//      - When retrieving items, lock acquisition (through
-//        CreateMetadataProvider()) and actual item retrieval (through
-//        MetadataProvider::GetItems()) are separate.
-//
-// B) We can't allocate data on the heap while reading the metadata items. This
-//    is because, on many operating systems, there's a process-wide heap lock
-//    that is held while allocating on the heap. If a thread is suspended while
-//    holding this lock and the sampling thread then tries to allocate on the
-//    heap to read the metadata, it will deadlock trying to acquire the heap
-//    lock.
-//
-//      Ramifications:
-//
-//      - We hold and retrieve the metadata using a fixed-size array, which
-//        allows readers to preallocate the data structure that we pass back
-//        the metadata in.
-//
-// C) We shouldn't guard writes with a lock that also guards reads. It can take
-//    ~30us from the time that the sampling thread requests that a thread be
-//    suspended and the time that it actually happens. If all metadata writes
-//    block their thread during that time, we're very likely to block all Chrome
-//    threads for an additional 30us per sample.
-//
-//      Ramifications:
-//
-//      - We use two locks to guard the metadata: a read lock and a write
-//        lock. Only the write lock is required to write into the metadata, and
-//        only the read lock is required to read the metadata.
-//
-//      - Because we can't guard reads and writes with the same lock, we have to
-//        face the possibility of writes occurring during a read. This is
-//        especially problematic because there's no way to read both the key and
-//        value for an item atomically without using mutexes, which violates
-//        constraint A). If the sampling thread were to see the following
-//        interleaving of reads and writes:
-//
-//          * Reader thread reads key for slot 0
-//          * Writer thread removes item at slot 0
-//          * Writer thread creates new item with different key in slot 0
-//          * Reader thread reads value for slot 0
-//
-//        then the reader would see an invalid value for the given key. Because
-//        of this possibility, we keep slots reserved for a specific key even
-//        after that item has been removed. We reclaim these slots on a
-//        best-effort basis during writes when the metadata recorder has become
-//        sufficiently full and we can acquire the read lock.
-//
-//      - We use state stored in atomic data types to ensure that readers and
-//        writers are synchronized about where data should be written to and
-//        read from. We must use atomic data types to guarantee that there's no
-//        instruction during a write after which the recorder is in an
-//        inconsistent state that might yield garbage data for a reader.
-//
-// Here are a few of the many states the recorder can be in:
-//
-// - No thread is using the recorder.
-//
-// - A single writer is writing into the recorder without a simultaneous
-//   read. The write will succeed.
-//
-// - A reader is reading from the recorder without a simultaneous write. The
-//   read will succeed.
-//
-// - Multiple writers attempt to write into the recorder simultaneously. All
-//   writers but one will block because only one can hold the write lock.
-//
-// - A writer is writing into the recorder, which hasn't reached the threshold
-//   at which it will try to reclaim inactive slots. The writer won't try to
-//   acquire the read lock to reclaim inactive slots. The reader will therefore
-//   be able to immediately acquire the read lock, suspend the target thread,
-//   and read the metadata.
-//
-// - A writer is writing into the recorder, the recorder has reached the
-//   threshold at which it needs to reclaim inactive slots, and the writer
-//   thread is now in the middle of reclaiming those slots when a reader
-//   arrives. The reader will try to acquire the read lock before suspending the
-//   thread but will block until the writer thread finishes reclamation and
-//   releases the read lock. The reader will then be able to acquire the read
-//   lock and suspend the target thread.
-//
-// - A reader is reading the recorder when a writer attempts to write. The write
-//   will be successful. However, if the writer deems it necessary to reclaim
-//   inactive slots, it will skip doing so because it won't be able to acquire
-//   the read lock.
 class BASE_EXPORT MetadataRecorder {
  public:
   MetadataRecorder();
@@ -136,62 +35,22 @@
   // If such an item does not exist, this has no effect.
   void Remove(uint64_t name_hash);
 
-  // Creates a MetadataProvider object for the recorder, which acquires the
-  // necessary exclusive read lock and provides access to the recorder's items
-  // via its GetItems() function. Reclaiming of inactive slots in the recorder
-  // can't occur while this object lives, so it should be created as soon before
-  // it's needed as possible. Calling GetItems() releases the lock held by the
-  // object and can therefore only be called once during the object's lifetime.
-  //
-  // This object should be created *before* suspending the target
-  // thread. Otherwise, that thread might be suspended while reclaiming inactive
-  // slots and holding the read lock, which would cause the sampling thread to
-  // deadlock.
-  //
-  // Example usage:
-  //
-  //   MetadataRecorder r;
-  //   base::ProfileBuilder::MetadataItemArray arr;
-  //   size_t item_count;
-  //   ...
-  //   {
-  //     auto get_items = r.CreateMetadataProvider();
-  //     item_count = get_items.GetItems(arr);
-  //   }
-  std::unique_ptr<ProfileBuilder::MetadataProvider> CreateMetadataProvider();
-
- private:
-  // An object that provides access to a MetadataRecorder's items and holds the
-  // necessary exclusive read lock until either GetItems() is called or the
-  // object is destroyed.
-  //
-  // For usage and more details, see CreateMetadataProvider().
-  class SCOPED_LOCKABLE ScopedGetItems
-      : public ProfileBuilder::MetadataProvider {
-   public:
-    // Acquires an exclusive read lock on the metadata recorder which is held
-    // until either GetItems() is called or the object is destroyed.
-    ScopedGetItems(MetadataRecorder* metadata_recorder)
-        EXCLUSIVE_LOCK_FUNCTION(metadata_recorder->read_lock_);
-    ~ScopedGetItems() override UNLOCK_FUNCTION(metadata_recorder_->read_lock_);
-    ScopedGetItems(const ScopedGetItems&) = delete;
-    ScopedGetItems& operator=(const ScopedGetItems&) = delete;
-
-    // Retrieves the first |available_slots| items in the metadata recorder and
-    // copies them into |items|, returning the number of metadata items that
-    // were copied. To ensure that all items can be copied, |available slots|
-    // should be greater than or equal to |MAX_METADATA_COUNT|.
-    //
-    // This function releases the lock held by the object and can therefore only
-    // be called once during the object's lifetime.
-    size_t GetItems(ProfileBuilder::MetadataItemArray* const items) override
-        EXCLUSIVE_LOCKS_REQUIRED(metadata_recorder_->read_lock_);
-
-   private:
-    const MetadataRecorder* const metadata_recorder_;
-    std::unique_ptr<base::AutoLock> auto_lock_;
+  struct Item {
+    // The hash of the metadata name, as produced by base::HashMetricName().
+    uint64_t name_hash;
+    // The value of the metadata item.
+    int64_t value;
   };
 
+  static const size_t MAX_METADATA_COUNT = 50;
+  typedef std::array<Item, MAX_METADATA_COUNT> ItemArray;
+  // Retrieves the first |available_slots| items in the metadata recorder and
+  // copies them into |items|, returning the number of metadata items that were
+  // copied. To ensure that all items can be copied, |available slots| should be
+  // greater than or equal to |MAX_METADATA_COUNT|.
+  size_t GetItems(ItemArray* const items) const;
+
+ private:
   // TODO(charliea): Support large quantities of metadata efficiently.
   struct ItemInternal {
     ItemInternal();
@@ -218,24 +77,6 @@
     std::atomic<int64_t> value;
   };
 
-  // Attempts to free slots in the metadata map that are currently allocated to
-  // inactive items. May fail silently if the read lock is already held, in
-  // which case no slots will be freed. Returns the number of item slots used
-  // after the reclamation.
-  size_t TryReclaimInactiveSlots(size_t item_slots_used)
-      EXCLUSIVE_LOCKS_REQUIRED(write_lock_) LOCKS_EXCLUDED(read_lock_);
-  // Also protected by read_lock_, but current thread annotation limitations
-  // prevent us from using thread annotations with locks acquired through
-  // Lock::Try(). Updates item_slots_used_ to reflect the new item count and
-  // returns the number of item slots used after the reclamation.
-  size_t ReclaimInactiveSlots(size_t item_slots_used)
-      EXCLUSIVE_LOCKS_REQUIRED(write_lock_);
-
-  // Protected by read_lock_, but current thread annotation limitations
-  // prevent us from using thread annotations with locks acquired through
-  // Lock::Try().
-  size_t GetItems(ProfileBuilder::MetadataItemArray* const items) const;
-
   // Metadata items that the recorder has seen. Rather than implementing the
   // metadata recorder as a dense array, we implement it as a sparse array where
   // removed metadata items keep their slot with their |is_active| bit set to
@@ -244,7 +85,7 @@
   //
   // For the rationale behind this design (along with others considered), see
   // https://docs.google.com/document/d/18shLhVwuFbLl_jKZxCmOfRB98FmNHdKl0yZZZ3aEO4U/edit#.
-  std::array<ItemInternal, ProfileBuilder::MAX_METADATA_COUNT> items_;
+  std::array<ItemInternal, MAX_METADATA_COUNT> items_;
 
   // The number of item slots used in the metadata map.
   //
@@ -254,21 +95,9 @@
   // of its existence.
   std::atomic<size_t> item_slots_used_{0};
 
-  // The number of item slots occupied by inactive items.
-  size_t inactive_item_count_ GUARDED_BY(write_lock_) = 0;
-
-  // A lock that guards against multiple threads trying to manipulate items_,
-  // item_slots_used_, or inactive_item_count_ at the same time.
+  // A lock that guards against multiple threads trying to modify the same item
+  // at once.
   base::Lock write_lock_;
-
-  // A lock that guards against a reader trying to read items_ while inactive
-  // slots are being reclaimed.
-  //
-  // Note that we can't enforce that this lock is properly acquired through
-  // thread annotations because thread annotations doesn't understand that
-  // ScopedGetItems::GetItems() can only be called between ScopedGetItems's
-  // constructor and destructor.
-  base::Lock read_lock_;
 };
 
 }  // namespace base
diff --git a/base/profiler/metadata_recorder_unittest.cc b/base/profiler/metadata_recorder_unittest.cc
index 7228ec9..8155687 100644
--- a/base/profiler/metadata_recorder_unittest.cc
+++ b/base/profiler/metadata_recorder_unittest.cc
@@ -10,21 +10,15 @@
 
 namespace base {
 
-bool operator==(const base::ProfileBuilder::MetadataItem& lhs,
-                const base::ProfileBuilder::MetadataItem& rhs) {
+bool operator==(const MetadataRecorder::Item& lhs,
+                const MetadataRecorder::Item& rhs) {
   return lhs.name_hash == rhs.name_hash && lhs.value == rhs.value;
 }
 
-bool operator<(const base::ProfileBuilder::MetadataItem& lhs,
-               const base::ProfileBuilder::MetadataItem& rhs) {
-  return lhs.name_hash < rhs.name_hash;
-}
-
 TEST(MetadataRecorderTest, GetItems_Empty) {
   MetadataRecorder recorder;
-  base::ProfileBuilder::MetadataItemArray items;
-
-  size_t item_count = recorder.CreateMetadataProvider()->GetItems(&items);
+  MetadataRecorder::ItemArray items;
+  size_t item_count = recorder.GetItems(&items);
 
   ASSERT_EQ(0u, item_count);
 }
@@ -34,23 +28,18 @@
 
   recorder.Set(10, 20);
 
-  base::ProfileBuilder::MetadataItemArray items;
-  size_t item_count;
-  {
-    item_count = recorder.CreateMetadataProvider()->GetItems(&items);
-    ASSERT_EQ(1u, item_count);
-    ASSERT_EQ(10u, items[0].name_hash);
-    ASSERT_EQ(20, items[0].value);
-  }
+  MetadataRecorder::ItemArray items;
+  size_t item_count = recorder.GetItems(&items);
+  ASSERT_EQ(1u, item_count);
+  ASSERT_EQ(10u, items[0].name_hash);
+  ASSERT_EQ(20, items[0].value);
 
   recorder.Set(20, 30);
 
-  {
-    item_count = recorder.CreateMetadataProvider()->GetItems(&items);
-    ASSERT_EQ(2u, item_count);
-    ASSERT_EQ(20u, items[1].name_hash);
-    ASSERT_EQ(30, items[1].value);
-  }
+  item_count = recorder.GetItems(&items);
+  ASSERT_EQ(2u, item_count);
+  ASSERT_EQ(20u, items[1].name_hash);
+  ASSERT_EQ(30, items[1].value);
 }
 
 TEST(MetadataRecorderTest, Set_ExistingNameNash) {
@@ -58,8 +47,8 @@
   recorder.Set(10, 20);
   recorder.Set(10, 30);
 
-  base::ProfileBuilder::MetadataItemArray items;
-  size_t item_count = recorder.CreateMetadataProvider()->GetItems(&items);
+  MetadataRecorder::ItemArray items;
+  size_t item_count = recorder.GetItems(&items);
   ASSERT_EQ(1u, item_count);
   ASSERT_EQ(10u, items[0].name_hash);
   ASSERT_EQ(30, items[0].value);
@@ -67,10 +56,10 @@
 
 TEST(MetadataRecorderTest, Set_ReAddRemovedNameNash) {
   MetadataRecorder recorder;
-  base::ProfileBuilder::MetadataItemArray items;
-  std::vector<base::ProfileBuilder::MetadataItem> expected;
+  MetadataRecorder::ItemArray items;
+  std::vector<MetadataRecorder::Item> expected;
   for (size_t i = 0; i < items.size(); ++i) {
-    expected.push_back(base::ProfileBuilder::MetadataItem{i, 0});
+    expected.push_back(MetadataRecorder::Item{i, 0});
     recorder.Set(i, 0);
   }
 
@@ -81,14 +70,14 @@
   recorder.Remove(3);
   recorder.Set(3, 0);
 
-  size_t item_count = recorder.CreateMetadataProvider()->GetItems(&items);
+  size_t item_count = recorder.GetItems(&items);
   EXPECT_EQ(items.size(), item_count);
-  ASSERT_THAT(expected, ::testing::UnorderedElementsAreArray(items));
+  ASSERT_THAT(expected, ::testing::ElementsAreArray(items));
 }
 
 TEST(MetadataRecorderTest, Set_AddPastMaxCount) {
   MetadataRecorder recorder;
-  base::ProfileBuilder::MetadataItemArray items;
+  MetadataRecorder::ItemArray items;
   for (size_t i = 0; i < items.size(); ++i) {
     recorder.Set(i, 0);
   }
@@ -103,8 +92,8 @@
   recorder.Set(50, 60);
   recorder.Remove(30);
 
-  base::ProfileBuilder::MetadataItemArray items;
-  size_t item_count = recorder.CreateMetadataProvider()->GetItems(&items);
+  MetadataRecorder::ItemArray items;
+  size_t item_count = recorder.GetItems(&items);
   ASSERT_EQ(2u, item_count);
   ASSERT_EQ(10u, items[0].name_hash);
   ASSERT_EQ(20, items[0].value);
@@ -117,45 +106,11 @@
   recorder.Set(10, 20);
   recorder.Remove(20);
 
-  base::ProfileBuilder::MetadataItemArray items;
-  size_t item_count = recorder.CreateMetadataProvider()->GetItems(&items);
+  MetadataRecorder::ItemArray items;
+  size_t item_count = recorder.GetItems(&items);
   ASSERT_EQ(1u, item_count);
   ASSERT_EQ(10u, items[0].name_hash);
   ASSERT_EQ(20, items[0].value);
 }
 
-TEST(MetadataRecorderTest, ReclaimInactiveSlots) {
-  MetadataRecorder recorder;
-
-  std::set<base::ProfileBuilder::MetadataItem> items_set;
-  // Fill up the metadata map.
-  for (size_t i = 0; i < base::ProfileBuilder::MAX_METADATA_COUNT; ++i) {
-    recorder.Set(i, i);
-    items_set.insert(base::ProfileBuilder::MetadataItem{i, i});
-  }
-
-  // Remove every fourth entry to fragment the data.
-  size_t entries_removed = 0;
-  for (size_t i = 3; i < base::ProfileBuilder::MAX_METADATA_COUNT; i += 4) {
-    recorder.Remove(i);
-    ++entries_removed;
-    items_set.erase(base::ProfileBuilder::MetadataItem{i, i});
-  }
-
-  // Ensure that the inactive slots are reclaimed to make room for more entries.
-  for (size_t i = 1; i <= entries_removed; ++i) {
-    recorder.Set(i * 100, i * 100);
-    items_set.insert(base::ProfileBuilder::MetadataItem{i * 100, i * 100});
-  }
-
-  base::ProfileBuilder::MetadataItemArray items_arr;
-  std::copy(items_set.begin(), items_set.end(), items_arr.begin());
-
-  base::ProfileBuilder::MetadataItemArray recorder_items;
-  size_t recorder_item_count =
-      recorder.CreateMetadataProvider()->GetItems(&recorder_items);
-  ASSERT_EQ(recorder_item_count, base::ProfileBuilder::MAX_METADATA_COUNT);
-  ASSERT_THAT(recorder_items, ::testing::UnorderedElementsAreArray(items_arr));
-}
-
 }  // namespace base
diff --git a/base/profiler/profile_builder.cc b/base/profiler/profile_builder.cc
deleted file mode 100644
index ca3db2a..0000000
--- a/base/profiler/profile_builder.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/profiler/profile_builder.h"
-
-const size_t base::ProfileBuilder::MAX_METADATA_COUNT;
diff --git a/base/profiler/profile_builder.h b/base/profiler/profile_builder.h
index 49355ef..0202c21 100644
--- a/base/profiler/profile_builder.h
+++ b/base/profiler/profile_builder.h
@@ -26,31 +26,13 @@
   // up modules from addresses.
   virtual ModuleCache* GetModuleCache() = 0;
 
-  struct MetadataItem {
-    // The hash of the metadata name, as produced by base::HashMetricName().
-    uint64_t name_hash;
-    // The value of the metadata item.
-    int64_t value;
-  };
-
-  static constexpr size_t MAX_METADATA_COUNT = 50;
-  typedef std::array<MetadataItem, MAX_METADATA_COUNT> MetadataItemArray;
-
-  class MetadataProvider {
-   public:
-    MetadataProvider() = default;
-    virtual ~MetadataProvider() = default;
-
-    virtual size_t GetItems(ProfileBuilder::MetadataItemArray* const items) = 0;
-  };
-
   // Records metadata to be associated with the current sample. To avoid
   // deadlock on locks taken by the suspended profiled thread, implementations
   // of this method must not execute any code that could take a lock, including
   // heap allocation or use of CHECK/DCHECK/LOG statements. Generally
   // implementations should simply atomically copy metadata state to be
   // associated with the sample.
-  virtual void RecordMetadata(MetadataProvider* metadata_provider) {}
+  virtual void RecordMetadata() {}
 
   // Records a new set of frames. Invoked when sampling a sample completes.
   virtual void OnSampleCompleted(std::vector<Frame> frames) = 0;
diff --git a/base/profiler/sample_metadata_unittest.cc b/base/profiler/sample_metadata_unittest.cc
index e38052f..27e177b 100644
--- a/base/profiler/sample_metadata_unittest.cc
+++ b/base/profiler/sample_metadata_unittest.cc
@@ -10,29 +10,19 @@
 namespace base {
 
 TEST(SampleMetadataTest, ScopedSampleMetadata) {
-  base::ProfileBuilder::MetadataItemArray items;
-  {
-    auto get_items = GetSampleMetadataRecorder()->CreateMetadataProvider();
-    ASSERT_EQ(0u, get_items->GetItems(&items));
-  }
+  MetadataRecorder::ItemArray items;
+
+  ASSERT_EQ(0u, GetSampleMetadataRecorder()->GetItems(&items));
 
   {
     ScopedSampleMetadata m("myname", 100);
 
-    {
-      ASSERT_EQ(1u,
-                GetSampleMetadataRecorder()->CreateMetadataProvider()->GetItems(
-                    &items));
-      EXPECT_EQ(base::HashMetricName("myname"), items[0].name_hash);
-      EXPECT_EQ(100, items[0].value);
-    }
+    ASSERT_EQ(1u, GetSampleMetadataRecorder()->GetItems(&items));
+    EXPECT_EQ(base::HashMetricName("myname"), items[0].name_hash);
+    EXPECT_EQ(100, items[0].value);
   }
 
-  {
-    ASSERT_EQ(0u,
-              GetSampleMetadataRecorder()->CreateMetadataProvider()->GetItems(
-                  &items));
-  }
+  ASSERT_EQ(0u, GetSampleMetadataRecorder()->GetItems(&items));
 }
 
 }  // namespace base
diff --git a/base/profiler/stack_sampler_impl.cc b/base/profiler/stack_sampler_impl.cc
index 6993664..2c70cc8 100644
--- a/base/profiler/stack_sampler_impl.cc
+++ b/base/profiler/stack_sampler_impl.cc
@@ -8,7 +8,6 @@
 
 #include "base/logging.h"
 #include "base/profiler/profile_builder.h"
-#include "base/profiler/sample_metadata.h"
 #include "base/profiler/thread_delegate.h"
 #include "base/profiler/unwinder.h"
 
@@ -80,12 +79,6 @@
   uintptr_t bottom = 0;
   const uint8_t* stack_copy_bottom = nullptr;
   {
-    // The MetadataProvider must be created before the ScopedSuspendThread
-    // because it acquires a lock in its constructor that might otherwise be
-    // held by the target thread, resulting in deadlock.
-    std::unique_ptr<base::ProfileBuilder::MetadataProvider> get_metadata_items =
-        base::GetSampleMetadataRecorder()->CreateMetadataProvider();
-
     // Allocation of the ScopedSuspendThread object itself is OK since it
     // necessarily occurs before the thread is suspended by the object.
     std::unique_ptr<ThreadDelegate::ScopedSuspendThread> suspend_thread =
@@ -109,7 +102,7 @@
     if (!thread_delegate_->CanCopyStack(bottom))
       return false;
 
-    profile_builder->RecordMetadata(get_metadata_items.get());
+    profile_builder->RecordMetadata();
 
     stack_copy_bottom = CopyStackContentsAndRewritePointers(
         reinterpret_cast<uint8_t*>(bottom), reinterpret_cast<uintptr_t*>(top),
diff --git a/base/profiler/stack_sampler_impl_unittest.cc b/base/profiler/stack_sampler_impl_unittest.cc
index f86d433..9884e59c 100644
--- a/base/profiler/stack_sampler_impl_unittest.cc
+++ b/base/profiler/stack_sampler_impl_unittest.cc
@@ -33,8 +33,7 @@
 
   // ProfileBuilder
   ModuleCache* GetModuleCache() override { return module_cache_; }
-  void RecordMetadata(
-      base::ProfileBuilder::MetadataProvider* metadata_provider) override {}
+  void RecordMetadata() override {}
   void OnSampleCompleted(std::vector<Frame> frames) override {}
   void OnProfileCompleted(TimeDelta profile_duration,
                           TimeDelta sampling_period) override {}
@@ -61,7 +60,8 @@
                      // The register context will be initialized to
                      // *|thread_context| if non-null.
                      RegisterContext* thread_context = nullptr)
-      : fake_stack_(fake_stack), thread_context_(thread_context) {}
+      : fake_stack_(fake_stack),
+        thread_context_(thread_context) {}
 
   TestThreadDelegate(const TestThreadDelegate&) = delete;
   TestThreadDelegate& operator=(const TestThreadDelegate&) = delete;
diff --git a/base/profiler/stack_sampling_profiler_test_util.cc b/base/profiler/stack_sampling_profiler_test_util.cc
index b96bbeb..e560e0c 100644
--- a/base/profiler/stack_sampling_profiler_test_util.cc
+++ b/base/profiler/stack_sampling_profiler_test_util.cc
@@ -35,7 +35,7 @@
 
   // ProfileBuilder:
   ModuleCache* GetModuleCache() override { return module_cache_; }
-  void RecordMetadata(MetadataProvider* metadata_provider) override {}
+  void RecordMetadata() override {}
 
   void OnSampleCompleted(std::vector<Frame> sample) override {
     EXPECT_TRUE(sample_.empty());
diff --git a/base/profiler/stack_sampling_profiler_unittest.cc b/base/profiler/stack_sampling_profiler_unittest.cc
index d3035b93..c52fcc2d 100644
--- a/base/profiler/stack_sampling_profiler_unittest.cc
+++ b/base/profiler/stack_sampling_profiler_unittest.cc
@@ -172,8 +172,7 @@
 
   // ProfileBuilder:
   ModuleCache* GetModuleCache() override;
-  void RecordMetadata(
-      base::ProfileBuilder::MetadataProvider* metadata_provider) override;
+  void RecordMetadata() override;
   void OnSampleCompleted(std::vector<Frame> sample) override;
   void OnProfileCompleted(TimeDelta profile_duration,
                           TimeDelta sampling_period) override;
@@ -203,8 +202,7 @@
   return module_cache_;
 }
 
-void TestProfileBuilder::RecordMetadata(
-    base::ProfileBuilder::MetadataProvider* metadata_provider) {
+void TestProfileBuilder::RecordMetadata() {
   ++metadata_count_;
 }
 
diff --git a/base/task/thread_pool/delayed_task_manager.cc b/base/task/thread_pool/delayed_task_manager.cc
index 9807d57..58d7f9f3 100644
--- a/base/task/thread_pool/delayed_task_manager.cc
+++ b/base/task/thread_pool/delayed_task_manager.cc
@@ -10,6 +10,7 @@
 #include "base/logging.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool/task.h"
+#include "base/task/thread_pool/thread_pool_clock.h"
 #include "base/task_runner.h"
 
 namespace base {
@@ -46,14 +47,10 @@
   scheduled_ = true;
 }
 
-DelayedTaskManager::DelayedTaskManager(
-    std::unique_ptr<const TickClock> tick_clock)
+DelayedTaskManager::DelayedTaskManager()
     : process_ripe_tasks_closure_(
           BindRepeating(&DelayedTaskManager::ProcessRipeTasks,
-                        Unretained(this))),
-      tick_clock_(std::move(tick_clock)) {
-  DCHECK(tick_clock_);
-}
+                        Unretained(this))) {}
 
 DelayedTaskManager::~DelayedTaskManager() = default;
 
@@ -101,7 +98,7 @@
 
   {
     CheckedAutoLock auto_lock(queue_lock_);
-    const TimeTicks now = tick_clock_->NowTicks();
+    const TimeTicks now = ThreadPoolClock::Now();
     while (!delayed_task_queue_.empty() &&
            delayed_task_queue_.Min().task.delayed_run_time <= now) {
       // The const_cast on top is okay since the DelayedTask is
@@ -139,7 +136,7 @@
   DCHECK(!next_delayed_task_run_time.is_null());
   if (next_delayed_task_run_time.is_max())
     return;
-  const TimeTicks now = tick_clock_->NowTicks();
+  const TimeTicks now = ThreadPoolClock::Now();
   TimeDelta delay = std::max(TimeDelta(), next_delayed_task_run_time - now);
   service_thread_task_runner_->PostDelayedTask(
       FROM_HERE, process_ripe_tasks_closure_, delay);
diff --git a/base/task/thread_pool/delayed_task_manager.h b/base/task/thread_pool/delayed_task_manager.h
index c5cb475..37b32554 100644
--- a/base/task/thread_pool/delayed_task_manager.h
+++ b/base/task/thread_pool/delayed_task_manager.h
@@ -17,8 +17,7 @@
 #include "base/task/common/checked_lock.h"
 #include "base/task/common/intrusive_heap.h"
 #include "base/task/thread_pool/task.h"
-#include "base/time/default_tick_clock.h"
-#include "base/time/tick_clock.h"
+#include "base/thread_annotations.h"
 
 namespace base {
 
@@ -34,9 +33,7 @@
   // Posts |task| for execution immediately.
   using PostTaskNowCallback = OnceCallback<void(Task task)>;
 
-  // |tick_clock| can be specified for testing.
-  DelayedTaskManager(std::unique_ptr<const TickClock> tick_clock =
-                         std::make_unique<DefaultTickClock>());
+  DelayedTaskManager();
   ~DelayedTaskManager();
 
   // Starts the delayed task manager, allowing past and future tasks to be
@@ -95,7 +92,8 @@
   // Get the time at which to schedule the next |ProcessRipeTasks()| execution,
   // or TimeTicks::Max() if none needs to be scheduled (i.e. no task, or next
   // task already scheduled).
-  TimeTicks GetTimeToScheduleProcessRipeTasksLockRequired();
+  TimeTicks GetTimeToScheduleProcessRipeTasksLockRequired()
+      EXCLUSIVE_LOCKS_REQUIRED(queue_lock_);
 
   // Schedule |ProcessRipeTasks()| on the service thread to be executed at the
   // given |process_ripe_tasks_time|, provided the given time is not
@@ -105,19 +103,17 @@
 
   const RepeatingClosure process_ripe_tasks_closure_;
 
-  const std::unique_ptr<const TickClock> tick_clock_;
-
-  scoped_refptr<TaskRunner> service_thread_task_runner_;
-
-  IntrusiveHeap<DelayedTask> delayed_task_queue_;
-
   // Synchronizes access to |delayed_task_queue_| and the setting of
-  // |service_thread_task_runner|. Once |service_thread_task_runner_| is set,
+  // |service_thread_task_runner_|. Once |service_thread_task_runner_| is set,
   // it is never modified. It is therefore safe to access
   // |service_thread_task_runner_| without synchronization once it is observed
   // that it is non-null.
   CheckedLock queue_lock_;
 
+  scoped_refptr<TaskRunner> service_thread_task_runner_;
+
+  IntrusiveHeap<DelayedTask> delayed_task_queue_ GUARDED_BY(queue_lock_);
+
   DISALLOW_COPY_AND_ASSIGN(DelayedTaskManager);
 };
 
diff --git a/base/task/thread_pool/delayed_task_manager_unittest.cc b/base/task/thread_pool/delayed_task_manager_unittest.cc
index e2f10f0..af29027 100644
--- a/base/task/thread_pool/delayed_task_manager_unittest.cc
+++ b/base/task/thread_pool/delayed_task_manager_unittest.cc
@@ -12,6 +12,7 @@
 #include "base/memory/ref_counted.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/task/thread_pool/task.h"
+#include "base/task/thread_pool/thread_pool_clock.h"
 #include "base/test/bind_test_util.h"
 #include "base/test/test_mock_time_task_runner.h"
 #include "base/threading/thread.h"
@@ -47,20 +48,17 @@
 
 class ThreadPoolDelayedTaskManagerTest : public testing::Test {
  protected:
-  ThreadPoolDelayedTaskManagerTest()
-      : delayed_task_manager_(
-            service_thread_task_runner_->DeprecatedGetMockTickClock()),
-        task_(ConstructMockedTask(
-            mock_task_,
-            service_thread_task_runner_->GetMockTickClock()->NowTicks(),
-            kLongDelay)) {}
+  ThreadPoolDelayedTaskManagerTest() = default;
   ~ThreadPoolDelayedTaskManagerTest() override = default;
 
   const scoped_refptr<TestMockTimeTaskRunner> service_thread_task_runner_ =
       MakeRefCounted<TestMockTimeTaskRunner>();
+  ThreadPoolClock thread_pool_clock_{
+      service_thread_task_runner_->GetMockTickClock()};
   DelayedTaskManager delayed_task_manager_;
   testing::StrictMock<MockTask> mock_task_;
-  Task task_;
+  Task task_{
+      ConstructMockedTask(mock_task_, ThreadPoolClock::Now(), kLongDelay)};
 
  private:
   DISALLOW_COPY_AND_ASSIGN(ThreadPoolDelayedTaskManagerTest);
@@ -156,19 +154,16 @@
   delayed_task_manager_.Start(service_thread_task_runner_);
 
   testing::StrictMock<MockTask> mock_task_a;
-  Task task_a = ConstructMockedTask(
-      mock_task_a, service_thread_task_runner_->GetMockTickClock()->NowTicks(),
-      TimeDelta::FromHours(1));
+  Task task_a = ConstructMockedTask(mock_task_a, ThreadPoolClock::Now(),
+                                    TimeDelta::FromHours(1));
 
   testing::StrictMock<MockTask> mock_task_b;
-  Task task_b = ConstructMockedTask(
-      mock_task_b, service_thread_task_runner_->GetMockTickClock()->NowTicks(),
-      TimeDelta::FromHours(2));
+  Task task_b = ConstructMockedTask(mock_task_b, ThreadPoolClock::Now(),
+                                    TimeDelta::FromHours(2));
 
   testing::StrictMock<MockTask> mock_task_c;
-  Task task_c = ConstructMockedTask(
-      mock_task_c, service_thread_task_runner_->GetMockTickClock()->NowTicks(),
-      TimeDelta::FromHours(1));
+  Task task_c = ConstructMockedTask(mock_task_c, ThreadPoolClock::Now(),
+                                    TimeDelta::FromHours(1));
 
   // Send tasks to the DelayedTaskManager.
   delayed_task_manager_.AddDelayedTask(std::move(task_a), BindOnce(&RunTask),
diff --git a/base/task/thread_pool/pooled_single_thread_task_runner_manager.cc b/base/task/thread_pool/pooled_single_thread_task_runner_manager.cc
index c556b06..5b680bd6 100644
--- a/base/task/thread_pool/pooled_single_thread_task_runner_manager.cc
+++ b/base/task/thread_pool/pooled_single_thread_task_runner_manager.cc
@@ -110,20 +110,23 @@
     PlatformThread::SetName(thread_name_);
   }
 
-  RegisteredTaskSource GetWork(WorkerThread* worker) override {
+  RunIntentWithRegisteredTaskSource GetWork(WorkerThread* worker) override {
     CheckedAutoLock auto_lock(lock_);
     DCHECK(worker_awake_);
     auto task_source = GetWorkLockRequired(worker);
     if (!task_source) {
       // The worker will sleep after this returns nullptr.
       worker_awake_ = false;
+      return nullptr;
     }
-    return task_source;
+    auto run_intent = task_source->WillRunTask();
+    DCHECK(run_intent);
+    return {std::move(task_source), std::move(run_intent)};
   }
 
-  void DidRunTask(RegisteredTaskSource task_source) override {
+  void DidProcessTask(RegisteredTaskSource task_source) override {
     if (task_source) {
-      EnqueueTaskSource(RegisteredTaskSourceAndTransaction::FromTaskSource(
+      EnqueueTaskSource(TransactionWithRegisteredTaskSource::FromTaskSource(
           std::move(task_source)));
     }
   }
@@ -199,9 +202,9 @@
   // Returns true iff the worker must wakeup, i.e. task source is allowed to run
   // and the worker was not awake.
   bool EnqueueTaskSource(
-      RegisteredTaskSourceAndTransaction task_source_and_transaction) {
+      TransactionWithRegisteredTaskSource transaction_with_task_source) {
     CheckedAutoLock auto_lock(lock_);
-    priority_queue_.Push(std::move(task_source_and_transaction));
+    priority_queue_.Push(std::move(transaction_with_task_source));
     if (!worker_awake_ && CanRunNextTaskSource()) {
       worker_awake_ = true;
       return true;
@@ -250,7 +253,7 @@
     scoped_com_initializer_ = std::make_unique<win::ScopedCOMInitializer>();
   }
 
-  RegisteredTaskSource GetWork(WorkerThread* worker) override {
+  RunIntentWithRegisteredTaskSource GetWork(WorkerThread* worker) override {
     // This scheme below allows us to cover the following scenarios:
     // * Only WorkerThreadDelegate::GetWork() has work:
     //   Always return the task source from GetWork().
@@ -305,8 +308,11 @@
     if (!task_source) {
       // The worker will sleep after this returns nullptr.
       worker_awake_ = false;
+      return nullptr;
     }
-    return task_source;
+    auto run_intent = task_source->WillRunTask();
+    DCHECK(run_intent);
+    return {std::move(task_source), std::move(run_intent)};
   }
 
   void OnMainExit(WorkerThread* /* worker */) override {
diff --git a/base/task/thread_pool/priority_queue.cc b/base/task/thread_pool/priority_queue.cc
index 3e92d7a0..bb16728 100644
--- a/base/task/thread_pool/priority_queue.cc
+++ b/base/task/thread_pool/priority_queue.cc
@@ -88,10 +88,10 @@
 PriorityQueue& PriorityQueue::operator=(PriorityQueue&& other) = default;
 
 void PriorityQueue::Push(
-    RegisteredTaskSourceAndTransaction task_source_and_transaction) {
-  auto sequence_sort_key = task_source_and_transaction.transaction.GetSortKey();
+    TransactionWithRegisteredTaskSource transaction_with_task_source) {
+  auto sequence_sort_key = transaction_with_task_source.GetSortKey();
   container_.insert(TaskSourceAndSortKey(
-      std::move(task_source_and_transaction.task_source), sequence_sort_key));
+      transaction_with_task_source.take_task_source(), sequence_sort_key));
   IncrementNumTaskSourcesForPriority(sequence_sort_key.priority());
 }
 
@@ -141,19 +141,19 @@
 }
 
 void PriorityQueue::UpdateSortKey(
-    TaskSourceAndTransaction task_source_and_transaction) {
-  DCHECK(task_source_and_transaction.task_source);
+    TransactionWithOwnedTaskSource transaction_with_task_source) {
+  DCHECK(transaction_with_task_source);
 
   if (IsEmpty())
     return;
 
   const HeapHandle heap_handle =
-      task_source_and_transaction.task_source->heap_handle();
+      transaction_with_task_source.task_source()->heap_handle();
   if (!heap_handle.IsValid())
     return;
 
   auto old_sort_key = container_.at(heap_handle).sort_key();
-  auto new_sort_key = task_source_and_transaction.transaction.GetSortKey();
+  auto new_sort_key = transaction_with_task_source.GetSortKey();
   auto registered_task_source =
       const_cast<PriorityQueue::TaskSourceAndSortKey&>(
           container_.at(heap_handle))
diff --git a/base/task/thread_pool/priority_queue.h b/base/task/thread_pool/priority_queue.h
index 395f49b..a9098b8 100644
--- a/base/task/thread_pool/priority_queue.h
+++ b/base/task/thread_pool/priority_queue.h
@@ -28,7 +28,7 @@
   PriorityQueue& operator=(PriorityQueue&& other);
 
   // Inserts |task_source| in the PriorityQueue with |sequence_sort_key|.
-  void Push(RegisteredTaskSourceAndTransaction task_source_and_transaction);
+  void Push(TransactionWithRegisteredTaskSource transaction_with_task_source);
 
   // Returns a reference to the SequenceSortKey representing the priority of
   // the highest pending task in this PriorityQueue. The reference becomes
@@ -46,10 +46,11 @@
   // empty.
   RegisteredTaskSource RemoveTaskSource(scoped_refptr<TaskSource> task_source);
 
-  // Updates the sort key of the TaskSource in |task_source_and_transaction| to
+  // Updates the sort key of the TaskSource in |transaction_with_task_source| to
   // match its current traits. No-ops if the TaskSource is not in the
   // PriorityQueue or the PriorityQueue is empty.
-  void UpdateSortKey(TaskSourceAndTransaction task_source_and_transaction);
+  void UpdateSortKey(
+      TransactionWithOwnedTaskSource transaction_with_task_source);
 
   // Returns true if the PriorityQueue is empty.
   bool IsEmpty() const;
diff --git a/base/task/thread_pool/priority_queue_unittest.cc b/base/task/thread_pool/priority_queue_unittest.cc
index 6c2465a..e0a2d64 100644
--- a/base/task/thread_pool/priority_queue_unittest.cc
+++ b/base/task/thread_pool/priority_queue_unittest.cc
@@ -72,28 +72,28 @@
 
   // Push |sequence_a| in the PriorityQueue. It becomes the sequence with the
   // highest priority.
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_a)));
   EXPECT_EQ(sort_key_a, pq.PeekSortKey());
   ExpectNumSequences(0U, 1U, 0U);
 
   // Push |sequence_b| in the PriorityQueue. It becomes the sequence with the
   // highest priority.
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_b)));
   EXPECT_EQ(sort_key_b, pq.PeekSortKey());
   ExpectNumSequences(0U, 1U, 1U);
 
   // Push |sequence_c| in the PriorityQueue. |sequence_b| is still the sequence
   // with the highest priority.
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_c)));
   EXPECT_EQ(sort_key_b, pq.PeekSortKey());
   ExpectNumSequences(0U, 1U, 2U);
 
   // Push |sequence_d| in the PriorityQueue. |sequence_b| is still the sequence
   // with the highest priority.
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_d)));
   EXPECT_EQ(sort_key_b, pq.PeekSortKey());
   ExpectNumSequences(1U, 1U, 2U);
@@ -127,13 +127,13 @@
 
   // Push all test Sequences into the PriorityQueue. |sequence_b|
   // will be the sequence with the highest priority.
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_a)));
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_b)));
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_c)));
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_d)));
   EXPECT_EQ(sort_key_b, pq.PeekSortKey());
   ExpectNumSequences(1U, 1U, 2U);
@@ -176,13 +176,13 @@
 
   // Push all test Sequences into the PriorityQueue. |sequence_b| becomes the
   // sequence with the highest priority.
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_a)));
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_b)));
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_c)));
-  pq.Push(RegisteredTaskSourceAndTransaction::FromTaskSource(
+  pq.Push(TransactionWithRegisteredTaskSource::FromTaskSource(
       RegisteredTaskSource::CreateForTesting(sequence_d)));
   EXPECT_EQ(sort_key_b, pq.PeekSortKey());
   ExpectNumSequences(1U, 1U, 2U);
@@ -191,9 +191,8 @@
     // Downgrade |sequence_b| from USER_BLOCKING to BEST_EFFORT. |sequence_c|
     // (USER_BLOCKING priority) becomes the sequence with the highest priority.
     auto sequence_b_and_transaction =
-        TaskSourceAndTransaction::FromTaskSource(sequence_b);
-    sequence_b_and_transaction.transaction.UpdatePriority(
-        TaskPriority::BEST_EFFORT);
+        TransactionWithOwnedTaskSource::FromTaskSource(sequence_b);
+    sequence_b_and_transaction.UpdatePriority(TaskPriority::BEST_EFFORT);
 
     pq.UpdateSortKey(std::move(sequence_b_and_transaction));
     EXPECT_EQ(sort_key_c, pq.PeekSortKey());
@@ -205,9 +204,8 @@
     // |sequence_c| (USER_BLOCKING priority) is still the sequence with the
     // highest priority.
     auto sequence_c_and_transaction =
-        TaskSourceAndTransaction::FromTaskSource(sequence_c);
-    sequence_c_and_transaction.transaction.UpdatePriority(
-        TaskPriority::USER_BLOCKING);
+        TransactionWithOwnedTaskSource::FromTaskSource(sequence_c);
+    sequence_c_and_transaction.UpdatePriority(TaskPriority::USER_BLOCKING);
 
     pq.UpdateSortKey(std::move(sequence_c_and_transaction));
     ExpectNumSequences(2U, 1U, 1U);
@@ -224,9 +222,8 @@
     // Upgrade |sequence_d| from BEST_EFFORT to USER_BLOCKING. |sequence_d|
     // becomes the sequence with the highest priority.
     auto sequence_d_and_transaction =
-        TaskSourceAndTransaction::FromTaskSource(sequence_d);
-    sequence_d_and_transaction.transaction.UpdatePriority(
-        TaskPriority::USER_BLOCKING);
+        TransactionWithOwnedTaskSource::FromTaskSource(sequence_d);
+    sequence_d_and_transaction.UpdatePriority(TaskPriority::USER_BLOCKING);
 
     pq.UpdateSortKey(std::move(sequence_d_and_transaction));
     ExpectNumSequences(1U, 1U, 1U);
@@ -241,7 +238,8 @@
   }
 
   {
-    pq.UpdateSortKey(TaskSourceAndTransaction::FromTaskSource(sequence_d));
+    pq.UpdateSortKey(
+        TransactionWithOwnedTaskSource::FromTaskSource(sequence_d));
     ExpectNumSequences(1U, 1U, 0U);
     EXPECT_EQ(sequence_a, pq.PopTaskSource().Unregister());
     ExpectNumSequences(1U, 0U, 0U);
@@ -251,7 +249,8 @@
 
   {
     // No-op if UpdateSortKey() is called on an empty PriorityQueue.
-    pq.UpdateSortKey(TaskSourceAndTransaction::FromTaskSource(sequence_b));
+    pq.UpdateSortKey(
+        TransactionWithOwnedTaskSource::FromTaskSource(sequence_b));
     EXPECT_TRUE(pq.IsEmpty());
     ExpectNumSequences(0U, 0U, 0U);
   }
diff --git a/base/task/thread_pool/sequence.cc b/base/task/thread_pool/sequence.cc
index 324bf50..0444af13 100644
--- a/base/task/thread_pool/sequence.cc
+++ b/base/task/thread_pool/sequence.cc
@@ -11,6 +11,7 @@
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "base/task/task_features.h"
+#include "base/task/thread_pool/thread_pool_clock.h"
 #include "base/time/time.h"
 
 namespace base {
@@ -40,7 +41,7 @@
   DCHECK(task.queue_time.is_null());
 
   bool should_be_queued = WillPushTask();
-  task.queue_time = base::TimeTicks::Now();
+  task.queue_time = ThreadPoolClock::Now();
 
   task.task = sequence()->traits_.shutdown_behavior() ==
                       TaskShutdownBehavior::BLOCK_SHUTDOWN
@@ -50,23 +51,41 @@
   sequence()->queue_.push(std::move(task));
 
   // AddRef() matched by manual Release() when the sequence has no more tasks
-  // to run (in DidRunTask() or Clear()).
+  // to run (in DidProcessTask() or Clear()).
   if (should_be_queued && sequence()->task_runner())
     sequence()->task_runner()->AddRef();
 }
 
-Optional<Task> Sequence::TakeTask() {
+TaskSource::RunIntent Sequence::WillRunTask() {
+  // There should never be a second call to WillRunTask() before DidProcessTask
+  // since the RunIntent is always marked a saturated.
   DCHECK(!has_worker_);
+
+  // It's ok to access |has_worker_| outside of a Transaction since
+  // WillRunTask() is externally synchronized, always called in sequence with
+  // TakeTask() and DidProcessTask() and only called if |!queue_.empty()|, which
+  // means it won't race with WillPushTask()/PushTask().
+  has_worker_ = true;
+  return MakeRunIntent(ConcurrencyStatus::kSaturated);
+}
+
+size_t Sequence::GetMaxConcurrency() const {
+  return 1;
+}
+
+Optional<Task> Sequence::TakeTask() {
+  DCHECK(has_worker_);
   DCHECK(!queue_.empty());
   DCHECK(queue_.front().task);
 
-  has_worker_ = true;
   auto next_task = std::move(queue_.front());
   queue_.pop();
   return std::move(next_task);
 }
 
-bool Sequence::DidRunTask() {
+bool Sequence::DidProcessTask(bool /* was_run */) {
+  // There should never be a call to DidProcessTask without an associated
+  // WillRunTask().
   DCHECK(has_worker_);
   has_worker_ = false;
   if (queue_.empty()) {
diff --git a/base/task/thread_pool/sequence.h b/base/task/thread_pool/sequence.h
index 3a7444d..01ff2d22 100644
--- a/base/task/thread_pool/sequence.h
+++ b/base/task/thread_pool/sequence.h
@@ -83,7 +83,10 @@
   // active Sequence::Transaction.
   Transaction BeginTransaction() WARN_UNUSED_RESULT;
 
+  // TaskSource:
   ExecutionEnvironment GetExecutionEnvironment() override;
+  RunIntent WillRunTask() override;
+  size_t GetMaxConcurrency() const override;
 
   // Returns a token that uniquely identifies this Sequence.
   const SequenceToken& token() const { return token_; }
@@ -97,7 +100,7 @@
 
   // TaskSource:
   Optional<Task> TakeTask() override WARN_UNUSED_RESULT;
-  bool DidRunTask() override;
+  bool DidProcessTask(bool can_keep_running) override;
   SequenceSortKey GetSortKey() const override;
   void Clear() override;
 
@@ -110,7 +113,7 @@
   // Queue of tasks to execute.
   base::queue<Task> queue_;
 
-  // True if a worker is currently running a Task from this Sequence.
+  // True if a worker is currently associated with a Task from this Sequence.
   bool has_worker_ = false;
 
   // Holds data stored through the SequenceLocalStorageSlot API.
diff --git a/base/task/thread_pool/sequence_unittest.cc b/base/task/thread_pool/sequence_unittest.cc
index 026e97d..5ff2074 100644
--- a/base/task/thread_pool/sequence_unittest.cc
+++ b/base/task/thread_pool/sequence_unittest.cc
@@ -64,45 +64,45 @@
   sequence_transaction.PushTask(CreateTask(&mock_task_d));
 
   // Take the task in front of the sequence. It should be task A.
-  Optional<Task> task = sequence_transaction.TakeTask();
+  Optional<Task> task = sequence_transaction.TakeTask(sequence->WillRunTask());
   ExpectMockTask(&mock_task_a, &task.value());
   EXPECT_FALSE(task->queue_time.is_null());
 
   // Remove the empty slot. Task B should now be in front.
-  EXPECT_TRUE(sequence_transaction.DidRunTask());
+  EXPECT_TRUE(sequence_transaction.DidProcessTask(/* was_run */ true));
   EXPECT_FALSE(sequence_transaction.WillPushTask());
-  task = sequence_transaction.TakeTask();
+  task = sequence_transaction.TakeTask(sequence->WillRunTask());
   ExpectMockTask(&mock_task_b, &task.value());
   EXPECT_FALSE(task->queue_time.is_null());
 
   // Remove the empty slot. Task C should now be in front.
-  EXPECT_TRUE(sequence_transaction.DidRunTask());
+  EXPECT_TRUE(sequence_transaction.DidProcessTask(/* was_run */ true));
   EXPECT_FALSE(sequence_transaction.WillPushTask());
-  task = sequence_transaction.TakeTask();
+  task = sequence_transaction.TakeTask(sequence->WillRunTask());
   ExpectMockTask(&mock_task_c, &task.value());
   EXPECT_FALSE(task->queue_time.is_null());
 
   // Remove the empty slot.
-  EXPECT_TRUE(sequence_transaction.DidRunTask());
+  EXPECT_TRUE(sequence_transaction.DidProcessTask(/* was_run */ true));
 
   // Push task E in the sequence.
   EXPECT_FALSE(sequence_transaction.WillPushTask());
   sequence_transaction.PushTask(CreateTask(&mock_task_e));
 
   // Task D should be in front.
-  task = sequence_transaction.TakeTask();
+  task = sequence_transaction.TakeTask(sequence->WillRunTask());
   ExpectMockTask(&mock_task_d, &task.value());
   EXPECT_FALSE(task->queue_time.is_null());
 
   // Remove the empty slot. Task E should now be in front.
-  EXPECT_TRUE(sequence_transaction.DidRunTask());
+  EXPECT_TRUE(sequence_transaction.DidProcessTask(/* was_run */ true));
   EXPECT_FALSE(sequence_transaction.WillPushTask());
-  task = sequence_transaction.TakeTask();
+  task = sequence_transaction.TakeTask(sequence->WillRunTask());
   ExpectMockTask(&mock_task_e, &task.value());
   EXPECT_FALSE(task->queue_time.is_null());
 
   // Remove the empty slot. The sequence should now be empty.
-  EXPECT_FALSE(sequence_transaction.DidRunTask());
+  EXPECT_FALSE(sequence_transaction.DidProcessTask(/* was_run */ true));
   EXPECT_TRUE(sequence_transaction.WillPushTask());
 }
 
@@ -123,15 +123,16 @@
 
   // Take the task from the sequence, so that its sequenced time is available
   // for the check below.
-  auto take_best_effort_task = best_effort_sequence_transaction.TakeTask();
+  auto take_best_effort_task = best_effort_sequence_transaction.TakeTask(
+      best_effort_sequence->WillRunTask());
 
   // Verify the sort key.
   EXPECT_EQ(TaskPriority::BEST_EFFORT, best_effort_sort_key.priority());
   EXPECT_EQ(take_best_effort_task->queue_time,
             best_effort_sort_key.next_task_sequenced_time());
 
-  // DidRunTask for correctness.
-  best_effort_sequence_transaction.DidRunTask();
+  // DidProcessTask for correctness.
+  best_effort_sequence_transaction.DidProcessTask(/* was_run */ true);
 }
 
 // Same as ThreadPoolSequenceTest.GetSortKeyBestEffort, but with a
@@ -152,26 +153,28 @@
 
   // Take the task from the sequence, so that its sequenced time is available
   // for the check below.
-  auto take_foreground_task = foreground_sequence_transaction.TakeTask();
+  auto take_foreground_task = foreground_sequence_transaction.TakeTask(
+      foreground_sequence->WillRunTask());
 
   // Verify the sort key.
   EXPECT_EQ(TaskPriority::USER_VISIBLE, foreground_sort_key.priority());
   EXPECT_EQ(take_foreground_task->queue_time,
             foreground_sort_key.next_task_sequenced_time());
 
-  // DidRunTask for correctness.
-  foreground_sequence_transaction.DidRunTask();
+  // DidProcessTask for correctness.
+  foreground_sequence_transaction.DidProcessTask(/* was_run */ true);
 }
 
-// Verify that a DCHECK fires if DidRunTask() is called on a sequence which
+// Verify that a DCHECK fires if DidProcessTask() is called on a sequence which
 // didn't return a Task.
-TEST(ThreadPoolSequenceTest, DidRunTaskWithoutTakeTask) {
+TEST(ThreadPoolSequenceTest, DidProcessTaskWithoutTakeTask) {
   scoped_refptr<Sequence> sequence = MakeRefCounted<Sequence>(
       TaskTraits(ThreadPool()), nullptr, TaskSourceExecutionMode::kParallel);
   Sequence::Transaction sequence_transaction(sequence->BeginTransaction());
   sequence_transaction.PushTask(Task(FROM_HERE, DoNothing(), TimeDelta()));
 
-  EXPECT_DCHECK_DEATH({ sequence_transaction.DidRunTask(); });
+  EXPECT_DCHECK_DEATH(
+      { sequence_transaction.DidProcessTask(/* was_run */ true); });
 }
 
 // Verify that a DCHECK fires if TakeTask() is called on a sequence whose front
@@ -182,8 +185,9 @@
   Sequence::Transaction sequence_transaction(sequence->BeginTransaction());
   sequence_transaction.PushTask(Task(FROM_HERE, DoNothing(), TimeDelta()));
 
-  EXPECT_TRUE(sequence_transaction.TakeTask());
-  EXPECT_DCHECK_DEATH({ sequence_transaction.TakeTask(); });
+  EXPECT_TRUE(sequence_transaction.TakeTask(sequence->WillRunTask()));
+  EXPECT_DCHECK_DEATH(
+      { sequence_transaction.TakeTask(sequence->WillRunTask()); });
 }
 
 // Verify that a DCHECK fires if TakeTask() is called on an empty sequence.
@@ -191,7 +195,8 @@
   scoped_refptr<Sequence> sequence = MakeRefCounted<Sequence>(
       TaskTraits(ThreadPool()), nullptr, TaskSourceExecutionMode::kParallel);
   Sequence::Transaction sequence_transaction(sequence->BeginTransaction());
-  EXPECT_DCHECK_DEATH({ sequence_transaction.TakeTask(); });
+  EXPECT_DCHECK_DEATH(
+      { sequence_transaction.TakeTask(sequence->WillRunTask()); });
 }
 
 }  // namespace internal
diff --git a/base/task/thread_pool/service_thread.cc b/base/task/thread_pool/service_thread.cc
index e132e35a..849f2ef3 100644
--- a/base/task/thread_pool/service_thread.cc
+++ b/base/task/thread_pool/service_thread.cc
@@ -13,6 +13,7 @@
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool/task_tracker.h"
 #include "base/task/thread_pool/thread_pool.h"
+#include "base/task/thread_pool/thread_pool_clock.h"
 
 namespace base {
 namespace internal {
@@ -103,8 +104,8 @@
       FROM_HERE, profiled_traits,
       BindOnce(
           &TaskTracker::RecordHeartbeatLatencyAndTasksRunWhileQueuingHistograms,
-          Unretained(task_tracker_), task_priority, may_block, TimeTicks::Now(),
-          task_tracker_->GetNumTasksRun()));
+          Unretained(task_tracker_), task_priority, may_block,
+          ThreadPoolClock::Now(), task_tracker_->GetNumTasksRun()));
 }
 
 }  // namespace internal
diff --git a/base/task/thread_pool/task.cc b/base/task/thread_pool/task.cc
index 91eea840..a3691a20 100644
--- a/base/task/thread_pool/task.cc
+++ b/base/task/thread_pool/task.cc
@@ -7,6 +7,7 @@
 #include <utility>
 
 #include "base/atomic_sequence_num.h"
+#include "base/task/thread_pool/thread_pool_clock.h"
 
 namespace base {
 namespace internal {
@@ -20,10 +21,11 @@
 Task::Task() = default;
 
 Task::Task(const Location& posted_from, OnceClosure task, TimeDelta delay)
-    : PendingTask(posted_from,
-                  std::move(task),
-                  delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay,
-                  Nestable::kNonNestable) {
+    : PendingTask(
+          posted_from,
+          std::move(task),
+          delay.is_zero() ? TimeTicks() : ThreadPoolClock::Now() + delay,
+          Nestable::kNonNestable) {
   // ThreadPoolImpl doesn't use |sequence_num| but tracing (toplevel.flow)
   // relies on it being unique. While this subtle dependency is a bit
   // overreaching, ThreadPoolImpl is the only task system that doesn't use
diff --git a/base/task/thread_pool/task_source.cc b/base/task/thread_pool/task_source.cc
index e31b624..de0fcd3 100644
--- a/base/task/thread_pool/task_source.cc
+++ b/base/task/thread_pool/task_source.cc
@@ -15,6 +15,28 @@
 namespace base {
 namespace internal {
 
+TaskSource::RunIntent::RunIntent(RunIntent&& other)
+    : task_source_(other.task_source_),
+      concurrency_status_(other.concurrency_status_) {
+  other.task_source_ = nullptr;
+}
+
+TaskSource::RunIntent::~RunIntent() {
+  DCHECK_EQ(task_source_, nullptr);
+}
+
+TaskSource::RunIntent& TaskSource::RunIntent::operator=(RunIntent&& other) {
+  DCHECK_EQ(task_source_, nullptr);
+  task_source_ = other.task_source_;
+  other.task_source_ = nullptr;
+  concurrency_status_ = other.concurrency_status_;
+  return *this;
+}
+
+TaskSource::RunIntent::RunIntent(const TaskSource* task_source,
+                                 ConcurrencyStatus concurrency_status)
+    : task_source_(task_source), concurrency_status_(concurrency_status) {}
+
 TaskSource::Transaction::Transaction(TaskSource* task_source)
     : task_source_(task_source) {
   task_source->lock_.Acquire();
@@ -32,12 +54,14 @@
   }
 }
 
-Optional<Task> TaskSource::Transaction::TakeTask() {
+Optional<Task> TaskSource::Transaction::TakeTask(RunIntent intent) {
+  DCHECK_EQ(intent.task_source_, task_source());
+  intent.Release();
   return task_source_->TakeTask();
 }
 
-bool TaskSource::Transaction::DidRunTask() {
-  return task_source_->DidRunTask();
+bool TaskSource::Transaction::DidProcessTask(bool was_run) {
+  return task_source_->DidProcessTask(was_run);
 }
 
 SequenceSortKey TaskSource::Transaction::GetSortKey() const {
@@ -54,6 +78,11 @@
   task_source_->traits_.UpdatePriority(priority);
 }
 
+TaskSource::RunIntent TaskSource::MakeRunIntent(
+    ConcurrencyStatus concurrency_status) const {
+  return RunIntent(this, concurrency_status);
+}
+
 void TaskSource::SetHeapHandle(const HeapHandle& handle) {
   heap_handle_ = handle;
 }
@@ -114,7 +143,7 @@
 RegisteredTaskSource::RegisteredTaskSource(
     scoped_refptr<TaskSource> task_source,
     TaskTracker* task_tracker)
-    : task_source_(task_source), task_tracker_(task_tracker) {}
+    : task_source_(std::move(task_source)), task_tracker_(task_tracker) {}
 
 }  // namespace internal
 }  // namespace base
diff --git a/base/task/thread_pool/task_source.h b/base/task/thread_pool/task_source.h
index fea31657..b46678d 100644
--- a/base/task/thread_pool/task_source.h
+++ b/base/task/thread_pool/task_source.h
@@ -40,10 +40,13 @@
 // A TaskSource is a virtual class that provides a series of Tasks that must be
 // executed.
 //
-// In order to execute a task from this TaskSource, TakeTask() can be called to
-// access the next Task, and DidRunTask() must be called after the task executed
-// and before accessing any subsequent Tasks. This ensure that the number of
-// workers concurrently running tasks never go over the intended concurrency.
+// In order to execute a task from this TaskSource, a worker should first make
+// sure that a task can run with WillRunTask(). TakeTask() can then be called to
+// access the next Task, and DidProcessTask() must be called after the task
+// executed. Many overlapping chains of WillRunTask(), TakeTask(), run and
+// DidProcessTask() can run concurrently, as permitted by WillRunTask(). This
+// ensure that the number of workers concurrently running tasks never go over
+// the intended concurrency.
 //
 // In comments below, an "empty TaskSource" is a TaskSource with no Task.
 //
@@ -55,11 +58,54 @@
 // running it (and taking Tasks from it as a result). A dangling reference cycle
 // would only occur should they release their reference to it while it's not
 // empty. In other words, it is only correct for them to release it when
-// DidRunTask() returns false.
+// DidProcessTask() returns false.
 //
 // This class is thread-safe.
 class BASE_EXPORT TaskSource : public RefCountedThreadSafe<TaskSource> {
  public:
+  // Indicates whether a TaskSource may run any additional tasks.
+  enum class ConcurrencyStatus {
+    kSaturated,  // The maximum intended concurrency was reached.
+    kPartial,    // Additional tasks may concurrently run.
+  };
+
+  // Result of WillRunTask(). A single task associated with a RunIntent may be
+  // accessed with TakeTask() and run iff this evaluates to true.
+  class BASE_EXPORT RunIntent {
+   public:
+    RunIntent() = default;
+    RunIntent(RunIntent&&) noexcept;
+    ~RunIntent();
+
+    RunIntent& operator=(RunIntent&&);
+
+    operator bool() const { return !!task_source_; }
+
+    // Returns true iff the TaskSource from which this RunIntent was obtained
+    // may not run any additional tasks beyond this RunIntent as it has reached
+    // its maximum concurrency. This indicates that the TaskSource no longer
+    // needs to be queued.
+    bool IsSaturated() const {
+      return concurrency_status_ == ConcurrencyStatus::kSaturated;
+    }
+
+    const TaskSource* task_source() const { return task_source_; }
+
+   private:
+    friend class TaskSource;
+
+    RunIntent(const TaskSource* task_source,
+              ConcurrencyStatus concurrency_status);
+
+    void Release() {
+      DCHECK(task_source_);
+      task_source_ = nullptr;
+    }
+
+    const TaskSource* task_source_ = nullptr;
+    ConcurrencyStatus concurrency_status_ = ConcurrencyStatus::kSaturated;
+  };
+
   // A Transaction can perform multiple operations atomically on a
   // TaskSource. While a Transaction is alive, it is guaranteed that nothing
   // else will access the TaskSource; the TaskSource's lock is held for the
@@ -69,6 +115,8 @@
     Transaction(Transaction&& other);
     ~Transaction();
 
+    operator bool() const { return !!task_source_; }
+
     // Returns the next task to run from this TaskSource. This should be called
     // only if NeedsWorker returns true. Cannot be called on an empty
     // TaskSource.
@@ -77,12 +125,12 @@
     // Optional<Task> is never nullptr. An Optional is used in preparation for
     // the merge between ThreadPool and TaskQueueManager (in Blink).
     // https://crbug.com/783309
-    Optional<Task> TakeTask();
+    Optional<Task> TakeTask(RunIntent intent);
 
-    // Must be called once the task was executed. Cannot be called on an empty
-    // TaskSource. Returns true if the TaskSource should be queued after this
-    // operation.
-    bool DidRunTask();
+    // Must be called once the task was run or skipped. |was_run| should be true
+    // if the task executed. Cannot be called on an empty TaskSource. Returns
+    // true if the TaskSource should be queued after this operation.
+    bool DidProcessTask(bool was_run);
 
     // Returns a SequenceSortKey representing the priority of the TaskSource.
     // Cannot be called on an empty TaskSource.
@@ -125,6 +173,19 @@
 
   virtual ExecutionEnvironment GetExecutionEnvironment() = 0;
 
+  // Informs this TaskSource that an additional Task could be run. Returns a
+  // RunIntent that evaluates to true if this operation is allowed (TakeTask()
+  // can be called), or false otherwise. This function is not thread safe and
+  // must be externally synchronized (e.g. by the lock of the PriorityQueue
+  // holding the TaskSource).
+  virtual RunIntent WillRunTask() = 0;
+
+  // Returns the maximum number of tasks from this TaskSource that can run
+  // concurrently. The concurrency is generally controlled through
+  // WillRunTask(), but calling this directly is useful to determine the right
+  // number of workers beforehand.
+  virtual size_t GetMaxConcurrency() const = 0;
+
   // Support for IntrusiveHeap.
   void SetHeapHandle(const HeapHandle& handle);
   void ClearHeapHandle();
@@ -137,7 +198,7 @@
   }
 
   // A reference to TaskRunner is only retained between PushTask() and when
-  // DidRunTask() returns false, guaranteeing it is safe to dereference this
+  // DidProcessTask() returns false, guaranteeing it is safe to dereference this
   // pointer. Otherwise, the caller should guarantee such TaskRunner still
   // exists before dereferencing.
   TaskRunner* task_runner() const { return task_runner_; }
@@ -149,9 +210,10 @@
 
   virtual Optional<Task> TakeTask() = 0;
 
-  // Returns true if the TaskSource should be queued after this
-  // operation.
-  virtual bool DidRunTask() = 0;
+  // Informs this TaskSource that a task was processed. |was_run| indicates
+  // whether the task was allowed to run or not. Returns true if the TaskSource
+  // should be queued after this operation.
+  virtual bool DidProcessTask(bool was_run) = 0;
 
   virtual SequenceSortKey GetSortKey() const = 0;
 
@@ -160,6 +222,10 @@
   // Sets TaskSource priority to |priority|.
   void UpdatePriority(TaskPriority priority);
 
+  // Constructs and returns a RunIntent, where |is_saturated| indicates that the
+  // TaskSource has reached its maximum concurrency.
+  RunIntent MakeRunIntent(ConcurrencyStatus concurrency_status) const;
+
   // The TaskTraits of all Tasks in the TaskSource.
   TaskTraits traits_;
 
@@ -176,7 +242,7 @@
   // A pointer to the TaskRunner that posts to this TaskSource, if any. The
   // derived class is responsible for calling AddRef() when a TaskSource from
   // which no Task is executing becomes non-empty and Release() when
-  // DidRunTask() returns false.
+  // DidProcessTask() returns false.
   TaskRunner* task_runner_;
 
   TaskSourceExecutionMode execution_mode_;
@@ -190,7 +256,7 @@
  public:
   RegisteredTaskSource();
   RegisteredTaskSource(std::nullptr_t);
-  RegisteredTaskSource(RegisteredTaskSource&& other);
+  RegisteredTaskSource(RegisteredTaskSource&& other) noexcept;
   ~RegisteredTaskSource();
 
   RegisteredTaskSource& operator=(RegisteredTaskSource&& other);
@@ -208,7 +274,6 @@
 
  private:
   friend class TaskTracker;
-
   RegisteredTaskSource(scoped_refptr<TaskSource> task_source,
                        TaskTracker* task_tracker);
 
@@ -218,32 +283,58 @@
   DISALLOW_COPY_AND_ASSIGN(RegisteredTaskSource);
 };
 
-template <class T>
-struct BASE_EXPORT BasicTaskSourceAndTransaction {
-  T task_source;
-  TaskSource::Transaction transaction;
-
-  static BasicTaskSourceAndTransaction FromTaskSource(T task_source) {
-    auto transaction = task_source->BeginTransaction();
-    return BasicTaskSourceAndTransaction(std::move(task_source),
-                                         std::move(transaction));
+// Base implementation for TransactionWith[Owned/Registered]TaskSource (with
+// Transaction as the decorator) and RunIntentWithRegisteredTaskSource (with
+// RunIntent as the decorator).
+template <class Decorator, class T>
+class BASE_EXPORT DecoratorWithTaskSource : public Decorator {
+ public:
+  DecoratorWithTaskSource() = default;
+  DecoratorWithTaskSource(std::nullptr_t) : DecoratorWithTaskSource() {}
+  DecoratorWithTaskSource(T task_source_in, Decorator decorator)
+      : Decorator(std::move(decorator)),
+        task_source_(std::move(task_source_in)) {
+    DCHECK_EQ(task_source_.get(), this->task_source());
   }
+  DecoratorWithTaskSource(DecoratorWithTaskSource&& other) = default;
+  ~DecoratorWithTaskSource() = default;
 
-  BasicTaskSourceAndTransaction(T task_source_in,
-                                TaskSource::Transaction transaction_in)
-      : task_source(std::move(task_source_in)),
-        transaction(std::move(transaction_in)) {}
-  BasicTaskSourceAndTransaction(BasicTaskSourceAndTransaction&& other) =
-      default;
-  ~BasicTaskSourceAndTransaction() = default;
+  DecoratorWithTaskSource& operator=(DecoratorWithTaskSource&&) = default;
 
-  DISALLOW_COPY_AND_ASSIGN(BasicTaskSourceAndTransaction);
+  T take_task_source() { return std::move(task_source_); }
+
+ protected:
+  T task_source_;
+
+  DISALLOW_COPY_AND_ASSIGN(DecoratorWithTaskSource);
 };
 
-using TaskSourceAndTransaction =
-    BasicTaskSourceAndTransaction<scoped_refptr<TaskSource>>;
-using RegisteredTaskSourceAndTransaction =
-    BasicTaskSourceAndTransaction<RegisteredTaskSource>;
+// A RunIntent with an additional RegisteredTaskSource member.
+using RunIntentWithRegisteredTaskSource =
+    DecoratorWithTaskSource<TaskSource::RunIntent, RegisteredTaskSource>;
+
+template <class T>
+struct BASE_EXPORT BasicTransactionWithTaskSource
+    : public DecoratorWithTaskSource<TaskSource::Transaction, T> {
+  using DecoratorWithTaskSource<TaskSource::Transaction,
+                                T>::DecoratorWithTaskSource;
+
+  static BasicTransactionWithTaskSource FromTaskSource(T task_source) {
+    auto transaction = task_source->BeginTransaction();
+    return BasicTransactionWithTaskSource(std::move(task_source),
+                                          std::move(transaction));
+  }
+};
+
+// A Transaction with an additional scoped_refptr<TaskSource> member. Useful to
+// carry ownership of a TaskSource with an associated Transaction.
+using TransactionWithOwnedTaskSource =
+    BasicTransactionWithTaskSource<scoped_refptr<TaskSource>>;
+
+// A Transaction with an additional RegisteredTaskSource member. Useful to carry
+// a RegisteredTaskSource with an associated Transaction.
+using TransactionWithRegisteredTaskSource =
+    BasicTransactionWithTaskSource<RegisteredTaskSource>;
 
 }  // namespace internal
 }  // namespace base
diff --git a/base/task/thread_pool/task_tracker.cc b/base/task/thread_pool/task_tracker.cc
index 2419bc3..35a2e16 100644
--- a/base/task/thread_pool/task_tracker.cc
+++ b/base/task/thread_pool/task_tracker.cc
@@ -20,6 +20,7 @@
 #include "base/sequence_token.h"
 #include "base/synchronization/condition_variable.h"
 #include "base/task/scoped_set_task_priority_for_current_thread.h"
+#include "base/task/thread_pool/thread_pool_clock.h"
 #include "base/threading/sequence_local_storage_map.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/threading/thread_restrictions.h"
@@ -456,8 +457,9 @@
 }
 
 RegisteredTaskSource TaskTracker::RunAndPopNextTask(
-    RegisteredTaskSource task_source) {
-  DCHECK(task_source);
+    RunIntentWithRegisteredTaskSource run_intent_with_task_source) {
+  DCHECK(run_intent_with_task_source);
+  auto task_source = run_intent_with_task_source.take_task_source();
 
   // Run the next task in |task_source|.
   Optional<Task> task;
@@ -465,7 +467,8 @@
   {
     TaskSource::Transaction task_source_transaction(
         task_source->BeginTransaction());
-    task = task_source_transaction.TakeTask();
+    task = task_source_transaction.TakeTask(
+        std::move(run_intent_with_task_source));
     traits = task_source_transaction.traits();
   }
 
@@ -480,14 +483,14 @@
                   can_run_task);
 
     const bool task_source_must_be_queued =
-        task_source->BeginTransaction().DidRunTask();
+        task_source->BeginTransaction().DidProcessTask(can_run_task);
 
     if (can_run_task) {
       IncrementNumTasksRun();
       AfterRunTask(effective_shutdown_behavior);
     }
 
-    // |task_source| should be reenqueued iff requested by DidRunTask().
+    // |task_source| should be reenqueued iff requested by DidProcessTask().
     if (task_source_must_be_queued) {
       return task_source;
     }
@@ -509,7 +512,7 @@
     LatencyHistogramType latency_histogram_type,
     TaskTraits task_traits,
     TimeTicks posted_time) const {
-  const TimeDelta task_latency = TimeTicks::Now() - posted_time;
+  const TimeDelta task_latency = ThreadPoolClock::Now() - posted_time;
 
   DCHECK(latency_histogram_type == LatencyHistogramType::TASK_LATENCY ||
          latency_histogram_type == LatencyHistogramType::HEARTBEAT_LATENCY);
diff --git a/base/task/thread_pool/task_tracker.h b/base/task/thread_pool/task_tracker.h
index 346b2dc94..2b393dc 100644
--- a/base/task/thread_pool/task_tracker.h
+++ b/base/task/thread_pool/task_tracker.h
@@ -118,7 +118,8 @@
   // (which indicates that it should be reenqueued). WillPostTask() must have
   // allowed the task in front of |task_source| to be posted before this is
   // called.
-  RegisteredTaskSource RunAndPopNextTask(RegisteredTaskSource task_source);
+  RegisteredTaskSource RunAndPopNextTask(
+      RunIntentWithRegisteredTaskSource task_source);
 
   // Returns true once shutdown has started (StartShutdown() was called).
   // Note: sequential consistency with the thread calling StartShutdown() isn't
diff --git a/base/task/thread_pool/task_tracker_unittest.cc b/base/task/thread_pool/task_tracker_unittest.cc
index 0382ae7..c2649fd 100644
--- a/base/task/thread_pool/task_tracker_unittest.cc
+++ b/base/task/thread_pool/task_tracker_unittest.cc
@@ -127,10 +127,12 @@
     if (post_and_queue_succeeded &&
         (action_ == Action::RUN || action_ == Action::WILL_POST_AND_RUN)) {
       EXPECT_TRUE(task_source_);
+      auto run_intent = task_source_->WillRunTask();
 
       // Expect RunAndPopNextTask to return nullptr since |sequence| is empty
       // after popping a task from it.
-      EXPECT_FALSE(tracker_->RunAndPopNextTask(std::move(task_source_)));
+      EXPECT_FALSE(tracker_->RunAndPopNextTask(
+          {std::move(task_source_), std::move(run_intent)}));
     }
   }
 
@@ -178,6 +180,11 @@
     auto sequence = test::CreateSequenceWithTask(std::move(task), traits);
     return tracker_.WillQueueTaskSource(std::move(sequence));
   }
+  RegisteredTaskSource RunAndPopNextTask(RegisteredTaskSource task_source) {
+    auto run_intent = task_source->WillRunTask();
+    return tracker_.RunAndPopNextTask(
+        {std::move(task_source), std::move(run_intent)});
+  }
 
   // Calls tracker_->CompleteShutdown() on a new thread and expects it to block.
   void ExpectAsyncCompleteShutdownBlocks() {
@@ -360,10 +367,7 @@
 
   const bool should_run = GetParam() == TaskShutdownBehavior::BLOCK_SHUTDOWN;
   if (should_run) {
-    auto registered_task_source =
-        tracker_.WillQueueTaskSource(std::move(sequence));
-    EXPECT_TRUE(registered_task_source);
-    tracker_.RunAndPopNextTask(std::move(registered_task_source));
+    test::QueueAndRunTaskSource(&tracker_, std::move(sequence));
     EXPECT_EQ(1U, NumTasksExecuted());
     VERIFY_ASYNC_SHUTDOWN_IN_PROGRESS();
   } else {
@@ -371,7 +375,7 @@
   }
 
   // Unblock shutdown by running the remaining BLOCK_SHUTDOWN task.
-  tracker_.RunAndPopNextTask(std::move(block_shutdown_sequence));
+  RunAndPopNextTask(std::move(block_shutdown_sequence));
   EXPECT_EQ(should_run ? 2U : 1U, NumTasksExecuted());
   WAIT_FOR_ASYNC_SHUTDOWN_COMPLETED();
 }
@@ -397,12 +401,12 @@
   EXPECT_EQ(0U, NumTasksExecuted());
   const bool should_run = GetParam() == TaskShutdownBehavior::BLOCK_SHUTDOWN;
 
-  tracker_.RunAndPopNextTask(std::move(sequence));
+  RunAndPopNextTask(std::move(sequence));
   EXPECT_EQ(should_run ? 1U : 0U, NumTasksExecuted());
   VERIFY_ASYNC_SHUTDOWN_IN_PROGRESS();
 
   // Unblock shutdown by running the remaining BLOCK_SHUTDOWN task.
-  tracker_.RunAndPopNextTask(std::move(block_shutdown_sequence));
+  RunAndPopNextTask(std::move(block_shutdown_sequence));
   EXPECT_EQ(should_run ? 2U : 1U, NumTasksExecuted());
   WAIT_FOR_ASYNC_SHUTDOWN_COMPLETED();
 }
@@ -422,7 +426,7 @@
     ExpectAsyncCompleteShutdownBlocks();
 
     // Run the task to unblock shutdown.
-    tracker_.RunAndPopNextTask(std::move(sequence));
+    RunAndPopNextTask(std::move(sequence));
     EXPECT_EQ(1U, NumTasksExecuted());
     WAIT_FOR_ASYNC_SHUTDOWN_COMPLETED();
 
@@ -433,7 +437,7 @@
     tracker_.CompleteShutdown();
 
     // The task shouldn't be allowed to run after shutdown.
-    tracker_.RunAndPopNextTask(std::move(sequence));
+    RunAndPopNextTask(std::move(sequence));
     EXPECT_EQ(0U, NumTasksExecuted());
   }
 }
@@ -456,7 +460,7 @@
 
     // Run the BLOCK_SHUTDOWN task.
     EXPECT_EQ(0U, NumTasksExecuted());
-    tracker_.RunAndPopNextTask(std::move(sequence));
+    RunAndPopNextTask(std::move(sequence));
     EXPECT_EQ(1U, NumTasksExecuted());
   } else {
     // It shouldn't be allowed to post a non BLOCK_SHUTDOWN task.
@@ -471,7 +475,7 @@
   ExpectAsyncCompleteShutdownBlocks();
 
   // Unblock shutdown by running |block_shutdown_task|.
-  tracker_.RunAndPopNextTask(std::move(block_shutdown_sequence));
+  RunAndPopNextTask(std::move(block_shutdown_sequence));
   EXPECT_EQ(GetParam() == TaskShutdownBehavior::BLOCK_SHUTDOWN ? 2U : 1U,
             NumTasksExecuted());
   WAIT_FOR_ASYNC_SHUTDOWN_COMPLETED();
@@ -505,9 +509,9 @@
 
   // Running the task should fail iff the task isn't allowed to use singletons.
   if (can_use_singletons) {
-    EXPECT_FALSE(tracker_.RunAndPopNextTask(std::move(sequence)));
+    EXPECT_FALSE(RunAndPopNextTask(std::move(sequence)));
   } else {
-    EXPECT_DCHECK_DEATH({ tracker_.RunAndPopNextTask(std::move(sequence)); });
+    EXPECT_DCHECK_DEATH({ RunAndPopNextTask(std::move(sequence)); });
   }
 }
 
@@ -526,7 +530,7 @@
   auto sequence_with_may_block = WillPostTaskAndQueueTaskSource(
       std::move(task_with_may_block), traits_with_may_block);
   EXPECT_TRUE(sequence_with_may_block);
-  tracker_.RunAndPopNextTask(std::move(sequence_with_may_block));
+  RunAndPopNextTask(std::move(sequence_with_may_block));
 
   // Set the IO allowed bit. Expect TaskTracker to unset it before running a
   // task without the MayBlock() trait.
@@ -542,7 +546,7 @@
   auto sequence_without_may_block = WillPostTaskAndQueueTaskSource(
       std::move(task_without_may_block), traits_without_may_block);
   EXPECT_TRUE(sequence_without_may_block);
-  tracker_.RunAndPopNextTask(std::move(sequence_without_may_block));
+  RunAndPopNextTask(std::move(sequence_without_may_block));
 }
 
 static void RunTaskRunnerHandleVerificationTask(
@@ -661,7 +665,7 @@
   VERIFY_ASYNC_FLUSH_IN_PROGRESS();
 
   // FlushForTesting() should return after the undelayed task runs.
-  tracker_.RunAndPopNextTask(std::move(undelayed_sequence));
+  RunAndPopNextTask(std::move(undelayed_sequence));
   WAIT_FOR_ASYNC_FLUSH_RETURNED();
 }
 
@@ -678,7 +682,7 @@
   EXPECT_FALSE(event.IsSignaled());
 
   // FlushAsyncForTesting() should callback after the undelayed task runs.
-  tracker_.RunAndPopNextTask(std::move(undelayed_sequence));
+  RunAndPopNextTask(std::move(undelayed_sequence));
   event.Wait();
 }
 
@@ -698,14 +702,14 @@
       std::move(other_undelayed_task), {ThreadPool(), GetParam()});
 
   // Run the first undelayed task.
-  tracker_.RunAndPopNextTask(std::move(undelayed_sequence));
+  RunAndPopNextTask(std::move(undelayed_sequence));
 
   // FlushForTesting() shouldn't return before the second undelayed task runs.
   PlatformThread::Sleep(TestTimeouts::tiny_timeout());
   VERIFY_ASYNC_FLUSH_IN_PROGRESS();
 
   // FlushForTesting() should return after the second undelayed task runs.
-  tracker_.RunAndPopNextTask(std::move(other_undelayed_sequence));
+  RunAndPopNextTask(std::move(other_undelayed_sequence));
   WAIT_FOR_ASYNC_FLUSH_RETURNED();
 }
 
@@ -727,7 +731,7 @@
       std::move(other_undelayed_task), {ThreadPool(), GetParam()});
 
   // Run the first undelayed task.
-  tracker_.RunAndPopNextTask(std::move(undelayed_sequence));
+  RunAndPopNextTask(std::move(undelayed_sequence));
 
   // FlushAsyncForTesting() shouldn't callback before the second undelayed task
   // runs.
@@ -736,7 +740,7 @@
 
   // FlushAsyncForTesting() should callback after the second undelayed task
   // runs.
-  tracker_.RunAndPopNextTask(std::move(other_undelayed_sequence));
+  RunAndPopNextTask(std::move(other_undelayed_sequence));
   event.Wait();
 }
 
@@ -755,7 +759,7 @@
   VERIFY_ASYNC_FLUSH_IN_PROGRESS();
 
   // Run the delayed task.
-  tracker_.RunAndPopNextTask(std::move(delayed_sequence));
+  RunAndPopNextTask(std::move(delayed_sequence));
 
   // FlushForTesting() shouldn't return since there is still a pending undelayed
   // task.
@@ -763,7 +767,7 @@
   VERIFY_ASYNC_FLUSH_IN_PROGRESS();
 
   // Run the undelayed task.
-  tracker_.RunAndPopNextTask(std::move(undelayed_sequence));
+  RunAndPopNextTask(std::move(undelayed_sequence));
 
   // FlushForTesting() should now return.
   WAIT_FOR_ASYNC_FLUSH_RETURNED();
@@ -786,7 +790,7 @@
   EXPECT_FALSE(event.IsSignaled());
 
   // Run the delayed task.
-  tracker_.RunAndPopNextTask(std::move(delayed_sequence));
+  RunAndPopNextTask(std::move(delayed_sequence));
 
   // FlushAsyncForTesting() shouldn't callback since there is still a pending
   // undelayed task.
@@ -794,7 +798,7 @@
   EXPECT_FALSE(event.IsSignaled());
 
   // Run the undelayed task.
-  tracker_.RunAndPopNextTask(std::move(undelayed_sequence));
+  RunAndPopNextTask(std::move(undelayed_sequence));
 
   // FlushAsyncForTesting() should now callback.
   event.Wait();
@@ -920,7 +924,7 @@
                                                  {ThreadPool(), GetParam()});
   EXPECT_TRUE(sequence);
 
-  tracker_.RunAndPopNextTask(std::move(sequence));
+  RunAndPopNextTask(std::move(sequence));
 
   // Since the delayed task doesn't block shutdown, a call to Shutdown() should
   // not hang.
@@ -1144,7 +1148,7 @@
   VERIFY_ASYNC_SHUTDOWN_IN_PROGRESS();
 
   // Unblock shutdown by running |block_shutdown_task|.
-  tracker_.RunAndPopNextTask(std::move(block_shutdown_sequence));
+  RunAndPopNextTask(std::move(block_shutdown_sequence));
   EXPECT_EQ(kLoadTestNumIterations + 1, NumTasksExecuted());
   WAIT_FOR_ASYNC_SHUTDOWN_COMPLETED();
 }
diff --git a/base/task/thread_pool/test_utils.cc b/base/task/thread_pool/test_utils.cc
index c82538f..c56e425 100644
--- a/base/task/thread_pool/test_utils.cc
+++ b/base/task/thread_pool/test_utils.cc
@@ -181,8 +181,12 @@
 RegisteredTaskSource QueueAndRunTaskSource(
     TaskTracker* task_tracker,
     scoped_refptr<TaskSource> task_source) {
+  auto registered_task_source =
+      task_tracker->WillQueueTaskSource(std::move(task_source));
+  EXPECT_TRUE(registered_task_source);
+  auto run_intent = registered_task_source->WillRunTask();
   return task_tracker->RunAndPopNextTask(
-      task_tracker->WillQueueTaskSource(std::move(task_source)));
+      {std::move(registered_task_source), std::move(run_intent)});
 }
 
 void ShutdownTaskTracker(TaskTracker* task_tracker) {
diff --git a/base/task/thread_pool/thread_group.cc b/base/task/thread_pool/thread_group.cc
index bacdabb..cf74236 100644
--- a/base/task/thread_pool/thread_group.cc
+++ b/base/task/thread_pool/thread_group.cc
@@ -39,18 +39,19 @@
 ThreadGroup::ScopedReenqueueExecutor::~ScopedReenqueueExecutor() {
   if (destination_thread_group_) {
     destination_thread_group_->PushTaskSourceAndWakeUpWorkers(
-        std::move(task_source_and_transaction_.value()));
+        std::move(transaction_with_task_source_.value()));
   }
 }
 
 void ThreadGroup::ScopedReenqueueExecutor::
     SchedulePushTaskSourceAndWakeUpWorkers(
-        RegisteredTaskSourceAndTransaction task_source_and_transaction,
+        TransactionWithRegisteredTaskSource transaction_with_task_source,
         ThreadGroup* destination_thread_group) {
   DCHECK(destination_thread_group);
   DCHECK(!destination_thread_group_);
-  DCHECK(!task_source_and_transaction_);
-  task_source_and_transaction_.emplace(std::move(task_source_and_transaction));
+  DCHECK(!transaction_with_task_source_);
+  transaction_with_task_source_.emplace(
+      std::move(transaction_with_task_source));
   destination_thread_group_ = destination_thread_group;
 }
 
@@ -111,37 +112,37 @@
 void ThreadGroup::ReEnqueueTaskSourceLockRequired(
     BaseScopedWorkersExecutor* workers_executor,
     ScopedReenqueueExecutor* reenqueue_executor,
-    RegisteredTaskSourceAndTransaction task_source_and_transaction) {
+    TransactionWithRegisteredTaskSource transaction_with_task_source) {
   // Decide in which thread group the TaskSource should be reenqueued.
-  ThreadGroup* destination_thread_group = delegate_->GetThreadGroupForTraits(
-      task_source_and_transaction.transaction.traits());
+  ThreadGroup* destination_thread_group =
+      delegate_->GetThreadGroupForTraits(transaction_with_task_source.traits());
 
   if (destination_thread_group == this) {
     // If the TaskSource should be reenqueued in the current thread group,
     // reenqueue it inside the scope of the lock.
-    priority_queue_.Push(std::move(task_source_and_transaction));
+    priority_queue_.Push(std::move(transaction_with_task_source));
     EnsureEnoughWorkersLockRequired(workers_executor);
   } else {
     // Otherwise, schedule a reenqueue after releasing the lock.
     reenqueue_executor->SchedulePushTaskSourceAndWakeUpWorkers(
-        std::move(task_source_and_transaction), destination_thread_group);
+        std::move(transaction_with_task_source), destination_thread_group);
   }
 }
 
 void ThreadGroup::UpdateSortKeyImpl(
     BaseScopedWorkersExecutor* executor,
-    TaskSourceAndTransaction task_source_and_transaction) {
+    TransactionWithOwnedTaskSource transaction_with_task_source) {
   CheckedAutoLock auto_lock(lock_);
-  priority_queue_.UpdateSortKey(std::move(task_source_and_transaction));
+  priority_queue_.UpdateSortKey(std::move(transaction_with_task_source));
   EnsureEnoughWorkersLockRequired(executor);
 }
 
 void ThreadGroup::PushTaskSourceAndWakeUpWorkersImpl(
     BaseScopedWorkersExecutor* executor,
-    RegisteredTaskSourceAndTransaction task_source_and_transaction) {
+    TransactionWithRegisteredTaskSource transaction_with_task_source) {
   CheckedAutoLock auto_lock(lock_);
   DCHECK(!replacement_thread_group_);
-  priority_queue_.Push(std::move(task_source_and_transaction));
+  priority_queue_.Push(std::move(transaction_with_task_source));
   EnsureEnoughWorkersLockRequired(executor);
 }
 
diff --git a/base/task/thread_pool/thread_group.h b/base/task/thread_pool/thread_group.h
index 0c256505..608f17e 100644
--- a/base/task/thread_pool/thread_group.h
+++ b/base/task/thread_pool/thread_group.h
@@ -33,9 +33,9 @@
    public:
     virtual ~Delegate() = default;
 
-    // Invoked when the TaskSource in |task_source_and_transaction| is non-empty
-    // after the ThreadGroup has run a task from it. The implementation must
-    // return the thread group in which the TaskSource should be reenqueued.
+    // Invoked when a TaskSource with |traits| is non-empty after the
+    // ThreadGroup has run a task from it. The implementation must return the
+    // thread group in which the TaskSource should be reenqueued.
     virtual ThreadGroup* GetThreadGroupForTraits(const TaskTraits& traits) = 0;
   };
 
@@ -67,21 +67,21 @@
   // is running a task from it.
   RegisteredTaskSource RemoveTaskSource(scoped_refptr<TaskSource> task_source);
 
-  // Updates the position of the TaskSource in |task_source_and_transaction| in
+  // Updates the position of the TaskSource in |transaction_with_task_source| in
   // this ThreadGroup's PriorityQueue based on the TaskSource's current traits.
   //
   // Implementations should instantiate a concrete ScopedWorkersExecutor and
   // invoke UpdateSortKeyImpl().
   virtual void UpdateSortKey(
-      TaskSourceAndTransaction task_source_and_transaction) = 0;
+      TransactionWithOwnedTaskSource transaction_with_task_source) = 0;
 
-  // Pushes the TaskSource in |task_source_and_transaction| into this
+  // Pushes the TaskSource in |transaction_with_task_source| into this
   // ThreadGroup's PriorityQueue and wakes up workers as appropriate.
   //
   // Implementations should instantiate a concrete ScopedWorkersExecutor and
   // invoke PushTaskSourceAndWakeUpWorkersImpl().
   virtual void PushTaskSourceAndWakeUpWorkers(
-      RegisteredTaskSourceAndTransaction task_source_and_transaction) = 0;
+      TransactionWithRegisteredTaskSource transaction_with_task_source) = 0;
 
   // Removes all task sources from this ThreadGroup's PriorityQueue and enqueues
   // them in another |destination_thread_group|. After this method is called,
@@ -132,16 +132,16 @@
     ScopedReenqueueExecutor();
     ~ScopedReenqueueExecutor();
 
-    // A RegisteredTaskSourceAndTransaction and the ThreadGroup in which it
+    // A TransactionWithRegisteredTaskSource and the ThreadGroup in which it
     // should be enqueued.
     void SchedulePushTaskSourceAndWakeUpWorkers(
-        RegisteredTaskSourceAndTransaction task_source_and_transaction,
+        TransactionWithRegisteredTaskSource transaction_with_task_source,
         ThreadGroup* destination_thread_group);
 
    private:
-    // A RegisteredTaskSourceAndTransaction and the thread group in which it
+    // A TransactionWithRegisteredTaskSource and the thread group in which it
     // should be enqueued.
-    Optional<RegisteredTaskSourceAndTransaction> task_source_and_transaction_;
+    Optional<TransactionWithRegisteredTaskSource> transaction_with_task_source_;
     ThreadGroup* destination_thread_group_ = nullptr;
 
     DISALLOW_COPY_AND_ASSIGN(ScopedReenqueueExecutor);
@@ -182,20 +182,21 @@
   virtual void EnsureEnoughWorkersLockRequired(
       BaseScopedWorkersExecutor* executor) EXCLUSIVE_LOCKS_REQUIRED(lock_) = 0;
 
-  // Reenqueues a |task_source_and_transaction| from which a Task just ran in
+  // Reenqueues a |transaction_with_task_source| from which a Task just ran in
   // the current ThreadGroup into the appropriate ThreadGroup.
   void ReEnqueueTaskSourceLockRequired(
       BaseScopedWorkersExecutor* workers_executor,
       ScopedReenqueueExecutor* reenqueue_executor,
-      RegisteredTaskSourceAndTransaction task_source_and_transaction)
+      TransactionWithRegisteredTaskSource transaction_with_task_source)
       EXCLUSIVE_LOCKS_REQUIRED(lock_);
 
   // Must be invoked by implementations of the corresponding non-Impl() methods.
-  void UpdateSortKeyImpl(BaseScopedWorkersExecutor* executor,
-                         TaskSourceAndTransaction task_source_and_transaction);
+  void UpdateSortKeyImpl(
+      BaseScopedWorkersExecutor* executor,
+      TransactionWithOwnedTaskSource transaction_with_task_source);
   void PushTaskSourceAndWakeUpWorkersImpl(
       BaseScopedWorkersExecutor* executor,
-      RegisteredTaskSourceAndTransaction task_source_and_transaction);
+      TransactionWithRegisteredTaskSource transaction_with_task_source);
 
   // Synchronizes accesses to all members of this class which are neither const,
   // atomic, nor immutable after start. Since this lock is a bottleneck to post
diff --git a/base/task/thread_pool/thread_group_impl.cc b/base/task/thread_pool/thread_group_impl.cc
index 17dcc82..c42ec12 100644
--- a/base/task/thread_pool/thread_group_impl.cc
+++ b/base/task/thread_pool/thread_group_impl.cc
@@ -30,6 +30,7 @@
 #include "base/threading/scoped_blocking_call.h"
 #include "base/threading/thread_checker.h"
 #include "base/threading/thread_restrictions.h"
+#include "base/time/time_override.h"
 #include "build/build_config.h"
 
 #if defined(OS_WIN)
@@ -208,8 +209,8 @@
   // WorkerThread::Delegate:
   WorkerThread::ThreadLabel GetThreadLabel() const override;
   void OnMainEntry(const WorkerThread* worker) override;
-  RegisteredTaskSource GetWork(WorkerThread* worker) override;
-  void DidRunTask(RegisteredTaskSource task_source) override;
+  RunIntentWithRegisteredTaskSource GetWork(WorkerThread* worker) override;
+  void DidProcessTask(RegisteredTaskSource task_source) override;
   TimeDelta GetSleepTimeout() override;
   void OnMainExit(WorkerThread* worker) override;
 
@@ -270,7 +271,7 @@
     size_t num_tasks_since_last_detach = 0;
 
     // Whether the worker is currently running a task (i.e. GetWork() has
-    // returned a non-empty task source and DidRunTask() hasn't been called
+    // returned a non-empty task source and DidProcessTask() hasn't been called
     // yet).
     bool is_running_task = false;
 
@@ -433,16 +434,16 @@
 }
 
 void ThreadGroupImpl::UpdateSortKey(
-    TaskSourceAndTransaction task_source_and_transaction) {
+    TransactionWithOwnedTaskSource transaction_with_task_source) {
   ScopedWorkersExecutor executor(this);
-  UpdateSortKeyImpl(&executor, std::move(task_source_and_transaction));
+  UpdateSortKeyImpl(&executor, std::move(transaction_with_task_source));
 }
 
 void ThreadGroupImpl::PushTaskSourceAndWakeUpWorkers(
-    RegisteredTaskSourceAndTransaction task_source_and_transaction) {
+    TransactionWithRegisteredTaskSource transaction_with_task_source) {
   ScopedWorkersExecutor executor(this);
   PushTaskSourceAndWakeUpWorkersImpl(&executor,
-                                     std::move(task_source_and_transaction));
+                                     std::move(transaction_with_task_source));
 }
 
 size_t ThreadGroupImpl::GetMaxConcurrentNonBlockedTasksDeprecated() const {
@@ -581,8 +582,8 @@
   SetBlockingObserverForCurrentThread(this);
 }
 
-RegisteredTaskSource ThreadGroupImpl::WorkerThreadDelegateImpl::GetWork(
-    WorkerThread* worker) {
+RunIntentWithRegisteredTaskSource
+ThreadGroupImpl::WorkerThreadDelegateImpl::GetWork(WorkerThread* worker) {
   DCHECK_CALLED_ON_VALID_THREAD(worker_thread_checker_);
   DCHECK(!worker_only().is_running_task);
   DCHECK(!read_worker().is_running_best_effort_task);
@@ -634,10 +635,13 @@
   }
 
   // Pop the TaskSource from which to run a task from the PriorityQueue.
-  return outer_->priority_queue_.PopTaskSource();
+  RegisteredTaskSource task_source = outer_->priority_queue_.PopTaskSource();
+  auto run_intent = task_source->WillRunTask();
+  DCHECK(run_intent);
+  return {std::move(task_source), std::move(run_intent)};
 }
 
-void ThreadGroupImpl::WorkerThreadDelegateImpl::DidRunTask(
+void ThreadGroupImpl::WorkerThreadDelegateImpl::DidProcessTask(
     RegisteredTaskSource task_source) {
   DCHECK_CALLED_ON_VALID_THREAD(worker_thread_checker_);
   DCHECK(worker_only().is_running_task);
@@ -649,10 +653,10 @@
   // A transaction to the TaskSource to reenqueue, if any. Instantiated here as
   // |TaskSource::lock_| is a UniversalPredecessor and must always be acquired
   // prior to acquiring a second lock
-  Optional<RegisteredTaskSourceAndTransaction> task_source_and_transaction;
+  Optional<TransactionWithRegisteredTaskSource> transaction_with_task_source;
   if (task_source) {
-    task_source_and_transaction.emplace(
-        RegisteredTaskSourceAndTransaction::FromTaskSource(
+    transaction_with_task_source.emplace(
+        TransactionWithRegisteredTaskSource::FromTaskSource(
             std::move(task_source)));
   }
 
@@ -674,10 +678,10 @@
     write_worker().is_running_best_effort_task = false;
   }
 
-  if (task_source_and_transaction) {
+  if (transaction_with_task_source) {
     outer_->ReEnqueueTaskSourceLockRequired(
         &workers_executor, &reenqueue_executor,
-        std::move(task_source_and_transaction.value()));
+        std::move(transaction_with_task_source.value()));
   }
 }
 
@@ -721,7 +725,7 @@
 
   const TimeTicks last_used_time = worker->GetLastUsedTime();
   return !last_used_time.is_null() &&
-         TimeTicks::Now() - last_used_time >=
+         subtle::TimeTicksNowIgnoringOverride() - last_used_time >=
              outer_->after_start().suggested_reclaim_time &&
          (outer_->workers_.size() > outer_->after_start().initial_max_tasks ||
           !FeatureList::IsEnabled(kNoDetachBelowInitialCapacity)) &&
@@ -734,7 +738,7 @@
 
   outer_->num_tasks_before_detach_histogram_->Add(
       worker_only().num_tasks_since_last_detach);
-  outer_->cleanup_timestamps_.push(TimeTicks::Now());
+  outer_->cleanup_timestamps_.push(subtle::TimeTicksNowIgnoringOverride());
   worker->Cleanup();
   outer_->idle_workers_stack_.Remove(worker);
 
@@ -873,7 +877,7 @@
 
   DCHECK(!incremented_max_tasks_since_blocked_);
   DCHECK(read_worker().may_block_start_time.is_null());
-  write_worker().may_block_start_time = TimeTicks::Now();
+  write_worker().may_block_start_time = subtle::TimeTicksNowIgnoringOverride();
   ++outer_->num_unresolved_may_block_;
   if (read_worker().is_running_best_effort_task)
     ++outer_->num_unresolved_best_effort_may_block_;
@@ -930,7 +934,8 @@
     MustIncrementMaxTasksLockRequired() {
   if (!incremented_max_tasks_since_blocked_ &&
       !read_any().may_block_start_time.is_null() &&
-      TimeTicks::Now() - read_any().may_block_start_time >=
+      subtle::TimeTicksNowIgnoringOverride() -
+              read_any().may_block_start_time >=
           outer_->after_start().may_block_threshold) {
     incremented_max_tasks_since_blocked_ = true;
 
@@ -991,7 +996,7 @@
   DCHECK_LE(workers_.size(), max_tasks_);
 
   if (!cleanup_timestamps_.empty()) {
-    detach_duration_histogram_->AddTime(TimeTicks::Now() -
+    detach_duration_histogram_->AddTime(subtle::TimeTicksNowIgnoringOverride() -
                                         cleanup_timestamps_.top());
     cleanup_timestamps_.pop();
   }
diff --git a/base/task/thread_pool/thread_group_impl.h b/base/task/thread_pool/thread_group_impl.h
index 01c41fb..5584bb3 100644
--- a/base/task/thread_pool/thread_group_impl.h
+++ b/base/task/thread_pool/thread_group_impl.h
@@ -147,9 +147,10 @@
 
   // ThreadGroup:
   void UpdateSortKey(
-      TaskSourceAndTransaction task_source_and_transaction) override;
+      TransactionWithOwnedTaskSource transaction_with_task_source) override;
   void PushTaskSourceAndWakeUpWorkers(
-      RegisteredTaskSourceAndTransaction task_source_and_transaction) override;
+      TransactionWithRegisteredTaskSource transaction_with_task_source)
+      override;
   void EnsureEnoughWorkersLockRequired(BaseScopedWorkersExecutor* executor)
       override EXCLUSIVE_LOCKS_REQUIRED(lock_);
 
diff --git a/base/task/thread_pool/thread_group_native.cc b/base/task/thread_pool/thread_group_native.cc
index 48c86cc..a99b866 100644
--- a/base/task/thread_pool/thread_group_native.cc
+++ b/base/task/thread_pool/thread_group_native.cc
@@ -79,27 +79,28 @@
 }
 
 void ThreadGroupNative::RunNextTaskSourceImpl() {
-  RegisteredTaskSource task_source = GetWork();
+  RunIntentWithRegisteredTaskSource run_intent_with_task_source = GetWork();
 
-  if (task_source) {
+  if (run_intent_with_task_source) {
     BindToCurrentThread();
-    task_source = task_tracker_->RunAndPopNextTask(std::move(task_source));
+    RegisteredTaskSource task_source = task_tracker_->RunAndPopNextTask(
+        std::move(run_intent_with_task_source));
     UnbindFromCurrentThread();
 
     if (task_source) {
       ScopedWorkersExecutor workers_executor(this);
       ScopedReenqueueExecutor reenqueue_executor;
-      auto task_source_and_transaction =
-          RegisteredTaskSourceAndTransaction::FromTaskSource(
+      auto transaction_with_task_source =
+          TransactionWithRegisteredTaskSource::FromTaskSource(
               std::move(task_source));
       CheckedAutoLock auto_lock(lock_);
       ReEnqueueTaskSourceLockRequired(&workers_executor, &reenqueue_executor,
-                                      std::move(task_source_and_transaction));
+                                      std::move(transaction_with_task_source));
     }
   }
 }
 
-RegisteredTaskSource ThreadGroupNative::GetWork() {
+RunIntentWithRegisteredTaskSource ThreadGroupNative::GetWork() {
   CheckedAutoLock auto_lock(lock_);
   DCHECK_GT(num_pending_threadpool_work_, 0U);
   --num_pending_threadpool_work_;
@@ -112,20 +113,23 @@
   const TaskPriority priority = priority_queue_.PeekSortKey().priority();
   if (!task_tracker_->CanRunPriority(priority))
     return nullptr;
-  return priority_queue_.PopTaskSource();
+  RegisteredTaskSource task_source = priority_queue_.PopTaskSource();
+  auto run_intent = task_source->WillRunTask();
+  DCHECK(run_intent);
+  return {std::move(task_source), std::move(run_intent)};
 }
 
 void ThreadGroupNative::UpdateSortKey(
-    TaskSourceAndTransaction task_source_and_transaction) {
+    TransactionWithOwnedTaskSource transaction_with_task_source) {
   ScopedWorkersExecutor executor(this);
-  UpdateSortKeyImpl(&executor, std::move(task_source_and_transaction));
+  UpdateSortKeyImpl(&executor, std::move(transaction_with_task_source));
 }
 
 void ThreadGroupNative::PushTaskSourceAndWakeUpWorkers(
-    RegisteredTaskSourceAndTransaction task_source_and_transaction) {
+    TransactionWithRegisteredTaskSource transaction_with_task_source) {
   ScopedWorkersExecutor executor(this);
   PushTaskSourceAndWakeUpWorkersImpl(&executor,
-                                     std::move(task_source_and_transaction));
+                                     std::move(transaction_with_task_source));
 }
 
 void ThreadGroupNative::EnsureEnoughWorkersLockRequired(
diff --git a/base/task/thread_pool/thread_group_native.h b/base/task/thread_pool/thread_group_native.h
index 21c3d87..9f06c52 100644
--- a/base/task/thread_pool/thread_group_native.h
+++ b/base/task/thread_pool/thread_group_native.h
@@ -49,15 +49,16 @@
 
   // ThreadGroup:
   void UpdateSortKey(
-      TaskSourceAndTransaction task_source_and_transaction) override;
+      TransactionWithOwnedTaskSource transaction_with_task_source) override;
   void PushTaskSourceAndWakeUpWorkers(
-      RegisteredTaskSourceAndTransaction task_source_and_transaction) override;
+      TransactionWithRegisteredTaskSource transaction_with_task_source)
+      override;
   void EnsureEnoughWorkersLockRequired(BaseScopedWorkersExecutor* executor)
       override EXCLUSIVE_LOCKS_REQUIRED(lock_);
 
   // Returns the top TaskSource off the |priority_queue_|. Returns nullptr
   // if the |priority_queue_| is empty.
-  RegisteredTaskSource GetWork();
+  RunIntentWithRegisteredTaskSource GetWork();
 
   // Indicates whether the thread group has been started yet.
   bool started_ GUARDED_BY(lock_) = false;
diff --git a/base/task/thread_pool/thread_pool_clock.cc b/base/task/thread_pool/thread_pool_clock.cc
new file mode 100644
index 0000000..ab549449
--- /dev/null
+++ b/base/task/thread_pool/thread_pool_clock.cc
@@ -0,0 +1,35 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/task/thread_pool/thread_pool_clock.h"
+
+#include "base/logging.h"
+#include "base/time/tick_clock.h"
+
+namespace base {
+namespace internal {
+
+namespace {
+const TickClock* g_tick_clock = nullptr;
+}
+
+ThreadPoolClock::ThreadPoolClock(const TickClock* tick_clock) {
+  DCHECK(!g_tick_clock);
+  g_tick_clock = tick_clock;
+}
+
+ThreadPoolClock::~ThreadPoolClock() {
+  DCHECK(g_tick_clock);
+  g_tick_clock = nullptr;
+}
+
+// static
+TimeTicks ThreadPoolClock::Now() {
+  // Allow |g_tick_clock| to be null so simple thread_pool/ unit tests don't
+  // need to install one.
+  return g_tick_clock ? g_tick_clock->NowTicks() : TimeTicks::Now();
+}
+
+}  // namespace internal
+}  // namespace base
diff --git a/base/task/thread_pool/thread_pool_clock.h b/base/task/thread_pool/thread_pool_clock.h
new file mode 100644
index 0000000..452fca81
--- /dev/null
+++ b/base/task/thread_pool/thread_pool_clock.h
@@ -0,0 +1,40 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BASE_TASK_THREAD_POOL_THREAD_POOL_CLOCK_H_
+#define BASE_TASK_THREAD_POOL_THREAD_POOL_CLOCK_H_
+
+#include "base/base_export.h"
+#include "base/macros.h"
+#include "base/time/time.h"
+
+namespace base {
+
+class TickClock;
+
+namespace internal {
+
+class BASE_EXPORT ThreadPoolClock {
+ public:
+  // |tick_clock| will service ThreadPoolClock::Now() in the scope of this
+  // ThreadPoolClock.
+  ThreadPoolClock(const TickClock* tick_clock);
+  ~ThreadPoolClock();
+
+  // Returns the current TimeTicks::Now(). All calls to TimeTicks::Now() in
+  // base/task/thread_pool should use this or
+  // subtle::TimeTicksNowIgnoringOverride() depending on whether they want to
+  // respect mock time (e.g. delayed tasks) or need real-time timeouts (e.g.
+  // recycling threads). TODO(gab): Make MOCK_TIME always mock TimeTicks::Now()
+  // and get rid of this indirection.
+  static TimeTicks Now();
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ThreadPoolClock);
+};
+
+}  // namespace internal
+}  // namespace base
+
+#endif  // BASE_TASK_THREAD_POOL_THREAD_POOL_CLOCK_H_
diff --git a/base/task/thread_pool/thread_pool_impl.cc b/base/task/thread_pool/thread_pool_impl.cc
index 7a1a081..0101854 100644
--- a/base/task/thread_pool/thread_pool_impl.cc
+++ b/base/task/thread_pool/thread_pool_impl.cc
@@ -27,6 +27,7 @@
 #include "base/task/thread_pool/task_source.h"
 #include "base/task/thread_pool/thread_group_impl.h"
 #include "base/threading/platform_thread.h"
+#include "base/time/default_tick_clock.h"
 #include "base/time/time.h"
 
 #if defined(OS_WIN)
@@ -67,7 +68,8 @@
 
 ThreadPoolImpl::ThreadPoolImpl(StringPiece histogram_label,
                                std::unique_ptr<TaskTrackerImpl> task_tracker)
-    : task_tracker_(std::move(task_tracker)),
+    : thread_pool_clock_(DefaultTickClock::GetInstance()),
+      task_tracker_(std::move(task_tracker)),
       service_thread_(std::make_unique<ServiceThread>(
           task_tracker_.get(),
           BindRepeating(&ThreadPoolImpl::ReportHeartbeatMetrics,
diff --git a/base/task/thread_pool/thread_pool_impl.h b/base/task/thread_pool/thread_pool_impl.h
index 1e4d3e64..b623775 100644
--- a/base/task/thread_pool/thread_pool_impl.h
+++ b/base/task/thread_pool/thread_pool_impl.h
@@ -29,6 +29,7 @@
 #include "base/task/thread_pool/thread_group.h"
 #include "base/task/thread_pool/thread_group_impl.h"
 #include "base/task/thread_pool/thread_pool.h"
+#include "base/task/thread_pool/thread_pool_clock.h"
 #include "base/updateable_sequenced_task_runner.h"
 #include "build/build_config.h"
 
@@ -128,6 +129,10 @@
   void UpdatePriority(scoped_refptr<TaskSource> task_source,
                       TaskPriority priority) override;
 
+  // The clock instance used by all classes in base/task/thread_pool. Must
+  // outlive everything else to ensure no discrepancy in Now().
+  ThreadPoolClock thread_pool_clock_;
+
   const std::unique_ptr<TaskTrackerImpl> task_tracker_;
   std::unique_ptr<Thread> service_thread_;
   DelayedTaskManager delayed_task_manager_;
diff --git a/base/task/thread_pool/worker_thread.cc b/base/task/thread_pool/worker_thread.cc
index e23183b..07b5b15b 100644
--- a/base/task/thread_pool/worker_thread.cc
+++ b/base/task/thread_pool/worker_thread.cc
@@ -14,6 +14,7 @@
 #include "base/task/thread_pool/environment_config.h"
 #include "base/task/thread_pool/task_tracker.h"
 #include "base/task/thread_pool/worker_thread_observer.h"
+#include "base/time/time_override.h"
 #include "base/trace_event/trace_event.h"
 
 #if defined(OS_MACOSX)
@@ -133,7 +134,7 @@
 void WorkerThread::BeginUnusedPeriod() {
   CheckedAutoLock auto_lock(thread_lock_);
   DCHECK(last_used_time_.is_null());
-  last_used_time_ = TimeTicks::Now();
+  last_used_time_ = subtle::TimeTicksNowIgnoringOverride();
 }
 
 void WorkerThread::EndUnusedPeriod() {
@@ -305,8 +306,9 @@
     UpdateThreadPriority(GetDesiredThreadPriority());
 
     // Get the task source containing the next task to execute.
-    RegisteredTaskSource task_source = delegate_->GetWork(this);
-    if (!task_source) {
+    RunIntentWithRegisteredTaskSource run_intent_with_task_source =
+        delegate_->GetWork(this);
+    if (!run_intent_with_task_source) {
       // Exit immediately if GetWork() resulted in detaching this worker.
       if (ShouldExit())
         break;
@@ -317,9 +319,10 @@
       continue;
     }
 
-    task_source = task_tracker_->RunAndPopNextTask(std::move(task_source));
+    RegisteredTaskSource task_source = task_tracker_->RunAndPopNextTask(
+        std::move(run_intent_with_task_source));
 
-    delegate_->DidRunTask(std::move(task_source));
+    delegate_->DidProcessTask(std::move(task_source));
 
     // Calling WakeUp() guarantees that this WorkerThread will run Tasks from
     // TaskSources returned by the GetWork() method of |delegate_| until it
diff --git a/base/task/thread_pool/worker_thread.h b/base/task/thread_pool/worker_thread.h
index 59cc9dd..3602054d 100644
--- a/base/task/thread_pool/worker_thread.h
+++ b/base/task/thread_pool/worker_thread.h
@@ -68,12 +68,12 @@
     virtual void OnMainEntry(const WorkerThread* worker) = 0;
 
     // Called by |worker|'s thread to get a TaskSource from which to run a Task.
-    virtual RegisteredTaskSource GetWork(WorkerThread* worker) = 0;
+    virtual RunIntentWithRegisteredTaskSource GetWork(WorkerThread* worker) = 0;
 
     // Called by the WorkerThread after it ran a Task. If the Task's
     // TaskSource should be reenqueued, it is passed to |task_source|.
     // Otherwise, |task_source| is nullptr.
-    virtual void DidRunTask(RegisteredTaskSource task_source) = 0;
+    virtual void DidProcessTask(RegisteredTaskSource task_source) = 0;
 
     // Called to determine how long to sleep before the next call to GetWork().
     // GetWork() may be called before this timeout expires if the worker's
diff --git a/base/task/thread_pool/worker_thread_stack_unittest.cc b/base/task/thread_pool/worker_thread_stack_unittest.cc
index 2f2da15..513c478b 100644
--- a/base/task/thread_pool/worker_thread_stack_unittest.cc
+++ b/base/task/thread_pool/worker_thread_stack_unittest.cc
@@ -25,10 +25,10 @@
     return WorkerThread::ThreadLabel::DEDICATED;
   }
   void OnMainEntry(const WorkerThread* worker) override {}
-  RegisteredTaskSource GetWork(WorkerThread* worker) override {
+  RunIntentWithRegisteredTaskSource GetWork(WorkerThread* worker) override {
     return nullptr;
   }
-  void DidRunTask(RegisteredTaskSource task_source) override {
+  void DidProcessTask(RegisteredTaskSource task_source) override {
     ADD_FAILURE() << "Unexpected call to DidRunTask()";
   }
   TimeDelta GetSleepTimeout() override { return TimeDelta::Max(); }
diff --git a/base/task/thread_pool/worker_thread_unittest.cc b/base/task/thread_pool/worker_thread_unittest.cc
index d98d82c..24af1148b 100644
--- a/base/task/thread_pool/worker_thread_unittest.cc
+++ b/base/task/thread_pool/worker_thread_unittest.cc
@@ -51,10 +51,10 @@
     return WorkerThread::ThreadLabel::DEDICATED;
   }
   void OnMainEntry(const WorkerThread* worker) override {}
-  RegisteredTaskSource GetWork(WorkerThread* worker) override {
+  RunIntentWithRegisteredTaskSource GetWork(WorkerThread* worker) override {
     return nullptr;
   }
-  void DidRunTask(RegisteredTaskSource task_source) override {
+  void DidProcessTask(RegisteredTaskSource task_source) override {
     ADD_FAILURE() << "Unexpected call to DidRunTask()";
   }
   TimeDelta GetSleepTimeout() override { return TimeDelta::Max(); }
@@ -116,7 +116,7 @@
     return created_sequences_;
   }
 
-  std::vector<scoped_refptr<TaskSource>> DidRunTaskSequences() {
+  std::vector<scoped_refptr<TaskSource>> DidProcessTaskSequences() {
     CheckedAutoLock auto_lock(lock_);
     return did_run_task_sources_;
   }
@@ -129,14 +129,14 @@
     TestWorkerThreadDelegate(ThreadPoolWorkerTest* outer) : outer_(outer) {}
 
     ~TestWorkerThreadDelegate() override {
-      EXPECT_FALSE(IsCallToDidRunTaskExpected());
+      EXPECT_FALSE(IsCallToDidProcessTaskExpected());
     }
 
     // WorkerThread::Delegate:
     void OnMainEntry(const WorkerThread* worker) override {
       outer_->worker_set_.Wait();
       EXPECT_EQ(outer_->worker_.get(), worker);
-      EXPECT_FALSE(IsCallToDidRunTaskExpected());
+      EXPECT_FALSE(IsCallToDidProcessTaskExpected());
 
       // Without synchronization, OnMainEntry() could be called twice without
       // generating an error.
@@ -145,8 +145,8 @@
       outer_->main_entry_called_.Signal();
     }
 
-    RegisteredTaskSource GetWork(WorkerThread* worker) override {
-      EXPECT_FALSE(IsCallToDidRunTaskExpected());
+    RunIntentWithRegisteredTaskSource GetWork(WorkerThread* worker) override {
+      EXPECT_FALSE(IsCallToDidProcessTaskExpected());
       EXPECT_EQ(outer_->worker_.get(), worker);
 
       {
@@ -183,21 +183,23 @@
           outer_->task_tracker_.WillQueueTaskSource(sequence);
       EXPECT_TRUE(registered_task_source);
 
-      ExpectCallToDidRunTask();
+      ExpectCallToDidProcessTask();
 
       {
         // Add the Sequence to the vector of created Sequences.
         CheckedAutoLock auto_lock(outer_->lock_);
         outer_->created_sequences_.push_back(sequence);
       }
-      return registered_task_source;
+      auto run_intent = registered_task_source->WillRunTask();
+      EXPECT_TRUE(run_intent);
+      return {std::move(registered_task_source), std::move(run_intent)};
     }
 
     // This override verifies that |task_source| has the expected number of
     // Tasks and adds it to |did_run_task_sources_|. Unlike a normal
-    // DidRunTask() implementation, it doesn't add |task_source| to a queue for
-    // further execution.
-    void DidRunTask(RegisteredTaskSource registered_task_source) override {
+    // DidProcessTask() implementation, it doesn't add |task_source| to a queue
+    // for further execution.
+    void DidProcessTask(RegisteredTaskSource registered_task_source) override {
       {
         CheckedAutoLock auto_lock(expect_did_run_task_lock_);
         EXPECT_TRUE(expect_did_run_task_);
@@ -215,9 +217,10 @@
         // Verify the number of Tasks in |registered_task_source|.
         auto transaction(registered_task_source->BeginTransaction());
         for (int i = 0; i < outer_->TasksPerSequence() - 1; ++i) {
-          EXPECT_TRUE(transaction.TakeTask());
+          EXPECT_TRUE(
+              transaction.TakeTask(registered_task_source->WillRunTask()));
           EXPECT_EQ(i == outer_->TasksPerSequence() - 2,
-                    !transaction.DidRunTask());
+                    !transaction.DidProcessTask(true));
         }
 
         scoped_refptr<TaskSource> task_source =
@@ -233,14 +236,14 @@
     }
 
    private:
-    // Expect a call to DidRunTask() before the next call to any other method of
-    // this delegate.
-    void ExpectCallToDidRunTask() {
+    // Expect a call to DidProcessTask() before the next call to any other
+    // method of this delegate.
+    void ExpectCallToDidProcessTask() {
       CheckedAutoLock auto_lock(expect_did_run_task_lock_);
       expect_did_run_task_ = true;
     }
 
-    bool IsCallToDidRunTaskExpected() const {
+    bool IsCallToDidProcessTaskExpected() const {
       CheckedAutoLock auto_lock(expect_did_run_task_lock_);
       return expect_did_run_task_;
     }
@@ -250,7 +253,8 @@
     // Synchronizes access to |expect_did_run_task_|.
     mutable CheckedLock expect_did_run_task_lock_;
 
-    // Whether the next method called on this delegate should be DidRunTask().
+    // Whether the next method called on this delegate should be
+    // DidProcessTask().
     bool expect_did_run_task_ = false;
 
     DISALLOW_COPY_AND_ASSIGN(TestWorkerThreadDelegate);
@@ -286,7 +290,7 @@
   // Sequences created by GetWork().
   std::vector<scoped_refptr<TaskSource>> created_sequences_;
 
-  // Sequences passed to DidRunTask().
+  // Sequences passed to DidProcessTask().
   std::vector<scoped_refptr<TaskSource>> did_run_task_sources_;
 
   // Number of times that RunTaskCallback() has been called.
@@ -322,11 +326,11 @@
 
   // If Sequences returned by GetWork() contain more than one Task, they aren't
   // empty after the worker pops Tasks from them and thus should be returned to
-  // DidRunTask().
+  // DidProcessTask().
   if (TasksPerSequence() > 1)
-    EXPECT_EQ(CreatedTaskSources(), DidRunTaskSequences());
+    EXPECT_EQ(CreatedTaskSources(), DidProcessTaskSequences());
   else
-    EXPECT_TRUE(DidRunTaskSequences().empty());
+    EXPECT_TRUE(DidProcessTaskSequences().empty());
 }
 
 // Verify that when GetWork() alternates between returning a Sequence and
@@ -353,11 +357,11 @@
 
     // If Sequences returned by GetWork() contain more than one Task, they
     // aren't empty after the worker pops Tasks from them and thus should be
-    // returned to DidRunTask().
+    // returned to DidProcessTask().
     if (TasksPerSequence() > 1)
-      EXPECT_EQ(CreatedTaskSources(), DidRunTaskSequences());
+      EXPECT_EQ(CreatedTaskSources(), DidProcessTaskSequences());
     else
-      EXPECT_TRUE(DidRunTaskSequences().empty());
+      EXPECT_TRUE(DidProcessTaskSequences().empty());
   }
 }
 
@@ -426,7 +430,7 @@
 
   ~ControllableCleanupDelegate() override { controls_->destroyed_.Signal(); }
 
-  RegisteredTaskSource GetWork(WorkerThread* worker) override {
+  RunIntentWithRegisteredTaskSource GetWork(WorkerThread* worker) override {
     EXPECT_TRUE(controls_->expect_get_work_);
 
     // Sends one item of work to signal |work_processed_|. On subsequent calls,
@@ -461,10 +465,11 @@
     auto registered_task_source =
         task_tracker_->WillQueueTaskSource(std::move(sequence));
     EXPECT_TRUE(registered_task_source);
-    return registered_task_source;
+    auto run_intent = registered_task_source->WillRunTask();
+    return {std::move(registered_task_source), std::move(run_intent)};
   }
 
-  void DidRunTask(RegisteredTaskSource) override {}
+  void DidProcessTask(RegisteredTaskSource) override {}
 
   void OnMainExit(WorkerThread* worker) override {
     controls_->exited_.Signal();
@@ -707,7 +712,7 @@
   void OnMainEntry(const WorkerThread* worker) override {
     VerifyThreadPriority();
   }
-  RegisteredTaskSource GetWork(WorkerThread* worker) override {
+  RunIntentWithRegisteredTaskSource GetWork(WorkerThread* worker) override {
     VerifyThreadPriority();
     priority_verified_in_get_work_event_.Signal();
     return nullptr;
diff --git a/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4TestRule.java b/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4TestRule.java
index e949d645..415378b 100644
--- a/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4TestRule.java
+++ b/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4TestRule.java
@@ -36,17 +36,16 @@
 
                 InMemorySharedPreferencesContext context =
                         BaseChromiumAndroidJUnitRunner.sInMemorySharedPreferencesContext;
-                if (context != null) {
-                    // Reset Application context in case any tests have replaced it.
-                    ContextUtils.initApplicationContextForTests(context);
-                    // Ensure all tests start with empty (InMemory)SharedPreferences.
-                    context.clearSharedPreferences();
-                    // Delete any files that leak state between tests.
-                    clearDataDirectory(context);
-                } else {
-                    // Delete any files that leak state between tests.
-                    clearDataDirectory(InstrumentationRegistry.getTargetContext());
+                if (context == null) {
+                    throw new IllegalStateException("BaseJUnit4TestRule requires that you use "
+                            + "BaseChromiumAndroidJUnitRunner (or a subclass)");
                 }
+                // Reset Application context in case any tests have replaced it.
+                ContextUtils.initApplicationContextForTests(context);
+                // Ensure all tests start with empty (InMemory)SharedPreferences.
+                context.clearSharedPreferences();
+                // Delete any files that leak state between tests.
+                clearDataDirectory(context);
 
                 base.evaluate();
 
diff --git a/base/test/scoped_task_environment.cc b/base/test/scoped_task_environment.cc
index bd9e18f..4a03e612 100644
--- a/base/test/scoped_task_environment.cc
+++ b/base/test/scoped_task_environment.cc
@@ -4,6 +4,7 @@
 
 #include "base/test/scoped_task_environment.h"
 
+#include <algorithm>
 #include <memory>
 
 #include "base/bind_helpers.h"
@@ -93,6 +94,51 @@
 
 }  // namespace
 
+class ScopedTaskEnvironment::TestTaskTracker
+    : public internal::ThreadPoolImpl::TaskTrackerImpl {
+ public:
+  TestTaskTracker();
+
+  // Allow running tasks. Returns whether tasks were previously allowed to run.
+  bool AllowRunTasks();
+
+  // Disallow running tasks. Returns true on success; success requires there to
+  // be no tasks currently running. Returns false if >0 tasks are currently
+  // running. Prior to returning false, it will attempt to block until at least
+  // one task has completed (in an attempt to avoid callers busy-looping
+  // DisallowRunTasks() calls with the same set of slowly ongoing tasks). This
+  // block attempt will also have a short timeout (in an attempt to prevent the
+  // fallout of blocking: if the only task remaining is blocked on the main
+  // thread, waiting for it to complete results in a deadlock...).
+  bool DisallowRunTasks();
+
+ private:
+  friend class ScopedTaskEnvironment;
+
+  // internal::ThreadPoolImpl::TaskTrackerImpl:
+  void RunOrSkipTask(internal::Task task,
+                     internal::TaskSource* sequence,
+                     const TaskTraits& traits,
+                     bool can_run_task) override;
+
+  // Synchronizes accesses to members below.
+  Lock lock_;
+
+  // True if running tasks is allowed.
+  bool can_run_tasks_ GUARDED_BY(lock_) = true;
+
+  // Signaled when |can_run_tasks_| becomes true.
+  ConditionVariable can_run_tasks_cv_ GUARDED_BY(lock_);
+
+  // Signaled when a task is completed.
+  ConditionVariable task_completed_ GUARDED_BY(lock_);
+
+  // Number of tasks that are currently running.
+  int num_tasks_running_ GUARDED_BY(lock_) = 0;
+
+  DISALLOW_COPY_AND_ASSIGN(TestTaskTracker);
+};
+
 class ScopedTaskEnvironment::MockTimeDomain
     : public sequence_manager::TimeDomain,
       public TickClock {
@@ -218,7 +264,9 @@
 
     if (!fast_forward_cap.is_max()) {
       AutoLock lock(now_ticks_lock_);
-      now_ticks_ = fast_forward_cap;
+      // It's possible that Now() is already beyond |fast_forward_cap| when the
+      // caller nests multiple FastForwardBy() calls.
+      now_ticks_ = std::max(now_ticks_, fast_forward_cap);
     }
 
     return false;
@@ -251,51 +299,6 @@
 ScopedTaskEnvironment::MockTimeDomain*
     ScopedTaskEnvironment::MockTimeDomain::current_mock_time_domain_ = nullptr;
 
-class ScopedTaskEnvironment::TestTaskTracker
-    : public internal::ThreadPoolImpl::TaskTrackerImpl {
- public:
-  TestTaskTracker();
-
-  // Allow running tasks.
-  void AllowRunTasks();
-
-  // Disallow running tasks. Returns true on success; success requires there to
-  // be no tasks currently running. Returns false if >0 tasks are currently
-  // running. Prior to returning false, it will attempt to block until at least
-  // one task has completed (in an attempt to avoid callers busy-looping
-  // DisallowRunTasks() calls with the same set of slowly ongoing tasks). This
-  // block attempt will also have a short timeout (in an attempt to prevent the
-  // fallout of blocking: if the only task remaining is blocked on the main
-  // thread, waiting for it to complete results in a deadlock...).
-  bool DisallowRunTasks();
-
- private:
-  friend class ScopedTaskEnvironment;
-
-  // internal::ThreadPoolImpl::TaskTrackerImpl:
-  void RunOrSkipTask(internal::Task task,
-                     internal::TaskSource* sequence,
-                     const TaskTraits& traits,
-                     bool can_run_task) override;
-
-  // Synchronizes accesses to members below.
-  Lock lock_;
-
-  // True if running tasks is allowed.
-  bool can_run_tasks_ GUARDED_BY(lock_) = true;
-
-  // Signaled when |can_run_tasks_| becomes true.
-  ConditionVariable can_run_tasks_cv_ GUARDED_BY(lock_);
-
-  // Signaled when a task is completed.
-  ConditionVariable task_completed_ GUARDED_BY(lock_);
-
-  // Number of tasks that are currently running.
-  int num_tasks_running_ GUARDED_BY(lock_) = 0;
-
-  DISALLOW_COPY_AND_ASSIGN(TestTaskTracker);
-};
-
 ScopedTaskEnvironment::ScopedTaskEnvironment(
     MainThreadType main_thread_type,
     ThreadPoolExecutionMode thread_pool_execution_mode,
@@ -305,6 +308,7 @@
     trait_helpers::NotATraitTag)
     : main_thread_type_(main_thread_type),
       thread_pool_execution_mode_(thread_pool_execution_mode),
+      threading_mode_(threading_mode),
       subclass_creates_default_taskrunner_(subclass_creates_default_taskrunner),
       sequence_manager_(
           CreateSequenceManagerForMainThreadType(main_thread_type)),
@@ -344,7 +348,7 @@
     CompleteInitialization();
   }
 
-  if (threading_mode != ThreadingMode::MAIN_THREAD_ONLY)
+  if (threading_mode_ != ThreadingMode::MAIN_THREAD_ONLY)
     InitializeThreadPool();
 
   if (thread_pool_execution_mode_ == ThreadPoolExecutionMode::QUEUED &&
@@ -387,7 +391,6 @@
   task_tracker_ = task_tracker.get();
   ThreadPoolInstance::Set(std::make_unique<internal::ThreadPoolImpl>(
       "ScopedTaskEnvironment", std::move(task_tracker)));
-  thread_pool_ = ThreadPoolInstance::Get();
   ThreadPoolInstance::Get()->Start(init_params);
 }
 
@@ -414,13 +417,14 @@
 }
 
 void ScopedTaskEnvironment::DestroyThreadPool() {
-  if (!thread_pool_)
+  if (threading_mode_ == ThreadingMode::MAIN_THREAD_ONLY)
     return;
+
   // Ideally this would RunLoop().RunUntilIdle() here to catch any errors or
   // infinite post loop in the remaining work but this isn't possible right now
   // because base::~MessageLoop() didn't use to do this and adding it here would
   // make the migration away from MessageLoop that much harder.
-  CHECK_EQ(ThreadPoolInstance::Get(), thread_pool_);
+
   // Without FlushForTesting(), DeleteSoon() and ReleaseSoon() tasks could be
   // skipped, resulting in memory leaks.
   task_tracker_->AllowRunTasks();
@@ -508,6 +512,8 @@
   // This can also be simplified even further once TaskTracker becomes directly
   // aware of main thread tasks. https://crbug.com/660078.
 
+  const bool could_run_tasks = task_tracker_->AllowRunTasks();
+
   for (;;) {
     task_tracker_->AllowRunTasks();
 
@@ -555,9 +561,9 @@
   }
 
   // The above loop always ends with running tasks being disallowed. Re-enable
-  // parallel execution before returning unless in
-  // ThreadPoolExecutionMode::QUEUED.
-  if (thread_pool_execution_mode_ != ThreadPoolExecutionMode::QUEUED)
+  // parallel execution before returning if it was allowed at the beginning of
+  // this call.
+  if (could_run_tasks)
     task_tracker_->AllowRunTasks();
 }
 
@@ -624,10 +630,12 @@
       can_run_tasks_cv_(&lock_),
       task_completed_(&lock_) {}
 
-void ScopedTaskEnvironment::TestTaskTracker::AllowRunTasks() {
+bool ScopedTaskEnvironment::TestTaskTracker::AllowRunTasks() {
   AutoLock auto_lock(lock_);
+  const bool could_run_tasks = can_run_tasks_;
   can_run_tasks_ = true;
   can_run_tasks_cv_.Broadcast();
+  return could_run_tasks;
 }
 
 bool ScopedTaskEnvironment::TestTaskTracker::DisallowRunTasks() {
diff --git a/base/test/scoped_task_environment.h b/base/test/scoped_task_environment.h
index c094d87..cc205a90 100644
--- a/base/test/scoped_task_environment.h
+++ b/base/test/scoped_task_environment.h
@@ -22,7 +22,6 @@
 
 class Clock;
 class FileDescriptorWatcher;
-class ThreadPoolInstance;
 class TickClock;
 
 namespace test {
@@ -102,13 +101,13 @@
   // Note that this is irrelevant (and ignored) under
   // ThreadingMode::MAIN_THREAD_ONLY
   enum class ThreadPoolExecutionMode {
-    // Thread pool tasks are queued and only executed when RunUntilIdle() is
-    // explicitly
-    // called.
+    // Thread pool tasks are queued and only executed when RunUntilIdle(),
+    // FastForwardBy(), or FastForwardUntilNoTasksRemain() are explicitly
+    // called. Note: RunLoop::Run() does *not* unblock the ThreadPool in this
+    // mode (it strictly runs only the main thread).
     QUEUED,
     // Thread pool tasks run as they are posted. RunUntilIdle() can still be
-    // used to block
-    // until done.
+    // used to block until done.
     ASYNC,
     DEFAULT = ASYNC
   };
@@ -197,8 +196,40 @@
 
   // Only valid for instances with a MOCK_TIME MainThreadType. Fast-forwards
   // virtual time by |delta|, causing all tasks on the main thread with a
-  // remaining delay less than or equal to |delta| to be executed before this
-  // returns. |delta| must be non-negative.
+  // remaining delay less than or equal to |delta| to be executed in their
+  // natural order before this returns. |delta| must be non-negative. Upon
+  // returning from this method, NowTicks() will be >= the initial |NowTicks() +
+  // delta|. It is guaranteed to be == iff tasks executed in this
+  // FastForwardBy() didn't result in nested calls to time-advancing-methods.
+  //
+  // Nesting FastForwardBy() calls is fairly rare but here's what will happen if
+  // you do: Each FastForwardBy() call will set a goal equal to |NowTicks() +
+  // delta|, how far the combined nesting calls reach depends on the current
+  // NowTicks() at the time each nesting fast-forward call is made.
+  //
+  // e.g. nesting a FastForwardBy(2ms) from a 1ms delayed task running from a
+  // FastForwardBy(1ms) will:
+  //   FastForwardBy(1ms)
+  //   ================
+  //                  FastForwardBy(2ms)
+  //                  ================================
+  //   Result: NowTicks() is 3ms further in the future
+  //
+  // but, nesting the same FastForwardBy(2ms) from an immediate task running
+  // from the same FastForwardBy(1ms) would:
+  //   FastForwardBy(1ms)
+  //   ================
+  //    FastForwardBy(2ms)
+  //    ================================
+  //   Result: NowTicks() is 2ms further in the future
+  //
+  // and if the initial call was instead a FastForwardBy(5ms), we'd get:
+  //   FastForwardBy(5ms)                             (cover remaining delta)
+  //   ================                               ==========================
+  //                  FastForwardBy(2ms)
+  //                  ================================
+  //   Result: NowTicks() is 5ms further in the future.
+  //
   // TODO(gab): Make this apply to ThreadPool delayed tasks as well
   // (currently only main thread time is mocked).
   void FastForwardBy(TimeDelta delta);
@@ -269,8 +300,8 @@
   void NotifyDestructionObserversAndReleaseSequenceManager();
 
  private:
-  class MockTimeDomain;
   class TestTaskTracker;
+  class MockTimeDomain;
 
   void InitializeThreadPool();
   void DestroyThreadPool();
@@ -287,7 +318,8 @@
                         trait_helpers::NotATraitTag tag);
 
   const MainThreadType main_thread_type_;
-  ThreadPoolExecutionMode thread_pool_execution_mode_;
+  const ThreadPoolExecutionMode thread_pool_execution_mode_;
+  const ThreadingMode threading_mode_;
   const bool subclass_creates_default_taskrunner_;
 
   std::unique_ptr<sequence_manager::SequenceManager> sequence_manager_;
@@ -304,9 +336,7 @@
   std::unique_ptr<FileDescriptorWatcher> file_descriptor_watcher_;
 #endif
 
-  const ThreadPoolInstance* thread_pool_ = nullptr;
-
-  // Owned by |thread_pool_|.
+  // Owned by the ThreadPoolInstance.
   TestTaskTracker* task_tracker_ = nullptr;
 
   // Ensures destruction of lazy TaskRunners when this is destroyed.
diff --git a/base/test/scoped_task_environment_unittest.cc b/base/test/scoped_task_environment_unittest.cc
index 22de959..145ab886 100644
--- a/base/test/scoped_task_environment_unittest.cc
+++ b/base/test/scoped_task_environment_unittest.cc
@@ -432,6 +432,30 @@
   EXPECT_EQ(2000, run_count.load(std::memory_order_relaxed));
 }
 
+TEST_F(ScopedTaskEnvironmentTest, NestedFastForwardBy) {
+  ScopedTaskEnvironment scoped_task_environment(
+      ScopedTaskEnvironment::MainThreadType::MOCK_TIME);
+
+  constexpr TimeDelta kDelayPerTask = TimeDelta::FromMilliseconds(1);
+  const TimeTicks start_time = scoped_task_environment.NowTicks();
+
+  int max_nesting_level = 0;
+
+  RepeatingClosure post_fast_forwarding_task;
+  post_fast_forwarding_task = BindLambdaForTesting([&]() {
+    if (max_nesting_level < 5) {
+      ++max_nesting_level;
+      ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+          FROM_HERE, post_fast_forwarding_task, kDelayPerTask);
+      scoped_task_environment.FastForwardBy(kDelayPerTask);
+    }
+  });
+  post_fast_forwarding_task.Run();
+
+  EXPECT_EQ(max_nesting_level, 5);
+  EXPECT_EQ(scoped_task_environment.NowTicks(), start_time + kDelayPerTask * 5);
+}
+
 TEST_F(ScopedTaskEnvironmentTest, CrossThreadTaskPostingDoesntAffectMockTime) {
   ScopedTaskEnvironment scoped_task_environment(
       ScopedTaskEnvironment::MainThreadType::MOCK_TIME,
diff --git a/base/threading/platform_thread_win.cc b/base/threading/platform_thread_win.cc
index 63b9473..e7733d9 100644
--- a/base/threading/platform_thread_win.cc
+++ b/base/threading/platform_thread_win.cc
@@ -17,6 +17,7 @@
 #include "base/threading/thread_restrictions.h"
 #include "base/win/scoped_handle.h"
 #include "base/win/windows_version.h"
+#include "build/build_config.h"
 
 #include <windows.h>
 
@@ -115,6 +116,14 @@
   unsigned int flags = 0;
   if (stack_size > 0) {
     flags = STACK_SIZE_PARAM_IS_A_RESERVATION;
+#if defined(ARCH_CPU_32_BITS)
+  } else {
+    // The process stack size is increased to give spaces to |RendererMain| in
+    // |chrome/BUILD.gn|, but keep the default stack size of other threads to
+    // 1MB for the address space pressure.
+    flags = STACK_SIZE_PARAM_IS_A_RESERVATION;
+    stack_size = 1024 * 1024;
+#endif
   }
 
   ThreadParams* params = new ThreadParams;
diff --git a/build/android/incremental_install/installer.py b/build/android/incremental_install/installer.py
index 95475b16..eec18e9 100755
--- a/build/android/incremental_install/installer.py
+++ b/build/android/incremental_install/installer.py
@@ -185,6 +185,24 @@
                       'To do so, use GN arg:\n'
                       '    disable_incremental_isolated_processes=true')
 
+    target_sdk_version = int(apk.GetTargetSdkVersion())
+    # Beta Q builds apply whitelist to targetSdk=28 as well.
+    if target_sdk_version >= 28 and device.build_version_sdk >= 29:
+      apis_allowed = ''.join(
+          device.RunShellCommand(
+              ['settings', 'get', 'global', 'hidden_api_policy'],
+              check_return=True))
+      if apis_allowed.strip() not in '01':
+        msg = """\
+Cannot use incremental installs on Android Q+ without first enabling access to
+non-SDK interfaces (https://developer.android.com/preview/non-sdk-q).
+
+To enable access:
+   adb -s {0} shell settings put global hidden_api_policy 0
+To restore back to default:
+   adb -s {0} shell settings delete global hidden_api_policy"""
+        raise Exception(msg.format(device.serial))
+
   cache_path = _DeviceCachePath(device)
   def restore_cache():
     if not enable_device_cache:
diff --git a/build/chromeos/test_runner.py b/build/chromeos/test_runner.py
index 147221d..b050a8e 100755
--- a/build/chromeos/test_runner.py
+++ b/build/chromeos/test_runner.py
@@ -44,7 +44,7 @@
     CHROMITE_PATH, 'bin', 'cros_run_test'))
 
 # GN target that corresponds to the cros browser sanity test.
-SANITY_TEST_TARGET = 'cros_vm_sanity_test'
+SANITY_TEST_TARGET = 'cros_browser_sanity_test'
 
 # This is a special hostname that resolves to a different DUT in the lab
 # depending on which lab machine you're on.
diff --git a/build/config/fuchsia/package.gni b/build/config/fuchsia/package.gni
index dcea6cda..1395c61 100644
--- a/build/config/fuchsia/package.gni
+++ b/build/config/fuchsia/package.gni
@@ -11,10 +11,9 @@
 # package_name_override: Specifies the name of the package to generate,
 #     if different than |target_name|.
 # binary: The executable target which should be launched.
-# sandbox_policy: A path to the sandbox_policy that will be used.
-#     "testonly" targets default to using
-#     //build/config/fuchsia/testing_sandbox_policy by default.
-#     Non-test targets must explicitly specify a |sandbox_policy|.
+# manifest: A path to the manifest that will be used.
+#     "testonly" targets default to using //build/config/fuchsia/tests.cmx.
+#     Non-test targets must explicitly specify a |manifest|.
 # deps: Additional targets to build and include in the package (optional).
 template("fuchsia_package") {
   pkg = {
@@ -26,9 +25,9 @@
       package_name = invoker.target_name
     }
 
-    if (!defined(sandbox_policy)) {
+    if (!defined(manifest)) {
       assert(testonly == true)
-      sandbox_policy = "//build/config/fuchsia/testing_sandbox_policy"
+      manifest = "//build/config/fuchsia/tests.cmx"
     }
   }
   assert(defined(pkg.binary))
@@ -64,7 +63,7 @@
 
     inputs = [
       _runtime_deps_file,
-      pkg.sandbox_policy,
+      pkg.manifest,
     ]
 
     outputs = [
@@ -92,8 +91,8 @@
       pkg.package_name,
       "--app-filename",
       get_label_info(pkg.binary, "name"),
-      "--sandbox-policy-path",
-      rebase_path(pkg.sandbox_policy, root_build_dir),
+      "--manifest-input-path",
+      rebase_path(pkg.manifest, root_build_dir),
       "--runtime-deps-file",
       rebase_path(_runtime_deps_file, root_build_dir),
       "--depfile-path",
diff --git a/build/config/fuchsia/prepare_package_inputs.py b/build/config/fuchsia/prepare_package_inputs.py
index 2ba51e8..c3e4d37 100644
--- a/build/config/fuchsia/prepare_package_inputs.py
+++ b/build/config/fuchsia/prepare_package_inputs.py
@@ -145,10 +145,10 @@
     cmx_file_path = os.path.join(os.path.dirname(args.manifest_path),
                                  args.app_name + '.cmx')
     with open(cmx_file_path, 'w') as component_manifest_file:
-      component_manifest = {
+      component_manifest = json.load(open(args.manifest_input_path, 'r'))
+      component_manifest.update({
           'program': { 'binary': args.app_filename },
-          'sandbox': json.load(open(args.sandbox_policy_path, 'r')),
-      }
+      })
       json.dump(component_manifest, component_manifest_file)
 
       manifest.write('meta/%s=%s\n' %
@@ -172,8 +172,8 @@
   parser.add_argument('--app-name', required=True, help='Package name')
   parser.add_argument('--app-filename', required=True,
       help='Path to the main application binary relative to the output dir.')
-  parser.add_argument('--sandbox-policy-path', required=True,
-      help='Path to the sandbox policy file relative to the output dir.')
+  parser.add_argument('--manifest-input-path', required=True,
+      help='Path to the manifest file relative to the output dir.')
   parser.add_argument('--runtime-deps-file', required=True,
       help='File with the list of runtime dependencies.')
   parser.add_argument('--depfile-path', required=True,
diff --git a/build/config/fuchsia/testing_sandbox_policy b/build/config/fuchsia/tests.cmx
similarity index 86%
rename from build/config/fuchsia/testing_sandbox_policy
rename to build/config/fuchsia/tests.cmx
index 3763e4c..4f0e768 100644
--- a/build/config/fuchsia/testing_sandbox_policy
+++ b/build/config/fuchsia/tests.cmx
@@ -1,11 +1,16 @@
 {
-  "features": [
+  "sandbox": {
+    "features": [
       "isolated-persistent-storage",
       "root-ssl-certificates",
       "system-temp",
-      "vulkan" ],
-  "dev": ["null", "zero"],
-  "services": [
+      "vulkan"
+    ],
+    "dev": [
+      "null",
+      "zero"
+    ],
+    "services": [
       "fuchsia.device.NameProvider",
       "fuchsia.fonts.Provider",
       "fuchsia.logger.Log",
@@ -28,5 +33,6 @@
       "fuchsia.ui.scenic.Scenic",
       "fuchsia.vulkan.loader.Loader",
       "fuchsia.web.ContextProvider"
-  ]
+    ]
+  }
 }
diff --git a/build/config/win/BUILD.gn b/build/config/win/BUILD.gn
index 7278e72..a6c0aeaf 100644
--- a/build/config/win/BUILD.gn
+++ b/build/config/win/BUILD.gn
@@ -67,6 +67,7 @@
     "/FS",  # Preserve previous PDB behavior.
     "/bigobj",  # Some of our files are bigger than the regular limits.
     "/utf-8",  # Assume UTF-8 by default to avoid code page dependencies.
+    "/Zc:twoPhase",
   ]
 
   # Force C/C++ mode for the given GN detected file type. This is necessary
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index f8c0ef0..417e8e38 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-8908493396578343696
\ No newline at end of file
+8908406653168684048
\ No newline at end of file
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index c728ee0..a8058b5 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-8908494036510635456
\ No newline at end of file
+8908409860290660320
\ No newline at end of file
diff --git a/cc/animation/animation_host.cc b/cc/animation/animation_host.cc
index f2d85b5..b283103c 100644
--- a/cc/animation/animation_host.cc
+++ b/cc/animation/animation_host.cc
@@ -81,8 +81,7 @@
       thread_instance_(thread_instance),
       supports_scroll_animations_(false),
       needs_push_properties_(false),
-      mutator_(nullptr),
-      weak_factory_(this) {
+      mutator_(nullptr) {
   if (thread_instance_ == ThreadInstance::IMPL) {
     scroll_offset_animations_impl_ =
         std::make_unique<ScrollOffsetAnimationsImpl>(this);
diff --git a/cc/animation/animation_host.h b/cc/animation/animation_host.h
index 0e770e06..2e3eb122c 100644
--- a/cc/animation/animation_host.h
+++ b/cc/animation/animation_host.h
@@ -262,7 +262,7 @@
   bool current_frame_had_raf_ = false;
   bool next_frame_has_pending_raf_ = false;
 
-  base::WeakPtrFactory<AnimationHost> weak_factory_;
+  base::WeakPtrFactory<AnimationHost> weak_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/animation/keyframed_animation_curve.cc b/cc/animation/keyframed_animation_curve.cc
index ed44328..67147cb 100644
--- a/cc/animation/keyframed_animation_curve.cc
+++ b/cc/animation/keyframed_animation_curve.cc
@@ -541,8 +541,8 @@
   double progress =
       TransformedKeyframeProgress(keyframes_, scaled_duration(), t, i);
 
-  return gfx::Tween::SizeValueBetween(progress, keyframes_[i]->Value(),
-                                      keyframes_[i + 1]->Value());
+  return gfx::Tween::SizeFValueBetween(progress, keyframes_[i]->Value(),
+                                       keyframes_[i + 1]->Value());
 }
 
 }  // namespace cc
diff --git a/cc/animation/keyframed_animation_curve_unittest.cc b/cc/animation/keyframed_animation_curve_unittest.cc
index 4fb585c3..60fa005 100644
--- a/cc/animation/keyframed_animation_curve_unittest.cc
+++ b/cc/animation/keyframed_animation_curve_unittest.cc
@@ -1017,7 +1017,7 @@
 TEST(KeyframedAnimationCurveTest, TwoSizeKeyFrame) {
   gfx::SizeF size_a = gfx::SizeF(100, 100);
   gfx::SizeF size_b = gfx::SizeF(100, 0);
-  gfx::SizeF size_midpoint = gfx::Tween::SizeValueBetween(0.5, size_a, size_b);
+  gfx::SizeF size_midpoint = gfx::Tween::SizeFValueBetween(0.5, size_a, size_b);
   std::unique_ptr<KeyframedSizeAnimationCurve> curve(
       KeyframedSizeAnimationCurve::Create());
   curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta(), size_a, nullptr));
@@ -1037,8 +1037,10 @@
   gfx::SizeF size_a = gfx::SizeF(100, 100);
   gfx::SizeF size_b = gfx::SizeF(100, 0);
   gfx::SizeF size_c = gfx::SizeF(200, 0);
-  gfx::SizeF size_midpoint1 = gfx::Tween::SizeValueBetween(0.5, size_a, size_b);
-  gfx::SizeF size_midpoint2 = gfx::Tween::SizeValueBetween(0.5, size_b, size_c);
+  gfx::SizeF size_midpoint1 =
+      gfx::Tween::SizeFValueBetween(0.5, size_a, size_b);
+  gfx::SizeF size_midpoint2 =
+      gfx::Tween::SizeFValueBetween(0.5, size_b, size_c);
   std::unique_ptr<KeyframedSizeAnimationCurve> curve(
       KeyframedSizeAnimationCurve::Create());
   curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta(), size_a, nullptr));
diff --git a/cc/base/delayed_unique_notifier.cc b/cc/base/delayed_unique_notifier.cc
index 741bc83..3148c0f 100644
--- a/cc/base/delayed_unique_notifier.cc
+++ b/cc/base/delayed_unique_notifier.cc
@@ -18,8 +18,7 @@
     : task_runner_(task_runner),
       closure_(std::move(closure)),
       delay_(delay),
-      notification_pending_(false),
-      weak_ptr_factory_(this) {}
+      notification_pending_(false) {}
 
 DelayedUniqueNotifier::~DelayedUniqueNotifier() = default;
 
diff --git a/cc/base/delayed_unique_notifier.h b/cc/base/delayed_unique_notifier.h
index 1666987..b70de39 100644
--- a/cc/base/delayed_unique_notifier.h
+++ b/cc/base/delayed_unique_notifier.h
@@ -67,7 +67,7 @@
   base::TimeTicks next_notification_time_;
   bool notification_pending_;
 
-  base::WeakPtrFactory<DelayedUniqueNotifier> weak_ptr_factory_;
+  base::WeakPtrFactory<DelayedUniqueNotifier> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/base/unique_notifier.cc b/cc/base/unique_notifier.cc
index 52e7a498..5a3ada8 100644
--- a/cc/base/unique_notifier.cc
+++ b/cc/base/unique_notifier.cc
@@ -15,8 +15,7 @@
                                base::RepeatingClosure closure)
     : task_runner_(task_runner),
       closure_(std::move(closure)),
-      notification_pending_(false),
-      weak_ptr_factory_(this) {}
+      notification_pending_(false) {}
 
 UniqueNotifier::~UniqueNotifier() = default;
 
diff --git a/cc/base/unique_notifier.h b/cc/base/unique_notifier.h
index ad2172b4..2366b61 100644
--- a/cc/base/unique_notifier.h
+++ b/cc/base/unique_notifier.h
@@ -48,7 +48,7 @@
   base::Lock lock_;
   bool notification_pending_;
 
-  base::WeakPtrFactory<UniqueNotifier> weak_ptr_factory_;
+  base::WeakPtrFactory<UniqueNotifier> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/benchmarks/rasterize_and_record_benchmark.cc b/cc/benchmarks/rasterize_and_record_benchmark.cc
index 844f66a..b3ca388b 100644
--- a/cc/benchmarks/rasterize_and_record_benchmark.cc
+++ b/cc/benchmarks/rasterize_and_record_benchmark.cc
@@ -74,8 +74,7 @@
       record_repeat_count_(kDefaultRecordRepeatCount),
       settings_(std::move(value)),
       main_thread_benchmark_done_(false),
-      layer_tree_host_(nullptr),
-      weak_ptr_factory_(this) {
+      layer_tree_host_(nullptr) {
   base::DictionaryValue* settings = nullptr;
   settings_->GetAsDictionary(&settings);
   if (!settings)
diff --git a/cc/benchmarks/rasterize_and_record_benchmark.h b/cc/benchmarks/rasterize_and_record_benchmark.h
index efb6266b..8ca7c588 100644
--- a/cc/benchmarks/rasterize_and_record_benchmark.h
+++ b/cc/benchmarks/rasterize_and_record_benchmark.h
@@ -62,7 +62,7 @@
 
   LayerTreeHost* layer_tree_host_;
 
-  base::WeakPtrFactory<RasterizeAndRecordBenchmark> weak_ptr_factory_;
+  base::WeakPtrFactory<RasterizeAndRecordBenchmark> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/benchmarks/unittest_only_benchmark.cc b/cc/benchmarks/unittest_only_benchmark.cc
index 4e32942..efb46c6 100644
--- a/cc/benchmarks/unittest_only_benchmark.cc
+++ b/cc/benchmarks/unittest_only_benchmark.cc
@@ -14,9 +14,7 @@
 
 UnittestOnlyBenchmark::UnittestOnlyBenchmark(std::unique_ptr<base::Value> value,
                                              DoneCallback callback)
-    : MicroBenchmark(std::move(callback)),
-      create_impl_benchmark_(false),
-      weak_ptr_factory_(this) {
+    : MicroBenchmark(std::move(callback)), create_impl_benchmark_(false) {
   if (!value)
     return;
 
diff --git a/cc/benchmarks/unittest_only_benchmark.h b/cc/benchmarks/unittest_only_benchmark.h
index fa0f63d6..7ba9a9e 100644
--- a/cc/benchmarks/unittest_only_benchmark.h
+++ b/cc/benchmarks/unittest_only_benchmark.h
@@ -28,7 +28,7 @@
   void RecordImplResults(std::unique_ptr<base::Value> results);
 
   bool create_impl_benchmark_;
-  base::WeakPtrFactory<UnittestOnlyBenchmark> weak_ptr_factory_;
+  base::WeakPtrFactory<UnittestOnlyBenchmark> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/input/scrollbar_animation_controller.cc b/cc/input/scrollbar_animation_controller.cc
index 4b63b4bf..bed51a0 100644
--- a/cc/input/scrollbar_animation_controller.cc
+++ b/cc/input/scrollbar_animation_controller.cc
@@ -55,8 +55,7 @@
       show_scrollbars_on_scroll_gesture_(false),
       need_thinning_animation_(false),
       is_mouse_down_(false),
-      tickmarks_showing_(false),
-      weak_factory_(this) {}
+      tickmarks_showing_(false) {}
 
 ScrollbarAnimationController::ScrollbarAnimationController(
     ElementId scroll_element_id,
@@ -78,8 +77,7 @@
       show_scrollbars_on_scroll_gesture_(true),
       need_thinning_animation_(true),
       is_mouse_down_(false),
-      tickmarks_showing_(false),
-      weak_factory_(this) {
+      tickmarks_showing_(false) {
   vertical_controller_ = SingleScrollbarAnimationControllerThinning::Create(
       scroll_element_id, ScrollbarOrientation::VERTICAL, client,
       thinning_duration);
diff --git a/cc/input/scrollbar_animation_controller.h b/cc/input/scrollbar_animation_controller.h
index f7a26c5..67a9ed5 100644
--- a/cc/input/scrollbar_animation_controller.h
+++ b/cc/input/scrollbar_animation_controller.h
@@ -169,7 +169,7 @@
   std::unique_ptr<SingleScrollbarAnimationControllerThinning>
       horizontal_controller_;
 
-  base::WeakPtrFactory<ScrollbarAnimationController> weak_factory_;
+  base::WeakPtrFactory<ScrollbarAnimationController> weak_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/layers/texture_layer.cc b/cc/layers/texture_layer.cc
index e97162e7..4e1c2520 100644
--- a/cc/layers/texture_layer.cc
+++ b/cc/layers/texture_layer.cc
@@ -23,8 +23,7 @@
   return scoped_refptr<TextureLayer>(new TextureLayer(client));
 }
 
-TextureLayer::TextureLayer(TextureLayerClient* client)
-    : client_(client), weak_ptr_factory_(this) {}
+TextureLayer::TextureLayer(TextureLayerClient* client) : client_(client) {}
 
 TextureLayer::~TextureLayer() = default;
 
diff --git a/cc/layers/texture_layer.h b/cc/layers/texture_layer.h
index 75aa1f2..9166bd2 100644
--- a/cc/layers/texture_layer.h
+++ b/cc/layers/texture_layer.h
@@ -227,7 +227,7 @@
   // TextureLayerImpl.
   std::vector<viz::SharedBitmapId> to_unregister_bitmap_ids_;
 
-  base::WeakPtrFactory<TextureLayer> weak_ptr_factory_;
+  base::WeakPtrFactory<TextureLayer> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/mojo_embedder/async_layer_tree_frame_sink.cc b/cc/mojo_embedder/async_layer_tree_frame_sink.cc
index 0b40b20..452fe33 100644
--- a/cc/mojo_embedder/async_layer_tree_frame_sink.cc
+++ b/cc/mojo_embedder/async_layer_tree_frame_sink.cc
@@ -96,8 +96,7 @@
                             params->client_name)),
       submit_begin_frame_histogram_(GetHistogramNamed(
           "GraphicsPipeline.%s.SubmitCompositorFrameAfterBeginFrame",
-          params->client_name)),
-      weak_factory_(this) {
+          params->client_name)) {
   // We should not create hit test data provider if we want to use cc layer tree
   // to generated data.
   if (features::IsVizHitTestingSurfaceLayerEnabled())
diff --git a/cc/mojo_embedder/async_layer_tree_frame_sink.h b/cc/mojo_embedder/async_layer_tree_frame_sink.h
index 12323d4..1b176d0 100644
--- a/cc/mojo_embedder/async_layer_tree_frame_sink.h
+++ b/cc/mojo_embedder/async_layer_tree_frame_sink.h
@@ -188,7 +188,7 @@
   // Histogram metrics used to record
   // GraphicsPipeline.ClientName.SubmitCompositorFrameAfterBeginFrame
   base::HistogramBase* const submit_begin_frame_histogram_;
-  base::WeakPtrFactory<AsyncLayerTreeFrameSink> weak_factory_;
+  base::WeakPtrFactory<AsyncLayerTreeFrameSink> weak_factory_{this};
 };
 
 }  // namespace mojo_embedder
diff --git a/cc/raster/staging_buffer_pool.cc b/cc/raster/staging_buffer_pool.cc
index 5970012..b601add2 100644
--- a/cc/raster/staging_buffer_pool.cc
+++ b/cc/raster/staging_buffer_pool.cc
@@ -128,8 +128,7 @@
       free_staging_buffer_usage_in_bytes_(0),
       staging_buffer_expiration_delay_(
           base::TimeDelta::FromMilliseconds(kStagingBufferExpirationDelayMs)),
-      reduce_memory_usage_pending_(false),
-      weak_ptr_factory_(this) {
+      reduce_memory_usage_pending_(false) {
   DCHECK(worker_context_provider_);
   base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
       this, "cc::StagingBufferPool", base::ThreadTaskRunnerHandle::Get());
diff --git a/cc/raster/staging_buffer_pool.h b/cc/raster/staging_buffer_pool.h
index 4b2953b..bcea8ab 100644
--- a/cc/raster/staging_buffer_pool.h
+++ b/cc/raster/staging_buffer_pool.h
@@ -142,7 +142,7 @@
 
   std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_;
 
-  base::WeakPtrFactory<StagingBufferPool> weak_ptr_factory_;
+  base::WeakPtrFactory<StagingBufferPool> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/resources/resource_pool.cc b/cc/resources/resource_pool.cc
index 9c73860..e169cac0 100644
--- a/cc/resources/resource_pool.cc
+++ b/cc/resources/resource_pool.cc
@@ -99,8 +99,7 @@
       disallow_non_exact_reuse_(disallow_non_exact_reuse),
       tracing_id_(g_next_tracing_id.GetNext()),
       flush_evicted_resources_deadline_(base::TimeTicks::Max()),
-      clock_(base::DefaultTickClock::GetInstance()),
-      weak_ptr_factory_(this) {
+      clock_(base::DefaultTickClock::GetInstance()) {
   base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
       this, "cc::ResourcePool", task_runner_.get());
   memory_pressure_listener_.reset(
diff --git a/cc/resources/resource_pool.h b/cc/resources/resource_pool.h
index b7f2f8d..700bba9 100644
--- a/cc/resources/resource_pool.h
+++ b/cc/resources/resource_pool.h
@@ -408,7 +408,7 @@
 
   const base::TickClock* clock_;
 
-  base::WeakPtrFactory<ResourcePool> weak_ptr_factory_;
+  base::WeakPtrFactory<ResourcePool> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
index 27a2503d6e..14d250d0 100644
--- a/cc/scheduler/scheduler.cc
+++ b/cc/scheduler/scheduler.cc
@@ -787,8 +787,8 @@
             begin_main_frame_args_.on_critical_path,
             begin_main_frame_args_.frame_time);
         state_machine_.WillSendBeginMainFrame();
-        // TODO(brianderson): Pass begin_main_frame_args_ directly to client.
         client_->ScheduledActionSendBeginMainFrame(begin_main_frame_args_);
+        last_dispatched_begin_main_frame_args_ = begin_main_frame_args_;
         break;
       case SchedulerStateMachine::Action::
           NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL:
@@ -806,6 +806,7 @@
         state_machine_.WillCommit(commit_has_no_updates);
         compositor_timing_history_->WillCommit();
         client_->ScheduledActionCommit();
+        last_commit_origin_frame_args_ = last_dispatched_begin_main_frame_args_;
         break;
       }
       case SchedulerStateMachine::Action::ACTIVATE_SYNC_TREE:
@@ -813,6 +814,7 @@
         state_machine_.WillActivate();
         client_->ScheduledActionActivateSyncTree();
         compositor_timing_history_->DidActivate();
+        last_activate_origin_frame_args_ = last_commit_origin_frame_args_;
         break;
       case SchedulerStateMachine::Action::PERFORM_IMPL_SIDE_INVALIDATION:
         state_machine_.WillPerformImplSideInvalidation();
diff --git a/cc/scheduler/scheduler.h b/cc/scheduler/scheduler.h
index 4f2c05fa..d323ce1 100644
--- a/cc/scheduler/scheduler.h
+++ b/cc/scheduler/scheduler.h
@@ -222,6 +222,13 @@
 
   viz::BeginFrameAck CurrentBeginFrameAckForActiveTree() const;
 
+  const viz::BeginFrameArgs& last_dispatched_begin_main_frame_args() const {
+    return last_dispatched_begin_main_frame_args_;
+  }
+  const viz::BeginFrameArgs& last_activate_origin_frame_args() const {
+    return last_activate_origin_frame_args_;
+  }
+
   void ClearHistory();
 
  protected:
@@ -250,6 +257,17 @@
   viz::BeginFrameAck last_begin_frame_ack_;
   viz::BeginFrameArgs begin_main_frame_args_;
 
+  // For keeping track of the original BeginFrameArgs from the Main Thread
+  // that led to the corresponding action, i.e.:
+  //    BeginMainFrame => Commit => Activate => Submit
+  // So, |last_commit_origin_frame_args_| is the BeginFrameArgs that was
+  // dispatched to the main-thread, and lead to the commit to happen.
+  // |last_activate_origin_frame_args_| is then set to that BeginFrameArgs when
+  // the committed change is activated.
+  viz::BeginFrameArgs last_dispatched_begin_main_frame_args_;
+  viz::BeginFrameArgs last_commit_origin_frame_args_;
+  viz::BeginFrameArgs last_activate_origin_frame_args_;
+
   // Task posted for the deadline or drawing phase of the scheduler. This task
   // can be rescheduled e.g. when the condition for the deadline is met, it is
   // scheduled to run immediately.
diff --git a/cc/test/fake_layer_tree_frame_sink.cc b/cc/test/fake_layer_tree_frame_sink.cc
index 740b56e..66e6131 100644
--- a/cc/test/fake_layer_tree_frame_sink.cc
+++ b/cc/test/fake_layer_tree_frame_sink.cc
@@ -37,8 +37,7 @@
     : LayerTreeFrameSink(std::move(context_provider),
                          std::move(worker_context_provider),
                          base::ThreadTaskRunnerHandle::Get(),
-                         nullptr),
-      weak_ptr_factory_(this) {
+                         nullptr) {
   gpu_memory_buffer_manager_ =
       context_provider_ ? &test_gpu_memory_buffer_manager_ : nullptr;
 }
diff --git a/cc/test/fake_layer_tree_frame_sink.h b/cc/test/fake_layer_tree_frame_sink.h
index 5eb1129..915ef44 100644
--- a/cc/test/fake_layer_tree_frame_sink.h
+++ b/cc/test/fake_layer_tree_frame_sink.h
@@ -143,7 +143,7 @@
   void DidReceiveCompositorFrameAck();
 
   std::unique_ptr<viz::BeginFrameSource> begin_frame_source_;
-  base::WeakPtrFactory<FakeLayerTreeFrameSink> weak_ptr_factory_;
+  base::WeakPtrFactory<FakeLayerTreeFrameSink> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc
index d43cf62..efcd7b4 100644
--- a/cc/test/layer_tree_test.cc
+++ b/cc/test/layer_tree_test.cc
@@ -71,8 +71,7 @@
                                refresh_rate,
                                begin_frame_source),
         use_software_renderer_(use_software_renderer),
-        task_runner_(std::move(task_runner)),
-        weak_factory_(this) {}
+        task_runner_(std::move(task_runner)) {}
   ~SynchronousLayerTreeFrameSink() override = default;
 
   void set_viewport(const gfx::Rect& viewport) { viewport_ = viewport; }
@@ -130,7 +129,7 @@
   gfx::Rect viewport_;
   const bool use_software_renderer_;
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-  base::WeakPtrFactory<SynchronousLayerTreeFrameSink> weak_factory_;
+  base::WeakPtrFactory<SynchronousLayerTreeFrameSink> weak_factory_{this};
 };
 
 }  // namespace
@@ -255,15 +254,17 @@
     test_hooks_->WillSendBeginMainFrameOnThread(this);
   }
 
-  void DidSendBeginMainFrame() override {
-    LayerTreeHostImpl::DidSendBeginMainFrame();
+  void DidSendBeginMainFrame(const viz::BeginFrameArgs& args) override {
+    LayerTreeHostImpl::DidSendBeginMainFrame(args);
     test_hooks_->DidSendBeginMainFrameOnThread(this);
   }
 
   void BeginMainFrameAborted(
       CommitEarlyOutReason reason,
-      std::vector<std::unique_ptr<SwapPromise>> swap_promises) override {
-    LayerTreeHostImpl::BeginMainFrameAborted(reason, std::move(swap_promises));
+      std::vector<std::unique_ptr<SwapPromise>> swap_promises,
+      const viz::BeginFrameArgs& args) override {
+    LayerTreeHostImpl::BeginMainFrameAborted(reason, std::move(swap_promises),
+                                             args);
     test_hooks_->BeginMainFrameAbortedOnThread(this, reason);
   }
 
@@ -638,8 +639,7 @@
 
 LayerTreeTest::LayerTreeTest()
     : layer_tree_frame_sink_client_(
-          new LayerTreeTestLayerTreeFrameSinkClient(this)),
-      weak_factory_(this) {
+          new LayerTreeTestLayerTreeFrameSinkClient(this)) {
   main_thread_weak_ptr_ = weak_factory_.GetWeakPtr();
 
   // Tests should timeout quickly unless --cc-layer-tree-test-no-timeout was
diff --git a/cc/test/layer_tree_test.h b/cc/test/layer_tree_test.h
index 821cfd09d..fa47af510 100644
--- a/cc/test/layer_tree_test.h
+++ b/cc/test/layer_tree_test.h
@@ -268,7 +268,7 @@
   base::CancelableOnceClosure timeout_;
   scoped_refptr<viz::TestContextProvider> compositor_contexts_;
   base::WeakPtr<LayerTreeTest> main_thread_weak_ptr_;
-  base::WeakPtrFactory<LayerTreeTest> weak_factory_;
+  base::WeakPtrFactory<LayerTreeTest> weak_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/test/pixel_test_output_surface.cc b/cc/test/pixel_test_output_surface.cc
index a6fed43..19c62b1 100644
--- a/cc/test/pixel_test_output_surface.cc
+++ b/cc/test/pixel_test_output_surface.cc
@@ -21,14 +21,14 @@
 PixelTestOutputSurface::PixelTestOutputSurface(
     scoped_refptr<viz::ContextProvider> context_provider,
     bool flipped_output_surface)
-    : OutputSurface(std::move(context_provider)), weak_ptr_factory_(this) {
+    : OutputSurface(std::move(context_provider)) {
   capabilities_.flipped_output_surface = flipped_output_surface;
   capabilities_.supports_stencil = true;
 }
 
 PixelTestOutputSurface::PixelTestOutputSurface(
     std::unique_ptr<viz::SoftwareOutputDevice> software_device)
-    : OutputSurface(std::move(software_device)), weak_ptr_factory_(this) {
+    : OutputSurface(std::move(software_device)) {
   capabilities_.supports_stencil = true;
 }
 
diff --git a/cc/test/pixel_test_output_surface.h b/cc/test/pixel_test_output_surface.h
index 76778c5..f540541 100644
--- a/cc/test/pixel_test_output_surface.h
+++ b/cc/test/pixel_test_output_surface.h
@@ -52,7 +52,7 @@
 
   bool external_stencil_test_ = false;
   viz::OutputSurfaceClient* client_ = nullptr;
-  base::WeakPtrFactory<PixelTestOutputSurface> weak_ptr_factory_;
+  base::WeakPtrFactory<PixelTestOutputSurface> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/test/test_layer_tree_frame_sink.cc b/cc/test/test_layer_tree_frame_sink.cc
index b1afacb..94e6af8 100644
--- a/cc/test/test_layer_tree_frame_sink.cc
+++ b/cc/test/test_layer_tree_frame_sink.cc
@@ -46,8 +46,7 @@
       parent_local_surface_id_allocator_(
           new viz::ParentLocalSurfaceIdAllocator),
       client_provided_begin_frame_source_(begin_frame_source),
-      external_begin_frame_source_(this),
-      weak_ptr_factory_(this) {
+      external_begin_frame_source_(this) {
   parent_local_surface_id_allocator_->GenerateId();
 }
 
diff --git a/cc/test/test_layer_tree_frame_sink.h b/cc/test/test_layer_tree_frame_sink.h
index 5aecbc4..01c68d8 100644
--- a/cc/test/test_layer_tree_frame_sink.h
+++ b/cc/test/test_layer_tree_frame_sink.h
@@ -165,7 +165,7 @@
   // ownership of the bitmaps with these ids to avoid leaking them.
   std::set<viz::SharedBitmapId> owned_bitmaps_;
 
-  base::WeakPtrFactory<TestLayerTreeFrameSink> weak_ptr_factory_;
+  base::WeakPtrFactory<TestLayerTreeFrameSink> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/tiles/checker_image_tracker.cc b/cc/tiles/checker_image_tracker.cc
index 6eda401d..c31c7b5 100644
--- a/cc/tiles/checker_image_tracker.cc
+++ b/cc/tiles/checker_image_tracker.cc
@@ -135,8 +135,7 @@
     : image_controller_(image_controller),
       client_(client),
       enable_checker_imaging_(enable_checker_imaging),
-      min_image_bytes_to_checker_(min_image_bytes_to_checker),
-      weak_factory_(this) {}
+      min_image_bytes_to_checker_(min_image_bytes_to_checker) {}
 
 CheckerImageTracker::~CheckerImageTracker() = default;
 
diff --git a/cc/tiles/checker_image_tracker.h b/cc/tiles/checker_image_tracker.h
index ee5578f..76286899 100644
--- a/cc/tiles/checker_image_tracker.h
+++ b/cc/tiles/checker_image_tracker.h
@@ -208,7 +208,7 @@
 
   base::flat_map<PaintImage::Id, PaintImage::DecodingMode> decoding_mode_map_;
 
-  base::WeakPtrFactory<CheckerImageTracker> weak_factory_;
+  base::WeakPtrFactory<CheckerImageTracker> weak_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/tiles/decoded_image_tracker.cc b/cc/tiles/decoded_image_tracker.cc
index 5db3f19..a7aa6b4 100644
--- a/cc/tiles/decoded_image_tracker.cc
+++ b/cc/tiles/decoded_image_tracker.cc
@@ -28,8 +28,7 @@
     scoped_refptr<base::SequencedTaskRunner> task_runner)
     : image_controller_(controller),
       task_runner_(std::move(task_runner)),
-      tick_clock_(base::DefaultTickClock::GetInstance()),
-      weak_ptr_factory_(this) {
+      tick_clock_(base::DefaultTickClock::GetInstance()) {
   DCHECK(image_controller_);
 }
 
diff --git a/cc/tiles/decoded_image_tracker.h b/cc/tiles/decoded_image_tracker.h
index 4803dfa..c3bf497 100644
--- a/cc/tiles/decoded_image_tracker.h
+++ b/cc/tiles/decoded_image_tracker.h
@@ -93,7 +93,7 @@
   // Defaults to base::TimeTicks::Now(), but overrideable for testing.
   const base::TickClock* tick_clock_;
 
-  base::WeakPtrFactory<DecodedImageTracker> weak_ptr_factory_;
+  base::WeakPtrFactory<DecodedImageTracker> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/tiles/image_controller.cc b/cc/tiles/image_controller.cc
index 919be166e5..2c310ca7 100644
--- a/cc/tiles/image_controller.cc
+++ b/cc/tiles/image_controller.cc
@@ -21,8 +21,7 @@
     base::SequencedTaskRunner* origin_task_runner,
     scoped_refptr<base::SequencedTaskRunner> worker_task_runner)
     : worker_task_runner_(std::move(worker_task_runner)),
-      origin_task_runner_(origin_task_runner),
-      weak_ptr_factory_(this) {
+      origin_task_runner_(origin_task_runner) {
   weak_ptr_ = weak_ptr_factory_.GetWeakPtr();
 }
 
diff --git a/cc/tiles/image_controller.h b/cc/tiles/image_controller.h
index 2533b6e..864be4e0 100644
--- a/cc/tiles/image_controller.h
+++ b/cc/tiles/image_controller.h
@@ -151,7 +151,7 @@
   // from generating new tasks, this vector should be empty.
   std::vector<ImageDecodeRequest> orphaned_decode_requests_;
 
-  base::WeakPtrFactory<ImageController> weak_ptr_factory_;
+  base::WeakPtrFactory<ImageController> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/tiles/image_controller_unittest.cc b/cc/tiles/image_controller_unittest.cc
index 1c3e0d3b..8d34a7c 100644
--- a/cc/tiles/image_controller_unittest.cc
+++ b/cc/tiles/image_controller_unittest.cc
@@ -244,9 +244,7 @@
 
 class ImageControllerTest : public testing::Test {
  public:
-  ImageControllerTest()
-      : task_runner_(base::SequencedTaskRunnerHandle::Get()),
-        weak_ptr_factory_(this) {
+  ImageControllerTest() : task_runner_(base::SequencedTaskRunnerHandle::Get()) {
     image_ = CreateDiscardableDrawImage(gfx::Size(1, 1));
   }
   ~ImageControllerTest() override = default;
@@ -314,7 +312,7 @@
   std::unique_ptr<ImageController> controller_;
   DrawImage image_;
 
-  base::WeakPtrFactory<ImageControllerTest> weak_ptr_factory_;
+  base::WeakPtrFactory<ImageControllerTest> weak_ptr_factory_{this};
 };
 
 // Test that GetTasksForImagesAndRef does not generate task for PaintWorklet
diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc
index 6e9cce9..2374e79 100644
--- a/cc/tiles/tile_manager.cc
+++ b/cc/tiles/tile_manager.cc
@@ -402,9 +402,7 @@
                               base::Unretained(this))),
       has_scheduled_tile_tasks_(false),
       prepare_tiles_count_(0u),
-      next_tile_id_(0u),
-      task_set_finished_weak_ptr_factory_(this),
-      ready_to_draw_callback_weak_ptr_factory_(this) {}
+      next_tile_id_(0u) {}
 
 TileManager::~TileManager() {
   FinishTasksAndCleanUp();
diff --git a/cc/tiles/tile_manager.h b/cc/tiles/tile_manager.h
index 015ce53..72c6209 100644
--- a/cc/tiles/tile_manager.h
+++ b/cc/tiles/tile_manager.h
@@ -473,9 +473,10 @@
   // different. The |task_set_finished_weak_ptr_factory_| is invalidated any
   // time new tasks are scheduled, preventing a race when the callback has
   // been scheduled but not yet executed.
-  base::WeakPtrFactory<TileManager> task_set_finished_weak_ptr_factory_;
+  base::WeakPtrFactory<TileManager> task_set_finished_weak_ptr_factory_{this};
   // The |ready_to_draw_callback_weak_ptr_factory_| is never invalidated.
-  base::WeakPtrFactory<TileManager> ready_to_draw_callback_weak_ptr_factory_;
+  base::WeakPtrFactory<TileManager> ready_to_draw_callback_weak_ptr_factory_{
+      this};
 };
 
 }  // namespace cc
diff --git a/cc/trees/image_animation_controller.cc b/cc/trees/image_animation_controller.cc
index eb92e3b..a7e1ebf 100644
--- a/cc/trees/image_animation_controller.cc
+++ b/cc/trees/image_animation_controller.cc
@@ -454,7 +454,7 @@
 ImageAnimationController::InvalidationScheduler::InvalidationScheduler(
     base::SingleThreadTaskRunner* task_runner,
     Client* client)
-    : task_runner_(task_runner), client_(client), weak_factory_(this) {
+    : task_runner_(task_runner), client_(client) {
   DCHECK(task_runner_->BelongsToCurrentThread());
 }
 
diff --git a/cc/trees/image_animation_controller.h b/cc/trees/image_animation_controller.h
index a95ec124..1f11870 100644
--- a/cc/trees/image_animation_controller.h
+++ b/cc/trees/image_animation_controller.h
@@ -267,7 +267,7 @@
     // The time at which the next animation is expected to run.
     base::TimeTicks next_animation_time_;
 
-    base::WeakPtrFactory<InvalidationScheduler> weak_factory_;
+    base::WeakPtrFactory<InvalidationScheduler> weak_factory_{this};
   };
 
   // The AnimationState for images is persisted until they are cleared on
diff --git a/cc/trees/layer_tree_frame_sink.cc b/cc/trees/layer_tree_frame_sink.cc
index 71ed277..34ac5b7d 100644
--- a/cc/trees/layer_tree_frame_sink.cc
+++ b/cc/trees/layer_tree_frame_sink.cc
@@ -48,8 +48,7 @@
     : context_provider_(std::move(context_provider)),
       worker_context_provider_(std::move(worker_context_provider)),
       compositor_task_runner_(std::move(compositor_task_runner)),
-      gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
-      weak_ptr_factory_(this) {
+      gpu_memory_buffer_manager_(gpu_memory_buffer_manager) {
   DETACH_FROM_THREAD(thread_checker_);
 }
 
diff --git a/cc/trees/layer_tree_frame_sink.h b/cc/trees/layer_tree_frame_sink.h
index 7a0444c6..68b97347 100644
--- a/cc/trees/layer_tree_frame_sink.h
+++ b/cc/trees/layer_tree_frame_sink.h
@@ -155,7 +155,7 @@
 
  private:
   THREAD_CHECKER(thread_checker_);
-  base::WeakPtrFactory<LayerTreeFrameSink> weak_ptr_factory_;
+  base::WeakPtrFactory<LayerTreeFrameSink> weak_ptr_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index f532adc..ed1ab1a 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -132,8 +132,7 @@
       id_(s_layer_tree_host_sequence_number.GetNext() + 1),
       task_graph_runner_(params.task_graph_runner),
       event_listener_properties_(),
-      mutator_host_(params.mutator_host),
-      defer_main_frame_update_weak_ptr_factory_(this) {
+      mutator_host_(params.mutator_host) {
   DCHECK(task_graph_runner_);
   DCHECK(!settings_.enable_checker_imaging || image_worker_task_runner_);
 
diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h
index 22074a2a..558fa12 100644
--- a/cc/trees/layer_tree_host.h
+++ b/cc/trees/layer_tree_host.h
@@ -878,7 +878,8 @@
 
   // Used to vend weak pointers to LayerTreeHost to ScopedDeferMainFrameUpdate
   // objects.
-  base::WeakPtrFactory<LayerTreeHost> defer_main_frame_update_weak_ptr_factory_;
+  base::WeakPtrFactory<LayerTreeHost> defer_main_frame_update_weak_ptr_factory_{
+      this};
 };
 
 }  // namespace cc
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index ff2912a..952708db4 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -360,8 +360,7 @@
       is_animating_for_snap_(false),
       paint_image_generator_client_id_(PaintImage::GetNextGeneratorClientId()),
       scrollbar_controller_(std::make_unique<ScrollbarController>(this)),
-      scroll_gesture_did_end_(false),
-      weak_factory_(this) {
+      scroll_gesture_did_end_(false) {
   DCHECK(mutator_host_);
   mutator_host_->SetMutatorHostClient(this);
 
@@ -431,7 +430,8 @@
 
 void LayerTreeHostImpl::BeginMainFrameAborted(
     CommitEarlyOutReason reason,
-    std::vector<std::unique_ptr<SwapPromise>> swap_promises) {
+    std::vector<std::unique_ptr<SwapPromise>> swap_promises,
+    const viz::BeginFrameArgs& args) {
   // If the begin frame data was handled, then scroll and scale set was applied
   // by the main thread, so the active tree needs to be updated as if these sent
   // values were applied and committed.
@@ -2177,15 +2177,15 @@
   ui::LatencyInfo& new_latency_info = metadata.latency_info.back();
   if (CommitToActiveTree()) {
     new_latency_info.AddLatencyNumberWithTimestamp(
-        ui::LATENCY_BEGIN_FRAME_UI_COMPOSITOR_COMPONENT, frame_time, 1);
+        ui::LATENCY_BEGIN_FRAME_UI_COMPOSITOR_COMPONENT, frame_time);
   } else {
     new_latency_info.AddLatencyNumberWithTimestamp(
-        ui::LATENCY_BEGIN_FRAME_RENDERER_COMPOSITOR_COMPONENT, frame_time, 1);
+        ui::LATENCY_BEGIN_FRAME_RENDERER_COMPOSITOR_COMPONENT, frame_time);
 
     base::TimeTicks draw_time = base::TimeTicks::Now();
     for (auto& latency : metadata.latency_info) {
       latency.AddLatencyNumberWithTimestamp(
-          ui::INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT, draw_time, 1);
+          ui::INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT, draw_time);
     }
   }
   ui::LatencyInfo::TraceIntermediateFlowEvents(metadata.latency_info,
diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h
index ced7d76..232179b 100644
--- a/cc/trees/layer_tree_host_impl.h
+++ b/cc/trees/layer_tree_host_impl.h
@@ -200,6 +200,9 @@
     bool has_no_damage = false;
     bool may_contain_video = false;
     viz::BeginFrameAck begin_frame_ack;
+    // The original BeginFrameArgs that triggered the latest update from the
+    // main thread.
+    viz::BeginFrameArgs origin_begin_main_frame_args;
   };
 
   // A struct of data for a single UIResource, including the backing
@@ -323,10 +326,11 @@
   }
 
   virtual void WillSendBeginMainFrame() {}
-  virtual void DidSendBeginMainFrame() {}
+  virtual void DidSendBeginMainFrame(const viz::BeginFrameArgs& args) {}
   virtual void BeginMainFrameAborted(
       CommitEarlyOutReason reason,
-      std::vector<std::unique_ptr<SwapPromise>> swap_promises);
+      std::vector<std::unique_ptr<SwapPromise>> swap_promises,
+      const viz::BeginFrameArgs& args);
   virtual void ReadyToCommit() {}  // For tests.
   virtual void BeginCommit();
   virtual void CommitComplete();
@@ -1205,7 +1209,7 @@
 
   // Must be the last member to ensure this is destroyed first in the
   // destruction order and invalidates all weak pointers.
-  base::WeakPtrFactory<LayerTreeHostImpl> weak_factory_;
+  base::WeakPtrFactory<LayerTreeHostImpl> weak_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/trees/layer_tree_host_unittest_capture_content.cc b/cc/trees/layer_tree_host_unittest_capture_content.cc
index 75f69a3..8b8fd49 100644
--- a/cc/trees/layer_tree_host_unittest_capture_content.cc
+++ b/cc/trees/layer_tree_host_unittest_capture_content.cc
@@ -58,8 +58,7 @@
   ~LayerTreeHostCaptureContentTest() override = default;
 
  protected:
-  LayerTreeHostCaptureContentTest()
-      : device_bounds_(10, 10), weak_factory_(this) {}
+  LayerTreeHostCaptureContentTest() : device_bounds_(10, 10) {}
 
   void BeginTest() override { PostSetNeedsCommitToMainThread(); }
 
@@ -116,7 +115,7 @@
   scoped_refptr<FakePictureLayer> root_picture_layer_;
   std::vector<NodeHolder> captured_content_;
   const gfx::Size device_bounds_;
-  base::WeakPtrFactory<LayerTreeHostCaptureContentTest> weak_factory_;
+  base::WeakPtrFactory<LayerTreeHostCaptureContentTest> weak_factory_{this};
 };
 
 class LayerTreeHostCaptureContentTestBasic
diff --git a/cc/trees/proxy_impl.cc b/cc/trees/proxy_impl.cc
index 2abac08..79a1fa9 100644
--- a/cc/trees/proxy_impl.cc
+++ b/cc/trees/proxy_impl.cc
@@ -191,7 +191,9 @@
   DCHECK(IsImplThread());
   DCHECK(scheduler_->CommitPending());
 
-  host_impl_->BeginMainFrameAborted(reason, std::move(swap_promises));
+  host_impl_->BeginMainFrameAborted(
+      reason, std::move(swap_promises),
+      scheduler_->last_dispatched_begin_main_frame_args());
   scheduler_->NotifyBeginMainFrameStarted(main_thread_start_time);
   scheduler_->BeginMainFrameAborted(reason);
 }
@@ -558,7 +560,7 @@
       FROM_HERE,
       base::BindOnce(&ProxyMain::BeginMainFrame, proxy_main_weak_ptr_,
                      base::Passed(&begin_main_frame_state)));
-  host_impl_->DidSendBeginMainFrame();
+  host_impl_->DidSendBeginMainFrame(args);
   devtools_instrumentation::DidRequestMainThreadFrame(layer_tree_host_id_);
 }
 
@@ -691,6 +693,8 @@
 
   LayerTreeHostImpl::FrameData frame;
   frame.begin_frame_ack = scheduler_->CurrentBeginFrameAckForActiveTree();
+  frame.origin_begin_main_frame_args =
+      scheduler_->last_activate_origin_frame_args();
   bool draw_frame = false;
 
   DrawResult result;
@@ -715,7 +719,7 @@
   bool start_ready_animations = draw_frame;
   host_impl_->UpdateAnimationState(start_ready_animations);
 
-  // Tell the main thread that the the newly-commited frame was drawn.
+  // Tell the main thread that the newly-commited frame was drawn.
   if (next_frame_is_newly_committed_frame_) {
     next_frame_is_newly_committed_frame_ = false;
     MainThreadTaskRunner()->PostTask(
diff --git a/cc/trees/proxy_main.cc b/cc/trees/proxy_main.cc
index 7cd0802..66eef1d 100644
--- a/cc/trees/proxy_main.cc
+++ b/cc/trees/proxy_main.cc
@@ -39,9 +39,7 @@
       commit_waits_for_activation_(false),
       started_(false),
       defer_main_frame_update_(false),
-      defer_commits_(true),
-      frame_sink_bound_weak_factory_(this),
-      weak_factory_(this) {
+      defer_commits_(true) {
   TRACE_EVENT0("cc", "ProxyMain::ProxyMain");
   DCHECK(task_runner_provider_);
   DCHECK(IsMainThread());
@@ -322,7 +320,7 @@
   ui::LatencyInfo new_latency_info(ui::SourceEventType::FRAME);
   new_latency_info.AddLatencyNumberWithTimestamp(
       ui::LATENCY_BEGIN_FRAME_RENDERER_MAIN_COMPONENT,
-      begin_main_frame_state->begin_frame_args.frame_time, 1);
+      begin_main_frame_state->begin_frame_args.frame_time);
   layer_tree_host_->QueueSwapPromise(
       std::make_unique<LatencyInfoSwapPromise>(new_latency_info));
 
diff --git a/cc/trees/proxy_main.h b/cc/trees/proxy_main.h
index 7b110c08..838c2d09 100644
--- a/cc/trees/proxy_main.h
+++ b/cc/trees/proxy_main.h
@@ -156,9 +156,9 @@
 
   // WeakPtrs generated by this factory will be invalidated when
   // LayerTreeFrameSink is released.
-  base::WeakPtrFactory<ProxyMain> frame_sink_bound_weak_factory_;
+  base::WeakPtrFactory<ProxyMain> frame_sink_bound_weak_factory_{this};
 
-  base::WeakPtrFactory<ProxyMain> weak_factory_;
+  base::WeakPtrFactory<ProxyMain> weak_factory_{this};
 };
 
 }  // namespace cc
diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc
index d3a4b098..5f41a73 100644
--- a/cc/trees/single_thread_proxy.cc
+++ b/cc/trees/single_thread_proxy.cc
@@ -56,9 +56,7 @@
       inside_synchronous_composite_(false),
       needs_impl_frame_(false),
       layer_tree_frame_sink_creation_requested_(false),
-      layer_tree_frame_sink_lost_(true),
-      frame_sink_bound_weak_factory_(this),
-      weak_factory_(this) {
+      layer_tree_frame_sink_lost_(true) {
   TRACE_EVENT0("cc", "SingleThreadProxy::SingleThreadProxy");
   DCHECK(task_runner_provider_);
   DCHECK(task_runner_provider_->IsMainThread());
@@ -611,6 +609,7 @@
     if (raster) {
       LayerTreeHostImpl::FrameData frame;
       frame.begin_frame_ack = viz::BeginFrameAck(begin_frame_args, true);
+      frame.origin_begin_main_frame_args = begin_frame_args;
       DoComposite(&frame);
     }
 
@@ -750,7 +749,7 @@
   task_runner_provider_->MainThreadTaskRunner()->PostTask(
       FROM_HERE, base::BindOnce(&SingleThreadProxy::BeginMainFrame,
                                 weak_factory_.GetWeakPtr(), begin_frame_args));
-  host_impl_->DidSendBeginMainFrame();
+  host_impl_->DidSendBeginMainFrame(begin_frame_args);
 }
 
 void SingleThreadProxy::FrameIntervalUpdated(base::TimeDelta interval) {
@@ -829,8 +828,7 @@
   // know we will commit since QueueSwapPromise itself requests a commit.
   ui::LatencyInfo new_latency_info(ui::SourceEventType::FRAME);
   new_latency_info.AddLatencyNumberWithTimestamp(
-      ui::LATENCY_BEGIN_FRAME_UI_MAIN_COMPONENT, begin_frame_args.frame_time,
-      1);
+      ui::LATENCY_BEGIN_FRAME_UI_MAIN_COMPONENT, begin_frame_args.frame_time);
   layer_tree_host_->QueueSwapPromise(
       std::make_unique<LatencyInfoSwapPromise>(new_latency_info));
 
@@ -869,7 +867,9 @@
   DCHECK(!host_impl_->pending_tree());
 
   std::vector<std::unique_ptr<SwapPromise>> empty_swap_promises;
-  host_impl_->BeginMainFrameAborted(reason, std::move(empty_swap_promises));
+  host_impl_->BeginMainFrameAborted(
+      reason, std::move(empty_swap_promises),
+      scheduler_on_impl_thread_->last_dispatched_begin_main_frame_args());
   scheduler_on_impl_thread_->BeginMainFrameAborted(reason);
 }
 
@@ -878,6 +878,8 @@
   LayerTreeHostImpl::FrameData frame;
   frame.begin_frame_ack =
       scheduler_on_impl_thread_->CurrentBeginFrameAckForActiveTree();
+  frame.origin_begin_main_frame_args =
+      scheduler_on_impl_thread_->last_activate_origin_frame_args();
   return DoComposite(&frame);
 }
 
diff --git a/cc/trees/single_thread_proxy.h b/cc/trees/single_thread_proxy.h
index 407ef6ac..e8ba4c6b 100644
--- a/cc/trees/single_thread_proxy.h
+++ b/cc/trees/single_thread_proxy.h
@@ -208,9 +208,9 @@
 
   // WeakPtrs generated by this factory will be invalidated when
   // LayerTreeFrameSink is released.
-  base::WeakPtrFactory<SingleThreadProxy> frame_sink_bound_weak_factory_;
+  base::WeakPtrFactory<SingleThreadProxy> frame_sink_bound_weak_factory_{this};
 
-  base::WeakPtrFactory<SingleThreadProxy> weak_factory_;
+  base::WeakPtrFactory<SingleThreadProxy> weak_factory_{this};
 };
 
 // For use in the single-threaded case. In debug builds, it pretends that the
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn
index 515cc0e..87e6e9c 100644
--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -260,7 +260,12 @@
           "/DELAYLOAD:wintrust.dll",
         ]
 
-        if (current_cpu == "x64") {
+        if (current_cpu == "x86") {
+          # Increase the initial stack size. The default is 1MB, this is 1.5MB.
+          # To mitigate address space pressure, |CreateThreadInternal| sets the
+          # default back to 1MB for non-main threads.
+          ldflags += [ "/STACK:1572864" ]
+        } else {
           # Increase the initial stack size. The default is 1MB, this is 8MB.
           ldflags += [ "/STACK:8388608" ]
         }
diff --git a/chrome/VERSION b/chrome/VERSION
index 21647316..fc2beed 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=77
 MINOR=0
-BUILD=3848
+BUILD=3849
 PATCH=0
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
index 5524320..12ecc85 100644
--- a/chrome/android/chrome_test_java_sources.gni
+++ b/chrome/android/chrome_test_java_sources.gni
@@ -90,6 +90,7 @@
   "javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java",
   "javatests/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuHeaderViewTest.java",
   "javatests/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuItemViewTest.java",
+  "javatests/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuTest.java",
   "javatests/src/org/chromium/chrome/browser/contextmenu/TabularContextMenuUiTest.java",
   "javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchFakeServer.java",
   "javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateControllerWrapper.java",
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingCoordinator.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingCoordinator.java
index 6ceb41d..f9d27be 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingCoordinator.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingCoordinator.java
@@ -58,7 +58,7 @@
                 .setOnClickListener(unusedView -> onClicked(true, callback));
         initView.findViewById(R.id.button_init_not_ok)
                 .setOnClickListener(unusedView -> onClicked(false, callback));
-        initView.announceForAccessibility(
+        initView.setContentDescription(
                 context.getString(R.string.autofill_assistant_first_run_accessibility));
 
         // Hide views that should not be displayed when showing the small onboarding.
diff --git a/chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_legacy_option.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_legacy_option.xml
index 84c6ed6..1232d78 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_legacy_option.xml
+++ b/chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_legacy_option.xml
@@ -4,6 +4,7 @@
      found in the LICENSE file. -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/footer_command"
     android:gravity="center_vertical|start"
     android:fillViewport="true"
     android:layout_height="wrap_content"
@@ -12,12 +13,6 @@
     android:paddingBottom="0dp"
     android:orientation="vertical">
 
-    <View style="@style/HorizontalDivider"
-        android:layout_marginTop="@dimen/keyboard_accessory_sheet_padding"
-        android:layout_marginBottom="@dimen/keyboard_accessory_sheet_padding"
-        android:paddingStart="0dp"
-        android:paddingEnd="0dp" />
-
     <TextView
         android:id="@+id/footer_text"
         android:paddingStart="@dimen/keyboard_accessory_suggestion_padding"
diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java
index 73e0119..1b1f3458 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java
@@ -8,6 +8,8 @@
 
 import android.content.res.TypedArray;
 import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.support.annotation.Nullable;
@@ -16,6 +18,7 @@
 import android.support.v7.widget.RecyclerView;
 import android.text.method.PasswordTransformationMethod;
 import android.view.Gravity;
+import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 import android.widget.TextView;
@@ -26,6 +29,7 @@
 import org.chromium.chrome.browser.keyboard_accessory.data.UserInfoField;
 import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
 import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabViewBinder.ElementViewHolder;
+import org.chromium.ui.HorizontalListDividerDrawable;
 import org.chromium.ui.modelutil.ListModel;
 
 /**
@@ -66,6 +70,46 @@
      * Holds a TextView that represents a bottom command and is separated to the top by a divider.
      */
     static class FooterCommandViewHolder extends ElementViewHolder<FooterCommand, LinearLayout> {
+        public static class DynamicTopDivider extends RecyclerView.ItemDecoration {
+            @Override
+            public void getItemOffsets(
+                    Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+                super.getItemOffsets(outRect, view, parent, state);
+                if (view.getId() != R.id.footer_command) return;
+                int previous = parent.indexOfChild(view) - 1;
+                if (previous < 0) return;
+                if (parent.getChildAt(previous).getId() == R.id.footer_command) return;
+                outRect.top = view.getContext().getResources().getDimensionPixelSize(
+                                      R.dimen.keyboard_accessory_suggestion_padding)
+                        + view.getContext().getResources().getDimensionPixelSize(
+                                R.dimen.divider_height);
+            }
+
+            @Override
+            public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) {
+                int attatchedChlidCount = parent.getChildCount();
+                for (int i = 0; i < attatchedChlidCount - 1; ++i) {
+                    View currentView = parent.getChildAt(i);
+                    if (currentView.getId() == R.id.footer_command) break;
+
+                    View nextView = parent.getChildAt(i + 1);
+                    if (nextView.getId() != R.id.footer_command) continue;
+
+                    Drawable dividerDrawable =
+                            HorizontalListDividerDrawable.create(nextView.getContext());
+                    int top = currentView.getBottom()
+                            + currentView.getContext().getResources().getDimensionPixelOffset(
+                                      R.dimen.keyboard_accessory_suggestion_padding)
+                                    / 2;
+                    int bottom = top + dividerDrawable.getIntrinsicHeight();
+                    dividerDrawable.setBounds(parent.getLeft() + parent.getPaddingLeft(), top,
+                            parent.getRight() - parent.getPaddingRight(), bottom);
+
+                    dividerDrawable.draw(canvas);
+                }
+            }
+        }
+
         FooterCommandViewHolder(ViewGroup parent) {
             super(parent, R.layout.password_accessory_sheet_legacy_option);
         }
@@ -155,5 +199,6 @@
 
     static void initializeView(RecyclerView view, AccessorySheetTabModel model) {
         view.setAdapter(PasswordAccessorySheetCoordinator.createAdapter(model));
+        view.addItemDecoration(new FooterCommandViewHolder.DynamicTopDivider());
     }
 }
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_am.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_am.xtb
index f774385..99b02077 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_am.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_am.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="am">
-<translation id="1492646418094134664">በChrome ክሬዲት ካርድን ለመሙላት መታ ያድርጉ</translation>
 <translation id="1566281227936819866">የተቀመጡ የመክፈያ ዘዴዎችን በማሳየት ላይ</translation>
 <translation id="2610239185026711824">የይለፍ ቃል ጠቁም</translation>
 <translation id="2803478378562657435">የተቀመጡ የይለፍ ቃላትን እና የይለፍ ቃል አማራጮችን በማሳየት ላይ</translation>
 <translation id="2903493209154104877">አድራሻዎች</translation>
 <translation id="4660011489602794167">የቁልፍ ሰሌዳን አሳይ</translation>
 <translation id="5088366526685584589">የተቀመጡ አድራሻዎችን በማሳየት ላይ</translation>
-<translation id="5552748600584301915">አድራሻን በChrome ለመሙላት መታ ያድርጉ</translation>
 <translation id="6393156038355142111">ጠንካራ የይለፍ ቃል ጠቁም</translation>
-<translation id="6810986916917535017">በChrome ይለፍ ቃል ለመሙላት መታ ያድርጉ</translation>
 <translation id="7299100402441711551">አድራሻዎችን አሳይ</translation>
 <translation id="7494879913343971937">የይለፍ ቃላትን አሳይ</translation>
 <translation id="8037472847879765671">የመክፈያ ዘዴዎችን አሳይ</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ar.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ar.xtb
index f8c73ae2..7506157 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ar.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ar.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ar">
-<translation id="1492646418094134664">‏انقر لإدخال بطاقة الائتمان باستخدام Chrome</translation>
 <translation id="1566281227936819866">عرض طرق الدفع المحفوظة</translation>
 <translation id="2610239185026711824">اقتراح كلمة مرور</translation>
 <translation id="2803478378562657435">عرض كلمات المرور المحفوظة وخيارات كلمة المرور</translation>
 <translation id="2903493209154104877">العناوين</translation>
 <translation id="4660011489602794167">عرض لوحة المفاتيح</translation>
 <translation id="5088366526685584589">جارٍ عرض العناوين المحفوظة.</translation>
-<translation id="5552748600584301915">‏انقر لإدخال العنوان باستخدام Chrome</translation>
 <translation id="6393156038355142111">اقتراح كلمة مرور قوية</translation>
-<translation id="6810986916917535017">‏انقر لإدخال كلمة المرور باستخدام Chrome</translation>
 <translation id="7299100402441711551">عرض العناوين</translation>
 <translation id="7494879913343971937">عرض كلمات المرور</translation>
 <translation id="8037472847879765671">عرض طرق الدفع</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_bg.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_bg.xtb
index 7db7e2d..4701b52 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_bg.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_bg.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="bg">
-<translation id="1492646418094134664">Докоснете за попълване на кредитната карта с Chrome</translation>
 <translation id="1566281227936819866">Показани са запазените начини на плащане</translation>
 <translation id="2610239185026711824">Предложение за парола</translation>
 <translation id="2803478378562657435">Запазените пароли и опциите за пароли са показани</translation>
 <translation id="2903493209154104877">Адреси</translation>
 <translation id="4660011489602794167">Показване на клавиатурата</translation>
 <translation id="5088366526685584589">Показани са запазените адреси</translation>
-<translation id="5552748600584301915">Докоснете за попълване на адреса с Chrome</translation>
 <translation id="6393156038355142111">Предложение за надеждна парола</translation>
-<translation id="6810986916917535017">Докоснете за попълване на паролата с Chrome</translation>
 <translation id="7299100402441711551">Показване на адресите</translation>
 <translation id="7494879913343971937">Показване на паролите</translation>
 <translation id="8037472847879765671">Показване на начините на плащане</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_bn.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_bn.xtb
index 2072657..0af9f8a1 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_bn.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_bn.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="bn">
-<translation id="1492646418094134664">Chrome-এর সাহায্যে ক্রেডিট কার্ডের তথ্য পূরণ করুন</translation>
 <translation id="1566281227936819866">সেভ করা পেমেন্টের পদ্ধতি দেখানো হচ্ছে</translation>
 <translation id="2610239185026711824">পাসওয়ার্ড সাজেস্ট করুন</translation>
 <translation id="2803478378562657435">সেভ করা পাসওয়ার্ড এবং পাসওয়ার্ড বিকল্পগুলি দেখানো হচ্ছে</translation>
 <translation id="2903493209154104877">ঠিকানা</translation>
 <translation id="4660011489602794167">কীবোর্ড দেখান</translation>
 <translation id="5088366526685584589">সেভ করে রাখা ঠিকানা দেখানো হচ্ছে</translation>
-<translation id="5552748600584301915">Chrome-এর সাহায্যে ঠিকানার ফিল্ড পূরণ করুন</translation>
 <translation id="6393156038355142111">শক্তিশালী পাসওয়ার্ড সাজেস্ট করুন</translation>
-<translation id="6810986916917535017">Chrome-এর সাহায্যে পাসওয়ার্ডের ফিল্ড পূরণ করুন</translation>
 <translation id="7299100402441711551">ঠিকানা দেখুন</translation>
 <translation id="7494879913343971937">পাসওয়ার্ড দেখান</translation>
 <translation id="8037472847879765671">পেমেন্টের পদ্ধতিগুলি দেখুন</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ca.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ca.xtb
index 75c0a92..bb04213 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ca.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ca.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ca">
-<translation id="1492646418094134664">Toca per emplenar la informació de la targeta de crèdit amb Chrome</translation>
 <translation id="1566281227936819866">S'estan mostrant les formes de pagament desades</translation>
 <translation id="2610239185026711824">Suggereix una contrasenya</translation>
 <translation id="2803478378562657435">S'estan mostrant les contrasenyes desades i les opcions de contrasenyes</translation>
 <translation id="2903493209154104877">Adreces</translation>
 <translation id="4660011489602794167">Mostra el teclat</translation>
 <translation id="5088366526685584589">S'estan mostrant les adreces desades</translation>
-<translation id="5552748600584301915">Toca per emplenar l'adreça amb Chrome</translation>
 <translation id="6393156038355142111">Suggereix una contrasenya segura</translation>
-<translation id="6810986916917535017">Toca per emplenar la contrasenya amb Chrome</translation>
 <translation id="7299100402441711551">Mostra les adreces</translation>
 <translation id="7494879913343971937">Mostra les contrasenyes</translation>
 <translation id="8037472847879765671">Mostra les formes de pagament</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_cs.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_cs.xtb
index 362de62..80186528 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_cs.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_cs.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="cs">
-<translation id="1492646418094134664">Klepnutím vyplníte platební kartu pomocí Chromu</translation>
 <translation id="1566281227936819866">Zobrazují se uložené platební metody</translation>
 <translation id="2610239185026711824">Navrhnout heslo</translation>
 <translation id="2803478378562657435">Zobrazování uložených hesel a možností hesel</translation>
 <translation id="2903493209154104877">Adresy</translation>
 <translation id="4660011489602794167">Zobrazit klávesnici</translation>
 <translation id="5088366526685584589">Zobrazují se uložené adresy</translation>
-<translation id="5552748600584301915">Klepnutím vyplníte adresu pomocí Chromu</translation>
 <translation id="6393156038355142111">Navrhnout silné heslo</translation>
-<translation id="6810986916917535017">Klepnutím vyplníte heslo pomocí Chromu</translation>
 <translation id="7299100402441711551">Zobrazit adresy</translation>
 <translation id="7494879913343971937">Zobrazovat hesla</translation>
 <translation id="8037472847879765671">Zobrazit platební metody</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_da.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_da.xtb
index b188531b..2d9a7f67 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_da.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_da.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="da">
-<translation id="1492646418094134664">Tryk for at angive betalingskort med Chrome</translation>
 <translation id="1566281227936819866">Viser gemte betalingsmetoder</translation>
 <translation id="2610239185026711824">Foreslå en adgangskode</translation>
 <translation id="2803478378562657435">Viser gemte adgangskoder og valgmuligheder for adgangskoder</translation>
 <translation id="2903493209154104877">Adresser</translation>
 <translation id="4660011489602794167">Vis tastatur</translation>
 <translation id="5088366526685584589">Viser gemte adresser</translation>
-<translation id="5552748600584301915">Tryk for at udfylde adressen med Chrome</translation>
 <translation id="6393156038355142111">Foreslå en stærk adgangskode</translation>
-<translation id="6810986916917535017">Tryk for at udfylde adgangskoden med Chrome</translation>
 <translation id="7299100402441711551">Vis adresser</translation>
 <translation id="7494879913343971937">Vis adgangskoder</translation>
 <translation id="8037472847879765671">Vis betalingsmetoder</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_de.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_de.xtb
index 88adb7e..a71f30d46 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_de.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_de.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="de">
-<translation id="1492646418094134664">Tippen, um die Kreditkartendaten mit Chrome auszufüllen</translation>
 <translation id="1566281227936819866">Gespeicherte Zahlungsmethoden werden angezeigt</translation>
 <translation id="2610239185026711824">Passwort vorschlagen</translation>
 <translation id="2803478378562657435">Gespeicherte Passwörter und Passwortoptionen werden angezeigt</translation>
 <translation id="2903493209154104877">Adressen</translation>
 <translation id="4660011489602794167">Tastatur anzeigen</translation>
 <translation id="5088366526685584589">Gespeicherte Adressen werden angezeigt</translation>
-<translation id="5552748600584301915">Tippen, um die Adresse mit Chrome auszufüllen</translation>
 <translation id="6393156038355142111">Starkes Passwort vorschlagen</translation>
-<translation id="6810986916917535017">Tippen, um das Passwort mit Chrome auszufüllen</translation>
 <translation id="7299100402441711551">Adressen anzeigen</translation>
 <translation id="7494879913343971937">Passwörter anzeigen</translation>
 <translation id="8037472847879765671">Zahlungsmethoden anzeigen</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_el.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_el.xtb
index 7b4f8b3..57269489 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_el.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_el.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="el">
-<translation id="1492646418094134664">Πατήστε για συμπλήρωση των στοιχείων της πιστωτικής κάρτας με το Chrome</translation>
 <translation id="1566281227936819866">Εμφάνιση αποθηκευμένων τρόπων πληρωμής</translation>
 <translation id="2610239185026711824">Πρόταση κωδικού πρόσβασης</translation>
 <translation id="2803478378562657435">Εμφάνιση αποθηκευμένων κωδικών πρόσβασης και επιλογών κωδικού πρόσβασης</translation>
 <translation id="2903493209154104877">Διευθύνσεις</translation>
 <translation id="4660011489602794167">Εμφάνιση πληκτρολογίου</translation>
 <translation id="5088366526685584589">Εμφάνιση αποθηκευμένων διευθύνσεων</translation>
-<translation id="5552748600584301915">Πατήστε για συμπλήρωση της διεύθυνσης με το Chrome</translation>
 <translation id="6393156038355142111">Πρόταση ισχυρού κωδικού πρόσβασης</translation>
-<translation id="6810986916917535017">Πατήστε για συμπλήρωση του κωδικού πρόσβασης με το Chrome</translation>
 <translation id="7299100402441711551">Εμφάνιση διευθύνσεων</translation>
 <translation id="7494879913343971937">Εμφάνιση κωδικών πρόσβασης</translation>
 <translation id="8037472847879765671">Εμφάνιση τρόπων πληρωμής</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_en-GB.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_en-GB.xtb
index bb369b3..b50e01f 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_en-GB.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_en-GB.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="en-GB">
-<translation id="1492646418094134664">Tap to fill credit card with Chrome</translation>
 <translation id="1566281227936819866">Showing saved payment methods</translation>
 <translation id="2610239185026711824">Suggest password</translation>
 <translation id="2803478378562657435">Showing saved passwords and password options</translation>
 <translation id="2903493209154104877">Addresses</translation>
 <translation id="4660011489602794167">Show keyboard</translation>
 <translation id="5088366526685584589">Showing saved addresses</translation>
-<translation id="5552748600584301915">Tap to fill address with Chrome</translation>
 <translation id="6393156038355142111">Suggest strong password</translation>
-<translation id="6810986916917535017">Tap to fill password with Chrome</translation>
 <translation id="7299100402441711551">Show addresses</translation>
 <translation id="7494879913343971937">Show passwords</translation>
 <translation id="8037472847879765671">Show payment methods</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es-419.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es-419.xtb
index cbff919..264d40f 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es-419.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es-419.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="es-419">
-<translation id="1492646418094134664">Presiona para completar los datos de la tarjeta de crédito con Chrome</translation>
 <translation id="1566281227936819866">Mostrando las formas de pago guardadas</translation>
 <translation id="2610239185026711824">Sugerir contraseña</translation>
 <translation id="2803478378562657435">Se muestran las contraseñas guardadas y las opciones de contraseña</translation>
 <translation id="2903493209154104877">Direcciones</translation>
 <translation id="4660011489602794167">Mostrar teclado</translation>
 <translation id="5088366526685584589">Se muestran las direcciones guardadas</translation>
-<translation id="5552748600584301915">Presiona para completar la dirección con Chrome</translation>
 <translation id="6393156038355142111">Sugerir contraseña segura</translation>
-<translation id="6810986916917535017">Presiona para completar la contraseña con Chrome</translation>
 <translation id="7299100402441711551">Mostrar direcciones</translation>
 <translation id="7494879913343971937">Mostrar contraseñas</translation>
 <translation id="8037472847879765671">Muestra formas de pago</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es.xtb
index 504aae64..06ada15 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_es.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="es">
-<translation id="1492646418094134664">Toca para rellenar la información de la tarjeta de crédito con Chrome</translation>
 <translation id="1566281227936819866">Mostrando métodos de pago guardados</translation>
 <translation id="2610239185026711824">Sugerir contraseña</translation>
 <translation id="2803478378562657435">Mostrando contraseñas guardadas y opciones de contraseña</translation>
 <translation id="2903493209154104877">Direcciones</translation>
 <translation id="4660011489602794167">Mostrar teclado</translation>
 <translation id="5088366526685584589">Mostrando direcciones guardadas</translation>
-<translation id="5552748600584301915">Toca para rellenar la dirección con Chrome</translation>
 <translation id="6393156038355142111">Sugerir contraseña segura</translation>
-<translation id="6810986916917535017">Toca para rellenar la contraseña con Chrome</translation>
 <translation id="7299100402441711551">Mostrar direcciones</translation>
 <translation id="7494879913343971937">Mostrar contraseñas</translation>
 <translation id="8037472847879765671">Mostrar métodos de pago</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_et.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_et.xtb
index 92f2dc2..b038571 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_et.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_et.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="et">
-<translation id="1492646418094134664">Puudutage, et Chrome täidaks krediitkaardivälja</translation>
 <translation id="1566281227936819866">Kuvatud on salvestatud makseviisid</translation>
 <translation id="2610239185026711824">Soovita parooli</translation>
 <translation id="2803478378562657435">Kuvatud on salvestatud paroolid ja paroolivalikud</translation>
 <translation id="2903493209154104877">Aadressid</translation>
 <translation id="4660011489602794167">Kuva klaviatuur</translation>
 <translation id="5088366526685584589">Kuvatakse salvestatud aadresse</translation>
-<translation id="5552748600584301915">Puudutage, et Chrome täidaks aadressivälja</translation>
 <translation id="6393156038355142111">Soovita tugevat parooli</translation>
-<translation id="6810986916917535017">Puudutage, et Chrome täidaks paroolivälja</translation>
 <translation id="7299100402441711551">Kuva aadressid</translation>
 <translation id="7494879913343971937">Kuva paroolid</translation>
 <translation id="8037472847879765671">Makseviiside kuvamine</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fa.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fa.xtb
index e4cd129..d7cdaaad 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fa.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fa.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="fa">
-<translation id="1492646418094134664">‏برای تکمیل کارت اعتباری با Chrome ضربه بزنید</translation>
 <translation id="1566281227936819866">درحال نمایش روش‌های پرداخت ذخیره‌شده</translation>
 <translation id="2610239185026711824">پیشنهاد گذرواژه</translation>
 <translation id="2803478378562657435">درحال نمایش گذرواژه‌های ذخیره‌شده و گزینه‌های گذرواژه</translation>
 <translation id="2903493209154104877">آدرس‌ها</translation>
 <translation id="4660011489602794167">نمایش صفحه‌کلید</translation>
 <translation id="5088366526685584589">درحال نمایش نشانی‌های ذخیره‌شده</translation>
-<translation id="5552748600584301915">‏برای تکمیل نشانی با Chrome، ضربه بزنید</translation>
 <translation id="6393156038355142111">پیشنهاد گذرواژه قوی</translation>
-<translation id="6810986916917535017">‏برای تکمیل گذرواژه با Chrome، ضربه بزنید</translation>
 <translation id="7299100402441711551">نمایش نشانی‌ها</translation>
 <translation id="7494879913343971937">نمایش گذرواژه‌ها</translation>
 <translation id="8037472847879765671">نمایش روش‌های پرداخت</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fi.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fi.xtb
index 67c1591..9b121205 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fi.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fi.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="fi">
-<translation id="1492646418094134664">Täytä credit-kortti Chromesta napauttamalla</translation>
 <translation id="1566281227936819866">Näytetään tallennetut maksutavat</translation>
 <translation id="2610239185026711824">Ehdota salasanaa</translation>
 <translation id="2803478378562657435">Näytetään tallennetut salasanat ja salasana-asetukset</translation>
 <translation id="2903493209154104877">Osoitteet</translation>
 <translation id="4660011489602794167">Näytä näppäimistö</translation>
 <translation id="5088366526685584589">Näytetään tallennetut osoitteet</translation>
-<translation id="5552748600584301915">Täytä osoite Chromesta napauttamalla</translation>
 <translation id="6393156038355142111">Ehdota vahvaa salasanaa</translation>
-<translation id="6810986916917535017">Täytä salasana Chromesta napauttamalla</translation>
 <translation id="7299100402441711551">Näytä osoitteet</translation>
 <translation id="7494879913343971937">Näytä salasanat</translation>
 <translation id="8037472847879765671">Näytä maksutavat</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fil.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fil.xtb
index 8ffe423f..55e9b9b 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fil.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fil.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="fil">
-<translation id="1492646418094134664">I-tap para punan ang credit card gamit ang Chrome</translation>
 <translation id="1566281227936819866">Ipinapakita ang mga na-save na paraan ng pagbabayad</translation>
 <translation id="2610239185026711824">Magmungkahi ng password</translation>
 <translation id="2803478378562657435">Ipinapakita ang mga naka-save na password at mga opsyon sa password</translation>
 <translation id="2903493209154104877">Mga Address</translation>
 <translation id="4660011489602794167">Ipakita ang keyboard</translation>
 <translation id="5088366526685584589">Ipinapakita ang mga naka-save na address</translation>
-<translation id="5552748600584301915">I-tap para punan ang address gamit ang Chrome</translation>
 <translation id="6393156038355142111">Magmungkahi ng malakas na password</translation>
-<translation id="6810986916917535017">I-tap para punan ang password gamit ang Chrome</translation>
 <translation id="7299100402441711551">Ipakita ang Mga Address</translation>
 <translation id="7494879913343971937">Ipakita ang mga password</translation>
 <translation id="8037472847879765671">Ipakita ang mga paraan ng pagbabayad</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fr.xtb
index d7621ab..5cd0d81 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fr.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_fr.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="fr">
-<translation id="1492646418094134664">Appuyez ici pour que Chrome remplisse la carte de crédit</translation>
 <translation id="1566281227936819866">Affichage des modes de paiement enregistrés en cours</translation>
 <translation id="2610239185026711824">Suggérer un mot de passe</translation>
 <translation id="2803478378562657435">Affichage des mots de passe enregistrés et des options de mot de passe</translation>
 <translation id="2903493209154104877">Adresses</translation>
 <translation id="4660011489602794167">Afficher le clavier</translation>
 <translation id="5088366526685584589">Affichage des adresses enregistrées</translation>
-<translation id="5552748600584301915">Appuyez ici pour que Chrome remplisse l'adresse</translation>
 <translation id="6393156038355142111">Suggérer un mot de passe sécurisé</translation>
-<translation id="6810986916917535017">Appuyez ici pour que Chrome remplisse le mot de passe</translation>
 <translation id="7299100402441711551">Afficher les adresses</translation>
 <translation id="7494879913343971937">Afficher les mots de passe</translation>
 <translation id="8037472847879765671">Afficher les modes de paiement</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_gu.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_gu.xtb
index 64cada93..a76e60e7 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_gu.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_gu.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="gu">
-<translation id="1492646418094134664">Chromeમાં ક્રેડિટ કાર્ડ ભરવા માટે ટૅપ કરો</translation>
 <translation id="1566281227936819866">સાચવેલી ચુકવણી પદ્ધતિઓ બતાવી રહ્યાં છીએ</translation>
 <translation id="2610239185026711824">પાસવર્ડ સૂચવો</translation>
 <translation id="2803478378562657435">સાચવેલા પાસવર્ડ અને પાસવર્ડ માટેના વિકલ્પો બતાવી રહ્યા છીએ</translation>
 <translation id="2903493209154104877">સરનામાંઓ</translation>
 <translation id="4660011489602794167">કીબોર્ડ બતાવો</translation>
 <translation id="5088366526685584589">સાચવેલાં સરનામાં</translation>
-<translation id="5552748600584301915">Chromeમાં ઍડ્રેસ ભરવા માટે ટૅપ કરો</translation>
 <translation id="6393156038355142111">સશક્ત પાસવર્ડ સૂચવો</translation>
-<translation id="6810986916917535017">Chromeમાં પાસવર્ડ ભરવા માટે ટૅપ કરો</translation>
 <translation id="7299100402441711551">સરનામાં બતાવો</translation>
 <translation id="7494879913343971937">પાસવર્ડ બતાવો</translation>
 <translation id="8037472847879765671">ચુકવણી પદ્ધતિઓ બતાવો</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hi.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hi.xtb
index f3144885e..a472879 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hi.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hi.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="hi">
-<translation id="1492646418094134664">Chrome की मदद से क्रेडिट कार्ड की जानकारी भरने के लिए टैप करें</translation>
 <translation id="1566281227936819866">सेव किए गए भुगतान के तरीके दिखाए जा रहे हैं</translation>
 <translation id="2610239185026711824">पासवर्ड सुझाएं</translation>
 <translation id="2803478378562657435">सेव किए हुए पासवर्ड और पासवर्ड के विकल्प दिखाए जा रहे हैं</translation>
 <translation id="2903493209154104877">पते</translation>
 <translation id="4660011489602794167">कीबोर्ड दिखाएं</translation>
 <translation id="5088366526685584589">सेव किए गए पते दिखाए जा रहे हैं</translation>
-<translation id="5552748600584301915">Chrome की मदद से पते की जानकारी भरने के लिए टैप करें</translation>
 <translation id="6393156038355142111">मज़बूत पासवर्ड सुझाएं</translation>
-<translation id="6810986916917535017">Chrome की मदद से पासवर्ड डालने के लिए टैप करें</translation>
 <translation id="7299100402441711551">पतों की जानकारी दिखाओ</translation>
 <translation id="7494879913343971937">पासवर्ड दिखाएं</translation>
 <translation id="8037472847879765671">भुगतान के तरीके दिखाएं</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hr.xtb
index 3874f9d..a0851e9 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hr.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hr.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="hr">
-<translation id="1492646418094134664">Dodirnite za popunjavanje kreditne kartice Chromeom</translation>
 <translation id="1566281227936819866">Prikazuju se spremljeni načini plaćanja</translation>
 <translation id="2610239185026711824">Predloži zaporku</translation>
 <translation id="2803478378562657435">Prikazivanje spremljenih zaporki i opcija zaporki</translation>
 <translation id="2903493209154104877">Adrese</translation>
 <translation id="4660011489602794167">Prikaži tipkovnicu</translation>
 <translation id="5088366526685584589">Prikazivanje spremljenih adresa</translation>
-<translation id="5552748600584301915">Dodirnite da biste ispunili adresu s Chromeom</translation>
 <translation id="6393156038355142111">Predloži snažnu zaporku</translation>
-<translation id="6810986916917535017">Dodirnite da biste ispunili zaporku s Chromeom</translation>
 <translation id="7299100402441711551">Prikaži adrese</translation>
 <translation id="7494879913343971937">Prikaz zaporki</translation>
 <translation id="8037472847879765671">Prikaz načina plaćanja</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hu.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hu.xtb
index a5111207..2750f90 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hu.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_hu.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="hu">
-<translation id="1492646418094134664">Koppintson, és a Chrome kitölti a hitelkártyaadatokat</translation>
 <translation id="1566281227936819866">Mentett fizetési módok megjelenítése</translation>
 <translation id="2610239185026711824">Jelszó ajánlása</translation>
 <translation id="2803478378562657435">Mentett jelszavak és jelszóbeállítások megjelenítve</translation>
 <translation id="2903493209154104877">Címek</translation>
 <translation id="4660011489602794167">Billentyűzet megjelenítése</translation>
 <translation id="5088366526685584589">Mentett címek megjelenítése</translation>
-<translation id="5552748600584301915">Koppintson, és a Chrome kitölti a címet</translation>
 <translation id="6393156038355142111">Erős jelszó ajánlása</translation>
-<translation id="6810986916917535017">Koppintson, és a Chrome kitölti a jelszót</translation>
 <translation id="7299100402441711551">Címek megjelenítése</translation>
 <translation id="7494879913343971937">Jelszavak mutatása</translation>
 <translation id="8037472847879765671">Fizetési módok megjelenítése</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_id.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_id.xtb
index c4c6241..049d28be 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_id.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_id.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="id">
-<translation id="1492646418094134664">Ketuk untuk mengisi info kartu kredit dengan Chrome</translation>
 <translation id="1566281227936819866">Menampilkan metode pembayaran yang tersimpan</translation>
 <translation id="2610239185026711824">Sarankan sandi</translation>
 <translation id="2803478378562657435">Menampilkan opsi sandi dan sandi yang disimpan</translation>
 <translation id="2903493209154104877">Alamat</translation>
 <translation id="4660011489602794167">Tampilkan keyboard</translation>
 <translation id="5088366526685584589">Menampilkan alamat yang disimpan</translation>
-<translation id="5552748600584301915">Ketuk untuk mengisi alamat dengan Chrome</translation>
 <translation id="6393156038355142111">Sarankan sandi yang kuat</translation>
-<translation id="6810986916917535017">Ketuk untuk mengisi sandi dengan Chrome</translation>
 <translation id="7299100402441711551">Tampilkan Alamat</translation>
 <translation id="7494879913343971937">Tampilkan sandi</translation>
 <translation id="8037472847879765671">Tampilkan metode pembayaran</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_it.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_it.xtb
index d8c56e42..9fe0de9 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_it.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_it.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="it">
-<translation id="1492646418094134664">Tocca per inserire la carta di credito con Chrome</translation>
 <translation id="1566281227936819866">Ecco i metodi di pagamento salvati</translation>
 <translation id="2610239185026711824">Suggerisci password</translation>
 <translation id="2803478378562657435">Mostra password salvate e opzioni password</translation>
 <translation id="2903493209154104877">Indirizzi</translation>
 <translation id="4660011489602794167">Mostra tastiera</translation>
 <translation id="5088366526685584589">Visualizzazione degli indirizzi salvati</translation>
-<translation id="5552748600584301915">Tocca per inserire l'indirizzo con Chrome</translation>
 <translation id="6393156038355142111">Suggerisci password efficace</translation>
-<translation id="6810986916917535017">Tocca per inserire la password con Chrome</translation>
 <translation id="7299100402441711551">Mostra indirizzi</translation>
 <translation id="7494879913343971937">Mostra password</translation>
 <translation id="8037472847879765671">Mostra metodi di pagamento</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_iw.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_iw.xtb
index 98fa4a9..a03e7ff4 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_iw.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_iw.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="iw">
-<translation id="1492646418094134664">‏אפשר להקיש כדי למלא את פרטי כרטיס האשראי באמצעות Chrome</translation>
 <translation id="1566281227936819866">מוצגים אמצעי התשלום השמורים</translation>
 <translation id="2610239185026711824">הצעת סיסמה</translation>
 <translation id="2803478378562657435">הצגת סיסמאות שמורות ואפשרויות סיסמה</translation>
 <translation id="2903493209154104877">כתובות</translation>
 <translation id="4660011489602794167">הצגת מקלדת</translation>
 <translation id="5088366526685584589">מוצגות הכתובות השמורות</translation>
-<translation id="5552748600584301915">‏אפשר להקיש כדי למלא את הכתובת באמצעות Chrome</translation>
 <translation id="6393156038355142111">הצעת סיסמה חזקה</translation>
-<translation id="6810986916917535017">‏אפשר להקיש כדי למלא את הסיסמה באמצעות Chrome</translation>
 <translation id="7299100402441711551">הצגת כתובות</translation>
 <translation id="7494879913343971937">הצגת סיסמאות</translation>
 <translation id="8037472847879765671">הצגת אמצעי תשלום</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ja.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ja.xtb
index f587cb530..6aaa311c 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ja.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ja.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ja">
-<translation id="1492646418094134664">クレジット カード情報を自動入力するにはタップしてください</translation>
 <translation id="1566281227936819866">保存されているお支払い方法を表示します</translation>
 <translation id="2610239185026711824">パスワードを自動生成</translation>
 <translation id="2803478378562657435">保存したパスワードとパスワードのオプションを表示しています</translation>
 <translation id="2903493209154104877">住所</translation>
 <translation id="4660011489602794167">キーボードを表示</translation>
 <translation id="5088366526685584589">保存された住所を表示しています</translation>
-<translation id="5552748600584301915">住所を自動入力するにはタップしてください</translation>
 <translation id="6393156038355142111">安全なパスワードを自動生成</translation>
-<translation id="6810986916917535017">パスワードを自動入力するにはタップしてください</translation>
 <translation id="7299100402441711551">住所を表示</translation>
 <translation id="7494879913343971937">パスワードを表示</translation>
 <translation id="8037472847879765671">お支払い方法を表示</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_kn.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_kn.xtb
index 289a75f..ba7b126 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_kn.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_kn.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="kn">
-<translation id="1492646418094134664">Chrome ಸಹಾಯದಿಂದ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮಾಹಿತಿಯನ್ನು ಭರ್ತಿ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="1566281227936819866">ಉಳಿಸಲಾದ ಪಾವತಿ ವಿಧಾನಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="2610239185026711824">ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಸೂಚಿಸಿ</translation>
 <translation id="2803478378562657435">ಉಳಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಪಾಸ್‌ವರ್ಡ್ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="2903493209154104877">ವಿಳಾಸಗಳು</translation>
 <translation id="4660011489602794167">ಕೀಬೋರ್ಡ್ ತೋರಿಸಿ</translation>
 <translation id="5088366526685584589">ಉಳಿಸಿರುವ ವಿಳಾಸಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ</translation>
-<translation id="5552748600584301915">Chrome ಮೂಲಕ ವಿಳಾಸವನ್ನು ಭರ್ತಿ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="6393156038355142111">ಸದೃಢವಾದ ಪಾಸ್‌ವರ್ಡ್ ಸೂಚಿಸಿ</translation>
-<translation id="6810986916917535017">Chrome ಮೂಲಕ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಭರ್ತಿ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="7299100402441711551">ವಿಳಾಸಗಳನ್ನು ತೋರಿಸಿ</translation>
 <translation id="7494879913343971937">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ತೋರಿಸಿ</translation>
 <translation id="8037472847879765671">ಪಾವತಿ ವಿಧಾನಗಳನ್ನು ತೋರಿಸಿ</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ko.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ko.xtb
index 80798ee..1c1cf31 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ko.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ko.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ko">
-<translation id="1492646418094134664">탭하여 Chrome을 통해 신용카드 입력</translation>
 <translation id="1566281227936819866">저장된 결제 수단 표시 중</translation>
 <translation id="2610239185026711824">비밀번호 추천</translation>
 <translation id="2803478378562657435">저장된 비밀번호 및 비밀번호 옵션 표시 중</translation>
 <translation id="2903493209154104877">주소</translation>
 <translation id="4660011489602794167">키보드 표시</translation>
 <translation id="5088366526685584589">저장된 주소를 표시합니다</translation>
-<translation id="5552748600584301915">탭하여 Chrome을 통해 주소 입력</translation>
 <translation id="6393156038355142111">안전한 비밀번호 추천</translation>
-<translation id="6810986916917535017">탭하여 Chrome을 통해 비밀번호 입력</translation>
 <translation id="7299100402441711551">주소 표시</translation>
 <translation id="7494879913343971937">비밀번호 표시</translation>
 <translation id="8037472847879765671">결제 수단 표시</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_lt.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_lt.xtb
index e7256789..a4e208d 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_lt.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_lt.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="lt">
-<translation id="1492646418094134664">Palieskite, kad įrašytumėte kredito kortelės informaciją naudodami „Chrome“</translation>
 <translation id="1566281227936819866">Rodomi išsaugoti mokėjimo metodai</translation>
 <translation id="2610239185026711824">Siūlyti slaptažodį</translation>
 <translation id="2803478378562657435">Rodomi išsaugoti slaptažodžiai ir slaptažodžių parinktys</translation>
 <translation id="2903493209154104877">Adresai</translation>
 <translation id="4660011489602794167">Rodyti klaviatūrą</translation>
 <translation id="5088366526685584589">Rodomi išsaugoti adresai</translation>
-<translation id="5552748600584301915">Palieskite, kad įrašytumėte adresą naudodami „Chrome“</translation>
 <translation id="6393156038355142111">Siūlyti sudėtingą slaptažodį</translation>
-<translation id="6810986916917535017">Palieskite, kad įrašytumėte slaptažodį naudodami „Chrome“</translation>
 <translation id="7299100402441711551">Rodyti adresus</translation>
 <translation id="7494879913343971937">Rodyti slaptažodžius</translation>
 <translation id="8037472847879765671">Rodyti mokėjimo metodus</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_lv.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_lv.xtb
index 8c6fe63..9f2d5d5 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_lv.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_lv.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="lv">
-<translation id="1492646418094134664">Lai aizpildītu kredītkartes laukus ar pārlūkā Chrome saglabātajiem datiem, pieskarieties šeit</translation>
 <translation id="1566281227936819866">Tiek rādīti saglabātie maksājumu veidi</translation>
 <translation id="2610239185026711824">Ieteikt paroli</translation>
 <translation id="2803478378562657435">Tiek rādītas saglabātās paroles un paroļu iespējas</translation>
 <translation id="2903493209154104877">Adreses</translation>
 <translation id="4660011489602794167">Rādīt tastatūru</translation>
 <translation id="5088366526685584589">Tiek rādītas saglabātās adreses</translation>
-<translation id="5552748600584301915">Lai aizpildītu adreses lauku ar pārlūkā Chrome saglabāto adresi, pieskarieties šeit</translation>
 <translation id="6393156038355142111">Ieteikt drošu paroli</translation>
-<translation id="6810986916917535017">Lai aizpildītu paroles lauku ar pārlūkā Chrome saglabāto paroli, pieskarieties šeit</translation>
 <translation id="7299100402441711551">Rādīt adreses</translation>
 <translation id="7494879913343971937">Rādīt paroles</translation>
 <translation id="8037472847879765671">Rādīt maksājumu veidus</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ml.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ml.xtb
index a22770a..2c0f5026 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ml.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ml.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ml">
-<translation id="1492646418094134664">Chrome ഉപയോഗിച്ച് ക്രെഡിറ്റ് കാർഡ് പൂരിപ്പിക്കാൻ ടാപ്പ് ചെയ്യുക</translation>
 <translation id="1566281227936819866">സംരക്ഷിച്ച പേയ്‌മെന്റ് രീതികൾ കാണിക്കുന്നു</translation>
 <translation id="2610239185026711824">പാസ്‌വേഡ് നിർദ്ദേശിക്കുക</translation>
 <translation id="2803478378562657435">സംരക്ഷിച്ച പാസ്‌വേഡുകളും പാസ്‌വേഡ് ഓപ്‌ഷനുകളും കാണിക്കുന്നു</translation>
 <translation id="2903493209154104877">വിലാസങ്ങള്‍‌</translation>
 <translation id="4660011489602794167">കീബോര്‍‌ഡ് കാണിക്കുക</translation>
 <translation id="5088366526685584589">സംരക്ഷിച്ച വിലാസങ്ങൾ കാണിക്കുന്നു</translation>
-<translation id="5552748600584301915">Chrome ഉപയോഗിച്ച് വിലാസം പൂരിപ്പിക്കാൻ ടാപ്പ് ചെയ്യുക</translation>
 <translation id="6393156038355142111">ശക്തമായ പാസ്‌വേഡ് നിർദ്ദേശിക്കുക</translation>
-<translation id="6810986916917535017">Chrome ഉപയോഗിച്ച് പാസ്‌വേഡ് പൂരിപ്പിക്കാൻ ടാപ്പ് ചെയ്യുക</translation>
 <translation id="7299100402441711551">വിലാസങ്ങൾ കാണിക്കുക</translation>
 <translation id="7494879913343971937">പാസ്‌വേ‌ഡുകൾ കാണിക്കുക</translation>
 <translation id="8037472847879765671">പേയ്‌മെന്റ് രീതികൾ കാണിക്കുക</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_mr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_mr.xtb
index 2b259ff..c3d7c2a 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_mr.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_mr.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="mr">
-<translation id="1492646418094134664">Chrome सह क्रेडिट कार्ड भरण्यासाठी टॅप करा</translation>
 <translation id="1566281227936819866">सेव्ह केलेल्या पेमेंट पद्धती दाखवत आहे</translation>
 <translation id="2610239185026711824">पासवर्ड सुचवा</translation>
 <translation id="2803478378562657435">सेव्ह केलेले पासवर्ड आणि पासवर्ड पर्याय दाखवत आहे</translation>
 <translation id="2903493209154104877">पत्ते</translation>
 <translation id="4660011489602794167">कीबोर्ड दाखवा</translation>
 <translation id="5088366526685584589">सेव्ह केलेले ॲड्रेस दाखवत आहे</translation>
-<translation id="5552748600584301915">Chrome सह पत्ता भरण्यासाठी टॅप करा</translation>
 <translation id="6393156038355142111">क्लिष्ट पासवर्ड सुचवा</translation>
-<translation id="6810986916917535017">Chrome सह पासवर्ड भरण्यासाठी टॅप करा</translation>
 <translation id="7299100402441711551">पत्ते दाखवा</translation>
 <translation id="7494879913343971937">पासवर्ड दाखवा</translation>
 <translation id="8037472847879765671">पेमेंट पद्धती दाखवा</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ms.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ms.xtb
index b91edac..82862777 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ms.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ms.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ms">
-<translation id="1492646418094134664">Ketik untuk mengisikan butiran kad kredit menggunakan Chrome</translation>
 <translation id="1566281227936819866">Menunjukkan kaedah pembayaran yang disimpan</translation>
 <translation id="2610239185026711824">Cadangkan kata laluan</translation>
 <translation id="2803478378562657435">Menunjukkan kata laluan yang disimpan dan pilihan kata laluan</translation>
 <translation id="2903493209154104877">Alamat</translation>
 <translation id="4660011489602794167">Tunjukkan papan kekunci</translation>
 <translation id="5088366526685584589">Menunjukkan alamat yang disimpan</translation>
-<translation id="5552748600584301915">Ketik untuk mengisikan alamat menggunakan Chrome</translation>
 <translation id="6393156038355142111">Cadangkan kata laluan yang kukuh</translation>
-<translation id="6810986916917535017">Ketik untuk mengisikan kata laluan menggunakan Chrome</translation>
 <translation id="7299100402441711551">Tunjukkan Alamat</translation>
 <translation id="7494879913343971937">Tunjukkan kata laluan</translation>
 <translation id="8037472847879765671">Tunjukkan kaedah pembayaran</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_nl.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_nl.xtb
index 9dd2f9a..879da6d 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_nl.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_nl.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="nl">
-<translation id="1492646418094134664">Tik om de creditcardgegevens in te vullen via Chrome</translation>
 <translation id="1566281227936819866">Opgeslagen betaalmethoden weergeven</translation>
 <translation id="2610239185026711824">Wachtwoord voorstellen</translation>
 <translation id="2803478378562657435">Opgeslagen wachtwoorden en wachtwoordopties weergeven</translation>
 <translation id="2903493209154104877">Adressen</translation>
 <translation id="4660011489602794167">Toetsenbord weergeven</translation>
 <translation id="5088366526685584589">Opgeslagen adressen weergeven</translation>
-<translation id="5552748600584301915">Tik om het adres in te vullen via Chrome</translation>
 <translation id="6393156038355142111">Sterk wachtwoord voorstellen</translation>
-<translation id="6810986916917535017">Tik om het wachtwoord in te vullen via Chrome</translation>
 <translation id="7299100402441711551">Adressen weergeven</translation>
 <translation id="7494879913343971937">Wachtwoorden weergeven</translation>
 <translation id="8037472847879765671">Betaalmethoden weergeven</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_no.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_no.xtb
index f0ef3db9..c2b72816 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_no.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_no.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="no">
-<translation id="1492646418094134664">Trykk for å fylle ut kredittkortet med Chrome</translation>
 <translation id="1566281227936819866">Viser lagrede betalingsmåter</translation>
 <translation id="2610239185026711824">Foreslå passord</translation>
 <translation id="2803478378562657435">Viser lagrede passord og passordalternativer</translation>
 <translation id="2903493209154104877">Adresser</translation>
 <translation id="4660011489602794167">Vis tastatur</translation>
 <translation id="5088366526685584589">Viser lagrede adresser</translation>
-<translation id="5552748600584301915">Trykk for å fylle ut adressen med Chrome</translation>
 <translation id="6393156038355142111">Foreslå et sterkt passord</translation>
-<translation id="6810986916917535017">Trykk for å fylle ut passordet med Chrome</translation>
 <translation id="7299100402441711551">Vis adresser</translation>
 <translation id="7494879913343971937">Vis passord</translation>
 <translation id="8037472847879765671">Vis betalingsmåter</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pl.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pl.xtb
index 848e9fa..6be58a82 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pl.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pl.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="pl">
-<translation id="1492646418094134664">Kliknij, by wypełnić numer karty kredytowej za pomocą Chrome</translation>
 <translation id="1566281227936819866">Pokazuję zapisane formy płatności</translation>
 <translation id="2610239185026711824">Zaproponuj hasło</translation>
 <translation id="2803478378562657435">Wyświetlam zapisane hasła i opcje haseł</translation>
 <translation id="2903493209154104877">Adresy</translation>
 <translation id="4660011489602794167">Pokaż klawiaturę</translation>
 <translation id="5088366526685584589">Pokazuję zapisane adresy</translation>
-<translation id="5552748600584301915">Kliknij, by wypełnić adres w Chrome</translation>
 <translation id="6393156038355142111">Zaproponuj silne hasło</translation>
-<translation id="6810986916917535017">Kliknij, by wypełnić hasło za pomocą Chrome</translation>
 <translation id="7299100402441711551">Pokaż adresy</translation>
 <translation id="7494879913343971937">Pokazuj hasła</translation>
 <translation id="8037472847879765671">Pokaż formy płatności</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-BR.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-BR.xtb
index 0877daef..c651323 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-BR.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-BR.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="pt-BR">
-<translation id="1492646418094134664">Toque para preencher o cartão de crédito com o Chrome</translation>
 <translation id="1566281227936819866">Mostrando formas de pagamento salvas</translation>
 <translation id="2610239185026711824">Sugerir senha</translation>
 <translation id="2803478378562657435">Mostrando as senhas salvas e as opções de senha</translation>
 <translation id="2903493209154104877">Endereços</translation>
 <translation id="4660011489602794167">Mostrar teclado</translation>
 <translation id="5088366526685584589">Mostrando endereços salvos</translation>
-<translation id="5552748600584301915">Toque para preencher o endereço com o Chrome</translation>
 <translation id="6393156038355142111">Sugerir senha forte</translation>
-<translation id="6810986916917535017">Toque para preencher a senha com o Chrome</translation>
 <translation id="7299100402441711551">Mostrar endereços</translation>
 <translation id="7494879913343971937">Mostrar senhas</translation>
 <translation id="8037472847879765671">Mostrar formas de pagamento</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-PT.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-PT.xtb
index a9738ef1..c5bfbe8 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-PT.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_pt-PT.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="pt-PT">
-<translation id="1492646418094134664">Toque para preencher o cartão de crédito com o Chrome</translation>
 <translation id="1566281227936819866">A mostrar métodos de pagamento guardados…</translation>
 <translation id="2610239185026711824">Sugerir palavra-passe</translation>
 <translation id="2803478378562657435">A mostrar palavras-passe guardadas e opções de palavra-passe</translation>
 <translation id="2903493209154104877">Endereços</translation>
 <translation id="4660011489602794167">Mostrar teclado</translation>
 <translation id="5088366526685584589">A mostrar endereços guardados</translation>
-<translation id="5552748600584301915">Toque para preencher o endereço com o Chrome</translation>
 <translation id="6393156038355142111">Sugerir palavra-passe forte</translation>
-<translation id="6810986916917535017">Toque para preencher a palavra-passe com o Chrome</translation>
 <translation id="7299100402441711551">Mostrar endereços</translation>
 <translation id="7494879913343971937">Mostrar palavras-passe</translation>
 <translation id="8037472847879765671">Mostrar métodos de pagamento</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ro.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ro.xtb
index 8423247..0f035f2 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ro.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ro.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ro">
-<translation id="1492646418094134664">Atinge pentru a completa cardul de credit cu Chrome</translation>
 <translation id="1566281227936819866">Se afișează metodele de plată salvate</translation>
 <translation id="2610239185026711824">Sugerează o parolă</translation>
 <translation id="2803478378562657435">Se afișează parolele salvate și opțiunile pentru parole</translation>
 <translation id="2903493209154104877">Adrese</translation>
 <translation id="4660011489602794167">Afișează tastatura</translation>
 <translation id="5088366526685584589">Se afișează adresele salvate</translation>
-<translation id="5552748600584301915">Atinge pentru a completa adresele cu Chrome</translation>
 <translation id="6393156038355142111">Sugerează o parolă puternică</translation>
-<translation id="6810986916917535017">Atinge pentru a completa parolele cu Chrome</translation>
 <translation id="7299100402441711551">Arată adresele</translation>
 <translation id="7494879913343971937">Afișează parolele</translation>
 <translation id="8037472847879765671">Afișează metodele de plată</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ru.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ru.xtb
index 4793a20..17df12c9 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ru.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ru.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ru">
-<translation id="1492646418094134664">Нажмите, чтобы вставить данные карты из Chrome</translation>
 <translation id="1566281227936819866">Показаны сохраненные способы оплаты</translation>
 <translation id="2610239185026711824">Сгенерировать пароль</translation>
 <translation id="2803478378562657435">На экране показаны сохраненные пароли и настройки паролей</translation>
 <translation id="2903493209154104877">Адреса</translation>
 <translation id="4660011489602794167">Показать клавиатуру</translation>
 <translation id="5088366526685584589">Показаны сохраненные адреса</translation>
-<translation id="5552748600584301915">Нажмите, чтобы вставить адрес из Chrome</translation>
 <translation id="6393156038355142111">Сгенерировать надежный пароль</translation>
-<translation id="6810986916917535017">Нажмите, чтобы вставить пароль из Chrome</translation>
 <translation id="7299100402441711551">Показать адреса</translation>
 <translation id="7494879913343971937">Показать пароли</translation>
 <translation id="8037472847879765671">Показать способы оплаты</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sk.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sk.xtb
index 0d03243..1fb94ac 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sk.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sk.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="sk">
-<translation id="1492646418094134664">Klepnutím nechajte údaje kreditnej karty vyplniť Chrome</translation>
 <translation id="1566281227936819866">Zobrazujú sa uložené spôsoby platby</translation>
 <translation id="2610239185026711824">Navrhnúť heslo</translation>
 <translation id="2803478378562657435">Zobrazujú sa uložené heslá a možnosti hesiel</translation>
 <translation id="2903493209154104877">Adresy</translation>
 <translation id="4660011489602794167">Zobraziť klávesnicu</translation>
 <translation id="5088366526685584589">Zobrazujú sa uložené adresy</translation>
-<translation id="5552748600584301915">Klepnutím nechajte Chrome vyplniť adresu</translation>
 <translation id="6393156038355142111">Navrhnúť silné heslo</translation>
-<translation id="6810986916917535017">Klepnutím nechajte Chrome vyplniť heslo</translation>
 <translation id="7299100402441711551">Zobraziť adresy</translation>
 <translation id="7494879913343971937">Zobrazovať heslá</translation>
 <translation id="8037472847879765671">Zobraziť spôsoby platby</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sl.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sl.xtb
index 502fbe35..b9f5a03 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sl.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sl.xtb
@@ -1,15 +1,12 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="sl">
-<translation id="1492646418094134664">Dotaknite se, če želite izpolniti podatke kreditne kartice s Chromom</translation>
 <translation id="1566281227936819866">Prikaz shranjenih plačilnih sredstev</translation>
 <translation id="2610239185026711824">Predlagaj geslo</translation>
 <translation id="2803478378562657435">Prikazovanje shranjenih gesel in možnosti za gesla</translation>
 <translation id="2903493209154104877">Naslovi</translation>
 <translation id="5088366526685584589">Prikaz shranjenih naslovov</translation>
-<translation id="5552748600584301915">Dotaknite se, če želite izpolnjevati naslove s Chromom</translation>
 <translation id="6393156038355142111">Predlagaj zapleteno geslo</translation>
-<translation id="6810986916917535017">Dotaknite se, če želite izpolnjevati gesla s Chromom</translation>
 <translation id="7299100402441711551">Pokaži naslove</translation>
 <translation id="7494879913343971937">Prikaz gesel</translation>
 <translation id="8037472847879765671">Prikaz plačilnih sredstev</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sr.xtb
index 6950f44..69b484c 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sr.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sr.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="sr">
-<translation id="1492646418094134664">Додирните да бисте унели кредитну картицу помоћу Chrome-а</translation>
 <translation id="1566281227936819866">Приказују се сачувани начини плаћања</translation>
 <translation id="2610239185026711824">Предложи лозинку</translation>
 <translation id="2803478378562657435">Приказују се сачуване лозинке и опције за лозинке</translation>
 <translation id="2903493209154104877">Адресе</translation>
 <translation id="4660011489602794167">Прикажи тастатуру</translation>
 <translation id="5088366526685584589">Приказују се сачуване адресе</translation>
-<translation id="5552748600584301915">Додирните да бисте унели адресу помоћу Chrome-а</translation>
 <translation id="6393156038355142111">Предложи јаку лозинку</translation>
-<translation id="6810986916917535017">Додирните да бисте унели лозинку помоћу Chrome-а</translation>
 <translation id="7299100402441711551">Прикажи адресе</translation>
 <translation id="7494879913343971937">Приказуј лозинке</translation>
 <translation id="8037472847879765671">Прикажи начине плаћања</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sv.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sv.xtb
index aeba868..d37300b8 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sv.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sv.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="sv">
-<translation id="1492646418094134664">Tryck här om Chrome ska fylla i kreditkortsuppgifterna åt dig</translation>
 <translation id="1566281227936819866">Sparade betalningsmetoder visas</translation>
 <translation id="2610239185026711824">Föreslå lösenord</translation>
 <translation id="2803478378562657435">Sparade lösenord och lösenordsalternativ visas</translation>
 <translation id="2903493209154104877">Adresser</translation>
 <translation id="4660011489602794167">Visa tangentbord</translation>
 <translation id="5088366526685584589">Visa sparade adresser</translation>
-<translation id="5552748600584301915">Tryck här om Chrome ska fylla i adressen åt dig</translation>
 <translation id="6393156038355142111">Föreslå ett starkt lösenord</translation>
-<translation id="6810986916917535017">Tryck här om Chrome ska fylla i lösenordet åt dig</translation>
 <translation id="7299100402441711551">Visa adresser</translation>
 <translation id="7494879913343971937">Visa lösenord</translation>
 <translation id="8037472847879765671">Visa betalningsmetoder</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sw.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sw.xtb
index 0e8c852..c590c7e 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sw.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_sw.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="sw">
-<translation id="1492646418094134664">Gusa ili ujaze maelezo ya kadi ya mikopo ukitumia Chrome</translation>
 <translation id="1566281227936819866">Inaonyesha njia za kulipa ulizohifadhi</translation>
 <translation id="2610239185026711824">Pendekeza nenosiri</translation>
 <translation id="2803478378562657435">Inaonyesha manenosiri yaliyohifadhiwa na chaguo za manenosiri</translation>
 <translation id="2903493209154104877">Anwani</translation>
 <translation id="4660011489602794167">Onyesha kibodi</translation>
 <translation id="5088366526685584589">Inaonyesha anwani zilizohifadhiwa</translation>
-<translation id="5552748600584301915">Gusa ili ujaze anwani ukitumia Chrome</translation>
 <translation id="6393156038355142111">Pendekeza nenosiri thabiti</translation>
-<translation id="6810986916917535017">Gusa ili ujaze nenosiri ukitumia Chrome</translation>
 <translation id="7299100402441711551">Onyesha Anwani</translation>
 <translation id="7494879913343971937">Onyesha manenosiri</translation>
 <translation id="8037472847879765671">Onyesha njia za kulipa</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ta.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ta.xtb
index 631f99cc..ca2ea1c 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ta.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_ta.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="ta">
-<translation id="1492646418094134664">Chrome மூலம் உங்கள் கிரெடிட் கார்டு விவரங்களை நிரப்பத் தட்டவும்</translation>
 <translation id="1566281227936819866">சேமித்துள்ள கட்டண முறைகளைக் காட்டுகிறது</translation>
 <translation id="2610239185026711824">கடவுச்சொல்லைப் பரிந்துரை</translation>
 <translation id="2803478378562657435">சேமித்த கடவுச்சொற்களையும் கடவுச்சொல் விருப்பங்களையும் காண்பிக்கிறது</translation>
 <translation id="2903493209154104877">முகவரிகள்</translation>
 <translation id="4660011489602794167">விசைப்பலகையைக் காட்டு</translation>
 <translation id="5088366526685584589">சேமித்த முகவரிகளைக் காட்டுகிறது</translation>
-<translation id="5552748600584301915">Chrome மூலம் முகவரியை நிரப்பத் தட்டவும்</translation>
 <translation id="6393156038355142111">வலுவான கடவுச்சொல்லைப் பரிந்துரை</translation>
-<translation id="6810986916917535017">Chrome மூலம் கடவுச்சொல்லை நிரப்பத் தட்டவும்</translation>
 <translation id="7299100402441711551">முகவரிகளைக் காட்டும்</translation>
 <translation id="7494879913343971937">கடவுச்சொற்களைக் காட்டும்</translation>
 <translation id="8037472847879765671">கட்டண முறைகளைக் காட்டும்</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_te.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_te.xtb
index ae7abc3..3ef4f708 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_te.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_te.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="te">
-<translation id="1492646418094134664">Chrome సహాయంతో క్రెడిట్ కార్డ్ వివరాలను నింపడానికి నొక్కండి</translation>
 <translation id="1566281227936819866">సేవ్ చేసిన చెల్లింపు పద్ధతులను చూపుతోంది</translation>
 <translation id="2610239185026711824">పాస్‌వర్డ్‌ని సూచించు</translation>
 <translation id="2803478378562657435">సేవ్ చేసిన పాస్‌వర్డ్‌లు మరియు పాస్‌వర్డ్ ఎంపికలను చూపిస్తోంది</translation>
 <translation id="2903493209154104877">చిరునామాలు</translation>
 <translation id="4660011489602794167">కీబోర్డ్‌ను చూపు</translation>
 <translation id="5088366526685584589">సేవ్ చేసిన చిరునామాలను చూపుతోంది</translation>
-<translation id="5552748600584301915">Chrome సహాయంతో చిరునామాను నింపడానికి ఇక్కడ నొక్కండి</translation>
 <translation id="6393156038355142111">శక్తివంతమైన పాస్‌వర్డ్‌ని సూచించు</translation>
-<translation id="6810986916917535017">Chrome సహాయంతో పాస్‌వర్డ్‌ను నింపడానికి నొక్కండి</translation>
 <translation id="7299100402441711551">చిరునామాలను చూపుతుంది</translation>
 <translation id="7494879913343971937">పాస్‌వర్డ్‌లను చూపుతుంది</translation>
 <translation id="8037472847879765671">చెల్లింపు పద్ధతులను చూపుతుంది</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_th.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_th.xtb
index e5ae288..e144b66 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_th.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_th.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="th">
-<translation id="1492646418094134664">แตะเพื่อกรอกข้อมูลบัตรเครดิตด้วย Chrome</translation>
 <translation id="1566281227936819866">กำลังแสดงวิธีการชำระเงินที่บันทึกไว้</translation>
 <translation id="2610239185026711824">แนะนำรหัสผ่าน</translation>
 <translation id="2803478378562657435">กำลังแสดงรหัสผ่านที่บันทึกไว้และตัวเลือกรหัสผ่าน</translation>
 <translation id="2903493209154104877">ที่อยู่</translation>
 <translation id="4660011489602794167">แสดงแป้นพิมพ์</translation>
 <translation id="5088366526685584589">กำลังแสดงที่อยู่ที่บันทึกไว้</translation>
-<translation id="5552748600584301915">แตะเพื่อกรอกที่อยู่ด้วย Chrome</translation>
 <translation id="6393156038355142111">แนะนำรหัสผ่านที่รัดกุม</translation>
-<translation id="6810986916917535017">แตะเพื่อกรอกรหัสผ่านด้วย Chrome</translation>
 <translation id="7299100402441711551">แสดงที่อยู่</translation>
 <translation id="7494879913343971937">แสดงรหัสผ่าน</translation>
 <translation id="8037472847879765671">แสดงวิธีการชำระเงิน</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_tr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_tr.xtb
index c62f416..3879132 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_tr.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_tr.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="tr">
-<translation id="1492646418094134664">Kredi kartını Chrome'la doldurmak için dokunun</translation>
 <translation id="1566281227936819866">Kayıtlı ödeme yöntemleri</translation>
 <translation id="2610239185026711824">Şifre öner</translation>
 <translation id="2803478378562657435">Kayıtlı şifreler ve şifre seçenekleri gösteriliyor</translation>
 <translation id="2903493209154104877">Adresler</translation>
 <translation id="4660011489602794167">Klavyeyi göster</translation>
 <translation id="5088366526685584589">Kayıtlı adresler gösteriliyor</translation>
-<translation id="5552748600584301915">Adresi Chrome'la doldurmak için dokunun</translation>
 <translation id="6393156038355142111">Güçlü şifre öner</translation>
-<translation id="6810986916917535017">Şifreyi Chrome'la doldurmak için dokunun</translation>
 <translation id="7299100402441711551">Adresleri Göster</translation>
 <translation id="7494879913343971937">Şifreleri göster</translation>
 <translation id="8037472847879765671">Ödeme yöntemlerini göster</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_uk.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_uk.xtb
index f8bee41..68aae4f 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_uk.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_uk.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="uk">
-<translation id="1492646418094134664">Натисніть, щоб ввести дані кредитної картки за допомогою Chrome</translation>
 <translation id="1566281227936819866">Показано збережені способи оплати</translation>
 <translation id="2610239185026711824">Запропонувати пароль</translation>
 <translation id="2803478378562657435">Показано збережені паролі та їх параметри</translation>
 <translation id="2903493209154104877">Адреси</translation>
 <translation id="4660011489602794167">Показати клавіатуру</translation>
 <translation id="5088366526685584589">Показано збережені адреси</translation>
-<translation id="5552748600584301915">Натисніть, щоб ввести адресу за допомогою Chrome</translation>
 <translation id="6393156038355142111">Запропонувати надійний пароль</translation>
-<translation id="6810986916917535017">Натисніть, щоб ввести пароль за допомогою Chrome</translation>
 <translation id="7299100402441711551">Показати адреси</translation>
 <translation id="7494879913343971937">Показати паролі</translation>
 <translation id="8037472847879765671">Показати способи оплати</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_vi.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_vi.xtb
index a8f2cb6..beb630f4 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_vi.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_vi.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="vi">
-<translation id="1492646418094134664">Nhấn để điền thông tin thẻ tín dụng bằng Chrome</translation>
 <translation id="1566281227936819866">Đang hiển thị các phương thức thanh toán đã lưu</translation>
 <translation id="2610239185026711824">Đề xuất mật khẩu</translation>
 <translation id="2803478378562657435">Đang hiển thị mật khẩu đã lưu và các tùy chọn mật khẩu</translation>
 <translation id="2903493209154104877">Địa chỉ</translation>
 <translation id="4660011489602794167">Hiển thị bàn phím</translation>
 <translation id="5088366526685584589">Đang hiển thị các địa chỉ đã lưu</translation>
-<translation id="5552748600584301915">Nhấn để điền địa chỉ bằng Chrome</translation>
 <translation id="6393156038355142111">Đề xuất mật khẩu mạnh</translation>
-<translation id="6810986916917535017">Nhấn để điền mật khẩu bằng Chrome</translation>
 <translation id="7299100402441711551">Hiển thị địa chỉ</translation>
 <translation id="7494879913343971937">Hiển thị mật khẩu</translation>
 <translation id="8037472847879765671">Hiển thị các phương thức thanh toán</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-CN.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-CN.xtb
index 73da495..edc8479 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-CN.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-CN.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="zh-CN">
-<translation id="1492646418094134664">点按即可通过 Chrome 填充信用卡信息</translation>
 <translation id="1566281227936819866">显示的是已保存的付款方式</translation>
 <translation id="2610239185026711824">建议一个密码</translation>
 <translation id="2803478378562657435">正在显示已保存的密码和密码选项</translation>
 <translation id="2903493209154104877">地址</translation>
 <translation id="4660011489602794167">显示键盘</translation>
 <translation id="5088366526685584589">目前显示的是已保存的地址</translation>
-<translation id="5552748600584301915">点按即可通过 Chrome 填充地址</translation>
 <translation id="6393156038355142111">建议一个安全系数高的密码</translation>
-<translation id="6810986916917535017">点按即可通过 Chrome 填充密码</translation>
 <translation id="7299100402441711551">显示地址</translation>
 <translation id="7494879913343971937">显示密码</translation>
 <translation id="8037472847879765671">显示付款方式</translation>
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-TW.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-TW.xtb
index f7af3fa..15c7f817 100644
--- a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-TW.xtb
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_keyboard_accessory_strings_zh-TW.xtb
@@ -1,16 +1,13 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="zh-TW">
-<translation id="1492646418094134664">輕觸即可透過 Chrome 填入信用卡資訊</translation>
 <translation id="1566281227936819866">正在顯示已儲存的付款方式</translation>
 <translation id="2610239185026711824">建議密碼</translation>
 <translation id="2803478378562657435">正在顯示已儲存的密碼和密碼選項</translation>
 <translation id="2903493209154104877">地址</translation>
 <translation id="4660011489602794167">顯示鍵盤</translation>
 <translation id="5088366526685584589">顯示已儲存的地址</translation>
-<translation id="5552748600584301915">輕觸即可透過 Chrome 填入地址</translation>
 <translation id="6393156038355142111">建議高強度密碼</translation>
-<translation id="6810986916917535017">輕觸即可透過 Chrome 填入密碼</translation>
 <translation id="7299100402441711551">顯示地址</translation>
 <translation id="7494879913343971937">顯示密碼</translation>
 <translation id="8037472847879765671">顯示付款方式</translation>
diff --git a/chrome/android/features/media_router/junit/src/org/chromium/chrome/browser/media/router/ChromeMediaRouterSinkObservationTest.java b/chrome/android/features/media_router/junit/src/org/chromium/chrome/browser/media/router/ChromeMediaRouterSinkObservationTest.java
index 82bf609..0f0215d 100644
--- a/chrome/android/features/media_router/junit/src/org/chromium/chrome/browser/media/router/ChromeMediaRouterSinkObservationTest.java
+++ b/chrome/android/features/media_router/junit/src/org/chromium/chrome/browser/media/router/ChromeMediaRouterSinkObservationTest.java
@@ -7,8 +7,6 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import android.os.Build;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.annotation.Config;
@@ -121,7 +119,6 @@
     public void testIsLowRamDevice() throws Exception {
         SysUtils.resetForTesting();
         CommandLine.getInstance().appendSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE);
-        assertEquals(Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2,
-                mChromeMediaRouter.startObservingMediaSinks(SOURCE_ID1));
+        assertEquals(false, mChromeMediaRouter.startObservingMediaSinks(SOURCE_ID1));
     }
 }
diff --git a/chrome/android/java/monochrome_public_bundle.proguard_flags.expected b/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
index 1dd1e7e..59b584f 100644
--- a/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
+++ b/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
@@ -262,7 +262,9 @@
 # Contains flags that are applied only when ENABLE_DCHECK=false.
 
 # Ensure that LifetimeAssert implementation is not reachable in release.
--checkdiscard class org.chromium.base.LifetimeAssert$WrappedReference { *; }
+# Temporarily commenting this out until R8 rolls with a fix to the optimization
+# that should remove this class. See b/135918413.
+#-checkdiscard class org.chromium.base.LifetimeAssert$WrappedReference { *; }
 
 ################################################################################
 # ../../base/android/proguard/enable_obfuscation.flags
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
index 363f85d..72e2018 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
@@ -153,8 +153,6 @@
     public static final String ALLOW_NEW_INCOGNITO_TAB_INTENTS = "AllowNewIncognitoTabIntents";
     public static final String ALLOW_REMOTE_CONTEXT_FOR_NOTIFICATIONS =
             "AllowRemoteContextForNotifications";
-    public static final String ALLOW_STARTING_SERVICE_MANAGER_ONLY =
-            "AllowStartingServiceManagerOnly";
     public static final String AUTOFILL_ALLOW_NON_HTTP_ACTIVATION =
             "AutofillAllowNonHttpActivation";
     public static final String AUTOFILL_ENABLE_COMPANY_NAME = "AutofillEnableCompanyName";
@@ -220,11 +218,12 @@
     public static final String CUSTOM_CONTEXT_MENU = "CustomContextMenu";
     public static final String DELEGATE_OVERSCROLL_SWIPES = "DelegateOverscrollSwipes";
     public static final String DIRECT_ACTIONS = "DirectActions";
+    public static final String DOWNLOAD_FILE_PROVIDER = "DownloadFileProvider";
+    public static final String DOWNLOAD_HOME_SHOW_STORAGE_INFO = "DownloadHomeShowStorageInfo";
+    public static final String DOWNLOAD_HOME_V2 = "DownloadHomeV2";
     public static final String DOWNLOAD_LOCATION_SHOW_IMAGE_IN_GALLERY =
             "DownloadLocationShowImageInGallery";
-    public static final String DOWNLOAD_HOME_SHOW_STORAGE_INFO = "DownloadHomeShowStorageInfo";
     public static final String DOWNLOAD_PROGRESS_INFOBAR = "DownloadProgressInfoBar";
-    public static final String DOWNLOAD_HOME_V2 = "DownloadHomeV2";
     public static final String DOWNLOAD_RENAME = "DownloadRename";
     public static final String DOWNLOADS_FOREGROUND = "DownloadsForeground";
     public static final String DOWNLOADS_AUTO_RESUMPTION_NATIVE = "DownloadsAutoResumptionNative";
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetService.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetService.java
index 53f551a69..e792192 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetService.java
@@ -4,7 +4,6 @@
 
 package org.chromium.chrome.browser.bookmarkswidget;
 
-import android.annotation.SuppressLint;
 import android.appwidget.AppWidgetManager;
 import android.content.Context;
 import android.content.Intent;
@@ -47,6 +46,7 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Locale;
 import java.util.concurrent.LinkedBlockingQueue;
 
 /**
@@ -82,13 +82,11 @@
         return ContextUtils.getApplicationContext().getPackageName() + ACTION_CHANGE_FOLDER_SUFFIX;
     }
 
-    // TODO(crbug.com/635567): Fix this properly.
-    @SuppressLint("DefaultLocale")
     static SharedPreferences getWidgetState(int widgetId) {
         StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
         try {
             return ContextUtils.getApplicationContext().getSharedPreferences(
-                    String.format("widgetState-%d", widgetId), Context.MODE_PRIVATE);
+                    String.format(Locale.US, "widgetState-%d", widgetId), Context.MODE_PRIVATE);
         } finally {
             StrictMode.setThreadPolicy(oldPolicy);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java
index 25e9e77..4c9bdef 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java
@@ -37,6 +37,8 @@
  * A helper class that handles generating context menus for {@link WebContents}s.
  */
 public class ContextMenuHelper implements OnCreateContextMenuListener {
+    public static Callback<RevampedContextMenuCoordinator> sRevampedContextMenuShownCallback;
+
     private static final int MAX_SHARE_DIMEN_PX = 2048;
 
     private final WebContents mWebContents;
@@ -137,6 +139,9 @@
                             topContentOffsetPx, this::shareImageWithLastShareComponent);
             menuCoordinator.displayMenu(mActivity, mCurrentContextMenuParams, items, mCallback,
                     mOnMenuShown, mOnMenuClosed);
+            if (sRevampedContextMenuShownCallback != null) {
+                sRevampedContextMenuShownCallback.onResult(menuCoordinator);
+            }
             // TODO(sinansahin): This could be pushed in to the header mediator.
             if (mCurrentContextMenuParams.isImage()) {
                 getThumbnail(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuCoordinator.java
index c47c4c8f..ae63044 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuCoordinator.java
@@ -46,6 +46,7 @@
 
     private RevampedContextMenuHeaderCoordinator mHeaderCoordinator;
 
+    private RevampedContextMenuListView mListView;
     private float mTopContentOffsetPx;
     private ContextMenuDialog mDialog;
     private Runnable mOnShareImageDirectly;
@@ -100,8 +101,8 @@
             }
         };
 
-        RevampedContextMenuListView listView = view.findViewById(R.id.context_menu_list_view);
-        listView.setAdapter(adapter);
+        mListView = view.findViewById(R.id.context_menu_list_view);
+        mListView.setAdapter(adapter);
 
         // Note: clang-format does a bad job formatting lambdas so we turn it off here.
         // clang-format off
@@ -111,17 +112,17 @@
                 RevampedContextMenuHeaderViewBinder::bind);
         adapter.registerType(
                 ListItemType.DIVIDER,
-                () -> LayoutInflater.from(listView.getContext())
+                () -> LayoutInflater.from(mListView.getContext())
                         .inflate(R.layout.context_menu_divider, null),
                 (m, v, p) -> {});
         adapter.registerType(
                 ListItemType.CONTEXT_MENU_ITEM,
-                () -> LayoutInflater.from(listView.getContext())
+                () -> LayoutInflater.from(mListView.getContext())
                         .inflate(R.layout.revamped_context_menu_row, null),
                 RevampedContextMenuItemViewBinder::bind);
         adapter.registerType(
                 ListItemType.CONTEXT_MENU_SHARE_ITEM,
-                () -> LayoutInflater.from(listView.getContext())
+                () -> LayoutInflater.from(mListView.getContext())
                         .inflate(R.layout.revamped_context_menu_share_row, null),
                 RevampedContextMenuShareItemViewBinder::bind);
         // clang-format on
@@ -130,7 +131,7 @@
         List<Pair<Integer, PropertyModel>> itemList = getItemList(activity, items, params);
 
         adapter.updateModels(itemList);
-        listView.setOnItemClickListener((p, v, pos, id) -> {
+        mListView.setOnItemClickListener((p, v, pos, id) -> {
             assert id != INVALID_ITEM_ID;
 
             mDialog.dismiss();
@@ -236,4 +237,8 @@
     void initializeHeaderCoordinatorForTesting(Activity activity, ContextMenuParams params) {
         mHeaderCoordinator = new RevampedContextMenuHeaderCoordinator(activity, params);
     }
+
+    public void clickListItemForTesting(int id) {
+        mListView.performItemClick(null, -1, id);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadFileProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadFileProvider.java
index 2cbce1e0..5252d81 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadFileProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadFileProvider.java
@@ -17,11 +17,9 @@
 import android.text.TextUtils;
 import android.webkit.MimeTypeMap;
 
-import org.chromium.base.Callback;
 import org.chromium.base.ContentUriUtils;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.VisibleForTesting;
-import org.chromium.base.task.AsyncTask;
 import org.chromium.chrome.browser.util.UrlConstants;
 
 import java.io.File;
@@ -57,77 +55,46 @@
 
     /**
      * Create content URI on user device.
-     * See {@link #createContentUri(String, DownloadDirectoryProvider.Delegate, Callback)}
+     * See {@link #createContentUri(String, DownloadDirectoryProvider.Delegate)}
      */
-    public static void createContentUri(String filePath, Callback<Uri> callback) {
-        createContentUri(filePath,
-                new DownloadDirectoryProvider.DownloadDirectoryProviderDelegate(), callback);
+    public static Uri createContentUri(String filePath) {
+        return createContentUri(
+                filePath, new DownloadDirectoryProvider.DownloadDirectoryProviderDelegate());
     }
 
     /**
      * Create content uri for a downloaded file, mainly for files on external sd card.
      * @param filePath The file path of the file.
      * @param delegate Delegate that queries download directories.
-     * @param callback The callback that contains the result Uri. Result can be null if failed to
-     *                 generate content URI for a download file.
+     * @return The content URI that points to the downloaded file.
      */
     @VisibleForTesting
-    public static void createContentUri(
-            String filePath, DownloadDirectoryProvider.Delegate delegate, Callback<Uri> callback) {
-        new ContentUriTask(filePath, delegate, callback)
-                .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-    }
+    public static Uri createContentUri(
+            String filePath, DownloadDirectoryProvider.Delegate delegate) {
+        // From Android Q, we may already have a content URI generated by the media store. Then
+        // just let the media store to handle this content URI.
+        if (ContentUriUtils.isContentUri(filePath)) return Uri.parse(filePath);
+        if (TextUtils.isEmpty(filePath)) return Uri.EMPTY;
 
-    /**
-     * Async task that generates content URI on a background thread.
-     */
-    private static class ContentUriTask extends AsyncTask<Uri> {
-        private final String mFilePath;
-        private final Callback<Uri> mCallback;
-        private final DownloadDirectoryProvider.Delegate mDelegate;
-        ContentUriTask(String filePath, DownloadDirectoryProvider.Delegate delegate,
-                Callback<Uri> callback) {
-            mFilePath = filePath;
-            mDelegate = delegate;
-            mCallback = callback;
+        File primaryDir = delegate.getPrimaryDownloadDirectory();
+        int index = filePath.indexOf(primaryDir.getAbsolutePath());
+        if (index == 0 && filePath.length() > primaryDir.getAbsolutePath().length()) {
+            return buildUri(
+                    URI_PATH, filePath.substring(primaryDir.getAbsolutePath().length() + 1));
         }
 
-        @Override
-        protected Uri doInBackground() {
-            return generateContentUri(mFilePath);
-        }
-
-        @Override
-        protected void onPostExecute(Uri uri) {
-            if (mCallback != null) mCallback.onResult(uri);
-        }
-
-        private Uri generateContentUri(String filePath) {
-            // From Android Q, we may already have a content URI generated by the media store. Then
-            // just let the media store to handle this content URI.
-            if (ContentUriUtils.isContentUri(filePath)) return Uri.parse(filePath);
-            if (TextUtils.isEmpty(filePath)) return Uri.EMPTY;
-
-            File primaryDir = mDelegate.getPrimaryDownloadDirectory();
-            int index = filePath.indexOf(primaryDir.getAbsolutePath());
-            if (index == 0 && filePath.length() > primaryDir.getAbsolutePath().length()) {
+        File[] files;
+        files = delegate.getExternalFilesDirs();
+        for (int i = 1; i < files.length; ++i) {
+            File file = files[i];
+            index = filePath.indexOf(file.getAbsolutePath());
+            if (index == 0 && filePath.length() > file.getAbsolutePath().length()) {
                 return buildUri(
-                        URI_PATH, filePath.substring(primaryDir.getAbsolutePath().length() + 1));
+                        URI_EXTERNAL_PATH, filePath.substring(file.getAbsolutePath().length() + 1));
             }
-
-            File[] files;
-            files = mDelegate.getExternalFilesDirs();
-            for (int i = 1; i < files.length; ++i) {
-                File file = files[i];
-                index = filePath.indexOf(file.getAbsolutePath());
-                if (index == 0 && filePath.length() > file.getAbsolutePath().length()) {
-                    return buildUri(URI_EXTERNAL_PATH,
-                            filePath.substring(file.getAbsolutePath().length() + 1));
-                }
-            }
-
-            return Uri.EMPTY;
         }
+
+        return Uri.EMPTY;
     }
 
     private static Uri buildUri(String path, String query) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
index 8d3c0138..f1c56269 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
@@ -21,7 +21,6 @@
 import android.text.TextUtils;
 import android.util.Pair;
 
-import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.Callback;
 import org.chromium.base.ContentUriUtils;
 import org.chromium.base.ContextUtils;
@@ -817,9 +816,8 @@
                 DownloadManagerBridge.queryDownloadResult(downloadId);
         if (mimeType == null) mimeType = queryResult.mimeType;
 
-        Uri contentUri = filePath == null
-                ? queryResult.contentUri
-                : ApiCompatibilityUtils.getUriForDownloadedFile(new File(filePath));
+        Uri contentUri = filePath == null ? queryResult.contentUri
+                                          : DownloadUtils.getUriForOtherApps(filePath);
         if (contentUri == null) return null;
 
         Uri fileUri = filePath == null ? contentUri : Uri.fromFile(new File(filePath));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
index 0c9c0f8a3..7111291 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
@@ -10,9 +10,11 @@
 import android.content.Intent;
 import android.content.res.ColorStateList;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Environment;
 import android.os.StrictMode;
 import android.support.annotation.IntDef;
+import android.support.annotation.MainThread;
 import android.support.annotation.Nullable;
 import android.support.v7.content.res.AppCompatResources;
 import android.text.TextUtils;
@@ -569,23 +571,45 @@
      * @param filePath File path to get a URI for.
      * @return URI that points at that file, either as a content:// URI or a file:// URI.
      */
+    @MainThread
     public static Uri getUriForItem(String filePath) {
         if (ContentUriUtils.isContentUri(filePath)) return Uri.parse(filePath);
 
+        // It's ok to use blocking calls on main thread here, since the user is waiting to open or
+        // share the file to other apps.
+        StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
         Uri uri = null;
 
-        // FileUtils.getUriForFile() causes a disk read when it calls into
-        // FileProvider#getUriForFile. Obtaining a content URI is on the critical path for creating
-        // a share intent after the user taps on the share button, so even if we were to run this
-        // method on a background thread we would have to wait. As it depends on user-selected
-        // items, we cannot know/preload which URIs we need until the user presses share.
-        StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
-        uri = FileUtils.getUriForFile(new File(filePath));
-        StrictMode.setThreadPolicy(oldPolicy);
-
+        try {
+            File primaryDir = DownloadDirectoryProvider.getPrimaryDownloadDirectory();
+            boolean isOnSDCard = !TextUtils.isEmpty(filePath)
+                    && !filePath.contains(primaryDir.getAbsolutePath());
+            if (ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOAD_FILE_PROVIDER)
+                    && isOnSDCard) {
+                // Use custom file provider to generate content URI for download on SD card.
+                uri = DownloadFileProvider.createContentUri(filePath);
+            } else {
+                // Use FileProvider to generate content URI or file URI.
+                uri = FileUtils.getUriForFile(new File(filePath));
+            }
+        } finally {
+            StrictMode.setThreadPolicy(oldPolicy);
+        }
         return uri;
     }
 
+    /**
+     * Get the URI when shared or opened by other apps.
+     *
+     * @param filePath Downloaded file path.
+     * @return URI for other apps to use the file via {@link android.content.ContentResolver}.
+     */
+    public static Uri getUriForOtherApps(String filePath) {
+        // Some old Samsung devices with Android M- must use file URI. See https://crbug.com/705748.
+        return Build.VERSION.SDK_INT > Build.VERSION_CODES.M ? getUriForItem(filePath)
+                                                             : Uri.fromFile(new File(filePath));
+    }
+
     @CalledByNative
     private static String getUriStringForPath(String filePath) {
         if (ContentUriUtils.isContentUri(filePath)) return filePath;
@@ -643,12 +667,12 @@
         DownloadMetrics.recordDownloadOpen(source, mimeType);
         Context context = ContextUtils.getApplicationContext();
         DownloadManagerService service = DownloadManagerService.getDownloadManagerService();
-        Uri contentUri = getUriForItem(filePath);
 
         // Check if Chrome should open the file itself.
         if (service.isDownloadOpenableInBrowser(isOffTheRecord, mimeType)) {
             // Share URIs use the content:// scheme when able, which looks bad when displayed
             // in the URL bar.
+            Uri contentUri = getUriForItem(filePath);
             Uri fileUri = contentUri;
             if (!ContentUriUtils.isContentUri(filePath)) {
                 File file = new File(filePath);
@@ -656,8 +680,9 @@
             }
             String normalizedMimeType = Intent.normalizeMimeType(mimeType);
 
-            Intent intent = MediaViewerUtils.getMediaViewerIntent(
-                    fileUri, contentUri, normalizedMimeType, true /* allowExternalAppHandlers */);
+            Intent intent = MediaViewerUtils.getMediaViewerIntent(fileUri /*displayUri*/,
+                    contentUri /*contentUri*/, normalizedMimeType,
+                    true /* allowExternalAppHandlers */);
             IntentHandler.startActivityForTrustedIntent(intent);
             service.updateLastAccessTime(downloadGuid, isOffTheRecord);
             return true;
@@ -667,9 +692,8 @@
         try {
             // TODO(qinmin): Move this to an AsyncTask so we don't need to temper with strict mode.
             StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
-            Uri uri = ContentUriUtils.isContentUri(filePath)
-                    ? contentUri
-                    : ApiCompatibilityUtils.getUriForDownloadedFile(new File(filePath));
+            Uri uri = ContentUriUtils.isContentUri(filePath) ? Uri.parse(filePath)
+                                                             : getUriForOtherApps(filePath);
             StrictMode.setThreadPolicy(oldPolicy);
             Intent viewIntent =
                     MediaViewerUtils.createViewIntentForUri(uri, mimeType, originalUrl, referrer);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/MediaViewerUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/media/MediaViewerUtils.java
index a848560..1a7c05a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/MediaViewerUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/MediaViewerUtils.java
@@ -150,7 +150,6 @@
      */
     public static void setOriginalUrlAndReferralExtraToIntent(
             Intent intent, String originalUrl, String referrer) {
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) return;
         if (originalUrl != null) {
             intent.putExtra(Intent.EXTRA_ORIGINATING_URI, Uri.parse(originalUrl));
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/BitmapUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/BitmapUtils.java
index 0eeeaa9..a8c55c7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/BitmapUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/BitmapUtils.java
@@ -74,6 +74,7 @@
 
     /**
      * Given a FileDescriptor, decodes the video and returns a bitmap of dimensions |size|x|size|.
+     * @param retriever The MediaMetadataRetriever to use (must have source already set).
      * @param descriptor The FileDescriptor for the file to read.
      * @param size The width and height of the bitmap to return.
      * @param frames The number of frames to extract.
@@ -81,13 +82,7 @@
      * @return A list of extracted frames.
      */
     public static List<Bitmap> decodeVideoFromFileDescriptor(MediaMetadataRetriever retriever,
-            FileDescriptor descriptor, int size, int frames, int intervalMs) {
-        try {
-            retriever.setDataSource(descriptor);
-        } catch (RuntimeException exception) {
-            return null;
-        }
-
+            FileDescriptor descriptor, int size, int frames, long intervalMs) {
         List<Bitmap> bitmaps = new ArrayList<Bitmap>();
         Bitmap bitmap = null;
         for (int frame = 0; frame < frames; ++frame) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecodeVideoTask.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecodeVideoTask.java
index 4fd8b11a..808ee16 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecodeVideoTask.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecodeVideoTask.java
@@ -49,7 +49,7 @@
     int mFrames;
 
     // The interval between frames (in milliseconds).
-    int mIntervalMs;
+    long mIntervalMs;
 
     // The ContentResolver to use to retrieve image metadata from disk.
     private ContentResolver mContentResolver;
@@ -68,7 +68,7 @@
      * @param intervalMs The interval between frames (in milliseconds).
      */
     public DecodeVideoTask(VideoDecodingCallback callback, ContentResolver contentResolver, Uri uri,
-            int size, int frames, int intervalMs) {
+            int size, int frames, long intervalMs) {
         mCallback = callback;
         mContentResolver = contentResolver;
         mUri = uri;
@@ -111,13 +111,25 @@
         AssetFileDescriptor afd = null;
         try {
             afd = mContentResolver.openAssetFileDescriptor(mUri, "r");
-            List<Bitmap> bitmaps = BitmapUtils.decodeVideoFromFileDescriptor(
-                    mRetriever, afd.getFileDescriptor(), mSize, mFrames, mIntervalMs);
+            mRetriever.setDataSource(afd.getFileDescriptor());
             String duration =
                     mRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
-            return new Pair<List<Bitmap>, String>(bitmaps, formatDuration(duration));
+            if (duration != null) {
+                // Adjust to a shorter video, if the frame requests exceed the length of the video.
+                long durationMs = Long.parseLong(duration);
+                if (mFrames > 1 && mFrames * mIntervalMs > durationMs) {
+                    mIntervalMs = durationMs / mFrames;
+                }
+                duration = formatDuration(duration);
+            }
+            List<Bitmap> bitmaps = BitmapUtils.decodeVideoFromFileDescriptor(
+                    mRetriever, afd.getFileDescriptor(), mSize, mFrames, mIntervalMs);
+
+            return new Pair<List<Bitmap>, String>(bitmaps, duration);
         } catch (FileNotFoundException exception) {
             return null;
+        } catch (RuntimeException exception) {
+            return null;
         } finally {
             try {
                 if (afd != null) afd.close();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceHost.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceHost.java
index 2b023d4..e787072 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceHost.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceHost.java
@@ -294,23 +294,28 @@
         // make sure the code runs on the UI thread, since further down the callchain the code will
         // end up creating UI objects.
         PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
+            String filePath = "";
+            List<Bitmap> bitmaps = null;
+            String videoDuration = null;
+            long decodeTime = -1;
             try {
                 // Read the reply back from the service.
-                String filePath = payload.getString(DecoderService.KEY_FILE_PATH);
+                filePath = payload.getString(DecoderService.KEY_FILE_PATH);
                 Boolean success = payload.getBoolean(DecoderService.KEY_SUCCESS);
                 Bitmap bitmap = success
                         ? (Bitmap) payload.getParcelable(DecoderService.KEY_IMAGE_BITMAP)
                         : null;
-                long decodeTime = payload.getLong(DecoderService.KEY_DECODE_TIME);
+                decodeTime = payload.getLong(DecoderService.KEY_DECODE_TIME);
                 mSuccessfulDecodes++;
-                List<Bitmap> bitmaps = new ArrayList<>(1);
+                bitmaps = new ArrayList<>(1);
                 bitmaps.add(bitmap);
-                closeRequest(
-                        filePath, /*isVideo=*/false, bitmaps, /*videoDuration=*/null, decodeTime);
             } catch (RuntimeException e) {
                 mFailedDecodesRuntime++;
             } catch (OutOfMemoryError e) {
                 mFailedDecodesMemory++;
+            } finally {
+                closeRequest(
+                        filePath, /*isVideo=*/false, bitmaps, /*videoDuration=*/null, decodeTime);
             }
         });
     }
@@ -320,6 +325,7 @@
      * decoding process back to the client, and takes care of house-keeping chores regarding
      * the request queue).
      * @param filePath The path to the image that was just decoded.
+     * @param isVideo True if the request was for video decoding.
      * @param bitmaps The resulting decoded bitmaps, or null if decoding fails.
      * @param decodeTime The length of time it took to decode the bitmap.
      */
@@ -334,7 +340,7 @@
             params.mCallback.imagesDecodedCallback(filePath, isVideo, bitmaps, videoDuration);
 
             // TODO(finnur): Add UMA for videos.
-            if (isVideo && decodeTime != -1 && bitmaps.get(0) != null) {
+            if (!isVideo && decodeTime != -1 && bitmaps != null && bitmaps.get(0) != null) {
                 RecordHistogram.recordTimesHistogram(
                         "Android.PhotoPicker.ImageDecodeTime", decodeTime);
 
@@ -358,8 +364,8 @@
         // there's no need to use our custom sandboxed process.
         assert Build.VERSION.SDK_INT >= Build.VERSION_CODES.N;
 
-        int frames = highPriority ? 1 : 20;
-        int intervalMs = 500;
+        int frames = highPriority ? 1 : 10;
+        int intervalMs = 2000;
         mWorkerTask = new DecodeVideoTask(
                 this, mContentResolver, params.mUri, params.mSize, frames, intervalMs);
         mWorkerTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapView.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapView.java
index 8dd3200..3fb92cd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapView.java
@@ -44,7 +44,7 @@
     private static final int IMAGE_FADE_IN_DURATION = 200;
 
     // The length of the image frame display (in ms).
-    private static final int IMAGE_FRAME_DISPLAY = 100;
+    private static final int IMAGE_FRAME_DISPLAY = 250;
 
     // Our context.
     private Context mContext;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionStatsPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionStatsPreference.java
index efeb240..1521426 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionStatsPreference.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionStatsPreference.java
@@ -400,8 +400,6 @@
      * of all data received (after compression), and the percent data reduction
      * and the range of dates over which these statistics apply.
      */
-    // TODO(crbug.com/635567): Fix this properly.
-    @SuppressLint("DefaultLocale")
     private void updateDetailData() {
         // To determine the correct day labels, adjust the network stats time values by their
         // offset from the client's current time.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SignOutDialogFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SignOutDialogFragment.java
index 4547068..9022891 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SignOutDialogFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SignOutDialogFragment.java
@@ -65,6 +65,10 @@
             mGaiaServiceType = getArguments().getInt(
                     SHOW_GAIA_SERVICE_TYPE_EXTRA, mGaiaServiceType);
         }
+        String domain = IdentityServicesProvider.getSigninManager().getManagementDomain();
+        if (domain != null) {
+            return createDialogForManagedAccount(domain);
+        }
 
         if (ChromeFeatureList.isEnabled(ChromeFeatureList.OFFER_WIPE_DATA_ON_SIGNOUT)) {
             return createDialogForceWipeDataFeatureEnabled();
@@ -73,15 +77,20 @@
     }
 
     private Dialog createDialog() {
-        String domain = IdentityServicesProvider.getSigninManager().getManagementDomain();
-        String message = domain == null
-                ? getString(R.string.signout_message_without_remove_local_data)
-                : getString(R.string.signout_managed_account_message, domain);
         return new AlertDialog.Builder(getActivity(), R.style.Theme_Chromium_AlertDialog)
                 .setTitle(R.string.signout_title)
                 .setPositiveButton(R.string.continue_button, this)
                 .setNegativeButton(R.string.cancel, this)
-                .setMessage(message)
+                .setMessage(R.string.signout_message_without_remove_local_data)
+                .create();
+    }
+
+    private Dialog createDialogForManagedAccount(String domain) {
+        return new AlertDialog.Builder(getActivity(), R.style.Theme_Chromium_AlertDialog)
+                .setTitle(R.string.signout_managed_account_title)
+                .setPositiveButton(R.string.continue_button, this)
+                .setNegativeButton(R.string.cancel, this)
+                .setMessage(getString(R.string.signout_managed_account_message, domain))
                 .create();
     }
 
@@ -90,18 +99,9 @@
                 new AlertDialog.Builder(getActivity(), R.style.Theme_Chromium_AlertDialog);
         LayoutInflater inflater = LayoutInflater.from(builder.getContext());
         View body = inflater.inflate(R.layout.signout_wipe_storage_dialog, null);
-
-        String domain = IdentityServicesProvider.getSigninManager().getManagementDomain();
-        TextView message = body.findViewById(android.R.id.message);
         mWipeUserData = body.findViewById(R.id.remove_local_data);
 
-        if (domain != null) {
-            message.setText(getString(R.string.signout_managed_account_message, domain));
-            // The account is managed, so data will be wiped anyway.
-            mWipeUserData.setVisibility(View.GONE);
-        } else {
-            message.setText(getString(R.string.signout_message));
-        }
+        ((TextView) body.findViewById(android.R.id.message)).setText(R.string.signout_message);
         return builder.setTitle(R.string.signout_title)
                 .setView(body)
                 .setPositiveButton(R.string.continue_button, this)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabObserver.java
index 7a510ee..84cd4cf 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabObserver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabObserver.java
@@ -157,7 +157,9 @@
     /**
      * Called when a context menu is shown for a {@link WebContents} owned by a {@link Tab}.
      * @param tab  The notifying {@link Tab}.
-     * @param menu The {@link ContextMenu} that is being shown.
+     * @param menu The {@link ContextMenu} that is being shown. Deprecated: The menu param is only
+     *             used for some tests and new context menu implementations don't extend
+     *             ContextMenu.
      */
     void onContextMenuShown(Tab tab, ContextMenu menu);
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/tabgroup/TabGroupModelFilter.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/tabgroup/TabGroupModelFilter.java
index 037f6ae..b4639b79 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/tabgroup/TabGroupModelFilter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/tabgroup/TabGroupModelFilter.java
@@ -598,8 +598,9 @@
 
     @Override
     public void didMoveTab(Tab tab, int newIndex, int curIndex) {
-        // Ignore didMoveTab calls in tab restoring stage.
-        if (!mTabRestoreCompleted) return;
+        // Ignore didMoveTab calls in tab restoring stage. For incognito mode, bypass this check
+        // since there is no restoring stage.
+        if (!mTabRestoreCompleted && !isIncognito()) return;
         // Need to cache the flags before resetting the internal data map.
         boolean isMergeTabToGroup = isMergeTabToGroup(tab);
         boolean isMoveTabOutOfGroup = isMoveTabOutOfGroup(tab);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
index 843ed77..afdd3a3 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
@@ -90,7 +90,6 @@
     private static Boolean sIsImmersiveUiModeEnabled;
     private static Boolean sIsTabPersistentStoreTaskRunnerEnabled;
     private static Boolean sServiceManagerForDownloadResumption;
-    private static Boolean sAllowStartingServiceManagerOnly;
 
     private static Boolean sDownloadAutoResumptionEnabledInNative;
 
@@ -188,7 +187,6 @@
         cachePrioritizeBootstrapTasks();
         cacheFeedEnabled();
         cacheNetworkService();
-        cacheAllowStartingServiceManagerOnly();
         cacheServiceManagerForDownloadResumption();
         cacheServiceManagerForBackgroundPrefetch();
         cacheNetworkServiceWarmUpEnabled();
@@ -248,15 +246,6 @@
         sIsHomePageButtonForceEnabled = null;
     }
 
-    private static void cacheAllowStartingServiceManagerOnly() {
-        boolean allowStartingServiceManagerOnly =
-                ChromeFeatureList.isEnabled(ChromeFeatureList.ALLOW_STARTING_SERVICE_MANAGER_ONLY);
-
-        ChromePreferenceManager.getInstance().writeBoolean(
-                ChromePreferenceManager.ALLOW_STARTING_SERVICE_MANAGER_ONLY_KEY,
-                allowStartingServiceManagerOnly);
-    }
-
     private static void cacheNetworkService() {
         boolean networkService = ChromeFeatureList.isEnabled(ChromeFeatureList.NETWORK_SERVICE);
 
@@ -274,19 +263,6 @@
         return sIsNetworkServiceEnabled;
     }
 
-    /**
-     * @return if allowing to start service manager only mode.
-     */
-    private static boolean isAllowStartingServiceManagerOnlyEnabled() {
-        if (sAllowStartingServiceManagerOnly == null) {
-            ChromePreferenceManager prefManager = ChromePreferenceManager.getInstance();
-
-            sAllowStartingServiceManagerOnly = prefManager.readBoolean(
-                    ChromePreferenceManager.ALLOW_STARTING_SERVICE_MANAGER_ONLY_KEY, false);
-        }
-        return sAllowStartingServiceManagerOnly && isNetworkServiceEnabled();
-    }
-
     private static void cacheServiceManagerForDownloadResumption() {
         boolean resumptionDownloadInReducedMode =
                 ChromeFeatureList.isEnabled(ChromeFeatureList.SERVICE_MANAGER_FOR_DOWNLOAD);
@@ -306,7 +282,7 @@
             sServiceManagerForDownloadResumption = prefManager.readBoolean(
                     ChromePreferenceManager.SERVICE_MANAGER_FOR_DOWNLOAD_RESUMPTION_KEY, false);
         }
-        return sServiceManagerForDownloadResumption && isAllowStartingServiceManagerOnlyEnabled();
+        return sServiceManagerForDownloadResumption && isNetworkServiceEnabled();
     }
 
     private static void cacheServiceManagerForBackgroundPrefetch() {
@@ -328,8 +304,7 @@
             sServiceManagerForBackgroundPrefetch = prefManager.readBoolean(
                     ChromePreferenceManager.SERVICE_MANAGER_FOR_BACKGROUND_PREFETCH_KEY, false);
         }
-        return sServiceManagerForBackgroundPrefetch && isFeedEnabled()
-                && isAllowStartingServiceManagerOnlyEnabled();
+        return sServiceManagerForBackgroundPrefetch && isFeedEnabled() && isNetworkServiceEnabled();
     }
 
     /**
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
index 2730fae91..300edd4 100644
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -1584,6 +1584,9 @@
       <message name="IDS_SIGNOUT_TITLE" desc="Title for sign out of Chrome dialog [CHAR-LIMIT=40]">
         Sign out and turn off sync?
       </message>
+      <message name="IDS_SIGNOUT_MANAGED_ACCOUNT_TITLE" desc="Title for sign out of Chrome dialog for enterprise account [CHAR-LIMIT=40]">
+        Clear your Chrome data from this device?
+      </message>
       <message name="IDS_SIGNOUT_MESSAGE_WITHOUT_REMOVE_LOCAL_DATA" desc="Message to display in 'Sign out and turn off sync?' dialog">
         Your bookmarks, history, passwords, and more will no longer be synced to your Google Account
       </message>
@@ -1594,7 +1597,7 @@
         Also clear your Chrome data from this device
       </message>
       <message name="IDS_SIGNOUT_MANAGED_ACCOUNT_MESSAGE" desc="Message to display for sign out of Chrome dialog when the account has enterprise management, and all user data will be erased">
-        You are signing out of an account managed by <ph name="DOMAIN_NAME">%1$s<ex>google.com</ex></ph>. This will delete the Chrome data stored on this device, but the data will remain in your Google Account.
+        Because you're signing out of an account managed by <ph name="DOMAIN_NAME">%1$s<ex>google.com</ex></ph>, your Chrome data will be deleted from this device. It will remain in your Google Account.
       </message>
       <message name="IDS_SIGN_IN_GETTING_ACCOUNT_MANAGEMENT_POLICY" desc="Title of progress bar dialog for getting management policy">
         Contacting Google. This may take a minute…
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_SIGNOUT_MANAGED_ACCOUNT_MESSAGE.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SIGNOUT_MANAGED_ACCOUNT_MESSAGE.png.sha1
new file mode 100644
index 0000000..aed418d4
--- /dev/null
+++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SIGNOUT_MANAGED_ACCOUNT_MESSAGE.png.sha1
@@ -0,0 +1 @@
+85809a4d887b019fde1aa008fed1db222faccc11
\ No newline at end of file
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_SIGNOUT_MANAGED_ACCOUNT_TITLE.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SIGNOUT_MANAGED_ACCOUNT_TITLE.png.sha1
new file mode 100644
index 0000000..aed418d4
--- /dev/null
+++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SIGNOUT_MANAGED_ACCOUNT_TITLE.png.sha1
@@ -0,0 +1 @@
+85809a4d887b019fde1aa008fed1db222faccc11
\ No newline at end of file
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
index 9e2b943c..93568c20 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">ታሪክ፣ ኩኪዎች፣ የጣቢያ ውሂብ፣ መሸጎጫን አጽዳ…</translation>
 <translation id="129553762522093515">በቅርብ ጊዜ የተዘጉ</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - ከ<ph name="DEVICE_NAME" /> የተላከ</translation>
+<translation id="1310482092992808703">ትሮችን ይሰብስቡ</translation>
 <translation id="1331212799747679585">Chrome መዘመን አይችልም። ተጨማሪ አማራጮች</translation>
 <translation id="1332501820983677155">የGoogle Chrome ባህሪ አቋራጮች</translation>
 <translation id="1360432990279830238">ዘግተው ወጥተው ስምረት ይጥፋ?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">መሠረታዊ</translation>
 <translation id="1671236975893690980">ውርድ በመጠባበቅ ላይ...</translation>
 <translation id="1672586136351118594">ዳግም አታሳይ</translation>
-<translation id="1679068421605151609">የአዘጋጅ መሳሪያዎች</translation>
 <translation id="1692118695553449118">አመሳስል በርቷል</translation>
 <translation id="169515064810179024">ጣቢያዎች የእንቅስቃሴ ዳሳሾችን እንዳይደርሱ ያግዱ</translation>
 <translation id="1697480839793160072">ስልኮች</translation>
@@ -712,6 +712,7 @@
 ለምሳሌ፣ አንዳንድ ድር ጣቢያዎች ሌሎች በጎበኟቸው ድር ጣቢያዎች ላይ ያልተመሠረቱ ማስታወቂያዎችን በማሳየት ለዚህ ጥያቄ ምላሽ ሊሰጡ ይችላሉ። ብዙ ድር ጣቢያዎች አሁንም የአሰሳ ውሂብዎን ይሰበስቡና ይጠቀሙበታል — ለምሳሌ ደህንነትን ለማሻሻል፤ ይዘት፣ ማስታወቂያዎችና ምክሮች በድር ጣቢያዎች ላይ ለማቅረብ፤ እና የሪፖርት አደራረግ ስታቲስቲክስን ለማመንጨት።</translation>
 <translation id="624789221780392884">ማዘመኛ ዝግጁ ነው</translation>
 <translation id="6255999984061454636">የይዘት አስተያየት ጥቆማዎች</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> በአቅራቢያ የብሉቱዝ መሣሪያዎች ካሉ መቃኘት ይፈልጋል፣ የሚከተሉት መሣሪያዎች ተገኝተዋል፦</translation>
 <translation id="6277522088822131679">ገጹን ማተም ላይ ችግር ነበር። እባክዎ እንደገና ይሞክሩ።</translation>
 <translation id="6295158916970320988">ሁሉም ጣቢያዎች</translation>
 <translation id="629730747756840877">መለያ</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">የእርስዎ <ph name="FQDN" /> ሰዓት ቆጣሪ ጊዜ አልቋል። ነገ እንደገና ይጀመራል።</translation>
 <translation id="6738867403308150051">በማውረድ ላይ…</translation>
 <translation id="6746124502594467657">ወደታች አውርድ</translation>
-<translation id="6751888224264752704">በተጨማሪ ከዚህ መሣሪያ ላይ ይህን Chrome ውሂብ ያጽዱት</translation>
 <translation id="6766622839693428701">ለመዝጋት ወደታች ያንሸራትቱ።</translation>
 <translation id="6766758767654711248">ወደ ጣቢያ ለመሄዴ መታ ያድርጉ</translation>
 <translation id="6767294960381293877">በግማሽ ቁመቱ ላይ የተከፈተ ትር የሚጋሩ የመሣሪያዎች ዝርዝር።</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">የሚከተሉትን ጠቃሚ ምክሮች ይሞክሩ፦ በእርስዎ መሣሪያ ላይ በቂ ባዶ ቦታ መኖሩን ያረጋግጡ፣ ወይም እንደገና ወደ ውጭ ለመላክ ይሞክሩ።</translation>
 <translation id="7698359219371678927">በ<ph name="APP_NAME" /> ውስጥ ኢሜይል ይፍጠሩ</translation>
 <translation id="7704317875155739195">ፍለጋዎችን እና ዩአርኤልዎችን በራስ-አጠናቅቅ</translation>
+<translation id="7725024127233776428">እርስዎ ዕልባት ያደረጉባቸው ገጾች እዚህ ላይ ብቅ ይላሉ</translation>
 <translation id="773466115871691567">ገጾችን ሁልጊዜ በ<ph name="SOURCE_LANGUAGE" /> ተርጉም</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">አደገኛ መተግበሪያዎችን እና ጣቢያዎችን ፈልጎ ለማግኘት፣ Chrome እርስዎ የጎበኟቸውን አንዳንድ ገጾች ዩአርኤሎች፣ የተወሰነ የሥርዓት መረጃ እና አንዳንድ የገጽ ይዘት ወደ Google ይልካል</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">ነባሩን ውሂብ ይሰርዙ። ወደ <ph name="FROM_ACCOUNT" /> መልሰው በመቀየር ሰርስረው ሊያወጡት ይችላሉ።</translation>
 <translation id="95817756606698420">Chrome በቻይና ውስጥ <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />ን ለፍለጋ መጠቀም ይችላል። ይህን በ<ph name="BEGIN_LINK" />ቅንብሮች<ph name="END_LINK" /> ውስጥ መጠቀም ይችላሉ።</translation>
 <translation id="965817943346481315">ጣቢያው ረባሽ ወይም አሳሳች ማስታወቂያዎችን የሚያሳይ ከሆነ ማገድ (የሚመከር)</translation>
+<translation id="968900484120156207">እርስዎ የሚጎበኟቸው ገጾች እዚህ ላይ ብቅ ይላሉ</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> ደቂቃዎች ይቀራሉ</translation>
 <translation id="974555521953189084">ስምረትን ለመጀመር የይለፍ ሐረግዎን ያስገቡ</translation>
 <translation id="981121421437150478">ከመስመር ውጪ</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
index 95616905..7a3a49a 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">محو السجل وملفات تعريف الارتباط وبيانات المواقع وذاكرة التخزين المؤقت...</translation>
 <translation id="129553762522093515">المغلقة حديثًا</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - تم الإرسال من <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">دمج علامات التبويب</translation>
 <translation id="1331212799747679585">‏يتعذَّر تحديث Chrome. يُرجى الاطِّلاع على مزيد من الخيارات</translation>
 <translation id="1332501820983677155">‏اختصارات ميزات Google Chrome</translation>
 <translation id="1360432990279830238">هل تريد تسجيل الخروج وإيقاف المزامنة؟</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">الإعدادات الأساسية</translation>
 <translation id="1671236975893690980">التنزيل معلّق...</translation>
 <translation id="1672586136351118594">عدم العرض مرة أخرى</translation>
-<translation id="1679068421605151609">أدوات مطوّري البرامج</translation>
 <translation id="1692118695553449118">المزامنة ممكنة</translation>
 <translation id="169515064810179024">حظر مواقع الويب من الوصول إلى مستشعرات الحركة</translation>
 <translation id="1697480839793160072">الهواتف</translation>
@@ -265,7 +265,7 @@
 <translation id="2900528713135656174">إنشاء حدث</translation>
 <translation id="2902702728133930130">‏تعذّر Chrome أثناء بدء التشغيل بسبب خطأ غير متوقع.</translation>
 <translation id="290376772003165898">أليست الصفحة باللغة <ph name="LANGUAGE" />؟</translation>
-<translation id="2904414404539560095">قائمة بالأجهزة التي تتم مشاركة علامة تبويب معها، مفتوحة بارتفاع كامل.</translation>
+<translation id="2904414404539560095">قائمة بالأجهزة التي يمكن مشاركة علامة تبويب معها، مفتوحة على طول الشاشة.</translation>
 <translation id="2910701580606108292">السؤال قبل السماح لمواقع الويب بتشغيل المحتوى المحمي</translation>
 <translation id="2913331724188855103">السماح لمواقع الويب بحفظ بيانات ملفات تعريف الارتباط وقراءتها (موصى به)</translation>
 <translation id="2923908459366352541">الاسم غير صحيح</translation>
@@ -411,7 +411,7 @@
 <translation id="4099578267706723511">‏يمكنك المساعدة في تحسين Chrome عن طريق إرسال إحصاءات الاستخدام وتقارير الأعطال إلى Google.</translation>
 <translation id="410351446219883937">التشغيل التلقائي</translation>
 <translation id="4116038641877404294">تنزيل الصفحات لاستخدامها بلا اتصال بالإنترنت</translation>
-<translation id="4135200667068010335">قائمة الأجهزة التي تتم مشاركة علامة تبويب معها مغلقة.</translation>
+<translation id="4135200667068010335">قائمة الأجهزة التي يمكن مشاركة علامة تبويب معها مغلقة.</translation>
 <translation id="4149994727733219643">عرض مبسَّط لصفحات الويب</translation>
 <translation id="4165986682804962316">إعدادات المواقع</translation>
 <translation id="4169535189173047238">عدم السماح</translation>
@@ -712,6 +712,7 @@
 على سبيل المثال، قد تستجيب بعض مواقع الويب لهذا الطلب عبر عرض إعلانات لا تستند إلى مواقع الويب الأخرى التي زرتها، بينما ستظل العديد من مواقع الويب تجمع بيانات تصفّحك وتستخدمها - مثلاً لتحسين الأمان وتقديم محتوى وخدمات وإعلانات واقتراحات وإعداد تقارير بالإحصاءات.</translation>
 <translation id="624789221780392884">التحديث جاهز</translation>
 <translation id="6255999984061454636">اقتراحات المحتوى</translation>
+<translation id="6258133034695130373">يريد <ph name="SITE" /> البحث عن أجهزة البلوتوث المجاورة، وقد تم العثور على الأجهزة التالية:</translation>
 <translation id="6277522088822131679">حدثت مشكلة أثناء طباعة الصفحة. يُرجى إعادة المحاولة.</translation>
 <translation id="6295158916970320988">جميع المواقع</translation>
 <translation id="629730747756840877">الحساب</translation>
@@ -782,10 +783,9 @@
 <translation id="671481426037969117">انقضى وقت موقّت <ph name="FQDN" />، وسيبدأ عمله مرّةً أخرى غدًا.</translation>
 <translation id="6738867403308150051">جارٍ التنزيل…</translation>
 <translation id="6746124502594467657">الانتقال إلى أسفل</translation>
-<translation id="6751888224264752704">‏محو بيانات Chrome هذه من هذا الجهاز أيضًا</translation>
 <translation id="6766622839693428701">يمكنك التمرير السريع للأسفل للإغلاق.</translation>
 <translation id="6766758767654711248">انقر للانتقال إلى موقع الويب</translation>
-<translation id="6767294960381293877">قائمة الأجهزة التي تتم مشاركة علامة تبويب معها، مفتوحة بنصف ارتفاع.</translation>
+<translation id="6767294960381293877">قائمة الأجهزة التي يمكن مشاركة علامة تبويب معها، مفتوحة على طول النصف السفلي من الشاشة.</translation>
 <translation id="6782111308708962316">منع مواقع الويب التابعة لجهات خارجية من حفظ بيانات ملفات تعريف الارتباط وقراءتها</translation>
 <translation id="6790428901817661496">التشغيل</translation>
 <translation id="679325081238418596">يمكنك الحصول على الإشارات المرجعية والسِجل وكلمات المرور والإعدادات الأخرى على جميع أجهزتك</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">يمكنك تجربة النصائح التالية: تأكد من توفر مساحة كافية على جهازك وحاول التصدير مرة أخرى.</translation>
 <translation id="7698359219371678927">إنشاء بريد إلكتروني في <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">‏الإكمال التلقائي لعناوين URL وعمليات البحث</translation>
+<translation id="7725024127233776428">يتم عرض الصفحات التي يتم وضع إشارة عليها هنا.</translation>
 <translation id="773466115871691567">ترجمة الصفحات باللغة <ph name="SOURCE_LANGUAGE" /> دائمًا</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">‏لرصد التطبيقات ومواقع الويب الضارة، يُرسل Chrome عناوين URL لبعض الصفحات التي زرتها ومعلومات محدودة للنظام وبعض أنواع محتوى الصفحات إلى Google.</translation>
@@ -1107,7 +1108,7 @@
 <translation id="9099018167121903954">تم تنزيل <ph name="KILOBYTES" /> كيلوبايت</translation>
 <translation id="9100505651305367705">اقتراح مشاهدة المقالات في العرض المبسَّط إذا كان ذلك متاحًا</translation>
 <translation id="9100610230175265781">عبارة المرور مطلوبة</translation>
-<translation id="9104217018994036254">قائمة الأجهزة التي تتم مشاركة علامة تبويب معها.</translation>
+<translation id="9104217018994036254">قائمة الأجهزة التي يمكن مشاركة علامة تبويب معها.</translation>
 <translation id="9133703968756164531"><ph name="ITEM_NAME" /> (<ph name="ITEM_ID" />)</translation>
 <translation id="9137013805542155359">إظهار الصفحة الأصلية</translation>
 <translation id="9139068048179869749">السؤال قبل السماح لمواقع الويب بإرسال الإشعارات (موصى به)</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">يمكنك حذف البيانات الحالية. يمكنك استرداد هذه البيانات بالتبديل مرة أخرى إلى <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">‏يمكن لـ Chrome استخدام <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> للبحث في الصين. ويمكنك تغيير هذا في <ph name="BEGIN_LINK" />الإعدادات<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">الحظر في حال كان موقع الويب يعرض إعلانات مضلِّلة أو غير مرغوب فيها (مُستحسَن)</translation>
+<translation id="968900484120156207">يتم عرض الصفحات التي تزورها هنا.</translation>
 <translation id="970715775301869095">عدد الدقائق المتبقية: <ph name="MINUTES" /></translation>
 <translation id="974555521953189084">إدخال عبارة المرور لبدء المزامنة</translation>
 <translation id="981121421437150478">بلا اتصال</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
index 589c3cc1..2f61bfa 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Изчистване на историята, „бисквитките“, данните за сайтове и кеша…</translation>
 <translation id="129553762522093515">Наскоро затворени</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – Изпратено от <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Групиране на раздели</translation>
 <translation id="1331212799747679585">Chrome не може да се актуализира. Още опции</translation>
 <translation id="1332501820983677155">Комбинации за функции на Google Chrome</translation>
 <translation id="1360432990279830238">Изход и изключване на синхронизирането?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Основни</translation>
 <translation id="1671236975893690980">Предстои изтегляне…</translation>
 <translation id="1672586136351118594">Да не се показва отново</translation>
-<translation id="1679068421605151609">Инструменти за програмисти</translation>
 <translation id="1692118695553449118">Синхронизирането е включено</translation>
 <translation id="169515064810179024">Блокиране на достъпа на сайтовете до сензорите за движение</translation>
 <translation id="1697480839793160072">Телефони</translation>
@@ -712,6 +712,7 @@
 Някои уебсайтове например може да отговорят на тази заявка, като ви покажат реклами, които не се базират на други посетени от вас сайтове. Много уебсайтове ще продължат да събират и използват данните ви за сърфиране – например с цел подобряване на сигурността, предоставяне на съдържание, реклами и препоръки и генериране на статистически данни за отчитане.</translation>
 <translation id="624789221780392884">Актуализацията е готова</translation>
 <translation id="6255999984061454636">Предложения за съдържание</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> иска да сканира за устройства с Bluetooth в близост. Намерени са следните:</translation>
 <translation id="6277522088822131679">При отпечатването на страницата възникна проблем. Моля, опитайте отново.</translation>
 <translation id="6295158916970320988">Всички сайтове</translation>
 <translation id="629730747756840877">Профил</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Таймерът ви за <ph name="FQDN" /> изтече и ще се стартира отново утре.</translation>
 <translation id="6738867403308150051">Изтегля се…</translation>
 <translation id="6746124502594467657">Придвижване надолу</translation>
-<translation id="6751888224264752704">Изчистване на данните в Chrome и от това устройство</translation>
 <translation id="6766622839693428701">Прекарайте пръст надолу, за да затворите.</translation>
 <translation id="6766758767654711248">Докоснете, за да посетите сайта</translation>
 <translation id="6767294960381293877">Списъкът с устройства, с които да се сподели даден раздел, е отворен на половин височина.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Изпробвайте следните съвети: Уверете се, че има достатъчно място на устройството ви. Опитайте отново да експортирате.</translation>
 <translation id="7698359219371678927">Създайте имейл в <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Автоматично довършване на заявки за търсене и URL адреси</translation>
+<translation id="7725024127233776428">Запазените от вас отметки към страници се показват тук</translation>
 <translation id="773466115871691567">Страниците на <ph name="SOURCE_LANGUAGE" /> да се превеждат винаги</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">За да открива опасни приложения и сайтове, Chrome изпраща до Google URL адресите на някои от страниците, които посещавате, ограничена системна информация и част от съдържанието на страниците</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Изтриване на съществуващите данни. Можете да ги извлечете, като превключите обратно към <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome може да използва <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> за търсене в Китай. Можете да промените това от <ph name="BEGIN_LINK" />Настройки<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Блокиране, ако на сайта се показват натрапчиви или подвеждащи реклами (препоръчително)</translation>
+<translation id="968900484120156207">Посетените от вас страници се показват тук</translation>
 <translation id="970715775301869095">Остават <ph name="MINUTES" /> мин</translation>
 <translation id="974555521953189084">Въведете своя пропуск, за да започне синхронизирането</translation>
 <translation id="981121421437150478">Офлайн</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb b/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb
index 2aeb0c1e..48695881 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_bn.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">ইতিহাস, কুকিজ, সাইট ডেটা, ক্যাশে সাফ করে...</translation>
 <translation id="129553762522093515">সম্প্রতি বন্ধ হয়েছে</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" /> থেকে পাঠানো হয়েছে</translation>
+<translation id="1310482092992808703">ট্যাবগুলি গ্রুপ করুন</translation>
 <translation id="1331212799747679585">Chrome আপডেট হচ্ছে না। আরও বিকল্প</translation>
 <translation id="1332501820983677155">Google Chrome এর বাছাই করা শর্টকাটগুলি</translation>
 <translation id="1360432990279830238">সাইন-আউট করে সিঙ্ক বন্ধ করবেন?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">প্রাথমিক</translation>
 <translation id="1671236975893690980">ডাউনলোড মুলতবি হয়ে আছে...</translation>
 <translation id="1672586136351118594">আর দেখতে চাই না</translation>
-<translation id="1679068421605151609">ডেভেলপার টুল</translation>
 <translation id="1692118695553449118">সিঙ্ক চালু রয়েছে</translation>
 <translation id="169515064810179024">মোশন সেন্সর অ্যাক্সেস করা থেকে সাইটকে ব্লক করুন</translation>
 <translation id="1697480839793160072">টেলিফোন</translation>
@@ -714,6 +714,7 @@
 উদাহরণস্বরূপ, কিছু ওয়েবসাইট আপনার দেখা অন্য ওয়েবসাইট ভিত্তিক নয় এমন বিজ্ঞাপন দেখিয়ে এই অনুরোধে প্রতিক্রিয়া জানাতে পারে৷ অনেক ওয়েবসাইট তারপরও আপনার ব্রাউজিং ডেটা সংগ্রহ এবং ব্যবহার করবে - উদাহরণস্বরূপ, আপনার নিরাপত্তা বাড়াতে, সামগ্রী, বিজ্ঞাপন এবং প্রস্তাবনা প্রদান করতে এবং রিপোর্ট পরিসংখ্যান তৈরি করতে৷</translation>
 <translation id="624789221780392884">আপডেট প্রস্তুত</translation>
 <translation id="6255999984061454636">কন্টেন্টের প্রস্তাবনা</translation>
+<translation id="6258133034695130373">কাছাকাছি থাকা ব্লুটুথ ডিভাইসগুলিকে <ph name="SITE" /> স্ক্যান করতে চায়, এই ডিভাইসগুলি পাওয়া গেছে:</translation>
 <translation id="6277522088822131679">পৃষ্ঠাটি প্রিন্ট করার সময় একটি সমস্যা হয়েছিল৷ দয়া করে আবার চেষ্টা করুন৷</translation>
 <translation id="6295158916970320988">সমস্ত সাইট</translation>
 <translation id="629730747756840877">অ্যাকাউন্ট</translation>
@@ -784,7 +785,6 @@
 <translation id="671481426037969117">আপনার <ph name="FQDN" /> টাইমারের মেয়াদ পেরিয়ে গেছে। আগামীকাল আবার এটি শুরু হবে।</translation>
 <translation id="6738867403308150051">ডাউনলোড হচ্ছে...</translation>
 <translation id="6746124502594467657">নিচে যান</translation>
-<translation id="6751888224264752704">এছাড়াও, এই ডিভাইস থেকে এই Chrome ডেটা মুছে দিন</translation>
 <translation id="6766622839693428701">বন্ধ করতে নিচের দিকে সোয়াইপ করুন।</translation>
 <translation id="6766758767654711248">সাইটে যেতে ট্যাপ করুন</translation>
 <translation id="6767294960381293877">ট্যাব শেয়ার করা যাবে এমন ডিভাইসের সূচি অর্ধেক স্ক্রিন জুড়ে খোলা হয়েছে।</translation>
@@ -923,6 +923,7 @@
 <translation id="7682724950699840886">নিম্নলিখিত টিপ্স ব্যবহার করার চেষ্টা করুন: আপনার ডিভাইসে পর্যাপ্ত জায়গা আছে কিনা দেখে নিয়ে আবার এক্সপোর্ট করার চেষ্টা করুন।</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" />-এ ইমেল আইডি তৈরি করুন</translation>
 <translation id="7704317875155739195">সার্চ এবং ইউআরএলগুলি নিজে থেকে সম্পূর্ণ হতে দিন</translation>
+<translation id="7725024127233776428">আপনার বুকমার্ক করা পৃষ্ঠা এখানে দেখানো হয়</translation>
 <translation id="773466115871691567">সব সময় <ph name="SOURCE_LANGUAGE" /> ভাষার পৃষ্ঠার অনুবাদ দেখতে চাই</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">বিপজ্জনক অ্যাপ ও সাইট শনাক্ত করতে Chrome আপনার দেখা পৃষ্ঠাগুলির ইউআরএল, সিস্টেমের কিছু তথ্য ও কিছু পৃষ্ঠার কন্টেন্ট Google-কে পাঠায়</translation>
@@ -1129,6 +1130,7 @@
 <translation id="951339005376969845">বিদ্যমান ডেটা মুছুন। আপনি <ph name="FROM_ACCOUNT" /> এ ফিরে গিয়ে এটি পুনরুদ্ধার করতে পারেন।</translation>
 <translation id="95817756606698420">Chrome, চীনে সার্চের জন্য <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> কে ব্যবহার করতে পারে। আপনি <ph name="BEGIN_LINK" />সেটিংস<ph name="END_LINK" /> থেকে এটি পরিবর্তন করতে পারেন।</translation>
 <translation id="965817943346481315">সাইটে থাকা ব্যাঘাত সৃষ্টিকারী বা বিভ্রান্তিকর বিজ্ঞাপন ব্লক করুন (প্রস্তাবিত)</translation>
+<translation id="968900484120156207">আপনি যে পৃষ্ঠাগুলিতে যান সেগুলি এখানে দেখানো হয়</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> মিনিট বাকি আছে</translation>
 <translation id="974555521953189084">সিঙ্ক শুরু করার জন্য আপনার পাসফ্রেজ লিখুন</translation>
 <translation id="981121421437150478">অফলাইন</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
index 791f4e95..a8245004 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Esborra l'historial, les galetes, les dades dels llocs web, la memòria cau, etc.</translation>
 <translation id="129553762522093515">Tancades recentment</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" />: s'ha enviat des del dispositiu <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Agrupa les pestanyes</translation>
 <translation id="1331212799747679585">No es pot actualitzar Chrome. Més opcions</translation>
 <translation id="1332501820983677155">Dreceres per a funcions de Google Chrome</translation>
 <translation id="1360432990279830238">Vols tancar la sessió i desactivar la sincronització?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Configuració bàsica</translation>
 <translation id="1671236975893690980">Baixada pendent…</translation>
 <translation id="1672586136351118594">No m'ho tornis a mostrar</translation>
-<translation id="1679068421605151609">Eines per a desenvolupadors</translation>
 <translation id="1692118695553449118">La sincronització està activada</translation>
 <translation id="169515064810179024">Impedeix que els llocs web accedeixin als sensors de moviment</translation>
 <translation id="1697480839793160072">Telèfons</translation>
@@ -712,6 +712,7 @@
 Per exemple, és possible que alguns llocs web responguin a aquesta sol·licitud mostrant-te anuncis que no estiguin basats en altres llocs web que hagis visitat. Molts llocs web continuaran recopilant i utilitzant les teves dades de navegació (per exemple, per millorar la seguretat, per proporcionar contingut, anuncis i recomanacions i per generar estadístiques).</translation>
 <translation id="624789221780392884">Actualització a punt.</translation>
 <translation id="6255999984061454636">Suggeriments de contingut</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> vol cercar dispositius Bluetooth propers. S'han trobat els dispositius següents:</translation>
 <translation id="6277522088822131679">S'ha produït un problema en imprimir la pàgina. Torneu-ho a provar.</translation>
 <translation id="6295158916970320988">Tots els llocs web</translation>
 <translation id="629730747756840877">Compte</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">S'ha esgotat el temps definit al temporitzador per a <ph name="FQDN" />. Es tornarà a iniciar demà.</translation>
 <translation id="6738867403308150051">S'està baixant...</translation>
 <translation id="6746124502594467657">Mou avall</translation>
-<translation id="6751888224264752704">A més, esborra aquestes dades de Chrome d'aquest dispositiu</translation>
 <translation id="6766622839693428701">Llisca cap avall per tancar el full.</translation>
 <translation id="6766758767654711248">Toca per anar al lloc web</translation>
 <translation id="6767294960381293877">La llista de dispositius amb què es compartirà una pestanya ocupa la meitat inferior de la pantalla.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Segueix aquests consells: comprova que hi hagi prou espai al dispositiu i prova d'exportar les contrasenyes de nou.</translation>
 <translation id="7698359219371678927">Crea una adreça electrònica a <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Completa automàticament les cerques i els URL</translation>
+<translation id="7725024127233776428">Les pàgines que afegeixis a les adreces d'interès es mostraran aquí</translation>
 <translation id="773466115871691567">Tradueix sempre les pàgines en <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Per detectar aplicacions i llocs web perillosos, Chrome envia a Google els URL d'algunes de les pàgines que visites, informació limitada del sistema i part del contingut de les pàgines</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Suprimeix les dades existents. Per recuperar-les, torna a <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome pot utilitzar <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> per fer cerques a la Xina. Per canviar-ho, ves a <ph name="BEGIN_LINK" />Configuració<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Bloqueja els anuncis si el lloc web mostra publicitat intrusiva o enganyosa (opció recomanada)</translation>
+<translation id="968900484120156207">Les pàgines que visitis es mostraran aquí</translation>
 <translation id="970715775301869095">Queden <ph name="MINUTES" /> minuts</translation>
 <translation id="974555521953189084">Introdueix la teva frase de contrasenya per iniciar la sincronització</translation>
 <translation id="981121421437150478">Sense connexió</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
index f242d10..dd0ab71 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Vymazat historii, soubory cookie, data webů, mezipaměť…</translation>
 <translation id="129553762522093515">Nedávno zavřené</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – odesláno ze zařízení <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Seskupit karty</translation>
 <translation id="1331212799747679585">Chrome nelze aktualizovat. Další možnosti</translation>
 <translation id="1332501820983677155">Zkratky funkcí prohlížeče Google Chrome</translation>
 <translation id="1360432990279830238">Odhlásit se a vypnout synchronizaci?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Základní</translation>
 <translation id="1671236975893690980">Nevyřízené stahování…</translation>
 <translation id="1672586136351118594">Tuto zprávu již nezobrazovat</translation>
-<translation id="1679068421605151609">Nástroje pro vývojáře</translation>
 <translation id="1692118695553449118">Synchronizace je zapnuta</translation>
 <translation id="169515064810179024">Blokovat webům přístup k senzorům pohybu</translation>
 <translation id="1697480839793160072">Telefony</translation>
@@ -712,6 +712,7 @@
 Některé weby mohou například na tento požadavek reagovat tak, že vám zobrazí reklamy, které nejsou založeny na ostatních navštívených webových stránkách. Řada webů bude i nadále shromažďovat vaše údaje o prohlížení a používat je například ke zlepšení zabezpečení, poskytování obsahu, reklam a doporučení a ke generování statistik pro přehledy.</translation>
 <translation id="624789221780392884">Je připravena aktualizace</translation>
 <translation id="6255999984061454636">Návrhy obsahu</translation>
+<translation id="6258133034695130373">Web <ph name="SITE" /> chce vyhledat zařízení Bluetooth v okolí. Byla nalezena následující zařízení:</translation>
 <translation id="6277522088822131679">Při tištění stránky došlo k problému. Zkuste to prosím znovu.</translation>
 <translation id="6295158916970320988">Všechny weby</translation>
 <translation id="629730747756840877">Účet</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Časovač <ph name="FQDN" /> vypršel. Spustí se zase zítra.</translation>
 <translation id="6738867403308150051">Stahování…</translation>
 <translation id="6746124502594467657">Posunout dolů</translation>
-<translation id="6751888224264752704">Také z tohoto zařízení vymazat data Chromu</translation>
 <translation id="6766622839693428701">Zavřete přejetím prstem dolů.</translation>
 <translation id="6766758767654711248">Klepnutím přejdete na web</translation>
 <translation id="6767294960381293877">Seznam zařízení, se kterými se má karta sdílet, otevřený na poloviční výšku.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Vyzkoušejte tyto tipy: Zajistěte, aby v zařízení byl dostatek místa a zkuste export zopakovat.</translation>
 <translation id="7698359219371678927">Vytvořit e-mail v aplikaci <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Automaticky doplňovat vyhledávací dotazy a adresy URL</translation>
+<translation id="7725024127233776428">Zde se zobrazují stránky přidané do záložek</translation>
 <translation id="773466115871691567">Stránky v jazyce <ph name="SOURCE_LANGUAGE" /> vždy překládat</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Kvůli detekci nebezpečných aplikací a webů odesílá Chrome do Googlu adresy URL některých navštívených stránek, omezené informace o systému a část obsahu stránek</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Smazat existující data. Můžete je znovu načíst tím, že přepnete zpět na účet <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome může v Číně k vyhledávání používat službu <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />. Tuto volbu můžete změnit v <ph name="BEGIN_LINK" />Nastavení<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blokovat, pokud web zobrazuje rušivé nebo zavádějící reklamy (doporučeno)</translation>
+<translation id="968900484120156207">Zde se zobrazují navštívené stránky</translation>
 <translation id="970715775301869095">Zbývá: <ph name="MINUTES" /> min</translation>
 <translation id="974555521953189084">Chcete-li spustit synchronizaci zadejte heslovou frázi.</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
index 29308ed7..773b3e24 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Ryd historik, cookies, websitedata, cache...</translation>
 <translation id="129553762522093515">Senest lukkede</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – sendt fra <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Gruppér faner</translation>
 <translation id="1331212799747679585">Chrome kan ikke opdateres. Flere valgmuligheder</translation>
 <translation id="1332501820983677155">Funktionsgenveje i Google Chrome</translation>
 <translation id="1360432990279830238">Log ud, og deaktiver synkronisering?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Grundlæggende</translation>
 <translation id="1671236975893690980">Download afventer…</translation>
 <translation id="1672586136351118594">Vis ikke igen</translation>
-<translation id="1679068421605151609">Udviklerværktøjer</translation>
 <translation id="1692118695553449118">Synkronisering er slået til</translation>
 <translation id="169515064810179024">Bloker adgang til bevægelsessensorer på websites</translation>
 <translation id="1697480839793160072">Telefoner</translation>
@@ -712,6 +712,7 @@
 Nogle websites kan f.eks. reagere på denne anmodning ved at vise dig annoncer, som ikke er baseret på andre websites, du har besøgt. Mange websites vil fortsat indsamle og bruge browserdata til f.eks. at forbedre sikkerheden, til at levere indhold, annoncer og anbefalinger og til at generere rapporteringsstatistik.</translation>
 <translation id="624789221780392884">Opdateringen er klar</translation>
 <translation id="6255999984061454636">Indholdsforslag</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> vil gerne søge efter Bluetooth-enheder i nærheden. Følgende enheder blev fundet:</translation>
 <translation id="6277522088822131679">Der opstod et problem med udskrivning af siden. Prøv igen.</translation>
 <translation id="6295158916970320988">Alle websites</translation>
 <translation id="629730747756840877">Konto</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Din timer for <ph name="FQDN" /> udløb. Den starter igen i morgen.</translation>
 <translation id="6738867403308150051">Downloader…</translation>
 <translation id="6746124502594467657">Flyt ned</translation>
-<translation id="6751888224264752704">Ryd også disse Chrome-data fra enheden</translation>
 <translation id="6766622839693428701">Stryg ned for at lukke.</translation>
 <translation id="6766758767654711248">Tryk for at gå til websitet</translation>
 <translation id="6767294960381293877">Åben liste i halv højde over enheder, der skal deles en fane med.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Prøv følgende tips: Sørg for, at der er nok ledig plads på din enhed, og prøv at eksportere igen.</translation>
 <translation id="7698359219371678927">Opret mail i <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autofuldfør søgninger og webadresser</translation>
+<translation id="7725024127233776428">De sider, du føjer et bogmærke til, vises her</translation>
 <translation id="773466115871691567">Oversæt altid sider på <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Chrome sender webadresser på nogle sider, du besøger, begrænsede systemoplysninger og noget sideindhold til Google med henblik på at registrere farlige apps og websites.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Slet eksisterende data. Du kan hente dem ved at skifte tilbage til <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome kan bruge <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> til søgninger i Kina. Du kan ændre dette i <ph name="BEGIN_LINK" />Indstillinger<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Bloker, hvis websitet viser påtrængende eller vildledende annoncer (anbefales)</translation>
+<translation id="968900484120156207">De sider, du besøger, vises her</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> minutter tilbage</translation>
 <translation id="974555521953189084">Angiv din adgangssætning for at starte synkroniseringen</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
index 8d9b8dd..bd33eac 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Verlauf, Cookies, Websitedaten, Cache leeren…</translation>
 <translation id="129553762522093515">Kürzlich geschlossen</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" />: gesendet von <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Tabs gruppieren</translation>
 <translation id="1331212799747679585">Chrome kann nicht aktualisiert werden. Weitere Optionen</translation>
 <translation id="1332501820983677155">Tastenkombinationen für Google Chrome-Funktionen</translation>
 <translation id="1360432990279830238">Abmelden &amp; Synchronisierung deaktivieren?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Grundlegend</translation>
 <translation id="1671236975893690980">Download ausstehend...</translation>
 <translation id="1672586136351118594">Nicht mehr anzeigen</translation>
-<translation id="1679068421605151609">Entwicklertools</translation>
 <translation id="1692118695553449118">Synchronisierung ist aktiviert</translation>
 <translation id="169515064810179024">Zugriff auf Bewegungssensoren für Websites blockieren</translation>
 <translation id="1697480839793160072">Telefone</translation>
@@ -712,6 +712,7 @@
 Einige Websites schalten möglicherweise Werbeanzeigen, deren Auswahl nicht darauf basiert, welche Websites Sie zuvor besucht haben. Viele Websites erfassen weiterhin Ihre Browserdaten und verwenden sie, um beispielsweise die Sicherheit zu verbessern oder Inhalte, Werbeanzeigen und Empfehlungen bereitzustellen und Statistiken für Berichte zu erstellen.</translation>
 <translation id="624789221780392884">Update bereit</translation>
 <translation id="6255999984061454636">Inhaltsvorschläge</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> möchte nach Bluetooth-Geräten in der Nähe suchen. Die folgenden Geräte wurden gefunden:</translation>
 <translation id="6277522088822131679">Beim Drucken der Seite ist ein Problem aufgetreten. Bitte versuchen Sie es erneut.</translation>
 <translation id="6295158916970320988">Alle Websites</translation>
 <translation id="629730747756840877">Konto</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Ihr <ph name="FQDN" />-Timer ist abgelaufen. Morgen startet er neu.</translation>
 <translation id="6738867403308150051">Wird heruntergeladen...</translation>
 <translation id="6746124502594467657">Nach unten</translation>
-<translation id="6751888224264752704">Auch diese Chrome-Daten vom Gerät löschen</translation>
 <translation id="6766622839693428701">Zum Schließen nach unten wischen.</translation>
 <translation id="6766758767654711248">Tippen, um zur Website zu wechseln</translation>
 <translation id="6767294960381293877">Die Liste von Geräten, mit denen ein Tab geteilt werden kann, ist halb geöffnet.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Probieren Sie folgende Tipps aus: Sorgen Sie dafür, dass auf Ihrem Gerät ausreichend Speicherplatz vorhanden ist, und wiederholen Sie den Export.</translation>
 <translation id="7698359219371678927">E-Mail in <ph name="APP_NAME" /> erstellen</translation>
 <translation id="7704317875155739195">Suchanfragen und URLs automatisch vervollständigen</translation>
+<translation id="7725024127233776428">Seiten, die Sie als Lesezeichen speichern, werden hier angezeigt</translation>
 <translation id="773466115871691567">Seiten auf <ph name="SOURCE_LANGUAGE" /> immer übersetzen</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Chrome sendet die URLs einiger von Ihnen besuchter Seiten, bestimmte Systeminformationen und einige Seiteninhalte an Google, um gefährliche Apps und Websites zu erkennen</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Vorhandene Daten werden gelöscht. Wenn Sie Ihre vorhandenen Daten abrufen möchten, wechseln Sie zurück zu <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome kann in China <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> für die Suche verwenden. Sie können dies unter <ph name="BEGIN_LINK" />Einstellungen<ph name="END_LINK" /> ändern.</translation>
 <translation id="965817943346481315">Blockieren, wenn Website aufdringliche oder irreführende Werbung anzeigt (empfohlen)</translation>
+<translation id="968900484120156207">Von Ihnen besuchte Seiten werden hier angezeigt</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> Minuten übrig</translation>
 <translation id="974555521953189084">Geben Sie Ihre Passphrase ein, um die Synchronisierung zu starten</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
index b917329..c3989b4 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Διαγραφή ιστορικού, cookie, δεδομένων ιστότοπου, κρυφής μνήμης…</translation>
 <translation id="129553762522093515">Έκλεισαν πρόσφατα</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - Στάλθηκε από <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Ομαδοποίηση καρτελών</translation>
 <translation id="1331212799747679585">Δεν είναι δυνατή η ενημέρωση του Chrome. Περισσότερες επιλογές</translation>
 <translation id="1332501820983677155">Συντομεύσεις λειτουργιών Google Chrome</translation>
 <translation id="1360432990279830238">Αποσύνδεση και απενεργοπ. συγχρονισμού;</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Βασικά</translation>
 <translation id="1671236975893690980">Λήψη σε εκκρεμότητα…</translation>
 <translation id="1672586136351118594">Να μην εμφανιστεί ξανά</translation>
-<translation id="1679068421605151609">Εργαλεία για Προγραμματιστές</translation>
 <translation id="1692118695553449118">Ο συγχρονισμός είναι ενεργοποιημένος</translation>
 <translation id="169515064810179024">Αποκλεισμός πρόσβασης σε αισθητήρες κίνησης από ιστοτόπους</translation>
 <translation id="1697480839793160072">Τηλέφωνα</translation>
@@ -712,6 +712,7 @@
 Για παράδειγμα, ορισμένοι ιστότοποι ενδέχεται να ανταποκρίνονται σε αυτό το αίτημα εμφανίζοντας διαφημίσεις που δεν βασίζονται σε άλλους ιστότοπους που έχετε επισκεφτεί. Πολλοί ιστότοποι θα εξακολουθούν να συλλέγουν και να χρησιμοποιούν τα δεδομένα περιήγησής σας. Για παράδειγμα, για να βελτιώσουν την ασφάλεια, να παρέχουν περιεχόμενο, διαφημίσεις και προτάσεις, καθώς και για να δημιουργούν στατιστικά στοιχεία αναφοράς.</translation>
 <translation id="624789221780392884">Έτοιμη ενημέρωση</translation>
 <translation id="6255999984061454636">Προτάσεις περιεχομένου</translation>
+<translation id="6258133034695130373">Το <ph name="SITE" /> θέλει να κάνει σάρωση για κοντινές συσκευές Bluetooth. Βρέθηκαν οι παρακάτω συσκευές:</translation>
 <translation id="6277522088822131679">Παρουσιάστηκε ένα πρόβλημα κατά την εκτύπωση της σελίδας. Δοκιμάστε ξανά.</translation>
 <translation id="6295158916970320988">Όλοι οι ιστότοποι</translation>
 <translation id="629730747756840877">Λογαριασμός</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Η αντίστροφη μέτρηση <ph name="FQDN" /> εξαντλήθηκε. Θα ξεκινήσει ξανά αύριο.</translation>
 <translation id="6738867403308150051">Λήψη…</translation>
 <translation id="6746124502594467657">Μετακίνηση προς τα κάτω</translation>
-<translation id="6751888224264752704">Επίσης, να διαγραφούν αυτά τα δεδομένα Chrome από αυτήν τη συσκευή</translation>
 <translation id="6766622839693428701">Σύρετε προς τα κάτω για κλείσιμο.</translation>
 <translation id="6766758767654711248">Πατήστε για μετάβαση στον ιστότοπο</translation>
 <translation id="6767294960381293877">Άνοιγμα σε μισό ύψος της λίστας συσκευών στις οποίες θα κοινοποιηθεί μια καρτέλα.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Δοκιμάστε τις παρακάτω συμβουλές: Βεβαιωθείτε ότι υπάρχει αρκετός χώρος στη συσκευή σας. Δοκιμάστε να επαναλάβετε την εξαγωγή.</translation>
 <translation id="7698359219371678927">Δημιουργία μηνύματος ηλεκτρονικού ταχυδρομείου στην εφαρμογή <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Αυτόματη συμπλήρωση αναζητήσεων και URL</translation>
+<translation id="7725024127233776428">Εδώ εμφανίζονται οι σελίδες στις οποίες προσθέτετε σελιδοδείκτη</translation>
 <translation id="773466115871691567">Να μεταφράζονται πάντα οι σελίδες προς τα <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Για τον εντοπισμό επικίνδυνων εφαρμογών και ιστοτόπων, το Chrome στέλνει URL ορισμένων ιστοτόπων που επισκέπτεστε, περιορισμένες πληροφορίες συστήματος και ένα μέρος του περιεχομένου σελίδας στο Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Διαγραφή υπαρχόντων δεδομένων. Μπορείτε να τα ανακτήσετε επιστρέφοντας στον λογαριασμό σας <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Το Chrome μπορεί να χρησιμοποιήσει το <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> για την αναζήτηση στην Κίνα. Μπορείτε να αλλάξετε αυτήν την επιλογή στις <ph name="BEGIN_LINK" />Ρυθμίσεις<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Αποκλεισμός εάν ο ιστότοπος εμφανίζει παρεμβατικές ή παραπλανητικές διαφημίσεις (συνιστάται)</translation>
+<translation id="968900484120156207">Εδώ εμφανίζονται οι σελίδες που επισκέπτεστε</translation>
 <translation id="970715775301869095">Απομένουν <ph name="MINUTES" /> λεπτά</translation>
 <translation id="974555521953189084">Εισαγάγετε τη φράση πρόσβασης για να ξεκινήσετε τον συγχρονισμό.</translation>
 <translation id="981121421437150478">Εκτός σύνδεσης</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb
index 33367fa..80575c5 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Clear history, cookies, site data, cache…</translation>
 <translation id="129553762522093515">Recently closed</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – Sent from <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Group tabs</translation>
 <translation id="1331212799747679585">Chrome can’t update. More options</translation>
 <translation id="1332501820983677155">Google Chrome feature shortcuts</translation>
 <translation id="1360432990279830238">Sign out and turn off sync?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Basic</translation>
 <translation id="1671236975893690980">Download pending...</translation>
 <translation id="1672586136351118594">Don‘t show again</translation>
-<translation id="1679068421605151609">Developer Tools</translation>
 <translation id="1692118695553449118">Sync is on</translation>
 <translation id="169515064810179024">Block sites from accessing motion sensors</translation>
 <translation id="1697480839793160072">Telephones</translation>
@@ -712,6 +712,7 @@
 For example, some websites may respond to this request by showing you ads that aren’t based on other websites that you’ve visited. Many websites will still collect and use your browsing data – for example to improve security, to provide content, ads and recommendations and to generate reporting statistics.</translation>
 <translation id="624789221780392884">Update ready</translation>
 <translation id="6255999984061454636">Content suggestions</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> wants to scan for nearby Bluetooth devices; the following devices have been found:</translation>
 <translation id="6277522088822131679">There was a problem printing the page. Please try again.</translation>
 <translation id="6295158916970320988">All sites</translation>
 <translation id="629730747756840877">Account</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Your <ph name="FQDN" /> timer ran out. It will start again tomorrow.</translation>
 <translation id="6738867403308150051">Downloading…</translation>
 <translation id="6746124502594467657">Move down</translation>
-<translation id="6751888224264752704">Also clear this Chrome data from this device</translation>
 <translation id="6766622839693428701">Swipe down to close.</translation>
 <translation id="6766758767654711248">Tap to go to site</translation>
 <translation id="6767294960381293877">List of devices to share a tab with, opened at half height.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Try the following tips: make sure that there is enough space on your device; try to export again.</translation>
 <translation id="7698359219371678927">Create email in <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Auto-complete searches and URLs</translation>
+<translation id="7725024127233776428">Pages that you bookmark appear here</translation>
 <translation id="773466115871691567">Always translate pages in <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">To detect dangerous apps and sites, Chrome sends URLs of some pages that you visit, limited system information and some page content to Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Delete existing data. You can retrieve it by switching back to <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome can use <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> for search in China. You can change this in <ph name="BEGIN_LINK" />Settings<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Block if site shows intrusive or misleading ads (recommended)</translation>
+<translation id="968900484120156207">Pages that you visit appear here</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> mins left</translation>
 <translation id="974555521953189084">Enter your passphrase to start sync</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
index 28b4fed..cea3869 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Borra el historial, las cookies, los datos del sitio, la caché…</translation>
 <translation id="129553762522093515">Cerrado recientemente</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - Enviado desde <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Agrupar pestañas</translation>
 <translation id="1331212799747679585">No se puede actualizar Chrome. Más opciones</translation>
 <translation id="1332501820983677155">Accesos directos a las funciones de Google Chrome</translation>
 <translation id="1360432990279830238">¿Salir y desactivar la sincronización?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Básicas</translation>
 <translation id="1671236975893690980">Descarga pendiente…</translation>
 <translation id="1672586136351118594">No volver a mostrar</translation>
-<translation id="1679068421605151609">Herramientas del programador</translation>
 <translation id="1692118695553449118">La sincronización está activada.</translation>
 <translation id="169515064810179024">Impedir que los sitios accedan a los sensores de movimiento</translation>
 <translation id="1697480839793160072">Teléfonos</translation>
@@ -265,7 +265,7 @@
 <translation id="2900528713135656174">Crear evento</translation>
 <translation id="2902702728133930130">Se produjo un error inesperado durante el inicio de Chrome.</translation>
 <translation id="290376772003165898">¿La página no está en <ph name="LANGUAGE" />?</translation>
-<translation id="2904414404539560095">La lista de dispositivos con los que se comparte una pestaña está abierta en tamaño completo.</translation>
+<translation id="2904414404539560095">La lista de dispositivos con los que se puede compartir una pestaña está totalmente abierta.</translation>
 <translation id="2910701580606108292">Preguntar antes de permitir que los sitios reproduzcan contenido protegido</translation>
 <translation id="2913331724188855103">Permitir que todos los sitios guarden y lean datos de cookies (recomendado)</translation>
 <translation id="2923908459366352541">El nombre no es válido</translation>
@@ -323,7 +323,7 @@
 <translation id="3350687908700087792">Cerrar todas las pestañas de incógnito</translation>
 <translation id="3353615205017136254">Google proporcionó la página básica. Para cargar la original, presiona el botón.</translation>
 <translation id="3367813778245106622">Volver a acceder para iniciar la sincronización</translation>
-<translation id="3374023511497244703">Ya no se sincronizarán con tu Cuenta de Google los favoritos, el historial, las contraseñas ni otros datos de Chrome.</translation>
+<translation id="3374023511497244703">Ya no se sincronizarán con tu Cuenta de Google los favoritos, el historial, las contraseñas ni otros datos de Chrome.</translation>
 <translation id="3384347053049321195">Compartir imagen</translation>
 <translation id="3386292677130313581">Preguntar antes de permitir que los sitios conozcan tu ubicación (recomendado)</translation>
 <translation id="3387650086002190359"><ph name="FILE_NAME" /> no se pudo descargar debido a errores del sistema de archivos.</translation>
@@ -411,7 +411,7 @@
 <translation id="4099578267706723511">Envía las estadísticas de uso y los informes de fallos a Google para ayudarnos a mejorar Chrome.</translation>
 <translation id="410351446219883937">Reproducción automática</translation>
 <translation id="4116038641877404294">Descarga las páginas para usarlas sin conexión</translation>
-<translation id="4135200667068010335">Está cerrada la lista de dispositivos con los que se comparte una pestaña.</translation>
+<translation id="4135200667068010335">La lista de dispositivos con los que se puede compartir una pestaña está cerrada.</translation>
 <translation id="4149994727733219643">Vista simplificada para páginas web</translation>
 <translation id="4165986682804962316">Configuración del sitio</translation>
 <translation id="4169535189173047238">No permitir</translation>
@@ -712,6 +712,7 @@
 Por ejemplo, algunos sitios web pueden responder a la solicitud mediante anuncios que no están basados en otros sitios web que hayas visitado. Muchos sitios web seguirán recopilando y utilizando tus datos de navegación, por ejemplo, para mejorar la seguridad, proporcionar contenido, anuncios y recomendaciones, y generar estadísticas de informes.</translation>
 <translation id="624789221780392884">Actualización lista</translation>
 <translation id="6255999984061454636">Sugerencias de contenido</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> quiere analizar dispositivos Bluetooth cercanos; se encontraron los siguientes dispositivos:</translation>
 <translation id="6277522088822131679">Se produjo un error al imprimir la página. Vuelve a intentarlo.</translation>
 <translation id="6295158916970320988">Todos los sitios</translation>
 <translation id="629730747756840877">Cuenta</translation>
@@ -782,10 +783,9 @@
 <translation id="671481426037969117">Se agotó el temporizador de <ph name="FQDN" />. Volverá a empezar mañana.</translation>
 <translation id="6738867403308150051">Descargando…</translation>
 <translation id="6746124502594467657">Mover hacia abajo</translation>
-<translation id="6751888224264752704">También borrar los datos de Chrome de este dispositivo</translation>
 <translation id="6766622839693428701">Desliza hacia abajo para cerrar.</translation>
 <translation id="6766758767654711248">Presiona para ir al sitio</translation>
-<translation id="6767294960381293877">La lista de dispositivos con los que se comparte una pestaña está abierta a media altura.</translation>
+<translation id="6767294960381293877">La lista de dispositivos con los que se puede compartir una pestaña está abierta a media altura.</translation>
 <translation id="6782111308708962316">Evitar que los sitios web de terceros guarden y lean datos de cookies</translation>
 <translation id="6790428901817661496">Reproducir</translation>
 <translation id="679325081238418596">Accede a tus favoritos, historial, contraseñas y otras opciones de configuración en todos los dispositivos</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Intenta las siguientes sugerencias: Antes de exportar las contraseñas nuevamente, asegúrate de que haya espacio suficiente en tu dispositivo.</translation>
 <translation id="7698359219371678927">Crear correo electrónico en <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autocompletar búsquedas y URL</translation>
+<translation id="7725024127233776428">Las páginas que agregues a favoritos aparecerán aquí</translation>
 <translation id="773466115871691567">Traducir siempre las páginas en <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Para detectar apps y sitios peligrosos, Chrome envía a Google URL de algunas páginas que visitas, información limitada sobre el sistema y contenido de algunas páginas</translation>
@@ -1107,7 +1108,7 @@
 <translation id="9099018167121903954">Contenido descargado: <ph name="KILOBYTES" /> kilobytes</translation>
 <translation id="9100505651305367705">Se ofrece mostrar artículos en una vista simplificada, cuando es compatible</translation>
 <translation id="9100610230175265781">Se necesita una frase de contraseña.</translation>
-<translation id="9104217018994036254">Lista de dispositivos con los que se comparte una pestaña.</translation>
+<translation id="9104217018994036254">Lista de dispositivos con los que se puede compartir una pestaña.</translation>
 <translation id="9133703968756164531"><ph name="ITEM_NAME" /> (<ph name="ITEM_ID" />)</translation>
 <translation id="9137013805542155359">Mostrar original</translation>
 <translation id="9139068048179869749">Preguntar antes de permitir que los sitios envíen notificaciones (recomendado)</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Borra los datos existentes. Para recuperarlos, cambia de nuevo a <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome puede usar <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> para realizar búsquedas en China. Puede cambiar esta opción en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Bloquear si el sitio muestra anuncios intrusivos o engañosos (opción recomendada)</translation>
+<translation id="968900484120156207">Las páginas que visites aparecerán aquí</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> minutos restantes</translation>
 <translation id="974555521953189084">Ingresa tu frase de contraseña para iniciar la sincronización</translation>
 <translation id="981121421437150478">Sin conexión</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
index 6300d18..6c0d4c4 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Borrar el historial, las cookies, los datos de sitios web, la caché…</translation>
 <translation id="129553762522093515">Cerrado recientemente</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - Enviado desde <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Agrupar pestañas</translation>
 <translation id="1331212799747679585">No se ha podido actualizar Chrome. Más opciones</translation>
 <translation id="1332501820983677155">Combinaciones de teclas de funciones de Google Chrome</translation>
 <translation id="1360432990279830238">¿Cerrar sesión y detener sincronización?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Básico</translation>
 <translation id="1671236975893690980">Descarga pendiente…</translation>
 <translation id="1672586136351118594">No volver a mostrar</translation>
-<translation id="1679068421605151609">Herramientas para desarrolladores</translation>
 <translation id="1692118695553449118">La sincronización está activada</translation>
 <translation id="169515064810179024">No permitir que los sitios web accedan a los sensores de movimiento</translation>
 <translation id="1697480839793160072">Teléfonos</translation>
@@ -712,6 +712,7 @@
 Por ejemplo, algunos sitios web pueden responder a la solicitud mostrándote anuncios no basados en otros sitios web que hayas visitado. Muchos sitios web seguirán recopilando y utilizando tus datos de navegación (por ejemplo, para mejorar la seguridad, para proporcionar contenido, anuncios y recomendaciones, o para generar estadísticas de informes).</translation>
 <translation id="624789221780392884">Actualización lista</translation>
 <translation id="6255999984061454636">Sugerencias de contenido</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> quiere buscar dispositivos Bluetooth cercanos. Se han encontrado los siguientes dispositivos:</translation>
 <translation id="6277522088822131679">Se ha producido un problema al imprimir la página. Vuelve a intentarlo.</translation>
 <translation id="6295158916970320988">Todos los sitios</translation>
 <translation id="629730747756840877">Cuenta</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Se ha agotado el temporizador de <ph name="FQDN" />. Se reiniciará mañana.</translation>
 <translation id="6738867403308150051">Descargando…</translation>
 <translation id="6746124502594467657">Bajar</translation>
-<translation id="6751888224264752704">Borrar también los datos de Chrome de este dispositivo</translation>
 <translation id="6766622839693428701">Desliza el dedo hacia abajo para cerrarla.</translation>
 <translation id="6766758767654711248">Toca para ir al sitio web</translation>
 <translation id="6767294960381293877">La lista de dispositivos con los que puedes compartir una pestaña está abierta y ocupa la mitad inferior de la pantalla.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Prueba los siguientes consejos: deja suficiente espacio en el dispositivo y vuelve a exportar las contraseñas.</translation>
 <translation id="7698359219371678927">Crear correo electrónico en <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autocompletar búsquedas y URLs</translation>
+<translation id="7725024127233776428">Las páginas que añadas a marcadores aparecerán aquí</translation>
 <translation id="773466115871691567">Traducir siempre las páginas en <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Para detectar aplicaciones y sitios web peligrosos, Chrome envía a Google las URL de algunas de las páginas que visitas, información limitada del sistema y parte del contenido de las páginas.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Elimina los datos actuales. Para recuperarlos, cambia a <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome puede utilizar <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> para hacer búsquedas en China. Puedes cambiar esta opción en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Bloquear si el sitio web muestra anuncios invasivos o engañosos (opción recomendada)</translation>
+<translation id="968900484120156207">Las páginas que visites aparecerán aquí.</translation>
 <translation id="970715775301869095">Quedan <ph name="MINUTES" /> minutos</translation>
 <translation id="974555521953189084">Introduce la frase de contraseña para iniciar la sincronización</translation>
 <translation id="981121421437150478">Sin conexión</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_et.xtb b/chrome/android/java/strings/translations/android_chrome_strings_et.xtb
index 01f00c2..7ce5dd0 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_et.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_et.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Ajaloo, küpsiste, saidiandmete, vahemälu kustutamine …</translation>
 <translation id="129553762522093515">Viimati suletud</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – saadetud seadmest <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Vahelehtede grupeerimine</translation>
 <translation id="1331212799747679585">Chrome'i ei saa värskendada. Rohkem valikuid</translation>
 <translation id="1332501820983677155">Google Chrome'i funktsioonide otseteed</translation>
 <translation id="1360432990279830238">Login välja ja keelan sünkroonimise?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Põhiseaded</translation>
 <translation id="1671236975893690980">Allalaadimine on ootel …</translation>
 <translation id="1672586136351118594">Ära kuva uuesti</translation>
-<translation id="1679068421605151609">Arendaja tööriistad</translation>
 <translation id="1692118695553449118">Sünkroonimine on sisse lülitatud</translation>
 <translation id="169515064810179024">Blokeeri saitide juurdepääs liikumisanduritele</translation>
 <translation id="1697480839793160072">Telefonid</translation>
@@ -712,6 +712,7 @@
 Näiteks võivad mõned veebisaidid taotlusele reageerida nii, et näitavad teile reklaame, mis ei põhine muudel külastatud veebisaitidel. Paljud veebisaidid koguvad ning kasutavad endiselt teie sirvimisandmeid, näiteks turvalisuse parandamiseks, sisu, reklaamide ja soovituste pakkumiseks ning aruandlusstatistika loomiseks.</translation>
 <translation id="624789221780392884">Värskendus on valmis</translation>
 <translation id="6255999984061454636">Sisu soovitused</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> soovib otsida läheduses olevaid Bluetooth-seadmeid. Leiti järgmised seadmed:</translation>
 <translation id="6277522088822131679">Lehe printimisel ilmnes probleem. Proovige uuesti.</translation>
 <translation id="6295158916970320988">Kõik saidid</translation>
 <translation id="629730747756840877">Konto</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Teie rakenduse <ph name="FQDN" /> taimeri aeg sai otsa. See alustab uuesti homme.</translation>
 <translation id="6738867403308150051">Allalaadimine ...</translation>
 <translation id="6746124502594467657">Liiguta alla</translation>
-<translation id="6751888224264752704">Kustuta sellest seadmest ka Chrome'i andmed</translation>
 <translation id="6766622839693428701">Sulgemiseks pühkige alla.</translation>
 <translation id="6766758767654711248">Puudutage saidi külastamiseks</translation>
 <translation id="6767294960381293877">Vahelehe jagamise seadmete loend (poolel kõrgusel avatud).</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Järgige neid nõuandeid: veenduge, et seadmes oleks piisavalt ruumi, seejärel proovige uuesti eksportida.</translation>
 <translation id="7698359219371678927">Looge meil rakenduses <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Otsingute ja URL-ide automaatne täitmine</translation>
+<translation id="7725024127233776428">Järjehoidjatesse lisatud lehed kuvatakse siin</translation>
 <translation id="773466115871691567">Tõlgi alati <ph name="SOURCE_LANGUAGE" /> keeles olevad lehed</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Ohtlike rakenduste ja saitide tuvastamiseks saadab Chrome mõnede teie külastatud lehtede URL-id, piiratud süsteemiteabe ja mõne lehe sisu Google'ile</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Kustutage olemasolevad andmed. Need saate hankida, kui lülitate tagasi kontole <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome saab Hiinas otsimiseks kasutada teenust <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />. Seda saate muuta menüüs <ph name="BEGIN_LINK" />Seaded<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blokeeri, kui sait kuvab sekkuvaid või eksitavaid reklaame (soovitatav)</translation>
+<translation id="968900484120156207">Teie külastatud lehed kuvatakse siin</translation>
 <translation id="970715775301869095">Jäänud on <ph name="MINUTES" /> minutit</translation>
 <translation id="974555521953189084">Sünkroonimise alustamiseks sisestage parool</translation>
 <translation id="981121421437150478">Võrguühenduseta</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
index a59b82e7..779225e 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">پاک کردن سابقه، کوکی‌ها، داده‌های سایت، حافظه پنهان…</translation>
 <translation id="129553762522093515">اخیراً بسته‌شده</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - ارسال‌شده از <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">گروه‌بندی برگه‌ها</translation>
 <translation id="1331212799747679585">‏Chrome به‌روزرسانی نشد. گزینه‌های دیگر</translation>
 <translation id="1332501820983677155">‏میان‌برهای ویژه Google Chrome</translation>
 <translation id="1360432990279830238">از سیستم خارج و همگام‌سازی خاموش شود؟</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">پایه</translation>
 <translation id="1671236975893690980">بارگیری معلق است…</translation>
 <translation id="1672586136351118594">دیگر نشان داده نشود</translation>
-<translation id="1679068421605151609">ابزار برنامه‌نویس</translation>
 <translation id="1692118695553449118">همگام‌سازی روشن است</translation>
 <translation id="169515064810179024">سایت‌ها نمی‌توانند به حسگرهای حرکتی دسترسی داشته باشند</translation>
 <translation id="1697480839793160072">تلفن</translation>
@@ -712,6 +712,7 @@
 مثلاً ممکن است برخی از وب‌سایت‌ها با نمایش آگهی‌هایی که براساس وب‌سایت‌های نیستند که بازدید کرده‌اید به این درخواست پاسخ دهند. بسیاری از وب‌سایت‌ها همچنان داده‌های محصول مرور شما را جمع‌آوری و استفاده می‌کنند — مثلاً برای بهبود امنیت، ارائه محتوا، آگهی‌ها و توصیه‌ها و برای ایجاد آمارهای گزارش‌دهی.</translation>
 <translation id="624789221780392884">به‌روزرسانی آماده است</translation>
 <translation id="6255999984061454636">پیشنهادهای محتوا</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> می‌خواهد دستگاه‌های بلوتوث اطراف را جستجو کند؛ دستگاه‌های زیر پیدا شدند:</translation>
 <translation id="6277522088822131679">در چاپ صفحه مشکلی پیش آمد. لطفاً دوباره امتحان کنید.</translation>
 <translation id="6295158916970320988">همه سایت‌ها</translation>
 <translation id="629730747756840877">حساب</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">تایمر <ph name="FQDN" /> شما متوقف شد. دوباره فردا شروع به کار می‌کند.</translation>
 <translation id="6738867403308150051">در حال بارگیری…</translation>
 <translation id="6746124502594467657">انتقال به پایین</translation>
-<translation id="6751888224264752704">‏داده‌های این Chrome هم از این دستگاه پاک شود</translation>
 <translation id="6766622839693428701">برای بستن، تند به پایین بکشید.</translation>
 <translation id="6766758767654711248">برای رفتن به سایت، ضربه بزنید</translation>
 <translation id="6767294960381293877">فهرست نیمه‌باز دستگاه‌هایی که می‌توان با آن‌ها برگه هم‌رسانی کرد.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">نکات زیر را امتحان کنید: مطمئن شوید که در دستگاهتان فضای کافی وجود داشته باشد، سعی کنید دوباره صادر کنید.</translation>
 <translation id="7698359219371678927">ایجاد ایمیل در <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">تکمیل خودکار جستجوها و نشانی‌های وب</translation>
+<translation id="7725024127233776428">صفحاتی را که نشانک‌گذاری می‌کنید، در اینجا نشان داده می‌شوند</translation>
 <translation id="773466115871691567">صفحه‌های <ph name="SOURCE_LANGUAGE" /> همیشه ترجمه شوند</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">‏برای حذف برنامه‌ها و سایت‌های خطرناک، Chrome نشانی‌های وب برخی از صفحه‌هایی را که بازدید می‌کنید، اطلاعات سیستم محدود و برخی از محتوای صفحه را به Google می‌فرستد.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">حذف داده‌های موجود. می‌توانید با جابه‌جایی به <ph name="FROM_ACCOUNT" /> آن را بازیابی کنید.</translation>
 <translation id="95817756606698420">‏Chrome می‌تواند از <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> برای جستجو در چین استفاده کند. در <ph name="BEGIN_LINK" />تنظیمات<ph name="END_LINK" /> می‌توانید این را تغییر دهید.</translation>
 <translation id="965817943346481315">اگر سایتْ آگهی‌های مزاحم یا گمراه‌کننده نشان می‌دهد مسدود شود (توصیه می‌شود)</translation>
+<translation id="968900484120156207">صفحاتی را که بازدید کرده‌اید، اینجا نمایش داده می‌شوند</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> دقیقه باقی‌مانده است</translation>
 <translation id="974555521953189084">برای شروع همگام‌سازی، عبارت عبورتان را وارد کنید</translation>
 <translation id="981121421437150478">آفلاین</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
index 8066f09..97e1196 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Tyhjennä historia, evästeet, sivustojen tiedot, välimuisti ja niin edelleen.</translation>
 <translation id="129553762522093515">Hiljattain suljetut välilehdet</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – Lähetetty laitteelta <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Ryhmittele välilehtiä</translation>
 <translation id="1331212799747679585">Chromea ei voi päivittää. Lisää vaihtoehtoja</translation>
 <translation id="1332501820983677155">Google Chromen ominaisuuksien pikanäppäimet</translation>
 <translation id="1360432990279830238">Kirjaudu ulos ja lopeta synkronointi?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Perusvaihtoehdot</translation>
 <translation id="1671236975893690980">Lataus odottaa…</translation>
 <translation id="1672586136351118594">Älä näytä uudelleen</translation>
-<translation id="1679068421605151609">Kehittäjän työkalut</translation>
 <translation id="1692118695553449118">Synkronointi on käytössä.</translation>
 <translation id="169515064810179024">Estä sivustoja käyttämästä liiketunnistimien lukemia</translation>
 <translation id="1697480839793160072">Puhelimet</translation>
@@ -712,6 +712,7 @@
 Jotkin verkkosivustot voivat vastata tähän pyyntöön esimerkiksi näyttämällä sinulle mainoksia, jotka eivät perustu muihin vierailemiisi verkkosivustoihin. Monet sivustot keräävät ja käyttävät silti edelleen selaustietojasi – esimerkiksi turvallisuuden parantamiseen, sisällön, mainosten ja suositusten tarjoamiseen sekä raportointitilastojen luomiseen.</translation>
 <translation id="624789221780392884">Päivitys on valmis</translation>
 <translation id="6255999984061454636">Sisältöehdotukset</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> haluaa etsiä lähellä olevia Bluetooth-laitteita. Seuraavat laitteet löydettiin:</translation>
 <translation id="6277522088822131679">Sivua tulostettaessa tapahtui virhe. Yritä uudelleen.</translation>
 <translation id="6295158916970320988">Kaikki sivustot</translation>
 <translation id="629730747756840877">Tili</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Ajastimesta (<ph name="FQDN" />) loppui aika. Se alkaa alusta huomenna.</translation>
 <translation id="6738867403308150051">Ladataan…</translation>
 <translation id="6746124502594467657">Siirrä alas</translation>
-<translation id="6751888224264752704">Poista myös tämä Chrome-data laitteelta</translation>
 <translation id="6766622839693428701">Sulje pyyhkäisemällä alas.</translation>
 <translation id="6766758767654711248">Siirry sivustolle napauttamalla.</translation>
 <translation id="6767294960381293877">Välilehden jakamisen laiteluettelo avataan puolen näytön korkeudella.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Kokeile seuraavia keinoja: varmista, että laitteellasi on tarpeeksi tilaa, yritä viedä uudelleen.</translation>
 <translation id="7698359219371678927">Luo sähköposti sovelluksessa <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Täydennä automaattisesti hakuja ja URL-osoitteita</translation>
+<translation id="7725024127233776428">Kirjanmerkeiksi lisätyt sivut näkyvät tässä</translation>
 <translation id="773466115871691567">Käännä aina kielellä <ph name="SOURCE_LANGUAGE" /> kirjoitut sivut</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Vaarallisia sovelluksia ja sivustoja löytääkseen Chrome lähettää joidenkin avattujen sivujen URL-osoitteita, rajallisia järjestelmätietoja ja osia sivujen sisällöstä Googlelle</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Poistaa olemassa olevat tiedot. Voit palauttaa nykyiset tiedot kirjautumalla takaisin tilille <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome voi käyttää <ph name="BEGIN_BOLD" />Sogouta<ph name="END_BOLD" /> hakujen tekemiseen Kiinassa. Voit muokata tätä <ph name="BEGIN_LINK" />Asetuksissa<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Estä, jos sivusto näyttää häiritseviä tai harhaanjohtavia mainoksia (suositus)</translation>
+<translation id="968900484120156207">Avaamasi sivut näkyvät tässä</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> minuuttia jäljellä</translation>
 <translation id="974555521953189084">Aloita synkronointi antamalla tunnuslauseesi.</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
index a53f9fd9..9fb1674 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">I-clear ang history, cookies, site data, cache…</translation>
 <translation id="129553762522093515">Kamakailang isinara</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - Ipinadala mula sa <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Igrupo ang mga tab</translation>
 <translation id="1331212799747679585">Hindi ma-update ang Chrome. Higit pang opsyon</translation>
 <translation id="1332501820983677155">Mga shortcut ng feature ng Google Chrome</translation>
 <translation id="1360432990279830238">Mag-sign out at i-off ang pag-sync?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Pangunahin</translation>
 <translation id="1671236975893690980">Nakabinbin ang pag-download...</translation>
 <translation id="1672586136351118594">Huwag ipakitang muli</translation>
-<translation id="1679068421605151609">Mga Tool ng Developer</translation>
 <translation id="1692118695553449118">Naka-on ang pag-sync</translation>
 <translation id="169515064810179024">I-block ang mga site sa pag-access sa mga sensor ng paggalaw</translation>
 <translation id="1697480839793160072">Mga Telepono</translation>
@@ -712,6 +712,7 @@
 Halimbawa, puwedeng tumugon ang ilang website sa kahilingang ito sa pamamagitan ng pagpapakita sa iyo ng mga ad na hindi ibinatay sa iba pang nabisita mo nang website. Kokolektahin at gagamitin pa rin ng maraming website ang iyong data sa pag-browse - halimbawa, para mapahusay ang seguridad, makapagpakita ng content, mga ad, at rekomendasyon, at makabuo ng mga istatistika sa pag-uulat.</translation>
 <translation id="624789221780392884">Handa na ang pag-update</translation>
 <translation id="6255999984061454636">Mga suhestyong content</translation>
+<translation id="6258133034695130373">Gustong mag-scan ng <ph name="SITE" /> para sa mga Bluetooth device na nasa malapit, nahanap ang mga sumusunod na device:</translation>
 <translation id="6277522088822131679">Nagkaproblema sa pag-print sa pahina. Pakisubukang muli.</translation>
 <translation id="6295158916970320988">Lahat ng site</translation>
 <translation id="629730747756840877">Account</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Natapos na ang iyong timer ng <ph name="FQDN" />. Magsisimula itong muli bukas.</translation>
 <translation id="6738867403308150051">Nagda-download...</translation>
 <translation id="6746124502594467657">Ibaba</translation>
-<translation id="6751888224264752704">I-clear din ang data ng Chrome na ito sa device na ito</translation>
 <translation id="6766622839693428701">Mag-swipe pababa para isara.</translation>
 <translation id="6766758767654711248">I-tap para pumunta sa site</translation>
 <translation id="6767294960381293877">Nakabukas ang listahan ng mga device kung saan magbabahagi ng tab nang kalahati ang taas.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Subukan ang mga sumusunod na tip: tiyaking may sapat na espasyo sa iyong device, at subukang mag-export muli.</translation>
 <translation id="7698359219371678927">Gumawa ng email sa <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Awtomatikong kumpletuhin ang mga paghahanap at URL</translation>
+<translation id="7725024127233776428">Lalabas dito ang mga page na iyong.na-bookmark</translation>
 <translation id="773466115871691567">Palaging isalin ang mga page sa <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Para matukoy ang mapapanganib na app at site, nagpapadala ang Chrome ng mga URL ng ilang page na binibisita mo, limitadong impormasyon ng system, at ilang content ng page sa Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">I-delete ang kasalukuyang data. Mababawi mo ito sa pamamagitan ng paglipat pabalik sa <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Maaaring gamitin ng Chrome ang <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> para sa paghahanap sa China. Maaari mo itong baguhin sa <ph name="BEGIN_LINK" />Mga Setting<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">I-block kung nagpapakita ang site ng mga nakakasagabal o nakakapanlinlang na ad (inirerekomenda)</translation>
+<translation id="968900484120156207">Lalabas dito ang mga page na binibisita mo</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> (na) minuto na lang ang natitira</translation>
 <translation id="974555521953189084">Ilagay ang iyong passphrase upang simulan ang pag-sync</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
index 84b54c7..f68d39cd 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Efface l'historique, vider le cache, supprimer les cookies et les données de site…</translation>
 <translation id="129553762522093515">Récemment fermés</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> (envoyé depuis <ph name="DEVICE_NAME" />)</translation>
+<translation id="1310482092992808703">Regrouper les onglets</translation>
 <translation id="1331212799747679585">Impossible de mettre à jour Chrome. Plus d'options</translation>
 <translation id="1332501820983677155">Raccourcis liés aux fonctionnalités de Google Chrome</translation>
 <translation id="1360432990279830238">Se déconnecter et arrêter la synchro. ?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Général</translation>
 <translation id="1671236975893690980">Téléchargement en attente…</translation>
 <translation id="1672586136351118594">Ne plus afficher</translation>
-<translation id="1679068421605151609">Outils de développement</translation>
 <translation id="1692118695553449118">La synchronisation est activée.</translation>
 <translation id="169515064810179024">Bloque l'accès à vos capteurs de mouvement pour certains sites</translation>
 <translation id="1697480839793160072">Numéros de téléphone</translation>
@@ -712,6 +712,7 @@
 Par exemple, certains sites Web peuvent répondre à cette demande en diffusant des annonces qui ne sont pas déterminées en fonction des autres sites Web que vous avez consultés. Toutefois, nombre d'entre eux recueillent et utilisent vos données de navigation afin, par exemple, d'améliorer la sécurité ou d'afficher du contenu, des services, des annonces et des recommandations, ou encore pour générer des rapports statistiques.</translation>
 <translation id="624789221780392884">Mise à jour prête</translation>
 <translation id="6255999984061454636">Recommandations de contenus</translation>
+<translation id="6258133034695130373">Le site <ph name="SITE" /> souhaite rechercher les appareils Bluetooth à proximité. Les appareils suivants ont été détectés :</translation>
 <translation id="6277522088822131679">Un problème est survenu lors de l'impression de la page. Veuillez réessayer.</translation>
 <translation id="6295158916970320988">Tous les sites</translation>
 <translation id="629730747756840877">Compte</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Votre minuteur <ph name="FQDN" /> a expiré. Il redémarrera demain.</translation>
 <translation id="6738867403308150051">Téléchargement en cours…</translation>
 <translation id="6746124502594467657">Descendre</translation>
-<translation id="6751888224264752704">Effacer également ces données Chrome de cet appareil</translation>
 <translation id="6766622839693428701">Balayez l'écran vers le bas pour fermer la feuille.</translation>
 <translation id="6766758767654711248">Appuyez pour accéder au site</translation>
 <translation id="6767294960381293877">La liste des appareils avec lesquels vous pouvez partager un onglet est ouverte à mi-hauteur.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Essayez l'astuce suivante°: assurez-vous de disposer de suffisamment d'espace sur votre appareil, puis tentez à nouveau d'exporter les mots de passe.</translation>
 <translation id="7698359219371678927">Créer un e-mail dans <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Saisir semi-automatiquement les recherches et les URL</translation>
+<translation id="7725024127233776428">Les pages que vous ajoutez aux favoris sont répertoriées ici</translation>
 <translation id="773466115871691567">Toujours traduire les pages en <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Pour détecter les applications et sites dangereux, Chrome envoie à Google l'URL de certaines pages que vous consultez, ainsi que des informations système limitées et une partie du contenu de certaines pages.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Supprimer les données actuelles. Vous pouvez les récupérer en repassant sur le compte <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome peut utiliser <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> pour les recherches effectuées en Chine. Vous pouvez modifier cette option dans les <ph name="BEGIN_LINK" />paramètres<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Bloquer si le site affiche des annonces intrusives ou trompeuses (recommandé)</translation>
+<translation id="968900484120156207">Les pages que vous consultez sont répertoriées ici</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> minutes restantes</translation>
 <translation id="974555521953189084">Saisissez votre phrase secrète pour lancer la synchronisation.</translation>
 <translation id="981121421437150478">Hors connexion</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb b/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb
index 879d8412f..bba8a15 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_gu.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">ઇતિહાસ, કુકી, સાઇટ ડેટા, કૅશ સાફ કરો…</translation>
 <translation id="129553762522093515">તાજેતરમાં બંધ કરેલા</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" /> પરથી મોકલેલ</translation>
+<translation id="1310482092992808703">ટૅબનું ગ્રૂપ બનાવો</translation>
 <translation id="1331212799747679585">Chrome અપડેટ કરી શકાતું નથી. વધુ વિકલ્પો</translation>
 <translation id="1332501820983677155">Google Chrome સુવિધાના શૉર્ટકટ્સ</translation>
 <translation id="1360432990279830238">સાઇન આઉટ કરી સિંકનો વિકલ્પ બંધ કરવો છે?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">મૂળભૂત</translation>
 <translation id="1671236975893690980">ડાઉનલોડ બાકી…</translation>
 <translation id="1672586136351118594">ફરીથી બતાવશો નહીં</translation>
-<translation id="1679068421605151609">વિકાસકર્તા સાધનો</translation>
 <translation id="1692118695553449118">સમન્વયન ચાલુ છે</translation>
 <translation id="169515064810179024">સાઇટને મોશન સેન્સરને ઍક્સેસ કરવાથી બ્લૉક કરો</translation>
 <translation id="1697480839793160072">ટેલિફોન</translation>
@@ -712,6 +712,7 @@
 ઉદાહરણ તરીકે, કેટલીક વેબસાઇટ, તમે મુલાકાત લીધેલી બીજા વેબસાઇટ પર આધારિત ન હોય તેવી જાહેરાતો તમને બતાવીને આ વિનંતી પર પ્રતિસાદ આપી શકે છે. ઘણી વેબસાઇટ હજી પણ તમારા બ્રાઉઝિંગ ડેટાને ભેગો કરશે અને ઉપયોગ કરશે — ઉદાહરણ તરીકે સુરક્ષાને બહેતર બનાવવા, કન્ટેન્ટ, જાહેરાતો અને ભલામણો આપવા અને રિપોર્ટિંગ આંકડા જનરેટ કરવા માટે.</translation>
 <translation id="624789221780392884">અપડેટ તૈયાર</translation>
 <translation id="6255999984061454636">કન્ટેન્ટ માટેના સૂચનો</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> નજીકના બ્લૂટૂથ ડિવાઇસ માટે સ્કૅન કરવા માગે છે, નીચે મુજબના ડિવાઇસ મળ્યાં છે:</translation>
 <translation id="6277522088822131679">પૃષ્ઠને છાપવામાં સમસ્યા હતી. કૃપા કરીને ફરીથી પ્રયાસ કરો.</translation>
 <translation id="6295158916970320988">બધી સાઇટ્સ</translation>
 <translation id="629730747756840877">એકાઉન્ટ</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">તમારું <ph name="FQDN" /> ટાઇમર સમાપ્ત થયું. તે આવતી કાલે ફરી શરૂ થશે.</translation>
 <translation id="6738867403308150051">ડાઉનલોડ કરી રહ્યું છે...</translation>
 <translation id="6746124502594467657">નીચે ખસેડો</translation>
-<translation id="6751888224264752704">અને આ ડિવાઇસમાંથી તમારા Chrome ડેટાને સાફ કરો</translation>
 <translation id="6766622839693428701">બંધ કરવા માટે નીચેની તરફ સ્વાઇપ કરો.</translation>
 <translation id="6766758767654711248">સાઇટ પર જવા માટે ટૅપ કરો</translation>
 <translation id="6767294960381293877">કોઈ ટૅબ સાથે શેર કરવાના ડિવાઇસની સૂચિ અડધી ઊંચાઈએ ખૂલે છે.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">નીચેની ટિપ અજમાવી જુઓ: ખાતરી કરો કે તમારા ઉપકરણ પર પૂરતી સ્પેસ છે, ફરીથી નિકાસ કરવાનો પ્રયાસ કરો.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" /> માં ઇમેઇલ બનાવો</translation>
 <translation id="7704317875155739195">શોધ અને URLsને આપમેળે પૂર્ણ કરો</translation>
+<translation id="7725024127233776428">બુકમાર્ક કરેલા પેજ અહીં દેખાય છે</translation>
 <translation id="773466115871691567">હંમેશાં પેજનો <ph name="SOURCE_LANGUAGE" />માં અનુવાદ કરો</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">જોખમી ઍપ અને સાઇટ શોધી કાઢવા માટે, Chrome તમે મુલાકાત લો તે કેટલાક પેજના URLs, સિસ્ટમ વિશેની સીમિત માહિતી અને પેજનું કેટલુંક કન્ટેન્ટ Googleને મોકલે છે</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">અસ્તિત્વમાંનો ડેટા ડિલીટ કરો. તમે <ph name="FROM_ACCOUNT" /> પર પાછા સ્વિચ કરીને એને પાછું મેળવી શકો છો.</translation>
 <translation id="95817756606698420">Chrome, ચાઇનામાં શોધ માટે <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> નો ઉપયોગ કરી શકે છે. તમે આને <ph name="BEGIN_LINK" />સેટિંગ્સ<ph name="END_LINK" />માં બદલી શકો છો.</translation>
 <translation id="965817943346481315">જો સાઇટ ઘૃણાસ્પદ અથવા ભ્રામક જાહેરાતો બતાવતી હોય, તો બ્લૉક કરો (ભલામણ કરેલ)</translation>
+<translation id="968900484120156207">તમે મુલાકાત લીધેલા પેજ અહીં દેખાય છે</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> મિનિટ બાકી</translation>
 <translation id="974555521953189084">સમન્વયન શરૂ કરવા માટે તમારો પાસફ્રેઝ દાખલ કરો</translation>
 <translation id="981121421437150478">ઑફલાઇન</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
index ed0d9fc..03a93d2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">इतिहास, कुकी, साइट डेटा, कैश साफ़ करें…</translation>
 <translation id="129553762522093515">हाल ही में बंद किए गए</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" /> से भेजा गया</translation>
+<translation id="1310482092992808703">टैब को समूह में लगाएं</translation>
 <translation id="1331212799747679585">Chrome अपडेट नहीं किया जा सकता. ज़्यादा विकल्प</translation>
 <translation id="1332501820983677155">Google Chrome सुविधा शॉर्टकट</translation>
 <translation id="1360432990279830238">साइन आउट करें और सिंक बंद करें?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">मूलभूत</translation>
 <translation id="1671236975893690980">डाउनलोड लंबित…</translation>
 <translation id="1672586136351118594">फिर से न दिखाएं</translation>
-<translation id="1679068421605151609">डेवलपर टूल</translation>
 <translation id="1692118695553449118">समन्वयन चालू है</translation>
 <translation id="169515064810179024">साइटों को हलचल पकड़ने वाले सेंसर एक्सेस करने से रोकें</translation>
 <translation id="1697480839793160072">टेलीफ़ोन</translation>
@@ -712,6 +712,7 @@
 उदाहरण के लिए, कुछ वेबसाइटें इस अनुरोध का जवाब आपको ऐसे विज्ञापन दिखाकर दे सकती हैं, जो उन दूसरी वेबसाइटों पर आधारित नहीं हैं जिन्हें आपने देखा है. कई वेबसाइटें अब भी आपके ब्राउज़िंग डेटा को जमा और उनका उपयोग करेंगी - उदाहरण के तौर पर, सुरक्षा को बेहतर बनाने के लिए, अपनी वेबसाइट पर सामग्री, सेवाएं, विज्ञापन और सुझाव देने के लिए और रिपोर्टिंग के आकंड़े जनरेट करने के लिए.</translation>
 <translation id="624789221780392884">अपडेट तैयार है</translation>
 <translation id="6255999984061454636">सामग्री के सुझाव</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> आस-पास मौजूद ब्लूटूथ वाले डिवाइस स्कैन करना चाहता है. ये डिवाइस मिले हैं:</translation>
 <translation id="6277522088822131679">पेज को प्रिंट करने में समस्या थी. कृपया फिर से प्रयास करें.</translation>
 <translation id="6295158916970320988">सभी साइटें</translation>
 <translation id="629730747756840877">खाता</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117"><ph name="FQDN" /> इस्तेमाल करने का समय खत्म हो गया. यह कल फिर से शुरू होगा.</translation>
 <translation id="6738867403308150051">डाउनलोड हो रहे हैं...</translation>
 <translation id="6746124502594467657">नीचे जाएं</translation>
-<translation id="6751888224264752704">साथ ही, इस डिवाइस से Chrome का यह डेटा मिटाएं</translation>
 <translation id="6766622839693428701">बंद करने के लिए नीचे स्वाइप करें.</translation>
 <translation id="6766758767654711248">साइट पर जाने के लिए टैप करें</translation>
 <translation id="6767294960381293877">टैब शेयर करने के लिए चुने जाने वाले डिवाइस की सूची आधी खुली हुई है.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">ये सलाह आज़माएं: पक्का करें कि आपके डिवाइस पर ज़रूरी जगह उपलब्ध है, फिर दोबारा निर्यात करके देखें.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" /> में ईमेल बनाएं</translation>
 <translation id="7704317875155739195">खोजों और यूआरएल को अपने आप पूरा करें</translation>
+<translation id="7725024127233776428">आप जो पेज बुकमार्क करते हैं वे यहां पर दिखाई देंगे</translation>
 <translation id="773466115871691567"><ph name="SOURCE_LANGUAGE" /> भाषा के पेज का हमेशा अनुवाद करें</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">खतरनाक ऐप्लिकेशन और साइटों का पता लगाने के लिए, Chrome ऐसे कुछ पेज का यूआरएल Google को भेजता है जिन पर आप जाते हैं. साथ ही, वह सिस्टम की सीमित जानकारी और पेज की कुछ सामग्री भी Google को भेजता है</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">मौजूदा डेटा मिटाएं. आप <ph name="FROM_ACCOUNT" /> पर वापस जाकर उसे वापस ला सकते हैं.</translation>
 <translation id="95817756606698420">चीन में खोज करने के लिए Chrome, <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> का इस्तेमाल कर सकता है. आप इसे <ph name="BEGIN_LINK" />सेटिंग<ph name="END_LINK" /> में बदल सकते हैं.</translation>
 <translation id="965817943346481315">अगर साइट तंग करने वाले या गुमराह करने वाले विज्ञापन दिखाई देते हैं, तो उन्हें ब्लॉक करें (सुझाव)</translation>
+<translation id="968900484120156207">आप जिन पेजों पर जाएंगे वे यहां दिखाई देंगे</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> मिनट शेष</translation>
 <translation id="974555521953189084">सिंक शुरू करने के लिए अपना 'पासफ़्रेज़' डालें</translation>
 <translation id="981121421437150478">ऑफ़लाइन</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
index 9ac9abe..2d49d265 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Brisanje povijesti, kolačića, podataka web-lokacija, predmemorije...</translation>
 <translation id="129553762522093515">Nedavno zatvoreno</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – poslano s uređaja <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Grupiraj kartice</translation>
 <translation id="1331212799747679585">Chrome se ne može ažurirati. Više opcija</translation>
 <translation id="1332501820983677155">Prečaci za značajke Google Chromea</translation>
 <translation id="1360432990279830238">Odjaviti se i isključiti sinkronizaciju?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Osnovne</translation>
 <translation id="1671236975893690980">Preuzimanje na čekanju…</translation>
 <translation id="1672586136351118594">Ne prikazuj ponovo</translation>
-<translation id="1679068421605151609">Alati za razvojne programere</translation>
 <translation id="1692118695553449118">Sinkronizacija je uključena</translation>
 <translation id="169515064810179024">Blokiranje pristupa senzorima kretanja za web-lokacije</translation>
 <translation id="1697480839793160072">Telefoni</translation>
@@ -712,6 +712,7 @@
 Na primjer, neke web-lokacije na taj zahtjev mogu odgovoriti tako da vam prikažu oglase koji se ne temelje na drugim web-lokacijama koje ste posjetili. Mnoge web-lokacije i dalje će prikupljati i upotrebljavati vaše podatke o pregledavanju, primjerice, za poboljšanje sigurnosti, pružanje sadržaja, oglasa i preporuka, kao i za generiranje statističkih izvješća.</translation>
 <translation id="624789221780392884">Ažuriranje je spremno</translation>
 <translation id="6255999984061454636">Prijedlozi sadržaja</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> želi potražiti Bluetooth uređaje u blizini. Pronađeni su sljedeći uređaji:</translation>
 <translation id="6277522088822131679">Pojavio se problem prilikom ispisivanja stranice. Pokušajte ponovo.</translation>
 <translation id="6295158916970320988">Sve web-lokacije</translation>
 <translation id="629730747756840877">Račun</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Isteklo je odbrojavanje za aplikaciju <ph name="FQDN" />. Ponovo će se pokrenuti sutra.</translation>
 <translation id="6738867403308150051">Preuzimanje...</translation>
 <translation id="6746124502594467657">Pomakni dolje</translation>
-<translation id="6751888224264752704">Također izbriši podatke iz Chromea s ovog uređaja</translation>
 <translation id="6766622839693428701">Prijeđite prstom prema dolje da biste zatvorili.</translation>
 <translation id="6766758767654711248">Dodirnite za otvaranje web-lokacije</translation>
 <translation id="6767294960381293877">Popis za odabir uređaja s kojim će se dijeliti kartica otvoren na pola visine.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Pokušajte napraviti sljedeće: provjerite ima li dovoljno prostora na uređaju i pokušajte ponoviti izvoz.</translation>
 <translation id="7698359219371678927">Izradite e-poruku u aplikaciji <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Samodovršavanje pretraživanja i URL-ova</translation>
+<translation id="7725024127233776428">Ovdje se prikazuju stranice koje označite</translation>
 <translation id="773466115871691567">Uvijek prevodi <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Radi otkrivanja opasnih aplikacija i web-lokacija Chrome šalje Googleu URL-ove nekih stranica koje posjećujete, ograničene podatke o sustavu i dio sadržaja web-stranica</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Postojeći će se podaci izbrisati. Dohvatiti ih možete tako da se vratite na <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome za pretraživanje u Kini može upotrebljavati <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />. To možete promijeniti u <ph name="BEGIN_LINK" />postavkama<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blokiraj ako web-lokacija prikazuje ometajuće ili obmanjujuće oglase (preporučeno)</translation>
+<translation id="968900484120156207">Ovdje se prikazuju stranice koje posjećujete</translation>
 <translation id="970715775301869095">Preostalo minuta: <ph name="MINUTES" /></translation>
 <translation id="974555521953189084">Unesite šifru da biste pokrenuli sinkronizaciju</translation>
 <translation id="981121421437150478">Izvanmrežno</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
index 9d4e424..1efc4e42 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Előzmények, cookie-k, webhelyadatok és a gyorsítótár törlése…</translation>
 <translation id="129553762522093515">Mostanában bezárt</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – A(z) <ph name="DEVICE_NAME" /> eszközről</translation>
+<translation id="1310482092992808703">Lapok csoportosítása</translation>
 <translation id="1331212799747679585">A Chrome frissítése nem lehetséges. További lehetőségek</translation>
 <translation id="1332501820983677155">A Google Chrome-funkciók billentyűparancsai</translation>
 <translation id="1360432990279830238">Kijelentkezik, és kikapcsolja a szinkronizálást?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Alapok</translation>
 <translation id="1671236975893690980">Letöltés függőben…</translation>
 <translation id="1672586136351118594">Ne jelenjen meg többé</translation>
-<translation id="1679068421605151609">Fejlesztői eszközök</translation>
 <translation id="1692118695553449118">Szinkronizálás bekapcsolva</translation>
 <translation id="169515064810179024">A mozgásérzékelőkhöz való hozzáférés letiltása a webhelyek számára</translation>
 <translation id="1697480839793160072">Telefonok</translation>
@@ -712,6 +712,7 @@
 Egyes webhelyek például válaszolhatnak rá úgy, hogy olyan hirdetéseket jelenítenek meg, amelyek nem a már felkeresett egyéb webhelyeken alapulnak. Számos webhely ilyenkor is gyűjti és felhasználja a böngészési adatokat (például a biztonság növelése, továbbá tartalom, hirdetések és ajánlatok biztosítása, valamint jelentésekhez használt statisztika előállítása céljából).</translation>
 <translation id="624789221780392884">A frissítés készen áll</translation>
 <translation id="6255999984061454636">Javasolt tartalmak</translation>
+<translation id="6258133034695130373">A(z) <ph name="SITE" /> szeretné megkeresni a közeli Bluetooth-eszközöket; a következő eszközöket találta:</translation>
 <translation id="6277522088822131679">Hiba történt az oldal nyomtatásakor. Próbálja újra.</translation>
 <translation id="6295158916970320988">Az összes webhely</translation>
 <translation id="629730747756840877">Fiók</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">A(z) <ph name="FQDN" /> alkalmazás időzítése lejárt. Holnap újraindul.</translation>
 <translation id="6738867403308150051">Letöltés…</translation>
 <translation id="6746124502594467657">Mozgatás lefelé</translation>
-<translation id="6751888224264752704">A Chrome adatai is törlődjenek erről az eszközről</translation>
 <translation id="6766622839693428701">A bezáráshoz csúsztasson lefelé.</translation>
 <translation id="6766758767654711248">Koppintson a webhely felkereséséhez</translation>
 <translation id="6767294960381293877">Lap megosztására szolgáló eszközök listája félmagasságban megnyitva.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Próbálkozzon a következő tippekkel: Győződjön meg arról, hogy elegendő tárhely áll rendelkezésre az eszközön, majd próbálja újra az exportálást.</translation>
 <translation id="7698359219371678927">E-mail létrehozása a(z) <ph name="APP_NAME" /> alkalmazásban</translation>
 <translation id="7704317875155739195">Keresések és URL-címek automatikus kiegészítése</translation>
+<translation id="7725024127233776428">Itt jelennek meg a könyvjelzőként mentett oldalak</translation>
 <translation id="773466115871691567">Mindig fordítsa le a(z) <ph name="SOURCE_LANGUAGE" /> nyelvű oldalakat</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">A veszélyes alkalmazások és webhelyek észlelésének érdekében a Chrome az egyes felkeresett oldalak URL-jét, valamint korlátozott rendszer-információkat és bizonyos oldaltartalmakat továbbít a Google-nak.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Meglévő adatok törlése. Ezeket úgy hívhatja le, hogy visszavált a következő fiókra: <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">A Chrome igénybe veheti a <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> keresőszolgáltatást, hogy Kínában kereshessen. Ezt a <ph name="BEGIN_LINK" />Beállításokban<ph name="END_LINK" /> módosíthatja.</translation>
 <translation id="965817943346481315">Letiltás, ha a webhely tolakodó vagy félrevezető hirdetéseket jelenít meg (ajánlott)</translation>
+<translation id="968900484120156207">Itt jelennek meg a felkeresett oldalak</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> perc van hátra</translation>
 <translation id="974555521953189084">A szinkronizálás megkezdéséhez adja meg összetett jelszavát</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
index 706ad55..fdaa3b1 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Menghapus histori, cookie, data situs, cache...</translation>
 <translation id="129553762522093515">Baru saja ditutup</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - Dikirim dari <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Kelompokkan tab</translation>
 <translation id="1331212799747679585">Chrome tidak dapat diupdate. Opsi lainnya</translation>
 <translation id="1332501820983677155">Pintasan fitur Google Chrome</translation>
 <translation id="1360432990279830238">Logout dan nonaktifkan sinkronisasi?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Dasar</translation>
 <translation id="1671236975893690980">Proses download tertunda...</translation>
 <translation id="1672586136351118594">Jangan tampilkan lagi</translation>
-<translation id="1679068421605151609">Developer Tools</translation>
 <translation id="1692118695553449118">Sinkronisasi aktif</translation>
 <translation id="169515064810179024">Memblokir situs agar tidak mengakses sensor gerakan</translation>
 <translation id="1697480839793160072">Telepon</translation>
@@ -712,6 +712,7 @@
 Misalnya, beberapa situs web mungkin menanggapi permintaan ini dengan menayangkan iklan yang tidak berdasarkan pada data kunjungan Anda ke situs web lainnya. Banyak situs web masih akan mengumpulkan dan menggunakan data penjelajahan Anda — misalnya, untuk meningkatkan keamanan, menyediakan konten, iklan, dan saran, serta untuk membuat statistik pelaporan.</translation>
 <translation id="624789221780392884">Pembaruan siap</translation>
 <translation id="6255999984061454636">Saran konten</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> ingin memindai perangkat Bluetooth terdekat, perangkat berikut telah ditemukan:</translation>
 <translation id="6277522088822131679">Terjadi masalah saat mencetak halaman. Coba lagi.</translation>
 <translation id="6295158916970320988">Semua situs</translation>
 <translation id="629730747756840877">Akun</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Timer <ph name="FQDN" /> Anda telah berakhir. Timer akan dimulai lagi besok.</translation>
 <translation id="6738867403308150051">Mendownload…</translation>
 <translation id="6746124502594467657">Berpindah ke bawah</translation>
-<translation id="6751888224264752704">Hapus juga data Chrome dari perangkat ini</translation>
 <translation id="6766622839693428701">Geser ke bawah untuk menutup.</translation>
 <translation id="6766758767654711248">Ketuk untuk membuka situs</translation>
 <translation id="6767294960381293877">Daftar perangkat yang dapat digunakan untuk berbagi tab terbuka dalam setengah layar.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Coba tips berikut ini: pastikan ruang di perangkat Anda mencukupi, lalu coba ekspor lagi.</translation>
 <translation id="7698359219371678927">Buat email di <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Lengkapi otomatis penelusuran dan URL</translation>
+<translation id="7725024127233776428">Halaman yang Anda bookmark muncul di sini</translation>
 <translation id="773466115871691567">Selalu terjemahkan halaman dalam bahasa <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Untuk mendeteksi aplikasi dan situs berbahaya, Chrome mengirimkan URL beberapa halaman yang Anda kunjungi, informasi sistem terbatas, dan beberapa konten halaman ke Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Hapus data yang sudah ada. Anda dapat mengambilnya dengan beralih ke <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome dapat menggunakan <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> sebagai mesin telusur di Tiongkok. Anda dapat mengubahnya di <ph name="BEGIN_LINK" />Setelan<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blokir jika situs menampilkan iklan yang mengganggu atau menyesatkan (direkomendasikan)</translation>
+<translation id="968900484120156207">Halaman yang Anda kunjungi akan muncul di sini</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> menit lagi</translation>
 <translation id="974555521953189084">Masukkan frasa sandi Anda untuk memulai sinkronisasi</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
index c5c6c69d..65d35ba 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Cancella la cronologia, i cookie, i dati dei siti, la cache…</translation>
 <translation id="129553762522093515">Chiuse di recente</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - Inviato da <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Raggruppa schede</translation>
 <translation id="1331212799747679585">Impossibile aggiornare Chrome. Altre opzioni</translation>
 <translation id="1332501820983677155">Scorciatoie delle funzioni di Google Chrome</translation>
 <translation id="1360432990279830238">Uscire e disattivare la sincronizzazione?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Base</translation>
 <translation id="1671236975893690980">Download in attesa...</translation>
 <translation id="1672586136351118594">Non visualizzare più</translation>
-<translation id="1679068421605151609">Strumenti per sviluppatori</translation>
 <translation id="1692118695553449118">La sincronizzazione è attiva</translation>
 <translation id="169515064810179024">Impedisci ai siti di accedere ai sensori di movimento</translation>
 <translation id="1697480839793160072">Telefoni</translation>
@@ -712,6 +712,7 @@
 Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annunci non basati su altri siti web visitati. Molti siti web continueranno tuttavia a raccogliere e a utilizzare i dati di navigazione, ad esempio per aumentare la sicurezza, fornire contenuti, annunci e consigli, nonché per generare statistiche sui rapporti.</translation>
 <translation id="624789221780392884">Aggiornamento pronto</translation>
 <translation id="6255999984061454636">Contenuti suggeriti</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> richiede di eseguire la scansione per rilevare dispositivi Bluetooth nelle vicinanze; sono stati rilevati i seguenti dispositivi:</translation>
 <translation id="6277522088822131679">Si è verificato un problema durante la stampa della pagina. Riprova.</translation>
 <translation id="6295158916970320988">Tutti i siti</translation>
 <translation id="629730747756840877">Account</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Il timer di <ph name="FQDN" /> è scaduto. Verrà riavviato domani.</translation>
 <translation id="6738867403308150051">Download in corso…</translation>
 <translation id="6746124502594467657">Sposta giù</translation>
-<translation id="6751888224264752704">Cancella questi dati di Chrome anche dal dispositivo</translation>
 <translation id="6766622839693428701">Fai scorrere verso il basso per chiudere.</translation>
 <translation id="6766758767654711248">Tocca per visitare il sito</translation>
 <translation id="6767294960381293877">Elenco di dispositivi con cui condividere una scheda aperto nella parte inferiore dello schermo.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Prova i seguenti suggerimenti: assicurati di avere spazio sufficiente sul dispositivo e prova a esportare di nuovo.</translation>
 <translation id="7698359219371678927">Crea email in <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Completamento automatico di ricerche e URL</translation>
+<translation id="7725024127233776428">Le pagine aggiunte ai preferiti saranno mostrate qui</translation>
 <translation id="773466115871691567">Traduci sempre le pagine in <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Per rilevare app e siti pericolosi, Chrome invia a Google gli URL di alcune pagine che visiti, informazioni limitate sul sistema e i contenuti di alcune pagine</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Elimina i dati esistenti. Puoi recuperarli tornando all'account <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome può usare <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> per le ricerche in Cina. Puoi modificare questa preferenza nelle <ph name="BEGIN_LINK" />Impostazioni<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blocca se il sito mostra annunci invasivi o fuorvianti (consigliato)</translation>
+<translation id="968900484120156207">Le pagine visitate saranno mostrate qui</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> min rimanenti</translation>
 <translation id="974555521953189084">Inserisci la passphrase per avviare la sincronizzazione</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
index 88b5338e..56438c7 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">‏ניקוי ההיסטוריה, קובצי ה-Cookie, נתוני האתרים, המטמון…</translation>
 <translation id="129553762522093515">נסגרו לאחרונה</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> — נשלחה מ-<ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">קיבוץ כרטיסיות</translation>
 <translation id="1331212799747679585">‏לא ניתן לעדכן את Chrome. אפשרויות נוספות</translation>
 <translation id="1332501820983677155">‏מקשי קיצור לתכונות של Google Chrome‏</translation>
 <translation id="1360432990279830238">לצאת ולהשבית את הסנכרון?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">בסיסי</translation>
 <translation id="1671236975893690980">ההורדה תיכף תתחיל…</translation>
 <translation id="1672586136351118594">אין להציג שוב</translation>
-<translation id="1679068421605151609">כלים עבור מפתחים</translation>
 <translation id="1692118695553449118">סנכרון מופעל</translation>
 <translation id="169515064810179024">חסימת הגישה של אתרים אל חיישני תנועה</translation>
 <translation id="1697480839793160072">טלפונים</translation>
@@ -712,6 +712,7 @@
 לדוגמה, ייתכן שבתגובה לבקשה, אתרים מסוימים יציגו מודעות שאינן מבוססות על אתרים אחרים שבהם ביקרת. אתרים רבים ימשיכו לאסוף את נתוני הגלישה שלך ולהשתמש בהם, למשל כדי לשפר את האבטחה, כדי לספק תוכן, מודעות והמלצות וכדי ליצור נתונים סטטיסטיים לדיווח.</translation>
 <translation id="624789221780392884">העדכון מוכן</translation>
 <translation id="6255999984061454636">הצעות לתוכן</translation>
+<translation id="6258133034695130373">‏<ph name="SITE" /> מבקש לבצע סריקה כדי לאתר מכשירי Bluetooth קרובים. המכשירים הבאים נמצאו:</translation>
 <translation id="6277522088822131679">אירעה בעיה בעת הדפסת הדף. נסה שוב.</translation>
 <translation id="6295158916970320988">כל האתרים</translation>
 <translation id="629730747756840877">חשבון</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">זמן השימוש באפליקציה <ph name="FQDN" /> הסתיים. הטיימר יופעל מחדש מחר ואז אפשר יהיה להשתמש שוב באפליקציה.</translation>
 <translation id="6738867403308150051">מוריד...</translation>
 <translation id="6746124502594467657">הזז למטה</translation>
-<translation id="6751888224264752704">‏יש גם לנקות את נתוני Chrome מהמכשיר הזה</translation>
 <translation id="6766622839693428701">החלקה מטה סוגרת.</translation>
 <translation id="6766758767654711248">הקשה תעביר אותך אל האתר</translation>
 <translation id="6767294960381293877">רשימת המכשירים שאפשר לשתף איתם כרטיסייה נפתחה בחצי גובה המסך.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">אפשר לנסות את הטיפים הבאים: צריך לוודא שיש מספיק מקום פנוי במכשיר ואז לנסות לייצא שוב.</translation>
 <translation id="7698359219371678927">צור הודעת אימייל ב-<ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">השלמה אוטומטית של חיפושים וכתובות אתרים</translation>
+<translation id="7725024127233776428">הדפים שהוספת לסימניות מופיעים כאן</translation>
 <translation id="773466115871691567">ברצוני לקבל תרגום תמיד דפים ב<ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">‏כדי לזהות אפליקציות ואתרים מסוכנים, Chrome שולח אל Google כתובות URL של חלק מהדפים שאליהם נכנסת, מידע מוגבל לגבי המערכת וחלק מתוכן הדפים</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">מחק נתונים קיימים. כדי לאחזר אותם, חזור אל <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">‏דפדפן Chrome יכול להשתמש ב-<ph name="BEGIN_BOLD" />Sogou‏<ph name="END_BOLD" /> כדי לחפש בסין. אפשר לשנות את ההעדפה הזאת ב<ph name="BEGIN_LINK" />הגדרות<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">חסימה אם באתר מוצגות מודעות מפריעות או מטעות (מומלץ)</translation>
+<translation id="968900484120156207">הדפים שבהם ביקרת מופיעים כאן</translation>
 <translation id="970715775301869095">נותרו <ph name="MINUTES" /> דקות</translation>
 <translation id="974555521953189084">הזן את ביטוי הסיסמה כדי להתחיל בסנכרון</translation>
 <translation id="981121421437150478">לא מקוון</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
index 7f9fac72..0321173a 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">履歴、Cookie、サイトデータ、キャッシュを削除…</translation>
 <translation id="129553762522093515">最近閉じたタブ</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" /> から送信</translation>
+<translation id="1310482092992808703">タブをグループ化</translation>
 <translation id="1331212799747679585">Chrome を更新できません。その他のオプション</translation>
 <translation id="1332501820983677155">Google Chrome 機能のショートカット</translation>
 <translation id="1360432990279830238">ログアウトして同期をオフにしますか?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">基本設定</translation>
 <translation id="1671236975893690980">ダウンロードを待機しています...</translation>
 <translation id="1672586136351118594">次回から表示しない</translation>
-<translation id="1679068421605151609">デベロッパー ツール</translation>
 <translation id="1692118695553449118">同期は有効です</translation>
 <translation id="169515064810179024">サイトによるモーション センサーへのアクセスをブロックする</translation>
 <translation id="1697480839793160072">電話</translation>
@@ -712,6 +712,7 @@
 たとえば一部のウェブサイトでは、このリクエストに対して、ユーザーが過去にアクセスしたウェブサイトとは関係のない広告が表示されます。トラッキングを拒否しても、実際のところ多くのウェブサイトではユーザーの閲覧データが収集され利用されています。その用途としては、セキュリティの強化や、コンテンツ、サービス、広告、おすすめの表示、レポート統計情報の作成などが挙げられます。</translation>
 <translation id="624789221780392884">アップデート準備完了</translation>
 <translation id="6255999984061454636">おすすめのコンテンツ</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> が近くの Bluetooth デバイスのスキャンを求めています。検出済みのデバイスは次のとおりです。</translation>
 <translation id="6277522088822131679">ページの印刷中に問題が発生しました。もう一度お試しください。</translation>
 <translation id="6295158916970320988">すべてのサイト</translation>
 <translation id="629730747756840877">アカウント</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117"><ph name="FQDN" /> のタイマーが切れました。タイマーはまた明日開始されます。</translation>
 <translation id="6738867403308150051">ダウンロードしています…</translation>
 <translation id="6746124502594467657">下に移動</translation>
-<translation id="6751888224264752704">この Chrome データもこのデバイスから削除する</translation>
 <translation id="6766622839693428701">閉じるには下にスワイプします。</translation>
 <translation id="6766758767654711248">タップしてサイトに移動する</translation>
 <translation id="6767294960381293877">タブを共有するデバイスのリストが画面の下半分に表示されました。</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">推奨される対策: デバイスに十分な空き容量があることを確認し、再度エクスポートを試します。</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" /> でメールを作成</translation>
 <translation id="7704317875155739195">検索語句や URL をオートコンプリートする</translation>
+<translation id="7725024127233776428">ブックマークしたページがここに表示されます</translation>
 <translation id="773466115871691567"><ph name="SOURCE_LANGUAGE" />のページを常に翻訳する</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" />(<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">危険なアプリやサイトを検出するために、アクセスした一部のページの URL と限定的なシステム情報、一部のページ コンテンツが Chrome から Google に送信されます</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">既存のデータを削除します。<ph name="FROM_ACCOUNT" /> に切り替えると、削除したデータを取得できます。</translation>
 <translation id="95817756606698420">中国のユーザーは Chrome での検索に <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> を使用できます。この設定は [<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />] で変更可能です。</translation>
 <translation id="965817943346481315">煩わしい広告や誤解を招く広告が表示されるサイトの場合にブロック(推奨)</translation>
+<translation id="968900484120156207">アクセスしたページがここに表示されます</translation>
 <translation id="970715775301869095">残り <ph name="MINUTES" /> 分</translation>
 <translation id="974555521953189084">同期を開始するにはパスワードを入力します</translation>
 <translation id="981121421437150478">オフライン</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb b/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb
index bbf4859f..2a4593c 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_kn.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">ಇತಿಹಾಸ, ಕುಕೀಗಳು, ಸೈಟ್‌ ಡೇಟಾ, ಸಂಗ್ರಹವನ್ನು ತೆರವುಗೊಳಿಸಿ…</translation>
 <translation id="129553762522093515">ಇತ್ತೀಚೆಗೆ ಮುಚ್ಚಲಾಗಿರುವುದು</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" /> ಸಾಧನದಿಂದ ಕಳುಹಿಸಲಾಗಿದೆ</translation>
+<translation id="1310482092992808703">ಟ್ಯಾಬ್‌ಗಳನ್ನು ಗುಂಪು ಮಾಡಿ</translation>
 <translation id="1331212799747679585">Chrome ಅಪ್‌ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು</translation>
 <translation id="1332501820983677155">Google Chrome ವೈಶಿಷ್ಟ್ಯ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು</translation>
 <translation id="1360432990279830238">ಸೈನ್ ಔಟ್ ಮಾಡಿ, ಸಿಂಕ್ ಆಫ್ ಮಾಡುವುದೇ?</translation>
@@ -95,7 +96,6 @@
 <translation id="1670399744444387456">ಮೂಲ</translation>
 <translation id="1671236975893690980">ಡೌನ್‌ಲೋಡ್ ಬಾಕಿ ಉಳಿದಿದೆ...</translation>
 <translation id="1672586136351118594">ಮತ್ತೊಮ್ಮೆ ತೋರಿಸಬೇಡಿ</translation>
-<translation id="1679068421605151609">ಡೆವಲಪರ್ ಟೂಲ್ಸ್</translation>
 <translation id="1692118695553449118">ಸಿಂಕ್‌ ಆನ್‌ ಆಗಿದೆ</translation>
 <translation id="169515064810179024">ಚಲನಾ ಸೆನ್ಸರ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸದಂತೆ ಸೈಟ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation>
 <translation id="1697480839793160072">ಟೆಲಿಫೋನ್‌ಗಳು</translation>
@@ -712,6 +712,7 @@
 ಉದಾಹರಣೆಗೆ, ಕೆಲವು ವೆಬ್‌ಸೈಟ್‌ಗಳು, ನೀವು ಭೇಟಿ ನೀಡಿದ ಇತರ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ಆಧರಿಸಿಲ್ಲದ ಜಾಹೀರಾತುಗಳನ್ನು ನಿಮಗೆ ತೋರಿಸುವ ಮೂಲಕ ಈ ವಿನಂತಿಗೆ ಸ್ಪಂದಿಸಬಹುದು. ಹೆಚ್ಚಿನ ವೆಬ್‌ಸೈಟ್‌ಗಳು ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್‌ ಡೇಟಾವನ್ನು ಈಗಲೂ ಸಂಗ್ರಹಿಸುತ್ತವೆ ಹಾಗೂ ಅವುಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು, ವಿಷಯ, ಜಾಹೀರಾತುಗಳು ಮತ್ತು ಶಿಫಾರಸುಗಳನ್ನು ಒದಗಿಸಲು ಮತ್ತು ವರದಿಯ ಅಂಕಿಅಂಶಗಳನ್ನು ರಚಿಸಲು.</translation>
 <translation id="624789221780392884">ಅಪ್‌ಡೇಟ್‌‌ ಸಿದ್ಧವಾಗಿದೆ</translation>
 <translation id="6255999984061454636">ವಿಷಯದ ಸಲಹೆಗಳು</translation>
+<translation id="6258133034695130373"><ph name="SITE" />, ಸಮೀಪದಲ್ಲಿರುವ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳಿಗಾಗಿ ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಬಯಸುತ್ತದೆ, ಈ ಕೆಳಗಿನ ಸಾಧನಗಳು ಕಂಡುಬಂದಿವೆ:</translation>
 <translation id="6277522088822131679">ಪುಟವನ್ನು ಮುದ್ರಿಸುವಲ್ಲಿ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="6295158916970320988">ಎಲ್ಲಾ ಸೈಟ್‌ಗಳು</translation>
 <translation id="629730747756840877">ಖಾತೆ</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">ನಿಮ್ಮ <ph name="FQDN" /> ಟೈಮರ್ ಅವಧಿ ಮುಗಿದಿದೆ. ಅದು ನಾಳೆ ಮತ್ತೊಮ್ಮೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ.</translation>
 <translation id="6738867403308150051">ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ…</translation>
 <translation id="6746124502594467657">ಕೆಳಗೆ ಸರಿಸು</translation>
-<translation id="6751888224264752704">ಈ ಸಾಧನದಿಂದ Chrome ಡೇಟಾವನ್ನು ಸಹ ತೆರವುಗೊಳಿಸಿ</translation>
 <translation id="6766622839693428701">ಮುಚ್ಚಲು ಕೆಳಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ.</translation>
 <translation id="6766758767654711248">ಸೈಟ್‌ಗೆ ಹೋಗಲು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="6767294960381293877">ಟ್ಯಾಬ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಬೇಕಾದ ಸಾಧನಗಳ ಪಟ್ಟಿಯನ್ನು ಅರ್ಧ ಎತ್ತರದಲ್ಲಿ ತೆರೆಯಲಾಗಿದೆ.</translation>
@@ -922,6 +922,7 @@
 <translation id="7682724950699840886">ಕೆಳಗಿನ ಸಲಹೆಗಳನ್ನು ಬಳಸಿ ನೋಡಿ: ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಸಾಕಷ್ಟು ಸ್ಥಳಾವಕಾಶ ಇರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಂಡು, ಪುನಃ ಎಕ್ಸ್‌ಪೋರ್ಟ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" /> ನಲ್ಲಿ ಇಮೇಲ್ ರಚಿಸಿ</translation>
 <translation id="7704317875155739195">ಸ್ವಯಂಪೂರ್ಣ ಹುಡುಕಾಟಗಳು ಮತ್ತು URLಗಳು</translation>
+<translation id="7725024127233776428">ನೀವು ಬುಕ್‌ಮಾರ್ಕ್ ಮಾಡುವ ಪುಟಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ</translation>
 <translation id="773466115871691567">ಯಾವಾಗಲು <ph name="SOURCE_LANGUAGE" /> ನಲ್ಲಿನ ಪುಟಗಳನ್ನು ಅನುವಾದ ಮಾಡಿ</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">ಅಪಾಯಕಾರಿ ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಸೈಟ್‌ಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು Chrome, ನೀವು ಭೇಟಿ ನೀಡುವ ಕೆಲವು ಪುಟಗಳ URL ಗಳು, ಸೀಮಿತ ಸಿಸ್ಟಂ ಮಾಹಿತಿ ಮತ್ತು ಕೆಲವು ಪುಟದ ವಿಷಯವನ್ನು Google ಗೆ ಕಳುಹಿಸುತ್ತದೆ</translation>
@@ -1128,6 +1129,7 @@
 <translation id="951339005376969845">ಪ್ರಸ್ತುತ ಡೇಟಾ ಅಳಿಸಿ. ನೀವು <ph name="FROM_ACCOUNT" /> ಗೆ ಮರಳಿ ಬದಲಿಸುವ ಮೂಲಕ ಅದನ್ನು ಮರಳಿ ಪಡೆಯಬಹುದು.</translation>
 <translation id="95817756606698420">Chrome ಚೀನಾದಲ್ಲಿ ಹುಡುಕಲು <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> ಬಳಸಬಹುದು. ನೀವು ಇದನ್ನು <ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್‌ಗಳು<ph name="END_LINK" /> ನಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು.</translation>
 <translation id="965817943346481315">ಅತಿಕ್ರಮಣಕಾರಿಯಾಗಿರುವ ಅಥವಾ ತಪ್ಪುದಾರಿಗೆಳೆಯುವ ಜಾಹೀರಾತುಗಳನ್ನು ಸೈಟ್ ತೋರಿಸಿದರೆ ಅದನ್ನು ನಿರ್ಬಂಧಿಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
+<translation id="968900484120156207">ನೀವು ಭೇಟಿ ನೀಡುವ ಪುಟಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> ನಿಮಿಷಗಳು ಉಳಿದಿವೆ</translation>
 <translation id="974555521953189084">ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು ನಿಮ್ಮ ಪಾಸ್‌ಫ್ರೇಸ್ ನಮೂದಿಸಿ</translation>
 <translation id="981121421437150478">ಆಫ್‌ಲೈನ್</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
index 8be5224c..73e4ff2 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">방문 기록, 쿠키, 사이트 데이터, 캐시 삭제…</translation>
 <translation id="129553762522093515">최근에 닫은 탭</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" />에서 전송</translation>
+<translation id="1310482092992808703">탭 그룹화</translation>
 <translation id="1331212799747679585">Chrome을 업데이트할 수 없습니다. 옵션 더보기</translation>
 <translation id="1332501820983677155">Chrome 기능 단축키</translation>
 <translation id="1360432990279830238">로그아웃하고 동기화를 사용 중지하시겠습니까?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">기본</translation>
 <translation id="1671236975893690980">다운로드 대기 중...</translation>
 <translation id="1672586136351118594">다시 표시하지 않음</translation>
-<translation id="1679068421605151609">개발자 도구</translation>
 <translation id="1692118695553449118">동기화 사용 중</translation>
 <translation id="169515064810179024">사이트에서 움직임 감지 센서에 액세스하지 못하도록 차단</translation>
 <translation id="1697480839793160072">전화</translation>
@@ -712,6 +712,7 @@
 예를 들어 어떤 웹사이트는 사용자가 방문한 다른 웹사이트를 기반으로 하지 않는 광고를 표시하여 이 요청에 응답할 수 있습니다. 그러나 대부분의 웹사이트에서는 보안을 개선하거나 웹사이트에 콘텐츠, 광고, 권장사항 등을 제공하거나 보고서 통계를 생성하기 위해 사용자의 인터넷 사용 기록을 계속 수집하고 사용합니다.</translation>
 <translation id="624789221780392884">업데이트 준비 완료</translation>
 <translation id="6255999984061454636">콘텐츠 추천</translation>
+<translation id="6258133034695130373"><ph name="SITE" />에서 주변 블루투스 기기를 검색하고자 합니다. 다음 기기가 발견되었습니다.</translation>
 <translation id="6277522088822131679">페이지를 인쇄하는 중에 문제가 발생했습니다. 다시 시도해 주세요.</translation>
 <translation id="6295158916970320988">모든 사이트</translation>
 <translation id="629730747756840877">계정</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117"><ph name="FQDN" /> 타이머가 종료되었습니다. 타이머는 내일 다시 시작됩니다.</translation>
 <translation id="6738867403308150051">다운로드 중...</translation>
 <translation id="6746124502594467657">아래로 이동</translation>
-<translation id="6751888224264752704">이 기기에서도 이러한 Chrome 데이터 삭제</translation>
 <translation id="6766622839693428701">닫으려면 아래로 스와이프하세요.</translation>
 <translation id="6766758767654711248">탭하여 사이트로 이동</translation>
 <translation id="6767294960381293877">탭을 공유할 기기 목록이 절반 높이로 열렸습니다.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">다음 방법을 시도해 보세요. 기기 저장용량이 충분한지 확인하고 다시 내보내 봅니다.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" />에서 이메일 만들기</translation>
 <translation id="7704317875155739195">검색어 및 URL 자동 완성</translation>
+<translation id="7725024127233776428">북마크한 페이지가 여기에 표시됩니다.</translation>
 <translation id="773466115871691567"><ph name="SOURCE_LANGUAGE" />로 된 페이지를 항상 번역</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" />(<ph name="SPACE_OTHER" /> 사용 중)</translation>
 <translation id="7746457520633464754">Chrome은 위험한 앱 및 사이트를 감지하기 위해 일부 방문 페이지의 URL, 제한적인 시스템 정보, 페이지 콘텐츠 일부를 Google로 전송합니다.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">기존 데이터를 삭제합니다. <ph name="FROM_ACCOUNT" />(으)로 전환하여 기존 데이터를 가져올 수 있습니다.</translation>
 <translation id="95817756606698420">중국에서 검색할 때 Chrome에서 <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />를 사용할 수 있습니다. <ph name="BEGIN_LINK" />설정<ph name="END_LINK" />에서 변경할 수 있습니다.</translation>
 <translation id="965817943346481315">사이트에서 방해가 되거나 사용자를 현혹하는 광고를 표시하는 경우 광고 차단(권장)</translation>
+<translation id="968900484120156207">방문한 페이지가 여기에 표시됩니다.</translation>
 <translation id="970715775301869095"><ph name="MINUTES" />분 남음</translation>
 <translation id="974555521953189084">암호를 입력하여 동기화를 시작합니다.</translation>
 <translation id="981121421437150478">오프라인</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
index db4e11f..226377e 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Išvalykite istoriją, slapukus, svetainės duomenis, talpyklą…</translation>
 <translation id="129553762522093515">Neseniai uždarytas</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – išsiųsta iš „<ph name="DEVICE_NAME" />“</translation>
+<translation id="1310482092992808703">Grupuoti skirtukus</translation>
 <translation id="1331212799747679585">Nepavyksta atnaujinti „Chrome“. Daugiau parinkčių.</translation>
 <translation id="1332501820983677155">„Google Chrome“ funkcijų spartieji klavišai</translation>
 <translation id="1360432990279830238">Atsijungti ir išjungti sinchronizavimą?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Bendrieji</translation>
 <translation id="1671236975893690980">Laukiama atsisiuntimo...</translation>
 <translation id="1672586136351118594">Daugiau neberodyti</translation>
-<translation id="1679068421605151609">Kūrėjo įrankiai</translation>
 <translation id="1692118695553449118">Sinchronizavimas įjungtas</translation>
 <translation id="169515064810179024">Svetainės užblokuotos, kad nepasiektų judesio jutiklių</translation>
 <translation id="1697480839793160072">Telefonai</translation>
@@ -712,6 +712,7 @@
 Pavyzdžiui, kai kurios svetainės gali atsakyti į šią užklausą rodydamos jums skelbimus, nepagrįstus kitomis svetainėmis, kuriose lankėtės. Daugelis svetainių vis tiek rinks ir naudos jūsų naršymo duomenis, kad, pvz., patobulintų saugą, teiktų turinį, skelbimus bei rekomendacijas ir sugeneruotų ataskaitų teikimo statistiką.</translation>
 <translation id="624789221780392884">Naujinys paruoštas</translation>
 <translation id="6255999984061454636">Turinio pasiūlymai</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> nori nuskaityti netoliese esančius „Bluetooth“ įrenginius; rasti šie įrenginiai:</translation>
 <translation id="6277522088822131679">Spausdinant puslapį kilo problema. Bandykite dar kartą.</translation>
 <translation id="6295158916970320988">Visos svetainės</translation>
 <translation id="629730747756840877">Paskyra</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117"><ph name="FQDN" /> laikmatis sustojo. Jis vėl bus paleistas rytoj.</translation>
 <translation id="6738867403308150051">Atsisiunčiama...</translation>
 <translation id="6746124502594467657">Perkelti žemyn</translation>
-<translation id="6751888224264752704">Taip pat išvalyti šiuos „Chrome“ duomenis iš šio įrenginio</translation>
 <translation id="6766622839693428701">Perbraukite žemyn, kad uždarytumėte.</translation>
 <translation id="6766758767654711248">Palieskite, kad apsilankytumėte svetainėje</translation>
 <translation id="6767294960381293877">Įrenginių, su kuriais reikia bendrinti skirtuką, sąrašas atidarytas (pusė aukščio).</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Išbandykite nurodytus patarimus: įsitikinkite, kad įrenginyje yra pakankamai vietos, ir bandykite eksportuoti dar kartą.</translation>
 <translation id="7698359219371678927">Kurti el. laišką naudojant „<ph name="APP_NAME" />“</translation>
 <translation id="7704317875155739195">Automatiškai užbaigti paieškas ir URL</translation>
+<translation id="7725024127233776428">Pažymėti puslapiai rodomi čia</translation>
 <translation id="773466115871691567">Visada versti puslapius, parašytus <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Tam, kad būtų aptiktos pavojingos programos ir svetainės, „Chrome“ siunčia „Google“ kai kurių puslapių, kuriuose lankotės, URL, ribotą sistemos informaciją ir kai kurių puslapių turinį</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Ištrinti esamus duomenis. Juos galite atgauti perjungę atgal į <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">„Chrome“ gali naudoti <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />, kai paieškos atliekamos Kinijoje. Šį nustatymą galite pakeisti skiltyje <ph name="BEGIN_LINK" />„Nustatymai“<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blokuoti, jei svetainėje rodomi nepageidaujami arba klaidinantys skelbimai (rekomenduojama)</translation>
+<translation id="968900484120156207">Jūsų aplankomi puslapiai rodomi čia</translation>
 <translation id="970715775301869095">Liko <ph name="MINUTES" /> min.</translation>
 <translation id="974555521953189084">Įveskite slaptafrazę, kad pradėtumėte sinchronizavimą</translation>
 <translation id="981121421437150478">Neprisijungus</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
index b32f846..62dbe5d5 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Dzēst vēsturi, sīkfailus, vietnes datus, kešatmiņu…</translation>
 <translation id="129553762522093515">Nesen aizvērtas</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> — nosūtīts no ierīces <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Grupēt cilnes</translation>
 <translation id="1331212799747679585">Nevar atjaunināt Chrome — citas opcijas</translation>
 <translation id="1332501820983677155">Google Chrome funkciju īsinājumtaustiņi</translation>
 <translation id="1360432990279830238">Izrakstīties un izslēgt sinhronizēšanu?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Pamata</translation>
 <translation id="1671236975893690980">Lejupielāde tiek gaidīta...</translation>
 <translation id="1672586136351118594">Vairs nerādīt</translation>
-<translation id="1679068421605151609">Izstrādātāja rīki</translation>
 <translation id="1692118695553449118">Sinhronizācija ieslēgta</translation>
 <translation id="169515064810179024">Bloķēt vietņu piekļuvi kustību sensoriem</translation>
 <translation id="1697480839793160072">Tālruņi</translation>
@@ -712,6 +712,7 @@
 Piemēram, dažas vietnes, reaģējot uz šo pieprasījumu, var rādīt jums reklāmas, kuru pamatā nav citas jūsu apmeklētās vietnes. Tomēr daudzas vietnes apkopos un izmantos jūsu pārlūkošanas datus, piemēram, lai uzlabotu drošību, nodrošinātu saturu, reklāmas un ieteikumus un ģenerētu pārskatu statistiku.</translation>
 <translation id="624789221780392884">Var veikt atjaunināšanu</translation>
 <translation id="6255999984061454636">Satura ieteikumi</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> vēlas meklēt tuvumā esošas Bluetooth ierīces; tika atrastas šīs ierīces:</translation>
 <translation id="6277522088822131679">Drukājot lapu, radās problēma. Lūdzu, mēģiniet vēlreiz.</translation>
 <translation id="6295158916970320988">Visas vietnes</translation>
 <translation id="629730747756840877">Konts</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Jūsu lietotnes <ph name="FQDN" /> taimera laiks ir beidzies. Tas atkal sāksies rīt.</translation>
 <translation id="6738867403308150051">Notiek lejupielāde…</translation>
 <translation id="6746124502594467657">Pārvietot uz leju</translation>
-<translation id="6751888224264752704">Arī noņemt šos Chrome datus no šīs ierīces</translation>
 <translation id="6766622839693428701">Velciet uz leju, lai aizvērtu.</translation>
 <translation id="6766758767654711248">Pieskarieties, lai atvērtu vietni</translation>
 <translation id="6767294960381293877">Ierīču saraksts, ar ko kopīgot cilni, ir atvērts pusekrāna augstumā.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Ņemiet vērā šos ieteikumus: atbrīvojiet ierīcē vietu un mēģiniet eksportēt vēlreiz.</translation>
 <translation id="7698359219371678927">Izveidojiet e-pasta ziņojumu lietotnē <ph name="APP_NAME" />.</translation>
 <translation id="7704317875155739195">Automātiski pabeigt meklēšanas vaicājumus un vietrāžus URL</translation>
+<translation id="7725024127233776428">Šeit tiek rādītas ar grāmatzīmēm atzīmētās lapas</translation>
 <translation id="773466115871691567">Vienmēr tulkot lapas šādā valodā: <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Lai noteiktu bīstamas lietotnes un vietnes, pārlūkā Chrome dažu jūsu apmeklēto lapu saturs, ierobežots sistēmas informācijas apjoms un daļa lapu satura tiek nosūtīta uzņēmumam Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Dzēst esošos datus. Varat tos izgūt, pārslēdzoties atpakaļ uz kontu <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Pārlūkā Chrome var izmantot meklētājprogrammu <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />, lai veiktu meklēšanu Ķīnā. Varat to mainīt sadaļā <ph name="BEGIN_LINK" />Iestatījumi<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Bloķēt, ja vietnē tiek rādītas traucējošas vai maldinošas reklāmas (ieteicams)</translation>
+<translation id="968900484120156207">Šeit tiek rādītas jūsu apmeklētās lapas</translation>
 <translation id="970715775301869095">Atlikušas <ph name="MINUTES" /> min</translation>
 <translation id="974555521953189084">Lai sāktu sinhronizēšanu, ievadiet ieejas frāzi</translation>
 <translation id="981121421437150478">Bezsaistē</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb
index 76290c0..afae842 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ml.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">ചരിത്രവും കുക്കികളും സൈറ്റ് വിവരവും കാഷെയും മായ്‌ക്കുക...</translation>
 <translation id="129553762522093515">സമീപകാലത്ത് അടച്ചവ</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" />-ൽ നിന്ന് അയച്ചത്</translation>
+<translation id="1310482092992808703">ടാബുകൾ ഗ്രൂപ്പ് ചെയ്യൂ</translation>
 <translation id="1331212799747679585">Chrome അപ്‌ഡേറ്റ് ചെയ്യാനാവില്ല. കൂടുതൽ ഓപ്‌ഷനുകൾ</translation>
 <translation id="1332501820983677155">Google Chrome ഫീച്ചർ കുറുക്കുവഴികൾ</translation>
 <translation id="1360432990279830238">സൈൻ ഔട്ട് ചെയ്‌ത് സമന്വയം ഓഫാക്കണോ?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">അടിസ്ഥാനം</translation>
 <translation id="1671236975893690980">ഡൗൺലോഡ് തീർച്ചപ്പെടുത്തിയിട്ടില്ല...</translation>
 <translation id="1672586136351118594">വീണ്ടും കാണിക്കരുത്</translation>
-<translation id="1679068421605151609">ഡെവലപ്പർ ഉപകരണങ്ങൾ</translation>
 <translation id="1692118695553449118">സമന്വയം ഓണാണ്</translation>
 <translation id="169515064810179024">ചലന സെൻസറുകൾ ആക്‌സസ് ചെയ്യുന്നതിൽ നിന്ന് സൈറ്റുകളെ ബ്ലോക്ക് ചെയ്യുക</translation>
 <translation id="1697480839793160072">ടെലിഫോണുകൾ</translation>
@@ -323,7 +323,7 @@
 <translation id="3350687908700087792">എല്ലാ ആൾമാറാട്ട ടാബുകളും അടയ്‌ക്കുക</translation>
 <translation id="3353615205017136254">Google നല്‍കുന്ന ലൈറ്റ് പേജ്. അസ്സല്‍ പേജ് ലോഡ് ചെയ്യാന്‍ 'അസ്സൽ ലോഡ് ചെയ്യൽ' ബട്ടണ്‍ ടാപ്പ് ചെയ്യുക.</translation>
 <translation id="3367813778245106622">സമന്വയിപ്പിക്കാൻ തുടങ്ങുന്നതിന്, വീണ്ടും സൈൻ ഇൻ ചെയ്യുക</translation>
-<translation id="3374023511497244703">നിങ്ങളുടെ ബുക്ക്‌മാർക്കുകൾ, ചരിത്രം, പാസ്‌വേഡുകൾ എന്നിവയും മറ്റ് Chrome ഡാറ്റയും ഇനി Google അക്കൗണ്ടുമായി സമന്വയിപ്പിക്കില്ല.</translation>
+<translation id="3374023511497244703">നിങ്ങളുടെ ബുക്ക്‌മാർക്കുകൾ, ചരിത്രം, പാസ്‌വേഡുകൾ എന്നിവയും മറ്റ് Chrome ഡാറ്റയും ഇനി Google അക്കൗണ്ടുമായി സമന്വയിപ്പിക്കില്ല</translation>
 <translation id="3384347053049321195">ചിത്രം പങ്കിടുക</translation>
 <translation id="3386292677130313581">നിങ്ങളുടെ ലൊക്കേഷൻ അറിയാൻ സൈറ്റുകളെ അനുവദിക്കുന്നതിന് മുമ്പ് ചോദിക്കുക (ശുപാർശചെയ്‌തിരിക്കുന്നു)</translation>
 <translation id="3387650086002190359">ഫയൽ സിസ്‌റ്റം പിശകുകൾ കാരണം <ph name="FILE_NAME" /> ഡൗൺലോഡ് ചെയ്യാനായില്ല.</translation>
@@ -712,6 +712,7 @@
 ഉദാഹരണത്തിന്, ചില വെബ്‌സൈറ്റുകൾ നിങ്ങൾ സന്ദർശിച്ച മറ്റ് വെബ്‌സൈറ്റുകളെ അടിസ്ഥാനമാക്കിയുള്ളതല്ലാത്ത പരസ്യങ്ങൾ കാണിച്ച് ഈ അഭ്യർത്ഥനയോട് പ്രതികരിക്കാം. മിക്ക വെബ്‌സൈറ്റുകളും തുടർന്നും നിങ്ങളുടെ ബ്രൗസിംഗ് ഡാറ്റ ശേഖരിക്കുകയും ഉപയോഗിക്കുകയും ചെയ്യും - ഉദാഹരണത്തിന് അവരുടെ വെബ്‌സൈറ്റുകളിൽ സുരക്ഷ മെച്ചപ്പെടുത്തുന്നതിനും ഉള്ളടക്കവും പരസ്യങ്ങളും ശുപാർശകളും നൽകുന്നതിനും റിപ്പോർട്ടിംഗ് സ്ഥിതിവിവരക്കണക്കുകൾ സൃഷ്‌ടിക്കുന്നതിനും.</translation>
 <translation id="624789221780392884">അപ്‌ഡേറ്റ് തയ്യാറാണ്</translation>
 <translation id="6255999984061454636">ഉള്ളടക്ക നിർദ്ദേശങ്ങൾ</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> എന്നതിന് സമീപമുള്ള Bluetooth ഉപകരണങ്ങൾ സ്‌കാൻ ചെയ്യണമെന്നുണ്ട്, ഇനിപ്പറയുന്ന ഉപകരണങ്ങൾ കണ്ടെത്തി:</translation>
 <translation id="6277522088822131679">പേജ് പ്രിന്റുചെയ്യുന്നതിൽ ഒരു പ്രശ്‌നമുണ്ടായി. വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="6295158916970320988">എല്ലാ സൈറ്റുകളും</translation>
 <translation id="629730747756840877">അക്കൗണ്ട്</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">നിങ്ങളുടെ <ph name="FQDN" /> ടൈമർ അവസാനിച്ചു. ഇത് നാളെ വീണ്ടും ആരംഭിക്കും.</translation>
 <translation id="6738867403308150051">ഡൗൺലോഡുചെയ്യുന്നു...</translation>
 <translation id="6746124502594467657">താഴേക്ക് നീക്കുക</translation>
-<translation id="6751888224264752704">കൂടാതെ ഈ ഉപകരണത്തിൽ നിന്ന് ഈ Chrome ഡാറ്റ മായ്ക്കുക</translation>
 <translation id="6766622839693428701">അവസാനിപ്പിക്കാൻ താഴേക്ക് സ്വൈപ്പ് ചെയ്യുക.</translation>
 <translation id="6766758767654711248">സൈറ്റിലേക്ക് പോകാൻ ടാപ്പ് ചെയ്യുക</translation>
 <translation id="6767294960381293877">പകുതി ഉയരത്തിൽ ടാബ് പങ്കിടാനാകുന്ന ഉപകരണങ്ങളുടെ ലിസ്‌റ്റ്.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">ഈ നുറുങ്ങുകൾ പരീക്ഷിക്കൂ: നിങ്ങളുടെ ഉപകരണത്തിൽ ആവശ്യമായ ഇടം ഉണ്ടെന്ന് ഉറപ്പാക്കി, വീണ്ടും എക്‌സ്‌പോർട്ട് ചെയ്യാൻ ശ്രമിക്കുക.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" /> ആപ്പിൽ ഇമെയിൽ സൃഷ്‌ടിക്കുക</translation>
 <translation id="7704317875155739195">സ്വമേധയാ പൂർത്തിയാക്കുന്ന തിരയലുകളും URL-കളും</translation>
+<translation id="7725024127233776428">നിങ്ങൾ ബുക്ക്‌മാർക്ക് ചെയ്യുന്ന പേജുകൾ ഇവിടെ ദൃശ്യമാകും</translation>
 <translation id="773466115871691567"><ph name="SOURCE_LANGUAGE" /> ഭാഷയിലുള്ള പേജുകൾ എപ്പോഴും വിവർത്തനം ചെയ്യുക</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">അപകടകരമായ ആപ്പുകളും സൈറ്റുകളും കണ്ടെത്തുന്നതിന്, നിങ്ങൾ സന്ദർശിക്കുന്ന ചില പേജുകളുടെ URL, പരിമിത സിസ്റ്റം വിവരങ്ങൾ, ചില പേജ് ഉള്ളടക്കം എന്നിവ Chrome Google-ന് അയയ്ക്കുന്നു</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">നിലവിലുള്ള വിവരങ്ങൾ ഇല്ലാതാക്കുക. <ph name="FROM_ACCOUNT" /> എന്നതിലേക്ക് വീണ്ടും മാറുന്നതിലൂടെ നിങ്ങൾക്ക് ഇത് വീണ്ടെടുക്കാം.</translation>
 <translation id="95817756606698420"><ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> ഉപയോഗിച്ച് Chrome-ന് ചൈനയിൽ തിരയാനാവും. നിങ്ങൾക്കിത്‌ <ph name="BEGIN_LINK" />ക്രമീകരണത്തിൽ<ph name="END_LINK" /> മാറ്റാനാവും.</translation>
 <translation id="965817943346481315">സൈറ്റ്, അനാവശ്യമോ തെറ്റിദ്ധരിപ്പിക്കുന്നതോ ആയ പരസ്യങ്ങള്‍ കാണിക്കുന്നുണ്ടെങ്കില്‍ ബ്ലോക്ക് ചെയ്യുക (ശുപാര്‍ശ ചെയ്യുന്നു)</translation>
+<translation id="968900484120156207">നിങ്ങൾ സന്ദർശിക്കുന്ന പേജുകൾ ഇവിടെ ദൃശ്യമാകും</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> മിനിറ്റ് ശേഷിക്കുന്നു</translation>
 <translation id="974555521953189084">സമന്വയിപ്പിക്കൽ തുടങ്ങുന്നതിന് പാസ്‌ഫ്രെയ്‌സ് നൽകുക</translation>
 <translation id="981121421437150478">ഓഫ്‌ലൈൻ</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb
index 9913d1e..228a79d 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_mr.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">इतिहास, कुकी, साइट डेटा, कॅशे साफ करा…</translation>
 <translation id="129553762522093515">अलीकडे बंद केलेले</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" /> वरून पाठवले</translation>
+<translation id="1310482092992808703">टॅबची गटामध्ये विभागणी करा</translation>
 <translation id="1331212799747679585">Chrome अपडेट होऊ शकत नाही. आणखी पर्याय</translation>
 <translation id="1332501820983677155">Google Chrome वैशिष्ट्य शॉर्टकट</translation>
 <translation id="1360432990279830238">साइन आउट करून सिंक बंद करायचे आहे का?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">मूलभूत</translation>
 <translation id="1671236975893690980">डाउनलोड प्रलंबित आहे</translation>
 <translation id="1672586136351118594">पुन्हा दाखवू नका</translation>
-<translation id="1679068421605151609">डेव्हलपर टूल</translation>
 <translation id="1692118695553449118">संकालन चालू आहे</translation>
 <translation id="169515064810179024">साइटना मोशन सेन्सर ॲक्सेसपासून ब्लॉक करा</translation>
 <translation id="1697480839793160072">टेलिफोन</translation>
@@ -712,6 +712,7 @@
 उदाहरणार्थ, काही वेबसाइट तुम्ही भेट दिलेल्‍या इतर वेबसाइटवर आधारित नसलेल्‍या जाहिराती तुम्हाला दर्शवून या विनंतीस प्रतिसाद देऊ शकतात. अनेक वेबसाइट अद्यापही आपला ब्राउझिंग डेटा संकलित करून त्‍याचा वापर करतील - उदाहरणार्थ त्‍यांच्‍या वेबसाइटवर सुरक्षितता सुधारणे, आशय, जाहिराती आणि शिफारशी प्रदान करणे आणि अहवाल आकडेवारी व्‍युत्‍पन्न करणे.</translation>
 <translation id="624789221780392884">अपडेट तयार</translation>
 <translation id="6255999984061454636">आशय सूचना</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> ला जवळपासची ब्लूटूथ डिव्हाइस स्कॅन करायची आहेत, खालील डिव्हाइस आढळली:</translation>
 <translation id="6277522088822131679">पृष्‍ठ प्रिंट करण्‍यात एक समस्‍या होती. कृपया पुन्‍हा प्रयत्न करा.</translation>
 <translation id="6295158916970320988">सर्व साइट</translation>
 <translation id="629730747756840877">खाते</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">तुमचा <ph name="FQDN" /> टायमर झाला आहे. तो उद्या पुन्हा सुरू होईल.</translation>
 <translation id="6738867403308150051">डाउनलोड करीत आहे…</translation>
 <translation id="6746124502594467657">खाली हलवा</translation>
-<translation id="6751888224264752704">या डिव्हाइसवरील हा Chrome डेटा देखील साफ करा</translation>
 <translation id="6766622839693428701">बंद करण्यासाठी खाली स्वाइप करा.</translation>
 <translation id="6766758767654711248">साइटवर जाण्यासाठी टॅप करा</translation>
 <translation id="6767294960381293877">अर्ध्या उंचीवर उघडलेल्या टॅबसह शेअर करण्यासाठी डिव्हाइसची सूची.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">खालील टिपा वापरून पहा: तुमच्या डिव्हाइसवर पुरेशी जागा असल्याची खात्री करा, पुन्हा एक्सपोर्ट करण्याचा प्रयत्न करा.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" /> मध्ये ईमेल तयार करा</translation>
 <translation id="7704317875155739195">ऑटोकंप्लीट शोध आणि URL</translation>
+<translation id="7725024127233776428">तुम्ही बुकमार्क केलेली पेज येथे दिसतील</translation>
 <translation id="773466115871691567">नेहमी पेज <ph name="SOURCE_LANGUAGE" />मध्ये भाषांतरित करा</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">धोकादायक ॲप्स आणि साइट शोधण्यासाठी, Chrome तुम्ही भेट दिलेल्या काही पेजचे URL, मर्यादित सिस्टमची माहिती आणि काही पेजचा आशय Google कडे पाठवतो</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">सद्य डेटा हटवा. <ph name="FROM_ACCOUNT" /> वर परत स्विच करून तुम्ही तो रिट्रीव्ह करू शकता.</translation>
 <translation id="95817756606698420">Chrome चीनमध्ये शोध करण्‍यासाठी <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> चा वापर करू शकते. तुम्ही हे <ph name="BEGIN_LINK" />सेटिंग्जमध्ये<ph name="END_LINK" /> बदलू शकता.</translation>
 <translation id="965817943346481315">साइट अनाहूत किंवा दिशाभूल करणाऱ्या जाहिराती दाखवत असल्यास ब्लॉक करा (शिफारस केलेले)</translation>
+<translation id="968900484120156207">तुम्ही भेट देता ती पेज येथे दिसतील</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> मिनिटे शिल्लक</translation>
 <translation id="974555521953189084">सिंक सुरू करण्यासाठी तुमचा सांकेतिक पासफ्रेझ एंटर करा</translation>
 <translation id="981121421437150478">ऑफलाइन</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb
index 344c4db9..54ed2fd 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ms.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Hapuskan sejarah, kuki, data tapak, cache...</translation>
 <translation id="129553762522093515">Ditutup baru-baru ini</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - Dihantar daripada <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Himpunkan tab.</translation>
 <translation id="1331212799747679585">Chrome tidak dapat dikemas kini. Lagi pilihan</translation>
 <translation id="1332501820983677155">Pintasan ciri Google Chrome</translation>
 <translation id="1360432990279830238">Log keluar dan matikan penyegerakan?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Asas</translation>
 <translation id="1671236975893690980">Muat turun belum selesai...</translation>
 <translation id="1672586136351118594">Jangan tunjukkan lagi</translation>
-<translation id="1679068421605151609">Alat Pembangun</translation>
 <translation id="1692118695553449118">Penyegerakan dihidupkan</translation>
 <translation id="169515064810179024">Sekat tapak daripada mengakses penderia gerakan</translation>
 <translation id="1697480839793160072">Telefon</translation>
@@ -712,6 +712,7 @@
 Sebagai contoh, sesetengah tapak web mungkin memberi respons kepada permintaan ini dengan memaparkan iklan yang tidak berdasarkan tapak web lain yang anda lawati. Pelbagai tapak web masih akan mengumpul dan menggunakan data penyemakan imbas anda — contohnya, untuk meningkatkan keselamatan, untuk menyediakan kandungan, iklan dan cadangan serta untuk menjana statistik pelaporan.</translation>
 <translation id="624789221780392884">Kemaskini bersedia</translation>
 <translation id="6255999984061454636">Cadangan kandungan</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> mahu mengimbas untuk mengesan peranti Bluetooth berdekatan, peranti berikut telah dijumpai:</translation>
 <translation id="6277522088822131679">Terdapat masalah semasa mencetak halaman. Sila cuba sekali lagi.</translation>
 <translation id="6295158916970320988">Semua tapak</translation>
 <translation id="629730747756840877">Akaun</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Pemasa <ph name="FQDN" /> anda sudah tamat. Pemasa akan bermula lagi esok.</translation>
 <translation id="6738867403308150051">Memuat turun…</translation>
 <translation id="6746124502594467657">Alihkan ke bawah</translation>
-<translation id="6751888224264752704">Selain itu, kosongkan data Chrome ini daripada peranti ini</translation>
 <translation id="6766622839693428701">Leret ke bawah untuk tutup.</translation>
 <translation id="6766758767654711248">Ketik untuk pergi ke tapak</translation>
 <translation id="6767294960381293877">Senarai peranti untuk berkongsi tab dibuka pada ketinggian separuh.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Cuba petua berikut: pastikan ruang pada peranti anda mencukupi, cuba eksport sekali lagi.</translation>
 <translation id="7698359219371678927">Buat e-mel dalam <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autolengkap carian dan URL</translation>
+<translation id="7725024127233776428">Halaman yang anda tandai halaman dipaparkan di sini</translation>
 <translation id="773466115871691567">Sentiasa terjemahkan halaman dalam <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Untuk mengesan apl dan tapak berbahaya, Chrome menghantar URL sesetengah halaman yang anda lawati, maklumat sistem yang terhad dan sesetengah kandungan halaman kepada Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Padam data sedia ada. Anda boleh mendapatkannya semula dengan beralih semula kepada <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome boleh menggunakan <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> untuk melakukan carian di China. Anda boleh menukarnya dalam <ph name="BEGIN_LINK" />Tetapan<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Sekat jika tapak menyiarkan iklan yang mengganggu atau mengelirukan (disyorkan)</translation>
+<translation id="968900484120156207">Halaman yang anda lawati dipaparkan di sini</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> minit lagi</translation>
 <translation id="974555521953189084">Masukkan ungkapan laluan anda untuk memulakan penyegerakan</translation>
 <translation id="981121421437150478">Luar talian</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
index 0f9d56c..af305b3 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Geschiedenis, cookies, sitegegevens, cachegeheugen wissen</translation>
 <translation id="129553762522093515">Recent gesloten</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" />: verzonden vanaf <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Tabbladen groeperen</translation>
 <translation id="1331212799747679585">Chrome kan niet updaten. Meer opties</translation>
 <translation id="1332501820983677155">Functiesneltoetsen in Google Chrome</translation>
 <translation id="1360432990279830238">Uitloggen en synchroniseren uitschakelen?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Basis</translation>
 <translation id="1671236975893690980">Download in behandeling…</translation>
 <translation id="1672586136351118594">Niet opnieuw weergeven</translation>
-<translation id="1679068421605151609">Ontwikkelaarstools</translation>
 <translation id="1692118695553449118">Synchronisatie is ingeschakeld</translation>
 <translation id="169515064810179024">Sites geen toegang tot bewegingssensoren geven</translation>
 <translation id="1697480839793160072">Telefoons</translation>
@@ -265,7 +265,7 @@
 <translation id="2900528713135656174">Afspraak maken</translation>
 <translation id="2902702728133930130">Kan Chrome niet starten door een onverwachte fout.</translation>
 <translation id="290376772003165898">Is deze pagina niet in het <ph name="LANGUAGE" />?</translation>
-<translation id="2904414404539560095">De lijst met apparaten om een tabblad te delen is met volledige hoogte geopend.</translation>
+<translation id="2904414404539560095">De lijst met apparaten om een tabblad mee te delen, is op volledige hoogte geopend.</translation>
 <translation id="2910701580606108292">Vragen voordat sites beschermde content mogen afspelen</translation>
 <translation id="2913331724188855103">Sites toestaan cookiegegevens op te slaan en te lezen (aanbevolen)</translation>
 <translation id="2923908459366352541">Naam is ongeldig</translation>
@@ -712,6 +712,7 @@
 Zo kunnen sommige websites op dit verzoek reageren door advertenties weer te geven die niet zijn gebaseerd op andere websites die je hebt bezocht. Toch blijven veel websites je browsegegevens nog verzamelen en gebruiken, bijvoorbeeld om de beveiliging te verbeteren, om content, services, advertenties en aanbevelingen te leveren en om rapportagestatistieken te genereren.</translation>
 <translation id="624789221780392884">Update gereed</translation>
 <translation id="6255999984061454636">Contentsuggesties</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> wil scannen naar Bluetooth-apparaten in de buurt. De volgende apparaten zijn gevonden:</translation>
 <translation id="6277522088822131679">Er is een fout opgetreden bij het afdrukken van de pagina. Probeer het opnieuw.</translation>
 <translation id="6295158916970320988">Alle sites</translation>
 <translation id="629730747756840877">Account</translation>
@@ -782,10 +783,9 @@
 <translation id="671481426037969117">Je <ph name="FQDN" />-timer is afgelopen. Deze begint morgen opnieuw.</translation>
 <translation id="6738867403308150051">Downloaden...</translation>
 <translation id="6746124502594467657">Omlaag</translation>
-<translation id="6751888224264752704">Deze Chrome-gegevens ook wissen op dit apparaat</translation>
 <translation id="6766622839693428701">Veeg omlaag om te sluiten.</translation>
 <translation id="6766758767654711248">Tik om naar de site te gaan</translation>
-<translation id="6767294960381293877">De lijst met apparaten om een tabblad te delen is met halve hoogte geopend.</translation>
+<translation id="6767294960381293877">De lijst met apparaten om een tabblad mee te delen, is op halve hoogte geopend.</translation>
 <translation id="6782111308708962316">Voorkomen dat websites van derden cookiegegevens opslaan en lezen</translation>
 <translation id="6790428901817661496">Spelen</translation>
 <translation id="679325081238418596">Je bladwijzers, geschiedenis, wachtwoorden en andere instellingen beschikbaar maken op al je apparaten</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Probeer de volgende tips: zorg dat er voldoende ruimte op je apparaat beschikbaar is, probeer opnieuw te exporteren.</translation>
 <translation id="7698359219371678927">E-mail in <ph name="APP_NAME" /> maken</translation>
 <translation id="7704317875155739195">Zoekopdrachten en URL's automatisch aanvullen</translation>
+<translation id="7725024127233776428">Pagina's waaraan je een bladwijzer toevoegt, worden hier weergegeven</translation>
 <translation id="773466115871691567">Pagina's in het <ph name="SOURCE_LANGUAGE" /> altijd vertalen</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Chrome verzendt de URL's van sommige pagina's die je bezoekt, beperkte systeemgegevens en bepaalde paginacontent naar Google om gevaarlijke apps en sites te detecteren</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Bestaande gegevens verwijderen. Je kunt ze terugkrijgen door weer over te schakelen naar <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome kan <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> gebruiken voor zoekopdrachten in China. Je kunt dit wijzigen in <ph name="BEGIN_LINK" />Instellingen<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blokkeren als site opdringerige of misleidende advertenties weergeeft (aanbevolen)</translation>
+<translation id="968900484120156207">Pagina's die je bezoekt, worden hier weergegeven</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> minuten resterend</translation>
 <translation id="974555521953189084">Voer je wachtwoordzin in om de synchronisatie te starten</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
index 1be82c2f..6eda765 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Slett loggoppføringer, informasjonskapsler, nettstedsdata, bufferen …</translation>
 <translation id="129553762522093515">Nylig lukket</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – sendt fra <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Gruppér faner</translation>
 <translation id="1331212799747679585">Kan ikke oppdatere Chrome. Flere alternativer</translation>
 <translation id="1332501820983677155">Hurtigtaster for funksjoner i Google Chrome.</translation>
 <translation id="1360432990279830238">Vil du logge av og slå av synkronisering?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Enkle</translation>
 <translation id="1671236975893690980">Nedlasting venter</translation>
 <translation id="1672586136351118594">Ikke vis igjen</translation>
-<translation id="1679068421605151609">Utviklerverktøy</translation>
 <translation id="1692118695553449118">Synkronisering er slått på.</translation>
 <translation id="169515064810179024">Blokkér nettsteder fra å få tilgang til bevegelsessensorer</translation>
 <translation id="1697480839793160072">Telefoner</translation>
@@ -712,6 +712,7 @@
 Noen nettsteder kan for eksempel svare på denne forespørselen ved å vise deg annonser som ikke er basert på andre nettsteder du har besøkt. Mange nettsteder samler likevel inn og bruker nettlesingsdataene dine – for eksempel for å forbedre sikkerheten, for å levere innhold, annonser og anbefalinger og for å generere rapporteringsstatistikk.</translation>
 <translation id="624789221780392884">Oppdateringen er klar</translation>
 <translation id="6255999984061454636">Innholdsforslag</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> vil skanne etter Bluetooth-enheter i nærheten. Disse enhetene ble funnet:</translation>
 <translation id="6277522088822131679">Det oppsto et problem med å skrive ut siden. Prøv på nytt.</translation>
 <translation id="6295158916970320988">Alle nettsteder</translation>
 <translation id="629730747756840877">Konto</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Tidtakeren for <ph name="FQDN" /> gikk ut. Den starter igjen i morgen.</translation>
 <translation id="6738867403308150051">Laster ned …</translation>
 <translation id="6746124502594467657">Flytt ned</translation>
-<translation id="6751888224264752704">Fjern også disse Chrome-dataene fra denne enheten</translation>
 <translation id="6766622839693428701">Sveip ned for å lukke.</translation>
 <translation id="6766758767654711248">Trykk for å gå til nettstedet</translation>
 <translation id="6767294960381293877">Listen over enheter du kan dele faner med, er åpnet i halv høyde.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Prøv dette: Sørg for at det er nok plass på enheten, og prøv å eksportere på nytt.</translation>
 <translation id="7698359219371678927">Opprett en e-post i <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autofullfør søk og nettadresser</translation>
+<translation id="7725024127233776428">Sider du setter som bokmerker, vises her</translation>
 <translation id="773466115871691567">Oversett alltid sider på <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">For å oppdage farlige apper og nettsteder sender Chrome nettadressene til noen av sidene du besøker, begrenset systeminformasjon og noe sideinnhold til Google.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Slett de eksisterende dataene. Du kan hente dem ut ved å bytte tilbake til <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome kan bruke <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> for søk i Kina. Du kan endre dette i <ph name="BEGIN_LINK" />Innstillinger<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blokkér hvis nettstedet viser forstyrrende eller villedende annonser (anbefalt)</translation>
+<translation id="968900484120156207">Sider du besøker, vises her</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> minutter igjen</translation>
 <translation id="974555521953189084">Skriv inn passordfrasen din for å starte synkroniseringen</translation>
 <translation id="981121421437150478">Uten nett</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
index b0a12774..1b257f6 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Wyczyść historię, pliki cookie, dane witryn, pamięć podręczną…</translation>
 <translation id="129553762522093515">Ostatnio zamknięte</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – wysłane z: <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Grupuj karty</translation>
 <translation id="1331212799747679585">Nie udało się zaktualizować Chrome. Więcej opcji</translation>
 <translation id="1332501820983677155">Skróty do funkcji Google Chrome</translation>
 <translation id="1360432990279830238">Wylogować i wyłączyć synchronizację?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Podstawowe</translation>
 <translation id="1671236975893690980">Oczekuję na pobranie…</translation>
 <translation id="1672586136351118594">Nie pokazuj ponownie</translation>
-<translation id="1679068421605151609">Narzędzia dla deweloperów</translation>
 <translation id="1692118695553449118">Synchronizacja jest włączona</translation>
 <translation id="169515064810179024">Blokuj stronom dostęp do czujników ruchu</translation>
 <translation id="1697480839793160072">Telefony</translation>
@@ -712,6 +712,7 @@
 Na przykład niektóre strony mogą na nie zareagować, wyświetlając reklamy bez związku ze stronami odwiedzonymi przez Ciebie wcześniej. Wiele stron będzie nadal gromadzić dane przeglądania i używać ich na przykład do poprawy bezpieczeństwa, pokazywania treści, reklam i rekomendacji oraz do generowania statystyk.</translation>
 <translation id="624789221780392884">Aktualizacja jest gotowa</translation>
 <translation id="6255999984061454636">Polecane treści</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> chce wyszukać urządzenia Bluetooth w pobliżu. Znaleziono te urządzenia:</translation>
 <translation id="6277522088822131679">Podczas drukowania strony wystąpił problem. Spróbuj ponownie.</translation>
 <translation id="6295158916970320988">Wszystkie witryny</translation>
 <translation id="629730747756840877">Konto</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Licznik czasu w aplikacji <ph name="FQDN" /> dobiegł końca. Jutro zacznie działać od nowa.</translation>
 <translation id="6738867403308150051">Pobieram…</translation>
 <translation id="6746124502594467657">W dół</translation>
-<translation id="6751888224264752704">Usuń również te dane Chrome z urządzenia</translation>
 <translation id="6766622839693428701">Przesuń w dół, by zamknąć.</translation>
 <translation id="6766758767654711248">Kliknij, by przejść do strony</translation>
 <translation id="6767294960381293877">Lista urządzeń, którym udostępnisz kartę, jest otwarta na połowę wysokości.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Skorzystaj z tych wskazówek: upewnij się, że masz wystarczająco dużo miejsca na urządzeniu, i ponownie spróbuj wyeksportować hasła.</translation>
 <translation id="7698359219371678927">Utwórz e-maila w aplikacji <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autouzupełniaj wyszukiwania i adresy URL</translation>
+<translation id="7725024127233776428">Tutaj pojawią się strony, które dodasz do zakładek</translation>
 <translation id="773466115871691567">Zawsze tłumacz strony, których językiem jest <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Aby wykrywać niebezpieczne aplikacje i witryny, Chrome wysyła do Google adresy URL i część zawartości niektórych odwiedzanych przez Ciebie stron, a także niektóre informacje o systemie.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Usuń istniejące dane. Aby je pobrać, przełącz się z powrotem na konto <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome może używać <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> do wyszukiwania w Chinach. Możesz to zmienić w <ph name="BEGIN_LINK" />Ustawieniach<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Zablokuj, jeśli na stronie wyświetlają się uciążliwe lub wprowadzające w błąd reklamy (zalecane)</translation>
+<translation id="968900484120156207">Tutaj pojawią się strony, które odwiedzisz</translation>
 <translation id="970715775301869095">Pozostało: <ph name="MINUTES" /> min</translation>
 <translation id="974555521953189084">Wpisz hasło, by rozpocząć synchronizację</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb
index 2aa3bcc..7c9ba89 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Limpar histórico, cookies, dados do site, cache…</translation>
 <translation id="129553762522093515">Recentemente fechadas</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" />: enviado de <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Agrupar guias</translation>
 <translation id="1331212799747679585">Não é possível atualizar o Chrome. Mais opções</translation>
 <translation id="1332501820983677155">Atalhos de recursos do Google Chrome</translation>
 <translation id="1360432990279830238">Sair e desativar a sincronização?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Básico</translation>
 <translation id="1671236975893690980">Download pendente…</translation>
 <translation id="1672586136351118594">Não mostrar novamente</translation>
-<translation id="1679068421605151609">Ferramentas do desenvolvedor</translation>
 <translation id="1692118695553449118">A sincronização está ativada</translation>
 <translation id="169515064810179024">Impedir que sites acessem os sensores de movimento</translation>
 <translation id="1697480839793160072">Telefones</translation>
@@ -713,6 +713,7 @@
 Por exemplo, alguns sites podem responder a esse pedido mostrando anúncios que não têm qualquer relação com os sites que você costuma visitar. Mesmo assim, alguns websites ainda vão coletar e usar seus dados de navegação para, por exemplo, melhorar a segurança, gerar conteúdo, anúncios, recomendações e relatórios de estatística.</translation>
 <translation id="624789221780392884">Atualização pronta</translation>
 <translation id="6255999984061454636">Sugestões de conteúdo</translation>
+<translation id="6258133034695130373">Solicitação de <ph name="SITE" /> para procurar dispositivos Bluetooth próximos. Os seguintes dispositivos foram encontrados:</translation>
 <translation id="6277522088822131679">Ocorreu um problema ao imprimir a página. Tente novamente.</translation>
 <translation id="6295158916970320988">Todos os sites</translation>
 <translation id="629730747756840877">Conta</translation>
@@ -783,7 +784,6 @@
 <translation id="671481426037969117">Seu timer para <ph name="FQDN" /> chegou ao fim. Ele será iniciado novamente amanhã.</translation>
 <translation id="6738867403308150051">Fazendo o download...</translation>
 <translation id="6746124502594467657">Mover para baixo</translation>
-<translation id="6751888224264752704">Limpar também os dados do Chrome deste dispositivo</translation>
 <translation id="6766622839693428701">Deslize para baixo para fechar.</translation>
 <translation id="6766758767654711248">Toque acessar o site</translation>
 <translation id="6767294960381293877">Lista de dispositivos com os quais é possível compartilhar uma guia aberta na metade da altura.</translation>
@@ -922,6 +922,7 @@
 <translation id="7682724950699840886">Experimente as seguintes dicas: verifique se há espaço suficiente no dispositivo e tente exportar novamente.</translation>
 <translation id="7698359219371678927">Criar e-mail no <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Preencher automaticamente pesquisas e URLs</translation>
+<translation id="7725024127233776428">As páginas favoritadas são exibidas aqui</translation>
 <translation id="773466115871691567">Sempre traduzir páginas em <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Para detectar apps e sites perigosos, o Chrome envia para o Google URLs de algumas páginas visitadas, informações limitadas do sistema e um pouco do conteúdo da página</translation>
@@ -1128,6 +1129,7 @@
 <translation id="951339005376969845">Excluir dados já existentes. É possível recuperá-los voltando para a conta <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">O Chrome pode usar o <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> para fazer pesquisas na China. É possível alterar essa opção nas <ph name="BEGIN_LINK" />Configurações<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Bloquear se o site mostrar anúncios invasivos ou enganosos (recomendado)</translation>
+<translation id="968900484120156207">As páginas visitadas são exibidas aqui</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> minutos restantes</translation>
 <translation id="974555521953189084">Digite sua senha longa para iniciar a sincronização</translation>
 <translation id="981121421437150478">Off-line</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb
index a699b0b..97cd74d 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Limpar histórico, cookies, dados de sites, cache…</translation>
 <translation id="129553762522093515">Fechados recentemente</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – Enviado de <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Agrupar separadores</translation>
 <translation id="1331212799747679585">Não é possível atualizar o Chrome. Mais opções.</translation>
 <translation id="1332501820983677155">Atalhos das funcionalidades do Google Chrome</translation>
 <translation id="1360432990279830238">Terminar sessão e desativar a sincronização?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Básico</translation>
 <translation id="1671236975893690980">Transferência pendente…</translation>
 <translation id="1672586136351118594">Não mostrar de novo</translation>
-<translation id="1679068421605151609">Ferramentas do Programador</translation>
 <translation id="1692118695553449118">A sincronização está ativada</translation>
 <translation id="169515064810179024">Impedir que os sites acedam aos sensores de movimentos</translation>
 <translation id="1697480839793160072">Telefones</translation>
@@ -712,6 +712,7 @@
 Por exemplo, alguns Sites podem responder a este pedido ao mostrar-lhe anúncios que não são baseados noutros Sites que tenha visitado. Ainda assim, muitos Sites continuam a recolher e a utilizar os seus dados de navegação para, por exemplo, melhorar a segurança, fornecer conteúdo, anúncios e recomendações, e gerar estatísticas de relatórios.</translation>
 <translation id="624789221780392884">Atualização pronta</translation>
 <translation id="6255999984061454636">Sugestões de conteúdo</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> pretende procurar dispositivos Bluetooth próximos e foram encontrados os seguintes dispositivos:</translation>
 <translation id="6277522088822131679">Ocorreu um problema ao imprimir a página. Tente novamente.</translation>
 <translation id="6295158916970320988">Todos os sites</translation>
 <translation id="629730747756840877">Conta</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">O temporizador da aplicação <ph name="FQDN" /> terminou. Recomeça amanhã.</translation>
 <translation id="6738867403308150051">A transferir...</translation>
 <translation id="6746124502594467657">Mover para baixo</translation>
-<translation id="6751888224264752704">Limpar também estes dados do Chrome deste dispositivo</translation>
 <translation id="6766622839693428701">Deslize rapidamente para baixo para fechar.</translation>
 <translation id="6766758767654711248">Toque para aceder ao site.</translation>
 <translation id="6767294960381293877">Lista de dispositivos com os quais pretende partilhar um separador aberta a meia altura.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Experimente as seguintes sugestões: certifique-se de que existe espaço suficiente no dispositivo e tente exportar novamente.</translation>
 <translation id="7698359219371678927">Criar email no <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Pesquisas de preenchimento automático e URLs</translation>
+<translation id="7725024127233776428">As páginas que adiciona aos marcadores aparecem aqui.</translation>
 <translation id="773466115871691567">Traduza sempre páginas em <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Para detetar aplicações e sites perigosos, o Chrome envia para a Google URLs de algumas páginas que visita, informações limitadas do sistema e algum conteúdo das páginas.</translation>
@@ -995,7 +996,7 @@
 <translation id="8224471946457685718">Transferir artigos para si com Wi-Fi</translation>
 <translation id="8232956427053453090">Manter os dados</translation>
 <translation id="8249310407154411074">Mover para o início</translation>
-<translation id="8250920743982581267">Documentos</translation>
+<translation id="8250920743982581267">Docs</translation>
 <translation id="825412236959742607">Esta página utiliza demasiada memória, pelo que o Chrome removeu algum conteúdo.</translation>
 <translation id="8260126382462817229">Experimente iniciar sessão novamente</translation>
 <translation id="8261506727792406068">Eliminar</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Eliminar os dados existentes. Pode obtê-los ao mudar novamente para <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">O Chrome pode utilizar o <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> para pesquisar na China. Pode alterar esta opção nas <ph name="BEGIN_LINK" />Definições<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Bloquear se o site apresentar anúncios intrusivos ou enganadores (recomendado)</translation>
+<translation id="968900484120156207">As páginas que visita aparecem aqui.</translation>
 <translation id="970715775301869095">Faltam <ph name="MINUTES" /> minutos</translation>
 <translation id="974555521953189084">Introduza a frase de acesso para iniciar a sincronização</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
index ae4731e..10d7bcf3 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Șterge istoricul, cookie-urile, datele privind site-urile și memoria cache…</translation>
 <translation id="129553762522093515">Închise recent</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – Trimis de la <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Grupează file</translation>
 <translation id="1331212799747679585">Chrome nu se poate actualiza. Mai multe opțiuni</translation>
 <translation id="1332501820983677155">Comenzi rapide pentru funcțiile Google Chrome</translation>
 <translation id="1360432990279830238">Te deconectezi și dezactivezi sincronizarea?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">De bază</translation>
 <translation id="1671236975893690980">Descărcare în așteptare…</translation>
 <translation id="1672586136351118594">Nu mai afișa</translation>
-<translation id="1679068421605151609">Instrumente pentru dezvoltatori</translation>
 <translation id="1692118695553449118">Sincronizarea este activată</translation>
 <translation id="169515064810179024">Împiedică site-urile să acceseze senzorii de mișcare</translation>
 <translation id="1697480839793160072">Telefoane</translation>
@@ -712,6 +712,7 @@
 De exemplu, unele site-uri pot răspunde la această solicitare afișând anunțuri care nu se bazează pe alte site-uri accesate de tine. Numeroase site-uri vor culege și vor utiliza în continuare datele de navigare. De exemplu, pentru a îmbunătăți securitatea, pentru a oferi conținut, anunțuri și recomandări și pentru a genera statistici de raportare.</translation>
 <translation id="624789221780392884">Actualizarea este pregătită</translation>
 <translation id="6255999984061454636">Sugestii de conținut</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> dorește să caute dispozitive Bluetooth în apropiere. Următoarele dispozitive au fost găsite:</translation>
 <translation id="6277522088822131679">A apărut o problemă la printarea paginii. Încercați din nou.</translation>
 <translation id="6295158916970320988">Toate site-urile</translation>
 <translation id="629730747756840877">Cont</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Temporizatorul pentru <ph name="FQDN" /> s-a terminat. Va reîncepe mâine.</translation>
 <translation id="6738867403308150051">Se descarcă...</translation>
 <translation id="6746124502594467657">Mutați în jos</translation>
-<translation id="6751888224264752704">Șterge și datele Chrome de pe acest dispozitiv</translation>
 <translation id="6766622839693428701">Glisează în jos pentru a închide.</translation>
 <translation id="6766758767654711248">Atinge pentru a accesa site-ul</translation>
 <translation id="6767294960381293877">Lista de dispozitive pe care să trimiți o filă este deschisă la jumătate din înălțime.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Încearcă următoarele sfaturi: asigură-te că există spațiu suficient pe dispozitiv, încearcă să exporți din nou.</translation>
 <translation id="7698359219371678927">Creează un e-mail în <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Completează automat căutările și adresele URL</translation>
+<translation id="7725024127233776428">Paginile pe care le marchezi apar aici</translation>
 <translation id="773466115871691567">Tradu întotdeauna paginile în <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Pentru a detecta aplicațiile și site-urile periculoase, Chrome trimite la Google adresele URL ale unor pagini pe care le accesezi, informații de sistem limitate și o parte din conținutul paginii</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Șterge datele existente. Le poți recupera comutând înapoi la <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome poate să folosească <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> pentru căutare în China. Poți să schimbi acest lucru din <ph name="BEGIN_LINK" />Setări<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blochează dacă site-ul afișează anunțuri deranjante sau înșelătoare (recomandat)</translation>
+<translation id="968900484120156207">Paginile pe care le accesezi apar aici</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> min. rămase</translation>
 <translation id="974555521953189084">Introdu expresia de acces pentru a începe sincronizarea</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
index ccee4da..895cda9 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Удалить файлы cookie и данные сайтов, очистить историю и кеш</translation>
 <translation id="129553762522093515">Недавно закрытые</translation>
 <translation id="1303507811548703290">Домен: <ph name="DOMAIN" />. Отправлено с устройства "<ph name="DEVICE_NAME" />".</translation>
+<translation id="1310482092992808703">Сгруппировать вкладки</translation>
 <translation id="1331212799747679585">Не удалось обновить Chrome. Другие настройки</translation>
 <translation id="1332501820983677155">Функции Google Chrome</translation>
 <translation id="1360432990279830238">Выйти и отключить синхронизацию?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Основные настройки</translation>
 <translation id="1671236975893690980">Ожидание скачивания…</translation>
 <translation id="1672586136351118594">Больше не показывать</translation>
-<translation id="1679068421605151609">Инструменты разработчика</translation>
 <translation id="1692118695553449118">Синхронизация включена</translation>
 <translation id="169515064810179024">Закрыть сайтам доступ к датчикам движения</translation>
 <translation id="1697480839793160072">Номера телефонов</translation>
@@ -712,6 +712,7 @@
 Например, некоторые сайты перестанут показывать рекламу, подобранную на основе посещенных вами страниц. Другие сайты продолжат собирать и использовать данные о работе в браузере (например, для повышения уровня безопасности, предоставления контента, демонстрации рекламы и рекомендаций или формирования статистических отчетов).</translation>
 <translation id="624789221780392884">Обновление готово</translation>
 <translation id="6255999984061454636">Предлагаемый контент</translation>
+<translation id="6258133034695130373">Сайт <ph name="SITE" /> ищет устройства Bluetooth поблизости. Обнаружены следующие устройства:</translation>
 <translation id="6277522088822131679">Не удалось распечатать страницу. Повторите попытку.</translation>
 <translation id="6295158916970320988">Все сайты</translation>
 <translation id="629730747756840877">Аккаунт</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Время на таймере <ph name="FQDN" /> истекло. Завтра сайт снова станет доступен.</translation>
 <translation id="6738867403308150051">Скачивание…</translation>
 <translation id="6746124502594467657">Переместить вниз</translation>
-<translation id="6751888224264752704">Удалить эти данные Chrome с устройства</translation>
 <translation id="6766622839693428701">Проведите вниз, чтобы закрыть панель.</translation>
 <translation id="6766758767654711248">Нажмите, чтобы перейти на сайт</translation>
 <translation id="6767294960381293877">Список устройств для отправки вкладки развернут на половину экрана.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Убедитесь, что на вашем устройстве достаточно свободного места. Затем снова попробуйте экспортировать пароли.</translation>
 <translation id="7698359219371678927">Написать письмо в приложении "<ph name="APP_NAME" />"</translation>
 <translation id="7704317875155739195">Заполнять поисковые запросы и URL автоматически</translation>
+<translation id="7725024127233776428">Страницы, которые вы добавляете в закладки, будут появляться здесь.</translation>
 <translation id="773466115871691567">Переводить страницы на этом языке: <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Для обнаружения опасных приложений и сайтов Chrome отправляет в Google URL некоторых страниц, которые вы открываете, контент на них, а также определенные сведения о системе</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Удалить сохраненные данные. Чтобы снова получить к ним доступ, переключитесь на аккаунт <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">В Китае Chrome может использовать для поиска <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />. Это можно изменить в <ph name="BEGIN_LINK" />Настройках<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Блокировать, если сайт показывает навязчивую или вводящую в заблуждение рекламу (рекомендуется)</translation>
+<translation id="968900484120156207">Страницы, которые вы посещали, будут появляться здесь</translation>
 <translation id="970715775301869095">Осталось <ph name="MINUTES" /> мин.</translation>
 <translation id="974555521953189084">Чтобы начать синхронизацию, введите кодовую фразу</translation>
 <translation id="981121421437150478">Офлайн</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
index 1ea0f0e3..040802b1e 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Vymazať históriu, súbory cookie, dáta webov, vyrovnávaciu pamäť…</translation>
 <translation id="129553762522093515">Nedávno zatvorené</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – odoslané zo zariadenia <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Zoskupiť karty</translation>
 <translation id="1331212799747679585">Chrome sa nedá aktualizovať. Ďalšie možnosti</translation>
 <translation id="1332501820983677155">Skratky pre funkcie prehliadača Google Chrome</translation>
 <translation id="1360432990279830238">Odhlásiť sa a vypnúť synchronizáciu?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Základné</translation>
 <translation id="1671236975893690980">Čaká sa na stiahnutie…</translation>
 <translation id="1672586136351118594">Nabudúce nezobrazovať</translation>
-<translation id="1679068421605151609">Nástroje pre vývojárov</translation>
 <translation id="1692118695553449118">Synchronizácia je zapnutá.</translation>
 <translation id="169515064810179024">Blokovať webom prístup k senzorom pohybu</translation>
 <translation id="1697480839793160072">Telefóny</translation>
@@ -712,6 +712,7 @@
 Niektoré weby môžu napríklad na túto žiadosť reagovať tak, že vám zobrazia reklamy, ktoré nie sú založené na ostatných weboch, ktoré ste navštívili. Mnoho webov bude stále zhromažďovať a používať vaše dáta prehliadania, napríklad na zlepšenie zabezpečenia, poskytovanie obsahu, reklám a odporúčaní a na generovanie štatistík prehľadov.</translation>
 <translation id="624789221780392884">Aktualizácia je pripravená</translation>
 <translation id="6255999984061454636">Návrhy obsahu</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> chce vyhľadávať zariadenia Bluetooth v okolí. Našli sa tieto zariadenia:</translation>
 <translation id="6277522088822131679">Pri tlačení stránky sa vyskytol problém. Skúste to znova.</translation>
 <translation id="6295158916970320988">Všetky stránky</translation>
 <translation id="629730747756840877">Účet</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Časovač aplikácie <ph name="FQDN" /> vypršal. Spustí sa zase zajtra.</translation>
 <translation id="6738867403308150051">Sťahuje sa...</translation>
 <translation id="6746124502594467657">Presunúť nadol</translation>
-<translation id="6751888224264752704">Tiež vymazať údaje Chromu z tohto zariadenia</translation>
 <translation id="6766622839693428701">Zatvorte potiahnutím dole.</translation>
 <translation id="6766758767654711248">Kliknutím prejdite na web</translation>
 <translation id="6767294960381293877">Zoznam zariadení, s ktorými sa má zdieľať karta, je otvorený na polovičnú výšku.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Skúste tieto tipy: Uistite sa, že máte v zariadení dosť miesta, a potom skúste znova spustiť exportovanie.</translation>
 <translation id="7698359219371678927">Vytvorte správu v aplikácii <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Automaticky dopĺňať vyhľadávania a webové adresy</translation>
+<translation id="7725024127233776428">Tu sa zobrazia vaše stránky uložené ako záložky</translation>
 <translation id="773466115871691567">Vždy prekladať stránky v jazyku <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Chrome odosiela Googlu webové adresy niektorých navštívených stránok, obmedzené informácie o systéme a obsah niektorých stránok na účely rozpoznávania nebezpečných aplikácií a webov.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Odstrániť existujúce údaje. Načítate ich prepnutím späť na účet <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome môže použiť <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> na vyhľadávanie v Číne. Táto možnosť sa dá zmeniť v <ph name="BEGIN_LINK" />Nastaveniach<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blokovať, ak web zobrazuje obťažujúce alebo zavádzajúce reklamy (odporúčané)</translation>
+<translation id="968900484120156207">Tu sa zobrazia vami navštívené stránky</translation>
 <translation id="970715775301869095">Zostáva: <ph name="MINUTES" /> min</translation>
 <translation id="974555521953189084">Ak chcete spustiť synchronizáciu, zadajte prístupovú frázu</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
index 6cd94af..ccec3db5 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Izbris zgodovine, piškotkov, podatkov spletnih mest, predpomnilnika …</translation>
 <translation id="129553762522093515">Nedavno zaprto</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – poslano iz naprave <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Združi zavihke</translation>
 <translation id="1331212799747679585">Posodobitev Chroma ni mogoča. Več možnosti.</translation>
 <translation id="1332501820983677155">Bližnjice za funkcije Google Chroma</translation>
 <translation id="1360432990279830238">Odjava in izklop sinhronizacije?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Osnovno</translation>
 <translation id="1671236975893690980">Prenos na čakanju …</translation>
 <translation id="1672586136351118594">Tega ne prikaži več</translation>
-<translation id="1679068421605151609">Razvijalska orodja</translation>
 <translation id="1692118695553449118">Sinhroniziranje je vklopljeno</translation>
 <translation id="169515064810179024">Spletnim mestom prepreči dostop do tipal gibanja</translation>
 <translation id="1697480839793160072">Telefoni</translation>
@@ -712,6 +712,7 @@
 Nekatera spletna mesta se lahko na primer na zahtevo odzovejo tako, da prikažejo oglase, ki ne temeljijo na drugih spletnih mestih, ki ste jih obiskali. Veliko spletnih mest bo še vedno zbiralo in uporabljalo vaše podatke o brskanju, na primer za izboljšanje varnosti, zagotavljanje vsebine, oglasov in priporočil ter za pridobivanje statističnih podatkov za poročanje.</translation>
 <translation id="624789221780392884">Posodobitev je pripravljena</translation>
 <translation id="6255999984061454636">Predlogi za vsebino</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> želi iskati naprave Bluetooth v bližini; najdene so bile te naprave:</translation>
 <translation id="6277522088822131679">Pri tiskanju strani je prišlo do težave. Poskusite znova.</translation>
 <translation id="6295158916970320988">Vsa spletna mesta</translation>
 <translation id="629730747756840877">Račun</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Merilnik časa za <ph name="FQDN" /> je potekel. Jutri se začne znova.</translation>
 <translation id="6738867403308150051">Prenašanje ...</translation>
 <translation id="6746124502594467657">Premakni dol</translation>
-<translation id="6751888224264752704">Prav tako izbriši podatke v Chromu iz te naprave</translation>
 <translation id="6766622839693428701">Povlecite navzdol, da zaprete.</translation>
 <translation id="6766758767654711248">Dotaknite se, če želite na spletno mesto</translation>
 <translation id="6767294960381293877">Seznam naprav, s katerimi želite deliti zavihek, odprt pri polovični višini.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Poskusite ta nasveta: poskrbite, da je v napravi dovolj prostora, ali poskusite znova izvoziti.</translation>
 <translation id="7698359219371678927">Ustvarite e-poštno sporočilo v aplikaciji <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Samodejno dokončanje iskanj in URL-jev</translation>
+<translation id="7725024127233776428">Strani, ki jih dodate med zaznamke, so prikazane tukaj</translation>
 <translation id="773466115871691567">Vedno prevedi strani v jeziku <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Zaradi zaznavanja nevarnih aplikacij in spletnih mest Chrome Googlu pošlje URL-je nekaterih strani, ki jih obiščete, omejene podatke o sistemu in vsebino nekaterih strani</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Izbris obstoječih podatkov. Pridobite jih lahko tako, da preklopite nazaj na račun <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome lahko za iskanje na Kitajskem uporablja <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />. To je mogoče spremeniti v <ph name="BEGIN_LINK" />nastavitvah<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blokiraj, če spletno mesto prikazuje vsiljive ali zavajajoče oglase (priporočljivo)</translation>
+<translation id="968900484120156207">Strani, ki jih obiščete, so prikazane tu</translation>
 <translation id="970715775301869095">Še <ph name="MINUTES" /> min</translation>
 <translation id="974555521953189084">Vnesite geslo, če želite začeti sinhronizacijo</translation>
 <translation id="981121421437150478">Brez povezave</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
index bf9b7a4..6db6d07 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Обришите историју, колачиће, податке о сајтовима, кеш...</translation>
 <translation id="129553762522093515">Недавно затворено</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – послато је са уређаја <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Групиши картице</translation>
 <translation id="1331212799747679585">Chrome не може да се ажурира. Још опција</translation>
 <translation id="1332501820983677155">Пречице за Google Chrome функције</translation>
 <translation id="1360432990279830238">Одјављујете се и искључујете синхрониз?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Основна</translation>
 <translation id="1671236975893690980">Преузимање је на чекању…</translation>
 <translation id="1672586136351118594">Не приказуј поново</translation>
-<translation id="1679068421605151609">Алатке за програмере</translation>
 <translation id="1692118695553449118">Синхронизација је укључена</translation>
 <translation id="169515064810179024">Не дозвољавај сајтовима да приступају сензорима за покрет</translation>
 <translation id="1697480839793160072">Телефони</translation>
@@ -712,6 +712,7 @@
 На пример, неки веб-сајтови могу да одговоре на овај захтев приказивањем огласа који нису засновани на другим веб-сајтовима које сте посетили. Многи веб-сајтови ће ипак прикупљати и користити податке прегледања, на пример, ради побољшања безбедности, пружања садржаја, огласа и препорука, као и ради генерисања статистике извештавања.</translation>
 <translation id="624789221780392884">Ажурирање је спремно</translation>
 <translation id="6255999984061454636">Предлози за садржај</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> жели да тражи Bluetooth уређаје у близини. Пронађени су следећи уређаји:</translation>
 <translation id="6277522088822131679">Дошло је до проблема при штампању странице. Пробајте поново.</translation>
 <translation id="6295158916970320988">Сви сајтови</translation>
 <translation id="629730747756840877">налог</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Тајмер апликације <ph name="FQDN" /> је истекао. Почеће поново сутра.</translation>
 <translation id="6738867403308150051">Преузима се...</translation>
 <translation id="6746124502594467657">Премести надоле</translation>
-<translation id="6751888224264752704">Обриши и ове Chrome податке са овог уређаја</translation>
 <translation id="6766622839693428701">Превуците надоле да бисте затворили.</translation>
 <translation id="6766758767654711248">Додирните да бисте отишли на сајт</translation>
 <translation id="6767294960381293877">Листа уређаја са којима се дели картица је отворена на пола висине.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Испробајте следеће савете: проверите да ли на уређају има довољно простора, па пробајте да поново извезете лозинке.</translation>
 <translation id="7698359219371678927">Напишите имејл у апликацији <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Аутоматски довршавај претраге и URL-ове</translation>
+<translation id="7725024127233776428">Странице које обележите се приказују овде</translation>
 <translation id="773466115871691567">Увек предводи странице на језику <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Да би откривао опасне апликације и сајтове, Chrome шаље Google-у URL-ове неких страница које посећујете, ограничене информације о систему и одређени садржај страница</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Избришите постојеће податке. Можете да их вратите ако се вратите на <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome може да користи <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> за претрагу у Кини. Ово можете да промените у <ph name="BEGIN_LINK" />Подешавањима<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Блокирај ако сајт приказује огласе који ометају активности или обмањујуће огласе (препоручено)</translation>
+<translation id="968900484120156207">Странице које посећујете се приказују овде</translation>
 <translation id="970715775301869095">Још <ph name="MINUTES" /> мин</translation>
 <translation id="974555521953189084">Унесите приступну фразу да да бисте започели синхронизацију</translation>
 <translation id="981121421437150478">Офлајн</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
index 3d404ac5..bb646f01 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Rensa historiken, cookies, webbplatsdata, cacheminnet …</translation>
 <translation id="129553762522093515">Nyligen stängda</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – Skickades från <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Gruppera flikar</translation>
 <translation id="1331212799747679585">Det går inte att uppdatera Chrome. Fler alternativ</translation>
 <translation id="1332501820983677155">Kortkommandon för funktioner i Google Chrome</translation>
 <translation id="1360432990279830238">Logga ut och inaktivera synkronisering?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Grunder</translation>
 <translation id="1671236975893690980">Nedladdning väntar …</translation>
 <translation id="1672586136351118594">Visa inte igen</translation>
-<translation id="1679068421605151609">Verktyg för utvecklare</translation>
 <translation id="1692118695553449118">Synkronisering är på</translation>
 <translation id="169515064810179024">Blockera webbplatser från att använda enhetens rörelsesensorer</translation>
 <translation id="1697480839793160072">Telefoner</translation>
@@ -712,6 +712,7 @@
 Vissa webbplatser kan till exempel svara på begäran genom att visa annonser som inte baseras på andra webbplatser du har besökt. Många webbplatser samlar ändå in och använder din webbinformation – till exempel för att förbättra säkerheten, tillhandahålla innehåll, annonser och rekommendationer samt generera rapportstatistik.</translation>
 <translation id="624789221780392884">Uppdateringen är klar</translation>
 <translation id="6255999984061454636">Förslag på innehåll</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> vill söka efter Bluetooth-enheter i närheten. Följande enheter har hittats:</translation>
 <translation id="6277522088822131679">Det gick inte att skriva ut sidan. Försök igen.</translation>
 <translation id="6295158916970320988">Alla webbplatser</translation>
 <translation id="629730747756840877">Konto</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Timern för <ph name="FQDN" /> har löpt ut. Den börjar om igen i morgon.</translation>
 <translation id="6738867403308150051">Laddar ned …</translation>
 <translation id="6746124502594467657">Flytta ned</translation>
-<translation id="6751888224264752704">Ta även bort Chrome-data från enheten</translation>
 <translation id="6766622839693428701">Svep nedåt när du vill stänga.</translation>
 <translation id="6766758767654711248">Tryck här för att besöka webbplatsen</translation>
 <translation id="6767294960381293877">Listan över enheter som fliken kan delas med öppnades och tar upp halva skärmen.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Testa följande: kontrollera att det finns tillräckligt mycket utrymme på enheten, gör om exporten.</translation>
 <translation id="7698359219371678927">Skapa ett e-postmeddelande i <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Autoslutför sökningar och webbadresser</translation>
+<translation id="7725024127233776428">Sidor som infogats som bokmärke visas här</translation>
 <translation id="773466115871691567">Översätt alltid sidor på <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">För att kunna upptäcka farliga appar och webbplatser skickar Chrome webbadresser till vissa sidor som du besöker, vissa systemuppgifter och visst sidinnehåll till Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Radera befintlig data. Om du byter tillbaka till <ph name="FROM_ACCOUNT" /> finns den kvar där.</translation>
 <translation id="95817756606698420">Chrome kan använda <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> som sökmotor i Kina. Du kan ändra detta i <ph name="BEGIN_LINK" />inställningarna<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Blockera om påträngande eller vilseledande annonser visas på webbplatsen (rekommenderas)</translation>
+<translation id="968900484120156207">Sidor som du besöker visas här</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> minuter kvar</translation>
 <translation id="974555521953189084">Ange lösenfrasen för att starta synkroniseringen</translation>
 <translation id="981121421437150478">Offline</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
index 2bde6085..7b1b1fb 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Futa historia, vidakuzi, data ya tovuti, akiba…</translation>
 <translation id="129553762522093515">Vilivyofungwa hivi karibuni</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - Imetumwa kutoka <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Weka vichupo pamoja</translation>
 <translation id="1331212799747679585">Chrome haiwezi kusasisha. Chaguo zaidi</translation>
 <translation id="1332501820983677155">Njia za mikato za vipengele vya Google Chrome</translation>
 <translation id="1360432990279830238">Utaondoka na uzime usawazishaji?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Msingi</translation>
 <translation id="1671236975893690980">Inasubiri kupakua...</translation>
 <translation id="1672586136351118594">Usionyeshe tena</translation>
-<translation id="1679068421605151609">Zana za Wasadini Programu</translation>
 <translation id="1692118695553449118">Usawazishajii umewashwa</translation>
 <translation id="169515064810179024">Zuia tovuti zisifikie vitambuzi vya mwendo</translation>
 <translation id="1697480839793160072">Simu</translation>
@@ -712,6 +712,7 @@
 Kwa mfano, baadhi ya tovuti zinaweza kujibu ombi hili kwa kukuonyesha matangazo ambayo hayalingani na tovuti nyingine ulizotembelea. Tovuti nyingi bado zitakusanya na kutumia data yako ya kuvinjari — kwa mfano ili kuboresha usalama, kutoa maudhui, matangazo na mapendekezo, na kuzalisha takwimu za kuripoti.</translation>
 <translation id="624789221780392884">Sasisho iko tayari</translation>
 <translation id="6255999984061454636">Mapendekezo ya maudhui</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> ingependa kutafuta vifaa vya Bluetooth vilivyo karibu, vifaa vifuatavyo vimepatikana:</translation>
 <translation id="6277522088822131679">Kulikuwa na tatizo katika kuchapisha ukurasa. Tafadhali jaribu tena.</translation>
 <translation id="6295158916970320988">Tovuti zote</translation>
 <translation id="629730747756840877">Akaunti</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Kipindi cha kipima muda cha <ph name="FQDN" /> kimeisha. Kitaanza tena kesho.</translation>
 <translation id="6738867403308150051">Inapakua...</translation>
 <translation id="6746124502594467657">Songa chini</translation>
-<translation id="6751888224264752704">Pia, futa data hii ya Chrome kwenye kifaa hiki</translation>
 <translation id="6766622839693428701">Telezesha chini ili ufunge.</translation>
 <translation id="6766758767654711248">Gusa ili uende kwenye tovuti</translation>
 <translation id="6767294960381293877">Orodha ya vifaa vinavyoweza kutumia kichupo pamoja imefunguliwa kwenye nusu ya skrini.</translation>
@@ -920,6 +920,7 @@
 <translation id="7682724950699840886">Jaribu vidokezo vifuatavyo: Hakikisha kuwa una nafasi ya kutosha kwenye kifaa chako kisha ujaribu kuihamisha tena.</translation>
 <translation id="7698359219371678927">Tunga barua pepe katika <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Jaza kiotomatiki URL na hoja za utafutaji</translation>
+<translation id="7725024127233776428">Kurasa unazoalamisha zitaonekana hapa</translation>
 <translation id="773466115871691567">Zitafsiri kurasa katika <ph name="SOURCE_LANGUAGE" /> wakati wote</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Ili kutambua programu na tovuti hatari, Chrome hutuma URL za baadhi ya kurasa unazotembelea. maelezo machache ya mfumo na maudhui ya ukurasa kwa Google</translation>
@@ -1126,6 +1127,7 @@
 <translation id="951339005376969845">Futa data iliyopo. Unaweza kuirejesha kwa kurudi kwenye <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome inaweza kutumia <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> kutafuta nchini Uchina. Unaweza kuibadilisha katika <ph name="BEGIN_LINK" />MipangilioE<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Zuia ikiwa tovuti inaonyesha matangazo yanayopotosha au yanayokatiza huduma (inapendekezwa)</translation>
+<translation id="968900484120156207">Kurasa unazotembelea zitaonekana hapa</translation>
 <translation id="970715775301869095">Zimesalia dakika <ph name="MINUTES" /></translation>
 <translation id="974555521953189084">Andika kauli yako ya siri ili uanze kusawazisha</translation>
 <translation id="981121421437150478">Nje ya mtandao</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb
index 5f1bca09..fe83412 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_ta.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">வரலாறு, குக்கீகள், தளத் தரவு, தற்காலிகச் சேமிப்பை அழி…</translation>
 <translation id="129553762522093515">சமீபத்தில் மூடியவை</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" /> சாதனத்திலிருந்து அனுப்பப்பட்டது</translation>
+<translation id="1310482092992808703">தாவல்களைக் குழுவாக்கு</translation>
 <translation id="1331212799747679585">Chromeமைப் புதுப்பிக்க முடியாது. கூடுதல் விருப்பங்கள்</translation>
 <translation id="1332501820983677155">Google Chrome அம்சத்திற்கான ஷார்ட்கட்கள்</translation>
 <translation id="1360432990279830238">வெளியேறி, ஒத்திசைவை முடக்கவா?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">அடிப்படை</translation>
 <translation id="1671236975893690980">பதிவிறக்கம் நிலுவையில் உள்ளது…</translation>
 <translation id="1672586136351118594">மீண்டும் காட்டாதே</translation>
-<translation id="1679068421605151609">டெவலப்பர் கருவிகள்</translation>
 <translation id="1692118695553449118">ஒத்திசைவு இயக்கத்தில்</translation>
 <translation id="169515064810179024">தளங்கள் மோஷன் சென்சார்களை அணுகுவதைத் தடுக்கும்</translation>
 <translation id="1697480839793160072">மொபைல்கள்</translation>
@@ -712,6 +712,7 @@
 எடுத்துக்காட்டாக, சில இணையதளங்கள் நீங்கள் பார்வையிட்ட பிற இணையதளங்களின் அடிப்படையில் இல்லாத விளம்பரங்களைக் காட்டுவதன் மூலம் இந்தக் கோரிக்கைக்குப் பதிலளிக்கலாம். பல இணையதளங்கள் உங்கள் உலாவல் தரவைத் தொடர்ந்து சேகரித்துப் பயன்படுத்தும் - எடுத்துக்காட்டாக பாதுகாப்பை மேம்படுத்தவும், உள்ளடக்கம், விளம்பரங்கள் மற்றும் பரிந்துரைகளை வழங்கவும், அறிக்கைப் புள்ளிவிவரங்களை உருவாக்கவும் உங்கள் உலாவல் தரவைப் பயன்படுத்தலாம்.</translation>
 <translation id="624789221780392884">புதுப்பிப்பு தயார்</translation>
 <translation id="6255999984061454636">உள்ளடக்கப் பரிந்துரைகள்</translation>
+<translation id="6258133034695130373">அருகிலுள்ள புளூடூத் சாதனங்களை <ph name="SITE" /> ஸ்கேன் செய்ய விரும்புகிறது, இவை கண்டறியப்பட்டுள்ளன:</translation>
 <translation id="6277522088822131679">பக்கத்தை அச்சிடுவதில் சிக்கல் ஏற்பட்டது. மீண்டும் முயற்சிக்கவும்.</translation>
 <translation id="6295158916970320988">எல்லா தளங்களும்</translation>
 <translation id="629730747756840877">கணக்கு</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">உங்கள் <ph name="FQDN" /> டைமர் நேரம் முடிந்தது. நாளை மீண்டும் தொடங்கும்.</translation>
 <translation id="6738867403308150051">பதிவிறக்குகிறது…</translation>
 <translation id="6746124502594467657">கீழே நகர்த்து</translation>
-<translation id="6751888224264752704">சாதனத்தில் இருந்து இந்த Chrome தரவையும் அழி</translation>
 <translation id="6766622839693428701">மூடுவதற்கு, கீழே ஸ்வைப் செய்யவும்.</translation>
 <translation id="6766758767654711248">தளத்திற்குச் செல்ல, தட்டவும்</translation>
 <translation id="6767294960381293877">தாவலைப் பகிர்வதற்கான சாதனங்களின் பட்டியல் திரையின் பாதி அளவிற்குத் திறக்கப்பட்டுள்ளது.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">பின்வரும் உதவிக்குறிப்புகளை முயன்று பார்க்கவும்: சாதனத்தில் போதுமான சேமிப்பிடம் இருப்பதை உறுதிப்படுத்தி, மீண்டும் ஏற்ற முயலவும்.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" /> இல் மின்னஞ்சலை உருவாக்கவும்</translation>
 <translation id="7704317875155739195">தேடல்களையும் URLகளையும் தானே நிரப்பு</translation>
+<translation id="7725024127233776428">நீங்கள் புக்மார்க் செய்த பக்கங்கள் இங்கு தோன்றும்</translation>
 <translation id="773466115871691567"><ph name="SOURCE_LANGUAGE" /> மொழியில் உள்ள பக்கங்களை எப்போதும் மொழிபெயர்</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">ஆபத்தான ஆப்ஸையும் தளங்களையும் கண்டறிய நீங்கள் பார்வையிட்ட சில பக்கங்களின் URLகளையும், வரம்பிற்குட்பட்ட சிஸ்டம் தகவல்களையும், சில பக்கங்களின் உள்ளடக்கத்தையும் Googleளுக்கு Chrome அனுப்பும்</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">ஏற்கனவேயுள்ள தரவை நீக்கவும். மீண்டும் <ph name="FROM_ACCOUNT" />க்கு மாற்றுவதன் மூலம் அதை மீட்டெடுக்கலாம்.</translation>
 <translation id="95817756606698420">சீனாவில் தேடுவதற்கு, Chromeமில் <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />ஐப் பயன்படுத்தலாம். இதை <ph name="BEGIN_LINK" />அமைப்புகளுக்குச்<ph name="END_LINK" /> சென்று மாற்றலாம்.</translation>
 <translation id="965817943346481315">குறுக்கிடும் அல்லது தவறாக வழிநடத்தும் விளம்பரங்களை தளம் காண்பித்தால், அதைத் தடு (பரிந்துரைக்கப்படுவது)</translation>
+<translation id="968900484120156207">நீங்கள் செல்லும் பக்கங்கள் இங்குத் தோன்றும்</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> நிமிடங்கள் மீதமுள்ளன</translation>
 <translation id="974555521953189084">ஒத்திசைவைத் தொடங்க, கடவுச்சொற்றொடரை உள்ளிடவும்</translation>
 <translation id="981121421437150478">ஆஃப்லைன்</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_te.xtb b/chrome/android/java/strings/translations/android_chrome_strings_te.xtb
index 0eb58b0..63f557124 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_te.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_te.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">చరిత్ర, కుక్కీలు, సైట్ డేటా, కాష్‌ను తీసివేస్తుంది…</translation>
 <translation id="129553762522093515">ఇటీవల మూసివెయ్యబడినవి</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - దీనిని పంపిన పరికరం <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">ట్యాబ్‌లను గుంపుగా చేయి</translation>
 <translation id="1331212799747679585">Chromeని అప్‌డేట్ చేయడం సాధ్యపడదు. మరిన్ని ఎంపికలు</translation>
 <translation id="1332501820983677155">Google Chrome లక్షణ సత్వరమార్గాలు</translation>
 <translation id="1360432990279830238">సైన్ అవుట్ చేసి, సమకాలీకరణను ఆఫ్ చేయలా?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">ప్రాథమికం</translation>
 <translation id="1671236975893690980">డౌన్‌లోడ్ పెండింగ్‌లో ఉంది…</translation>
 <translation id="1672586136351118594">మళ్లీ చూపవద్దు</translation>
-<translation id="1679068421605151609">డెవలపర్ సాధనాలు</translation>
 <translation id="1692118695553449118">సమకాలీకరణ ఆన్‌లో ఉంది</translation>
 <translation id="169515064810179024">మోషన్ సెన్సార్‌లను యాక్సెస్ చేయనీయకుండా సైట్‌లను బ్లాక్ చేస్తుంది</translation>
 <translation id="1697480839793160072">టెలిఫోన్‌లు</translation>
@@ -712,6 +712,7 @@
 ఉదాహరణకు, కొన్ని వెబ్‌సైట్‌లు ఈ అభ్యర్థనకు ప్రతిస్పందనగా మీరు సందర్శించిన ఇతర వెబ్‌సైట్‌ల ఆధారితం కాని ప్రకటనలను మీకు చూపుతాయి. అనేక వెబ్‌సైట్‌లు భద్రతను మెరుగుపరచడం, కంటెంట్, ప్రకటనలు, సిఫార్సులను అందించడం, నివేదన గణాంకాలను రూపొందించడం మొదలైన వాటి కోసం ఇప్పటికీ మీ బ్రౌజింగ్ డేటాను సేకరించి, ఉపయోగిస్తాయి.</translation>
 <translation id="624789221780392884">అప్‌డేట్‌ సిద్ధంగా ఉంది</translation>
 <translation id="6255999984061454636">కంటెంట్ సూచనలు</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> సమీపంలోని బ్లూటూత్ పరికరాల కోసం స్కాన్ చేయాలనుకుంటోంది, కింది పరికరాలు కనుగొనబడ్డాయి:</translation>
 <translation id="6277522088822131679">పేజీని ముద్రిస్తున్నప్పుడు సమస్య ఏర్పడింది. దయచేసి మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="6295158916970320988">అన్ని సైట్‌లు</translation>
 <translation id="629730747756840877">ఖాతా</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">మీ <ph name="FQDN" /> టైమర్ పూర్తయింది. అది మళ్లీ రేపు ప్రారంభమవుతుంది.</translation>
 <translation id="6738867403308150051">డౌన్‌లోడ్ చేస్తోంది...</translation>
 <translation id="6746124502594467657">క్రిందికి తరలించు</translation>
-<translation id="6751888224264752704">అలాగే, ఈ పరికరంలోని ఈ Chrome డేటాను కూడా తొలగించు</translation>
 <translation id="6766622839693428701">మూసివేయడానికి దిగువకు స్వైప్ చేయండి.</translation>
 <translation id="6766758767654711248">సైట్‌లోకి వెళ్లడం కోసం నొక్కండి</translation>
 <translation id="6767294960381293877">ట్యాబ్‌ను షేర్ చేయాల్సిన పరికరాల జాబితా సగం ఎత్తులో తెరవబడింది.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">కింది చిట్కాలను ప్రయత్నించండి: మీ పరికరంలో తగినంత స్థలం ఉన్నట్లు నిర్ధారించుకోండి, మళ్లీ ఎగుమతి చేయడానికి ప్రయత్నించండి.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" />లో ఇమెయిల్‌ను సృష్టించండి</translation>
 <translation id="7704317875155739195">స్వయంపూర్తి శోధనలు మరియు URLలు</translation>
+<translation id="7725024127233776428">మీరు బుక్‌మార్క్ చేసే పేజీలు ఇక్కడ కనిపిస్తాయి</translation>
 <translation id="773466115871691567"><ph name="SOURCE_LANGUAGE" />లో ఉన్న పేజీలను ఎల్లప్పుడూ అనువదించు</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Chrome ప్రమాదకరమైన యాప్‌లు, సైట్‌లను గుర్తించడానికి, మీరు సందర్శించే కొన్ని పేజీల URLలు, పరిమిత సిస్టమ్ సమాచారం, కొంత పేజీ కంటెంట్‌ను Googleకు పంపుతుంది</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">ఇప్పటికే ఉన్న డేటాను తొలగించండి. మీరు <ph name="FROM_ACCOUNT" />కు తిరిగి వెళ్లడం ద్వారా దాన్ని తిరిగి పొందవచ్చు.</translation>
 <translation id="95817756606698420">చైనాలో వెతకడానికి <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />ను Chrome ఉపయోగించవచ్చు. మీరు దీనిని <ph name="BEGIN_LINK" />సెట్టింగ్‌ల<ph name="END_LINK" />లో మార్చవచ్చు.</translation>
 <translation id="965817943346481315">సైట్ అనుచితమైన లేదా తప్పుదారి పట్టించే ప్రకటనలను చూపించినప్పుడు బ్లాక్ చేయి (సిఫార్సు చేయబడింది)</translation>
+<translation id="968900484120156207">మీరు సందర్శించే పేజీలు ఇక్కడ కనిపిస్తాయి</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> నిమిషాలు మిగిలి ఉంది</translation>
 <translation id="974555521953189084">సింక్‌ను ప్రారంభించడానికి మీ రహస్య పదబంధాన్ని నమోదు చేయండి</translation>
 <translation id="981121421437150478">ఆఫ్‌లైన్</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
index aabbe031..5ff445a 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">ล้างประวัติการเข้าชม คุกกี้ ข้อมูลเว็บไซต์ แคช…</translation>
 <translation id="129553762522093515">เพิ่งปิด</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - ส่งจาก <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">จับกลุ่มแท็บ</translation>
 <translation id="1331212799747679585">อัปเดต Chrome ไม่ได้ ตัวเลือกอื่นๆ</translation>
 <translation id="1332501820983677155">แป้นพิมพ์ลัดสำหรับฟีเจอร์ของ Google Chrome</translation>
 <translation id="1360432990279830238">ออกจากระบบและปิดการซิงค์ไหม</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">พื้นฐาน</translation>
 <translation id="1671236975893690980">การดาวน์โหลดรอดำเนินการ…</translation>
 <translation id="1672586136351118594">ไม่ต้องแสดงอีก</translation>
-<translation id="1679068421605151609">เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์</translation>
 <translation id="1692118695553449118">การซิงค์เปิดอยู่</translation>
 <translation id="169515064810179024">บล็อกไม่ให้เว็บไซต์เข้าถึงเซ็นเซอร์ตรวจจับความเคลื่อนไหว</translation>
 <translation id="1697480839793160072">โทรศัพท์</translation>
@@ -712,6 +712,7 @@
 ตัวอย่างเช่น บางเว็บไซต์อาจตอบสนองต่อคำขอนี้โดยแสดงให้คุณเห็นโฆษณาที่ไม่ได้อิงอยู่กับเว็บไซต์อื่นๆ ที่คุณเข้าชม เว็บไซต์จำนวนมากจะยังคงรวบรวมและใช้ข้อมูลการท่องเว็บของคุณเพื่อปรับปรุงความปลอดภัย เพื่อแสดงเนื้อหา โฆษณา และคำแนะนำ และเพื่อสร้างสถิติในการรายงาน เป็นต้น</translation>
 <translation id="624789221780392884">พร้อมอัปเดต</translation>
 <translation id="6255999984061454636">การแนะนำเนื้อหา</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> ต้องการสแกนหาอุปกรณ์บลูทูธที่อยู่ใกล้เคียงและพบอุปกรณ์ต่อไปนี้</translation>
 <translation id="6277522088822131679">เกิดปัญหาในการพิมพ์หน้านี้ โปรดลองอีกครั้ง</translation>
 <translation id="6295158916970320988">เว็บไซต์ทั้งหมด</translation>
 <translation id="629730747756840877">บัญชี</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">ตัวจับเวลา <ph name="FQDN" /> หมดเวลาแล้ว และจะเริ่มอีกครั้งพรุ่งนี้</translation>
 <translation id="6738867403308150051">กำลังดาวน์โหลด…</translation>
 <translation id="6746124502594467657">เลื่อนลง</translation>
-<translation id="6751888224264752704">ล้างข้อมูล Chrome นี้ออกจากอุปกรณ์นี้ด้วย</translation>
 <translation id="6766622839693428701">เลื่อนลงเพื่อปิด</translation>
 <translation id="6766758767654711248">แตะเพื่อไปที่เว็บไซต์</translation>
 <translation id="6767294960381293877">รายการอุปกรณ์ที่จะแชร์แท็บด้วยเปิดอยู่ที่ระดับความสูงครึ่งหนึ่งของหน้าจอ</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">ลองทำตามเคล็ดลับต่อไปนี้ ตรวจสอบว่าอุปกรณ์มีพื้นที่ว่างเพียงพอ จากนั้นพยายามส่งออกอีกครั้ง</translation>
 <translation id="7698359219371678927">สร้างอีเมลใน <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">เติมข้อความค้นหาและ URL อัตโนมัติ</translation>
+<translation id="7725024127233776428">หน้าที่คุณบุ๊กมาร์กไว้จะปรากฏที่นี่</translation>
 <translation id="773466115871691567">แปลหน้าเว็บภาษา<ph name="SOURCE_LANGUAGE" />ทุกครั้ง</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">ในการตรวจหาแอปและเว็บไซต์ที่เป็นอันตราย Chrome จะส่ง URL ของหน้าบางหน้าที่คุณเข้าชม ข้อมูลระบบที่จำกัด และเนื้อหาบางส่วนของหน้าไปให้ Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">ลบข้อมูลที่มีอยู่ คุณสามารถดึงข้อมูลกลับมาโดยเปลี่ยนกลับไปเป็น <ph name="FROM_ACCOUNT" /></translation>
 <translation id="95817756606698420">Chrome สามารถใช้ <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> สำหรับการค้นหาในประเทศจีน คุณสามารถเปลี่ยนเครื่องมือค้นหาเริ่มต้นนี้ได้ใน<ph name="BEGIN_LINK" />การตั้งค่า<ph name="END_LINK" /></translation>
 <translation id="965817943346481315">บล็อกหากเว็บไซต์แสดงโฆษณาที่แทรกหรือทำให้เข้าใจผิด (แนะนำ)</translation>
+<translation id="968900484120156207">หน้าที่คุณเข้าชมจะปรากฏที่นี่</translation>
 <translation id="970715775301869095">เหลือ <ph name="MINUTES" /> นาที</translation>
 <translation id="974555521953189084">ป้อนรหัสผ่านเพื่อเริ่มซิงค์</translation>
 <translation id="981121421437150478">ออฟไลน์</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
index 899e44a1..56530fd 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Geçmişi, çerezleri, site verilerini, önbelleği temizleyin…</translation>
 <translation id="129553762522093515">Son kapatılan</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - <ph name="DEVICE_NAME" /> cihazından gönderildi</translation>
+<translation id="1310482092992808703">Sekmeleri grupla</translation>
 <translation id="1331212799747679585">Chrome güncellenemiyor. Diğer seçenekler</translation>
 <translation id="1332501820983677155">Google Chrome'un özellik kısayolları</translation>
 <translation id="1360432990279830238">Oturum ve senkronizasyon kapatılsın mı?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Temel</translation>
 <translation id="1671236975893690980">İndirme işlemi beklemede…</translation>
 <translation id="1672586136351118594">Bir daha gösterme</translation>
-<translation id="1679068421605151609">Geliştirici Araçları</translation>
 <translation id="1692118695553449118">Senkronizasyon açık.</translation>
 <translation id="169515064810179024">Sitelerin hareket sensörlerine erişimini engelle</translation>
 <translation id="1697480839793160072">Telefonlar</translation>
@@ -712,6 +712,7 @@
 Örneğin bazı web siteleri bu isteği size daha önce gezdiğiniz web sitelerine dayalı olmayan reklamları göstererek yanıtlayabilir. Birçok web sitesi (örneğin güvenliği iyileştirmek; içerik, reklam, öneri sağlamak ve raporlama istatistikleri oluşturmak gibi amaçlarla) göz atma verilerinizi toplayıp kullanmayı sürdürecektir.</translation>
 <translation id="624789221780392884">Güncelleme hazır</translation>
 <translation id="6255999984061454636">İçerik önerileri</translation>
+<translation id="6258133034695130373"><ph name="SITE" />, yakındaki Bluetooth cihazlarını taramak istiyor. Şu cihazlar bulundu:</translation>
 <translation id="6277522088822131679">Sayfa yazdırılırken bir sorun oluştu. Lütfen tekrar deneyin.</translation>
 <translation id="6295158916970320988">Tüm siteler</translation>
 <translation id="629730747756840877">Hesap</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117"><ph name="FQDN" /> zamanlayıcınızın süresi doldu. Yarın tekrar başlatılacak.</translation>
 <translation id="6738867403308150051">İndiriliyor…</translation>
 <translation id="6746124502594467657">Aşağı taşı</translation>
-<translation id="6751888224264752704">Bu Chrome verisini bu cihazdan da temizle</translation>
 <translation id="6766622839693428701">Kapatmak için aşağı kaydırın.</translation>
 <translation id="6766758767654711248">Siteye gitmek için dokunun</translation>
 <translation id="6767294960381293877">Sekme paylaşılacak cihazların listesi yarım yükseklikte açıldı.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Şu ipuçlarını deneyin: Cihazınızda yeterli alan bulunduğundan emin olun, daha sonra dışa aktarmayı tekrar deneyin.</translation>
 <translation id="7698359219371678927"><ph name="APP_NAME" /> adlı uygulamada e-posta oluşturun</translation>
 <translation id="7704317875155739195">Aramaları ve URL'leri otomatik tamamla</translation>
+<translation id="7725024127233776428">Yer işareti koyduğunuz sayfalar burada görünür</translation>
 <translation id="773466115871691567"><ph name="SOURCE_LANGUAGE" /> dilindeki sayfaları her zaman çevir</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Chrome, tehlikeli uygulamaları ve siteleri algılamak için Google'a ziyaret ettiğiniz bazı sitelerin URL'lerini, sınırlı sistem bilgisini ve bazı sayfa içeriklerini gönderir.</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Mevcut veriler silinir. İlgili verileri tekrar <ph name="FROM_ACCOUNT" /> hesabına geçerek alabilirsiniz.</translation>
 <translation id="95817756606698420">Chrome, Çin'de arama yapmak için <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" />'yu kullanabilir. Bu seçimi <ph name="BEGIN_LINK" />Ayarlar<ph name="END_LINK" />'da değiştirebilirsiniz.</translation>
 <translation id="965817943346481315">Site, araya giren veya yanıltıcı reklamlar gösteriyorsa engelle (önerilen)</translation>
+<translation id="968900484120156207">Ziyaret ettiğiniz sayfalar burada görünür</translation>
 <translation id="970715775301869095"><ph name="MINUTES" /> dk. kaldı</translation>
 <translation id="974555521953189084">Senkronizasyonu başlatmak için parolanızı girin</translation>
 <translation id="981121421437150478">Çevrimdışı</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
index 16c30d5..e86d016 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Очистити історію, файли cookie, дані сайтів, кеш…</translation>
 <translation id="129553762522093515">Нещодавно закриті</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – Надіслано з пристрою "<ph name="DEVICE_NAME" />"</translation>
+<translation id="1310482092992808703">Згрупувати вкладки</translation>
 <translation id="1331212799747679585">Неможливо оновити Chrome. Більше опцій</translation>
 <translation id="1332501820983677155">Комбінації клавіш для функцій Google Chrome</translation>
 <translation id="1360432990279830238">Вийти й вимкнути синхронізацію?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Основні параметри</translation>
 <translation id="1671236975893690980">Очікується завантаження…</translation>
 <translation id="1672586136351118594">Більше не показувати</translation>
-<translation id="1679068421605151609">Інструменти для розробників</translation>
 <translation id="1692118695553449118">Синхронізацію ввімкнено</translation>
 <translation id="169515064810179024">Заборонити сайтам доступ до датчиків руху</translation>
 <translation id="1697480839793160072">Номери телефонів</translation>
@@ -265,7 +265,7 @@
 <translation id="2900528713135656174">Створити подію</translation>
 <translation id="2902702728133930130">Не вдалося запустити Chrome через неочікувану помилку.</translation>
 <translation id="290376772003165898">Ця сторінка відображається не такою мовою: <ph name="LANGUAGE" />?</translation>
-<translation id="2904414404539560095">Список пристроїв, з якими можна ділитися вкладкою, відкрито на всю висоту.</translation>
+<translation id="2904414404539560095">Список пристроїв, на які можна надіслати вкладку, відкрито на всю висоту екрана.</translation>
 <translation id="2910701580606108292">Запитувати, перш ніж дозволяти сайтам відтворювати захищений вміст</translation>
 <translation id="2913331724188855103">Дозволити сайтам зберігати та розпізнавати дані файлів cookie (рекомендується)</translation>
 <translation id="2923908459366352541">Недійсна назва</translation>
@@ -411,7 +411,7 @@
 <translation id="4099578267706723511">Допоможіть покращити Chrome, надсилаючи статистику та звіти про збої в Google.</translation>
 <translation id="410351446219883937">Автовідтворення</translation>
 <translation id="4116038641877404294">Завантажуйте сторінки, щоб переглядати їх офлайн</translation>
-<translation id="4135200667068010335">Список пристроїв, з якими можна ділитися вкладкою, закрито.</translation>
+<translation id="4135200667068010335">Список пристроїв, на які можна надіслати вкладку, закрито.</translation>
 <translation id="4149994727733219643">Спрощений перегляд веб-сторінок</translation>
 <translation id="4165986682804962316">Налаштування сайту</translation>
 <translation id="4169535189173047238">Не дозволяти</translation>
@@ -712,6 +712,7 @@
 Наприклад, деякі веб-сайти можуть реагувати на такий запит, показуючи вам рекламу, не пов’язану з іншими веб-сайтами, які ви відвідали. Багато веб-сайтів і надалі збиратимуть та використовуватимуть ваші дані веб-перегляду, наприклад, щоб покращувати систему безпеки, пропонувати вміст, рекламу й рекомендації, а також генерувати статистику для звітів.</translation>
 <translation id="624789221780392884">Оновлення завершено</translation>
 <translation id="6255999984061454636">Пропозиції вмісту</translation>
+<translation id="6258133034695130373">Сайт <ph name="SITE" /> хоче шукати пристрої Bluetooth поруч. Виявлено такі пристрої:</translation>
 <translation id="6277522088822131679">Виникла проблема з друком цієї сторінки. Повторіть спробу.</translation>
 <translation id="6295158916970320988">Усі сайти</translation>
 <translation id="629730747756840877">Обліковий запис</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Вийшов час на таймері веб-сайту <ph name="FQDN" />. Завтра він знову запрацює.</translation>
 <translation id="6738867403308150051">Завантаження…</translation>
 <translation id="6746124502594467657">Вниз</translation>
-<translation id="6751888224264752704">Також видалити дані Chrome із цього пристрою</translation>
 <translation id="6766622839693428701">Проведіть пальцем униз, щоб закрити.</translation>
 <translation id="6766758767654711248">Натисніть, щоб перейти на сайт</translation>
 <translation id="6767294960381293877">Список пристроїв, з якими можна ділитися вкладкою, відкрито на половину висоти.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Порада. Переконайтеся, що на пристрої достатньо вільного місця та спробуйте експортувати дані знову.</translation>
 <translation id="7698359219371678927">Створити електронну адресу в додатку <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Автоматично завершувати пошукові запити та URL-адреси</translation>
+<translation id="7725024127233776428">Сторінки, для яких ви робите закладки, з'являються тут</translation>
 <translation id="773466115871691567">Завжди перекладати сторінки такою мовою: <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Щоб виявляти небезпечні додатки й сайти, Chrome надсилає URL-адреси певних відвіданих сторінок, обмежену системну інформацію та вміст деяких сторінок у Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Видалити наявні дані. Щоб відновити їх, поверніться в обліковий запис <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome може використовувати <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> для пошуку в Китаї. Це можна змінити в <ph name="BEGIN_LINK" />Налаштуваннях<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Блокувати, якщо сайт показує нав’язливі чи оманливі оголошення (рекомендовано)</translation>
+<translation id="968900484120156207">Відвідані сторінки з'являються тут</translation>
 <translation id="970715775301869095">Залишилося <ph name="MINUTES" /> хв</translation>
 <translation id="974555521953189084">Введіть парольну фразу, щоб почати синхронізацію</translation>
 <translation id="981121421437150478">Офлайн</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
index deeb77e2..545b78df 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">Xóa lịch sử, cookie, dữ liệu trang web, bộ nhớ đệm…</translation>
 <translation id="129553762522093515">Các tab đã đóng gần đây</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> – Gửi từ <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">Nhóm các tab</translation>
 <translation id="1331212799747679585">Chrome không thể cập nhật. Tùy chọn khác</translation>
 <translation id="1332501820983677155">Phím tắt cho các tính năng của Google Chrome</translation>
 <translation id="1360432990279830238">Đăng xuất và tắt tính năng đồng bộ hóa?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">Cơ bản</translation>
 <translation id="1671236975893690980">Đang chờ tải xuống...</translation>
 <translation id="1672586136351118594">Không hiển thị lại</translation>
-<translation id="1679068421605151609">Công cụ dành cho nhà phát triển</translation>
 <translation id="1692118695553449118">Đồng bộ hóa đang bật</translation>
 <translation id="169515064810179024">Chặn không cho các trang web sử dụng cảm biến chuyển động</translation>
 <translation id="1697480839793160072">Điện thoại</translation>
@@ -712,6 +712,7 @@
 Ví dụ: một số trang web có thể phản hồi yêu cầu này bằng cách hiển thị cho bạn các quảng cáo không dựa trên các trang web khác mà bạn đã truy cập. Nhiều trang web sẽ vẫn thu thập và sử dụng dữ liệu duyệt web của bạn — ví dụ: để tăng cường bảo mật, cung cấp nội dung, quảng cáo và đề xuất, đồng thời tạo số liệu thống kê báo cáo.</translation>
 <translation id="624789221780392884">Bản cập nhật đã sẵn sàng</translation>
 <translation id="6255999984061454636">Đề xuất nội dung</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> muốn quét tìm các thiết bị Bluetooth ở gần và đã tìm thấy các thiết bị sau đây:</translation>
 <translation id="6277522088822131679">Đã xảy ra sự cố khi in trang này. Vui lòng thử lại.</translation>
 <translation id="6295158916970320988">Tất cả các trang web</translation>
 <translation id="629730747756840877">Tài khoản</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">Thời gian hẹn giờ của <ph name="FQDN" /> đã hết. Thời gian hẹn giờ sẽ bắt đầu lại vào ngày mai.</translation>
 <translation id="6738867403308150051">Đang tải xuống...</translation>
 <translation id="6746124502594467657">Di chuyển xuống</translation>
-<translation id="6751888224264752704">Xóa cả dữ liệu trên Chrome khỏi thiết bị này</translation>
 <translation id="6766622839693428701">Vuốt xuống để đóng.</translation>
 <translation id="6766758767654711248">Nhấn để chuyển đến trang web</translation>
 <translation id="6767294960381293877">Danh sách các thiết bị mà bạn có thể chia sẻ một tab đã mở ở nửa dưới của màn hình.</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">Thử các mẹo sau: đảm bảo thiết bị của bạn có đủ dung lượng, sau đó thử xuất lại.</translation>
 <translation id="7698359219371678927">Tạo email trong <ph name="APP_NAME" /></translation>
 <translation id="7704317875155739195">Tự động hoàn thành cụm từ tìm kiếm và URL</translation>
+<translation id="7725024127233776428">Các trang mà bạn đánh dấu sẽ xuất hiện tại đây</translation>
 <translation id="773466115871691567">Luôn dịch các trang viết bằng <ph name="SOURCE_LANGUAGE" /></translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">Để phát hiện các ứng dụng và trang web nguy hiểm, Chrome sẽ gửi URL của một số trang mà bạn truy cập, thông tin hệ thống giới hạn và một số nội dung trang cho Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">Xóa dữ liệu hiện có. Bạn có thể truy xuất dữ liệu bằng cách chuyển về <ph name="FROM_ACCOUNT" />.</translation>
 <translation id="95817756606698420">Chrome có thể sử dụng <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> để tìm kiếm tại Trung Quốc. Bạn có thể thay đổi điều này trong <ph name="BEGIN_LINK" />Cài đặt<ph name="END_LINK" />.</translation>
 <translation id="965817943346481315">Chặn nếu trang web hiển thị quảng cáo xâm nhập hoặc quảng cáo gây hiểu nhầm (khuyên dùng)</translation>
+<translation id="968900484120156207">Các trang mà bạn truy cập sẽ xuất hiện tại đây</translation>
 <translation id="970715775301869095">Còn <ph name="MINUTES" /> phút</translation>
 <translation id="974555521953189084">Nhập cụm mật khẩu của bạn để bắt đầu đồng bộ hóa</translation>
 <translation id="981121421437150478">Ngoại tuyến</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
index f0b26fa..196df433 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">清除历史记录、Cookie、网站数据、缓存内容…</translation>
 <translation id="129553762522093515">最近关闭的标签页</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - 发送者:<ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">组合标签页</translation>
 <translation id="1331212799747679585">Chrome 无法更新。更多选项</translation>
 <translation id="1332501820983677155">Google Chrome 功能快捷键</translation>
 <translation id="1360432990279830238">退出帐号并关闭同步功能?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">基本</translation>
 <translation id="1671236975893690980">正在等待下载…</translation>
 <translation id="1672586136351118594">不再显示</translation>
-<translation id="1679068421605151609">开发者工具</translation>
 <translation id="1692118695553449118">同步功能已开启</translation>
 <translation id="169515064810179024">禁止网站使用动态传感器</translation>
 <translation id="1697480839793160072">电话</translation>
@@ -712,6 +712,7 @@
 例如:某些网站在收到该请求后,可能会向您展示相应的广告(这些广告并不是根据您访问过的其他网站而展示的)。许多网站仍会出于一些目的收集并使用您的浏览数据,例如,为了提高安全性,为了提供相关内容、广告和推荐内容,以及为了生成报告统计信息。</translation>
 <translation id="624789221780392884">有可用的更新</translation>
 <translation id="6255999984061454636">内容建议</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> 想要搜索附近的蓝牙设备,已发现以下设备:</translation>
 <translation id="6277522088822131679">打印该页面时出现问题,请重试。</translation>
 <translation id="6295158916970320988">所有网站</translation>
 <translation id="629730747756840877">帐号</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">您的 <ph name="FQDN" /> 计时器已结束计时。它将于明天重新开始。</translation>
 <translation id="6738867403308150051">正在下载…</translation>
 <translation id="6746124502594467657">下移</translation>
-<translation id="6751888224264752704">也从此设备中清除这些 Chrome 数据</translation>
 <translation id="6766622839693428701">向下滑动即可关闭。</translation>
 <translation id="6766758767654711248">点按即可转到网站</translation>
 <translation id="6767294960381293877">要与之分享标签页的设备的列表已半屏打开。</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">请尝试按以下提示操作:确保您的设备上有足够的空间,然后重新尝试导出。</translation>
 <translation id="7698359219371678927">在 <ph name="APP_NAME" /> 中创建电子邮件</translation>
 <translation id="7704317875155739195">自动填充搜索字词和网址</translation>
+<translation id="7725024127233776428">您要添加书签的网页会显示在此处</translation>
 <translation id="773466115871691567">一律翻译<ph name="SOURCE_LANGUAGE" />网页</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" />(<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">为了检测危险应用和网站,Chrome 会将您所访问的部分网页的网址、有限的系统信息以及部分网页内容发送给 Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">删除现有数据。您可通过切换回 <ph name="FROM_ACCOUNT" /> 来获取现有数据。</translation>
 <translation id="95817756606698420">在中国,Chrome 可以使用<ph name="BEGIN_BOLD" />搜狗<ph name="END_BOLD" />作为搜索引擎。如果需要,您可以在<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />中进行更改。</translation>
 <translation id="965817943346481315">屏蔽会展示侵扰性或误导性广告的网站(推荐)</translation>
+<translation id="968900484120156207">您访问的网页会显示在此处</translation>
 <translation id="970715775301869095">还剩 <ph name="MINUTES" /> 分钟</translation>
 <translation id="974555521953189084">输入密码以开始同步</translation>
 <translation id="981121421437150478">离线</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
index 7fba729..c611540 100644
--- a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
+++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -49,6 +49,7 @@
 <translation id="1291207594882862231">清除歷史記錄、Cookie、網站資料、快取…</translation>
 <translation id="129553762522093515">最近關閉的分頁</translation>
 <translation id="1303507811548703290"><ph name="DOMAIN" /> - 來自 <ph name="DEVICE_NAME" /></translation>
+<translation id="1310482092992808703">將分頁加入群組</translation>
 <translation id="1331212799747679585">無法更新 Chrome。更多選項</translation>
 <translation id="1332501820983677155">Google Chrome 功能快速鍵</translation>
 <translation id="1360432990279830238">要登出並關閉同步處理功能嗎?</translation>
@@ -94,7 +95,6 @@
 <translation id="1670399744444387456">基本</translation>
 <translation id="1671236975893690980">正在等候下載…</translation>
 <translation id="1672586136351118594">不要再顯示</translation>
-<translation id="1679068421605151609">開發人員工具</translation>
 <translation id="1692118695553449118">同步功能已啟用</translation>
 <translation id="169515064810179024">禁止網站存取動作感應器</translation>
 <translation id="1697480839793160072">電話</translation>
@@ -712,6 +712,7 @@
 舉例來說,部分網站可能會以顯示廣告的方式回應這類要求,而這些廣告並非根據您所造訪的其他網站記錄而產生。許多網站仍會收集您的瀏覽資料,並將這些資料用於下列目的:提高網站安全性、在網站上提供更相關的內容、廣告和推薦項目,以及產生報告統計資料。</translation>
 <translation id="624789221780392884">可進行更新</translation>
 <translation id="6255999984061454636">內容建議</translation>
+<translation id="6258133034695130373"><ph name="SITE" /> 要求掃描附近的藍牙裝置,已找到下列裝置:</translation>
 <translation id="6277522088822131679">列印網頁時發生問題,請再試一次。</translation>
 <translation id="6295158916970320988">所有網站</translation>
 <translation id="629730747756840877">帳戶</translation>
@@ -782,7 +783,6 @@
 <translation id="671481426037969117">「<ph name="FQDN" />」計時器已結束計時,將於明天重新開始。</translation>
 <translation id="6738867403308150051">下載中…</translation>
 <translation id="6746124502594467657">下移</translation>
-<translation id="6751888224264752704">一併清除這部裝置中的 Chrome 資料</translation>
 <translation id="6766622839693428701">向下滑動即可關閉。</translation>
 <translation id="6766758767654711248">輕觸即可前往網站</translation>
 <translation id="6767294960381293877">要共用分頁的裝置清單已開啟,顯示在畫面下半部。</translation>
@@ -921,6 +921,7 @@
 <translation id="7682724950699840886">請嘗試按照下列提示操作:確認你的裝置上有足夠空間,然後嘗試重新匯出。</translation>
 <translation id="7698359219371678927">在「<ph name="APP_NAME" />」中建立電子郵件</translation>
 <translation id="7704317875155739195">自動完成搜尋字詞與網址</translation>
+<translation id="7725024127233776428">加入書籤的頁面會顯示在這裡</translation>
 <translation id="773466115871691567">一律翻譯<ph name="SOURCE_LANGUAGE" />網頁</translation>
 <translation id="7735672056998735387"><ph name="SPACE_FREE" /> (<ph name="SPACE_OTHER" />)</translation>
 <translation id="7746457520633464754">為了偵測危險的應用程式和網站,Chrome 會將你造訪的部分網頁網址、部分系統資訊以及部分網頁內容傳送給 Google</translation>
@@ -1127,6 +1128,7 @@
 <translation id="951339005376969845">刪除現有資料。你可以切換回 <ph name="FROM_ACCOUNT" />,重新取得現有資料。</translation>
 <translation id="95817756606698420">Chrome 可以在中國使用 <ph name="BEGIN_BOLD" />Sogou<ph name="END_BOLD" /> 搜尋。你可以在<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />中變更這項設定。</translation>
 <translation id="965817943346481315">封鎖干擾性或誤導性的網站廣告 (建議)</translation>
+<translation id="968900484120156207">你曾造訪的頁面會顯示在這裡</translation>
 <translation id="970715775301869095">還剩 <ph name="MINUTES" /> 分鐘</translation>
 <translation id="974555521953189084">如要開始同步處理,請輸入你的通關密語</translation>
 <translation id="981121421437150478">離線</translation>
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ServicificationBackgroundServiceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ServicificationBackgroundServiceTest.java
index 9316cb8..d241db4 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/ServicificationBackgroundServiceTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ServicificationBackgroundServiceTest.java
@@ -81,7 +81,7 @@
             return;
         }
 
-        try (StrictModeContext smc = StrictModeContext.allowDiskWrites()) {
+        try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
             try {
                 mMappedSpareFile = new RandomAccessFile(mSpareFile, "rw");
 
@@ -100,7 +100,7 @@
     private void closeBrowserMetricsSpareFile() {
         if (mMappedSpareFile == null) return;
 
-        try (StrictModeContext smc = StrictModeContext.allowDiskWrites()) {
+        try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
             try {
                 mMappedSpareFile.close();
             } catch (IOException e) {
@@ -119,10 +119,9 @@
     @Test
     @LargeTest
     @Feature({"ServicificationStartup"})
-    @CommandLineFlags.Add({"enable-features=NetworkService,AllowStartingServiceManagerOnly,"
-            + "WriteBasicSystemProfileToPersistentHistogramsFile"})
-    public void
-    testHistogramsPersistedWithServiceManagerOnlyStart() {
+    @CommandLineFlags.
+    Add({"enable-features=NetworkService,WriteBasicSystemProfileToPersistentHistogramsFile"})
+    public void testHistogramsPersistedWithServiceManagerOnlyStart() {
         createBrowserMetricsSpareFile();
         Assert.assertTrue(mSpareFile.exists());
 
@@ -136,7 +135,7 @@
     @Test
     @MediumTest
     @Feature({"ServicificationStartup"})
-    @CommandLineFlags.Add({"enable-features=NetworkService,AllowStartingServiceManagerOnly"})
+    @CommandLineFlags.Add({"enable-features=NetworkService"})
     public void testFullBrowserStartsAfterServiceManager() {
         startServiceAndWaitForNative(mServicificationBackgroundService);
         ServicificationBackgroundService.assertOnlyServiceManagerStarted();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuTest.java
new file mode 100644
index 0000000..d3cd091
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/RevampedContextMenuTest.java
@@ -0,0 +1,327 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.contextmenu;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.LargeTest;
+import android.support.test.filters.MediumTest;
+import android.view.KeyEvent;
+
+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.CallbackHelper;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
+import org.chromium.chrome.browser.download.DownloadTestRule;
+import org.chromium.chrome.browser.firstrun.FirstRunStatus;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
+import org.chromium.chrome.browser.tabmodel.TabModel;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.util.browser.Features;
+import org.chromium.chrome.test.util.browser.contextmenu.RevampedContextMenuUtils;
+import org.chromium.content_public.browser.test.util.Criteria;
+import org.chromium.content_public.browser.test.util.CriteriaHelper;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.content_public.browser.test.util.TestTouchUtils;
+import org.chromium.net.test.EmbeddedTestServer;
+
+import java.io.IOException;
+import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Instrumentation tests for the Revamped Context Menu.
+ */
+@RunWith(ChromeJUnit4ClassRunner.class)
+// clang-format off
+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
+        ChromeSwitches.GOOGLE_BASE_URL + "=http://example.com/"})
+@Features.EnableFeatures(ChromeFeatureList.REVAMPED_CONTEXT_MENU)
+public class RevampedContextMenuTest implements DownloadTestRule.CustomMainActivityStart {
+    // clang-format on
+    @Rule
+    public DownloadTestRule mDownloadTestRule = new DownloadTestRule(this);
+
+    private static final String TEST_PATH =
+            "/chrome/test/data/android/contextmenu/context_menu_test.html";
+
+    private EmbeddedTestServer mTestServer;
+    private String mTestUrl;
+
+    private static final String FILENAME_GIF = "download.gif";
+    private static final String FILENAME_PNG = "test_image.png";
+    private static final String FILENAME_WEBM = "test.webm";
+
+    private static final String[] TEST_FILES =
+            new String[] {FILENAME_GIF, FILENAME_PNG, FILENAME_WEBM};
+
+    @Before
+    public void setUp() throws Exception {
+        TestThreadUtils.runOnUiThreadBlocking(() -> FirstRunStatus.setFirstRunFlowComplete(true));
+    }
+
+    @Override
+    public void customMainActivityStart() throws InterruptedException {
+        mTestServer = EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext());
+        mTestUrl = mTestServer.getURL(TEST_PATH);
+        deleteTestFiles();
+        mDownloadTestRule.startMainActivityWithURL(mTestUrl);
+        mDownloadTestRule.assertWaitForPageScaleFactorMatch(0.5f);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mTestServer.stopAndDestroyServer();
+        TestThreadUtils.runOnUiThreadBlocking(() -> FirstRunStatus.setFirstRunFlowComplete(false));
+        deleteTestFiles();
+    }
+
+    @Test
+    @MediumTest
+    public void testCopyLinkURL() throws Throwable {
+        Tab tab = mDownloadTestRule.getActivity().getActivityTab();
+        RevampedContextMenuUtils.selectContextMenuItem(InstrumentationRegistry.getInstrumentation(),
+                mDownloadTestRule.getActivity(), tab, "testLink",
+                R.id.contextmenu_copy_link_address);
+
+        assertStringContains("test_link.html", getClipboardText());
+    }
+
+    @Test
+    @MediumTest
+    public void testLongPressOnImage() throws InterruptedException, TimeoutException {
+        final Tab activityTab = mDownloadTestRule.getActivity().getActivityTab();
+
+        final CallbackHelper newTabCallback = new CallbackHelper();
+        final AtomicReference<Tab> newTab = new AtomicReference<>();
+        mDownloadTestRule.getActivity().getTabModelSelector().addObserver(
+                new EmptyTabModelSelectorObserver() {
+                    @Override
+                    public void onNewTabCreated(Tab tab) {
+                        super.onNewTabCreated(tab);
+
+                        if (tab.getParentId() != activityTab.getId()) return;
+                        newTab.set(tab);
+                        newTabCallback.notifyCalled();
+
+                        mDownloadTestRule.getActivity().getTabModelSelector().removeObserver(this);
+                    }
+                });
+
+        int callbackCount = newTabCallback.getCallCount();
+
+        RevampedContextMenuUtils.selectContextMenuItem(InstrumentationRegistry.getInstrumentation(),
+                mDownloadTestRule.getActivity(), activityTab, "testImage",
+                R.id.contextmenu_open_image_in_new_tab);
+
+        try {
+            newTabCallback.waitForCallback(callbackCount);
+        } catch (TimeoutException ex) {
+            Assert.fail("New tab never created from context menu press");
+        }
+
+        // Only check for the URL matching as the tab will not be fully created in svelte mode.
+        final String expectedUrl =
+                mTestServer.getURL("/chrome/test/data/android/contextmenu/test_image.png");
+        CriteriaHelper.pollUiThread(Criteria.equals(expectedUrl, () -> newTab.get().getUrl()));
+    }
+
+    @Test
+    @MediumTest
+    public void testDismissContextMenuOnBack() throws InterruptedException, TimeoutException {
+        Tab tab = mDownloadTestRule.getActivity().getActivityTab();
+        RevampedContextMenuCoordinator menuCoordinator =
+                RevampedContextMenuUtils.openContextMenu(tab, "testImage");
+        Assert.assertNotNull("Context menu was not properly created", menuCoordinator);
+        CriteriaHelper.pollUiThread(new Criteria("Context menu did not have window focus") {
+            @Override
+            public boolean isSatisfied() {
+                return !mDownloadTestRule.getActivity().hasWindowFocus();
+            }
+        });
+
+        InstrumentationRegistry.getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
+        CriteriaHelper.pollUiThread(new Criteria("Activity did not regain focus.") {
+            @Override
+            public boolean isSatisfied() {
+                return mDownloadTestRule.getActivity().hasWindowFocus();
+            }
+        });
+    }
+
+    @Test
+    @MediumTest
+    public void testDismissContextMenuOnClick() throws InterruptedException, TimeoutException {
+        Tab tab = mDownloadTestRule.getActivity().getActivityTab();
+        RevampedContextMenuCoordinator menuCoordinator =
+                RevampedContextMenuUtils.openContextMenu(tab, "testImage");
+        Assert.assertNotNull("Context menu was not properly created", menuCoordinator);
+        CriteriaHelper.pollUiThread(new Criteria("Context menu did not have window focus") {
+            @Override
+            public boolean isSatisfied() {
+                return !mDownloadTestRule.getActivity().hasWindowFocus();
+            }
+        });
+
+        TestTouchUtils.singleClickView(
+                InstrumentationRegistry.getInstrumentation(), tab.getView(), 0, 0);
+
+        CriteriaHelper.pollUiThread(new Criteria("Activity did not regain focus.") {
+            @Override
+            public boolean isSatisfied() {
+                return mDownloadTestRule.getActivity().hasWindowFocus();
+            }
+        });
+    }
+
+    @Test
+    @MediumTest
+    public void testCopyEmailAddress() throws Throwable {
+        Tab tab = mDownloadTestRule.getActivity().getActivityTab();
+        RevampedContextMenuUtils.selectContextMenuItem(InstrumentationRegistry.getInstrumentation(),
+                mDownloadTestRule.getActivity(), tab, "testEmail", R.id.contextmenu_copy);
+
+        Assert.assertEquals("Copied email address is not correct",
+                "someone1@example.com,someone2@example.com", getClipboardText());
+    }
+
+    @Test
+    @MediumTest
+    public void testCopyTelNumber() throws Throwable {
+        Tab tab = mDownloadTestRule.getActivity().getActivityTab();
+        RevampedContextMenuUtils.selectContextMenuItem(InstrumentationRegistry.getInstrumentation(),
+                mDownloadTestRule.getActivity(), tab, "testTel", R.id.contextmenu_copy);
+
+        Assert.assertEquals("Copied tel number is not correct", "10000000000", getClipboardText());
+    }
+
+    @Test
+    @LargeTest
+    public void testSaveDataUrl()
+            throws InterruptedException, TimeoutException, SecurityException, IOException {
+        saveMediaFromContextMenu("dataUrlIcon", R.id.contextmenu_save_image, FILENAME_GIF);
+    }
+
+    @Test
+    @LargeTest
+    public void testSaveImage()
+            throws InterruptedException, TimeoutException, SecurityException, IOException {
+        saveMediaFromContextMenu("testImage", R.id.contextmenu_save_image, FILENAME_PNG);
+    }
+
+    @Test
+    @LargeTest
+    public void testSaveVideo()
+            throws InterruptedException, TimeoutException, SecurityException, IOException {
+        saveMediaFromContextMenu("videoDOMElement", R.id.contextmenu_save_video, FILENAME_WEBM);
+    }
+
+    /**
+     * Opens a link and image in new tabs and verifies the order of the tabs. Also verifies that
+     * the parent page remains in front after opening links in new tabs.
+     *
+     * This test only applies in tabbed mode. In document mode, Android handles the ordering of the
+     * tabs.
+     */
+    @Test
+    @LargeTest
+    public void testOpenLinksInNewTabsAndVerifyTabIndexOrdering()
+            throws InterruptedException, TimeoutException {
+        TabModel tabModel = mDownloadTestRule.getActivity().getCurrentTabModel();
+        int numOpenedTabs = tabModel.getCount();
+        Tab tab = mDownloadTestRule.getActivity().getActivityTab();
+        RevampedContextMenuUtils.selectContextMenuItem(InstrumentationRegistry.getInstrumentation(),
+                mDownloadTestRule.getActivity(), tab, "testLink", R.id.contextmenu_open_in_new_tab);
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        int indexOfLinkPage = numOpenedTabs;
+        numOpenedTabs += 1;
+        Assert.assertEquals(
+                "Number of open tabs does not match", numOpenedTabs, tabModel.getCount());
+
+        // Wait for any new tab animation to finish if we're being driven by the compositor.
+        final LayoutManager layoutDriver =
+                mDownloadTestRule.getActivity().getCompositorViewHolder().getLayoutManager();
+        CriteriaHelper.pollUiThread(new Criteria("Background tab animation not finished.") {
+            @Override
+            public boolean isSatisfied() {
+                return layoutDriver.getActiveLayout().shouldDisplayContentOverlay();
+            }
+        });
+
+        RevampedContextMenuUtils.selectContextMenuItem(InstrumentationRegistry.getInstrumentation(),
+                mDownloadTestRule.getActivity(), tab, "testLink2",
+                R.id.contextmenu_open_in_new_tab);
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+        int indexOfLinkPage2 = numOpenedTabs;
+        numOpenedTabs += 1;
+        Assert.assertEquals(
+                "Number of open tabs does not match", numOpenedTabs, tabModel.getCount());
+
+        // Verify the Url is still the same of Parent page.
+        Assert.assertEquals(mTestUrl, mDownloadTestRule.getActivity().getActivityTab().getUrl());
+
+        // Verify that the background tabs were opened in the expected order.
+        String newTabUrl =
+                mTestServer.getURL("/chrome/test/data/android/contextmenu/test_link.html");
+        Assert.assertEquals(newTabUrl, tabModel.getTabAt(indexOfLinkPage).getUrl());
+
+        String imageUrl =
+                mTestServer.getURL("/chrome/test/data/android/contextmenu/test_link2.html");
+        Assert.assertEquals(imageUrl, tabModel.getTabAt(indexOfLinkPage2).getUrl());
+    }
+
+    private void saveMediaFromContextMenu(
+            String mediaDOMElement, int saveMenuID, String expectedFilename)
+            throws InterruptedException, TimeoutException, SecurityException, IOException {
+        // Select "save [image/video]" in that menu.
+        Tab tab = mDownloadTestRule.getActivity().getActivityTab();
+        int callCount = mDownloadTestRule.getChromeDownloadCallCount();
+        RevampedContextMenuUtils.selectContextMenuItem(InstrumentationRegistry.getInstrumentation(),
+                mDownloadTestRule.getActivity(), tab, mediaDOMElement, saveMenuID);
+
+        // Wait for the download to complete and see if we got the right file
+        Assert.assertTrue(mDownloadTestRule.waitForChromeDownloadToFinish(callCount));
+        mDownloadTestRule.checkLastDownload(expectedFilename);
+    }
+
+    private String getClipboardText() throws Throwable {
+        final AtomicReference<String> clipboardTextRef = new AtomicReference<>();
+        mDownloadTestRule.runOnUiThread(() -> {
+            ClipboardManager clipMgr =
+                    (ClipboardManager) mDownloadTestRule.getActivity().getSystemService(
+                            Context.CLIPBOARD_SERVICE);
+            ClipData clipData = clipMgr.getPrimaryClip();
+            Assert.assertNotNull("Primary clip is null", clipData);
+            Assert.assertTrue("Primary clip contains no items.", clipData.getItemCount() > 0);
+            clipboardTextRef.set(clipData.getItemAt(0).getText().toString());
+        });
+        return clipboardTextRef.get();
+    }
+
+    private void assertStringContains(String subString, String superString) {
+        Assert.assertTrue("String '" + superString + "' does not contain '" + subString + "'",
+                superString.contains(subString));
+    }
+
+    /**
+     * Makes sure there are no files with names identical to the ones this test uses in the
+     * downloads directory
+     */
+    private void deleteTestFiles() {
+        mDownloadTestRule.deleteFilesInDownloadDirectory(TEST_FILES);
+    }
+}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadFileProviderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadFileProviderTest.java
index 87cef1ad9..38be979 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadFileProviderTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadFileProviderTest.java
@@ -17,7 +17,6 @@
 import org.mockito.MockitoAnnotations;
 
 import org.chromium.base.ContextUtils;
-import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 
@@ -48,8 +47,6 @@
     @Mock
     private DownloadDirectoryProvider.Delegate mMockDirectoryDelegate;
 
-    private CallbackHelper mUriCallbackHelper = new CallbackHelper();
-
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
@@ -66,13 +63,8 @@
      * @throws Exception
      */
     private void verifyContentUri(String filePath, Uri expected) throws Exception {
-        final Uri[] result = {null};
-        DownloadFileProvider.createContentUri(filePath, mMockDirectoryDelegate, (Uri uri) -> {
-            result[0] = uri;
-            mUriCallbackHelper.notifyCalled();
-        });
-        mUriCallbackHelper.waitForCallback();
-        Assert.assertEquals(expected, result[0]);
+        Assert.assertEquals(
+                expected, DownloadFileProvider.createContentUri(filePath, mMockDirectoryDelegate));
     }
 
     /**
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadUtilsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadUtilsTest.java
index f202d94..3cf0074 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadUtilsTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadUtilsTest.java
@@ -20,6 +20,7 @@
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.Feature;
+import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.download.ui.DownloadHistoryItemWrapper;
 import org.chromium.chrome.browser.download.ui.DownloadHistoryItemWrapper.OfflineItemWrapper;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
@@ -49,6 +50,10 @@
     @Before
     public void setUp() throws Exception {
         RecordHistogram.setDisabledForTests(true);
+
+        HashMap<String, Boolean> features = new HashMap<String, Boolean>();
+        features.put(ChromeFeatureList.DOWNLOAD_FILE_PROVIDER, false);
+        ChromeFeatureList.setTestFeatures(features);
     }
 
     @After
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/ServicificationDownloadTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/ServicificationDownloadTest.java
index d59408d..d027fbab 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/ServicificationDownloadTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/ServicificationDownloadTest.java
@@ -80,7 +80,7 @@
     @Test
     @LargeTest
     @Feature({"Download"})
-    @CommandLineFlags.Add({"enable-features=NetworkService,AllowStartingServiceManagerOnly"})
+    @CommandLineFlags.Add({"enable-features=NetworkService"})
     public void testResumeInterruptedDownload() {
         mNativeTestRule.assertOnlyServiceManagerStarted();
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchBackgroundTaskTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchBackgroundTaskTest.java
index 2cd487f0..7037614 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchBackgroundTaskTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchBackgroundTaskTest.java
@@ -42,8 +42,7 @@
 /** Unit tests for {@link PrefetchBackgroundTask}. */
 @RunWith(ChromeJUnit4ClassRunner.class)
 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
-        "enable-features=OfflinePagesPrefetching,NetworkService,AllowStartingServiceManagerOnly,"
-                + "InterestFeedContentSuggestions"})
+        "enable-features=OfflinePagesPrefetching,NetworkService,InterestFeedContentSuggestions"})
 public class PrefetchBackgroundTaskTest {
     @Rule
     public ReducedModeNativeTestRule mNativeTestRule = new ReducedModeNativeTestRule();
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java
index fc1d305..73e2a13 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java
@@ -37,6 +37,7 @@
 import android.view.View;
 
 import org.junit.After;
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -76,6 +77,7 @@
 import org.chromium.chrome.browser.suggestions.SuggestionsEventReporter;
 import org.chromium.chrome.browser.suggestions.SuggestionsRanker;
 import org.chromium.chrome.browser.suggestions.SuggestionsUiDelegate;
+import org.chromium.chrome.browser.util.FeatureUtilities;
 import org.chromium.chrome.test.support.DisableHistogramsRule;
 import org.chromium.chrome.test.util.NewTabPageTestUtils;
 import org.chromium.chrome.test.util.browser.Features;
@@ -275,6 +277,9 @@
 
     @Before
     public void setUp() {
+        // These tests fail on touchless builds, see https://crbug.com/981870.
+        Assume.assumeFalse(FeatureUtilities.isNoTouchModeEnabled());
+
         MockitoAnnotations.initMocks(this);
 
         // Ensure that NetworkChangeNotifier is initialized.
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SectionListTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SectionListTest.java
index 4a7d16f8..349b9f0 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SectionListTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SectionListTest.java
@@ -29,6 +29,7 @@
 import static org.chromium.chrome.test.util.browser.suggestions.ContentSuggestionsTestUtils.registerCategory;
 
 import org.junit.After;
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -56,6 +57,7 @@
 import org.chromium.chrome.browser.suggestions.SuggestionsEventReporter;
 import org.chromium.chrome.browser.suggestions.SuggestionsRanker;
 import org.chromium.chrome.browser.suggestions.SuggestionsUiDelegate;
+import org.chromium.chrome.browser.util.FeatureUtilities;
 import org.chromium.chrome.test.support.DisableHistogramsRule;
 import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.suggestions.ContentSuggestionsTestUtils.CategoryInfoBuilder;
@@ -100,6 +102,9 @@
 
     @Before
     public void setUp() {
+        // These tests fail on touchless builds, see https://crbug.com/981870.
+        Assume.assumeFalse(FeatureUtilities.isNoTouchModeEnabled());
+
         // Ensure that NetworkChangeNotifier is initialized.
         if (!NetworkChangeNotifier.isInitialized()) {
             NetworkChangeNotifier.init();
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSectionTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSectionTest.java
index d56acaa..95a02b35 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSectionTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSectionTest.java
@@ -32,6 +32,7 @@
 import static org.chromium.chrome.test.util.browser.suggestions.ContentSuggestionsTestUtils.createDummySuggestions;
 
 import org.junit.After;
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -61,6 +62,7 @@
 import org.chromium.chrome.browser.suggestions.SuggestionsNavigationDelegate;
 import org.chromium.chrome.browser.suggestions.SuggestionsRanker;
 import org.chromium.chrome.browser.suggestions.SuggestionsUiDelegate;
+import org.chromium.chrome.browser.util.FeatureUtilities;
 import org.chromium.chrome.test.support.DisableHistogramsRule;
 import org.chromium.chrome.test.util.NewTabPageTestUtils;
 import org.chromium.chrome.test.util.browser.Features;
@@ -114,6 +116,9 @@
 
     @Before
     public void setUp() {
+        // These tests fail on touchless builds, see https://crbug.com/981870.
+        Assume.assumeFalse(FeatureUtilities.isNoTouchModeEnabled());
+
         RecordUserAction.setDisabledForTests(true);
         MockitoAnnotations.initMocks(this);
 
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/tasks/tabgroup/TabGroupModelFilterUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/tasks/tabgroup/TabGroupModelFilterUnitTest.java
index 7d862df2..c99292531 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/tasks/tabgroup/TabGroupModelFilterUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/tasks/tabgroup/TabGroupModelFilterUnitTest.java
@@ -187,25 +187,33 @@
         return tab;
     }
 
-    private void setupTabGroupModelFilter(boolean isTabRestoreCompleted) {
+    private void setupTabGroupModelFilter(boolean isTabRestoreCompleted, boolean isIncognito) {
+        mTabs.clear();
+        doReturn(isIncognito).when(mTabModel).isIncognito();
         mTabGroupModelFilter = new TabGroupModelFilter(mTabModel);
         mTabGroupModelFilter.addTabGroupObserver(mTabGroupModelFilterObserver);
 
+        doReturn(isIncognito).when(mTab1).isIncognito();
         mTabModel.addTab(mTab1, -1, TabLaunchType.FROM_CHROME_UI);
         mTabModelObserverCaptor.getValue().didAddTab(mTab1, TabLaunchType.FROM_CHROME_UI);
 
+        doReturn(isIncognito).when(mTab2).isIncognito();
         mTabModel.addTab(mTab2, -1, TabLaunchType.FROM_CHROME_UI);
         mTabModelObserverCaptor.getValue().didAddTab(mTab2, TabLaunchType.FROM_CHROME_UI);
 
+        doReturn(isIncognito).when(mTab3).isIncognito();
         mTabModel.addTab(mTab3, -1, TabLaunchType.FROM_CHROME_UI);
         mTabModelObserverCaptor.getValue().didAddTab(mTab3, TabLaunchType.FROM_CHROME_UI);
 
+        doReturn(isIncognito).when(mTab4).isIncognito();
         mTabModel.addTab(mTab4, -1, TabLaunchType.FROM_CHROME_UI);
         mTabModelObserverCaptor.getValue().didAddTab(mTab4, TabLaunchType.FROM_CHROME_UI);
 
+        doReturn(isIncognito).when(mTab5).isIncognito();
         mTabModel.addTab(mTab5, -1, TabLaunchType.FROM_CHROME_UI);
         mTabModelObserverCaptor.getValue().didAddTab(mTab5, TabLaunchType.FROM_CHROME_UI);
 
+        doReturn(isIncognito).when(mTab6).isIncognito();
         mTabModel.addTab(mTab6, -1, TabLaunchType.FROM_CHROME_UI);
         mTabModelObserverCaptor.getValue().didAddTab(mTab6, TabLaunchType.FROM_CHROME_UI);
 
@@ -226,7 +234,7 @@
 
         setUpTab();
         setUpTabModel();
-        setupTabGroupModelFilter(true);
+        setupTabGroupModelFilter(true, false);
     }
 
     @After
@@ -236,6 +244,14 @@
     }
 
     @Test
+    public void setIncognito() {
+        setupTabGroupModelFilter(true, false);
+        setupTabGroupModelFilter(false, true);
+        assertThat(mTabGroupModelFilter.isIncognito(), equalTo(true));
+        assertThat(mTabModel.getCount(), equalTo(6));
+    }
+
+    @Test
     public void addTab_ToExistingGroup() {
         Tab newTab = prepareTab(NEW_TAB_ID, NEW_TAB_ID);
         doReturn(TAB1_ID).when(newTab).getParentId();
@@ -536,7 +552,7 @@
     @Test
     public void ignoreUnrelatedMoveTab() {
         // Simulate that the tab restoring is not yet finished.
-        setupTabGroupModelFilter(false);
+        setupTabGroupModelFilter(false, false);
 
         mTabModelObserverCaptor.getValue().didMoveTab(mTab1, POSITION1, POSITION6);
         mTabModelObserverCaptor.getValue().didMoveTab(mTab1, POSITION6, POSITION1);
@@ -622,4 +638,20 @@
         // Undo the grouped action.
         mTabGroupModelFilter.undoGroupedTab(mTab6, POSITION1, TAB1_ROOT_ID);
     }
+
+    @Test
+    public void skipRestoringStageMoveTab_Incognito() {
+        // Simulate tab model is in incognito mode, and thus tab restoring will not happen.
+        // Therefore, we should not ignore didMoveTab calls because we have already skipped the
+        // didMoveTab calls from restoring stage.
+        setupTabGroupModelFilter(false, true);
+
+        // Simulate that tab3 is going to be moved out of group.
+        mTab3.setRootId(TAB3_ID);
+
+        mTabModelObserverCaptor.getValue().didMoveTab(mTab3, POSITION3, POSITION6);
+
+        // Verify that the signal is not ignored.
+        verify(mTabGroupModelFilterObserver).didMoveTabOutOfGroup(mTab3, POSITION2);
+    }
 }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDisclosureSnackbarControllerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDisclosureSnackbarControllerTest.java
index a072385..d48ec12 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDisclosureSnackbarControllerTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDisclosureSnackbarControllerTest.java
@@ -14,6 +14,7 @@
 
 import android.content.res.Resources;
 
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -25,6 +26,7 @@
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.browser.snackbar.Snackbar;
 import org.chromium.chrome.browser.snackbar.SnackbarManager;
+import org.chromium.chrome.browser.util.FeatureUtilities;
 import org.chromium.webapk.lib.common.WebApkConstants;
 
 /**
@@ -42,6 +44,10 @@
 
     @Before
     public void setUp() throws InterruptedException {
+        // These tests are not applicable on touchless builds because snackbars/infobars are not
+        // shown on them, see https://crbug.com/981871.
+        Assume.assumeFalse(FeatureUtilities.isNoTouchModeEnabled());
+
         MockitoAnnotations.initMocks(this);
 
         doReturn("test text").when(mResources).getString(anyInt());
diff --git a/chrome/android/touchless/javatests/src/org/chromium/chrome/browser/touchless/TouchlessPreferencesTest.java b/chrome/android/touchless/javatests/src/org/chromium/chrome/browser/touchless/TouchlessPreferencesTest.java
new file mode 100644
index 0000000..af9552c
--- /dev/null
+++ b/chrome/android/touchless/javatests/src/org/chromium/chrome/browser/touchless/TouchlessPreferencesTest.java
@@ -0,0 +1,80 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.touchless;
+
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.view.ViewGroup;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.chromium.base.test.util.Feature;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.preferences.Preferences;
+import org.chromium.chrome.browser.preferences.PreferencesTest;
+import org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences;
+import org.chromium.chrome.browser.preferences.website.SiteSettingsCategory;
+import org.chromium.chrome.browser.preferences.website.SiteSettingsPreferences;
+import org.chromium.chrome.browser.preferences.website.SiteSettingsTestUtils;
+import org.chromium.chrome.test.ChromeBrowserTestRule;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.util.browser.Features;
+
+/**
+ * This class tests touchless-specific modifications that were applied to preferences.
+ */
+@RunWith(ChromeJUnit4ClassRunner.class)
+@Features.EnableFeatures(ChromeFeatureList.CAPTION_SETTINGS)
+public class TouchlessPreferencesTest {
+    @Rule
+    public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule();
+
+    @Test
+    @SmallTest
+    @Feature({"Preferences"})
+    public void testOptionsMenu() throws Exception {
+        final Preferences activity =
+                PreferencesTest.startPreferences(InstrumentationRegistry.getInstrumentation(),
+                        SiteSettingsPreferences.class.getName());
+        Assert.assertTrue(activity instanceof TouchlessPreferences);
+
+        ViewGroup actionBarView = activity.findViewById(R.id.action_bar);
+        Assert.assertEquals("Options menu should not have any items in touchless mode", 0,
+                ((ViewGroup) actionBarView.getChildAt(1)).getChildCount());
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"Preferences"})
+    public void testNoClipboardInSiteSettings() throws Exception {
+        final Preferences activity =
+                PreferencesTest.startPreferences(InstrumentationRegistry.getInstrumentation(),
+                        SiteSettingsPreferences.class.getName());
+        Assert.assertTrue(activity instanceof TouchlessPreferences);
+
+        SiteSettingsPreferences preferences =
+                (SiteSettingsPreferences) activity.getMainFragmentCompat();
+        Assert.assertNull(preferences.findPreference(
+                SiteSettingsCategory.preferenceKey(SiteSettingsCategory.Type.CLIPBOARD)));
+    }
+
+    @Test
+    @SmallTest
+    @Feature({"Preferences"})
+    public void testNoThirdPartyCookiesInSiteSettings() throws Exception {
+        final Preferences activity =
+                SiteSettingsTestUtils.startSiteSettingsCategory(SiteSettingsCategory.Type.COOKIES);
+        Assert.assertTrue(activity instanceof TouchlessPreferences);
+
+        SingleCategoryPreferences cookiesPreferences =
+                (SingleCategoryPreferences) activity.getMainFragment();
+        Assert.assertNull(cookiesPreferences.findPreference(
+                SingleCategoryPreferences.THIRD_PARTY_COOKIES_TOGGLE_KEY));
+    }
+}
\ No newline at end of file
diff --git a/chrome/android/touchless/touchless_java_sources.gni b/chrome/android/touchless/touchless_java_sources.gni
index 0b9c951..055b84f 100644
--- a/chrome/android/touchless/touchless_java_sources.gni
+++ b/chrome/android/touchless/touchless_java_sources.gni
@@ -72,6 +72,7 @@
   "touchless/javatests/src/org/chromium/chrome/browser/touchless/NoTouchActivityTest.java",
   "touchless/javatests/src/org/chromium/chrome/browser/touchless/TouchlessNavigationRecorderTest.java",
   "touchless/javatests/src/org/chromium/chrome/browser/touchless/TouchlessNewTabPageMediatorTest.java",
+  "touchless/javatests/src/org/chromium/chrome/browser/touchless/TouchlessPreferencesTest.java",
 ]
 
 touchless_junit_test_java_sources = [
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb
index 7550da62..ceae617 100644
--- a/chrome/app/resources/chromium_strings_hi.xtb
+++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -26,7 +26,7 @@
 <translation id="1881322772814446296">आप प्रबंधित खाते से साइन इन कर रहे हैं और उसके एडमिन को अपनी क्रोमियम प्रोफ़ाइल पर नियंत्रण दे रहे हैं. आपका क्रोमियम डेटा, जैसे आपके ऐप्लिकेशन, बुकमार्क, इतिहास, पासवर्ड, और दूसरे सेटिंग स्थायी रूप से <ph name="USER_NAME" /> से जुड़ जाएंगे. आप Google खाता डैशबोर्ड के ज़रिए इस डेटा को मिटा सकेंगे, लेकिन दूसरे किसी खाते से इस डेटा को जोड़ नहीं सकेंगे. आप अपने मौजूदा क्रोमियम डेटा को अलग रखने के लिए वैकल्पिक रूप से एक नई प्रोफ़ाइल बना सकते हैं. <ph name="LEARN_MORE" /></translation>
 <translation id="1911763535808217981">इसे बंद करके, आप क्रोमियम में साइन इन किए बिना Gmail जैसी Google साइटों में साइन इन कर सकते हैं</translation>
 <translation id="1929939181775079593">क्रोमियम अनुत्तरदायी है. अभी रीलॉन्‍च करें?</translation>
-<translation id="1966382378801805537">क्रोमियम, डिफ़ॉल्ट ब्राउज़र को निर्धारित या सेट नहीं कर सकता</translation>
+<translation id="1966382378801805537">क्रोमियम, डिफ़ॉल्ट ब्राउज़र को तय या सेट नहीं कर सकता</translation>
 <translation id="2008474315282236005">ऐसा करने से इस डिवाइस से 1 आइटम मिट जाएगा. बाद में अपना डेटा पाने के लिए, Chromium में <ph name="USER_EMAIL" /> के रूप में साइन इन करें.</translation>
 <translation id="2117378023188580026">आपके एडमिन का कहना है कि यह अपडेट लागू करने के लिए, आप क्रोमियम को फिर से लॉन्च करें</translation>
 <translation id="2119636228670142020">&amp;क्रोमियम OS के बारे में</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index aa66285..b8eea69 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">ምናባዊ ማሽንን ማስጀመር አልተቻለም። እባክዎ እንደገና ይሞክሩ።</translation>
 <translation id="1089439967362294234">የይለፍ ቃል ቀይር</translation>
 <translation id="1090126737595388931">ምንም የሚያሂዱ የጀርባ መተግበሪያዎች የሉም</translation>
+<translation id="1090290614672149983">ወደ ኦርጂናል ፋይል ለውጦች ይቀመጡ?</translation>
 <translation id="1090918500949388876">የእርስዎ ማያ ገጽ በሚበራበት ጊዜ በማንኛውም ጊዜ «Ok Google» ባሉ ቁጥር ረዳትዎን ይድረሱበት።</translation>
 <translation id="1091767800771861448">ለመዝለል ESCAPEን ይጫኑ (ይፋዊ ላልሆኑ ግንባታዎች ብቻ)።</translation>
 <translation id="1093457606523402488">የሚታዩ አውታረ መረቦች፦</translation>
 <translation id="1094607894174825014">በሚከተለው ላይ የማንብብ ወይም የመጻፍ ክወና ልክ ባልሆነ ማሸጋሸጊያ ነው የተጠየቀው፦ «<ph name="DEVICE_NAME" />»።</translation>
 <translation id="1097658378307015415">ከመግባትዎ በፊት አውታረ መረብ <ph name="NETWORK_ID" />ን ለማንቃት እባክዎ እንደ እንግዳ ይግቡ</translation>
+<translation id="110029732810301672">ይህ ትር ወደ ኦርጂናል ፋይሎች ለማስቀመጥ ተፈቅዶለታል።</translation>
 <translation id="1103523840287552314">ሁልጊዜ <ph name="LANGUAGE" />ን መተርጎም</translation>
 <translation id="1108600514891325577">&amp;አቁም</translation>
 <translation id="1110155001042129815">ጠብቅ</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">የጸሐይ መነጽሮች</translation>
 <translation id="1151917987301063366"><ph name="HOST" /> ሁልጊዜ ዳሳሾችን እንዲደርስ ፍቀድ</translation>
 <translation id="1153356358378277386">የተጣመሩ መሣሪያዎች</translation>
-<translation id="1156488781945104845">የአሁኑ ሰዓት</translation>
 <translation id="1161575384898972166">የደንበኛ እውቅና ማረጋገጫውን ለመላክ እባክዎ <ph name="TOKEN_NAME" /> ውስጥ ይግቡ።</translation>
 <translation id="1163931534039071049">የፍሬም መነሻ &amp;አሳይ</translation>
 <translation id="1164674268730883318">Smart Lock ለ<ph name="DEVICE_TYPE" /> ያጥፉ?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">የAdobe Flash Player ማከማቻ ቅንብሮች</translation>
 <translation id="1274997165432133392">ኩኪዎች እና የሌላ ጣቢያ ውሂብ</translation>
 <translation id="127668050356036882">ሁሉንም የእርስዎ መስኮቶች ይዝጉ</translation>
-<translation id="1277908057200820621">የመሣሪያ ዝርዝርን ይመልከቱ</translation>
 <translation id="1280820357415527819">የተንቀሳቃሽ ስልክ አውታረ መረቦችን በመፈለግ ላይ</translation>
 <translation id="1285320974508926690">ይህን ጣቢያ በጭራሽ አትተርጉም</translation>
 <translation id="1285484354230578868">ውሂብ በእርስዎ Google Drive መለያ ላይ ያከማቹ</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">የቤት አውታረ መረብ፣ የሌላን እየተጠቀመ አይደለም</translation>
 <translation id="1316136264406804862">በመፈለግ ላይ...</translation>
 <translation id="1316495628809031177">ስምረት ባለበት ቆሟል</translation>
+<translation id="1317637799698924700">የእርስዎ መትከያ ጣቢያ በ USB Type-C ተኳዃኝ ሁነታ ውስጥ ይሠራል።</translation>
 <translation id="1322046419516468189">በእርስዎ <ph name="SAVED_PASSWORDS_STORE" /> ውስጥ የተቀመጡ የይለፍ ቃላትን ይመልከቱ እና ያስተዳድሩ</translation>
 <translation id="1326317727527857210">ትሮችዎን ከሌሎች መሣሪያዎችዎ ለማግኘት ወደ Chrome ይግቡ።</translation>
 <translation id="1327074568633507428">በGoogle ደመና ህትመት ላይ ያለ አታሚ</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">የእርስዎ <ph name="BEGIN_LINK" />አሳሽ የሚተዳደረው<ph name="END_LINK" /> በ<ph name="ENROLLMENT_DOMAIN" /> ነው</translation>
 <translation id="1366177842110999534">የLinux መሣሪያዎች፣ አርታዒዎች፣ እና IDEዎች በእርስዎ <ph name="DEVICE_TYPE" /> ላይ ያሂዱ። &lt;a target="_blank" href="<ph name="URL" />"&gt;የበለጠ ለመረዳት&lt;/a&gt;</translation>
 <translation id="1367951781824006909">ፋይል ይምረጡ</translation>
+<translation id="1370749010280229230">ወደ መትከያው የተገናኘው ማሳያ ችግር አለበት</translation>
 <translation id="1371301976177520732">የእርስዎ ዕልባቶች፣ ታሪክ እና ተጨማሪ ነገሮች በሁሉም መሣሪያዎችዎ ላይ</translation>
 <translation id="1372841398847029212">ከመለያዎ ጋር ያስምሩ</translation>
 <translation id="1374844444528092021">በ«<ph name="NETWORK_NAME" />» አውታረ መረብ የተፈለገው የእውቅና ማረጋገጫ ወይም አልተጫነም ወይም ከአሁን በኋላ እሴት ያለው አይደለም። እባክዎ አዲስ የእውቅና ማረጋገጫ ያግኙና እንደገና ለመገናኘት ይሞክሩ።</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">ድረ-ገጽ፣ ነጠላ ፋይል</translation>
 <translation id="1451917004835509682">ቁጥጥር የሚደረግበት ግለሰብን ያክሉ</translation>
 <translation id="1454223536435069390">ቅጽበታዊ ገጽ እይታ አ&amp;ንሳ</translation>
+<translation id="1458243790901188746">{0,plural, =1{አቃፊ፦ <ph name="DIRECTORIES" />}one{አቃፊዎች፦ <ph name="DIRECTORIES" />}other{አቃፊዎች፦ <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">በቅጥያዎች የታከሉ የፍለጋ ፕሮግራሞች</translation>
 <translation id="146000042969587795">ይህ ፍሬም ታግዷል። ምክንያቱም ደኅንነቱ ያልተጠበቀ ይዘት ይዟል</translation>
 <translation id="146219525117638703">ONC ሁኔታ</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">የግቤት አማራጮችን አሳይ</translation>
 <translation id="1651008383952180276">ተመሳሳዩ የይለፍ ሐረጉን ሁለት ጊዜ ማስገባት አለብዎት</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{ከማንኛውም ቦታ ሆነው ማተም እንዲችሉ አታሚውን ወደ Google Cloud አታሚ ያክሉ።}one{ከማንኛውም ቦታ ሆነው ማተም እንዲችሉ # አታሚዎችን ወደ Google Cloud አታሚ ያክሉ።}other{ከማንኛውም ቦታ ሆነው ማተም እንዲችሉ # አታሚዎችን ወደ Google Cloud አታሚ ያክሉ።}}</translation>
+<translation id="1656528038316521561">የበስተጀርባ ብርሃን-ከልነት</translation>
 <translation id="1657406563541664238">የአጠቃቀም ስታቲክሶችን እና የስንኩል ሪፖርቶችን ወደ Google በቀጥታ በመላክ <ph name="PRODUCT_NAME" />ን የተሻለ ለማድረግ እገዛ ያድርጉ።</translation>
 <translation id="1658424621194652532">ይህ ገጽ ማይክሮፎንዎን እየደረሰበት ነው።</translation>
 <translation id="1660204651932907780">ጣቢያዎች ድምጽን እንዲያጫውቱ ፍቀድ (የሚመከር)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> የደህንነት ቁልፍዎን ስሪት እና ሞዴል ማየት ይፈልጋል</translation>
 <translation id="1679068421605151609">የአዘጋጅ መሳሪያዎች</translation>
 <translation id="1679806121152819234">PluginVm</translation>
+<translation id="1679810534535368772">እርግጠኛ ነዎት መውጣት ይፈልጋሉ?</translation>
 <translation id="167983332380191032">የአስተዳደር አገልግሎት የኤችቲቲፒ ስህተትን ልኳል።</translation>
 <translation id="1680849702532889074">የእርስዎን የLinux መተግበሪያ መጫን ወቅት ስህተት አጋጥሟል።</translation>
 <translation id="16815041330799488">ጣቢያዎች ወደ ቅንጥብ ሰሌዳው የተቀዱ ጽሑፍን እና ምስሎችን እንዲመለከቱ አትፍቀድ</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">የተጠበቀ ሚዲያ ለዪ</translation>
 <translation id="175196451752279553">የተ&amp;ዘጋውን ትር ዳግም ክፈት</translation>
 <translation id="1753905327828125965">በይበልጥ የተጎበኙ</translation>
+<translation id="1755601632425835748">የጽሑፍ መጠን</translation>
 <translation id="1756681705074952506">የግቤት ስልት</translation>
 <translation id="1757301747492736405">ማራገፍ በመጠባበቅ ላይ</translation>
 <translation id="175772926354468439">ገጽታን አንቃ</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;አሳንስ</translation>
 <translation id="1919345977826869612">ማስታወቂያዎች</translation>
 <translation id="1919814239594435008">ከማጠሪያ የወጣ ተሰኪ ተፈቅዷል</translation>
+<translation id="1920390473494685033">እውቂያዎች</translation>
 <translation id="1921050530041573580">ከመልዕክቶች ጋር የእርስዎን ስልክ ያጣምሩ</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">በ<ph name="IDS_SHORT_PRODUCT_NAME" /> ውስጥ የGoogle ዘመናዊ ነገሮችን ያግኙ</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">ማንነት የማያሳውቅ ትር፦ <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">በ<ph name="PEPPER_PLUGIN_DOMAIN" /> ላይ ያለው <ph name="PEPPER_PLUGIN_NAME" /> ኮምፒውተርዎን መድረስ ይፈልጋል</translation>
 <translation id="2178614541317717477">CA Compromise</translation>
+<translation id="2179849162388791084">ከእርስዎ የተሰናከለ የደህንነት ቁልፍ በመለያ መግቢያ ውሂብን በመሰብሰብ ላይ።</translation>
 <translation id="218070003709087997">ስንት ቅጂዎች መታተም እንዳለባቸው ለማመላከት ቁጥር ይጠቀሙ (ከ1 እስከ 999)።</translation>
 <translation id="2184515124301515068">Chrome ጣቢያዎች መቼ ድምጽን ማጫወት እንደሚችሉ እንዲመርጥ ይፍቀዱ (የሚመከር)</translation>
 <translation id="2187895286714876935">የአገልጋይ ዕውቅና ማረጋገጫ ስህተት</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">ሁሉም ኩኪዎች እና የጣቢያ ውሂብ</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 ንጥል ተቀድቷል}one{# ንጥሎች ተቀድተዋል}other{# ንጥሎች ተቀድተዋል}}</translation>
 <translation id="2278562042389100163">የአሳሻ መስኮት ክፈት</translation>
-<translation id="2279874276457403668">በአንድ ጊዜ አንድ ክፍለ-ጊዜ ብቻ ነው ሊፈጠር የሚችለው።</translation>
 <translation id="2280486287150724112">የቀኝ ህዳግ</translation>
 <translation id="2282146716419988068">የጂፒዩ ሂደት</translation>
 <translation id="2282155092769082568">የራስ-ውቅር ዩአርኤል፦</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">የማያ ገጽ ቁልፍ ማስታወሻዎች በራስ-ሰር ወደ <ph name="LOCK_SCREEN_APP_NAME" /> ይቀመጣሉ። የእርስዎ በጣም የቅርብ ጊዜው ማስታወሻ በማያ ገጽ ቁልፍ ላይ ይቀራል።</translation>
 <translation id="2353297238722298836">ካሜራ እና ማይክሮፎን ይፈቀዳሉ</translation>
 <translation id="2356070529366658676">ጠይቅ</translation>
-<translation id="2357949918965361754">ከChrome የመጡ ይዘቶችን በእርስዎ ቴሌቪዥን ወይም በሌሎች መሣሪያዎች ላይ ለማሳየት ይህን ባሕሪ መጠቀም ይችላሉ።</translation>
 <translation id="2359345697448000899">በመሣሪያዎች ምናሌ ውስጥ ቅጥያዎች የሚለውን ጠቅ በማድረግ ቅጥያዎችዎን ያቀናብሩ።</translation>
 <translation id="2359808026110333948">ቀጥል</translation>
 <translation id="236117173274098341">አትባ</translation>
@@ -964,6 +970,7 @@
 <translation id="2436720498717686157">የእርስዎ ድርጅት አሁኑኑ ከዚህ መሣሪያ ዝማኔን ይጠይቃል</translation>
 <translation id="2439545803278355377">አዲሱን የእርስዎ ፒን ያስገቡ። ፒን ቢያንስ የአራት ቁምፊዎች ርዝመት ሊኖረው ይገባል እና ፊደላትን፣ ቁጥሮችን እና ሌሎች ቁምፊዎችን ይይዛል።</translation>
 <translation id="2440604414813129000">ም&amp;ንጭ አሳይ</translation>
+<translation id="2442916515643169563">የጽሑፍ ጥላ</translation>
 <translation id="2444119669991608829">ገጽ በ<ph name="LANGUAGE" /> አይደለም?</translation>
 <translation id="2445081178310039857">የቅጥያ ስርወ ማውጫ ያስፈልጋል።</translation>
 <translation id="2445484935443597917">አዲስ መገለጫ ፍጠር</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">ከኋላ ያለሆነ</translation>
 <translation id="2739191690716947896">አርም</translation>
 <translation id="2739240477418971307">የተደራሽነት ቅንብሮችዎን ይቀይራል</translation>
+<translation id="274029851662193272">የተደበረ</translation>
 <translation id="2740393541869613458">ክትትል የሚደረግበት ተጠቃሚ የጎበኛቸውን ድር ጣቢያዎች ይከልሱ እና</translation>
 <translation id="2741912629735277980">በመለያ መግቢያ ማያ ገጽ ላይ ዩአይ አሳይ</translation>
 <translation id="274290345632688601">የLinux መተግበሪያዎችን እና ፋይሎችን ወደ ነበሩበት በመመለስ ላይ</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">አቋራጭ አስቀድሞ አለ</translation>
 <translation id="2807517655263062534">እርስዎ የሚያወርዷቸው ፋይሎች እዚህ ይመጣሉ</translation>
 <translation id="2809586584051668049">እና <ph name="NUMBER_ADDITIONAL_DISABLED" /> ተጨማሪ</translation>
+<translation id="2812049959647166806">Thunderbolt አይደገፍም</translation>
 <translation id="2812944337881233323">ዘግተው ወጥተው እና ተመልሰው ለመግባት ይሞክሩ</translation>
 <translation id="2812989263793994277">ምንም አይነት ምስል አታሳይ</translation>
 <translation id="281390819046738856">ጥያቄ ሊፈረም አልተቻለም።</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">አቅራቢ</translation>
 <translation id="2844169650293029770">USB-C መሣሪያ (የግራ ጎን የፊት ወደብ)</translation>
 <translation id="2845382757467349449">ሁልጊዜ የዕልባቶች አሞሌን አሳይ</translation>
-<translation id="2847759467426165163">ይውሰዱ ወደ</translation>
 <translation id="284805635805850872">ጎጂ ሶፍትዌር ይወገድ?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">ማጽዳት አልተሳካም</translation>
@@ -1296,6 +1304,7 @@
 የአገልጋይ መልዕክት፦ <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">የሚዲያ ማዕከለ ስዕላት በአቃፊ ያክሉ</translation>
 <translation id="2910318910161511225">ከአውታረ መረብ ጋር ያገናኙና እንደገና ይሞክሩ</translation>
+<translation id="2910518940971897750">ወደ ኦርጂናል ፋይል አስቀምጥ</translation>
 <translation id="2913331724188855103">ጣቢያዎች የኩኪ ውሂብ እንዲያስቀምጡ እና እንዲያነቡ ይፍቀዱ (የሚመከር)</translation>
 <translation id="2915102088417824677">የእንቅስቃሴ ምዝግብ ማስታወሻን ይመልከቱ</translation>
 <translation id="2915873080513663243">ራስ-ቅኝት</translation>
@@ -1360,12 +1369,14 @@
 <translation id="3013291976881901233">የMIDI መሣሪያዎች</translation>
 <translation id="3015639418649705390">አሁን ዳግም ያስጀምሩ</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> በራስ ሰር ሊዋቀር አልተቻለም። የላቀ አታሚ ዝርዝሮችን እባክዎ ይጥቀሱ።</translation>
+<translation id="3016381065346027039">ምንም ምዝግብ ግቤቶች የሉም</translation>
 <translation id="3016641847947582299">ክፍለ አካል ተዘምኗል</translation>
 <translation id="3016780570757425217">የእርስዎን መገኛ አካባቢ ይወቁ</translation>
 <translation id="3017079585324758401">ጀርባ</translation>
 <translation id="3020183492814296499">አቋራጮች</translation>
 <translation id="3020990233660977256">መለያ ቁጥር፦ <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">ቢራቢሮ</translation>
+<translation id="3021408157810018664">ለውጦች ወደ ኦርጂናል ፋይሎች ይቀመጡ?</translation>
 <translation id="3021426244864538700">የዚህ ጣቢያ ውሂብን መድረስ</translation>
 <translation id="3021678814754966447">የፍሬም መነሻ &amp;አሳይ</translation>
 <translation id="3022978424994383087">አልሰማሁትም።</translation>
@@ -1458,6 +1469,7 @@
 <translation id="3170072451822350649">እንዲሁም መግባቱን ትተው <ph name="LINK_START" />እንደ እንግዳ ማሰስ<ph name="LINK_END" /> ይችላሉ።</translation>
 <translation id="3172045848207518317">አንድ ጣቢያ የቪዲዮ ግቤትን እየደረሰ ነው</translation>
 <translation id="3177909033752230686">የገጽ ቋንቋ፦</translation>
+<translation id="3179982752812949580">የጽሑፍ ቅርጸ ቁምፊ</translation>
 <translation id="3181954750937456830">ደኅንነቱ የተጠበቀ አሰሳ (እርስዎን እና የእርስዎን መሣሪያ ከአደገኛ ጣቢያዎች ጥበቃ ያደርግላችኋል)</translation>
 <translation id="3182749001423093222">ፊደል አራሚ</translation>
 <translation id="3183139917765991655">የመገለጫ አስመጪ</translation>
@@ -1510,7 +1522,6 @@
 <translation id="3275778913554317645">እንደ መስኮት ክፈት</translation>
 <translation id="3278001907972365362">የእርስዎ Google መለያ(ዎች) ትኩረት ይፈልጋል(ሉ)</translation>
 <translation id="3279230909244266691">ይህ ሂደት ጥቂት ደቂቃዎች ሊወስድ ይችላል። ምናባዊ ማሽኑን በመጀመር ላይ።</translation>
-<translation id="3279741024917655738">የሙሉ ገጽ ዕይታ ቪዲዮዎችን አሳይ በርቷል</translation>
 <translation id="3280237271814976245">አስቀምጥ &amp;እንደ…</translation>
 <translation id="3280243678470289153">በChrome ውስጥ ይቆዩ</translation>
 <translation id="3281892622610078515">የሚገለሉ ፋይሎች እና ፕሮግራሞች፦</translation>
@@ -1532,7 +1543,7 @@
 <translation id="3303855915957856445">ምንም የፍለጋ ውጤቶች አልተገኙም</translation>
 <translation id="3305389145870741612">ቅርጸት የመስራት ሂደቱ አንድ ሁለት ሰከንዶች ሊወስድ ይችላል። እባክዎ ይጠብቁ።</translation>
 <translation id="3305661444342691068">PDF በቅድመ እይታ ክፈት</translation>
-<translation id="3306684685104080068">እንደ Google Hangouts ወዳሉ በደመና ላይ ለተመሠረቱ አገልግሎቶች cast ማድረግን ያንቁ።</translation>
+<translation id="3307871847038842490">ይህ ገጽ ወደ ኦርጂናል ፋይሎች ለማስቀመጥ ተፈቅዶለታል።</translation>
 <translation id="3308006649705061278">ድርጅታዊ መስፈርት (OU)</translation>
 <translation id="3308116878371095290">ይህ ገጽ ኩኪዎችን ከማቀናጀት ተከልክሏል።</translation>
 <translation id="3308134619352333507">አዘራር ደብቅ</translation>
@@ -1638,7 +1649,6 @@
 <translation id="3462413494201477527">የመለያ ቅንብር ይተው?</translation>
 <translation id="3464012987031883895">አንድ ጣቢያ የኦዲዮ ግቤትን እየደረሰ ነው</translation>
 <translation id="346431825526753">ይሄ በ<ph name="CUSTODIAN_EMAIL" /> የሚቀናበር የህጻናት መለያ ነው።</translation>
-<translation id="3468275649641751422">የቪዲዮ ወይም የኦዲዮ ፋይል ዥረት ይልቀቁ</translation>
 <translation id="3468999815377931311">የAndroid ስልክ</translation>
 <translation id="3470442499439619530">ይህን ተጠቃሚ አስወግድ</translation>
 <translation id="3473479545200714844">የማያ ገጽ ማጉያ</translation>
@@ -1661,6 +1671,7 @@
 <translation id="3496213124478423963">አሳንስ</translation>
 <translation id="3497560059572256875">Doodle አጋራ</translation>
 <translation id="3505030558724226696">የመሣሪያ መዳረሻ ሻር</translation>
+<translation id="3505635633742443645">የ USB Type-C ወደቡ ለቪዲዮ ውጽአት ጥቅም ላይ በሚውልበት ጊዜ የእርስዎ መትከያ ኤችዲኤምአይ ወደብ ጥቅም ላይ ሊውል አይችልም። ከሚከተሉት ማሳያዎች ለአንዱ የተለየ ወደብ እባክዎ ይጠቀሙ።</translation>
 <translation id="3507421388498836150">ለ«<ph name="EXTENSION_NAME" />» አሁን ያሉት ፈቃዶች</translation>
 <translation id="3507888235492474624">የብሉቱዝ መሣሪያዎችን ዳግም ቃኝ</translation>
 <translation id="3508920295779105875">ሌላ አቃፊ ምረጥ…</translation>
@@ -1713,6 +1724,7 @@
 <translation id="3576324189521867626">በተሳካ ሁኔታ ተጭኗል</translation>
 <translation id="3578594933904494462">የዚህ ትር ይዘት በመጋራት ላይ ነው።</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; የ&lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; አታሚ እርስዎ ባለቤት ለሆኑበት ቡድን ማጋራት ይፈልጋሉ፦ &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;። ከተቀበሉ ሁሉም የቡድን አባላት ወደ አታሚው ማተም ይችላሉ።</translation>
+<translation id="357889014807611375">የተመጠነ Wi-Fi</translation>
 <translation id="3584169441612580296">በኮምፒውተርዎ ላይ ያሉ ፎቶዎችን፣ ሙዚቃን እና ሌላ ማህደረመረጃ ያነብባል እና ይቀይራል</translation>
 <translation id="3587482841069643663">ሁሉም</translation>
 <translation id="358796204584394954">ለማጣመር ይህን ኮድ በ«<ph name="DEVICE_NAME" />» ላይ ይተይቡ፦</translation>
@@ -1723,6 +1735,7 @@
 <translation id="359283478042092570">አስገባ</translation>
 <translation id="3593965109698325041">የሰርቲፊኬት ስም እገዳዎች</translation>
 <translation id="3596235046596950091">የደመና አገልግሎቶችን አንቃ</translation>
+<translation id="3599221874935822507">የተነሣ</translation>
 <translation id="3599863153486145794">ታሪክን በመለያ ከገቡ ሁሉም መሣሪያዎች ላይ ያጸዳል። የእርስዎ Google መለያ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ላይ ሌሎች የአሰሳ ታሪክ ዓይነቶች ሊኖረው ይችላል</translation>
 <translation id="3600051066689725006">የድር ጥያቄ መረጃ</translation>
 <translation id="3600792891314830896">ድምጽን በሚያጫውቱ ጣቢያዎች ላይ ድምጸ-ከል አድርግ</translation>
@@ -1737,6 +1750,7 @@
 <translation id="3612673635130633812">የወረደው በ&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; ነው</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" />ን አሳይ</translation>
 <translation id="3613422051106148727">&amp;አዲስ ትር ውስጥ ክፈት</translation>
+<translation id="3615073365085224194">የጣት አሻራ ዳሳሹን በእርስዎ ጣት ይንኩት</translation>
 <translation id="3616113530831147358">ድምጽ</translation>
 <translation id="3616741288025931835">&amp;የአሰሳ ውሂብ አጽዳ…</translation>
 <translation id="3617891479562106823">ዳራዎች አይገኙም። ቆይተው እንደገና ይሞክሩ።</translation>
@@ -1818,7 +1832,6 @@
 <translation id="3719826155360621982">መነሻ ገጽ</translation>
 <translation id="3720996970802414353">ለማንኛውም ቀይር</translation>
 <translation id="3722108462506185496">ምናባዊ ማሽንን ማስጀመር አልተቻለም። እባክዎ እንደገና ይሞክሩ።</translation>
-<translation id="3723158278575423087">በChromium ውስጥ እንኳን ወደ የCast ተሞክሮ በደህና መጡ!</translation>
 <translation id="3725367690636977613">ገፆች</translation>
 <translation id="3726137731714254362">አቃፊዎችን ከዚህ ማስወገድ ማጋራትን ያቆማል፣ ነገር ግን ፋይሎችን አይሰርዝም።</translation>
 <translation id="3727148787322499904">ይህን ቅንብር መቀየር በሁሉም የተጋሩ አውታረ መረቦች ላይ ተጽዕኖ አለው</translation>
@@ -1853,7 +1866,6 @@
 <translation id="3764314093345384080">ዝርዝር የግንብ መረጃ</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{በዩኤስቢ መሣሪያ መልዕክት ይለዋወጡ}one{በ# ዩኤስቢ መሣሪያዎች መልዕክት ይለዋወጡ}other{በ# ዩኤስቢ መሣሪያዎች መልዕክት ይለዋወጡ}}</translation>
 <translation id="3765246971671567135">የቅንጭብ ማሳያ ሁነታ መመሪያን ከመስመር ውጭ ማንበብ አልተቻለም።</translation>
-<translation id="3766223500670287046">የሩቅ ማያ ገጽ</translation>
 <translation id="3768037234834996183">የእርስዎን ምርጫዎች በማመሳሰል ላይ...</translation>
 <translation id="377050016711188788">አይስክሬም</translation>
 <translation id="3771294271822695279">የቪዲዮ ፋይሎች</translation>
@@ -1926,7 +1938,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">ያንሱ፣ ከዚያ እንደገና ይንኩ</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />፦ ማሳመር ባለበት ቆሟል</translation>
-<translation id="3862134173397075045">እንኳን ወደ በChrome ውስጥ የCast ተሞክሮ በደህና መጡ!</translation>
 <translation id="3862693525629180217">በአብሮገነብ ዳሳሽ በኩል አረጋግጥ</translation>
 <translation id="3862788408946266506">የ«kiosk_only» ዝርዝር ሰነድ አይነታ ያለው መተግበሪያ በChrome OS ኪዮስክ ሁኔታ ላይ መጫን አለበት።</translation>
 <translation id="3865414814144988605">የምስል ጥራት</translation>
@@ -1975,6 +1986,7 @@
 <translation id="3926002189479431949">Smart Lock ስልክ ተለውጧል</translation>
 <translation id="3927932062596804919">ከልክል</translation>
 <translation id="3930737994424905957">መሣሪያዎችን በመፈለግ ላይ</translation>
+<translation id="3930968231047618417">የዳራ ቀለም</translation>
 <translation id="3933283459331715412">የተሰረዘው የ<ph name="USERNAME" /> ይለፍ ቃል ወደነበረበት ይመልሱ</translation>
 <translation id="3936390757709632190">&amp;ተሰሚ/ኦዲዮ በአዲስ ትር ክፈት</translation>
 <translation id="3936925983113350642">የመረጡት የይለፍ ቃል ይህን የዕውቅና ማረጋገጫ በኋላ ላይ ለማስመለስ ያስፈልጋል።  እባክዎ ደህንነቱ በተጠበቀ ቦታ ላይ ይመዝግቡት።</translation>
@@ -1994,6 +2006,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">ከIE የመጣ</translation>
 <translation id="3950820424414687140">ይግቡ</translation>
+<translation id="3950828138786918475">ይህ ትር በእርስዎ መሣሪያ ላይ አቃፊን ለማንበብ ተፈቅዶለታል።</translation>
 <translation id="3954354850384043518">በሂደት ላይ</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> ኸርዝ)</translation>
 <translation id="3954953195017194676">ምንም በቅርብ ጊዜ የተቀረጹ WebRTC ምዝግብ ማስታወሻዎች የለዎትም።</translation>
@@ -2012,6 +2025,7 @@
 <translation id="397105322502079400">በማስላት ላይ...</translation>
 <translation id="3975565978598857337">ለማከማቸት አገልጋይን ማግኘት አልተሳካም</translation>
 <translation id="397703832102027365">በማጠናቀቅ ላይ...</translation>
+<translation id="3977886311744775419">ራስሰር ዝማኔዎች በዚህ ዓይነቱ አውታረ መረብ ላይ አይወርድም ሆኖም ግን በእጅ ዝማኔዎችን መፈለግ ይችላሉ።</translation>
 <translation id="3979395879372752341">አዲስ ቅጥያ ታክሏል (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" />ን አንቃ</translation>
 <translation id="3981760180856053153">ልክ ያልሆነ የማስቀመጥ አይነት ገብቷል።</translation>
@@ -2149,6 +2163,7 @@
 <translation id="4194570336751258953">በመጠኑ-ጠቅ ማድረግን አንቃ</translation>
 <translation id="4195643157523330669">በአዲስ ትር ክፈት</translation>
 <translation id="4195814663415092787">ካቆምክበት ቀጥል</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> በቀጥታ ወደ የሚከተሉት ፋይሎች የእርስዎን ለውጦች ማስቀመጥ ይችላል። ይህ ጣቢያ ይህ ትር ሲከፈት ብቻ ለውጦችን ማስቀመጥ ይችላል።</translation>
 <translation id="4198146608511578238">የእርስዎን የGoogle ረዳት ለማነጋገር የማስጀመሪያ አዶውን ብቻ ይያዙት።</translation>
 <translation id="4200689466366162458">ብጁ ቃላት</translation>
 <translation id="4200983522494130825">አዲስ &amp;ትር</translation>
@@ -2196,7 +2211,6 @@
 <translation id="4267953847983678297">በራስ-ሰር ከተንቀሳቃሽ ስልክ አውታረ መረብ ጋር ተገናኝ</translation>
 <translation id="4268025649754414643">የቀልፍ ሚስጥራዊነት</translation>
 <translation id="4270393598798225102">ስሪት <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">ምንም ተዛማጆች የሉም</translation>
 <translation id="4275663329226226506">ማህደረ መረጃ</translation>
 <translation id="4275830172053184480">መሣሪያዎን ዳግም ያስጀምሩ</translation>
 <translation id="4278101229438943600">የእርስዎ ረዳት ዝግጁ ነው</translation>
@@ -2345,6 +2359,7 @@
 <translation id="4533985347672295764">የሲፒዩ ጊዜ</translation>
 <translation id="4534661889221639075">እንደገና ይሞክሩ።</translation>
 <translation id="4535127706710932914">ነባሪ መገለጫ</translation>
+<translation id="4535767533210902251">የጣት አሽራ ዳሳሹ በእርስዎ የቁልፍ ሰሌዳ ላይ ከላይ ያለው ቀኝ እጅ ቁልፉ ነው። በማናቸውም ጣት በስሱ ነካ ያድርጉት።</translation>
 <translation id="4538684596480161368">በማጠሪያ ያልተቀመጡ ተሰኪዎች ሁልጊዜ <ph name="HOST" /> ላይ አግድ</translation>
 <translation id="4538792345715658285">በድርጅት መመሪያ የተጫነ።</translation>
 <translation id="4542520061254486227">የእርስዎን ውሂብ በ<ph name="WEBSITE_1" /> እና በ<ph name="WEBSITE_2" /> ላይ ያንብቡ</translation>
@@ -2378,6 +2393,7 @@
 <translation id="457386861538956877">ተጨማሪ...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">የብሉቱዝ መሣሪያን ያጣምሩ</translation>
+<translation id="4578012756826807359">የእርስዎ በመለያ መግቢያ ውሂብ በተሳካ ሁኔታ ተሰርዟል።</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" />ን cast ማድረግ አልተቻለም።</translation>
 <translation id="4581774856936278355">Linux እንደነበረ መመለስ ላይ ስህተት</translation>
 <translation id="4582563038311694664">ሁሉንም ቅንብሮች ዳግም አስጀምር</translation>
@@ -2495,7 +2511,6 @@
 <translation id="4763830802490665879">ሲወጣ ከበርካታ ጣቢያዎች የመጡ ኩኪዎች ይጸዳሉ።</translation>
 <translation id="4765582662863429759">የAndroid መልዕክቶች ከስልክዎ የሚመጡ ጽሑፎችን ወደ የእርስዎ Chromebook እንዲያስተላልፉ ያስችለዋል</translation>
 <translation id="4768332406694066911">እርስዎን የሚለዩ ከእነዚህ ድርጅቶች የመጡ የዕውቅና ማረጋገጫዎች አለዎት</translation>
-<translation id="4772404146526168240">ሁለቱም ማያ ገጾች</translation>
 <translation id="4776146737004271126">የAndroid ቅንብሮችን ክፈት</translation>
 <translation id="4776917500594043016">የ<ph name="USER_EMAIL_ADDRESS" /> ይለፍ ቃል</translation>
 <translation id="4777825441726637019">Play  መደብር</translation>
@@ -2603,7 +2618,6 @@
 <translation id="4927846293686536410">የእርስዎን ዕልባቶች፣ ታሪክ፣ የይለፍ ቃሎች እና ሌሎች ቅንብሮች በሁሉም መሣሪያዎችዎ ላይ ለማግኘት በመለያ ይግቡ። እንዲሁም በራስ-ሰር ወደ የእርስዎ Google አገልግሎቶች እንዲገቡ ይደረጋሉ።</translation>
 <translation id="4929386379796360314">የሕትመት መድረሻዎች</translation>
 <translation id="4930714375720679147">አብራ</translation>
-<translation id="4931132176527519925">ሁልጊዜ ግልባጭ ማድረግ ተጠቀም</translation>
 <translation id="4932733599132424254">ቀን</translation>
 <translation id="4933484234309072027"><ph name="URL" /> ላይ ተከትቷል</translation>
 <translation id="493571969993549666">ክትትል የሚደረግበት ተጠቃሚ አክል</translation>
@@ -2643,6 +2657,7 @@
 <translation id="4992066212339426712">ድምጸ-ከል አንሳ</translation>
 <translation id="4992458225095111526">Powerwashን ያረጋግጡ</translation>
 <translation id="4992473555164495036">የእርስዎ አስተዳዳሪ ሊገኙ የሚችሉትን የግቤት ዘዴዎች ገድቧቸዋል።</translation>
+<translation id="4992866843815555470">የእርስዎ መትከያ መታደስ ያስፈልገዋል። የሚሠራ ማርገብገቢያ ሳይኖረው የእርስዎ መትከያ ይዘጋል።</translation>
 <translation id="4992926179187649719">«Ok Google»ን ያብሩ</translation>
 <translation id="4994474651455208930">ጣቢያዎች ለፕሮቶኮሎች ነባሪ ከዋኞች እንዲሆኑ እንዲጠይቁ ፍቀድ</translation>
 <translation id="4994754230098574403">በማዋቀር ላይ</translation>
@@ -2781,7 +2796,6 @@
 <translation id="5233231016133573565">የሂደት መለያ ቁጥር</translation>
 <translation id="5233638681132016545">አዲስ ትር</translation>
 <translation id="5233736638227740678">&amp;ለጥፍ</translation>
-<translation id="5234764350956374838">አሰናብት</translation>
 <translation id="5235050375939235066">መተግበሪያ ይራገፍ?</translation>
 <translation id="5235750401727657667">አዲስ ትር በሚከፈትበት ጊዜ የሚመለከቱትን ገጽ ይተኩ</translation>
 <translation id="5238278114306905396">መተግበሪያ «<ph name="EXTENSION_NAME" />» በራስ-ሰር ተወግዷል።</translation>
@@ -2846,6 +2860,7 @@
 <translation id="5319359161174645648">Google Chromeን ይመክራል</translation>
 <translation id="532247166573571973">አገልጋዩ የማይደረስበት ሊሆን ይችላል። ቆይተው እንደገና ይሞክሩ።</translation>
 <translation id="5324780743567488672">የእርስዎን መገኛ አካባቢ በመጠቀም በራስ-ሰር የጊዜ ቀጠናን ያዘጋጃል</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - ኦርጂናል ፋይሎችን ለማስቀመጥ ተፈቅዶለታል</translation>
 <translation id="5327248766486351172">ስም</translation>
 <translation id="5327570636534774768">ይህ መሣሪያ በተለየ ጎራ ለአስተዳደር ምልክት ተደርጎበታል። የቅንጭብ ማሳያ ሁነታን ከማቀናበርዎ በፊት ከዚያ ጎራ ላይ አቅርቦቱን ያስወግዱ።</translation>
 <translation id="532943162177641444">ይህ መሣሪያ ሊጠቀሙበት የሚችልበት የተንቀሳቃሽ ስልክ መገናኛ ነጥብ ለማቀናበር በእርስዎ <ph name="PHONE_NAME" /> ላይ ያለውን ማሳወቂያ መታ ያድርጉ።</translation>
@@ -2988,7 +3003,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> የሚከተሉትን ማድረግ ይፈልጋል፦</translation>
 <translation id="5534304873398226603">ፎቶን ወይም ቪዲዮን ጣል</translation>
 <translation id="5535941515421698170">እንዲሁም ነባር ውሂብዎን ከዚህ መሣሪያ ያስወግዱ</translation>
-<translation id="5537725057119320332">Cast</translation>
 <translation id="5539221284352502426">ያስገቡት ይለፍ ቃል አገልጋዩ አልተቀበለውም። ሊሆኑ የሚችሉ ምክንያቶች እነዚህን ያካትታሉ፦ የይለፍ ቃሉ በጣም አጭር ነው። የይለፍ ቃሉ ቁጥሮችን ወይም ምልክቶችን ማካተት አለበት። የይለፍ ቃሉ ከቀዳሚ ይለፍ ቃላት የተለየ መሆን አለበት።</translation>
 <translation id="5541687815721799001">መተግበሪያ ይጠቀሙ</translation>
 <translation id="5542132724887566711">መገለጫ</translation>
@@ -3297,7 +3311,6 @@
 <translation id="5997337190805127100">ስለጣቢያ መዳረሻ ተጨማሪ ይወቁ</translation>
 <translation id="6000758707621254961">ለ«<ph name="SEARCH_TEXT" />» <ph name="RESULT_COUNT" /> ውጤቶችን አሳይ</translation>
 <translation id="6002458620803359783">የሚመረጡ ድምጾች</translation>
-<translation id="6005695835120147974">ሚዲያ ራውተር</translation>
 <translation id="6006484371116297560">የታወቀ ገጽታ</translation>
 <translation id="6007240208646052708">የድምጽ ፍለጋ በቋንቋዎ አይገኝም።</translation>
 <translation id="6009781704028455063">አብሮገነብ ዳሳሽ</translation>
@@ -3497,7 +3510,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{በእርስዎ አውታረ መረብ ላይ ያለ አዲስ አታሚ}one{በእርስዎ አውታረ መረብ ላይ ያሉ አዲስ አታሚዎች}other{በእርስዎ አውታረ መረብ ላይ ያሉ አዲስ አታሚዎች}}</translation>
 <translation id="6286708577777130801">የተቀመጡ የይለፍ ቃላት ዝርዝሮች</translation>
 <translation id="6289452883081499048">እንደ Play ያሉ ግላዊነት የተላበሱ የGoogle አገልግሎቶች</translation>
-<translation id="6290556621549272952">በእርስዎ ቴሌቪዥን ወይም በሌሎች መሣሪያዎች ላይ ከChromium የመጡ ይዘቶችን ለማሳየት ይህን ባህሪ መጠቀም ይችላሉ።</translation>
 <translation id="6291949900244949761">አንድ ጣቢያ የዩኤስቢ መሣሪያዎችን መድረስ ሲፈልግ ጠይቅ (የሚመከር)</translation>
 <translation id="6291953229176937411">በፈላጊ ውስጥ &amp;አሳይ</translation>
 <translation id="6295158916970320988">ሁሉም ጣቢያዎች</translation>
@@ -3561,6 +3573,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />የስርዓት መረጃ<ph name="END_LINK1" /> እና <ph name="BEGIN_LINK2" />ልኬቶች<ph name="END_LINK2" /> ይላኩ</translation>
 <translation id="6396988158856674517">ጣቢያዎች የእንቅስቃሴ ዳሳሾችን እንዳይጠቀሙ ያግዱ</translation>
 <translation id="6397094776139756010">ስምረት እና ግላዊነት ማላበሻ አማራጮች</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> በቀጥታ በሚከተለው አቃፊ ውስጥ ወዳሉ ፋይሎች የእርስዎን ለውጦችን ማስቀመጥ ይችላል። ይህ ጣቢያ ይህ ትር ሲከፈት ብቻ ለውጦችን ማስቀመጥ ይችላል።</translation>
 <translation id="6398715114293939307">Google Play መደብርን አስወግድ</translation>
 <translation id="6398765197997659313">ከሙሉ ማሳያ መስኮት ይውጡ</translation>
 <translation id="6399774419735315745">ሰላይ</translation>
@@ -3605,11 +3618,13 @@
 <translation id="6455264371803474013">በተወሰኑ ጣቢያዎች ላይ</translation>
 <translation id="6455894534188563617">&amp;አዲስ አቃፊ</translation>
 <translation id="6456394469623773452">ጥሩ</translation>
+<translation id="6456955391422100996">ማስታወቂያ ተወግዷል።</translation>
 <translation id="645705751491738698">ጃቫስክሪፕትን ማገድ ቀጥል</translation>
 <translation id="6458701200018867744">ዝማኔ አልተሳካም (<ph name="WEBRTC_LOG_UPLOAD_TIME" />)።</translation>
 <translation id="6459488832681039634">ለማግኘት የተመረጡትን ተጠቀም</translation>
 <translation id="6459799433792303855">ንቁ መስኮት ወደ ሌላ ማሳያ ተዛውሯል።</translation>
 <translation id="6460601847208524483">ቀጣዩን አግኝ</translation>
+<translation id="6461170143930046705">አውታረ መረብን በመፈለግ ላይ...</translation>
 <translation id="6463795194797719782">&amp;አርትዕ</translation>
 <translation id="6466988389784393586">&amp;ሀሉንም እልባቶች ክፈት</translation>
 <translation id="6467304607960172345">ባለሙሉ ማያ ቪዲዮዎችን አትባ</translation>
@@ -3648,6 +3663,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">ወደ <ph name="NETWORK_TYPE" /> አውታረ መረብ ተገናኝተዋል።</translation>
 <translation id="6527303717912515753">አጋራ</translation>
 <translation id="6528513914570774834">ሌሎች የዚህ መሣሪያ ተጠቃሚዎች ይህን አውታረ መረብ እንዲጠቀሙ ይፍቀዱላቸው</translation>
 <translation id="652948702951888897">የChrome ታሪክ</translation>
@@ -3744,7 +3760,6 @@
 <translation id="6680650203439190394">ደረጃ ይስጡ</translation>
 <translation id="6681668084120808868">ፎቶ አንሳ</translation>
 <translation id="6681964764822470072">«<ph name="APP_NAME" />» ይራገፋል።</translation>
-<translation id="6685083257944113180">አቁም፣ <ph name="SINK_NAME" />፣ <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Google Playን ይክፈቱ</translation>
 <translation id="6686490380836145850">በቀኝ በኩል ያሉ ትሮችን ዝጋ</translation>
 <translation id="6686817083349815241">የይለፍ ቃልዎን ያስቀምጡ</translation>
@@ -3852,6 +3867,7 @@
 <translation id="6845038076637626672">ሰፍቶ ክፈት</translation>
 <translation id="6845325883481699275">የChrome ደህንነት እንዲሻሻል ያግዙ</translation>
 <translation id="6848388270925200958">አሁን ላይ በዚህ መሣሪያ ላይ ብቻ ጥቅም ላይ ሊውሉ የሚችሉ አንዳንድ ካርዶች አልዎት</translation>
+<translation id="6850286078059909152">የጽሑፍ ቀለም</translation>
 <translation id="6851497530878285708">መተግበሪያ ነቅቷል</translation>
 <translation id="6853388645642883916">ማዘመኛ እያንቀላፋ ነው</translation>
 <translation id="68541483639528434">ሌሎች ትሮችን ዝጋ</translation>
@@ -3901,7 +3917,6 @@
 <translation id="6923132443355966645">ይሸብልሉ / ጠቅ ያድርጉ</translation>
 <translation id="6923633482430812883">ማጋራትን ማፈናጠጥ ላይ ስህተት። እባክዎ እየተገናኙት ያለው የፋይል አገልጋይ SMBv2 ወይም ከዚያ በኋላ የሚደግፍ መሆኑን ይፈትሹ።</translation>
 <translation id="6930036377490597025">ውጫዊ የደህንነት ቁልፍ ወይም አብሮገነብ ዳሳሽ</translation>
-<translation id="6930242544192836755">ጊዜ</translation>
 <translation id="693807610556624488">የመጻፍ ክወናው ከየሚከተለው መገለጫ ባሕሪ ከሚፈቀደው ከፍተኛ ርዝመት ይበልጣል፦ «<ph name="DEVICE_NAME" />»።</translation>
 <translation id="6941937518557314510">በእውቅና ማረጋገጫዎ ለ<ph name="HOST_NAME" /> ቁልፍ ለማመንጨት እባክዎ ወደ <ph name="TOKEN_NAME" /> ይግቡ።</translation>
 <translation id="6943176775188458830">ማትመን ሰርዝ</translation>
@@ -3915,6 +3930,7 @@
 <translation id="6951153907720526401">የክፍያ ተቆጣጣሪይዎች</translation>
 <translation id="6951663584153258142">የእርስዎ ድርጅት ይህን መሣሪያ እንዲያዘምኑት ይጠይቅዎታል</translation>
 <translation id="6953878494808481632">ተዛማጅ መረጃ</translation>
+<translation id="6953916367503892689">{0,plural, =1{ፋይል፦ <ph name="FILES" />}one{ፋይሎች፦ <ph name="FILES" />}other{ፋይሎች፦ <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">ብቅ-ባይ ይመርምሩ</translation>
 <translation id="6957044667612803194">ይህ የደህንነት ቁልፍ ፒኖችን አይደግፍም</translation>
 <translation id="6957231940976260713">የአገልግሎት ስም</translation>
@@ -4127,7 +4143,6 @@
 <translation id="7254554697254365959">ይህ ገጽ ሊተረጎም አይችልም።</translation>
 <translation id="7254951428499890870">እርግጠኛ ነዎት «<ph name="APP_NAME" />»ን በምርመራ ሁነታ ማስጀመር ይፈልጋሉ?</translation>
 <translation id="7255002516883565667">አሁን ላይ በዚህ መሣሪያ ላይ ጥቅም ላይ ሊውል የሚችል አንድ መሣሪያ ብቻ አልዎት</translation>
-<translation id="7255220508626648026">Casting፦ <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">ዳግም ማስጀመርን ለማረጋገጥ የደህንነት ቁልፍዎን ይንኩ። ፒን ጨምሮ በደህንነት ቁልፉ ላይ የተከማቸው ሁሉም መረጃ ይደመሰሳል።</translation>
 <translation id="7255935316994522020">ተግብር</translation>
 <translation id="7256069762010468647">ጣቢያ የእርስዎን ካሜራ እየተጠቀመ ነው</translation>
@@ -4261,6 +4276,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">የተቀመጠበትን ቦታ ክፈት…</translation>
 <translation id="7458168200501453431">በGoogle ፍለጋ ላይ ስራ ላይ የሚውለው ተመሳሳዩን ፊደል ማረሚያ ይጠቀማል። በአሳሹ ውስጥ የሚተይቡት ጽሑፍ ወደ Google ይላካል።</translation>
+<translation id="7460045493116006516">እርስዎ የጫኑት አሁን ያለ ገጽታ</translation>
 <translation id="7461924472993315131">ሰካ</translation>
 <translation id="746216226901520237">በሚቀጥለው ጊዜ ስልክዎ የእርስዎን <ph name="DEVICE_TYPE" /> ይከፍታል። በቅንብሮች ውስጥ Smart Lock ማጥፋት ይችላሉ።</translation>
 <translation id="7463006580194749499">ሰው አክል</translation>
@@ -4320,6 +4336,7 @@
 <translation id="7554791636758816595">አዲስ ትር</translation>
 <translation id="7556033326131260574">Smart Lock መለያዎን ማረጋገጥ አልቻለም። ለመግባት የእርስዎን የይለፍ ቃል ይተይቡ።</translation>
 <translation id="7556242789364317684">የአጋጣሚ ነገር ሆኖ <ph name="SHORT_PRODUCT_NAME" /> የእርስዎን ቅንብሮችን ማስመለስ አልቻለም። ስህተቱን ለመፍታት <ph name="SHORT_PRODUCT_NAME" /> የእርስዎን መሣሪያ በፓወርዋሽ ዳግም ማስጀመር አለበት።</translation>
+<translation id="7559444627302317199">እባክዎ የእርስዎን አውታረ መረብ ይፈትሹ እና እንደገና ይሞክሩ።</translation>
 <translation id="7559719679815339381">እባክዎ ይጠብቁ....Kiosk መተግበሪያ በመዘመን ሂደት ላይ ነው። የUSB ስቲኩን አያስወግዱት።</translation>
 <translation id="7561196759112975576">ሁልጊዜ</translation>
 <translation id="7563991800558061108">ከዚህ ስህተት ለማገገም ከመግቢያ ገጹ ሆነው ወደ የGoogle መለያዎ መግባት አለብዎት።
@@ -4562,7 +4579,6 @@
 <translation id="7887334752153342268">አባዛ</translation>
 <translation id="7887864092952184874">የብሉቱዝ መዳፊት ተጣምሯል</translation>
 <translation id="7889565820482017512">የማሳያ መጠን</translation>
-<translation id="7889966925761734854">ይፈልጉ</translation>
 <translation id="7893008570150657497">የኮምፒውተርዎን ፎቶዎች፣ ሙዚቃ እና ሌላ ማህደረ  መረጃ  ይደርሳል</translation>
 <translation id="7893153962594818789">በዚህ <ph name="DEVICE_TYPE" /> ላይ ብሉቱዝ ጠፍቷል። የእርስዎን የይለፍ ቃል ያስገቡ እና ብሉቱዝን ያብሩ።</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (ነባሪ)</translation>
@@ -4570,7 +4586,6 @@
 <translation id="7898627924844766532">በመሣሪያ አሞሌ ውስጥ አቆይ</translation>
 <translation id="7898725031477653577">ሁል ጊዜ ተርጉም</translation>
 <translation id="790040513076446191">ከግላዊነት ጋር የተገናኙ ቅንብሮችን ይቆጣጠሩ</translation>
-<translation id="7902874111237641165">ለስላሳ እንቅስቃሴ [የቅድመ ይሁንታ ሙከራ]</translation>
 <translation id="7903345046358933331">ገጹ ምላሽ የማይሰጥ ሆኗል። ምላሽ እስከሚሰጥ ሊጠብቁት ወይም ሊዘጉት ይችላሉ።</translation>
 <translation id="7903742244674067440">የእነዚህን ዕውቅና ማረጋገጫ ባለሥልጣናት የሚለዩ የዕውቅና ማረጋገጫዎች በፋይሉ ላይ አለዎት</translation>
 <translation id="7903925330883316394">ፍጆታ፦ <ph name="UTILITY_TYPE" /></translation>
@@ -4687,6 +4702,7 @@
 <translation id="8037117027592400564">ተሰብስቦ በተሰራ ንግግር አማካኝነት ሁሉንም የተነገሩ ጽሑፎች ያነብባል</translation>
 <translation id="8037357227543935929">ጠይቅ (ነባሪ)</translation>
 <translation id="803771048473350947">ፋይል</translation>
+<translation id="8042142357103597104">የጽሑፍ በርሃን-ከልነት</translation>
 <translation id="8044899503464538266">ቀስ</translation>
 <translation id="8045253504249021590">ስምረት በGoogle ዳሽቦርዱ በኩል ቆሟል።</translation>
 <translation id="8045923671629973368">የመተግበሪያ መታወቂያ ወይም የድር መደብር ዩአርኤል ያስገቡ</translation>
@@ -4723,7 +4739,6 @@
     <ph name="BEGIN_PARAGRAPH5" />ይህን አገልግሎት በቅንብሮች ውስጥ ማጥፋት ይችላሉ።<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">ፒኖቹ አይዛመዱም</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> ከቅጥያ የወኪል ቅንብሮችን እየተጠቀመ ነው</translation>
-<translation id="8099495042588009598">ተጨማሪ ፈቃዶች</translation>
 <translation id="8101987792947961127">በቀጣዩ ዳግም ማስነሳት ላይ Powerwash  ያስፈልጋል</translation>
 <translation id="8102159139658438129">ለተገናኘው ስልክዎ አማራጮችን ለማየት ወደ <ph name="LINK_BEGIN" />ቅንብሮች<ph name="LINK_END" /> ይሂዱ</translation>
 <translation id="8104696615244072556">የእርስዎ <ph name="IDS_SHORT_PRODUCT_NAME" /> መሣሪያ Powerwash ያድርጉትና ወደ ቀዳሚው ስሪት ይመለሱ።</translation>
@@ -4774,8 +4789,10 @@
 ይህ ጣቢያ መታገድ ያለበት አይመስለኝም!</translation>
 <translation id="8184288427634747179">ወደ <ph name="AVATAR_NAME" /> ቀይር</translation>
 <translation id="8184318863960255706">ተጨማሪ መረጃ</translation>
+<translation id="8184472985242519288">ወጥ የሆነ</translation>
 <translation id="8185331656081929126">አዲስ አታሚዎች በአውታረ መረቡ ላይ ሲገኙ ማሳወቂያዎችን አሳይ።</translation>
 <translation id="8186609076106987817">አገልጋዩ ፋይሉን ሊያገኝ አልቻለም።</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> በሚከተለው አቃፊ ውስጥ ህሉንም ፋይሎች ማንበብ ይችላል። ይህ ጣቢያ ይህ ትር ሲከፈት ብቻ ለውጦችን መመልከት ይችላል።</translation>
 <translation id="8188389033983459049">የመሣሪያዎን ቅንብሮችዎ ይፈትሹና ለመቀጠል ያብሩት</translation>
 <translation id="8190193592390505034">ከ<ph name="PROVIDER_NAME" /> ጋር በመገናኘት ላይ</translation>
 <translation id="8191230140820435481">መተግበሪያዎችዎን፣ ቅጥያዎችዎን እና ገጽታዎችዎን ያቀናብራል</translation>
@@ -4879,7 +4896,6 @@
 <translation id="833986336429795709">ይህን አገናኝ ለመክፈት አንድ መተግበሪያ ይምረጡ</translation>
 <translation id="8342861492835240085">አንድ ስብስብ ይምረጡ</translation>
 <translation id="834290227245955730">ልክ ያልኾነ ፒን። በግራ በኩል ዳግም ይሞክራል፦ <ph name="RETRIES" />።</translation>
-<translation id="8343956361364550006">ለምርጥ የቪዲዮ ወይም እነማ ከፍተኛ መተላለፊያ ይዘት ይጠቀሙ። ዝግተኛ ግንኙነቶች ያላቸው ሌሎች ሰዎች የእርስዎን ይዘት መመልከት ላይችሉ ይችላሉ።</translation>
 <translation id="8351419472474436977">ይህ ቅጥያ የተኪ ቅንብሮችዎን ተቆጣጥሯል፣ ይህ ማለት መስመር ላይ የሚያደርጉትን ማንኛውም ነገር ሊቀይር፣ ሊሰብር ወይም በድብቅ ሊከታተል ይችላል። ይሄ ለምን እንደተከሰተ እርግጠኛ ካልሆኑ የማይፈልጉት ነገር ሳይሆን አይቀርም።</translation>
 <translation id="8351630282875799764">ባትሪ ኃይል እየሞላ አይደለም</translation>
 <translation id="835238322900896202">በማራገፍ ጊዜ አንድ ስህተት ተከስቷል። እባክዎ በተርሚናሉ በኩል ያራግፉ።</translation>
@@ -4912,9 +4928,11 @@
 <translation id="839736845446313156">ይመዝገቡ</translation>
 <translation id="8398877366907290961">ለማንኛውም ቀጥል</translation>
 <translation id="8400146488506985033">ሰዎችን አቀናብር</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> በቀጥታ በሚከተለው አቃፊ ውስጥ ወዳሉ ፋይሎች የእርስዎን ለውጦችን ማስቀመጥ ይችላል። ይህ ጣቢያ ይህ ትር ሲከፈት ብቻ ለውጦችን ማስቀመጥ ይችላል።</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">በመጀመሪያ ጠይቅ (የሚመከር)</translation>
 <translation id="8418445294933751433">&amp;በትር አሳይ</translation>
+<translation id="8418905021510211421">ይህ ገጽ በእርስዎ መሣሪያ ላይ አቃፊን ለማንበብ ተፈቅዶለታል።</translation>
 <translation id="8419098111404128271">የ«<ph name="SEARCH_TEXT" />» ውጤቶችን ይፈልጉ</translation>
 <translation id="8419368276599091549">እንኳን ወደ የእርስዎ <ph name="DEVICE_TYPE" /> በደህና መጡ!</translation>
 <translation id="8425213833346101688">ለውጥ</translation>
@@ -4934,6 +4952,7 @@
 <translation id="8438566539970814960">ፍለጋዎችን እና አሰሳን የተሻለ አድርግ</translation>
 <translation id="8439506636278576865">በዚህ ቋንቋ ውስጥ ያሉ ገጾችን ለመተርጎም ያቅርቡ</translation>
 <translation id="8440630305826533614">Linux መተግበሪያዎች</translation>
+<translation id="844241640324986723">የእርስዎን በመለያ መግቢያ ውሂብ መሰረዝ አልተሳካም።</translation>
 <translation id="8443338615972234259">እባክዎ ክትትል ለሚደረገው ተጤቃሚዎች አዲስ መለያ አሁን ይፍጠሩ።</translation>
 <translation id="8446884382197647889">ተጨማሪ ለመረዳት</translation>
 <translation id="8447409163267621480">Ctrl ወይም Alt ያካትቱ</translation>
@@ -4949,8 +4968,6 @@
 <translation id="8461914792118322307">ተኪ</translation>
 <translation id="8463215747450521436">በክትትል ስር ያለው ተጠቃሚ በአስተዳዳሪው ተሰርዞ ወይም ተሰናክሎ ሊሆን ይችላል። ልክ እንደዚህ ተጠቃሚ መግባት ከፈለጉ እባክዎ አስተዳዳሪውን ያግኙ።</translation>
 <translation id="846374874681391779">የውርዶች አሞሌ</translation>
-<translation id="8463807869745732775">"&gt;
-    የደህንነት ቁልፍ በመለያ መግቢያ ውሂብን አከማችቷል</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> ተሰናክሏል።</translation>
 <translation id="8464132254133862871">ይህ የተጠቃሚ መለያ ለአገልግሎቱ ብቁ አይደለም።</translation>
 <translation id="8465252176946159372">ልክ ያልሆነ</translation>
@@ -5016,6 +5033,7 @@
 <translation id="8569002732135253578">አሁን <ph name="DOCUMENT_NAME" />ን በማተም ላይ</translation>
 <translation id="8569682776816196752">ምንም መድረሻዎች አልተገኙም</translation>
 <translation id="8571213806525832805">ባለፉት 4 ሳምንቶች</translation>
+<translation id="8573403125070227391">ይህ ማስታወቂያ ከልክ በላይ ብዙ ግብዓቶች ለእርስዎ መሣሪያ አሉት ስለሆነም Chrome አስወግዶታል።</translation>
 <translation id="8574990355410201600">ሁልጊዜ በ<ph name="HOST" /> ላይ ድምጽን ፍቀድ</translation>
 <translation id="8575286410928791436">ለመተው <ph name="KEY_EQUIVALENT" />ን ይያዙ</translation>
 <translation id="8578639784464423491">ከ99 ፊደላት መብለጥ አይችልም</translation>
@@ -5039,13 +5057,13 @@
 <translation id="8609465669617005112">ወደላይ አውጣ</translation>
 <translation id="8610103157987623234">ትክክል ያልሆነ ቅርጸት፣ እባክዎ እንደገና ይሞክሩ</translation>
 <translation id="8615618338313291042">ማንነትን የማያሳውቅ መተግበሪያ፦ <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">ጥላ ጣል</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />፦ <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">የውሂብ ዝውውር ሁኔታ</translation>
 <translation id="8620765578342452535">የአውታረ መረብ ግንኙነቶችን ያዋቅራል</translation>
 <translation id="8621866727807194849">በእርስዎ ኮምፒውተር ላይ ጎጂ ሶፍትዌር አለ። Chrome እያስወገደው፣ የእርስዎን ቅንብሮች ወደ ነበሩበት እየመለሰ እና ቅጥያዎችን በማሰናከል ላይ ነው። ይህ የእርስዎን አሳሽ እንደገና በጤናማ መልኩ እንዲሠራ ያደርገዋል።</translation>
 <translation id="8621979332865976405">መላውን ማያ ገጽዎ ያጋሩ</translation>
 <translation id="862542460444371744">&amp;ቅጥያዎች</translation>
-<translation id="8627151598708688654">ምንጭ ይምረጡ</translation>
 <translation id="862727964348362408">ተንጠልጥሏል</translation>
 <translation id="862750493060684461">የCSS መሸጎጫ</translation>
 <translation id="8627795981664801467">ጥብቅ የሆኑ ግንኙነቶች ብቻ</translation>
@@ -5099,6 +5117,7 @@
 <translation id="8688579245973331962">ስምዎ አይታይ?</translation>
 <translation id="8688591111840995413">መጥፎ የይለፍ ቃል</translation>
 <translation id="8688672835843460752">ይገኛል</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;ቦታ ክፈት…</translation>
 <translation id="869884720829132584">የመተግበሪያዎች ምናሌ</translation>
 <translation id="869891660844655955">የሚያበቀበት ጊዜ</translation>
@@ -5262,6 +5281,7 @@
 <translation id="891365694296252935">የአጠቃቀም እና የምርመራ ውሂብ ይላኩ። ይህ መሣሪያ በአሁኑ ጊዜ በራስ-ሰር የምርመራ፣ የመሣሪያ እና የመተግበሪያ አጠቃቀም ውሂብ ወደ Google እየላከ ነው። ይህ ልጅዎን ለመለየት ስራ ላይ አይውልም፣ እና የስርዓት እና የመተግበሪያ እርጋታን እና ሌሎች ማሻሻያዎችን ያግዛል። አንዳንድ ውሑድ ውሂብ እንዲሁም የGoogle መተግበሪያዎችን እና እንደ የAndroid ገንቢዎች ያሉ አጋሮችን ያግዛሉ። ይህ ቅንብር በባለቤቱ ተፈጻሚ ይደረጋል። የተጨማሪ ድር እና መተግበሪያ እንቅስቃሴ ለልጅዎ በርቶ ከሆነ ይህ ውሂብ አሁን በGoogle መለያቸው ላይ ሊቀመጥ ይችላል። <ph name="BEGIN_LINK1" />የበለጠ ለመረዳት<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">የጥቆማ አስተያየት በመጫን ላይ</translation>
 <translation id="8916476537757519021">ማንነት የማያሳውቅ ንዑስ ክፈፍ፦ <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - በእርስዎ መሣሪያ ላይ አቃፊ ለማንበብ ተፈቅዶለታል</translation>
 <translation id="8919275547519617350">ሁሉንም የእርስዎ የይለፍ ቃላት በሁሉም መሣሪያዎችዎ ላይ ለማግኘት በመለያ ይግቡና ስምረትን ያብሩ።</translation>
 <translation id="8921366488406707015">የደህንነት ቁልፍዎን በማረጋገጥ ላይ...</translation>
 <translation id="8922013791253848639">ሁልጊዜ በዚህ ጣቢያ ላይ ማስታወቂያዎችን አሳይ</translation>
@@ -5291,7 +5311,6 @@
 <translation id="8965037249707889821">የድሮ ይለፍ ቃል ያስገቡ</translation>
 <translation id="8966870118594285808">በድንገት ከዘጉት ትርን እንደገና ይክፈቱት</translation>
 <translation id="8967866634928501045">ለማሳየት Alt Shift A ይጫኑ</translation>
-<translation id="8970203673128054105">የcast ሁነታ ዝርዝር ይመልከቱ</translation>
 <translation id="89720367119469899">አምልጥ</translation>
 <translation id="8972513834460200407">ኬላው ከGoogle አገልጋዩች የሚመጡ ውርዶችን እያገደ አለመሆኑን ለማረጋገጥ እባክዎ የአውታረ መረብ አስተዳዳሪዎን ያግኙ።</translation>
 <translation id="8973557916016709913">የማጉላት ደረጃውን ያስወግዱ</translation>
@@ -5440,6 +5459,7 @@
 <translation id="9214520840402538427">ውይ!  የጭነት ጊዜ መገለጫ ባህሪያት ጊዜ አልፎባቸዋል።  እባክዎ የድጋፍ ተወካይዎን ያግኙ።</translation>
 <translation id="9214695392875603905">ዘቢብ ኬክ</translation>
 <translation id="9215293857209265904">«<ph name="EXTENSION_NAME" />» ታክሏል</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> ወደ የሚከተለው ፋይል በቀጥታ የእርስዎን ለውጦች ለማስቀመጥ ይችላል። ይህ ጣቢያ ይህ ትር ሲከፈት ብቻ ለውጦችን ማስቀመጥ ይችላል።</translation>
 <translation id="9218430445555521422">እንደወረደ አዘጋጀው</translation>
 <translation id="9219103736887031265">ምስሎች</translation>
 <translation id="9220525904950070496">መለያ ያስወግዱ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index d2393d8..e98dd6a 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">حدث خطأ أثناء بدء تشغيل الآلة الافتراضية. يُرجى إعادة المحاولة.</translation>
 <translation id="1089439967362294234">تغيير كلمة المرور</translation>
 <translation id="1090126737595388931">ليس هناك تطبيقات خلفية قيد التشغيل</translation>
+<translation id="1090290614672149983">هل ترغب في حفظ التغييرات إلى الملف الأصلي؟</translation>
 <translation id="1090918500949388876">‏يمكنك الوصول إلى "مساعد Google" في أي وقت تقول فيه "OK Google" عندما تكون شاشتك في وضع التشغيل.</translation>
 <translation id="1091767800771861448">‏اضغط على ESCAPE للتخطي (الإصدارات غير الرسمية فقط).</translation>
 <translation id="1093457606523402488">شبكات مرئية:</translation>
 <translation id="1094607894174825014">تم طلب عملية القراءة أو الكتابة باستخدام إزاحة غير صالحة على: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">قبل تسجيل الدخول، يُرجى الدخول كضيف لتفعيل الشبكة <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">يتم السماح لعلامة التبويب هذه بالحفظ في الملفات الأصلية.</translation>
 <translation id="1103523840287552314">ترجمة اللغة <ph name="LANGUAGE" /> دائمًا</translation>
 <translation id="1108600514891325577">إي&amp;قاف</translation>
 <translation id="1110155001042129815">انتظار</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">نظارات شمسية</translation>
 <translation id="1151917987301063366">السماح دائمًا لـ <ph name="HOST" /> بالوصول إلى أجهزة الاستشعار</translation>
 <translation id="1153356358378277386">الأجهزة المقترنة</translation>
-<translation id="1156488781945104845">الوقت الحالي</translation>
 <translation id="1161575384898972166">يُرجى تسجيل الدخول إلى <ph name="TOKEN_NAME" /> لتصدير شهادة العميل.</translation>
 <translation id="1163931534039071049">عرض م&amp;صدر الإطار</translation>
 <translation id="1164674268730883318">‏هل تريد إيقاف تشغيل Smart Lock لـ <ph name="DEVICE_TYPE" />؟</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">‏إعدادات مساحة تخزين برنامج Adobe Flash Player</translation>
 <translation id="1274997165432133392">ملفات تعريف الارتباط وبيانات الموقع الأخرى</translation>
 <translation id="127668050356036882">إغلاق كل النوافذ</translation>
-<translation id="1277908057200820621">عرض قائمة الأجهزة</translation>
 <translation id="1280820357415527819">جارٍ البحث عن شبكات الجوّال</translation>
 <translation id="1285320974508926690">عدم ترجمة هذا الموقع مطلقًا</translation>
 <translation id="1285484354230578868">‏تخزين البيانات في حساب Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">الشبكة الرئيسية، بلا تجوال</translation>
 <translation id="1316136264406804862">جارِ البحث...</translation>
 <translation id="1316495628809031177">تم إيقاف المزامنة مؤقتًا</translation>
+<translation id="1317637799698924700">‏سيتم تشغيل محطة الإرساء في وضع USB من نوع C المتوافق.</translation>
 <translation id="1322046419516468189">عرض كلمات المرور المحفوظة وإدارتها في <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">‏للحصول على علامات التبويب من أجهزتك الأخرى، سجّل الدخول إلى Chrome.</translation>
 <translation id="1327074568633507428">‏طابعة مسجلة في الطباعة السحابية من Google</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />تتم إدارة متصفّحك<ph name="END_LINK" /> من خلال <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">‏يمكنك تشغيل أدوات Linux وأدوات التحرير وبرامج IDE على <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;مزيد من المعلومات&lt;/a&gt;</translation>
 <translation id="1367951781824006909">اختيار ملف</translation>
+<translation id="1370749010280229230">توجد مشكلة في العرض المرتبط بمحطة الإرساء.</translation>
 <translation id="1371301976177520732">الحصول على الإشارات المرجعية وكلمات المرور والسجلّ وغيرها على جميع أجهزتك</translation>
 <translation id="1372841398847029212">المزامنة مع حسابك</translation>
 <translation id="1374844444528092021">الشهادة المطلوبة من الشبكة "<ph name="NETWORK_NAME" />" لم يتم تثبيتها أو لم تعد صالحة.  يُرجى الحصول على شهادة جديدة وإعادة الاتصال من جديد.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">صفحة ويب، ملف واحد</translation>
 <translation id="1451917004835509682">إضافة شخص خاضع للإشراف</translation>
 <translation id="1454223536435069390">الت&amp;قاط لقطة شاشة</translation>
+<translation id="1458243790901188746">{0,plural, =1{مجلد واحد: <ph name="DIRECTORIES" />}zero{مجلدات: <ph name="DIRECTORIES" />}two{مجلدان: <ph name="DIRECTORIES" />}few{مجلدات: <ph name="DIRECTORIES" />}many{مجلدات: <ph name="DIRECTORIES" />}other{مجلدات: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">محركات البحث المضافة بواسطة الإضافات</translation>
 <translation id="146000042969587795">تمّ حجب هذا الإطار لتضمّنه بعض المحتوى غير الآمن.</translation>
 <translation id="146219525117638703">‏حالة ONC</translation>
@@ -444,10 +447,11 @@
 <translation id="1650371550981945235">عرض خيارات الإدخال</translation>
 <translation id="1651008383952180276">يجب إدخال عبارة المرور نفسها مرتين</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{‏إضافة طابعة إلى الطباعة السحابية من Google حتى تتمكن من الطباعة من أي مكان.}zero{‏إضافة # من الطابعات إلى الطباعة السحابية من Google حتى تتمكن من الطباعة من أي مكان.}two{‏إضافة طابعتين (#) إلى الطباعة السحابية من Google حتى تتمكن من الطباعة من أي مكان.}few{‏إضافة # طابعات إلى الطباعة السحابية من Google حتى تتمكن من الطباعة من أي مكان.}many{‏إضافة # طابعة إلى الطباعة السحابية من Google حتى تتمكن من الطباعة من أي مكان.}other{‏إضافة # من الطابعات إلى الطباعة السحابية من Google حتى تتمكن من الطباعة من أي مكان.}}</translation>
+<translation id="1656528038316521561">درجة تعتيم الخلفية</translation>
 <translation id="1657406563541664238">‏المساعدة في تحسين <ph name="PRODUCT_NAME" /> بإرسال إحصاءات الاستخدام وتقارير الأعطال إلى Google تلقائيًا</translation>
 <translation id="1658424621194652532">هذه الصفحة تحاول الدخول إلى الميكروفون.</translation>
 <translation id="1660204651932907780">السماح لمواقع الويب بتشغيل الصوت (موصى به)</translation>
-<translation id="1660763353352708040">مشكلة محوّل الطاقة</translation>
+<translation id="1660763353352708040">مشكلة في محوّل الطاقة</translation>
 <translation id="1661156625580498328">‏فرض تشفير AES (مستحسن)</translation>
 <translation id="166179487779922818">كلمة المرور أقصر مما يجب.</translation>
 <translation id="1661867754829461514">رقم التعريف الشخصي غير موجود</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546">يريد <ph name="URL" /> الاطّلاع على العلامة التجارية لمفتاح الأمان وطرازه.</translation>
 <translation id="1679068421605151609">أدوات مطوّري البرامج</translation>
 <translation id="1679806121152819234">‏الجهاز الافتراضي (VM) للمكوّن الإضافي</translation>
+<translation id="1679810534535368772">هل ترغب بالتأكيد في الخروج؟</translation>
 <translation id="167983332380191032">‏أرسلت خدمة الإدارة خطأ HTTP.</translation>
 <translation id="1680849702532889074">‏لقد حدث خطأ أثناء تثبيت تطبيق Linux.</translation>
 <translation id="16815041330799488">عدم السماح لمواقع الويب بالاطّلاع على النصوص والصور التي تم نسخها إلى الحافظة</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">معرّف الوسائط المحمية</translation>
 <translation id="175196451752279553">إ&amp;عادة فتح علامة التبويب المغلقة</translation>
 <translation id="1753905327828125965">الأكثر زيارة</translation>
+<translation id="1755601632425835748">حجم النص</translation>
 <translation id="1756681705074952506">أسلوب الإدخال</translation>
 <translation id="1757301747492736405">إلغاء التثبيت معلَّق</translation>
 <translation id="175772926354468439">تفعيل المظهر</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">أص&amp;غر</translation>
 <translation id="1919345977826869612">الإعلانات</translation>
 <translation id="1919814239594435008">تم السماح بالمكون الإضافي دون استخدام وضع الحماية</translation>
+<translation id="1920390473494685033">جهات الاتصال</translation>
 <translation id="1921050530041573580">إقران هاتفك مع الرسائل</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> نقطة لكل بوصة</translation>
 <translation id="1924559387127953748">‏الحصول على ميزات Google الذكية في <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">علامة تبويب التصفح المتخفي: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">يريد <ph name="PEPPER_PLUGIN_NAME" /> الموجود على <ph name="PEPPER_PLUGIN_DOMAIN" /> الوصول إلى جهاز الكمبيوتر.</translation>
 <translation id="2178614541317717477">‏اختراق المرجع المصدق (CA)</translation>
+<translation id="2179849162388791084">تعذّر جمع بيانات تسجيل الدخول من مفتاح الأمان.</translation>
 <translation id="218070003709087997">استخدم رقمًا للإشارة إلى عدد النُسخ المطلوب طباعتها (من 1 إلى 999).</translation>
 <translation id="2184515124301515068">‏السماح لمتصفِّح Chrome باختيار الوقت الذي يمكن للمواقع الإلكترونية تشغيل الصوت فيه (مُوصى به)</translation>
 <translation id="2187895286714876935">خط استيراد شهادة الخادم</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">جميع ملفات تعريف الارتباط وبيانات الموقع</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{تم نسخ عنصر واحد}zero{تم نسخ # عنصر}two{تم نسخ عنصرين (#)}few{تم نسخ # عناصر}many{تم نسخ # عنصرًا}other{تم نسخ # عنصر}}</translation>
 <translation id="2278562042389100163">فتح نافذة المتصفح</translation>
-<translation id="2279874276457403668">يمكن إنشاء جلسة واحدة فقط في كل مرة.</translation>
 <translation id="2280486287150724112">الهامش الأيمن</translation>
 <translation id="2282146716419988068">‏معالجة وحدة معالجة الرسومات (GPU)</translation>
 <translation id="2282155092769082568">‏عنوان URL للتهيئة التلقائية:</translation>
@@ -875,7 +882,7 @@
 <translation id="2294358108254308676">هل تريد تثبيت <ph name="PRODUCT_NAME" />؟</translation>
 <translation id="2297705863329999812">البحث في الطابعات</translation>
 <translation id="2300383962156589922">تخصيص <ph name="APP_NAME" /> والتحكّم فيه</translation>
-<translation id="2300800387751317588">تم إيقاف المزامنة مؤقتًا لأنك تمحو ملفات تعريف الارتباط عند بدء التشغيل. يمكنك تغيير <ph name="COOKIE_SETTINGS_LINK" /> للإبقاء على عملية المزامنة.</translation>
+<translation id="2300800387751317588">تم إيقاف المزامنة مؤقتًا لأنك تمحو ملفات تعريف الارتباط عند بدء التشغيل. يمكنك تغيير <ph name="COOKIE_SETTINGS_LINK" /> لمواصلة عملية المزامنة.</translation>
 <translation id="2301382460326681002">دليل الجذر للإضافة غير صالح.</translation>
 <translation id="23030561267973084">تتطلب الإضافة "<ph name="EXTENSION_NAME" />" أذونات إضافية.</translation>
 <translation id="2307462900900812319">تهيئة الشبكة</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">يتم حفظ ملاحظات شاشة التأمين تلقائيًا إلى <ph name="LOCK_SCREEN_APP_NAME" />. ستظل أحدث ملاحظة في شاشة التأمين.</translation>
 <translation id="2353297238722298836">تم السماح باستخدام الكاميرا والميكروفون</translation>
 <translation id="2356070529366658676">طلب</translation>
-<translation id="2357949918965361754">‏يمكنك استخدام هذه الميزة لعرض محتوى من Chrome على التلفزيون أو غيره من الأجهزة.</translation>
 <translation id="2359345697448000899">يمكنك إدارة الإضافات من خلال النقر على "الإضافات" في قائمة "الأدوات".</translation>
 <translation id="2359808026110333948">متابعة</translation>
 <translation id="236117173274098341">تحسين</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">تتطلب مؤسستك تحديث هذا الجهاز في الحال.</translation>
 <translation id="2439545803278355377">يُرجى إدخال رقم التعريف الشخصي الجديد. يجب ألا يقل رقم التعريف الشخصي عن أربعة أحرف، ويمكن أن يحتوي على حروف وأرقام وأحرف أخرى.</translation>
 <translation id="2440604414813129000">عرض الم&amp;صدر</translation>
+<translation id="2442916515643169563">ظل النص</translation>
 <translation id="2444119669991608829">أليست الصفحة باللغة <ph name="LANGUAGE" />؟</translation>
 <translation id="2445081178310039857">دليل الجذر للإضافة مطلوب.</translation>
 <translation id="2445484935443597917">إنشاء ملف شخصي جديد</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">آخر يوم للصلاحية</translation>
 <translation id="2739191690716947896">تصحيح الأخطاء</translation>
 <translation id="2739240477418971307">تغيير إعدادات إمكانية الوصول</translation>
+<translation id="274029851662193272">منخفضة</translation>
 <translation id="2740393541869613458">مراجعة مواقع الويب التي انتقل إليها المستخدم الذي يخضع للإشراف، و</translation>
 <translation id="2741912629735277980">عرض واجهة المستخدم على شاشة تسجيل الدخول</translation>
 <translation id="274290345632688601">‏استعادة تطبيقات وملفات Linux</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">الاختصار موجود من قَبل</translation>
 <translation id="2807517655263062534">هنا تظهر الملفات التي تم تنزيلها</translation>
 <translation id="2809586584051668049">و<ph name="NUMBER_ADDITIONAL_DISABLED" /> من الإضافات الأخرى</translation>
+<translation id="2812049959647166806">‏Thunderbolt غير متوافق.</translation>
 <translation id="2812944337881233323">تجربة الخروج وتسجيل الدخول مرة أخرى</translation>
 <translation id="2812989263793994277">عدم عرض أي صور</translation>
 <translation id="281390819046738856">تعذَّر توقيع الطلب.</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">المزود</translation>
 <translation id="2844169650293029770">‏جهاز USB-C (المنفذ الأمامي الأيسر)</translation>
 <translation id="2845382757467349449">عرض شريط الإشارات المرجعية دائمًا</translation>
-<translation id="2847759467426165163">إرسال إلى</translation>
 <translation id="284805635805850872">هل تريد إزالة البرامج الضارة؟</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">تعذّرت إزالة البرامج.</translation>
@@ -1296,6 +1304,7 @@
     رسالة الخادم: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">إضافة معرض الوسائط باستخدام الدليل</translation>
 <translation id="2910318910161511225">الاتصال بالشبكة وإعادة المحاولة</translation>
+<translation id="2910518940971897750">الحفظ في الملف الأصلي</translation>
 <translation id="2913331724188855103">السماح لمواقع الويب بحفظ بيانات ملفات تعريف الارتباط وقراءتها (موصى به)</translation>
 <translation id="2915102088417824677">عرض سِجلّ الأنشطة</translation>
 <translation id="2915873080513663243">المسح التلقائي</translation>
@@ -1360,12 +1369,14 @@
 <translation id="3013291976881901233">‏أجهزة MIDI</translation>
 <translation id="3015639418649705390">إعادة التشغيل الآن</translation>
 <translation id="3016329696181678353">تعذَّر ضبط <ph name="PRINTER_NAME" /> تلقائيًا. يُرجى تحديد تفاصيل الطابعة المتقدِّمة.</translation>
+<translation id="3016381065346027039">لا تتوفر إدخالات في السجلّ</translation>
 <translation id="3016641847947582299">تم تحديث المُكوّن</translation>
 <translation id="3016780570757425217">معرفة موقعك</translation>
 <translation id="3017079585324758401">الخلفية</translation>
 <translation id="3020183492814296499">الاختصارات</translation>
 <translation id="3020990233660977256">الرقم التسلسلي: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">فراشة</translation>
+<translation id="3021408157810018664">هل ترغب في حفظ التغييرات إلى الملفات الأصلية؟</translation>
 <translation id="3021426244864538700">الوصول إلى بيانات موقع الويب هذا</translation>
 <translation id="3021678814754966447">عرض م&amp;صدر الإطار</translation>
 <translation id="3022978424994383087">لم يتم استيعاب هذا.</translation>
@@ -1458,6 +1469,7 @@
 <translation id="3170072451822350649">يمكنك أيضًا تخطي تسجيل الدخول و<ph name="LINK_START" />التصفح كضيف<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">يحاول موقع ويب الوصول إلى إدخال الفيديو</translation>
 <translation id="3177909033752230686">لغة الصفحة:</translation>
+<translation id="3179982752812949580">خط النص</translation>
 <translation id="3181954750937456830">التصفُّح الآمن (يحميك ويحمي جهازك من مواقع الويب الضارة)</translation>
 <translation id="3182749001423093222">التدقيق الإملائي</translation>
 <translation id="3183139917765991655">مستورد الملف الشخصي</translation>
@@ -1510,7 +1522,6 @@
 <translation id="3275778913554317645">فتح كنافذة</translation>
 <translation id="3278001907972365362">‏حسابك (حساباتك) على Google تتطلب الانتباه</translation>
 <translation id="3279230909244266691">قد تستغرق هذه العملية بضع دقائق. جارٍ بدء الآلة الافتراضية.</translation>
-<translation id="3279741024917655738">عرض الفيديوهات بملء الشاشة على</translation>
 <translation id="3280237271814976245">الحفظ &amp;باسم...</translation>
 <translation id="3280243678470289153">‏الاستمرار في استخدام Chrome</translation>
 <translation id="3281892622610078515">الملفات والبرامج التي تم وضعها في وحدة العزل:</translation>
@@ -1532,7 +1543,7 @@
 <translation id="3303855915957856445">لم يتم العثور على أي نتائج بحث</translation>
 <translation id="3305389145870741612">يمكن أن تستغرق عملية التنسيق ثانيتين. يُرجى الانتظار.</translation>
 <translation id="3305661444342691068">‏فتح ملف PDF في تطبيق المعاينة</translation>
-<translation id="3306684685104080068">‏تفعيل الإرسال إلى الخدمات التي تستند إلى السحاب مثل Google Hangouts.</translation>
+<translation id="3307871847038842490">يتم السماح لهذه الصفحة بالحفظ في الملفات الأصلية.</translation>
 <translation id="3308006649705061278">‏الوحدة التنظيمية (OU)</translation>
 <translation id="3308116878371095290">تم منع هذه الصفحة من تخزين ملفات تعريف الارتباط.</translation>
 <translation id="3308134619352333507">الزر "إخفاء"</translation>
@@ -1637,7 +1648,6 @@
 <translation id="3462413494201477527">هل تريد إلغاء إنشاء الحساب؟</translation>
 <translation id="3464012987031883895">يحاول موقع ويب الوصول إلى إدخال الصوت</translation>
 <translation id="346431825526753">هذا هو حساب للأطفال يديره <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">بث ملف الفيديو أو الصوت</translation>
 <translation id="3468999815377931311">‏هاتف Android</translation>
 <translation id="3470442499439619530">إزالة هذا المستخدم</translation>
 <translation id="3473479545200714844">مكبّر الشاشة</translation>
@@ -1660,6 +1670,7 @@
 <translation id="3496213124478423963">تصغير</translation>
 <translation id="3497560059572256875">مشاركة رسومات الشعار المبتكرة</translation>
 <translation id="3505030558724226696">إبطال الوصول إلى الجهاز</translation>
+<translation id="3505635633742443645">‏يتعذّر استخدام منفذ HDMI لمحطة الإرساء عندما يكون منفذ USB من نوع C مُستخدم لإخراج الفيديو. يُرجى استخدام منفذ مختلف لواحد من هذه العروض.</translation>
 <translation id="3507421388498836150">الأذونات الحالية لـ "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">إعادة فحص أجهزة البلوتوث</translation>
 <translation id="3508920295779105875">اختيار مجلد آخر ...</translation>
@@ -1712,6 +1723,7 @@
 <translation id="3576324189521867626">تم التثبيت بنجاح</translation>
 <translation id="3578594933904494462">تجري مشاركة محتوى علامة التبويب هذه.</translation>
 <translation id="357886715122934472">‏يريد &lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; مشاركة طابعة &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; مع مجموعة تمتلكها: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. في حال موافقتك، سيتمكن جميع أعضاء المجموعة من الطباعة بهذه الطابعة.</translation>
+<translation id="357889014807611375">‏شبكة Wi-Fi ذات السعة المحدودة</translation>
 <translation id="3584169441612580296">التعرّف على الصور، والموسيقى، والوسائط الأخرى من الكمبيوتر وتغييرها</translation>
 <translation id="3587482841069643663">الكل</translation>
 <translation id="358796204584394954">اكتب هذه الشفرة في "<ph name="DEVICE_NAME" />" لإقرانه:</translation>
@@ -1722,6 +1734,7 @@
 <translation id="359283478042092570">الدخول</translation>
 <translation id="3593965109698325041">قيود اسم الشهادة</translation>
 <translation id="3596235046596950091">تفعيل خدمات السحاب</translation>
+<translation id="3599221874935822507">مرتفعة</translation>
 <translation id="3599863153486145794">‏يمسح السجل من كل الأجهزة التي تم تسجيل الدخول عليها. وقد يتضمن حسابك في Google نماذج أخرى من سجل التصفح في <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">معلومات طلب الويب</translation>
 <translation id="3600792891314830896">كتم صوت مواقع الويب التي تشغّل الصوت</translation>
@@ -1736,6 +1749,7 @@
 <translation id="3612673635130633812">‏تم تحميلها من قبل &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">عرض <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;فتح في علامة تبويب جديدة</translation>
+<translation id="3615073365085224194">يُرجى لمس مستشعر بصمات الإصبع بإصبعك.</translation>
 <translation id="3616113530831147358">المقاطع الصوتية</translation>
 <translation id="3616741288025931835">&amp;محو بيانات التصفح...</translation>
 <translation id="3617891479562106823">الخلفيات غير متاحة. يُرجى إعادة المحاولة لاحقًا.</translation>
@@ -1817,7 +1831,6 @@
 <translation id="3719826155360621982">الصفحة الرئيسية</translation>
 <translation id="3720996970802414353">التبديل على أي حال</translation>
 <translation id="3722108462506185496">حدث خطأ أثناء بدء تشغيل خدمة الآلة الافتراضية. يُرجى إعادة المحاولة.</translation>
-<translation id="3723158278575423087">‏مرحبًا بكم في تجربة الإرسال في Chromium!</translation>
 <translation id="3725367690636977613">صفحات</translation>
 <translation id="3726137731714254362">ستؤدي إزالة المجلَّدات من هنا إلى إيقاف المشاركة ولكنها لن تحذف الملفات.</translation>
 <translation id="3727148787322499904">سيؤثر تغيير هذا الإعداد في جميع الشبكات المشتركة</translation>
@@ -1852,7 +1865,6 @@
 <translation id="3764314093345384080">معلومات الإصدار التفصيلية</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{‏الاتصال بجهاز USB}zero{‏الاتصال بـ # من أجهزة USB}two{‏الاتصال بجهازي USB (#)}few{‏الاتصال بـ # أجهزة USB}many{‏ الاتصال بـ # جهاز USB}other{‏ الاتصال بـ # من أجهزة USB}}</translation>
 <translation id="3765246971671567135">تعذَّرت قراءة سياسة الوضع التجريبي بلا إنترنت.</translation>
-<translation id="3766223500670287046">تشغيل الشاشة عن بُعد</translation>
 <translation id="3768037234834996183">جارٍ مزامنة تفضيلاتك...</translation>
 <translation id="377050016711188788">المثلجات</translation>
 <translation id="3771294271822695279">ملفات فيديو</translation>
@@ -1925,7 +1937,6 @@
 <translation id="3857773447683694438">أبجد هوز حطي كلمن سعفص قرشت</translation>
 <translation id="3857807444929313943">رفع الإصبع، ثم اللمس مرة أخرى</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: تم إيقاف المزامنة مؤقتًا</translation>
-<translation id="3862134173397075045">‏مرحبًا بكم في تجربة الإرسال في Chrome!</translation>
 <translation id="3862693525629180217">التحقُّق عبر جهاز الاستشعار المضمَّن</translation>
 <translation id="3862788408946266506">‏يجب تثبيت التطبيق الذي يحمل سمة البيان "kiosk_only" في وضع الكشك على نظام تشغيل Chrome.</translation>
 <translation id="3865414814144988605">درجة الدقة</translation>
@@ -1943,7 +1954,7 @@
 <translation id="3878840326289104869">إنشاء مستخدم يخضع للإدارة</translation>
 <translation id="3879748587602334249">تطبيق إدارة التنزيل</translation>
 <translation id="3888550877729210209">تسجيل الملاحظات من خلال <ph name="LOCK_SCREEN_APP_NAME" /></translation>
-<translation id="388900914234409233">‏لشحن جهاز Chromebook هذا، يمكنك استخدام بطارية المصنّع الأصلي للجهاز المتوافقة.</translation>
+<translation id="388900914234409233">‏لشحن جهاز Chromebook هذا، يجب استخدام بطارية متوافقة من المصنّع الأصلي للجهاز.</translation>
 <translation id="3892414795099177503">‏إضافة OpenVPN / L2TP...</translation>
 <translation id="3893536212201235195">قراءة وتغيير إعدادات إمكانية الوصول</translation>
 <translation id="3893630138897523026">‏ChromeVox (التعليق المنطوق)</translation>
@@ -1974,6 +1985,7 @@
 <translation id="3926002189479431949">‏تم تغيير هاتف Smart Lock</translation>
 <translation id="3927932062596804919">رفض</translation>
 <translation id="3930737994424905957">جارٍ البحث عن أجهزة</translation>
+<translation id="3930968231047618417">لون الخلفية</translation>
 <translation id="3933283459331715412">استعادة كلمة المرور المحذوفة لـ <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;فتح ملف الصوت في علامة تبويب جديدة</translation>
 <translation id="3936925983113350642">ستكون كلمة المرور التي تختارها مطلوبة لاستعادة هذه الشهادة لاحقًا. يُرجى تسجيلها في مكان آمن.</translation>
@@ -1990,6 +2002,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">‏تمّ الاستيراد من IE</translation>
 <translation id="3950820424414687140">تسجيل الدخول</translation>
+<translation id="3950828138786918475">يتم السماح لعلامة التبويب هذه بالاطِّلاع على مجلد في جهازك.</translation>
 <translation id="3954354850384043518">جارية</translation>
 <translation id="3954469006674843813">‏<ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> هرتز)</translation>
 <translation id="3954953195017194676">‏ليست لديك أي سجلات أحداث WebRTC تم التقاطها مؤخرًا.</translation>
@@ -2008,6 +2021,7 @@
 <translation id="397105322502079400">جارٍ الحساب...</translation>
 <translation id="3975565978598857337">تعذّر الاتصال بخادم النطاق</translation>
 <translation id="397703832102027365">جارٍ الإنهاء...</translation>
+<translation id="3977886311744775419">لا يتم تنزيل التحديثات التلقائية على نوع الشبكة هذا، ولكن يمكنك التحقق من التحديثات يدويًا.</translation>
 <translation id="3979395879372752341">تمت إضافة إحدى الإضافات الجديدة (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">تفعيل <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">نوع الحفظ الذي تم إدخاله غير صالح.</translation>
@@ -2128,7 +2142,7 @@
 <translation id="4147911968024186208">يُرجى إعادة المحاولة. وإذا ظهر هذا الخطأ مرة أخرى، يُرجى التواصل مع ممثِّل الدعم.</translation>
 <translation id="4150125039112138020">|</translation>
 <translation id="4150201353443180367">عرض</translation>
-<translation id="4150234330364554482">‏يُرجى استخدام محطة إرساء الخاصة بالمصنّع الأصلي للجهاز والتي تم تصميمها للعمل مع Chromebook هذا.</translation>
+<translation id="4150234330364554482">‏يُرجى استخدام محطة إرساء خاصة بالمصنّع الأصلي للجهاز ومصمّمة للعمل مع جهاز Chromebook هذا.</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{علامة تبويب واحدة}zero{# من علامات التبويب}two{علامتا تبويب (#)}few{# علامات تبويب}many{# علامة تبويب}other{# من علامات التبويب}}</translation>
 <translation id="4154664944169082762">بصمات الأصابع</translation>
 <translation id="4157869833395312646">‏تشفير عن طريق بوابة خادم Microsoft</translation>
@@ -2147,6 +2161,7 @@
 <translation id="4194570336751258953">تفعيل الضغط للنقر</translation>
 <translation id="4195643157523330669">الفتح في علامة تبويب جديدة</translation>
 <translation id="4195814663415092787">المتابعة من حيث توقفت</translation>
+<translation id="4197940474316761015">ستتمكن الإضافة <ph name="ORIGIN" /> من حفظ التغييرات مباشرةً في الملفات التالية. يمكن لهذا الموقع الإلكتروني حفظ التغييرات فقط عندما تكون علامة التبويب هذه مفتوحة.</translation>
 <translation id="4198146608511578238">‏ما عليك سوى الضغط على رمز Launcher باستمرار للتحدث إلى مساعد Google.</translation>
 <translation id="4200689466366162458">كلمات مخصصة</translation>
 <translation id="4200983522494130825">علا&amp;مة تبويب جديدة</translation>
@@ -2194,7 +2209,6 @@
 <translation id="4267953847983678297">الاتصال بشبكة الجوّال تلقائيًا</translation>
 <translation id="4268025649754414643">تشفير المفتاح</translation>
 <translation id="4270393598798225102">الإصدار <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">لا توجد أي مطابقات</translation>
 <translation id="4275663329226226506">الوسائط</translation>
 <translation id="4275830172053184480">إعادة تشغيل جهازك</translation>
 <translation id="4278101229438943600">المساعد جاهز</translation>
@@ -2343,6 +2357,7 @@
 <translation id="4533985347672295764">وقت وحدة المعالجة المركزية</translation>
 <translation id="4534661889221639075">يُرجى إعادة المحاولة.</translation>
 <translation id="4535127706710932914">الملف الشخصي التلقائي</translation>
+<translation id="4535767533210902251">يتوفَّر مستشعر بصمات الإصبع في الزر في أعلى يمين لوحة المفاتيح. يمكنك لمسه برفقٍ بأي إصبع.</translation>
 <translation id="4538684596480161368">حظر المكونات الإضافية غير المحمية دومًا على <ph name="HOST" /></translation>
 <translation id="4538792345715658285">تمّ التثبيت بموجب سياسة المؤسسة.</translation>
 <translation id="4542520061254486227">قراءة بياناتك على <ph name="WEBSITE_1" /> و<ph name="WEBSITE_2" /></translation>
@@ -2376,6 +2391,7 @@
 <translation id="457386861538956877">المزيد...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">إقران جهاز بلوتوث</translation>
+<translation id="4578012756826807359">تم حذف بيانات تسجيل الدخول بنجاح.</translation>
 <translation id="4579581181964204535">يتعذّر إرسال <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">‏حدث خطأ أثناء استعادة Linux</translation>
 <translation id="4582563038311694664">إعادة تعيين كل الإعدادات</translation>
@@ -2493,7 +2509,6 @@
 <translation id="4763830802490665879">سيتم محو ملفات تعريف الارتباط من مواقع متعددة عند الخروج.</translation>
 <translation id="4765582662863429759">‏للسماح لتطبيق "رسائل Android" بترحيل الرسائل النصية من هاتفك إلى جهاز Chromebook</translation>
 <translation id="4768332406694066911">لديك شهادات تحدد هويتك من هذه المؤسسات</translation>
-<translation id="4772404146526168240">كلتا الشاشتين</translation>
 <translation id="4776146737004271126">‏فتح إعدادات Android</translation>
 <translation id="4776917500594043016">كلمة مرور <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">‏متجر Play</translation>
@@ -2601,7 +2616,6 @@
 <translation id="4927846293686536410">‏سجّل الدخول للحصول على الإشارات المرجعية، والسجلّ، وكلمات المرور، والإعدادات الأخرى على جميع أجهزتك. سيتم أيضًا تسجيل دخولك تلقائيًا إلى خدمات Google.</translation>
 <translation id="4929386379796360314">وجهات الطباعة</translation>
 <translation id="4930714375720679147">تفعيل</translation>
-<translation id="4931132176527519925">استخدام النسخ المطابقة دائمًا</translation>
 <translation id="4932733599132424254">التاريخ</translation>
 <translation id="4933484234309072027">مضمن في <ph name="URL" /></translation>
 <translation id="493571969993549666">إضافة مستخدم تحت الإشراف</translation>
@@ -2641,6 +2655,7 @@
 <translation id="4992066212339426712">إعادة الصوت</translation>
 <translation id="4992458225095111526">‏تأكيد Powerwash</translation>
 <translation id="4992473555164495036">لقد قيّد المشرف طرق الإدخال المتاحة.</translation>
+<translation id="4992866843815555470">تحتاج محطة الإرساء إلى الصيانة. ستتوقف محطة الإرساء عن العمل في حال لم تتضمن مروحة تبريد تعمل.</translation>
 <translation id="4992926179187649719">‏تفعيل "Ok Google"</translation>
 <translation id="4994474651455208930">السماح لمواقع الويب بأن تطلب أن تصبح معالجات تلقائية للبروتوكولات</translation>
 <translation id="4994754230098574403">الإعداد</translation>
@@ -2688,7 +2703,7 @@
 <translation id="5072836811783999860">عرض الإشارات المرجعية المدارة</translation>
 <translation id="5074318175948309511">قد تحتاج هذه الصفحة إلى إعادة التحميل قبل تنفيذ الإعدادات الجديدة.</translation>
 <translation id="5075131525758602494">‏أدخل رمز PIN لشريحة SIM</translation>
-<translation id="507514548843781244">يمكنك عرض بيانات تسجيل الدخول المخزنة على مفتاح الأمان ومحوها.</translation>
+<translation id="507514548843781244">يمكنك عرض بيانات تسجيل الدخول المخزّنة على مفتاح الأمان ومحوها.</translation>
 <translation id="5078638979202084724">وضع إشارات على كل علامات التبويب</translation>
 <translation id="5078796286268621944">رقم التعريف الشخصي غير صحيح</translation>
 <translation id="5079950360618752063">استخدام كلمة مرور مُقترَحة</translation>
@@ -2779,7 +2794,6 @@
 <translation id="5233231016133573565">معرِّف العملية</translation>
 <translation id="5233638681132016545">علامة تبويب جديدة</translation>
 <translation id="5233736638227740678">ل&amp;صق</translation>
-<translation id="5234764350956374838">رفض</translation>
 <translation id="5235050375939235066">هل تريد إلغاء تثبيت التطبيق؟</translation>
 <translation id="5235750401727657667">استبدال الصفحة التي تشاهدها عند فتح علامة تبويب جديدة</translation>
 <translation id="5238278114306905396">تمت إزالة التطبيق "<ph name="EXTENSION_NAME" />" تلقائيًا.</translation>
@@ -2844,6 +2858,7 @@
 <translation id="5319359161174645648">‏توصي Google باستخدام Chrome</translation>
 <translation id="532247166573571973">قد يتعذر الوصول إلى الخادم. حاول مرة أخرى.</translation>
 <translation id="5324780743567488672">تعيين المنطقة الزمنية تلقائيا باستخدام موقعك</translation>
+<translation id="5327129740973624286">يتم السماح لخدمة <ph name="WINDOW_TITLE" /> بالحفظ في الملفات الأصلية.</translation>
 <translation id="5327248766486351172">الاسم</translation>
 <translation id="5327570636534774768">صُنِّفَ الجهاز للعمل تحت إدارة نطاق آخر. يُرجى إزالة تراخيص وموارد الجهاز من هذا النطاق قبل إعداد الوضع التجريبي.</translation>
 <translation id="532943162177641444">يُرجى نقر الإشعار على جهاز <ph name="PHONE_NAME" /> لإعداد نقطة اتصال الجوّال التي يمكن لهذا الجهاز استخدامها.</translation>
@@ -2960,7 +2975,7 @@
 <translation id="5496587651328244253">تنظيم</translation>
 <translation id="549673810209994709">تعذرت ترجمة هذه الصفحة.</translation>
 <translation id="5499313591153584299">قد يلحق هذا الملف الضرر بجهاز الكمبيوتر.</translation>
-<translation id="5500345327355928305">‏لتجنب مشاكل الشحن والأداء، يمكنك استخدام محوِّل طاقة USB من نوع C أو محوِّل طاقة المصنّع الأصلي للجهاز المتوافق.</translation>
+<translation id="5500345327355928305">‏لتجنّب مشاكل الشحن والأداء، يمكنك استخدام محوِّل طاقة USB من نوع C أو محوِّل طاقة متوافق من المصنّع الأصلي للجهاز.</translation>
 <translation id="5502500733115278303">تمّ الاستيراد من متصفّح فايرفوكس</translation>
 <translation id="5507756662695126555">عدم الإنكار</translation>
 <translation id="5509693895992845810">&amp;حفظ باسم...</translation>
@@ -2986,7 +3001,6 @@
 <translation id="5533001281916885985">يريد <ph name="SITE_NAME" /></translation>
 <translation id="5534304873398226603">إلغاء صورة أو فيديو</translation>
 <translation id="5535941515421698170">إزالة البيانات الحالية من هذا الجهاز أيضًا</translation>
-<translation id="5537725057119320332">إرسال</translation>
 <translation id="5539221284352502426">رفض الخادم كلمة المرور التي أدخلتَها. وتتضمن الأسباب المحتملة ما يلي: كلمة المرور قصيرة جدًا. يجب أن تتضمن كلمة المرور أرقامًا أو رموزًا. يجب أن تكون كلمة المرور مختلفة عن كلمات المرور السابقة.</translation>
 <translation id="5541687815721799001">استخدام التطبيق</translation>
 <translation id="5542132724887566711">الملف التعريفي</translation>
@@ -3295,7 +3309,6 @@
 <translation id="5997337190805127100">مزيد من المعلومات عن إمكانية الوصول إلى موقع الويب</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> من نتائج البحث عن "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">الأصوات المُفضَّلة</translation>
-<translation id="6005695835120147974">موجّه الوسائط</translation>
 <translation id="6006484371116297560">كلاسيكي</translation>
 <translation id="6007240208646052708">البحث الصوتي غير متاح بلغتك.</translation>
 <translation id="6009781704028455063">جهاز استشعار مضمَّن</translation>
@@ -3380,7 +3393,7 @@
 <translation id="6112294629795967147">اللمس لتغيير الحجم</translation>
 <translation id="6112931163620622315">تحقَّق من هاتفك</translation>
 <translation id="6112952769866305444">تعديل شخص، <ph name="PROFILE_NAME" />، <ph name="USERNAME" /></translation>
-<translation id="6113942107547980621">‏لاستخدام Smart Lock، يمكنك التبديل الملف الشخصي للمستخدِم الأساسي على هاتفك.</translation>
+<translation id="6113942107547980621">‏لاستخدام Smart Lock، يمكنك التبديل إلى الملف الشخصي للمستخدِم الأساسي على هاتفك.</translation>
 <translation id="6116338172782435947">الاطلاع على النصوص والصور التي تم نسخها إلى الحافظة</translation>
 <translation id="6116921718742659598">تغيير إعدادات اللغة والإدخال</translation>
 <translation id="6120205520491252677">جارٍ إضافة هذه الصفحة إلى شاشة البدء...</translation>
@@ -3496,7 +3509,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{طابعة جديدة على شبكتك}zero{طابعات جديدة على شبكتك}two{طابعتان جديدتان على شبكتك}few{طابعات جديدة على شبكتك}many{طابعات جديدة على شبكتك}other{طابعات جديدة على شبكتك}}</translation>
 <translation id="6286708577777130801">تفاصيل كلمة المرور المحفوظة</translation>
 <translation id="6289452883081499048">‏الاستفادة من خدمات Google المخصّصة مثل Google Play</translation>
-<translation id="6290556621549272952">‏يمكنك استخدام هذه الميزة لعرض المحتوى من Chromium على التلفزيون أو غيره من الأجهزة.</translation>
 <translation id="6291949900244949761">‏طلب الإذن في حال محاولة أحد المواقع الوصول إلى أجهزة USB (مُوصى به)</translation>
 <translation id="6291953229176937411">إ&amp;ظهار في الباحث</translation>
 <translation id="6295158916970320988">جميع المواقع</translation>
@@ -3560,6 +3572,7 @@
 <translation id="6395423953133416962">إرسال <ph name="BEGIN_LINK1" />معلومات النظام<ph name="END_LINK1" /> و<ph name="BEGIN_LINK2" />المقاييس<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">حظر مواقع الويب من استخدام مستشعرات الحركة</translation>
 <translation id="6397094776139756010">خيارات التخصيص والمزامنة</translation>
+<translation id="6397449385184089588">ستتمكن الإضافة <ph name="ORIGIN" /> من حفظ التغييرات مباشرة في الملفات في المجلد التالي. يمكن لهذا الموقع الإلكتروني حفظ التغييرات فقط عندما تكون علامة التبويب هذه مفتوحة.</translation>
 <translation id="6398715114293939307">‏إزالة متجر Google Play</translation>
 <translation id="6398765197997659313">إنهاء وضع ملء الشاشة</translation>
 <translation id="6399774419735315745">الجاسوسة</translation>
@@ -3604,11 +3617,13 @@
 <translation id="6455264371803474013">على مواقع إلكترونية محددة</translation>
 <translation id="6455894534188563617">&amp;مجلد جديد</translation>
 <translation id="6456394469623773452">جيدة</translation>
+<translation id="6456955391422100996">تمت إزالة الإعلان.</translation>
 <translation id="645705751491738698">متابعة منع تشغيل جافا سكريبت</translation>
 <translation id="6458701200018867744">تعذَّر التحميل (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">استخدام التحديد للبحث</translation>
 <translation id="6459799433792303855">تم نقل نافذة نشطة إلى شاشة عرض أخرى.</translation>
 <translation id="6460601847208524483">البحث عن التالي</translation>
+<translation id="6461170143930046705">جارٍ البحث عن شبكات...</translation>
 <translation id="6463795194797719782">ت&amp;عديل</translation>
 <translation id="6466988389784393586">ف&amp;تح كل الإشارات المرجعية</translation>
 <translation id="6467304607960172345">تحسين الفيديوهات بملء الشاشة</translation>
@@ -3647,6 +3662,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">أنت متصل بشبكة من نوع <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">مشاركة</translation>
 <translation id="6528513914570774834">السماح للمستخدمين الآخرين لهذا الجهاز باستخدام هذه الشبكة</translation>
 <translation id="652948702951888897">‏سجل Chrome</translation>
@@ -3743,7 +3759,6 @@
 <translation id="6680650203439190394">تقييم</translation>
 <translation id="6681668084120808868">التقاط صورة</translation>
 <translation id="6681964764822470072">سيتم إلغاء تثبيت "<ph name="APP_NAME" />".</translation>
-<translation id="6685083257944113180">إيقاف، <ph name="SINK_NAME" />، <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">‏فتح Google Play</translation>
 <translation id="6686490380836145850">إغلاق علامات  التبويب في الجهة  اليسرى.</translation>
 <translation id="6686817083349815241">حفظ كلمة المرور</translation>
@@ -3851,6 +3866,7 @@
 <translation id="6845038076637626672">فتح في وضع التكبير</translation>
 <translation id="6845325883481699275">‏المساعدة في تحسين أمان Chrome</translation>
 <translation id="6848388270925200958">تمتلك الآن بعض البطاقات التي يمكن استخدامها فقط على هذا الجهاز</translation>
+<translation id="6850286078059909152">لون النص</translation>
 <translation id="6851497530878285708">تم تفعيل التطبيق</translation>
 <translation id="6853388645642883916">خدمة التحديث خاملة</translation>
 <translation id="68541483639528434">إغلاق علامات التبويب الأخرى</translation>
@@ -3900,7 +3916,6 @@
 <translation id="6923132443355966645">التمرير / النقر على</translation>
 <translation id="6923633482430812883">‏حدث خطأ أثناء تحميل المشاركة. لذا يُرجى التحقّق من أن خادم الملفات الذي تتصل به يدعم بروتوكول SMB الإصدار 2 أو الإصدارات الأحدث.</translation>
 <translation id="6930036377490597025">مفتاح الأمان الخارجي أو جهاز الاستشعار المدمج</translation>
-<translation id="6930242544192836755">المدة</translation>
 <translation id="693807610556624488">تتجاوز عملية الكتابة الحد الأقصى لطول السمة على: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">يُرجى تسجيل الدخول إلى <ph name="TOKEN_NAME" /> للمصادقة على <ph name="HOST_NAME" /> باستخدام شهادتك.</translation>
 <translation id="6943176775188458830">إلغاء الطباعة</translation>
@@ -3914,6 +3929,7 @@
 <translation id="6951153907720526401">معالجات الدفع</translation>
 <translation id="6951663584153258142">تطلب منك مؤسستك تحديث هذا الجهاز.</translation>
 <translation id="6953878494808481632">معلومات ذات صلة</translation>
+<translation id="6953916367503892689">{0,plural, =1{ملف واحد: <ph name="FILES" />}zero{ملفات: <ph name="FILES" />}two{ملفان: <ph name="FILES" />}few{ملفات: <ph name="FILES" />}many{ملفات: <ph name="FILES" />}other{ملفات: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">فحص النوافذ المنبثقة</translation>
 <translation id="6957044667612803194">لا يوفّر مفتاح الأمان هذا أرقام التعريف الشخصية</translation>
 <translation id="6957231940976260713">اسم الخدمة</translation>
@@ -4057,7 +4073,7 @@
 <translation id="7143092389027215216">جارٍ بدء الوضع التجريبي</translation>
 <translation id="7143207342074048698">اتصال</translation>
 <translation id="7144878232160441200">إعادة المحاولة</translation>
-<translation id="714687768418476028">لا يتم حماية مفتاح الأمان من خلال رقم تعريف شخصي. يُرجى إنشاء رقم تعريف شخصي أولاً لإدارة بيانات تسجيل الدخول.</translation>
+<translation id="714687768418476028">مفتاح الأمان غير محمي برقم تعريف شخصي. يُرجى إنشاء رقم تعريف شخصي أولاً لإدارة بيانات تسجيل الدخول.</translation>
 <translation id="7149893636342594995">آخر 24 ساعة</translation>
 <translation id="715118844758971915">الطابعات التقليدية</translation>
 <translation id="7152478047064750137">لا تتطلب هذه الإضافة أذونات خاصة</translation>
@@ -4126,7 +4142,6 @@
 <translation id="7254554697254365959">تعذرت ترجمة هذه الصفحة.</translation>
 <translation id="7254951428499890870">هل تريد فعلًا تشغيل "<ph name="APP_NAME" />" في الوضع التشخيصي؟</translation>
 <translation id="7255002516883565667">تمتلك الآن بطاقة واحدة يمكنك استخدامها فقط على هذا الجهاز.</translation>
-<translation id="7255220508626648026">إرسال: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">يُرجى لمس مفتاح الأمان مرة أخرى لتأكيد إعادة الضبط. سيتم محو جميع المعلومات المحفوظة في مفتاح الأمان، بما في ذلك رقم تعريفه الشخصي.</translation>
 <translation id="7255935316994522020">تطبيق</translation>
 <translation id="7256069762010468647">يستخدم موقع الويب الكاميرا.</translation>
@@ -4260,6 +4275,7 @@
 <translation id="7456142309650173560">مطوري البرامج</translation>
 <translation id="7456847797759667638">فتح موقع...</translation>
 <translation id="7458168200501453431">‏يُستخدَم المدقق الإملائي نفسه الذي يتم استخدامه في "بحث Google". يتم إرسال النص الذي تكتبه في المتصفِّح إلى Google.</translation>
+<translation id="7460045493116006516">التصميم الحالي الذي ثبَّتّه</translation>
 <translation id="7461924472993315131">تثبيت</translation>
 <translation id="746216226901520237">‏في المرة القادمة، سيفتح هاتفك قفل جهاز <ph name="DEVICE_TYPE" />. يمكنك إيقاف Smart Lock في "الإعدادات".</translation>
 <translation id="7463006580194749499">إضافة شخص</translation>
@@ -4319,6 +4335,7 @@
 <translation id="7554791636758816595">علامة تبويب جديدة</translation>
 <translation id="7556033326131260574">‏لم يتمكن Smart Lock من التحقق من حسابك. اكتب كلمة المرور للدخول.</translation>
 <translation id="7556242789364317684">‏للأسف، يتعذّر على <ph name="SHORT_PRODUCT_NAME" /> استعادة إعداداتك. ولإصلاح الخطأ، يجب على <ph name="SHORT_PRODUCT_NAME" /> إعادة تعيين جهازك باستخدام Powerwash.</translation>
+<translation id="7559444627302317199">يُرجى التحقُّق من الاتصال بالشبكة وإعادة المحاولة.</translation>
 <translation id="7559719679815339381">‏يُرجى الانتظار ...بينما يتم تحديث تطبيق Kiosk. لا تقم بإزالة جهاز USB.</translation>
 <translation id="7561196759112975576">دومًا</translation>
 <translation id="7563991800558061108">‏لتلافي هذا الخطأ، سيلزمك تسجيل الدخول إلى حساب Google
@@ -4561,7 +4578,6 @@
 <translation id="7887334752153342268">تكرار</translation>
 <translation id="7887864092952184874">ماوس بلوتوث مقترن</translation>
 <translation id="7889565820482017512">حجم شاشة العرض</translation>
-<translation id="7889966925761734854">البحث بالتمرير</translation>
 <translation id="7893008570150657497">الوصول إلى الصور والموسيقى والوسائط الأخرى من جهاز الكمبيوتر</translation>
 <translation id="7893153962594818789">تم إيقاف تشغيل البلوتوث في جهاز <ph name="DEVICE_TYPE" /> هذا. أدخل كلمة مرورك، وشغّل البلوتوث.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (التلقائي)</translation>
@@ -4569,7 +4585,6 @@
 <translation id="7898627924844766532">البقاء مثبتًا في شريط الأدوات</translation>
 <translation id="7898725031477653577">ترجمة اللغة دومًا</translation>
 <translation id="790040513076446191">معالجة الإعدادات المتعلقة بالخصوصية</translation>
-<translation id="7902874111237641165">‏Smooth Motion [تجريبية]</translation>
 <translation id="7903345046358933331">أصبحت الصفحة غير مستجيبة. يمكنك الانتظار حتى تصبح مستجيبة أو إغلاقها.</translation>
 <translation id="7903742244674067440">لديك شهادات في الملف تحدد صلاحيات الشهادة هذه</translation>
 <translation id="7903925330883316394">الأداة: <ph name="UTILITY_TYPE" /></translation>
@@ -4681,6 +4696,7 @@
 <translation id="8037117027592400564">قراءة جميع النصوص المنطوقة باستخدام الكلام المركب</translation>
 <translation id="8037357227543935929">الطلب (تلقائي)</translation>
 <translation id="803771048473350947">ملف</translation>
+<translation id="8042142357103597104">درجة تعتيم النص</translation>
 <translation id="8044899503464538266">بطيء</translation>
 <translation id="8045253504249021590">‏تم إيقاف المزامنة عبر لوحة تحكم Google.</translation>
 <translation id="8045923671629973368">‏إدخال معرّف التطبيق أو عنوان URL للسوق الإلكتروني</translation>
@@ -4717,7 +4733,6 @@
     <ph name="BEGIN_PARAGRAPH5" />يمكنك إيقاف هذه الخدمة في "الإعدادات".<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">أرقام التعريف الشخصية غير متطابقة</translation>
 <translation id="809792523045608178">يستخدم <ph name="IDS_SHORT_PRODUCT_NAME" /> إعدادات الخادم الوكيل من إضافة.</translation>
-<translation id="8099495042588009598">المزيد من الأذونات</translation>
 <translation id="8101987792947961127">‏يتطلب إجراء Powerwash بعد عملية إعادة التشغيل التالية</translation>
 <translation id="8102159139658438129">يُرجى الانتقال إلى <ph name="LINK_BEGIN" />الإعدادات<ph name="LINK_END" /> للاطِّلاع على خيارات لهاتفك المتَّصل</translation>
 <translation id="8104696615244072556">‏استخدم وظيفة Powerwash <ph name="IDS_SHORT_PRODUCT_NAME" /> وارجع إلى الإصدار السابق.</translation>
@@ -4769,8 +4784,10 @@
     أعتقد أنه لا حاجة إلى حظر هذا الموقع الإلكتروني.</translation>
 <translation id="8184288427634747179">التبديل إلى <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">مزيد من المعلومات</translation>
+<translation id="8184472985242519288">مُوحَّدة</translation>
 <translation id="8185331656081929126">عرض إشعارات عند اكتشاف طابعات جديدة على الشبكة</translation>
 <translation id="8186609076106987817">تعذر على الخادم العثور على الملف.</translation>
+<translation id="8187950680397073878">ستتمكن الإضافة <ph name="ORIGIN" /> من الاطِّلاع على جميع الملفات في المجلد التالي. يمكن لهذا الموقع الإلكتروني الاطِّلاع على التغييرات فقط عندما تكون علامة التبويب هذه مفتوحة.</translation>
 <translation id="8188389033983459049">التحقُّق من إعدادات جهازك وتفعيلها للاستمرار</translation>
 <translation id="8190193592390505034">جارٍ الاتصال بـ <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">إدارة التطبيقات والإضافات والمظاهر</translation>
@@ -4874,9 +4891,8 @@
 <translation id="833986336429795709">لفتح هذا الرابط، اختر أحد التطبيقات.</translation>
 <translation id="8342861492835240085">اختيار مجموعة</translation>
 <translation id="834290227245955730">رقم التعريف الشخصي غير صحيح. مرات إعادة المحاولة المتبقية: <ph name="RETRIES" /></translation>
-<translation id="8343956361364550006">استخدام معدل نقل بيانات عالٍ للحصول على أفضل فيديو أو صورة متحركة. قد لا يتمكن الأشخاص الذين لديهم اتصال بطيء من الاطّلاع على المحتوى.</translation>
 <translation id="8351419472474436977">أصبح بإمكان هذه الإضافة التحكم في إعدادات الخادم الوكيل التابعة لك، مما يعني أن بإمكانها تغيير أي إجراء لك على الإنترنت أو قطعه أو التجسس عليه. إذا كنت غير متيقن من سبب حدوث هذا التغيير، فأنت لا ترغب فيه على الأرجح.</translation>
-<translation id="8351630282875799764">البطارية غير مشحونة</translation>
+<translation id="8351630282875799764">البطارية لا تشحن</translation>
 <translation id="835238322900896202">حدث خطأ أثناء إلغاء التثبيت. يُرجى إلغاء التثبيت من خلال الوحدة الطرفية.</translation>
 <translation id="8352772353338965963">يمكنك إضافة حساب إلى الدخول المتعدد. يمكن الدخول إلى جميع الحسابات التي تم تسجيل الدخول إليها بدون كلمة مرور، لذا فإن هذه الميزة لا يجب استخدامها إلا مع الحسابات الموثوق بها.</translation>
 <translation id="8353683614194668312">يمكنه:</translation>
@@ -4907,9 +4923,11 @@
 <translation id="839736845446313156">تسجيل</translation>
 <translation id="8398877366907290961">المتابعة على كلّ حال</translation>
 <translation id="8400146488506985033">إدارة الأشخاص</translation>
+<translation id="8400444932218572097">ستتمكن الإضافة <ph name="ORIGIN" /> من حفظ التغييرات تلقائيًا في الملفات في المجلد التالي. يمكن لهذا الموقع الإلكتروني حفظ التغييرات فقط عندما تكون علامة التبويب هذه مفتوحة.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">السؤال أولاً (موصى به)</translation>
 <translation id="8418445294933751433">&amp;العرض في علامة تبويب</translation>
+<translation id="8418905021510211421">يتم السماح لهذه الصفحة بالاطِّلاع على مجلد في جهازك.</translation>
 <translation id="8419098111404128271">نتائج البحث عن "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">مرحبًا بك في جهازك <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8425213833346101688">تغيير</translation>
@@ -4929,6 +4947,7 @@
 <translation id="8438566539970814960">تحسين عمليات البحث والتصفُّح</translation>
 <translation id="8439506636278576865">عرض ترجمة الصفحات المكتوبة بهذه اللغة</translation>
 <translation id="8440630305826533614">‏تطبيقات Linux</translation>
+<translation id="844241640324986723">تعذّر حذف بيانات تسجيل الدخول.</translation>
 <translation id="8443338615972234259">يُرجى إنشاء حساب جديد للمستخدم تحت الإشراف الآن.</translation>
 <translation id="8446884382197647889">مزيد من المعلومات</translation>
 <translation id="8447409163267621480">‏تضمين إما مفتاح Ctrl أو Alt</translation>
@@ -4944,8 +4963,6 @@
 <translation id="8461914792118322307">الخادم الوكيل</translation>
 <translation id="8463215747450521436">ربما يكون قد تم حذف هذا المستخدم الخاضع للإدارة أو تم إيقافه بواسطة المدير. يُرجى الاتصال بالمدير إذا كنت تريد متابعة تسجيل دخولك باسم هذا المستخدم.</translation>
 <translation id="846374874681391779">شريط التنزيلات</translation>
-<translation id="8463807869745732775">"&gt;
-    بيانات تسجيل الدخول المخزّنة في مفتاح الأمان</translation>
 <translation id="8463955938112983119">تم إيقاف <ph name="PLUGIN_NAME" />.</translation>
 <translation id="8464132254133862871">حساب المستخدم هذا غير مؤهل للخدمة.</translation>
 <translation id="8465252176946159372">غير صالح</translation>
@@ -5011,6 +5028,7 @@
 <translation id="8569002732135253578">يتم الآن طباعة <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">لم يتم العثور على أي وجهات</translation>
 <translation id="8571213806525832805">الأسابيع الـ4 الأخيرة</translation>
+<translation id="8573403125070227391">‏يستخدم هذا الإعلان العديد من الموارد لجهازك، لذلك فقد أزله Chrome.</translation>
 <translation id="8574990355410201600">السماح دومًا بتشغيل الصوت على <ph name="HOST" /></translation>
 <translation id="8575286410928791436">يُرجى الضغط مع الاستمرار على <ph name="KEY_EQUIVALENT" /> للإنهاء</translation>
 <translation id="8578639784464423491">لا يمكن أن تتجاوز الكلمة 99 حرفًا.</translation>
@@ -5034,13 +5052,13 @@
 <translation id="8609465669617005112">التحريك إلى أعلى</translation>
 <translation id="8610103157987623234">تنسيق غير صحيح، يُرجى إعادة المحاولة</translation>
 <translation id="8615618338313291042">تطبيق وضع التصفح المتخفي: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">تظليل القطرات</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">حالة التجوال</translation>
 <translation id="8620765578342452535">تهيئة اتصالات الشبكة</translation>
 <translation id="8621866727807194849">‏هناك برنامج ضار على جهاز الكمبيوتر. يعمل متصفِّح Chrome على إزالته وعلى استعادة إعداداتك وإيقاف الإضافات. سيؤدي هذا الإجراء إلى عمل متصفِّحك بشكلٍ طبيعي من جديد.</translation>
 <translation id="8621979332865976405">مشاركة الشاشة بالكامل</translation>
 <translation id="862542460444371744">&amp;الإضافات</translation>
-<translation id="8627151598708688654">تحديد مصدر</translation>
 <translation id="862727964348362408">معلقة</translation>
 <translation id="862750493060684461">‏ذاكرة التخزين المؤقت للغة CSS</translation>
 <translation id="8627795981664801467">الاتصالات الآمنة فقط</translation>
@@ -5094,6 +5112,7 @@
 <translation id="8688579245973331962">ألا ترى اسمك؟</translation>
 <translation id="8688591111840995413">كلمة مرور سيئة</translation>
 <translation id="8688672835843460752">متوفِّر</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">فتح ال&amp;موقع...</translation>
 <translation id="869884720829132584">قائمة التطبيقات</translation>
 <translation id="869891660844655955">تاريخ انتهاء الصلاحية</translation>
@@ -5257,6 +5276,7 @@
 <translation id="891365694296252935">‏يمكنك إرسال بيانات الاستخدام والتشخيص. يرسل هذا الجهاز حاليًا بيانات استخدام التطبيق والجهاز والتشخيص تلقائيًا إلى Google. لن يتم استخدام ذلك لتعريف حسابك الفرعي وسيساعد في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. ويفرض المالك هذ الإعداد. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات" لحسابك الفرعي، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">جارٍ تحميل الاقتراح</translation>
 <translation id="8916476537757519021">الإطار الفرعي للتصفح المتخفي: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780">يتم السماح لخدمة <ph name="WINDOW_TITLE" /> بقراءة مجلد على جهازك.</translation>
 <translation id="8919275547519617350">لإضافة كل كلمات المرور على جميع أجهزتك، يُرجى تفعيل المزامنة.</translation>
 <translation id="8921366488406707015">جارٍ التحقُّق من مفتاح الأمان...</translation>
 <translation id="8922013791253848639">السماح دائمًا بالإعلانات على هذا الموقع</translation>
@@ -5286,7 +5306,6 @@
 <translation id="8965037249707889821">إدخال كلمة المرور القديمة</translation>
 <translation id="8966870118594285808">إعادة فتح علامة تبويب في حال إغلاقها عن طريق الخطأ</translation>
 <translation id="8967866634928501045">‏يُرجى الضغط على Alt+Shift+A للعرض.</translation>
-<translation id="8970203673128054105">عرض قائمة وضع الإرسال</translation>
 <translation id="89720367119469899">خروج</translation>
 <translation id="8972513834460200407">‏يُرجى التحقق مع مشرف الشبكة للتأكد من عدم حظر الجدار الناري للتنزيلات من خوادم Google.</translation>
 <translation id="8973557916016709913">إزالة مستوى التكبير/التصغير</translation>
@@ -5435,6 +5454,7 @@
 <translation id="9214520840402538427">عفوًا!  لقد انتهت مهلة بدء تشغيل سمات وقت التثبيت. يُرجى الاتصال بممثل الدعم.</translation>
 <translation id="9214695392875603905">كب كيك</translation>
 <translation id="9215293857209265904">تمت إضافة "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="9216712190298404438">ستتمكن الإضافة <ph name="ORIGIN" /> من حفظ التغييرات مباشرةً في الملف التالي. يمكن لهذا الموقع الإلكتروني حفظ التغييرات فقط عندما تكون علامة التبويب هذه مفتوحة.</translation>
 <translation id="9218430445555521422">تعيين كافتراضي</translation>
 <translation id="9219103736887031265">الصور</translation>
 <translation id="9220525904950070496">إزالة الحساب</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index 5adc7a0..bdd847d 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Грешка при стартирането на виртуалната машина. Моля, опитайте отново.</translation>
 <translation id="1089439967362294234">Промяна на паролата</translation>
 <translation id="1090126737595388931">Не се изпълняват приложения на заден план</translation>
+<translation id="1090290614672149983">Да се запазят ли промените в оригиналния файл?</translation>
 <translation id="1090918500949388876">Осъществявайте достъп до Асистент всеки път, когато кажете „Ok Google“ при включен екран</translation>
 <translation id="1091767800771861448">Натиснете „ESCAPE“ за пропускане (само в неофициалните версии).</translation>
 <translation id="1093457606523402488">Видими мрежи:</translation>
 <translation id="1094607894174825014">Операция за четене или запис с невалидно отместване бе заявена на: <ph name="DEVICE_NAME" />.</translation>
 <translation id="1097658378307015415">Преди да влезете в профила си, моля, влезте като гост, за да активирате мрежата <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Този раздел има разрешение за запазване в оригиналните файлове.</translation>
 <translation id="1103523840287552314">Винаги да се превежда от <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Стоп</translation>
 <translation id="1110155001042129815">Изчакване</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Слънчеви очила</translation>
 <translation id="1151917987301063366">Достъпът на <ph name="HOST" /> до сензорите винаги да е разрешен</translation>
 <translation id="1153356358378277386">Сдвоени устройства</translation>
-<translation id="1156488781945104845">Текущ час</translation>
 <translation id="1161575384898972166">Моля, влезте в/ъв <ph name="TOKEN_NAME" />, за да експортирате сертификата за клиентската програма.</translation>
 <translation id="1163931534039071049">&amp;Преглед на изходния код на рамката</translation>
 <translation id="1164674268730883318">Да се изключи ли Smart Lock за <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Настройки за хранилището на Adobe Flash Player</translation>
 <translation id="1274997165432133392">„Бисквитки“ и други данни за сайтове</translation>
 <translation id="127668050356036882">Затваряне на всички прозорци</translation>
-<translation id="1277908057200820621">Преглед на списъка с устройства</translation>
 <translation id="1280820357415527819">Търсят се мобилни мрежи</translation>
 <translation id="1285320974508926690">Този сайт да не се превежда никога</translation>
 <translation id="1285484354230578868">Съхраняване на данните в профила ви в Google Диск</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Собствената мрежа, не роуминг</translation>
 <translation id="1316136264406804862">Търси се...</translation>
 <translation id="1316495628809031177">Синхронизирането е на пауза</translation>
+<translation id="1317637799698924700">Докинг станцията ви ще функционира в режим за съвместимост с USB Type-C.</translation>
 <translation id="1322046419516468189">Преглеждайте и управлявайте запазените пароли в <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Влезте в Chrome, за да получите разделите си от другите си устройства.</translation>
 <translation id="1327074568633507428">Принтер в Google Отпечатване в облак</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Браузърът ви се управлява<ph name="END_LINK" /> от <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Изпълнявайте инструменти, редактори и интегрирани среди за програмиране за Linux на устройството си <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Научете повече&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Избор на файл</translation>
+<translation id="1370749010280229230">Има проблем с екрана, свързан към докинг станцията</translation>
 <translation id="1371301976177520732">Вашите отметки, пароли, история и др. на всичките ви устройства</translation>
 <translation id="1372841398847029212">Синхронизиране с профила ви</translation>
 <translation id="1374844444528092021">Сертификатът, който се изисква от мрежата „<ph name="NETWORK_NAME" />“, не е инсталиран или вече не е валиден.  Моля, получете нов сертификат и опитайте пак да се свържете.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Уеб страница, един файл</translation>
 <translation id="1451917004835509682">Добавяне на контролиран човек</translation>
 <translation id="1454223536435069390">Създаване на &amp;екранна снимка</translation>
+<translation id="1458243790901188746">{0,plural, =1{Папка: <ph name="DIRECTORIES" />}other{Папки: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Търсещи машини, добавени от разширения</translation>
 <translation id="146000042969587795">Тази рамка бе блокирана, защото съдържанието й е несигурно.</translation>
 <translation id="146219525117638703">Състояние на ONC</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">Показване на опциите за въвеждане</translation>
 <translation id="1651008383952180276">Трябва да въведете един и същ пропуск два пъти</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Добавете принтера към Google Отпечатване в облак, за да можете да печатате от всяко място.}other{Добавете # принтера към Google Отпечатване в облак, за да можете да печатате от всяко място.}}</translation>
+<translation id="1656528038316521561">Плътност на фона</translation>
 <translation id="1657406563541664238">Помогнете ни да подобрим <ph name="PRODUCT_NAME" /> като автоматично изпращате на Google статистически данни за използването му и сигнали за сривове</translation>
 <translation id="1658424621194652532">Тази страница осъществява достъп до микрофона ви.</translation>
 <translation id="1660204651932907780">Разрешаване на сайтовете да възпроизвеждат звук (препоръчително)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> иска да разбере марката и модела на ключа ви за сигурност</translation>
 <translation id="1679068421605151609">Инструменти за програмисти</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Наистина ли искате да излезете?</translation>
 <translation id="167983332380191032">Услугата за управление изпрати HTTP грешка.</translation>
 <translation id="1680849702532889074">Възникна грешка при инсталирането на приложението за Linux.</translation>
 <translation id="16815041330799488">Забраняване на сайтовете да преглеждат текста и изображенията, копирани в буферната памет</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">Идентификатор на защитена мултимедия</translation>
 <translation id="175196451752279553">По&amp;вторно отваряне на затворения раздел</translation>
 <translation id="1753905327828125965">Ползвани</translation>
+<translation id="1755601632425835748">Размер на текста</translation>
 <translation id="1756681705074952506">Метод за въвеждане</translation>
 <translation id="1757301747492736405">Предстои деинсталиране</translation>
 <translation id="175772926354468439">Активиране на темата</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">&amp;По-малък</translation>
 <translation id="1919345977826869612">Реклами</translation>
 <translation id="1919814239594435008">Приставката извън тестовата среда е разрешена</translation>
+<translation id="1920390473494685033">Контакти</translation>
 <translation id="1921050530041573580">Сдвояване на телефона ви с Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> точки на инч</translation>
 <translation id="1924559387127953748">Възползвайте се от интелигентните функции на Google в <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">Раздел в режим „инкогнито“: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> от <ph name="PEPPER_PLUGIN_DOMAIN" /> иска да осъществи достъп до компютъра ви</translation>
 <translation id="2178614541317717477">Компрометиране на сертифициращия орган</translation>
+<translation id="2179849162388791084">Събирането на данни за вход от ключа ви за сигурност не бе успешно.</translation>
 <translation id="218070003709087997">Използвайте число, за да укажете колко копия да се отпечатат (от 1 до 999).</translation>
 <translation id="2184515124301515068">Нека Chrome избира кога сайтовете да могат да възпроизвеждат звук (препоръчително)</translation>
 <translation id="2187895286714876935">Грешка при импортирането на сертификат на сървър</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">Всички „бисквитки“ и данни за сайтове</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Копирахте 1 елемент}other{Копирахте # елемента}}</translation>
 <translation id="2278562042389100163">Отваряне на прозореца на браузъра</translation>
-<translation id="2279874276457403668">В даден момент може да се създаде само една сесия.</translation>
 <translation id="2280486287150724112">Дясно поле</translation>
 <translation id="2282146716419988068">Процес на графичния процесор</translation>
 <translation id="2282155092769082568">URL адрес за автоматично конфигуриране:</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">Бележките на заключения екран автоматично се запазват в/ъв <ph name="LOCK_SCREEN_APP_NAME" />. Най-новата ви бележка ще остане на заключения екран.</translation>
 <translation id="2353297238722298836">Достъпът до камерата и микрофона е разрешен</translation>
 <translation id="2356070529366658676">Попитайте ме</translation>
-<translation id="2357949918965361754">С помощта на тази функция съдържанието от Chrome може да се показва на телевизора и другите ви устройства.</translation>
 <translation id="2359345697448000899">Управлявайте разширенията си, като кликнете върху „Разширения“ в менюто „Инструменти“.</translation>
 <translation id="2359808026110333948">Напред</translation>
 <translation id="236117173274098341">Оптимизиране</translation>
@@ -962,6 +968,7 @@
 <translation id="2436720498717686157">Организацията ви изисква това устройство да бъде актуализирано веднага</translation>
 <translation id="2439545803278355377">Въведете новия си ПИН код. Той трябва да е с дължина поне четири знака и може да съдържа букви, цифри и други знаци.</translation>
 <translation id="2440604414813129000">&amp;Преглед на изходния код</translation>
+<translation id="2442916515643169563">Сянка на текста</translation>
 <translation id="2444119669991608829">Страницата не е на <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Необходима е основна директория на разширението.</translation>
 <translation id="2445484935443597917">Създаване на нов потребителски профил</translation>
@@ -1177,6 +1184,7 @@
 <translation id="2738771556149464852">Не след</translation>
 <translation id="2739191690716947896">Отстраняване на грешки</translation>
 <translation id="2739240477418971307">Промяна на настройките ви за достъпност</translation>
+<translation id="274029851662193272">Снижена</translation>
 <translation id="2740393541869613458">да преглеждате уебсайтовете, посетени от контролирания потребител;</translation>
 <translation id="2741912629735277980">Показване на ПИ на екрана за вход</translation>
 <translation id="274290345632688601">Приложенията и файловете за Linux се възстановяват</translation>
@@ -1225,6 +1233,7 @@
 <translation id="2806891468525657116">Прекият път вече съществува</translation>
 <translation id="2807517655263062534">Тук се показват изтеглените от вас файлове</translation>
 <translation id="2809586584051668049">и още <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt не се поддържа</translation>
 <translation id="2812944337881233323">Опитайте да излезете от профила си и отново да влезете в него</translation>
 <translation id="2812989263793994277">Без показване на изображения</translation>
 <translation id="281390819046738856">Заявката не можа да бъде подписана.</translation>
@@ -1247,7 +1256,6 @@
 <translation id="2841837950101800123">Доставчик</translation>
 <translation id="2844169650293029770">Устройство с USB-C (предният ляв порт)</translation>
 <translation id="2845382757467349449">Непрекъснато показване на лентата на отметките</translation>
-<translation id="2847759467426165163">Предаване към</translation>
 <translation id="284805635805850872">Да се премахне ли опасният софтуер?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Почистването бе неуспешно</translation>
@@ -1294,6 +1302,7 @@
 Съобщение от сървъра: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Добавяне на медийна галерия по директория</translation>
 <translation id="2910318910161511225">Свържете се с мрежа и опитайте отново</translation>
+<translation id="2910518940971897750">Запазване в оригиналния файл</translation>
 <translation id="2913331724188855103">Разрешаване на сайтовете да запазват „бисквитки“ и да четат данни от такива (препоръчително)</translation>
 <translation id="2915102088417824677">Преглед на регистрационния файл за активността</translation>
 <translation id="2915873080513663243">Автоматично сканиране</translation>
@@ -1358,12 +1367,14 @@
 <translation id="3013291976881901233">MIDI устройства</translation>
 <translation id="3015639418649705390">Рестартиране сега</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> не можа да се конфигурира автоматично. Моля, посочете разширени подробности за принтера.</translation>
+<translation id="3016381065346027039">Няма записи в регистрационния файл</translation>
 <translation id="3016641847947582299">Компонентът е актуализиран</translation>
 <translation id="3016780570757425217">Достъп до местоположението ви.</translation>
 <translation id="3017079585324758401">Фон</translation>
 <translation id="3020183492814296499">Клавишни комбинации</translation>
 <translation id="3020990233660977256">Сериен номер: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Пеперуда</translation>
+<translation id="3021408157810018664">Да се запазят ли промените в оригиналните файлове?</translation>
 <translation id="3021426244864538700">Има достъп до данните на този сайт</translation>
 <translation id="3021678814754966447">&amp;Преглед на изходния код на рамката</translation>
 <translation id="3022978424994383087">Не разбрахме това.</translation>
@@ -1456,6 +1467,7 @@
 <translation id="3170072451822350649">Може също да пропуснете влизането и <ph name="LINK_START" />да сърфирате като гост<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Сайт осъществява достъп до видеовхода</translation>
 <translation id="3177909033752230686">Език на страницата:</translation>
+<translation id="3179982752812949580">Шрифт на текста</translation>
 <translation id="3181954750937456830">„Безопасно сърфиране“ (защитава вас и устройството ви от опасни сайтове)</translation>
 <translation id="3182749001423093222">Проверка на правописа</translation>
 <translation id="3183139917765991655">Импортиране на потребителски профили</translation>
@@ -1508,7 +1520,6 @@
 <translation id="3275778913554317645">Отваряне като прозорец</translation>
 <translation id="3278001907972365362">Профилите ви в Google изискват внимание</translation>
 <translation id="3279230909244266691">Това може да отнеме няколко минути. Виртуалната машина стартира.</translation>
-<translation id="3279741024917655738">Показване на видеоклиповете на цял екран</translation>
 <translation id="3280237271814976245">&amp;Запазване като...</translation>
 <translation id="3280243678470289153">Оставане в Chrome</translation>
 <translation id="3281892622610078515">Файлове и програми, които да бъдат поставени под карантина:</translation>
@@ -1530,7 +1541,7 @@
 <translation id="3303855915957856445">Няма намерени резултати от търсенето</translation>
 <translation id="3305389145870741612">Форматирането може да отнеме няколко секунди. Моля, изчакайте.</translation>
 <translation id="3305661444342691068">Отваряне на визуализация на PDF</translation>
-<translation id="3306684685104080068">Активирайте предаването към базирани в облака услуги, като Google Hangouts.</translation>
+<translation id="3307871847038842490">Тази страница има разрешение за запазване в оригиналните файлове.</translation>
 <translation id="3308006649705061278">Организационна единица (OU)</translation>
 <translation id="3308116878371095290">Задаването на „бисквитки“ от тази страница е предотвратено.</translation>
 <translation id="3308134619352333507">Скриване на бутона</translation>
@@ -1636,7 +1647,6 @@
 <translation id="3462413494201477527">Да се анулира ли настройването на профила?</translation>
 <translation id="3464012987031883895">Сайт осъществява достъп до аудиовхода</translation>
 <translation id="346431825526753">Това е профил за деца, управляван от <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Поточно предаване на видеоклип или аудиофайл</translation>
 <translation id="3468999815377931311">Телефон с Android</translation>
 <translation id="3470442499439619530">Премахване на този потребител</translation>
 <translation id="3473479545200714844">Екранна лупа</translation>
@@ -1659,6 +1669,7 @@
 <translation id="3496213124478423963">Намаляване</translation>
 <translation id="3497560059572256875">Споделяне на драскулката</translation>
 <translation id="3505030558724226696">Отмяна на достъпа до устройството</translation>
+<translation id="3505635633742443645">HDMI портът на докинг станцията ви не може да се използва, когато за видеоизход се използва USB Type-C. Моля, използвайте друг порт за някой от екраните.</translation>
 <translation id="3507421388498836150">Текущи разрешения за <ph name="EXTENSION_NAME" /></translation>
 <translation id="3507888235492474624">Повторно сканиране за устройства с Bluetooth</translation>
 <translation id="3508920295779105875">Изберете друга папка...</translation>
@@ -1711,6 +1722,7 @@
 <translation id="3576324189521867626">Инсталирането бе успешно</translation>
 <translation id="3578594933904494462">Съдържанието на този раздел се споделя.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; иска да сподели принтера &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; с притежавана от вас група: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Ако приемете, всичките й членове ще могат да отпечатват с него.</translation>
+<translation id="357889014807611375">Wi-Fi мрежа с отчитане</translation>
 <translation id="3584169441612580296">Четене и промяна на снимки, музика и друга мултимедия от компютъра ви</translation>
 <translation id="3587482841069643663">Всички</translation>
 <translation id="358796204584394954">За сдвояване въведете този код на <ph name="DEVICE_NAME" />:</translation>
@@ -1721,6 +1733,7 @@
 <translation id="359283478042092570">Влизане</translation>
 <translation id="3593965109698325041">Ограничения за името на сертификата</translation>
 <translation id="3596235046596950091">Активиране на услугите в облака</translation>
+<translation id="3599221874935822507">Повдигната</translation>
 <translation id="3599863153486145794">Изчиства историята от всички устройства, на които сте влезли в профила си в Google. В него може да има други видове история на сърфиране, съхранявани на адрес <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Информация за заявка в мрежата</translation>
 <translation id="3600792891314830896">Спиране на звука, възпроизвеждан от сайтовете</translation>
@@ -1735,6 +1748,7 @@
 <translation id="3612673635130633812">Изтеглено от &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Показване на „<ph name="FOLDER_NAME" />“</translation>
 <translation id="3613422051106148727">&amp;Отваряне в нов раздел</translation>
+<translation id="3615073365085224194">Докоснете сензора за отпечатъци с пръста си</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3616741288025931835">&amp;Изчистване на данните за сърфирането...</translation>
 <translation id="3617891479562106823">Фоновете не са налице. Опитайте отново по-късно.</translation>
@@ -1817,7 +1831,6 @@
 <translation id="3719826155360621982">Начална страница</translation>
 <translation id="3720996970802414353">Превключване въпреки това</translation>
 <translation id="3722108462506185496">Грешка при стартирането на услугата на виртуалната машина. Моля, опитайте отново.</translation>
-<translation id="3723158278575423087">Представяме ви функцията за предаване в Chromium!</translation>
 <translation id="3725367690636977613">страници</translation>
 <translation id="3726137731714254362">При премахване на папки оттук споделянето ще спре, но файловете няма да бъдат изтрити.</translation>
 <translation id="3727148787322499904">Промяната на тази настройка ще засегне всички споделени мрежи</translation>
@@ -1852,7 +1865,6 @@
 <translation id="3764314093345384080">Подробна информация за компилацията</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Комуникация с USB устройство}other{Комуникация с # USB устройства}}</translation>
 <translation id="3765246971671567135">Правилото за офлайн демонстрационен режим не можа да бъде прочетено.</translation>
-<translation id="3766223500670287046">на отдалечения екран</translation>
 <translation id="3768037234834996183">Предпочитанията ви се синхронизират...</translation>
 <translation id="377050016711188788">Сладолед</translation>
 <translation id="3771294271822695279">Видеофайлове</translation>
@@ -1926,7 +1938,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Вдигнете пръст и докоснете отново</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхронизирането е на пауза</translation>
-<translation id="3862134173397075045">Представяме ви функцията за предаване в Chrome!</translation>
 <translation id="3862693525629180217">Потвърждаване чрез вградения сензор</translation>
 <translation id="3862788408946266506">Приложенията с атрибут „kiosk_only“ в манифеста трябва да бъдат инсталирани в павилионния режим на Chrome OS</translation>
 <translation id="3865414814144988605">Разделителна способност</translation>
@@ -1975,6 +1986,7 @@
 <translation id="3926002189479431949">Телефонът за Smart Lock е променен</translation>
 <translation id="3927932062596804919">Отказ</translation>
 <translation id="3930737994424905957">Търсят се устройства</translation>
+<translation id="3930968231047618417">Цвят на фона</translation>
 <translation id="3933283459331715412">Възстановяване на изтритата парола за <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Отваряне на аудиоклипа в нов раздел</translation>
 <translation id="3936925983113350642">Паролата, която изберете, ще се изисква по-късно за възстановяване на този сертификат. Моля, запишете я на сигурно място.</translation>
@@ -1994,6 +2006,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Импортирани от Internet Explorer</translation>
 <translation id="3950820424414687140">Вход</translation>
+<translation id="3950828138786918475">Този раздел има разрешение за четене на папка на устройството ви.</translation>
 <translation id="3954354850384043518">В ход</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> херца)</translation>
 <translation id="3954953195017194676">Нямате наскоро записани регистрационни файлове за събития с WebRTC.</translation>
@@ -2012,6 +2025,7 @@
 <translation id="397105322502079400">Изчислява се...</translation>
 <translation id="3975565978598857337">Свързването със сървъра за областта не бе успешно</translation>
 <translation id="397703832102027365">Довършва се...</translation>
+<translation id="3977886311744775419">Автоматичните актуализации не се изтеглят при този тип мрежа, но можете ръчно да проверявате за актуализации.</translation>
 <translation id="3979395879372752341">Бе добавено ново разширение (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Активиране на <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Въведен е невалиден тип запазване.</translation>
@@ -2151,6 +2165,7 @@
 <translation id="4194570336751258953">Активиране на кликване с докосване</translation>
 <translation id="4195643157523330669">Отваряне в нов раздел</translation>
 <translation id="4195814663415092787">Продължаване оттам, откъдето сте прекъснали</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> може да запазва промените ви директно във файловете, посочени по-долу. Сайтът може да запазва промените само докато този раздел е отворен.</translation>
 <translation id="4198146608511578238">За да разговаряте с Google Асистент, трябва само да натиснете и задържите иконата на стартовия панел.</translation>
 <translation id="4200689466366162458">Персонализирани думи</translation>
 <translation id="4200983522494130825">Нов &amp;раздел</translation>
@@ -2198,7 +2213,6 @@
 <translation id="4267953847983678297">Автоматично свързване с мобилната мрежа</translation>
 <translation id="4268025649754414643">Шифроване на ключ</translation>
 <translation id="4270393598798225102">Версия <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Няма съответствия</translation>
 <translation id="4275663329226226506">Медия</translation>
 <translation id="4275830172053184480">Рестартиране на устройството ви</translation>
 <translation id="4278101229438943600">Асистент е в готовност</translation>
@@ -2347,6 +2361,7 @@
 <translation id="4533985347672295764">Процесорно време</translation>
 <translation id="4534661889221639075">Опитайте отново.</translation>
 <translation id="4535127706710932914">Потребителски профил по подразбиране</translation>
+<translation id="4535767533210902251">Сензорът за отпечатъци е бутонът най-горе вдясно на клавиатурата. Докоснете го леко с който и да е пръст.</translation>
 <translation id="4538684596480161368">Приставките извън тестова среда да се блокират винаги за <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Инсталирано от корпоративно правило.</translation>
 <translation id="4542520061254486227">Четене на данните ви от <ph name="WEBSITE_1" /> и <ph name="WEBSITE_2" /></translation>
@@ -2380,6 +2395,7 @@
 <translation id="457386861538956877">Още...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Сдвояване на устройство с Bluetooth</translation>
+<translation id="4578012756826807359">Данните ви за вход бяха изтрити успешно.</translation>
 <translation id="4579581181964204535">Предаването на <ph name="HOST_NAME" /> не е възможно.</translation>
 <translation id="4581774856936278355">Грешка при възстановяването на Linux</translation>
 <translation id="4582563038311694664">Нулиране на всички настройки</translation>
@@ -2497,7 +2513,6 @@
 <translation id="4763830802490665879">„Бисквитките“ от няколко сайта ще бъдат изчистени при изход.</translation>
 <translation id="4765582662863429759">Позволява на Android Messages да предава SMS съобщенията от телефона ви към вашия Chromebook</translation>
 <translation id="4768332406694066911">Имате идентифициращи ви сертификати от тези организации</translation>
-<translation id="4772404146526168240">и на двата екрана</translation>
 <translation id="4776146737004271126">Отваряне на настройките за Android</translation>
 <translation id="4776917500594043016">Парола за <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Google Play Магазин</translation>
@@ -2605,7 +2620,6 @@
 <translation id="4927846293686536410">Влезте в профила си, за да получите своите отметки, история, пароли и други настройки на всичките си устройства. Също така ще влезете автоматично в използваните от вас услуги на Google.</translation>
 <translation id="4929386379796360314">Местоназначения за отпечатване</translation>
 <translation id="4930714375720679147">Включване</translation>
-<translation id="4931132176527519925">Дублиране винаги</translation>
 <translation id="4932733599132424254">Дата</translation>
 <translation id="4933484234309072027">вградена в <ph name="URL" /></translation>
 <translation id="493571969993549666">Добавяне на контролиран потребител</translation>
@@ -2645,6 +2659,7 @@
 <translation id="4992066212339426712">Включване на звука</translation>
 <translation id="4992458225095111526">Потвърждаване на извършването на Powerwash</translation>
 <translation id="4992473555164495036">Администраторът ви е ограничил наличните методи на въвеждане.</translation>
+<translation id="4992866843815555470">Докинг станцията ви трябва да бъде ремонтирана. Без работещ вентилатор ще се изключи.</translation>
 <translation id="4992926179187649719">Включване на „Ok Google“</translation>
 <translation id="4994474651455208930">Разрешаване на питания от сайтове дали да са манипулаторите по подразбиране за протоколите</translation>
 <translation id="4994754230098574403">Настройва се</translation>
@@ -2783,7 +2798,6 @@
 <translation id="5233231016133573565">Номер на процеса</translation>
 <translation id="5233638681132016545">Нов раздел</translation>
 <translation id="5233736638227740678">&amp;Поставяне</translation>
-<translation id="5234764350956374838">Отхвърляне</translation>
 <translation id="5235050375939235066">Да се деинсталира ли приложението?</translation>
 <translation id="5235750401727657667">Замяна на страницата, която виждате, при отваряне на нов раздел</translation>
 <translation id="5238278114306905396">Приложението <ph name="EXTENSION_NAME" /> бе премахнато автоматично.</translation>
@@ -2848,6 +2862,7 @@
 <translation id="5319359161174645648">Google препоръчва Chrome</translation>
 <translation id="532247166573571973">Възможно е да няма достъп до сървъра. Опитайте отново по-късно.</translation>
 <translation id="5324780743567488672">Автоматично задаване на часовата зона въз основа на местоположението ви</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> има разрешение за запазване в оригиналните файлове</translation>
 <translation id="5327248766486351172">Име</translation>
 <translation id="5327570636534774768">Това устройство е маркирано за управление от друг домейн. Отменете обезпечаването му за този домейн, преди да настроите демонстрационния режим.</translation>
 <translation id="532943162177641444">Докоснете известието на телефона си <ph name="PHONE_NAME" />, за да настроите мобилната точка за достъп, която да може да се използва от това устройство.</translation>
@@ -2990,7 +3005,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> иска да</translation>
 <translation id="5534304873398226603">Отхвърляне на снимката или видеоклипа</translation>
 <translation id="5535941515421698170">Премахване и на съществуващите ви данни от това устройство</translation>
-<translation id="5537725057119320332">Предаване</translation>
 <translation id="5539221284352502426">Въведената от вас парола бе отхвърлена от сървъра. Ето някои от възможните причини: паролата е твърде кратка; необходимо е да съдържа цифри или символи; трябва да е различна от предишните пароли.</translation>
 <translation id="5541687815721799001">Използване на приложението</translation>
 <translation id="5542132724887566711">Потребителски профил</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Научете повече за достъпа на сайта</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> резултата за „<ph name="SEARCH_TEXT" />“</translation>
 <translation id="6002458620803359783">Предпочитани гласове</translation>
-<translation id="6005695835120147974">Медиен маршрутизатор</translation>
 <translation id="6006484371116297560">Класическа тема</translation>
 <translation id="6007240208646052708">Функцията за гласово търсене не е налице за езика ви.</translation>
 <translation id="6009781704028455063">Вграден сензор</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Нов принтер в мрежата ви}other{Нови принтери в мрежата ви}}</translation>
 <translation id="6286708577777130801">Подробности за запазената парола</translation>
 <translation id="6289452883081499048">Персонализирани наши услуги, като Google Play</translation>
-<translation id="6290556621549272952">С помощта на тази функция съдържанието от Chromium може да се показва на телевизора и другите ви устройства.</translation>
 <translation id="6291949900244949761">Извеждане на запитване, когато сайт иска достъп до USB устройства (препоръчително)</translation>
 <translation id="6291953229176937411">&amp;Показване във Finder</translation>
 <translation id="6295158916970320988">Всички сайтове</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Изпращане на <ph name="BEGIN_LINK1" />системна информация<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />показатели<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Блокиране на сайтовете, така че да не използват сензорите за движение</translation>
 <translation id="6397094776139756010">Опции за синхронизиране и персонализиране</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> ще може да запазва промените ви директно във файловете, намиращи се в папката, посочена по-долу. Сайтът може да запазва промените само докато този раздел е отворен.</translation>
 <translation id="6398715114293939307">Премахване на Google Play Магазин</translation>
 <translation id="6398765197997659313">Изход от цял екран</translation>
 <translation id="6399774419735315745">Шпионин</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">На конкретни сайтове</translation>
 <translation id="6455894534188563617">&amp;Нова папка</translation>
 <translation id="6456394469623773452">Добър</translation>
+<translation id="6456955391422100996">Рекламата бе премахната.</translation>
 <translation id="645705751491738698">Блокирането на JavaScript да продължи</translation>
 <translation id="6458701200018867744">Качването не бе успешно (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Използване на избраното за търсене</translation>
 <translation id="6459799433792303855">Активният прозорец е преместен на друг екран.</translation>
 <translation id="6460601847208524483">Търсене на следващото</translation>
+<translation id="6461170143930046705">Търсят се мрежи...</translation>
 <translation id="6463795194797719782">&amp;Редактиране</translation>
 <translation id="6466988389784393586">&amp;Отваряне на всички отметки</translation>
 <translation id="6467304607960172345">Оптимизиране на видеоклиповете на цял екран</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Свързани сте с(ъс) <ph name="NETWORK_TYPE" /> мрежа.</translation>
 <translation id="6527303717912515753">Споделяне</translation>
 <translation id="6528513914570774834">Разрешаване на другите потребители на устройството да използват тази мрежа</translation>
 <translation id="652948702951888897">История в Chrome</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Скорост</translation>
 <translation id="6681668084120808868">Снимане</translation>
 <translation id="6681964764822470072"><ph name="APP_NAME" /> ще се деинсталира.</translation>
-<translation id="6685083257944113180">Спиране, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Отваряне на Google Play</translation>
 <translation id="6686490380836145850">Затваряне на разделите отдясно</translation>
 <translation id="6686817083349815241">Запазване на паролата ви</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Отваряне с увеличен изглед</translation>
 <translation id="6845325883481699275">Помощ за подобряването на сигурността на Chrome</translation>
 <translation id="6848388270925200958">В момента имате някои карти, които могат да се използват само на това устройство</translation>
+<translation id="6850286078059909152">Цвят на текста</translation>
 <translation id="6851497530878285708">Активиране на приложението</translation>
 <translation id="6853388645642883916">Актуализиращата програма е в спящ режим</translation>
 <translation id="68541483639528434">Затваряне на другите раздели</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Превъртане/кликване</translation>
 <translation id="6923633482430812883">Грешка при свързването на хранилището. Моля, уверете се, че файловият сървър, с който установявате връзка, поддържа SMBv2 или по-нова версия.</translation>
 <translation id="6930036377490597025">Външен ключ за сигурност или вграден сензор</translation>
-<translation id="6930242544192836755">Продължителност</translation>
 <translation id="693807610556624488">Операцията за запис надвишава максималната дължина на атрибута за: <ph name="DEVICE_NAME" />.</translation>
 <translation id="6941937518557314510">Моля, влезте в/ъв <ph name="TOKEN_NAME" />, за да удостоверите самоличността си пред <ph name="HOST_NAME" /> със сертификата си.</translation>
 <translation id="6943176775188458830">Анулиране на отпечатването</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Приложения за обработване на плащания</translation>
 <translation id="6951663584153258142">Организацията ви моли да актуализирате това устройство</translation>
 <translation id="6953878494808481632">Сродна информация</translation>
+<translation id="6953916367503892689">{0,plural, =1{Файл: <ph name="FILES" />}other{Файлове: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Инспектиране на изскачащ прозорец</translation>
 <translation id="6957044667612803194">Този ключ за сигурност не поддържа ПИН кодове</translation>
 <translation id="6957231940976260713">Имe на услугата</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Тази страница не можа да се преведе.</translation>
 <translation id="7254951428499890870">Наистина ли искате да стартирате <ph name="APP_NAME" /> в режим за диагностика?</translation>
 <translation id="7255002516883565667">В момента имате една карта, която може да се използва само на това устройство</translation>
-<translation id="7255220508626648026">Предава се: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Докоснете отново ключа си за сигурност, за да потвърдите нулирането. Цялата съхранявана в ключа информация, включително ПИН кодът му, ще бъде изтрита.</translation>
 <translation id="7255935316994522020">Прилагане</translation>
 <translation id="7256069762010468647">Сайтът използва камерата ви</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">за програмисти</translation>
 <translation id="7456847797759667638">Отваряне на местоположение...</translation>
 <translation id="7458168200501453431">Използва същата система за проверка на правописа като в Google Търсене. Текстът, който въвеждате в браузъра, се изпраща до Google.</translation>
+<translation id="7460045493116006516">Текущата тема, която сте инсталирали</translation>
 <translation id="7461924472993315131">Фиксиране</translation>
 <translation id="746216226901520237">Следващия път телефонът ви ще отключи устройството ви <ph name="DEVICE_TYPE" />. Можете да изключите Smart Lock от настройките.</translation>
 <translation id="7463006580194749499">Добавяне на човек</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Нов раздел</translation>
 <translation id="7556033326131260574">Smart Lock не можа да потвърди профила ви. Въведете паролата си, за да влезете.</translation>
 <translation id="7556242789364317684">За съжаление <ph name="SHORT_PRODUCT_NAME" /> не може да възстанови настройките ви. За да поправи грешката, <ph name="SHORT_PRODUCT_NAME" /> трябва да нулира устройството ви с Powerwash.</translation>
+<translation id="7559444627302317199">Моля, проверете връзката си с мрежата и опитайте отново.</translation>
 <translation id="7559719679815339381">Моля, изчакайте... Павилионното приложение се актуализира. Не изваждайте USB паметта.</translation>
 <translation id="7561196759112975576">Винаги</translation>
 <translation id="7563991800558061108">За възстановяване от тази грешка ще трябва да влезете в профила си в Google
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Дублиране</translation>
 <translation id="7887864092952184874">Мишката с Bluetooth е сдвоена</translation>
 <translation id="7889565820482017512">Екранен размер</translation>
-<translation id="7889966925761734854">Търсене</translation>
 <translation id="7893008570150657497">Да осъществява достъп до снимки, музика и друга медия от компютъра ви.</translation>
 <translation id="7893153962594818789">Функцията за Bluetooth е изключена на този <ph name="DEVICE_TYPE" />. Въведете паролата си и включете Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (по подразбиране)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Запазване в лентата с инструменти</translation>
 <translation id="7898725031477653577">Винаги да се превежда</translation>
 <translation id="790040513076446191">Манипулиране на свързаните с поверителността настройки</translation>
-<translation id="7902874111237641165">Плавно движение [бета]</translation>
 <translation id="7903345046358933331">Страницата е блокирала. Можете да изчакате да се възстанови или да я затворите.</translation>
 <translation id="7903742244674067440">Разполагате със сертификати, които идентифицират тези сертифициращи органи</translation>
 <translation id="7903925330883316394">Помощен процес: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">Четене на целия текст, произнесен посредством синтезирания говор</translation>
 <translation id="8037357227543935929">Извеждане на запитване (по подразбиране)</translation>
 <translation id="803771048473350947">Файл</translation>
+<translation id="8042142357103597104">Плътност на текста</translation>
 <translation id="8044899503464538266">Бавно</translation>
 <translation id="8045253504249021590">Синхронизирането е спряно чрез Google Табло за управление.</translation>
 <translation id="8045923671629973368">Въведете идентификационен номер на приложение или URL адрес в уеб магазина</translation>
@@ -4721,7 +4737,6 @@
 <ph name="BEGIN_PARAGRAPH5" />Можете да изключите тази услуга от настройките.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">ПИН кодовете не съвпадат</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> използва настройки за прокси сървър, зададени от разширение</translation>
-<translation id="8099495042588009598">Още разрешения</translation>
 <translation id="8101987792947961127">При следващото рестартиране се изисква Powerwash</translation>
 <translation id="8102159139658438129">За да видите опциите за свързания телефон, отворете <ph name="LINK_BEGIN" />Настройки<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Извършване на Powerwash на устройството ви с <ph name="IDS_SHORT_PRODUCT_NAME" /> и връщане към предишната версия.</translation>
@@ -4773,8 +4788,10 @@
     Не смятам, че този сайт трябва да бъде блокиран!</translation>
 <translation id="8184288427634747179">Превключване към <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Още информация</translation>
+<translation id="8184472985242519288">Еднородна</translation>
 <translation id="8185331656081929126">Показване на известия, когато в мрежата бъдат открити нови принтери</translation>
 <translation id="8186609076106987817">Сървърът не можа да намери файла.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> може да чете всички файлове в папката, посочена по-долу. Сайтът може да вижда промените в нея само докато този раздел е отворен.</translation>
 <translation id="8188389033983459049">Проверете настройките на устройството си и я включете, за да продължите</translation>
 <translation id="8190193592390505034">Осъществява се връзка с: <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Управление на вашите приложения, разширения и теми</translation>
@@ -4878,7 +4895,6 @@
 <translation id="833986336429795709">За да отворите тази връзка, изберете приложение</translation>
 <translation id="8342861492835240085">Избиране на колекция</translation>
 <translation id="834290227245955730">Невалиден ПИН код. Оставащи опити: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Използване на висока пропускателна способност за най-добро качество на видеоклиповете и анимациите. Хората с бавни връзки може да не виждат съдържанието ви.</translation>
 <translation id="8351419472474436977">Настройките ви за прокси сървър се контролират от посоченото разширение. Това означава, че то може да променя, прекъсва или следи всичко, което правите онлайн. Ако не сте сигурни какво е причинило тази промяна, вероятно не искате тя да остава в сила.</translation>
 <translation id="8351630282875799764">Батерията не се зарежда</translation>
 <translation id="835238322900896202">Възникна грешка при деинсталирането. Моля, деинсталирайте през терминала.</translation>
@@ -4911,9 +4927,11 @@
 <translation id="839736845446313156">Регистриране</translation>
 <translation id="8398877366907290961">Продължаване напред въпреки това</translation>
 <translation id="8400146488506985033">Управление на хората</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> може да запазва промените ви директно във файловете, намиращи се в папката, посочена по-долу. Сайтът може да запазва промените само докато този раздел е отворен.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Първо ще се извежда запитване (препоръчително)</translation>
 <translation id="8418445294933751433">&amp;Показване като раздел</translation>
+<translation id="8418905021510211421">Тази страница има разрешение за четене на папка на устройството ви.</translation>
 <translation id="8419098111404128271">Резултати от търсенето на „<ph name="SEARCH_TEXT" />“</translation>
 <translation id="8419368276599091549">Добре дошли в устройството си <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Промяна</translation>
@@ -4933,6 +4951,7 @@
 <translation id="8438566539970814960">Подобряване на търсенията и сърфирането</translation>
 <translation id="8439506636278576865">Предлагане страниците на този език да се превеждат</translation>
 <translation id="8440630305826533614">Приложения за Linux</translation>
+<translation id="844241640324986723">Изтриването на данните ви за вход бе неуспешно.</translation>
 <translation id="8443338615972234259">Моля, създайте нов профил за контролирания потребител сега.</translation>
 <translation id="8446884382197647889">Научете повече</translation>
 <translation id="8447409163267621480">Използвайте или Ctrl, или Alt</translation>
@@ -4948,8 +4967,6 @@
 <translation id="8461914792118322307">Прокси сървър</translation>
 <translation id="8463215747450521436">Този контролиран потребител може да е изтрит или деактивиран. Ако искате да продължите да влизате с данните за него, моля, свържете се с мениджъра.</translation>
 <translation id="846374874681391779">Лента на изтеглянето</translation>
-<translation id="8463807869745732775">"&gt;
-Данни за вход, съхранявани в ключ за сигурност</translation>
 <translation id="8463955938112983119">Приставката <ph name="PLUGIN_NAME" /> е деактивирана.</translation>
 <translation id="8464132254133862871">Този профил на потребител не отговаря на условията за услугата.</translation>
 <translation id="8465252176946159372">Не е валидно</translation>
@@ -5015,6 +5032,7 @@
 <translation id="8569002732135253578">„<ph name="DOCUMENT_NAME" />“ се отпечатва</translation>
 <translation id="8569682776816196752">Няма намерени местоназначения</translation>
 <translation id="8571213806525832805">Последните 4 седмици</translation>
+<translation id="8573403125070227391">Тази реклама бе премахната от Chrome, защото използва голяма част от ресурсите на устройството ви.</translation>
 <translation id="8574990355410201600">Разрешаване винаги на звука от <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Натиснете и задръжте <ph name="KEY_EQUIVALENT" /> за изход</translation>
 <translation id="8578639784464423491">Не може да надхвърля 99 букви</translation>
@@ -5038,13 +5056,13 @@
 <translation id="8609465669617005112">Придвижване нагоре</translation>
 <translation id="8610103157987623234">Неправилен формат. Моля, опитайте отново</translation>
 <translation id="8615618338313291042">Приложение „Инкогнито“: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Сянка</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Състояние на роуминга</translation>
 <translation id="8620765578342452535">Конфигуриране на мрежовите връзки</translation>
 <translation id="8621866727807194849">На компютъра ви има опасен софтуер. Chrome го премахва, възстановява настройките ви и деактивира разширенията. След това браузърът ви отново ще заработи нормално.</translation>
 <translation id="8621979332865976405">Споделяне на целия ви екран</translation>
 <translation id="862542460444371744">&amp;Разширения</translation>
-<translation id="8627151598708688654">Избиране на източник</translation>
 <translation id="862727964348362408">Спряно</translation>
 <translation id="862750493060684461">Кеш за CSS</translation>
 <translation id="8627795981664801467">Само сигурни връзки</translation>
@@ -5098,6 +5116,7 @@
 <translation id="8688579245973331962">Не виждате името си?</translation>
 <translation id="8688591111840995413">Неправилна парола</translation>
 <translation id="8688672835843460752">Свободно място</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Отваряне на &amp;местоположение...</translation>
 <translation id="869884720829132584">Меню „Applications“</translation>
 <translation id="869891660844655955">Дата на валидност</translation>
@@ -5261,6 +5280,7 @@
 <translation id="891365694296252935">Изпращане на данни за употребата и диагностиката. Понастоящем това устройство автоматично изпраща до Google диагностична информация и данни за употребата на устройството и приложенията. Тази информация няма да се използва за идентифициране на детето ви, а ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Тази настройка е наложена от собственика. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за детето ви, тези данни може да се запазват в профила му в Google. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Предложението се зарежда</translation>
 <translation id="8916476537757519021">Подрамка в режим „инкогнито“: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> има разрешение за четене на папка на устройството ви</translation>
 <translation id="8919275547519617350">Влезте в профила си и включете синхронизирането, за да получите паролите си на всичките си устройства.</translation>
 <translation id="8921366488406707015">Ключът ви за сигурност се потвърждава...</translation>
 <translation id="8922013791253848639">Рекламите на този сайт да са разрешени винаги</translation>
@@ -5290,7 +5310,6 @@
 <translation id="8965037249707889821">Въведете старата парола</translation>
 <translation id="8966870118594285808">Повторно отваряне на раздел, ако случайно сте го затворили</translation>
 <translation id="8967866634928501045">За показване натиснете Alt Shift A</translation>
-<translation id="8970203673128054105">Преглед на списъка с режими за предаване</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Моля, обърнете се към системния си администратор, за да се уверите, че защитната стена не блокира изтеглянията от сървърите на Google.</translation>
 <translation id="8973557916016709913">Премахване на мащаба</translation>
@@ -5439,6 +5458,7 @@
 <translation id="9214520840402538427">Ами сега!  Времето за изчакване на инициализирането на атрибутите за времето за инсталиране изтече.  Моля, свържете се с представител на екипа си за поддръжка.</translation>
 <translation id="9214695392875603905">Кексче</translation>
 <translation id="9215293857209265904"><ph name="EXTENSION_NAME" /> се добави</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> ще може да запазва промените ви директно във файловете, посочени по-долу. Сайтът може да запазва промените само докато този раздел е отворен.</translation>
 <translation id="9218430445555521422">Задаване по подразбиране</translation>
 <translation id="9219103736887031265">Изображения</translation>
 <translation id="9220525904950070496">Премахване на профила</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 1142f79..e251867 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">ভার্চুয়াল মেশিন চালাতে সমস্যা হচ্ছে। অনুগ্রহ করে আবার চেষ্টা করুন।</translation>
 <translation id="1089439967362294234">পাসওয়ার্ড পরিবর্তন করুন</translation>
 <translation id="1090126737595388931">কোনো পৃষ্ঠভূমি অ্যাপ্লিকেশান চলছে না</translation>
+<translation id="1090290614672149983">আসল ফাইলে সেভ করতে চান?</translation>
 <translation id="1090918500949388876">আপনার স্ক্রিন চালু থাকাকালীন "হ্যালো Google" বলে যেকোনও সময়ে আপনার অ্যাসিস্ট্যান্ট ব্যবহার করুন</translation>
 <translation id="1091767800771861448">ছেড়ে যেতে ESCAPE টিপুন (কেবল নন-অফিশিয়াল বিল্ড)৷</translation>
 <translation id="1093457606523402488">দৃশ্যমান নেটওয়ার্কগুলি</translation>
 <translation id="1094607894174825014">এখানে একটি ভুল অফসেট সহ পড়া বা লেখার ক্রিয়াকলাপের অনুরোধ করা হয়েছিল:: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">প্রবেশ করার আগে, <ph name="NETWORK_ID" /> নেটওয়ার্ক সক্রিয় করতে দয়া করে অতিথি রূপে প্রবেশ করুন</translation>
+<translation id="110029732810301672">এই ট্যাবের আসল ফাইলে সেভ করার অনুমতি আছে।</translation>
 <translation id="1103523840287552314">সর্বদা অনুবাদ করুন <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Stop</translation>
 <translation id="1110155001042129815">অপেক্ষা করুন</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">সানগ্লাস</translation>
 <translation id="1151917987301063366"><ph name="HOST" />কে সর্বদা সেন্সর অ্যাক্সেস করতে অনুমতি দিন</translation>
 <translation id="1153356358378277386">যুক্ত করা ডিভাইসগুলি</translation>
-<translation id="1156488781945104845">বর্তমান সময়</translation>
 <translation id="1161575384898972166">ক্লায়েন্ট সার্টিফিকেট এক্সপোর্ট করতে অনুগ্রহ করে <ph name="TOKEN_NAME" />-এ সাইন-ইন করুন৷</translation>
 <translation id="1163931534039071049">ফ্রেম উৎস &amp;দেখুন</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" /> এর জন্য Smart Lock বন্ধ করবেন?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player স্টোরেজ সেটিংস...</translation>
 <translation id="1274997165432133392">কুকিজ এবং অন্য সাইট ডেটা</translation>
 <translation id="127668050356036882">আপনার সব উইন্ডো বন্ধ করুন</translation>
-<translation id="1277908057200820621">ডিভাইস তালিকা দেখুন</translation>
 <translation id="1280820357415527819">মোবাইল নেটওয়ার্কের জন্য সার্চ করা হচ্ছে</translation>
 <translation id="1285320974508926690">কখনই এই সাইটটিকে অনুবাদ করবেন না</translation>
 <translation id="1285484354230578868">আপনার Google ড্রাইভ অ্যাকাউন্টে ডেটা সেভ করুন</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">হোম নেটওয়ার্ক, রোমিং নয়</translation>
 <translation id="1316136264406804862">সার্চ করা হচ্ছে...</translation>
 <translation id="1316495628809031177">সিঙ্ক থামানো হয়েছে</translation>
+<translation id="1317637799698924700">ইউএসবি টাইপ-সির সাথে মানানসই মোডে আপনার ডকিং স্টেশন কাজ করবে।</translation>
 <translation id="1322046419516468189">আপনার <ph name="SAVED_PASSWORDS_STORE" />-এ সেভ করা পাসওয়ার্ড দেখুন এবং পরিচালনা করুন</translation>
 <translation id="1326317727527857210">আপনার অন্য ডিভাইসগুলি থেকে আপনার ট্যাবগুলি পেতে, Chrome-এ সাইন-ইন করুন।</translation>
 <translation id="1327074568633507428">Google ক্লাউড প্রিন্টারে থাকা প্রিন্টার</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="ENROLLMENT_DOMAIN" /> আপনার <ph name="BEGIN_LINK" />ব্রাউজার ম্যানেজ করে<ph name="END_LINK" /></translation>
 <translation id="1366177842110999534">আপনার <ph name="DEVICE_TYPE" />-এ Linux টুল, এডিটর, এবং IDEs চালান। &lt;a target="_blank" href="<ph name="URL" />"&gt;আরও জানুন&lt;/a&gt;</translation>
 <translation id="1367951781824006909">একটি ফাইল বেছে নিন</translation>
+<translation id="1370749010280229230">ডকে কানেক্ট করা ডিসপ্লের কিছু সমস্যা আছে</translation>
 <translation id="1371301976177520732">আপনার সমস্ত ডিভাইসে বুকমার্ক, পাসওয়ার্ড, ইতিহাস এবং আরও অনেক কিছু সিঙ্ক হয়</translation>
 <translation id="1372841398847029212">আপনার অ্যাকাউন্টে সিঙ্ক করুন</translation>
 <translation id="1374844444528092021">নেটওয়ার্কের প্রয়োজনীয় সার্টিফিকেট "<ph name="NETWORK_NAME" />" হয় ইনস্টল করা নেই অথবা তা আর বৈধ নয়৷ অনুগ্রহ করে একটি নতুন সার্টিফিকেট আনুন আর সংযোগ করতে পুনরায় চেষ্টা করুন৷</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Webpage, Single File</translation>
 <translation id="1451917004835509682">তত্ত্বাবধানে থাকা ব্যক্তিকে যোগ করুন</translation>
 <translation id="1454223536435069390">স্ক্রিনশট নিন</translation>
+<translation id="1458243790901188746">{0,plural, =1{ফোল্ডার: <ph name="DIRECTORIES" />}one{ফোল্ডার: <ph name="DIRECTORIES" />}other{ফোল্ডার: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">এক্সটেনশন দ্বারা সার্চ ইঞ্জিনসমূহ জোড়া হয়েছে</translation>
 <translation id="146000042969587795">নিরাপদ নয় এমন কন্টেন্ট থাকার কারণে এই ফ্রেমটি আটকানো হয়্ছে৷</translation>
 <translation id="146219525117638703">ONC অবস্থা</translation>
@@ -443,6 +446,7 @@
 <translation id="1650371550981945235">ইনপুট বিকল্পগুলি দেখান</translation>
 <translation id="1651008383952180276">আপনাকে একই পাসফ্রেজ অবশ্যই দু'বার লিখতে হবে</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{আপনি যাতে যেকোনো জায়গা থেকে প্রিন্ট করতে পারেন সেই জন্য Google ক্লাউড প্রিন্টে প্রিন্টারটি যোগ করুন।}one{আপনি যাতে যেকোনো জায়গা থেকে প্রিন্ট করতে পারেন সেই জন্য Google ক্লাউড প্রিন্টে #টি প্রিন্টার যোগ করুন।}other{আপনি যাতে যেকোনো জায়গা থেকে প্রিন্ট করতে পারেন সেই জন্য Google ক্লাউড প্রিন্টে #টি প্রিন্টার যোগ করুন।}}</translation>
+<translation id="1656528038316521561">ব্যাকগ্রাউন্ডের অস্বচ্ছতা</translation>
 <translation id="1657406563541664238">Google-এ ব্যবহারের পরিসংখ্যান এবং ক্র্যাশ রিপোর্ট অটোমেটিক পাঠিয়ে <ph name="PRODUCT_NAME" />কে আরও ভালো করে তুলতে সাহায্য করুন</translation>
 <translation id="1658424621194652532">এই পৃষ্ঠাটি আপনার মাইক্রোফোন অ্যাক্সেস করছে৷</translation>
 <translation id="1660204651932907780">সাউন্ডটি প্লে করার জন্য সাইটটিতে অনুমতি দিন (প্রস্তাবিত)</translation>
@@ -458,6 +462,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> আপনার নিরাপত্তা কী এবং মডেল দেখতে চায়</translation>
 <translation id="1679068421605151609">ডেভেলপার টুল</translation>
 <translation id="1679806121152819234">প্লাগ-ইন VM</translation>
+<translation id="1679810534535368772">আপনি কি বেরিয়ে আসতে চান?</translation>
 <translation id="167983332380191032">ম্যানেজমেন্ট পরিষেবা HTTP সমস্যা পাঠিয়েছে।</translation>
 <translation id="1680849702532889074">আপনার Linux অ্যাপ ইনস্টলেশনের সময় সমস্যা হয়েছে।</translation>
 <translation id="16815041330799488">ক্লিপবোর্ডে কপি করা টেক্সট এবং ছবি কোনও সাইটকে দেখার অনুমতি দেবেন না</translation>
@@ -509,6 +514,7 @@
 <translation id="1746402432151920942">সুরক্ষিত মিডিয়া শনাক্তকারী</translation>
 <translation id="175196451752279553">বন্ধ ট্যাবটি পু&amp;নঃরায় খুলুন</translation>
 <translation id="1753905327828125965">সর্বাধিক দেখা</translation>
+<translation id="1755601632425835748">টেক্সটের সাইজ</translation>
 <translation id="1756681705074952506">ইনপুট পদ্ধতি</translation>
 <translation id="1757301747492736405">আনইনস্টল করা বাকি আছে</translation>
 <translation id="175772926354468439">থিম সক্ষম করুন</translation>
@@ -628,6 +634,7 @@
 <translation id="1918141783557917887">&amp;ক্ষুদ্রতর</translation>
 <translation id="1919345977826869612">বিজ্ঞাপন</translation>
 <translation id="1919814239594435008">আনস্যান্ডবক্সড প্লাগ-ইন অনুমোদিত</translation>
+<translation id="1920390473494685033">পরিচিতি</translation>
 <translation id="1921050530041573580">আপনার ফোনকে মেসেজ-এর সাথে পেয়ার করুন</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" />- এ Google স্মার্ট পান</translation>
@@ -784,6 +791,7 @@
 <translation id="2177950615300672361">ছদ্মবেশী ট্যাব: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> এ <ph name="PEPPER_PLUGIN_NAME" /> আপনার কম্পিউটার অ্যাক্সেস করতে চায়</translation>
 <translation id="2178614541317717477">CA আপোস</translation>
+<translation id="2179849162388791084">আপনার নিরাপত্তা কী থেকে সাইন-ইনের ডেটা সংগ্রহ করা যায়নি।</translation>
 <translation id="218070003709087997">কতগুলি কপি প্রিন্ট হবে তা নির্দিষ্ট করতে একটি সংখ্যা ব্যবহার করুন (১ থেকে ৯৯৯)।</translation>
 <translation id="2184515124301515068">সাইটটি কখন সাউন্ড চালাতে পারবে তা Chrome-কে বেছে নিতে দিন (প্রস্তাবিত)</translation>
 <translation id="2187895286714876935">সার্ভার সার্টিফিকেট আমদানি করতে সমস্যা</translation>
@@ -862,7 +870,6 @@
 <translation id="2277255602909579701">সমস্ত কুকি এবং সাইট ডেটা</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{১টি আইটেম কপি করা হয়েছে}one{#টি আইটেম কপি করা হয়েছে}other{#টি আইটেম কপি করা হয়েছে}}</translation>
 <translation id="2278562042389100163">ব্রাউজার উইন্ডো খুলুন</translation>
-<translation id="2279874276457403668">এক সময়ে কেবল একটি সেশন তৈরি করা যাবে।</translation>
 <translation id="2280486287150724112">ডান মার্জিন</translation>
 <translation id="2282146716419988068">GPU প্রক্রিয়া</translation>
 <translation id="2282155092769082568">স্বতঃকনফিগারেশান URL:</translation>
@@ -915,7 +922,6 @@
 <translation id="2352810082280059586">লক স্ক্রিন নোটগুলি নিজে থেকেই <ph name="LOCK_SCREEN_APP_NAME" /> এ সেভ হয়ে যায়। সবথেকে সাম্প্রতিক নোটটি লক স্ক্রিনে রয়ে যায়।</translation>
 <translation id="2353297238722298836">ক্যামেরা এবং মাইক্রোফোন ব্যবহারে অনুমতি দেওয়া হয়েছে</translation>
 <translation id="2356070529366658676">জিজ্ঞাসা করুন</translation>
-<translation id="2357949918965361754">আপনি আপনার টিভি বা অন্যান্য ডিভাইসে Chrome থেকে কন্টেন্ট দেখানোর জন্য এই বৈশিষ্ট্যটি ব্যবহার করতে পারেন।</translation>
 <translation id="2359345697448000899">টুল মেনুতে এক্সটেনশনে ক্লিক করে আপনার এক্সটেনশনগুলি পরিচালনা করুন৷</translation>
 <translation id="2359808026110333948">চালিয়ে যান</translation>
 <translation id="236117173274098341">অপ্টিমাইজ করুন</translation>
@@ -963,6 +969,7 @@
 <translation id="2436720498717686157">আপনার সংস্থার প্রয়োজন অনুযায়ী আপনাকে এই ডিভাইস এখনই আপডেট করতে হবে</translation>
 <translation id="2439545803278355377">আপনার নতুন পিন লিখুন। পিনে কমপক্ষে চারটি অক্ষর থাকতে হবে এবং তাতে অক্ষর, সংখ্যা এবং চিহ্ন থাকতে পারে।</translation>
 <translation id="2440604414813129000">উ&amp;ত্স দেখুন</translation>
+<translation id="2442916515643169563">টেক্সট শ্যাডো</translation>
 <translation id="2444119669991608829">পৃষ্ঠাটি কি <ph name="LANGUAGE" /> ভাষায় নয়?</translation>
 <translation id="2445081178310039857">এক্সটেনশন রুট ডিরেক্টরি প্রয়োজন৷</translation>
 <translation id="2445484935443597917">একটি নতুন প্রোফাইল তৈরি করুন</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">এরপরে নয়</translation>
 <translation id="2739191690716947896">ডিবাগ</translation>
 <translation id="2739240477418971307">আপনার ব্যবহারযোগ্যতার সেটিংস পরিবর্তন করুন</translation>
+<translation id="274029851662193272">ভিতরের দিকে চাপা</translation>
 <translation id="2740393541869613458">তত্ত্বাবধানে থাকা ব্যবহারকারীর ভিজিট করা ওয়েবসাইটগুলি পর্যালোচনা করুন এবং</translation>
 <translation id="2741912629735277980">লগ-ইন স্ক্রিনে UI ডিসপ্লে করুন</translation>
 <translation id="274290345632688601">Linux অ্যাপ ও ফাইল ফিরিয়ে আনা হচ্ছে</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">শর্টকাটটি আগে থেকেই আছে</translation>
 <translation id="2807517655263062534">ডাউনলোড করা ফাইল এখানে দেখা যাবে</translation>
 <translation id="2809586584051668049">এবং আরও <ph name="NUMBER_ADDITIONAL_DISABLED" />টি</translation>
+<translation id="2812049959647166806">Thunderbolt কাজ করে না</translation>
 <translation id="2812944337881233323">সাইন আউট করে আবার ফিরে এসে দেখুন</translation>
 <translation id="2812989263793994277">কোনও ছবি দেখাবেন না</translation>
 <translation id="281390819046738856">অনুরোধ সাইন করা যায়নি।</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">সরবরাহকারী</translation>
 <translation id="2844169650293029770">USB-C ডিভাইস (বাঁ দিকের সামনের পোর্ট)</translation>
 <translation id="2845382757467349449">সবসময় বুকমার্কস বার দেখান</translation>
-<translation id="2847759467426165163">এতে কাস্ট করুন</translation>
 <translation id="284805635805850872">ক্ষতিকর সফ্টওয়্যার সরাবেন?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">মোছা যায়নি</translation>
@@ -1296,6 +1304,7 @@
     সার্ভার বার্তা: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">ডিরেক্টরি অনুসারে মিডিয়া গ্যালারি জুড়ুন</translation>
 <translation id="2910318910161511225">নেটওয়ার্কে সংযোগ করে আবার চেষ্টা করুন</translation>
+<translation id="2910518940971897750">আসল ফাইলে সেভ করুন</translation>
 <translation id="2913331724188855103">সাইটগুলিকে কুকি ডেটা পড়ার এবং সংরক্ষণ করার অনুমতি দিন (প্রস্তাবিত)</translation>
 <translation id="2915102088417824677">অ্যাক্টিভিটি লগ দেখুন</translation>
 <translation id="2915873080513663243">অটো-স্ক্যান</translation>
@@ -1360,12 +1369,14 @@
 <translation id="3013291976881901233">MIDI ডিভাইসগুলি</translation>
 <translation id="3015639418649705390">এখনই রিলঞ্চ করুন</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> অটোমেটিক কনফিগার করা যায়নি। প্রিন্টারের উন্নত বিবরণ উল্লেখ করুন।</translation>
+<translation id="3016381065346027039">লগ ফাঁকা আছে</translation>
 <translation id="3016641847947582299">কম্পোনেন্ট আপডেট করা আছে</translation>
 <translation id="3016780570757425217">আপনার লোকেশন জানুন</translation>
 <translation id="3017079585324758401">ব্যাকগ্রাউন্ড</translation>
 <translation id="3020183492814296499">শর্টকাট</translation>
 <translation id="3020990233660977256">ক্রমিক সংখ্যা: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">প্রজাপতি</translation>
+<translation id="3021408157810018664">পরিবর্তনগুলি আসল ফাইলে সেভ করতে চান?</translation>
 <translation id="3021426244864538700">এই সাইটের ডেটা অ্যাক্সেস করতে পারে</translation>
 <translation id="3021678814754966447">ফ্রেম উৎস &amp;দেখুন</translation>
 <translation id="3022978424994383087">বুঝতে পারিনি।</translation>
@@ -1458,6 +1469,7 @@
 <translation id="3170072451822350649">এছাড়াও আপনি সাইন-ইন এড়িয়ে যেতে ও <ph name="LINK_START" />অতিথি হিসাবে ব্রাউজ<ph name="LINK_END" /> করতে পারেন৷</translation>
 <translation id="3172045848207518317">একটি সাইট ভিডিও ইনপুট অ্যাক্সেস করছে</translation>
 <translation id="3177909033752230686">পৃষ্ঠার ভাষা:</translation>
+<translation id="3179982752812949580">টেক্সটের ফন্ট</translation>
 <translation id="3181954750937456830">নিরাপদ ব্রাউজিং (বিপজ্জনক সাইট থেকে আপনাকে এবং আপনার ডিভাইসকে রক্ষা করে)</translation>
 <translation id="3182749001423093222">বানান পরীক্ষা</translation>
 <translation id="3183139917765991655">প্রোফাইল আমদানিকারক</translation>
@@ -1510,7 +1522,6 @@
 <translation id="3275778913554317645">উইন্ডো হিসাবে খুলুন</translation>
 <translation id="3278001907972365362">আপনার Google অ্যাকাউন্টের(গুলির) প্রতি নজর দেওয়া দরকার</translation>
 <translation id="3279230909244266691">এতে কয়েক মিনিট সময় লাগতে পারে। ভার্চুয়াল মেশিন শুরু করা হচ্ছে।</translation>
-<translation id="3279741024917655738">এতে সম্পূর্ণ স্ক্রিন ভিডিও দেখুন</translation>
 <translation id="3280237271814976245">এই &amp;রূপে সেভ করুন...</translation>
 <translation id="3280243678470289153">Chrome থেকে যান</translation>
 <translation id="3281892622610078515">ফাইল এবং প্রোগ্রাম কোয়ারেন্টাইন করা হবে:</translation>
@@ -1532,7 +1543,7 @@
 <translation id="3303855915957856445">কোনো সার্চ ফলাফল পাওয়া যায়নি</translation>
 <translation id="3305389145870741612">বিন্যাসনের প্রক্রিয়াটিতে কয়েক সেকেন্ড সময় লাগতে পারে৷ দয়া করে অপেক্ষা করুন৷</translation>
 <translation id="3305661444342691068">PDF-এর প্রিভিউ খুলুন</translation>
-<translation id="3306684685104080068">Google Hangouts এর মতো ক্লাউড-ভিত্তিক পরিষেবায় কাস্ট করা চালু করুন।</translation>
+<translation id="3307871847038842490">আসল ফাইলে এই পৃষ্ঠার সেভ করার অনুমতি আছে।</translation>
 <translation id="3308006649705061278">অর্গানাইজেশনাল ইউনিট (OU) </translation>
 <translation id="3308116878371095290">এই পৃষ্ঠাটিকে কুকিজ সেট করা থেকে আটকানো হয়েছে৷</translation>
 <translation id="3308134619352333507">বোতাম লুকান</translation>
@@ -1635,7 +1646,6 @@
 <translation id="3462413494201477527">অ্যাকাউন্ট সেট-আপ বাতিল করবেন?</translation>
 <translation id="3464012987031883895">একটি সাইট অডিও ইনপুট অ্যাক্সেস করছে</translation>
 <translation id="346431825526753">এটি <ph name="CUSTODIAN_EMAIL" />-এর দ্বারা পরিচালিত বাচ্চাদের জন্য একটি অ্যাকাউন্ট৷</translation>
-<translation id="3468275649641751422">একটি ভিডিও বা অডিও ফাইল স্ট্রিম করুন</translation>
 <translation id="3468999815377931311">Android ফোন</translation>
 <translation id="3470442499439619530">এই ব্যবহারকারীকে সরান</translation>
 <translation id="3473479545200714844">স্ক্রিন ম্যাগনিফায়ার</translation>
@@ -1658,6 +1668,7 @@
 <translation id="3496213124478423963">জুম কমান</translation>
 <translation id="3497560059572256875">ডুডল শেয়ার করুন</translation>
 <translation id="3505030558724226696">ডিভাইসের অ্যাক্সেস প্রত্যাহার করুন</translation>
+<translation id="3505635633742443645">ভিডিও আউটপুটের জন্য ইউএসবি টাইপ-সি ব্যবহার করা হলে একইসাথে আপনার ডকের HDMI পোর্ট ব্যবহার করা যাবে না। যেকোনও একটি ডিসপ্লের জন্য আলাদা পোর্ট ব্যবহার করুন।</translation>
 <translation id="3507421388498836150">"<ph name="EXTENSION_NAME" />" এর জন্য বর্তমান অনুমতিগুলি</translation>
 <translation id="3507888235492474624">ব্লুটুথ ডিভাইস আবার স্ক্যান করুন</translation>
 <translation id="3508920295779105875">অন্য ফোল্ডার বেছে নিন...</translation>
@@ -1710,6 +1721,7 @@
 <translation id="3576324189521867626">সফলভাবে ইনস্টল হয়েছে</translation>
 <translation id="3578594933904494462">এই ট্যাবের কন্টেন্ট শেয়ার করা হচ্ছে৷</translation>
 <translation id="357886715122934472">&lt;Strong&gt; এ <ph name="SENDER" /> &lt;/ Strong&gt; একটি মুদ্রক শেয়ার করতে চায় এবং &lt;strong&gt; <ph name="PRINTER_NAME" /> &lt;/ Strong&gt; একটি দলের সঙ্গে আপনার নিজস্ব: &lt;strong&gt; এ <ph name="GROUP_NAME" /> করুন &lt;/ strong&gt;। যদি আপনি স্বীকার করেন গোষ্ঠীর সকল সদস্যরা মুদ্রকে মুদ্রণ করতে সক্ষম হবে।</translation>
+<translation id="357889014807611375">পরিমাপ করা ওয়াই-ফাই</translation>
 <translation id="3584169441612580296">আপনার কম্পিউটার থেকে ফটো, সঙ্গীত ও অন্য মিডিয়া পডুন এবং পরিবর্তন করুন</translation>
 <translation id="3587482841069643663">সকল</translation>
 <translation id="358796204584394954">যুক্ত করতে "<ph name="DEVICE_NAME" />" এ এই কোডটি লিখুন:</translation>
@@ -1720,6 +1732,7 @@
 <translation id="359283478042092570">Enter</translation>
 <translation id="3593965109698325041">সার্টিফিকেট নাম সীমাবদ্ধতাসমূহ</translation>
 <translation id="3596235046596950091">ক্লাউড পরিষেবাগুলি সক্ষম করুন</translation>
+<translation id="3599221874935822507">উঁচু করা</translation>
 <translation id="3599863153486145794">সমস্ত সাইন-ইন করা ডিভাইসগুলি থেকে ইতিহাস মুছে ফেলে। <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />-এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিংয়ের ইতিহাস থাকতে পারে।</translation>
 <translation id="3600051066689725006">ওয়েব অনুরোধ সংক্রান্ত তথ্য</translation>
 <translation id="3600792891314830896">সাউন্ড প্লে করা হয় যে সাইটগুলিতে সেগুলি মিউট করুন</translation>
@@ -1734,6 +1747,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; এর দ্বারা ডাউনলোড হয়েছে</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> দেখান</translation>
 <translation id="3613422051106148727">&amp;নতুন ট্যাবে খুলুন</translation>
+<translation id="3615073365085224194">আঙ্গুলের ছাপের সেন্সরটিকে আপনার আঙ্গুল দিয়ে টাচ করুন</translation>
 <translation id="3616113530831147358">অডিও</translation>
 <translation id="3616741288025931835">ব্রাউজ করা ডেটা সাফ করুন...</translation>
 <translation id="3617891479562106823">ব্যাকগ্রাউন্ডগুলি উপলভ্য নয়। পরে আবার চেষ্টা করুন।</translation>
@@ -1815,7 +1829,6 @@
 <translation id="3719826155360621982">হোমপেজ</translation>
 <translation id="3720996970802414353">তবুও বদল করতে চাই</translation>
 <translation id="3722108462506185496">ভার্চুয়াল মেশিন পরিষেবা চালাতে সমস্যা হচ্ছে। আবার চেষ্টা করুন।</translation>
-<translation id="3723158278575423087">Chromium এ কাস্ট অভিজ্ঞতা নিতে স্বাগতম!</translation>
 <translation id="3725367690636977613">পৃষ্ঠা</translation>
 <translation id="3726137731714254362">এখান থেকে ফোল্ডার সরিয়ে দিলে শেয়ার করা বন্ধ হয়ে যাবে কিন্তু ফাইল মুছে যাবে না।</translation>
 <translation id="3727148787322499904">এই সেটিং পরিবর্তন করা হলে শেয়ার করা সব নেটওয়ার্ক প্রভাবিত হবে</translation>
@@ -1850,7 +1863,6 @@
 <translation id="3764314093345384080">বিল্ড সম্পর্কিত বিস্তারিত তথ্য</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{একটি USB ডিভাইসের সাথে যোগাযোগ করুন}one{# USB ডিভাইসের সাথে যোগাযোগ করুন}other{# USB ডিভাইসের সাথে যোগাযোগ করুন}}</translation>
 <translation id="3765246971671567135">অফলাইন ডেমো মোড নীতি পড়া যায়নি।</translation>
-<translation id="3766223500670287046">দূরবর্তী স্ক্রিন</translation>
 <translation id="3768037234834996183">আপনার পছন্দগুলি সিঙ্ক হচ্ছে...</translation>
 <translation id="377050016711188788">আইসক্রিম</translation>
 <translation id="3771294271822695279">ভিডিও ফাইল</translation>
@@ -1923,7 +1935,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">আঙ্গুল লিফ্ট করে আবার টাচ করুন</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: সিঙ্ক থামানো হয়েছে</translation>
-<translation id="3862134173397075045">Chrome এ কাস্ট অভিজ্ঞতা নিতে স্বাগতম!</translation>
 <translation id="3862693525629180217">বিল্ট-ইন সেন্সর দ্বারা যাচাই করুন</translation>
 <translation id="3862788408946266506">'Kiosk_only' ম্যানিফেস্ট অ্যাট্রিবিউটের সাথে অ্যাপকে অবশ্যই Chrome OS কিয়স্ক মোডে ইনস্টল করতে হবে</translation>
 <translation id="3865414814144988605">রেজোলিউশন</translation>
@@ -1972,6 +1983,7 @@
 <translation id="3926002189479431949">Smart Lock ফোন পরিবর্তিত হয়েছে</translation>
 <translation id="3927932062596804919">অস্বীকার</translation>
 <translation id="3930737994424905957">ডিভাইস খোঁজা হচ্ছে</translation>
+<translation id="3930968231047618417">ব্যাকগ্রাউন্ডের রঙ</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> এর মুছে ফেলা পাসওয়ার্ডটি পুনরুদ্ধার করুন</translation>
 <translation id="3936390757709632190">অডিও নতুন ট্যাবে &amp;খুলুন</translation>
 <translation id="3936925983113350642">এই ফাইলটিকে পরে পুনরুদ্ধার করার জন্য আপনার চয়ন করা পাসওয়ার্ডটির প্রয়োজন হবে। এটিকে একটি নিরাপদ স্থানে সেভ করুন।</translation>
@@ -1990,6 +2002,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE থেকে আমাদানি করা</translation>
 <translation id="3950820424414687140">সাইন-ইন করুন</translation>
+<translation id="3950828138786918475">আপনার ডিভাইসে এই ট্যাবের ফোল্ডার পড়ার অনুমতি আছে।</translation>
 <translation id="3954354850384043518">প্রক্রিয়ায় আছে</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> হার্জ)</translation>
 <translation id="3954953195017194676">আপনার সাম্প্রতিক কোনও ক্যাপচার করা WebRTC ইভেন্ট লগ নেই।</translation>
@@ -2008,6 +2021,7 @@
 <translation id="397105322502079400">গণনা করা হচ্ছে...</translation>
 <translation id="3975565978598857337">রিলমের জন্য সার্ভারের সাথে কানেক্ট করা যায়নি</translation>
 <translation id="397703832102027365">চূড়ান্ত হচ্ছে...</translation>
+<translation id="3977886311744775419">এই ধরনের নেটওয়ার্কে অটোমেটিক আপডেট ডাউনলোড হয় না, কিন্তু আপনি নিজে কোনও আপডেট আছে কিনা তা দেখে নিতে পারেন।</translation>
 <translation id="3979395879372752341">নতুন এক্সটেনশন যোগ করা হয়েছে (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> সক্ষম করুন</translation>
 <translation id="3981760180856053153">ভুল সেভ করার ধরণ লেখা হয়েছে৷</translation>
@@ -2147,6 +2161,7 @@
 <translation id="4194570336751258953">ট্যাপ-টু-ক্লিক চালু করুন</translation>
 <translation id="4195643157523330669">নতুন ট্যাবে খুলুন</translation>
 <translation id="4195814663415092787">আপনি যেখানে ছেডেছেন সেখান থেকে চালিয়ে যান</translation>
+<translation id="4197940474316761015">নিম্নলিখিত ফাইলগুলিতে <ph name="ORIGIN" /> আপনার করা পরিবর্তনগুলি সরাসরি সেভ করতে পারে। এই ট্যাব খোলা থাকলে, তবেই এই সাইট পরিবর্তনগুলি সেভ করতে পারে।</translation>
 <translation id="4198146608511578238">আপনার Google সহায়কের সাথে কথা বলতে লঞ্চার আইকনটি টিপে ধরে রাখুন।</translation>
 <translation id="4200689466366162458">কাস্টম শব্দগুলি</translation>
 <translation id="4200983522494130825">নতুন &amp;ট্যাব</translation>
@@ -2194,7 +2209,6 @@
 <translation id="4267953847983678297">মোবাইল নেটওয়ার্কে অটোমেটিক কানেক্ট করুন</translation>
 <translation id="4268025649754414643">কী চিহ্নকরণ</translation>
 <translation id="4270393598798225102">ভার্সন <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">কোনো মিল নেই</translation>
 <translation id="4275663329226226506">মাধ্যম</translation>
 <translation id="4275830172053184480">আপনার ডিভাইস বন্ধ করে চালু করুন</translation>
 <translation id="4278101229438943600">আপনার অ্যাসিস্ট্যান্ট প্রস্তুত</translation>
@@ -2343,6 +2357,7 @@
 <translation id="4533985347672295764">সিপিইউ টাইম</translation>
 <translation id="4534661889221639075">আবার চেষ্টা করুন।</translation>
 <translation id="4535127706710932914">ডিফল্ট প্রোফাইল</translation>
+<translation id="4535767533210902251">আপনার কীবোর্ডের সবচেয়ে উপরে ডানদিকের বোতামটি হল আঙ্গুলের ছাপের সেন্সর। যেকোনও আঙ্গুল দিয়ে সেটি আলতো করে টাচ করুন।</translation>
 <translation id="4538684596480161368"><ph name="HOST" /> এ সর্বদা আনস্যান্ডবক্সড প্লাগ ইন অবরুদ্ধ করুন</translation>
 <translation id="4538792345715658285">এন্টারপ্রাইজ নীতি দ্বারা ইনস্টল করা হয়েছে৷</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" /> এবং <ph name="WEBSITE_2" /> আপনার ডেটা পড়ে</translation>
@@ -2376,6 +2391,7 @@
 <translation id="457386861538956877">আরও...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">ব্লুটুথ ডিভাইস যুক্ত করুন</translation>
+<translation id="4578012756826807359">আপনার সাইন-ইনের ডেটা মুছে দেওয়া হয়েছে।</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> কাস্ট করতে ব্যর্থ হয়েছে।</translation>
 <translation id="4581774856936278355">Linux ফিরিয়ে আনার সময় সমস্যা হয়েছে</translation>
 <translation id="4582563038311694664">সব সেটিংস রিসেট করুন</translation>
@@ -2493,7 +2509,6 @@
 <translation id="4763830802490665879">একাধিক সাইট থেকে কুকিগুলি প্রস্থানে সাফ করা হবে৷</translation>
 <translation id="4765582662863429759">Android Messages-কে আপনার ফোন থেকে Chromebook-এ টেক্সট রিলে করতে অনুমতি দেয়</translation>
 <translation id="4768332406694066911">আপনার পরিচয় শনাক্ত করে এমন সংস্থাগুলি থেকে শংসাপত্র আপনার কাছে আছে</translation>
-<translation id="4772404146526168240">দুটি স্ক্রিনেই</translation>
 <translation id="4776146737004271126">Android সেটিংস খুলুন</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" />-এর জন্য পাসওয়ার্ড</translation>
 <translation id="4777825441726637019">Play স্টোর</translation>
@@ -2601,7 +2616,6 @@
 <translation id="4927846293686536410">আপনার সকল ডিভাইসে আপনার বুকমার্ক, ইতিহাস এবং অন্যান্য সেটিংস পেতে সাইন-ইন করুন। এছাড়াও আপনি অটোমেটিক আপনার Google পরিষেবাগুলিতে সাইন-ইন করবেন।</translation>
 <translation id="4929386379796360314">প্রিন্ট ডেস্টিনেশন</translation>
 <translation id="4930714375720679147">চালু করুন</translation>
-<translation id="4931132176527519925">সর্বদা মিররিং ব্যবহার করুন</translation>
 <translation id="4932733599132424254">তারিখ</translation>
 <translation id="4933484234309072027"><ph name="URL" />-এ এম্বেড করা হয়েছে</translation>
 <translation id="493571969993549666">তত্ত্বাবধানে থাকা ব্যবহারকারীকে যোগ করুন</translation>
@@ -2641,6 +2655,7 @@
 <translation id="4992066212339426712">সশব্দ করুন</translation>
 <translation id="4992458225095111526">পাওয়ারওয়াশ নিশ্চিত করুন</translation>
 <translation id="4992473555164495036">আপনার অ্যাডমিনিস্ট্রেটর উপলভ্য ইনপুট পদ্ধতিগুলি সীমাবদ্ধ করেছেন।</translation>
+<translation id="4992866843815555470">আপনার ডক মেরামত করতে হবে। ফ্যান কাজ না করলে ডক বন্ধ হয়ে যাবে।</translation>
 <translation id="4992926179187649719">'Ok Google' চালু করুন</translation>
 <translation id="4994474651455208930">সাইটগুলিকে প্রোটোকলের জন্য ডিফল্ট হ্যান্ডলার হওয়ার জন্য জিজ্ঞাসা করার অনুমতি দেয়</translation>
 <translation id="4994754230098574403">সেট-আপ করা হচ্ছে</translation>
@@ -2779,7 +2794,6 @@
 <translation id="5233231016133573565">প্রক্রিয়া ID</translation>
 <translation id="5233638681132016545">নতুন ট্যাব</translation>
 <translation id="5233736638227740678">&amp;প্রতিলেপন</translation>
-<translation id="5234764350956374838">খারিজ</translation>
 <translation id="5235050375939235066">অ্যাপ আনইনস্টল করবেন?</translation>
 <translation id="5235750401727657667">নতুন ট্যাব খোলার সময় যে পৃষ্ঠাটি আপনি দেখেন সেটি বদলে দিন</translation>
 <translation id="5238278114306905396">"<ph name="EXTENSION_NAME" />" অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে সরানো হয়েছে৷</translation>
@@ -2844,6 +2858,7 @@
 <translation id="5319359161174645648">Google Chrome ব্যবহার করার সুপারিশ করে</translation>
 <translation id="532247166573571973">সার্ভারে সংযোগ নাও হতে পারে। পরে আবার চেষ্টা করুন।</translation>
 <translation id="5324780743567488672">আপনার লোকেশন ব্যবহার করে স্বয়ংক্রিয়ভাবে সময় অঞ্চল সেট করুন</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - আসল ফাইলে সেভ করার অনুমতি আছে</translation>
 <translation id="5327248766486351172">নাম</translation>
 <translation id="5327570636534774768">একটি ভিন্ন ডোমেনের দ্বারা পরিচালনার জন্য এই ডিভাইসটি চিহ্নিত করা আছে। ডেমো মোড সেট-আপ করার আগে এই ডিভাইসের উপর সেই ডোমেনের অধিকার বাতিল করুন।</translation>
 <translation id="532943162177641444">এই ডিভাইসে ব্যবহার করার জন্য মোবাইল হটস্পট সেট-আপ করতে আপনার <ph name="PHONE_NAME" /> এ বিজ্ঞপ্তিটির উপরে ক্লিক করুন।</translation>
@@ -2986,7 +3001,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> চায়</translation>
 <translation id="5534304873398226603">ফটো ভিডিও বাতিল করুন</translation>
 <translation id="5535941515421698170">এছাড়াও এই ডিভাইস থেকে আপনার বিদ্যমান ডেটা মুছুন</translation>
-<translation id="5537725057119320332">কাস্ট করুন</translation>
 <translation id="5539221284352502426">আপনার দেওয়া পাসওয়ার্ডটি সার্ভার থেকে প্রত্যাখ্যান করা হয়েছে। সম্ভাব্য কারণ: পাসওয়ার্ডটি অনেক ছোট। পাসওয়ার্ডে অক্ষর বা সিম্বল থাকতে হবে। এই পাসওয়ার্ডটি আগের পাসওয়ার্ডগুলি থেকে অবশ্যই আলাদা হবে।</translation>
 <translation id="5541687815721799001">অ্যাপ ব্যবহার করুন</translation>
 <translation id="5542132724887566711">প্রোফাইল</translation>
@@ -3106,7 +3120,7 @@
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Chrome-কে আপনার ডিফল্ট ব্রাউজার হিসেবে সেট করুন</translation>
 <translation id="5711983031544731014">আনলক করতে অক্ষম৷ আপনার পাসওয়ার্ড লিখুন৷</translation>
-<translation id="5713723565110096165">ভুল পিন লেখা হয়েছে। আরও <ph name="RETRIES" /> বার আপনি চেষ্টা করতে পারবেন।</translation>
+<translation id="5713723565110096165">ভুল পিন লেখা হয়েছে। আপনি আর <ph name="RETRIES" /> বার চেষ্টা করতে পারবেন।</translation>
 <translation id="5715711091495208045">প্লাগ-ইন ব্রোকার: <ph name="PLUGIN_NAME" /></translation>
 <translation id="5719603411793408026">ডিফল্ট সার্চ ইঞ্জিনগুলি</translation>
 <translation id="5720705177508910913">বর্তমান ব্যবহারকারী</translation>
@@ -3117,7 +3131,7 @@
 <translation id="5727728807527375859">এক্সটেনশন, apps, এবং থিমগুলি আপনার কম্পিউটারের ক্ষতি করতে পারে৷ আপনি কি চালিয়ে যাওয়ার বিষয়ে নিশ্চিত?</translation>
 <translation id="5729712731028706266">&amp;দেখুন</translation>
 <translation id="5734362860645681824">যোগাযোগগুলি</translation>
-<translation id="5734697361979786483">ফাইল শেয়ার করা যোগ করুন</translation>
+<translation id="5734697361979786483">'ফাইল শেয়ার' যোগ করুন</translation>
 <translation id="5736796278325406685">অনুগ্রহ করে একটি সঠিক ইউজারনেম লিখুন</translation>
 <translation id="5739235828260127894">যাচাইকরণের জন্য অপেক্ষা করা হচ্ছে। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation>
 <translation id="5739458112391494395">খুব বড়</translation>
@@ -3296,14 +3310,13 @@
 <translation id="5997337190805127100">সাইট অ্যাক্সেস সম্পর্কে আরও জানুন</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />'-এর জন্য <ph name="RESULT_COUNT" />টি ফলাফল</translation>
 <translation id="6002458620803359783">পছন্দসই ভয়েস</translation>
-<translation id="6005695835120147974">মিডিয়া রাউটার</translation>
 <translation id="6006484371116297560">ক্লাসিক</translation>
 <translation id="6007240208646052708">আপনার ভাষায় ভয়েস সার্চ করা যাবে না।</translation>
 <translation id="6009781704028455063">বিল্ট-ইন সেন্সর</translation>
 <translation id="6010869025736512584">ভিডিও ইনপুট অ্যাক্সেস করা হচ্ছে</translation>
 <translation id="6011193465932186973">আঙ্গুলের ছাপ</translation>
 <translation id="6011449291337289699">সাইট ডেটা সাফ করুন</translation>
-<translation id="6015266928248016057">ভুল PUK লেখা হয়েছে। আরও <ph name="RETRIES" /> বার আপনি চেষ্টা করতে পারবেন।</translation>
+<translation id="6015266928248016057">ভুল PUK লেখা হয়েছে। আপনি আর <ph name="RETRIES" /> বার চেষ্টা করতে পারবেন।</translation>
 <translation id="6015796118275082299">বছর</translation>
 <translation id="6016551720757758985">পূর্ববর্তী সংস্করণে ফিরে যাওয়া সহ পাওয়ারওয়াশ নিশ্চিত করুন</translation>
 <translation id="6016972670657536680">ভাষা এবং কীবোর্ড বোতাম বেছে নিন। বর্তমানে নির্বাচিত ভাষা হলো <ph name="LANGUAGE" />।</translation>
@@ -3497,7 +3510,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{আপনার নেটওয়ার্কে নতুন প্রিন্টারটি}one{আপনার নেটওয়ার্কে নতুন প্রিন্টারগুলি}other{আপনার নেটওয়ার্কে নতুন প্রিন্টারগুলি}}</translation>
 <translation id="6286708577777130801">সংরক্ষিত পাসওয়ার্ডের বিশদ বিবরণ</translation>
 <translation id="6289452883081499048">আপনার জন্য তৈরি Google পরিষেবা যেমন Play</translation>
-<translation id="6290556621549272952">আপনি আপনার টিভি বা অন্যান্য ডিভাইসে Chromium থেকে কন্টেন্ট দেখানোর জন্য এই বৈশিষ্ট্যটি ব্যবহার করতে পারেন।</translation>
 <translation id="6291949900244949761">কোনও সাইট ইউএসবি ডিভাইস অ্যাক্সেস করতে চাইলে আমাকে জিজ্ঞাসা করুন (প্রস্তাবিত)</translation>
 <translation id="6291953229176937411">ফাইন্ডারে &amp;দেখান</translation>
 <translation id="6295158916970320988">সমস্ত সাইট</translation>
@@ -3561,6 +3573,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />সিস্টেমের তথ্য<ph name="END_LINK1" /> এবং <ph name="BEGIN_LINK2" />মেট্রিক্স<ph name="END_LINK2" /> পাঠান</translation>
 <translation id="6396988158856674517">মোশন সেন্সর ব্যবহার করা থেকে সাইটকে ব্লক করুন</translation>
 <translation id="6397094776139756010">সিঙ্ক এবং নিজের মতো সাজিয়ে নেওয়ার বিকল্পগুলি</translation>
+<translation id="6397449385184089588">নিম্নলিখিত ফোল্ডারের ফাইলগুলিতে <ph name="ORIGIN" /> আপনার করা পরিবর্তনগুলি সরাসরি সেভ করবে। এই ট্যাব খোলা থাকলে, তবেই এই সাইট পরিবর্তনগুলি সেভ করতে পারে।</translation>
 <translation id="6398715114293939307">Google Play স্টোর সরান</translation>
 <translation id="6398765197997659313">পূর্ণ স্ক্রীণ বন্ধ করুন</translation>
 <translation id="6399774419735315745">গুপ্তচর</translation>
@@ -3605,11 +3618,13 @@
 <translation id="6455264371803474013">নির্দিষ্ট সাইটগুলিতে</translation>
 <translation id="6455894534188563617">&amp;নতুন ফোল্ডার</translation>
 <translation id="6456394469623773452">ভাল</translation>
+<translation id="6456955391422100996">বিজ্ঞাপন সরানো হয়েছে।</translation>
 <translation id="645705751491738698">জাভাস্ক্রিপ্ট ব্লক করা চালিয়ে যান</translation>
 <translation id="6458701200018867744">আপলোড করা যায়নি (<ph name="WEBRTC_LOG_UPLOAD_TIME" />)।</translation>
 <translation id="6459488832681039634">খোঁজার জন্য নির্বাচন ব্যবহার করুন</translation>
 <translation id="6459799433792303855">অন্য ডিসপ্লেতে সক্রিয় উইন্ডোটি সরিয়ে দেওয়া হয়েছে।</translation>
 <translation id="6460601847208524483">পরবর্তী খুঁজুন</translation>
+<translation id="6461170143930046705">নেটওয়ার্ক সার্চ করা হচ্ছে…</translation>
 <translation id="6463795194797719782">&amp;সম্পাদনা</translation>
 <translation id="6466988389784393586">ও সব বুকমার্ক খুলুন</translation>
 <translation id="6467304607960172345">ফুলস্ক্রিন ভিডিও অপ্টিমাইজ করুন</translation>
@@ -3648,6 +3663,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641"><ph name="NETWORK_TYPE" /> নেটওয়ার্কের সাথে আপনি কানেক্ট করে রয়েছেন।</translation>
 <translation id="6527303717912515753">শেয়ার করুন</translation>
 <translation id="6528513914570774834">এই ডিভাইসের অন্যান্য ব্যবহারকারীদের এই নেটওয়ার্ক ব্যবহার করতে দিন</translation>
 <translation id="652948702951888897">Chrome ইতিহাস</translation>
@@ -3744,7 +3760,6 @@
 <translation id="6680650203439190394">দ্রুততা</translation>
 <translation id="6681668084120808868">ফটো তুলুন</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" আনইনস্টল করা হবে।</translation>
-<translation id="6685083257944113180">থামুন, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Google Play খুলুন</translation>
 <translation id="6686490380836145850">ডানদিকের ট্যাবগুলি বন্ধ করুন</translation>
 <translation id="6686817083349815241">আপনার পাসওয়ার্ড সেভ করুন</translation>
@@ -3852,6 +3867,7 @@
 <translation id="6845038076637626672">সর্বাধিক খুলুন</translation>
 <translation id="6845325883481699275">Chrome-এর নিরাপত্তা উন্নত করতে সাহায্য করুন</translation>
 <translation id="6848388270925200958">এই মুহূর্তে, আপনার কাছে কিছু কার্ড রয়েছে যা শুধুমাত্র এই ডিভাইসে ব্যবহার করা যেতে পারে</translation>
+<translation id="6850286078059909152">টেক্সটের রঙ</translation>
 <translation id="6851497530878285708">অ্যাপ সক্ষম করা হয়েছে</translation>
 <translation id="6853388645642883916">আপডেটার নিদ্রা মোডে রয়েছে</translation>
 <translation id="68541483639528434">অন্যান্য ট্যাব বন্ধ করুন</translation>
@@ -3901,7 +3917,6 @@
 <translation id="6923132443355966645">স্ক্রল / ক্লিক করুন</translation>
 <translation id="6923633482430812883">মাউন্ট করার সময় সমস্যা হয়েছে। আপনি যে ফাইল সার্ভারে কানেক্ট করছেন সেটি SMBv2 বা তার পরের কোনও ভার্সন সমর্থন করে কিনা দেখুন।</translation>
 <translation id="6930036377490597025">এক্সটার্নাল নিরাপত্তা কী অথবা বিল্ট-ইন সেন্সর</translation>
-<translation id="6930242544192836755">সময়কাল</translation>
 <translation id="693807610556624488">"<ph name="DEVICE_NAME" />" এ লেখার ক্রিয়াকলাপ অ্যাট্রিবিউটের সর্বাধিক দৈর্ঘ্য অতিক্রম করেছে।</translation>
 <translation id="6941937518557314510">আপনার সার্টিফিকেট দিয়ে <ph name="HOST_NAME" />-এ প্রমাণীকরণ করতে <ph name="TOKEN_NAME" />-এ সাইন-ইন করুন৷</translation>
 <translation id="6943176775188458830">প্রিন্ট বাতিল করুন</translation>
@@ -3915,6 +3930,7 @@
 <translation id="6951153907720526401">পেমেন্ট হ্যান্ডলার</translation>
 <translation id="6951663584153258142">আপনার সংস্থা চাইছে যে আপনি এই ডিভাইস আপডেট করুন</translation>
 <translation id="6953878494808481632">সম্পর্কিত তথ্য</translation>
+<translation id="6953916367503892689">{0,plural, =1{ফাইল: <ph name="FILES" />}one{ফাইল: <ph name="FILES" />}other{ফাইল: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">পপআপ সংবীক্ষণ</translation>
 <translation id="6957044667612803194">এই নিরাপত্তা কী-তে পিন কাজ করে না</translation>
 <translation id="6957231940976260713">পরিষেবার নাম</translation>
@@ -4127,7 +4143,6 @@
 <translation id="7254554697254365959">এই পৃষ্ঠাটির অনুবাদ করা যায়নি।</translation>
 <translation id="7254951428499890870">আপনি কি ডায়গনিস্টিক মোডে "<ph name="APP_NAME" />" লঞ্চ করার বিষয়ে নিশ্চিত?</translation>
 <translation id="7255002516883565667">এই মুহূর্তে, আপনার কাছে একটি কার্ড রয়েছে যা শুধুমাত্র এই ডিভাইসে ব্যবহার করা যেতে পারে</translation>
-<translation id="7255220508626648026">কাস্ট করছে: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">রিসেট করা কনফার্ম করতে আপনার নিরাপত্তা কী আবার টাচ করুন। পিন সহ নিরাপত্তা কীয়ে সেভ করা সব তথ্য মুছে যাবে।</translation>
 <translation id="7255935316994522020">প্রয়োগ করুন</translation>
 <translation id="7256069762010468647">সাইটটি আপনার ক্যামেরা ব্যবহার করছে</translation>
@@ -4261,6 +4276,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">লোকেশন খুলুন...</translation>
 <translation id="7458168200501453431">Google সার্চ-এ যে বানান পরীক্ষা করার টুল ব্যবহার করা হয় সেটিই ব্যবহার করে। আপনি ব্রাউজারে যে টেক্সট লেখেন, সেটি Google-এ পাঠানো হয়।</translation>
+<translation id="7460045493116006516">বর্তমানে আপনার ইনস্টল করা থিম</translation>
 <translation id="7461924472993315131">পিন</translation>
 <translation id="746216226901520237">পরের বার, আপনার ফোন <ph name="DEVICE_TYPE" /> আনলক করবে। সেটিংসে গিয়ে Smart Lock বন্ধ করতে পারবেন।</translation>
 <translation id="7463006580194749499">একজন ব্যক্তিকে যোগ করুন</translation>
@@ -4320,6 +4336,7 @@
 <translation id="7554791636758816595">নতুন ট্যাব</translation>
 <translation id="7556033326131260574">Smart Lock আপনার অ্যাকাউন্ট যাচাই করতে পারেনি৷ সাইন-ইন করতে আপনার পাসওয়ার্ড লিখুন৷</translation>
 <translation id="7556242789364317684"><ph name="SHORT_PRODUCT_NAME" /> আপনার সেটিংস পুনরুদ্ধার করা যায়নি। ত্রুটি ঠিক করতে, <ph name="SHORT_PRODUCT_NAME" /> অবশ্যই পাওয়ারওয়াশের সাথে আপনার ডিভাইস রিসেট করবে৷</translation>
+<translation id="7559444627302317199">আপনার নেটওয়ার্ক কানেকশন পরীক্ষা করে আবার চেষ্টা করুন।</translation>
 <translation id="7559719679815339381">অনুগ্রহ করে অপেক্ষা করুন....এখন কিয়ক্স অ্যাপের আপডেট চলছে৷ USB স্টিকটি সরাবেন না৷</translation>
 <translation id="7561196759112975576">সবসময়</translation>
 <translation id="7563991800558061108">এই ত্রুটি থেকে পুনরুদ্ধার করার জন্য, সাইন-ইন স্ক্রীনে আপনাকে আপনার Google
@@ -4561,7 +4578,6 @@
 <translation id="7887334752153342268">ডুপ্লিকেট</translation>
 <translation id="7887864092952184874">ব্লুটুথ মাউস যুক্ত হয়েছে</translation>
 <translation id="7889565820482017512">ডিসপ্লে সাইজ</translation>
-<translation id="7889966925761734854">খুঁজে নিন</translation>
 <translation id="7893008570150657497">আপনার কম্পিউটার থেকে ফটো, সঙ্গীত ও অন্য মিডিয়াতে অ্যাক্সেস করুন</translation>
 <translation id="7893153962594818789"><ph name="DEVICE_TYPE" /> এ ব্লুটুথ বন্ধ করা আছে৷ আপনার পাসওয়ার্ড লিখুন এবং ব্লুটুথ চালু করুন৷</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (ডিফল্ট)</translation>
@@ -4569,7 +4585,6 @@
 <translation id="7898627924844766532">টুলবারের মধ্যে রাখুন</translation>
 <translation id="7898725031477653577">সর্বদা অনুবাদ করুন</translation>
 <translation id="790040513076446191">গোপনীয়তা-সংক্রান্ত সেটিংস নিপূণভাবে ব্যবহার করুন</translation>
-<translation id="7902874111237641165">সহজ মোশন [বিটা]</translation>
 <translation id="7903345046358933331">পৃষ্ঠাটি প্রতিক্রিয়াবিহীন হয়েছে। আপনি এটি প্রতিক্রিয়াযুক্ত হওয়ার জন্য অপেক্ষা করতে পারেন বা এটি বন্ধ করতে পারেন।</translation>
 <translation id="7903742244674067440">এই সার্টিফিকেটের কর্তৃপক্ষদের শনাক্ত করে এমন ফাইলের সার্টিফিকেটগুলি আপনার কাছে রয়েছে</translation>
 <translation id="7903925330883316394">উপযোগিতা: <ph name="UTILITY_TYPE" /></translation>
@@ -4681,6 +4696,7 @@
 <translation id="8037117027592400564">সিন্থেসাইজড স্পিচ ব্যবহার করে কথিত সব পাঠ্য পড়ুন</translation>
 <translation id="8037357227543935929">জিজ্ঞাসা করুন (ডিফল্ট)</translation>
 <translation id="803771048473350947">ফাইল</translation>
+<translation id="8042142357103597104">টেক্সটের অস্বচ্ছতা</translation>
 <translation id="8044899503464538266">মন্থর</translation>
 <translation id="8045253504249021590">Google ড্যাশবোর্ড মারফত সিঙ্ক থামানো হয়েছে।</translation>
 <translation id="8045923671629973368">অ্যাপ্লিকেশান আইডি বা ওয়েবস্টোরের URL লিখুন</translation>
@@ -4717,7 +4733,6 @@
     <ph name="BEGIN_PARAGRAPH5" />আপনি সেটিংস থেকে এই পরিষেবা বন্ধ করতে পারেন।<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">পিন মিলছে না</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> একটি এক্সটেনশনের প্রক্সি সেটিংস ব্যবহার করছে</translation>
-<translation id="8099495042588009598">আরও অনুমোদন</translation>
 <translation id="8101987792947961127">পরবর্তী রিবুটে পাওয়ারওয়াশ প্রয়োজন</translation>
 <translation id="8102159139658438129">আপনার কানেক্ট করা ফোনের বিকল্পগুলি দেখতে <ph name="LINK_BEGIN" />সেটিংস<ph name="LINK_END" />-এ যান</translation>
 <translation id="8104696615244072556">আপনার <ph name="IDS_SHORT_PRODUCT_NAME" /> ডিভাইসটি পাওয়ারওয়াশ করুন এবং পূর্ববর্তী ভার্সনে ফিরে যান।</translation>
@@ -4768,8 +4783,10 @@
     এই সাইটটি ব্লক করা উচিত বলে আমি মনে করি না!</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" /> এ পাল্টান</translation>
 <translation id="8184318863960255706">আরও তথ্য</translation>
+<translation id="8184472985242519288">সব জায়গায় একরকম</translation>
 <translation id="8185331656081929126">নেটওয়ার্কে নতুন মুদ্রণগুলি শণাক্ত করা হলে বিজ্ঞপ্তিগুলি দেখান</translation>
 <translation id="8186609076106987817">সার্ভার ফাইলটি খুঁজে পায়নি৷</translation>
+<translation id="8187950680397073878">নিম্নলিখিত ফোল্ডারের সব ফাইল <ph name="ORIGIN" /> পড়তে পারে। এই ট্যাব খোলা থাকলে, তবেই এই সাইট পরিবর্তনগুলি দেখতে পারে।</translation>
 <translation id="8188389033983459049">আপনার ডিভাইসের সেটিংস চেক করুন এবং চালিয়ে যেতে এটি চালু করুন</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" />-তে সংযুক্ত হচ্ছে</translation>
 <translation id="8191230140820435481">আপনার অ্যাপ্লিকেশন, এক্সটেনশন, এবং থিম পরিচালনা করুন</translation>
@@ -4872,9 +4889,7 @@
 <translation id="8339059274628563283"><ph name="SITE" /> স্থানীয়ভাবে ডেটা সংরক্ষণ করেছে</translation>
 <translation id="833986336429795709">এই লিঙ্কটি খুলতে, একটি অ্যাপ বেছে নিন</translation>
 <translation id="8342861492835240085">একটি সংগ্রহ বেছে নিন</translation>
-<translation id="834290227245955730">ভুল পিন লেখা হয়েছে। আরও <ph name="RETRIES" /> বার আপনি চেষ্টা করতে পারবেন।</translation>
-<translation id="8343956361364550006">সেরা ভিডিও বা অ্যানিমেশনের জন্য ভালো ব্যান্ডউইথ ব্যবহার করুন।
-ধীর গতির কানেকশনে আপনার কন্টেন্ট নাও দেখতে পারেন।</translation>
+<translation id="834290227245955730">ভুল পিন লেখা হয়েছে। আপনি আর <ph name="RETRIES" /> বার চেষ্টা করতে পারবেন।</translation>
 <translation id="8351419472474436977">এই এক্সটেনশন আপনার প্রক্সি সেটিংস নিয়ন্ত্রণ করছে, যার মানে হল আপনি অনলাইনে যাই করুন না কেন এটি তার পরিবর্তন, নষ্ট বা লুকিয়ে দেখতে পারবে। আপনি যদি বুঝতে না পারেন কেন এই পরিবর্তনটি হয়েছে তাহলে আপনি সম্ভবত এটি চাইছেন না।</translation>
 <translation id="8351630282875799764">ব্যাটারি চার্জ হচ্ছে না</translation>
 <translation id="835238322900896202">আনইনস্টল করার সময় একটি সমস্যা হয়েছে। টার্মিনাল-এর মাধ্যমে আনইনস্টল করুন।</translation>
@@ -4907,9 +4922,11 @@
 <translation id="839736845446313156">নিবন্ধ করুন</translation>
 <translation id="8398877366907290961">যাইহোক এগিয়ে যান</translation>
 <translation id="8400146488506985033">ব্যক্তিগণকে পরিচালনা করুন</translation>
+<translation id="8400444932218572097">নিম্নলিখিত ফোল্ডারের ফাইলগুলিতে <ph name="ORIGIN" /> আপনার করা পরিবর্তনগুলি সরাসরি সেভ করতে পারে। এই ট্যাব খোলা থাকলে, তবেই এই সাইট পরিবর্তনগুলি সেভ করতে পারে।</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">প্রথমে জিজ্ঞাসা করুন (প্রস্তাবিত)</translation>
 <translation id="8418445294933751433">ট্যাব রূপে &amp;দেখান</translation>
+<translation id="8418905021510211421">আপনার ডিভাইসে এই পৃষ্ঠার ফোল্ডার পড়ার অনুমতি আছে।</translation>
 <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' এর সার্চ ফলাফল</translation>
 <translation id="8419368276599091549">আপনার <ph name="DEVICE_TYPE" /> এ স্বাগতম!</translation>
 <translation id="8425213833346101688">পরিবর্তন</translation>
@@ -4929,6 +4946,7 @@
 <translation id="8438566539970814960">সার্চ এবং ব্রাউজিং অভিজ্ঞতা আরও উন্নত করুন</translation>
 <translation id="8439506636278576865">এই ভাষাতে পৃষ্ঠাগুলি অনুবাদ করার প্রস্তাব করে</translation>
 <translation id="8440630305826533614">Linux অ্যাপ</translation>
+<translation id="844241640324986723">আপনার সাইন-ইনের ডেটা মোছা যায়নি।</translation>
 <translation id="8443338615972234259">আপনার তত্ত্বাবধানে থাকা ব্যবহারকারীর জন্য একটি অ্যাকাউন্ট এখন তৈরি করুন।</translation>
 <translation id="8446884382197647889">আরও জানুন</translation>
 <translation id="8447409163267621480">Ctrl অথবা Alt ব্যবহার করতে হবে</translation>
@@ -4944,8 +4962,6 @@
 <translation id="8461914792118322307">প্রক্সি</translation>
 <translation id="8463215747450521436">এই তত্ত্বাবধানে থাকা ব্যবহারকারীটি পরিচালকের দ্বারা মুছে দেওয়া বা বন্ধ করে রাখা থাকতে পারে৷ আপনি যদি এই ব্যবহারকারী হিসেবে সাইন-ইন চালিয়ে যেতে চান তাহলে অনুগ্রহ করে ম্যানেজারের সঙ্গে যোগাযোগ করুন৷</translation>
 <translation id="846374874681391779">ডাউনলোড বার</translation>
-<translation id="8463807869745732775">"&gt;
-    নিরাপত্তা কীয়ে সেভ করা সাইন-ইন ডেটা</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> অক্ষম করা হয়েছে।</translation>
 <translation id="8464132254133862871">এই ব্যবহারকারীর অ্যাকাউন্ট এই পরিষেবার জন্য উপযুক্ত নয়৷</translation>
 <translation id="8465252176946159372">বৈধ না</translation>
@@ -4970,7 +4986,7 @@
 <translation id="8497219075884839166">Windows ইউটিলিটি</translation>
 <translation id="8498214519255567734">এটি ব্যবহার করলে আপনি কম আলোতেও স্বচ্ছন্দে স্ক্রিনের দিকে তাকাতে বা পড়তে পারবেন</translation>
 <translation id="8498395510292172881">Chrome-এ পড়া চালিয়ে যান</translation>
-<translation id="8500234928660943538">ভুল PUK লেখা হয়েছে। আরও <ph name="RETRIES" /> বার আপনি চেষ্টা করতে পারবেন।</translation>
+<translation id="8500234928660943538">ভুল PUK লেখা হয়েছে। আপনি আর <ph name="RETRIES" /> বার চেষ্টা করতে পারবেন।</translation>
 <translation id="8502536196501630039">Google Play থেকে অ্যাপ ব্যবহার করতে, প্রথমে আপনার অ্যাপ রিস্টোর করতে হবে। কিছু ডেটা হারিয়ে যেতে পারে।</translation>
 <translation id="8503813439785031346">ইউজারনেম</translation>
 <translation id="850875081535031620">কোনও ক্ষতিকর সফ্টওয়্যার খুঁজে পাওয়া যায়নি</translation>
@@ -5011,6 +5027,7 @@
 <translation id="8569002732135253578">এখন <ph name="DOCUMENT_NAME" /> প্রিন্ট করা হচ্ছে</translation>
 <translation id="8569682776816196752">কোনো গন্তব্যস্থল পাওয়া যায়নি</translation>
 <translation id="8571213806525832805">গত ৪ সপ্তাহ</translation>
+<translation id="8573403125070227391">এই বিজ্ঞাপন আপনার ডিভাইসের অতিরিক্ত রিসোর্স ব্যবহার করে, তাই Chrome সেটি মুছে দিয়েছে।</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> এ সবসময় সাউন্ড চালু রাখুন</translation>
 <translation id="8575286410928791436">ছেড়ে যাওয়ার জন্য <ph name="KEY_EQUIVALENT" /> ধরে থাকুন</translation>
 <translation id="8578639784464423491">৯৯টি অক্ষরের বেশি রাখা যাবে না</translation>
@@ -5034,13 +5051,13 @@
 <translation id="8609465669617005112">উপরে যান</translation>
 <translation id="8610103157987623234">ফর্ম্যাটটি ভুল হয়েছে, আবার চেষ্টা করুন</translation>
 <translation id="8615618338313291042">ছদ্মবেশী অ্যাপ্লিকেশান: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">ড্রপ শ্যাডো</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">রোমিং স্থিতি</translation>
 <translation id="8620765578342452535">নেটওয়ার্ক সংযোগ কনফিগার করুন</translation>
 <translation id="8621866727807194849">আপনার কম্পিউটারে ক্ষতিকারক সফ্টওয়্যার পাওয়া গেছে। Chrome সেটিকে সরিয়ে দিচ্ছে, সেটিংস রিস্টোর করছে এবং বিভিন্ন এক্সটেনশন বন্ধ করে দিচ্ছে। এর ফলে আপনার ব্রাউজার আবার স্বাভাবিকভাবে কাজ করতে পারবে।</translation>
 <translation id="8621979332865976405">আপনার পুরো স্ক্রিন শেয়ার করুন</translation>
 <translation id="862542460444371744">&amp;এক্সটেনশনস</translation>
-<translation id="8627151598708688654">উৎস বেছে নিন</translation>
 <translation id="862727964348362408">সাসপেন্ড</translation>
 <translation id="862750493060684461">CSS ক্যাশে</translation>
 <translation id="8627795981664801467">কেবলমাত্র নিরাপদ কানেকশন</translation>
@@ -5094,6 +5111,7 @@
 <translation id="8688579245973331962">আপনার নাম দেখতে পাচ্ছেন না?</translation>
 <translation id="8688591111840995413">খারাপ পাসওয়ার্ড</translation>
 <translation id="8688672835843460752">উপলব্ধ</translation>
+<translation id="8689998525144040851">১০০</translation>
 <translation id="8695825812785969222">Open &amp;Location...</translation>
 <translation id="869884720829132584">অ্যাপ্লিকেশনস মেনু</translation>
 <translation id="869891660844655955">মেয়াদকাল সমাপ্তির তারিখ</translation>
@@ -5257,6 +5275,7 @@
 <translation id="891365694296252935">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। এখন এই ডিভাইসটি নিজে থেকেই Google-এ ডায়াগনিস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠাচ্ছে। এটি আপনার সন্তানকে শনাক্ত করতে ব্যবহার করা হবে না এবং সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করবে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। এই সেটিং মালিকের নিয়ন্ত্রণে রয়েছে। অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিংটি আপনার সন্তানের ডিভাইসের জন্য চালু করা থাকলে, এই ডেটা তাদের Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK1" />আরও জানুন<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">লোড করার প্রস্তাব</translation>
 <translation id="8916476537757519021">ছদ্মবেশী সাবফ্রেম: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - আপনার ডিভাইসে ফোল্ডার পড়ার অনুমতি আছে</translation>
 <translation id="8919275547519617350">সব ডিভাইসে আপনার পাসওয়ার্ড পেতে, সাইন-ইন করুন এবং সিঙ্ক চালু করুন।</translation>
 <translation id="8921366488406707015">আপনার নিরাপত্তা কী যাচাই করা হচ্ছে...</translation>
 <translation id="8922013791253848639">এই সাইটে সবসময় বিজ্ঞাপন দেখানোর অনুমতি দিন</translation>
@@ -5286,7 +5305,6 @@
 <translation id="8965037249707889821">পুরানো পাসওয়ার্ড লিখুন</translation>
 <translation id="8966870118594285808">ভুল করে কোন ট্যাব বন্ধ করে থাকলে সেটি আবার খুলুন</translation>
 <translation id="8967866634928501045">দেখতে Alt Shift A টিপুন</translation>
-<translation id="8970203673128054105">কাস্ট মোড তালিকা দেখুন</translation>
 <translation id="89720367119469899">অব্যাহতি</translation>
 <translation id="8972513834460200407">Google সার্ভারগুলি থেকে ডাউনলোডগুলিকে ফায়ারওয়াল ব্লক করছে না তা নিশ্চিত করতে অনুগ্রহ করে আপনার নেটওয়ার্ক অ্যাডমিনিস্ট্রেটরের মাধ্যমে পরীক্ষা করুন৷</translation>
 <translation id="8973557916016709913">জুম লেভেল সরান</translation>
@@ -5435,6 +5453,7 @@
 <translation id="9214520840402538427">ওহো! প্রারম্ভিক ইনস্টলেশন-সময়ের বৈশিষ্ট্যাবলীর সময় ফুরিয়েছে৷ দয়া করে আপনার সহায়ক প্রতিনিধির সঙ্গে যোগাযোগ করুন৷</translation>
 <translation id="9214695392875603905">কাপ কেক</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" জোড়া হয়েছে</translation>
+<translation id="9216712190298404438">নিম্নলিখিত ফাইলে <ph name="ORIGIN" /> আপনার করা পরিবর্তনগুলি সরাসরি সেভ করতে পারে। এই ট্যাব খোলা থাকলে, তবেই এই সাইট পরিবর্তনগুলি সেভ করতে পারে।</translation>
 <translation id="9218430445555521422">ডিফল্ট হিসেবে সেট করুন</translation>
 <translation id="9219103736887031265">ছবিগুলি</translation>
 <translation id="9220525904950070496">অ্যাকাউন্ট সরান</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 036985b..56c851f 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">S'ha produït un error en iniciar la màquina virtual. Torna-ho a provar.</translation>
 <translation id="1089439967362294234">Canvia la contrasenya</translation>
 <translation id="1090126737595388931">No hi cap aplicació en execució en segon pla</translation>
+<translation id="1090290614672149983">Vols desar els canvis al fitxer original?</translation>
 <translation id="1090918500949388876">Accedeix a l'Assistent sempre que diguis "Ok Google" quan la pantalla estigui activada</translation>
 <translation id="1091767800771861448">Premeu ESCAPE per ometre (només compilacions no oficials).</translation>
 <translation id="1093457606523402488">Xarxes visibles:</translation>
 <translation id="1094607894174825014">S'ha sol·licitat una operació de lectura o escriptura amb un decalatge no vàlid a <ph name="DEVICE_NAME" />.</translation>
 <translation id="1097658378307015415">Abans d'iniciar la sessió amb el vostre usuari, entreu com a convidat per activar la xarxa <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Aquesta pestanya pot desar contingut en fitxers originals.</translation>
 <translation id="1103523840287552314">Tradueix sempre el text en <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Atura</translation>
 <translation id="1110155001042129815">Espera</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Ulleres de sol</translation>
 <translation id="1151917987301063366">Permet sempre que <ph name="HOST" /> accedeixi als sensors</translation>
 <translation id="1153356358378277386">Dispositius vinculats</translation>
-<translation id="1156488781945104845">Hora actual</translation>
 <translation id="1161575384898972166">Inicieu la sessió a <ph name="TOKEN_NAME" /> per exportar el certificat de client.</translation>
 <translation id="1163931534039071049">&amp;Visualitza l'origen del marc</translation>
 <translation id="1164674268730883318">Vols desactivar Smart Lock per a <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Configuració d'emmagatzematge d'Adobe Flash Player</translation>
 <translation id="1274997165432133392">Galetes i altres dades dels llocs web</translation>
 <translation id="127668050356036882">Tanca totes les finestres</translation>
-<translation id="1277908057200820621">Mostra la llista de dispositius</translation>
 <translation id="1280820357415527819">S'estan cercant xarxes mòbils</translation>
 <translation id="1285320974508926690">No tradueixis mai aquest lloc</translation>
 <translation id="1285484354230578868">Emmagatzemar les dades al compte de Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Xarxa domèstica, no itinerància</translation>
 <translation id="1316136264406804862">S'està cercant...</translation>
 <translation id="1316495628809031177">La sincronització està en pausa</translation>
+<translation id="1317637799698924700">La base de connexió funcionarà en un mode compatible amb els connectors USB tipus C.</translation>
 <translation id="1322046419516468189">Consulta i gestiona les contrasenyes desades al <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Inicia la sessió a Chrome per accedir a les pestanyes dels altres dispositius que tinguis.</translation>
 <translation id="1327074568633507428">Impressora a Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">El <ph name="BEGIN_LINK" />navegador està gestionat<ph name="END_LINK" /> per <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Executa les eines, els editors i els IDE de Linux a <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Més informació&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Trieu un fitxer</translation>
+<translation id="1370749010280229230">La pantalla connectada a la base té un problema</translation>
 <translation id="1371301976177520732">Tindràs les adreces d'interès, les contrasenyes, l'historial i altres elements en tots els dispositius</translation>
 <translation id="1372841398847029212">Sincronitza amb el meu compte</translation>
 <translation id="1374844444528092021">El certificat necessari per a la xarxa "<ph name="NETWORK_NAME" />" no està instal·lat o ja no és vàlid. Obtingueu un certificat nou i proveu de tornar-vos a connectar.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Pàgina web, un únic fitxer</translation>
 <translation id="1451917004835509682">Afegeix una persona supervisada</translation>
 <translation id="1454223536435069390">Fes una c&amp;aptura de pantalla</translation>
+<translation id="1458243790901188746">{0,plural, =1{Carpeta: <ph name="DIRECTORIES" />}other{Carpetes: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Les extensions han afegit motors de cerca</translation>
 <translation id="146000042969587795">S'ha bloquejat aquest marc perquè inclou contingut no segur.</translation>
 <translation id="146219525117638703">Estat d'ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Mostra les opcions d'entrada</translation>
 <translation id="1651008383952180276">Has d'escriure la mateixa frase de contrasenya dues vegades</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Afegiu la impressora a Google Cloud Print per poder imprimir des de qualsevol lloc.}other{Afegiu # impressores a Google Cloud Print per poder imprimir des de qualsevol lloc.}}</translation>
+<translation id="1656528038316521561">Opacitat del fons</translation>
 <translation id="1657406563541664238">Ajuda'ns a millorar <ph name="PRODUCT_NAME" /> enviant estadístiques d'ús i informes d'error a Google automàticament.</translation>
 <translation id="1658424621194652532">Aquesta pàgina té accés al micròfon.</translation>
 <translation id="1660204651932907780">Permet que els llocs web reprodueixin so (opció recomanada)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> vol veure la marca i el model de la teva clau de seguretat</translation>
 <translation id="1679068421605151609">Eines per a desenvolupadors</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Confirmes que vols sortir?</translation>
 <translation id="167983332380191032">El servei de gestió ha enviat un error d'HTTP.</translation>
 <translation id="1680849702532889074">S'ha produït un error en instal·lar l'aplicació per a Linux.</translation>
 <translation id="16815041330799488">No permetis que els llocs web vegin el text i les imatges copiats al porta-retalls</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identificador de contingut multimèdia protegit</translation>
 <translation id="175196451752279553">T&amp;orna a obrir la pestanya tancada</translation>
 <translation id="1753905327828125965">Els més visitats</translation>
+<translation id="1755601632425835748">Mida del text</translation>
 <translation id="1756681705074952506">Mètode d'introducció de text</translation>
 <translation id="1757301747492736405">Desinstal·lació pendent</translation>
 <translation id="175772926354468439">Activa el tema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Més petit</translation>
 <translation id="1919345977826869612">Anuncis</translation>
 <translation id="1919814239594435008">S'ha permès l'accés al connector de fora de la zona de proves</translation>
+<translation id="1920390473494685033">Contactes</translation>
 <translation id="1921050530041573580">Vincula el telèfon amb Missatges</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> ppp</translation>
 <translation id="1924559387127953748">Gaudeix de les funcions intel·ligents de Google a <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Pestanya d'incògnit: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">El connector <ph name="PEPPER_PLUGIN_NAME" /> del lloc web <ph name="PEPPER_PLUGIN_DOMAIN" /> vol accedir a l'ordinador</translation>
 <translation id="2178614541317717477">Compromís de CA</translation>
+<translation id="2179849162388791084">No s'han pogut recollir les dades d'inici de sessió de la clau de seguretat.</translation>
 <translation id="218070003709087997">Utilitza un número per indicar quantes còpies vols imprimir (entre 1 i 999).</translation>
 <translation id="2184515124301515068">Deixa que Chrome triï quan poden reproduir so els llocs web (opció recomanada)</translation>
 <translation id="2187895286714876935">Error d'importació del certificat del servidor</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Totes les galetes i les dades del lloc web</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 element copiat}other{# elements copiats}}</translation>
 <translation id="2278562042389100163">Obre una finestra del navegador</translation>
-<translation id="2279874276457403668">Només es pot crear una sessió cada vegada.</translation>
 <translation id="2280486287150724112">Marge dret</translation>
 <translation id="2282146716419988068">Procés de GPU</translation>
 <translation id="2282155092769082568">URL de configuració automàtica:</translation>
@@ -875,7 +882,7 @@
 <translation id="2294358108254308676">Voleu instal·lar <ph name="PRODUCT_NAME" />?</translation>
 <translation id="2297705863329999812">Cerca impressores</translation>
 <translation id="2300383962156589922">Personalitza i controla <ph name="APP_NAME" /></translation>
-<translation id="2300800387751317588">La sincronització s'ha posat en pausa perquè has esborrat les galetes en iniciar. Canvia <ph name="COOKIE_SETTINGS_LINK" /> per continuar amb la sincronització.</translation>
+<translation id="2300800387751317588">La sincronització s'ha posat en pausa perquè s'esborren les galetes en iniciar. Canvia <ph name="COOKIE_SETTINGS_LINK" /> per continuar amb la sincronització.</translation>
 <translation id="2301382460326681002">El directori arrel de l'extensió no és vàlid.</translation>
 <translation id="23030561267973084">"<ph name="EXTENSION_NAME" />" ha sol·licitat permisos addicionals.</translation>
 <translation id="2307462900900812319">Configura la xarxa</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Les notes de la pantalla de bloqueig es desen automàticament a <ph name="LOCK_SCREEN_APP_NAME" />. La nota més recent romandrà a la pantalla de bloqueig.</translation>
 <translation id="2353297238722298836">La càmera i el micròfon es poden utilitzar</translation>
 <translation id="2356070529366658676">Pregunta-ho</translation>
-<translation id="2357949918965361754">Podeu fer servir aquesta funció per mostrar contingut de Chrome al televisor i en altres dispositius.</translation>
 <translation id="2359345697448000899">Per gestionar les extensions, feu clic a Extensions al menú Eines.</translation>
 <translation id="2359808026110333948">Continua</translation>
 <translation id="236117173274098341">Optimitza</translation>
@@ -964,6 +970,7 @@
 <translation id="2436720498717686157">La teva organització requereix que s'actualitzi immediatament aquest dispositiu</translation>
 <translation id="2439545803278355377">Introdueix el PIN nou. Els codis PIN han de tenir quatre caràcters com a mínim i poden contenir lletres, números i altres caràcters.</translation>
 <translation id="2440604414813129000">Visualitza l'&amp;origen</translation>
+<translation id="2442916515643169563">Ombra del text</translation>
 <translation id="2444119669991608829">La pàgina no està en <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">El directori arrel de l'extensió és obligatori.</translation>
 <translation id="2445484935443597917">Crea un perfil</translation>
@@ -1178,6 +1185,7 @@
 <translation id="2738771556149464852">No després</translation>
 <translation id="2739191690716947896">Depura</translation>
 <translation id="2739240477418971307">Canvia la configuració d'accessibilitat</translation>
+<translation id="274029851662193272">Enfonsat</translation>
 <translation id="2740393541869613458">revisa els llocs web que l'usuari supervisat ha visitat i</translation>
 <translation id="2741912629735277980">Mostra la IU a la pàgina d'inici de sessió</translation>
 <translation id="274290345632688601">S'estan restaurant els fitxers i les aplicacions de Linux</translation>
@@ -1226,6 +1234,7 @@
 <translation id="2806891468525657116">Aquesta drecera ja existeix</translation>
 <translation id="2807517655263062534">Aquí es mostren els fitxers baixats</translation>
 <translation id="2809586584051668049">i <ph name="NUMBER_ADDITIONAL_DISABLED" /> més</translation>
+<translation id="2812049959647166806">Els connectors Thunderbolt no s'admeten</translation>
 <translation id="2812944337881233323">Tanca la sessió i torna-la a iniciar</translation>
 <translation id="2812989263793994277">No mostris cap imatge</translation>
 <translation id="281390819046738856">La sol·licitud no s'ha pogut signar.</translation>
@@ -1248,7 +1257,6 @@
 <translation id="2841837950101800123">Proveïdor</translation>
 <translation id="2844169650293029770">Dispositiu USB-C (port frontal esquerre)</translation>
 <translation id="2845382757467349449">Mostra la barra d'adreces d'interès</translation>
-<translation id="2847759467426165163">Emet a</translation>
 <translation id="284805635805850872">Vols suprimir el programari nociu?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Error de neteja</translation>
@@ -1295,6 +1303,7 @@
     Missatge del servidor: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Addició d'una galeria multimèdia per directori</translation>
 <translation id="2910318910161511225">Connecta't a una xarxa i torna-ho a provar</translation>
+<translation id="2910518940971897750">Desa al fitxer original</translation>
 <translation id="2913331724188855103">Permet que els llocs web desin i llegeixin les dades de les galetes (opció recomanada)</translation>
 <translation id="2915102088417824677">Mostra el registre d'activitat</translation>
 <translation id="2915873080513663243">Cerca automàtica</translation>
@@ -1359,12 +1368,14 @@
 <translation id="3013291976881901233">Dispositius MIDI</translation>
 <translation id="3015639418649705390">Reinicia ara</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> no s'ha pogut configurar automàticament. Especifica els detalls avançats de la impressora.</translation>
+<translation id="3016381065346027039">No hi ha cap entrada al registre</translation>
 <translation id="3016641847947582299">Component actualitzat</translation>
 <translation id="3016780570757425217">Saber la vostra ubicació</translation>
 <translation id="3017079585324758401">Fons</translation>
 <translation id="3020183492814296499">Dreceres</translation>
 <translation id="3020990233660977256">Número de sèrie: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Papallona</translation>
+<translation id="3021408157810018664">Vols desar els canvis als fitxers originals?</translation>
 <translation id="3021426244864538700">S'està accedint a les dades d'aquest lloc web</translation>
 <translation id="3021678814754966447">&amp;Visualitza l'origen del marc</translation>
 <translation id="3022978424994383087">No t'he entès.</translation>
@@ -1455,6 +1466,7 @@
 <translation id="3170072451822350649">També podeu <ph name="LINK_START" />navegar com a convidat<ph name="LINK_END" /> sense iniciar sessió.</translation>
 <translation id="3172045848207518317">Un lloc web està accedint a l'entrada de vídeo</translation>
 <translation id="3177909033752230686">Idioma de la pàgina:</translation>
+<translation id="3179982752812949580">Tipus de lletra del text</translation>
 <translation id="3181954750937456830">Navegació segura (et protegeix a tu i al teu dispositiu de llocs web perillosos)</translation>
 <translation id="3182749001423093222">Corrector ortogràfic</translation>
 <translation id="3183139917765991655">Importador de perfils</translation>
@@ -1507,7 +1519,6 @@
 <translation id="3275778913554317645">Obre com a finestra</translation>
 <translation id="3278001907972365362">Els teus Comptes de Google requereixen atenció</translation>
 <translation id="3279230909244266691">Aquest procés pot tardar uns quants minuts. S'està iniciant la màquina virtual.</translation>
-<translation id="3279741024917655738">Mostra els vídeos en pantalla completa a</translation>
 <translation id="3280237271814976245">Desa &amp;com a...</translation>
 <translation id="3280243678470289153">Continua a Chrome</translation>
 <translation id="3281892622610078515">Fitxer i programes que es posaran en quarantena:</translation>
@@ -1529,7 +1540,7 @@
 <translation id="3303855915957856445">No s'ha trobat cap resultat de la cerca</translation>
 <translation id="3305389145870741612">El procés de format pot trigar uns quants segons. Espereu.</translation>
 <translation id="3305661444342691068">Obre la previsualització en PDF</translation>
-<translation id="3306684685104080068">Activeu l'emissió de contingut a serveis basats en núvol, com ara Google Hangouts.</translation>
+<translation id="3307871847038842490">Aquesta pàgina pot desar contingut en fitxers originals.</translation>
 <translation id="3308006649705061278">Unitat organitzativa (OU)</translation>
 <translation id="3308116878371095290">S'ha impedit que aquesta pàgina estableixi galetes.</translation>
 <translation id="3308134619352333507">Amaga el botó</translation>
@@ -1634,7 +1645,6 @@
 <translation id="3462413494201477527">Voleu cancel·lar la configuració del compte?</translation>
 <translation id="3464012987031883895">Un lloc web està accedint a l'entrada d'àudio</translation>
 <translation id="346431825526753">Aquest és un compte infantil gestionat per <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Reprodueix un fitxer de vídeo o d'àudio en temps real</translation>
 <translation id="3468999815377931311">Telèfon Android</translation>
 <translation id="3470442499439619530">Suprimeix aquest usuari</translation>
 <translation id="3473479545200714844">Lupa</translation>
@@ -1657,6 +1667,7 @@
 <translation id="3496213124478423963">Redueix</translation>
 <translation id="3497560059572256875">Comparteix el doodle</translation>
 <translation id="3505030558724226696">Revoca l'accés als dispositius</translation>
+<translation id="3505635633742443645">El port HDMI de la base no es pot fer servir si s'utilitza el port USB tipus C per a la sortida de vídeo. Fes servir un altre port per a una de les pantalles.</translation>
 <translation id="3507421388498836150">Permisos actuals de l'extensió <ph name="EXTENSION_NAME" /></translation>
 <translation id="3507888235492474624">Torna a cercar dispositius Bluetooth</translation>
 <translation id="3508920295779105875">Trieu una altra carpeta...</translation>
@@ -1709,6 +1720,7 @@
 <translation id="3576324189521867626">S'ha instal·lat correctament</translation>
 <translation id="3578594933904494462">El contingut d'aquesta pestanya es comparteix.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; vol compartir una impressora &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; amb un dels vostres grups: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Si accepteu, tots els membres del grup la podran fer servir.</translation>
+<translation id="357889014807611375">Wi‑Fi d'ús mesurat</translation>
 <translation id="3584169441612580296">Accedeix a fotos, a música i a altres fitxers multimèdia de l'ordinador i modifica'ls</translation>
 <translation id="3587482841069643663">Tots</translation>
 <translation id="358796204584394954">Escriviu aquest codi a "<ph name="DEVICE_NAME" />" per emparellar-lo:</translation>
@@ -1719,6 +1731,7 @@
 <translation id="359283478042092570">Entra</translation>
 <translation id="3593965109698325041">Restriccions del nom de certificat</translation>
 <translation id="3596235046596950091">Activa els serveis en núvol</translation>
+<translation id="3599221874935822507">Elevat</translation>
 <translation id="3599863153486145794">Esborra l'historial de tots els dispositius en què tinguis iniciada la sessió. A <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> trobaràs altres maneres d'explorar l'historial de navegació del Compte de Google.</translation>
 <translation id="3600051066689725006">Informació sobre la sol·licitud web</translation>
 <translation id="3600792891314830896">Silencia els llocs web que reprodueixen so</translation>
@@ -1733,6 +1746,7 @@
 <translation id="3612673635130633812">Baixat per &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Mostra <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Obre en una pestanya nova</translation>
+<translation id="3615073365085224194">Toca el sensor d'empremtes digitals amb el dit</translation>
 <translation id="3616113530831147358">Àudio</translation>
 <translation id="3616741288025931835">&amp;Elimina les dades de navegació...</translation>
 <translation id="3617891479562106823">Els fons de pantalla no estan disponibles. Torna-ho a provar més tard.</translation>
@@ -1815,7 +1829,6 @@
 <translation id="3719826155360621982">Pàgina d'inici</translation>
 <translation id="3720996970802414353">Canvia de totes maneres</translation>
 <translation id="3722108462506185496">S'ha produït un error en iniciar el servei de màquina virtual. Torna-ho a provar.</translation>
-<translation id="3723158278575423087">Us donem la benvinguda a l'experiència de Cast a Chromium</translation>
 <translation id="3725367690636977613">pàgines</translation>
 <translation id="3726137731714254362">Si se suprimeixen carpetes des d'aquí, es deixen de compartir, però no se'n suprimeixen els fitxers.</translation>
 <translation id="3727148787322499904">Els canvis en aquesta opció de configuració afectaran totes les xarxes compartides</translation>
@@ -1850,7 +1863,6 @@
 <translation id="3764314093345384080">Informació detallada de la compilació</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Es comunica amb un dispositiu USB}other{Es comunica amb # dispositius USB}}</translation>
 <translation id="3765246971671567135">No s'ha pogut llegir la política del mode de demostració sense connexió.</translation>
-<translation id="3766223500670287046">Pantalla remota</translation>
 <translation id="3768037234834996183">S'estan sincronitzant les preferències...</translation>
 <translation id="377050016711188788">Gelat</translation>
 <translation id="3771294271822695279">Fitxers de vídeo</translation>
@@ -1923,7 +1935,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Aixeca el dit i toca de nou</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: la sincronització s'ha posat en pausa</translation>
-<translation id="3862134173397075045">Et donem la benvinguda a l'experiència de Cast a Chrome</translation>
 <translation id="3862693525629180217">Verifica la teva identitat amb un sensor integrat</translation>
 <translation id="3862788408946266506">L'aplicació amb l'atribut del fitxer de manifest "kiosk_only" s'ha d'instal·lar en mode quiosc a Chrome OS</translation>
 <translation id="3865414814144988605">Resolució</translation>
@@ -1972,6 +1983,7 @@
 <translation id="3926002189479431949">El telèfon amb Smart Lock ha canviat</translation>
 <translation id="3927932062596804919">Denega</translation>
 <translation id="3930737994424905957">S'estan cercant dispositius</translation>
+<translation id="3930968231047618417">Color de fons</translation>
 <translation id="3933283459331715412">Restaura la contrasenya suprimida de: <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Obre l'àudio en una pestanya nova</translation>
 <translation id="3936925983113350642">La contrasenya que triïs es demanarà per restaurar aquest certificat més endavant. Desa-la en un lloc segur.</translation>
@@ -1990,6 +2002,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importat d'IE</translation>
 <translation id="3950820424414687140">Inicia la sessió</translation>
+<translation id="3950828138786918475">Aquesta pestanya pot llegir una carpeta del dispositiu.</translation>
 <translation id="3954354850384043518">En curs</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> hertzs)</translation>
 <translation id="3954953195017194676">No s'ha capturat cap registre d'esdeveniments de WebRTC recentment.</translation>
@@ -2008,6 +2021,7 @@
 <translation id="397105322502079400">S’està calculant...</translation>
 <translation id="3975565978598857337">No s'ha pogut contactar amb el servidor del domini</translation>
 <translation id="397703832102027365">S'està finalitzant...</translation>
+<translation id="3977886311744775419">Les actualitzacions automàtiques no es baixen en aquest tipus de xarxa, però pots comprovar manualment si hi ha actualitzacions.</translation>
 <translation id="3979395879372752341">S'ha afegit una extensió nova (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Activa <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Heu introduït un tipus de desament no vàlid.</translation>
@@ -2147,6 +2161,7 @@
 <translation id="4194570336751258953">Activa la funció de tocar per fer clic</translation>
 <translation id="4195643157523330669">Obre en una pestanya nova</translation>
 <translation id="4195814663415092787">Continua des d'on ho vaig deixar</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> pot desar els canvis que facis directament als fitxers següents. Aquest lloc web només pot desar canvis mentre aquesta pestanya estigui oberta.</translation>
 <translation id="4198146608511578238">Mantén premuda la icona del menú d'aplicacions per parlar amb l'Assistent de Google.</translation>
 <translation id="4200689466366162458">Paraules personalitzades</translation>
 <translation id="4200983522494130825">Pes&amp;tanya nova</translation>
@@ -2194,7 +2209,6 @@
 <translation id="4267953847983678297">Connecta automàticament a la xarxa mòbil</translation>
 <translation id="4268025649754414643">Encriptació de claus</translation>
 <translation id="4270393598798225102">Versió <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Cap coincidència</translation>
 <translation id="4275663329226226506">Multimèdia</translation>
 <translation id="4275830172053184480">Reinici del dispositiu</translation>
 <translation id="4278101229438943600">L'Assistent està a punt</translation>
@@ -2343,6 +2357,7 @@
 <translation id="4533985347672295764">Temps de la CPU</translation>
 <translation id="4534661889221639075">Torna-ho a provar.</translation>
 <translation id="4535127706710932914">Perfil predeterminat</translation>
+<translation id="4535767533210902251">El sensor d'empremtes digitals és la tecla de la part superior dreta del teclat. Toca-la lleugerament amb un dit.</translation>
 <translation id="4538684596480161368">Bloqueja sempre els connectors fora de la zona de proves a <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Instal·lat per una política empresarial</translation>
 <translation id="4542520061254486227">Llegir les dades dels llocs <ph name="WEBSITE_1" /> i <ph name="WEBSITE_2" /></translation>
@@ -2376,6 +2391,7 @@
 <translation id="457386861538956877">Més...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Vincula un dispositiu Bluetooth</translation>
+<translation id="4578012756826807359">Les dades d'inici de sessió s'han suprimit correctament.</translation>
 <translation id="4579581181964204535">No es pot emetre <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">S'ha produït un error en restaurar Linux</translation>
 <translation id="4582563038311694664">Restableix tota la configuració</translation>
@@ -2493,7 +2509,6 @@
 <translation id="4763830802490665879">Les galetes de diversos llocs s'esborraran en sortir-ne.</translation>
 <translation id="4765582662863429759">Permet que Missatges Android retransmeti els missatges de text del telèfon al teu Chromebook</translation>
 <translation id="4768332406694066911">Tens certificats d'aquestes organitzacions que t'identifiquen</translation>
-<translation id="4772404146526168240">Les dues pantalles</translation>
 <translation id="4776146737004271126">Obre la configuració d'Android</translation>
 <translation id="4776917500594043016">Contrasenya per a <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2601,7 +2616,6 @@
 <translation id="4927846293686536410">Inicia la sessió per tenir les adreces d'interès, l'historial, les contrasenyes i altres opcions de configuració en tots els dispositius. A més, iniciaràs la sessió automàticament als serveis de Google.</translation>
 <translation id="4929386379796360314">Destinacions d'impressió</translation>
 <translation id="4930714375720679147">Activa</translation>
-<translation id="4931132176527519925">Projecta sempre els vídeos</translation>
 <translation id="4932733599132424254">Data</translation>
 <translation id="4933484234309072027">incrustada a <ph name="URL" /></translation>
 <translation id="493571969993549666">Afegeix un usuari supervisat</translation>
@@ -2641,6 +2655,7 @@
 <translation id="4992066212339426712">Deixa de silenciar</translation>
 <translation id="4992458225095111526">Confirmació de Powerwash</translation>
 <translation id="4992473555164495036">L'administrador ha limitat els mètodes d'entrada disponibles.</translation>
+<translation id="4992866843815555470">La base s'ha de reparar. Si el ventilador no funciona, la base s'apagarà.</translation>
 <translation id="4992926179187649719">Activa "Ok Google"</translation>
 <translation id="4994474651455208930">Permet que els llocs sol·licitin convertir-se en gestors predeterminats de protocols</translation>
 <translation id="4994754230098574403">S'està configurant</translation>
@@ -2780,7 +2795,6 @@
 <translation id="5233231016133573565">ID de procés</translation>
 <translation id="5233638681132016545">Pestanya nova</translation>
 <translation id="5233736638227740678">&amp;Enganxa</translation>
-<translation id="5234764350956374838">Omet</translation>
 <translation id="5235050375939235066">Vols desinstal·lar l'aplicació?</translation>
 <translation id="5235750401727657667">Substituir la pàgina que veus en obrir una pestanya nova</translation>
 <translation id="5238278114306905396">L'aplicació "<ph name="EXTENSION_NAME" />" s'ha eliminat automàticament.</translation>
@@ -2845,6 +2859,7 @@
 <translation id="5319359161174645648">Google recomana Chrome</translation>
 <translation id="532247166573571973">És possible que no es pugui accedir al servidor. Torneu-ho a provar més tard.</translation>
 <translation id="5324780743567488672">Estableix la zona horària automàticament en funció de la meva ubicació</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" />: pot desar contingut en fitxers originals</translation>
 <translation id="5327248766486351172">Nom</translation>
 <translation id="5327570636534774768">Aquest dispositiu està marcat perquè el gestioni un altre domini. Dona'l de baixa d'aquest domini abans de configurar el mode de demostració.</translation>
 <translation id="532943162177641444">Toca la notificació que veuràs al telèfon <ph name="PHONE_NAME" /> per configurar el punt d'accés mòbil que pot utilitzar aquest dispositiu.</translation>
@@ -2987,7 +3002,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> vol</translation>
 <translation id="5534304873398226603">Descarta la foto o el vídeo</translation>
 <translation id="5535941515421698170">Suprimeix també les teves dades d'aquest dispositiu</translation>
-<translation id="5537725057119320332">Emet</translation>
 <translation id="5539221284352502426">El servidor ha rebutjat la contrasenya que has introduït. Els motius poden ser els següents: la contrasenya és massa curta, la contrasenya ha d'incloure números o símbols, o la contrasenya no es pot haver utilitzat anteriorment.</translation>
 <translation id="5541687815721799001">Utilitza l'aplicació</translation>
 <translation id="5542132724887566711">Perfil</translation>
@@ -3297,7 +3311,6 @@
 <translation id="5997337190805127100">Més informació sobre l'accés als llocs web</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultats per a "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Veus preferides</translation>
-<translation id="6005695835120147974">Encaminador multimèdia</translation>
 <translation id="6006484371116297560">Clàssic</translation>
 <translation id="6007240208646052708">La cerca per veu en el teu idioma no està disponible.</translation>
 <translation id="6009781704028455063">Sensor integrat</translation>
@@ -3497,7 +3510,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Impressora nova a la xarxa}other{Impressores noves a la xarxa}}</translation>
 <translation id="6286708577777130801">Detalls de la contrasenya desada</translation>
 <translation id="6289452883081499048">Serveis de Google personalitzats, com ara Play</translation>
-<translation id="6290556621549272952">Podeu fer servir aquesta funció per mostrar contingut de Chromium al televisor i en altres dispositius.</translation>
 <translation id="6291949900244949761">Pregunta'm quan un lloc web vulgui accedir a dispositius USB (opció recomanada)</translation>
 <translation id="6291953229176937411">&amp;Mostra a Finder</translation>
 <translation id="6295158916970320988">Tots els llocs web</translation>
@@ -3561,6 +3573,7 @@
 <translation id="6395423953133416962">Envia les <ph name="BEGIN_LINK2" />mètriques<ph name="END_LINK2" /> i la <ph name="BEGIN_LINK1" />informació del sistema<ph name="END_LINK1" /></translation>
 <translation id="6396988158856674517">Impedeix que els llocs web utilitzin els sensors de moviment</translation>
 <translation id="6397094776139756010">Opcions de sincronització i personalització</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> podrà desar els canvis que facis directament als fitxers de la carpeta següent. Aquest lloc web només pot desar canvis mentre aquesta pestanya estigui oberta.</translation>
 <translation id="6398715114293939307">Suprimeix Google Play Store</translation>
 <translation id="6398765197997659313">Surt del mode de pantalla completa</translation>
 <translation id="6399774419735315745">Espia</translation>
@@ -3605,11 +3618,13 @@
 <translation id="6455264371803474013">En llocs web específics</translation>
 <translation id="6455894534188563617">Carpeta &amp;nova</translation>
 <translation id="6456394469623773452">Bona</translation>
+<translation id="6456955391422100996">L'anunci s'ha suprimit.</translation>
 <translation id="645705751491738698">Continua bloquejant JavaScript</translation>
 <translation id="6458701200018867744">Ha fallat la pujada (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Utilitza la selecció per a la cerca</translation>
 <translation id="6459799433792303855">La finestra activa s'ha mogut a una altra pantalla.</translation>
 <translation id="6460601847208524483">Cerca el següent</translation>
+<translation id="6461170143930046705">S'estan cercant xarxes...</translation>
 <translation id="6463795194797719782">E&amp;dita</translation>
 <translation id="6466988389784393586">&amp;Obre totes les adreces d'interès</translation>
 <translation id="6467304607960172345">Optimitza els vídeos en pantalla completa</translation>
@@ -3648,6 +3663,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Tens connexió a una xarxa <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Comparteix</translation>
 <translation id="6528513914570774834">Permet que els altres usuaris d'aquest dispositiu facin servir aquesta xarxa</translation>
 <translation id="652948702951888897">Historial de Chrome</translation>
@@ -3744,7 +3760,6 @@
 <translation id="6680650203439190394">Velocitat</translation>
 <translation id="6681668084120808868">Fes una foto</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" es desinstal·larà.</translation>
-<translation id="6685083257944113180">Atura, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Obre Google Play</translation>
 <translation id="6686490380836145850">Tanca les pestanyes de la dreta</translation>
 <translation id="6686817083349815241">Desa la contrasenya</translation>
@@ -3852,6 +3867,7 @@
 <translation id="6845038076637626672">Obre-la maximitzada</translation>
 <translation id="6845325883481699275">Ajuda a millorar la seguretat de Chrome</translation>
 <translation id="6848388270925200958">En aquest moment tens targetes que només es poden fer servir en aquest dispositiu</translation>
+<translation id="6850286078059909152">Color del text</translation>
 <translation id="6851497530878285708">Aplicació activada</translation>
 <translation id="6853388645642883916">S'ha posat l'actualitzador en repòs.</translation>
 <translation id="68541483639528434">Tanca les altres pestanyes</translation>
@@ -3901,7 +3917,6 @@
 <translation id="6923132443355966645">Desplaça't / fes clic</translation>
 <translation id="6923633482430812883">S'ha produït un error en activar l'ús compartit. Comprova que el servidor de fitxers a què t'estàs connectant admeti el protocol SMB 2 o versions posteriors.</translation>
 <translation id="6930036377490597025">Clau externa de seguretat o sensor integrat</translation>
-<translation id="6930242544192836755">Durada</translation>
 <translation id="693807610556624488">L'operació d'escriptura supera la longitud màxima de l'atribut a <ph name="DEVICE_NAME" />.</translation>
 <translation id="6941937518557314510">Inicieu la sessió a <ph name="TOKEN_NAME" /> per autenticar-vos a <ph name="HOST_NAME" /> amb el vostre certificat.</translation>
 <translation id="6943176775188458830">Cancel·la la impressió</translation>
@@ -3915,6 +3930,7 @@
 <translation id="6951153907720526401">Gestors de pagament</translation>
 <translation id="6951663584153258142">La teva organització demana que actualitzis aquest dispositiu</translation>
 <translation id="6953878494808481632">Informació relacionada</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fitxer: <ph name="FILES" />}other{Fitxers: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Inspecciona l'element emergent</translation>
 <translation id="6957044667612803194">Aquesta clau de seguretat no admet codis PIN</translation>
 <translation id="6957231940976260713">Nom del servei</translation>
@@ -4127,7 +4143,6 @@
 <translation id="7254554697254365959">Aquesta pàgina no s'ha pogut traduir.</translation>
 <translation id="7254951428499890870">Confirmes que vols iniciar "<ph name="APP_NAME" />" en mode de diagnòstic?</translation>
 <translation id="7255002516883565667">En aquest moment tens una targeta que només es pot utilitzar en aquest dispositiu</translation>
-<translation id="7255220508626648026">S'està emetent: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Torna a tocar la clau de seguretat per confirmar el restabliment. Se suprimirà tota la informació desada a la clau de seguretat, inclòs el PIN.</translation>
 <translation id="7255935316994522020">Aplica</translation>
 <translation id="7256069762010468647">El lloc web està utilitzant la càmera</translation>
@@ -4261,6 +4276,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Obre la ubicació...</translation>
 <translation id="7458168200501453431">Fa servir el mateix corrector ortogràfic que s'utilitza a la Cerca de Google. El text que introdueixes al navegador s'envia a Google.</translation>
+<translation id="7460045493116006516">Tema instal·lat actualment</translation>
 <translation id="7461924472993315131">Fixa</translation>
 <translation id="746216226901520237">La propera vegada, <ph name="DEVICE_TYPE" /> es desbloquejarà amb el telèfon. Pots desactivar Smart Lock a Configuració.</translation>
 <translation id="7463006580194749499">Afegeix una persona</translation>
@@ -4320,6 +4336,7 @@
 <translation id="7554791636758816595">Pestanya nova</translation>
 <translation id="7556033326131260574">Smart Lock no ha pogut verificar el vostre compte. Escriviu la contrasenya per accedir-hi.</translation>
 <translation id="7556242789364317684"><ph name="SHORT_PRODUCT_NAME" /> no pot recuperar la vostra configuració. Per solucionar l'error, <ph name="SHORT_PRODUCT_NAME" /> ha de restablir el dispositiu amb Powerwash.</translation>
+<translation id="7559444627302317199">Comprova la connexió a la xarxa i torna-ho a provar.</translation>
 <translation id="7559719679815339381">Espereu... L'aplicació Quiosc s'està actualitzant. No extraieu la memòria USB.</translation>
 <translation id="7561196759112975576">Sempre</translation>
 <translation id="7563991800558061108">Per solucionar aquest error, heu d'iniciar la sessió al vostre compte de Google des de la pantalla d'inici de la sessió. A continuació, podeu tancar la sessió del vostre compte de Google i provar de tornar a crear un usuari supervisat.</translation>
@@ -4560,7 +4577,6 @@
 <translation id="7887334752153342268">Duplica</translation>
 <translation id="7887864092952184874">Ratolí Bluetooth vinculat</translation>
 <translation id="7889565820482017512">Mida de visualització</translation>
-<translation id="7889966925761734854">Cerca</translation>
 <translation id="7893008570150657497">Accedir a fotos, a música i a d'altres elements multimèdia de l'equip</translation>
 <translation id="7893153962594818789">El Bluetooth està desactivat en aquest <ph name="DEVICE_TYPE" />. Introdueix la contrasenya i activa el Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Predeterminada)</translation>
@@ -4568,7 +4584,6 @@
 <translation id="7898627924844766532">Conserva a la barra d'eines</translation>
 <translation id="7898725031477653577">Tradueix sempre</translation>
 <translation id="790040513076446191">Manipular la configuració relacionada amb la privadesa</translation>
-<translation id="7902874111237641165">Moviment fluid [beta]</translation>
 <translation id="7903345046358933331">La pàgina no respon. Podeu esperar que respongui o tancar-la.</translation>
 <translation id="7903742244674067440">Tens certificats arxivats que identifiquen aquestes entitats emissores de certificats</translation>
 <translation id="7903925330883316394">Utilitat: <ph name="UTILITY_TYPE" /></translation>
@@ -4680,6 +4695,7 @@
 <translation id="8037117027592400564">Llegeix tot el text en veu alta mitjançant una síntesi de veu</translation>
 <translation id="8037357227543935929">Pregunta (opció predeterminada)</translation>
 <translation id="803771048473350947">Fitxer</translation>
+<translation id="8042142357103597104">Opacitat del text</translation>
 <translation id="8044899503464538266">Lent</translation>
 <translation id="8045253504249021590">La sincronització s'ha aturat a través del Tauler de control de Google.</translation>
 <translation id="8045923671629973368">Introdueix l'identificador de l'aplicació o l'URL de Web Store</translation>
@@ -4716,7 +4732,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Pots desactivar aquest servei a Configuració.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Els PIN no coincideixen</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> està fent servir la connexió del servidor intermediari d'una extensió</translation>
-<translation id="8099495042588009598">Més permisos</translation>
 <translation id="8101987792947961127">Es requereix Powerwash la propera vegada que es reiniciï</translation>
 <translation id="8102159139658438129">Ves a <ph name="LINK_BEGIN" />Configuració<ph name="LINK_END" /> per veure les opcions per al telèfon connectat</translation>
 <translation id="8104696615244072556">Feu un Powerwash al dispositiu <ph name="IDS_SHORT_PRODUCT_NAME" /> i torneu a la versió anterior.</translation>
@@ -4767,8 +4782,10 @@
     No crec que calgui bloquejar aquest lloc web.</translation>
 <translation id="8184288427634747179">Canvia a <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Més informació</translation>
+<translation id="8184472985242519288">Uniforme</translation>
 <translation id="8185331656081929126">Mostra notificacions quan es detectin impressores noves a la xarxa</translation>
 <translation id="8186609076106987817">El servidor no ha pogut trobar el fitxer.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> pot llegir tots els fitxers de la carpeta següent. Aquest lloc web només pot veure els canvis que es facin a la carpeta mentre aquesta pestanya estigui oberta.</translation>
 <translation id="8188389033983459049">Comprova la configuració del dispositiu i activa'l per continuar</translation>
 <translation id="8190193592390505034">S'està connectant amb <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Gestionar les aplicacions, les extensions i els temes</translation>
@@ -4872,7 +4889,6 @@
 <translation id="833986336429795709">Tria una aplicació per obrir aquest enllaç</translation>
 <translation id="8342861492835240085">Selecciona una col·lecció</translation>
 <translation id="834290227245955730">El PIN no és vàlid. Intents restants: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Per obtenir la millor qualitat de vídeo o d'animació, utilitza una amplada de banda d'alta velocitat. És possible que les persones que tinguin connexions lentes no puguin veure el teu contingut.</translation>
 <translation id="8351419472474436977">Aquesta extensió ha passat a controlar la configuració del servidor intermediari. Això vol dir que pot modificar, desfer o espiar qualsevol acció que feu en línia. Si no esteu segur del motiu d'aquest canvi, és possible que no el vulgueu aplicar.</translation>
 <translation id="8351630282875799764">La bateria no s'està carregant</translation>
 <translation id="835238322900896202">S'ha produït un error durant la desinstal·lació. Executa la desinstal·lació a través del terminal.</translation>
@@ -4905,9 +4921,11 @@
 <translation id="839736845446313156">Registra</translation>
 <translation id="8398877366907290961">Continua igualment</translation>
 <translation id="8400146488506985033">Gestiona persones</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> pot desar els canvis que facis directament als fitxers de la carpeta següent. Aquest lloc web només pot desar canvis mentre aquesta pestanya estigui oberta.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Pregunta-m'ho abans (opció recomanada)</translation>
 <translation id="8418445294933751433">&amp;Mostra com a pestanya</translation>
+<translation id="8418905021510211421">Aquesta pàgina pot llegir una carpeta del dispositiu.</translation>
 <translation id="8419098111404128271">Resultats de la cerca per a "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Et donem la benvinguda al teu <ph name="DEVICE_TYPE" /></translation>
 <translation id="8425213833346101688">Canvia</translation>
@@ -4927,6 +4945,7 @@
 <translation id="8438566539970814960">Millora les cerques i la navegació</translation>
 <translation id="8439506636278576865">Proposa'm traduir pàgines en aquest idioma</translation>
 <translation id="8440630305826533614">Aplicacions per a Linux</translation>
+<translation id="844241640324986723">No s'han pogut suprimir les dades d'inici de sessió.</translation>
 <translation id="8443338615972234259">Crea un compte per al teu usuari supervisat ara.</translation>
 <translation id="8446884382197647889">Més informació</translation>
 <translation id="8447409163267621480">Inclou la tecla Ctrl o Alt</translation>
@@ -4942,8 +4961,6 @@
 <translation id="8461914792118322307">Servidor intermediari</translation>
 <translation id="8463215747450521436">Pot ser que l'administrador hagi suprimit o desactivat aquest usuari supervisat. Poseu-vos en contacte amb l'administrador si voleu continuar amb la sessió iniciada amb aquest usuari.</translation>
 <translation id="846374874681391779">Barra de baixades</translation>
-<translation id="8463807869745732775">"&gt;
-    Dades d'inici de sessió de la clau de seguretat emmagatzemades</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> s'ha desactivat.</translation>
 <translation id="8464132254133862871">Aquest compte d'usuari no és apte per al servei.</translation>
 <translation id="8465252176946159372">No és vàlid</translation>
@@ -4968,7 +4985,7 @@
 <translation id="8497219075884839166">Utilitats per a Windows</translation>
 <translation id="8498214519255567734">Facilita mirar la pantalla o llegir-hi amb poca llum</translation>
 <translation id="8498395510292172881">Continua llegint una pàgina web a Chrome</translation>
-<translation id="8500234928660943538">PUK incorrecte. Intents restants: <ph name="RETRIES" />.</translation>
+<translation id="8500234928660943538">El PUK no és correcte. Intents restants: <ph name="RETRIES" />.</translation>
 <translation id="8502536196501630039">Per poder utilitzar aplicacions de Google Play, primer has de restaurar les teves aplicacions. És possible que algunes dades s'hagin perdut.</translation>
 <translation id="8503813439785031346">Nom d'usuari</translation>
 <translation id="850875081535031620">No s'ha trobat programari maliciós</translation>
@@ -5009,6 +5026,7 @@
 <translation id="8569002732135253578">S'està imprimint <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">No s'ha trobat cap destinació</translation>
 <translation id="8571213806525832805">4 darreres setmanes</translation>
+<translation id="8573403125070227391">Com que aquest anunci fa servir massa recursos per al dispositiu, Chrome l'ha suprimit.</translation>
 <translation id="8574990355410201600">Permet sempre el so a <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Mantén premuda la tecla <ph name="KEY_EQUIVALENT" /> per sortir</translation>
 <translation id="8578639784464423491">No pot tenir més de 99 lletres</translation>
@@ -5032,13 +5050,13 @@
 <translation id="8609465669617005112">Desplaça cap amunt</translation>
 <translation id="8610103157987623234">El format no és correcte. Torna-ho a provar.</translation>
 <translation id="8615618338313291042">Aplicació d'incògnit: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Ombra</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Estat d'itinerància</translation>
 <translation id="8620765578342452535">Configurar les connexions de xarxa</translation>
 <translation id="8621866727807194849">Hi ha programari nociu a l'ordinador. Chrome l'està suprimint, restaurant la configuració i desactivant les extensions. D'aquesta manera, el navegador tornarà a funcionar amb normalitat.</translation>
 <translation id="8621979332865976405">Comparteix tota la pantalla</translation>
 <translation id="862542460444371744">&amp;Extensions</translation>
-<translation id="8627151598708688654">Seleccioneu una font</translation>
 <translation id="862727964348362408">Suspesa</translation>
 <translation id="862750493060684461">Memòria cau CSS</translation>
 <translation id="8627795981664801467">Només les connexions segures</translation>
@@ -5092,6 +5110,7 @@
 <translation id="8688579245973331962">No veieu el vostre nom?</translation>
 <translation id="8688591111840995413">Contrasenya incorrecta</translation>
 <translation id="8688672835843460752">Disponible</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Obre la &amp;ubicació...</translation>
 <translation id="869884720829132584">Menú d'aplicacions</translation>
 <translation id="869891660844655955">Data de caducitat</translation>
@@ -5255,6 +5274,7 @@
 <translation id="891365694296252935">Envia dades d'ús i de diagnòstic. En aquests moments aquest dispositiu envia automàticament a Google dades de diagnòstic, del dispositiu i d''ús d'aplicacions. Aquestes dades no es faran servir per identificar el teu fill i ajudaran a millorar l'estabilitat del sistema i de les aplicacions, entre altres característiques. Una part de les dades agregades també serà útil per a les aplicacions i els col·laboradors de Google, com ara els desenvolupadors d'Android. El propietari ha aplicat aquesta opció de configuració. Si l'opció Activitat al web i en aplicacions addicional està activada per al teu fill, és possible que aquestes dades es desin al seu Compte de Google. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">S'estan carregant els suggeriments</translation>
 <translation id="8916476537757519021">Submarc d'incògnit: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" />: pot llegir una carpeta del dispositiu</translation>
 <translation id="8919275547519617350">Per tenir totes les teves contrasenyes en tots els dispositius, inicia la sessió i activa la sincronització.</translation>
 <translation id="8921366488406707015">S'està verificant la clau de seguretat...</translation>
 <translation id="8922013791253848639">Permet sempre els anuncis en aquest lloc web</translation>
@@ -5284,7 +5304,6 @@
 <translation id="8965037249707889821">Introduïu la contrasenya antiga</translation>
 <translation id="8966870118594285808">Torna a obrir una pestanya si l'has tancat per error</translation>
 <translation id="8967866634928501045">Prem Alt+Maj+A perquè es mostri</translation>
-<translation id="8970203673128054105">Mostra la llista de modes d'emissió</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Consulteu amb l'administrador de xarxa per assegurar-vos que el tallafoc no estigui bloquejant les baixades dels servidors de Google.</translation>
 <translation id="8973557916016709913">Suprimeix el nivell de zoom</translation>
@@ -5433,6 +5452,7 @@
 <translation id="9214520840402538427">La inicialització dels atributs en temps d'instal·lació ha esgotat el temps d'espera. Contacteu amb el representant d'assistència.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">S'ha afegit "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> podrà desar els canvis directament al fitxer següent. Aquest lloc web només pot desar canvis mentre aquesta pestanya estigui oberta.</translation>
 <translation id="9218430445555521422">Estableix com a predeterminat</translation>
 <translation id="9219103736887031265">Imatges</translation>
 <translation id="9220525904950070496">Suprimir el compte</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 18484f1..5670d82 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Při spouštění virtuálního počítače došlo k chybě. Zkuste to znovu.</translation>
 <translation id="1089439967362294234">Změnit heslo</translation>
 <translation id="1090126737595388931">Na pozadí nejsou spuštěny žádné aplikace</translation>
+<translation id="1090290614672149983">Uložit změny do původního souboru?</translation>
 <translation id="1090918500949388876">Když je zapnutá obrazovka, můžete Asistenta kdykoliv aktivovat vyslovením fráze „Ok Google“</translation>
 <translation id="1091767800771861448">Akci přeskočíte stisknutím klávesy Esc (pouze neoficiální sestavení).</translation>
 <translation id="1093457606523402488">Viditelné sítě:</translation>
 <translation id="1094607894174825014">Na zařízení <ph name="DEVICE_NAME" /> byla požadována operace čtení nebo zápisu s neplatným odstupem.</translation>
 <translation id="1097658378307015415">Chcete-li aktivovat síť <ph name="NETWORK_ID" />, vstupte prosím před přihlášením jako host</translation>
+<translation id="110029732810301672">Tato karta má povoleno ukládání do původních souborů.</translation>
 <translation id="1103523840287552314">Vždy překládat jazyk <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Zastavit</translation>
 <translation id="1110155001042129815">Počkat</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Sluneční brýle</translation>
 <translation id="1151917987301063366">Vždy povolit webu <ph name="HOST" /> přístup k senzorům</translation>
 <translation id="1153356358378277386">Spárovaná zařízení</translation>
-<translation id="1156488781945104845">Aktuální čas</translation>
 <translation id="1161575384898972166">Chcete-li exportovat certifikát klienta, přihlaste se prosím do zařízení <ph name="TOKEN_NAME" />.</translation>
 <translation id="1163931534039071049">Zobrazit zdrojový kód rámu</translation>
 <translation id="1164674268730883318">Vypnout v zařízení <ph name="DEVICE_TYPE" /> funkci Smart Lock?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Nastavení úložiště přehrávače Adobe Flash Player</translation>
 <translation id="1274997165432133392">Soubory cookie a jiná data webů</translation>
 <translation id="127668050356036882">Zavřete všechna okna</translation>
-<translation id="1277908057200820621">Zobrazit seznam zařízení</translation>
 <translation id="1280820357415527819">Vyhledávání mobilních sítí</translation>
 <translation id="1285320974508926690">Tento web nikdy nepřekládat</translation>
 <translation id="1285484354230578868">Ukládat údaje v účtu na Disku Google</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Domácí síť, bez roamingu</translation>
 <translation id="1316136264406804862">Vyhledávání...</translation>
 <translation id="1316495628809031177">Synchronizace je pozastavena</translation>
+<translation id="1317637799698924700">Dokovací stanice bude fungovat v režimu kompatibilním s rozhraním USB Type-C.</translation>
 <translation id="1322046419516468189">K zobrazení a správě uložených hesel můžete použít svůj <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Chcete-li získat přístup ke kartám ze svých ostatních zařízení, přihlaste se do Chromu.</translation>
 <translation id="1327074568633507428">Tiskárna ve službě Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Váš <ph name="BEGIN_LINK" />prohlížeč je spravován<ph name="END_LINK" /> doménou <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Spouštějte ve svém zařízení <ph name="DEVICE_TYPE" /> nástroje, editory a prostředí IDE pro Linux. &lt;a target="_blank" href="<ph name="URL" />"&gt;Další informace&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Vybrat soubor</translation>
+<translation id="1370749010280229230">U displeje připojeného k doku došlo k problému</translation>
 <translation id="1371301976177520732">Záložky, historii a další údaje budete mít na všech svých zařízeních</translation>
 <translation id="1372841398847029212">Synchronizovat do vašeho účtu</translation>
 <translation id="1374844444528092021">Certifikát vyžadovaný sítí „<ph name="NETWORK_NAME" />“ není nainstalován, nebo je neplatný. Nainstalujte nový certifikát a zkuste se připojit znovu.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Webová stránka, jeden soubor</translation>
 <translation id="1451917004835509682">Přidat dozorovanou osobu</translation>
 <translation id="1454223536435069390">&amp;Pořídit snímek obrazovky</translation>
+<translation id="1458243790901188746">{0,plural, =1{Složka: <ph name="DIRECTORIES" />}few{Složky: <ph name="DIRECTORIES" />}many{Složky: <ph name="DIRECTORIES" />}other{Složky: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Vyhledávače přidané rozšířeními</translation>
 <translation id="146000042969587795">Tento rámec byl blokován, protože obsahuje určitý nezabezpečený obsah.</translation>
 <translation id="146219525117638703">Stav ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Zobrazit možnosti vstupu</translation>
 <translation id="1651008383952180276">Musíte zadat dvakrát stejnou heslovou frázi</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Přidejte tiskárnu do služby Google Cloud Print a tiskněte odkudkoli.}few{Přidejte # tiskárny do služby Google Cloud Print a tiskněte odkudkoli.}many{Přidejte # tiskárny do služby Google Cloud Print a tiskněte odkudkoli.}other{Přidejte # tiskáren do služby Google Cloud Print a tiskněte odkudkoli.}}</translation>
+<translation id="1656528038316521561">Neprůhlednost pozadí</translation>
 <translation id="1657406563541664238">Pomozte <ph name="PRODUCT_NAME" /> zlepšit tím, že budete Googlu automaticky zasílat statistiky využití a zprávy o selhání aplikace</translation>
 <translation id="1658424621194652532">Tato stránka používá váš mikrofon.</translation>
 <translation id="1660204651932907780">Povolit webům přehrávat zvuky (doporučeno)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> chce zjistit model a značku vašeho bezpečnostního klíče</translation>
 <translation id="1679068421605151609">Nástroje pro vývojáře</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Opravdu chcete skončit?</translation>
 <translation id="167983332380191032">Služba správy odeslala chybu protokolu HTTP.</translation>
 <translation id="1680849702532889074">Při instalaci vaší aplikace pro Linux došlo k chybě.</translation>
 <translation id="16815041330799488">Nepovolovat webům přístup k textu a obrázkům zkopírovaným do schránky</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identifikátor chráněného média</translation>
 <translation id="175196451752279553">Znovu ot&amp;evřít zavřenou kartu</translation>
 <translation id="1753905327828125965">Nejnavštěvovanější</translation>
+<translation id="1755601632425835748">Velikost textu</translation>
 <translation id="1756681705074952506">Metoda zadávání dat</translation>
 <translation id="1757301747492736405">Odinstalace čeká na vyřízení</translation>
 <translation id="175772926354468439">Aktivovat motiv</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">Menší</translation>
 <translation id="1919345977826869612">Reklamy</translation>
 <translation id="1919814239594435008">Pluginu byl udělen přístup mimo izolovaný prostor</translation>
+<translation id="1920390473494685033">Kontakty</translation>
 <translation id="1921050530041573580">Spárujte telefon s aplikací Zprávy</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Využívejte v prohlížeči <ph name="IDS_SHORT_PRODUCT_NAME" /> chytré funkce Google</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Anonymní karta: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Plugin <ph name="PEPPER_PLUGIN_NAME" /> v doméně <ph name="PEPPER_PLUGIN_DOMAIN" /> chce získat přístup k vašemu počítači</translation>
 <translation id="2178614541317717477">Ohrožení bezpečnosti certifikační autority</translation>
+<translation id="2179849162388791084">Získání přihlašovacích údajů z bezpečnostního klíče se nezdařilo.</translation>
 <translation id="218070003709087997">Počet kopií, které chcete vytisknout, je třeba zadat jako číslo (od 1 do 999).</translation>
 <translation id="2184515124301515068">Nechat Chrome zvolit, kdy weby mohou přehrávat zvuk (doporučeno)</translation>
 <translation id="2187895286714876935">Chyba při importu certifikátu serveru</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Všechny soubory cookie a data webu</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Byla zkopírována 1 položka}few{Byly zkopírovány # položky}many{Bylo zkopírováno # položky}other{Bylo zkopírováno # položek}}</translation>
 <translation id="2278562042389100163">Otevřít okno prohlížeče</translation>
-<translation id="2279874276457403668">Relaci lze vždy vytvořit pouze jednu.</translation>
 <translation id="2280486287150724112">Pravý okraj</translation>
 <translation id="2282146716419988068">Proces GPU</translation>
 <translation id="2282155092769082568">Adresa URL automatické konfigurace:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Poznámky na obrazovce uzamčení se automaticky ukládají do aplikace <ph name="LOCK_SCREEN_APP_NAME" />. Poslední poznámka na obrazovce uzamčení zůstane.</translation>
 <translation id="2353297238722298836">Kamera a mikrofon jsou povoleny</translation>
 <translation id="2356070529366658676">Zeptat se</translation>
-<translation id="2357949918965361754">Tuto funkci můžete použít k zobrazení obsahu z Chromu v televizi nebo v jiných zařízeních.</translation>
 <translation id="2359345697448000899">Chcete-li spravovat rozšíření, klikněte v nabídce Nástroje na příkaz Rozšíření.</translation>
 <translation id="2359808026110333948">Pokračovat</translation>
 <translation id="236117173274098341">Optimalizovat</translation>
@@ -964,6 +970,7 @@
 <translation id="2436720498717686157">Vaše organizace vyžaduje okamžitou aktualizaci tohoto zařízení</translation>
 <translation id="2439545803278355377">Zadejte nový PIN. PIN musí být dlouhý alespoň čtyři znaky a může obsahovat písmena, číslice i jiné znaky.</translation>
 <translation id="2440604414813129000">Zobrazit zdrojový kód</translation>
+<translation id="2442916515643169563">Stín textu</translation>
 <translation id="2444119669991608829">Stránka není v jazyce <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Je vyžadován kořenový adresář rozšíření.</translation>
 <translation id="2445484935443597917">Vytvořit nový profil</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">Nikoli po</translation>
 <translation id="2739191690716947896">Ladit</translation>
 <translation id="2739240477418971307">Změnit nastavení přístupnosti</translation>
+<translation id="274029851662193272">Ryté</translation>
 <translation id="2740393541869613458">kontrolovat weby, které dozorovaný uživatel navštívil, a</translation>
 <translation id="2741912629735277980">Zobrazit uživatelské rozhraní na přihlašovací obrazovce</translation>
 <translation id="274290345632688601">Obnovování aplikací a souborů systému Linux</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">Zkratka už existuje</translation>
 <translation id="2807517655263062534">Zde se zobrazují stažené soubory</translation>
 <translation id="2809586584051668049">a další (<ph name="NUMBER_ADDITIONAL_DISABLED" />)</translation>
+<translation id="2812049959647166806">Rozhraní Thunderbolt není podporováno</translation>
 <translation id="2812944337881233323">Zkuste se odhlásit a opět přihlásit.</translation>
 <translation id="2812989263793994277">Nezobrazovat žádné obrázky</translation>
 <translation id="281390819046738856">Požadavek nebylo možné podepsat.</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">Poskytovatel</translation>
 <translation id="2844169650293029770">Zařízení USB Type-C (levý přední port)</translation>
 <translation id="2845382757467349449">&amp;Vždy zobrazovat lištu záložek</translation>
-<translation id="2847759467426165163">Odesílat do</translation>
 <translation id="284805635805850872">Odstranit škodlivý software?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Vyčištění se nezdařilo</translation>
@@ -1296,6 +1304,7 @@
 Zpráva serveru: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Přidat galerii médií podle adresáře</translation>
 <translation id="2910318910161511225">Připojte se k síti a zkuste to znovu</translation>
+<translation id="2910518940971897750">Uložit do původního souboru</translation>
 <translation id="2913331724188855103">Povolit webům ukládat a číst data souborů cookie (doporučeno)</translation>
 <translation id="2915102088417824677">Zobrazit protokol aktivity</translation>
 <translation id="2915873080513663243">Automatické prohledávání</translation>
@@ -1360,12 +1369,14 @@
 <translation id="3013291976881901233">Zařízení MIDI</translation>
 <translation id="3015639418649705390">Restartovat</translation>
 <translation id="3016329696181678353">Tiskárnu <ph name="PRINTER_NAME" /> se nepodařilo nakonfigurovat automaticky. Zadejte rozšířené podrobnosti o tiskárně.</translation>
+<translation id="3016381065346027039">Protokol neobsahuje žádné záznamy</translation>
 <translation id="3016641847947582299">Komponenta byla aktualizována</translation>
 <translation id="3016780570757425217">Přístup k údajům o vaší poloze</translation>
 <translation id="3017079585324758401">Pozadí</translation>
 <translation id="3020183492814296499">Zkratky</translation>
 <translation id="3020990233660977256">Sériové číslo: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Motýl</translation>
+<translation id="3021408157810018664">Uložit změny do původních souborů?</translation>
 <translation id="3021426244864538700">Přístup k datům tohoto webu</translation>
 <translation id="3021678814754966447">Zobrazit zdrojo&amp;vý kód rámce</translation>
 <translation id="3022978424994383087">Nerozumím.</translation>
@@ -1458,6 +1469,7 @@
 <translation id="3170072451822350649">Také můžete přihlášení přeskočit a <ph name="LINK_START" />prohlížet v roli hosta<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Web používá obrazový vstup</translation>
 <translation id="3177909033752230686">Jazyk stránky:</translation>
+<translation id="3179982752812949580">Písmo textu</translation>
 <translation id="3181954750937456830">Bezpečné prohlížení (chrání vás a vaše zařízení před nebezpečnými weby)</translation>
 <translation id="3182749001423093222">Kontrola pravopisu</translation>
 <translation id="3183139917765991655">Nástroj na import profilů</translation>
@@ -1510,7 +1522,6 @@
 <translation id="3275778913554317645">Otevřít jako okno</translation>
 <translation id="3278001907972365362">Váš účet Google vyžaduje pozornost</translation>
 <translation id="3279230909244266691">Tento proces může trvat několik minut. Probíhá spouštění virtuálního počítače.</translation>
-<translation id="3279741024917655738">Videa na celou stránku zobrazovat na</translation>
 <translation id="3280237271814976245">Uložit &amp;jako...</translation>
 <translation id="3280243678470289153">Zůstat v Chromu</translation>
 <translation id="3281892622610078515">Soubory a programy, které chcete umístit do karantény:</translation>
@@ -1532,7 +1543,7 @@
 <translation id="3303855915957856445">Nebyly nalezeny žádné výsledky</translation>
 <translation id="3305389145870741612">Proces formátování může trvat několik sekund. Čekejte prosím.</translation>
 <translation id="3305661444342691068">Otevřít soubor PDF v náhledu</translation>
-<translation id="3306684685104080068">Umožněte odesílání do cloudových služeb, jako je například Google Hangouts.</translation>
+<translation id="3307871847038842490">Tato stránka má povoleno ukládání do původních souborů.</translation>
 <translation id="3308006649705061278">Organizační jednotka (OU)</translation>
 <translation id="3308116878371095290">Této stránce bylo zabráněno v nastavení souborů cookie.</translation>
 <translation id="3308134619352333507">Skrýt tlačítko</translation>
@@ -1636,7 +1647,6 @@
 <translation id="3462413494201477527">Zrušit nastavení účtu?</translation>
 <translation id="3464012987031883895">Web používá zvukový vstup</translation>
 <translation id="346431825526753">Toto je dětský účet spravovaný uživatelem <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Streamovat zvukový soubor nebo video</translation>
 <translation id="3468999815377931311">Telefon Android</translation>
 <translation id="3470442499439619530">Odebrat tohoto uživatele</translation>
 <translation id="3473479545200714844">Lupa obrazovky</translation>
@@ -1659,6 +1669,7 @@
 <translation id="3496213124478423963">Oddálit</translation>
 <translation id="3497560059572256875">Sdílet sváteční logo</translation>
 <translation id="3505030558724226696">Zrušit přístup k zařízení</translation>
+<translation id="3505635633742443645">Když se pro výstup videa používá port USB Type-C, nelze používat port HDMI doku. Pro jeden z displejů použijte jiný port.</translation>
 <translation id="3507421388498836150">Aktuální oprávnění pro aplikaci <ph name="EXTENSION_NAME" /></translation>
 <translation id="3507888235492474624">Znovu vyhledat zařízení Bluetooth</translation>
 <translation id="3508920295779105875">Zvolit jinou složku...</translation>
@@ -1711,6 +1722,7 @@
 <translation id="3576324189521867626">Úspěšně nainstalováno</translation>
 <translation id="3578594933904494462">Obsah této karty je sdílen.</translation>
 <translation id="357886715122934472">Uživatel &lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; chce sdílet tiskárnu &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; se skupinou, kterou vlastníte: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Pokud tuto akci přijmete, pomocí této tiskárny budou moci tisknout všichni členové skupiny.</translation>
+<translation id="357889014807611375">měřená Wi-Fi</translation>
 <translation id="3584169441612580296">Číst a měnit fotografie, hudbu a další média z počítače</translation>
 <translation id="3587482841069643663">Vše</translation>
 <translation id="358796204584394954">V zařízení „<ph name="DEVICE_NAME" />“ zadejte tento kód:</translation>
@@ -1721,6 +1733,7 @@
 <translation id="359283478042092570">Vstoupit</translation>
 <translation id="3593965109698325041">Omezení názvu certifikátu</translation>
 <translation id="3596235046596950091">Aktivovat cloudové služby</translation>
+<translation id="3599221874935822507">Reliéf</translation>
 <translation id="3599863153486145794">Vymaže historii ze všech zařízení, na kterých jste přihlášeni. Na stránce <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> mohou být k dispozici další druhy historie prohlížení zaznamenané ve vašem účtu Google.</translation>
 <translation id="3600051066689725006">Informace o webovém požadavku</translation>
 <translation id="3600792891314830896">Ztlumit weby, které přehrávají zvuky</translation>
@@ -1735,6 +1748,7 @@
 <translation id="3612673635130633812">Staženo pomocí rozšíření &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Zobrazit <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Otevřít v nové kartě</translation>
+<translation id="3615073365085224194">Dotkněte se prstem snímače otisků prstů</translation>
 <translation id="3616113530831147358">Zvuk</translation>
 <translation id="3616741288025931835">&amp;Smazat údaje o prohlížení...</translation>
 <translation id="3617891479562106823">Pozadí nejsou k dispozici. Zkuste to znovu později.</translation>
@@ -1816,7 +1830,6 @@
 <translation id="3719826155360621982">Domovská stránka</translation>
 <translation id="3720996970802414353">Přesto přepnout</translation>
 <translation id="3722108462506185496">Spuštění služby virtuálního počítače se nezdařilo. Zkuste to znovu.</translation>
-<translation id="3723158278575423087">Vítá vás funkce Cast v prohlížeči Chromium!</translation>
 <translation id="3725367690636977613">stránky</translation>
 <translation id="3726137731714254362">Když odsud složky odstraníte, ukončíte tím sdílení. Soubory tím však nesmažete.</translation>
 <translation id="3727148787322499904">Změna tohoto nastavení bude mít dopad na všechny sdílené sítě</translation>
@@ -1851,7 +1864,6 @@
 <translation id="3764314093345384080">Podrobné informace o sestavení</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Komunikace se zařízením USB}few{Komunikace se # zařízeními USB}many{Komunikace s # zařízení USB}other{Komunikace s # zařízeními USB}}</translation>
 <translation id="3765246971671567135">Načtení zásady pro offline ukázkový režim se nezdařilo.</translation>
-<translation id="3766223500670287046">Vzdálená obrazovka</translation>
 <translation id="3768037234834996183">Synchronizace předvoleb…</translation>
 <translation id="377050016711188788">Zmrzlina</translation>
 <translation id="3771294271822695279">Soubory videa</translation>
@@ -1924,7 +1936,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Zvedněte prst a dotkněte se znovu</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Synchronizace pozastavena</translation>
-<translation id="3862134173397075045">Vítá vás funkce Cast v prohlížeči Chrome!</translation>
 <translation id="3862693525629180217">Ověřit prostřednictvím integrovaného senzoru</translation>
 <translation id="3862788408946266506">Aplikace s atributem manifestu kiosk_only je třeba nainstalovat v režimu veřejného terminálu systému Chrome OS</translation>
 <translation id="3865414814144988605">Rozlišení</translation>
@@ -1973,6 +1984,7 @@
 <translation id="3926002189479431949">Došlo ke změně telefonu funkce Smart Lock</translation>
 <translation id="3927932062596804919">Odmítnout</translation>
 <translation id="3930737994424905957">Vyhledávání zařízení</translation>
+<translation id="3930968231047618417">Barva pozadí</translation>
 <translation id="3933283459331715412">Obnovit smazané heslo uživatele <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Otevřít zvuk na nové kartě</translation>
 <translation id="3936925983113350642">Heslo, které si vyberete, budete později potřebovat k obnovení certifikátu. Bezpečně jej uschovejte.</translation>
@@ -1991,6 +2003,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importováno z aplikace IE</translation>
 <translation id="3950820424414687140">Přihlaste se</translation>
+<translation id="3950828138786918475">Tato karta má povoleno čtení složky na vašem zařízení.</translation>
 <translation id="3954354850384043518">Probíhá</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> × <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">Nemáte žádné nedávno zaznamenané protokoly událostí WebRTC.</translation>
@@ -2009,6 +2022,7 @@
 <translation id="397105322502079400">Probíhá výpočet…</translation>
 <translation id="3975565978598857337">Kontaktování serveru pro sféru se nezdařilo</translation>
 <translation id="397703832102027365">Dokončování...</translation>
+<translation id="3977886311744775419">Automatické aktualizace se v tomto typu sítě nestahují, ale můžete aktualizace vyhledat ručně.</translation>
 <translation id="3979395879372752341">Bylo přidáno nové rozšíření (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Aktivovat <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Byl zadán neplatný typ uložení.</translation>
@@ -2148,6 +2162,7 @@
 <translation id="4194570336751258953">Aktivovat kliknutí klepnutím</translation>
 <translation id="4195643157523330669">Otevřít na nové kartě</translation>
 <translation id="4195814663415092787">Pokračovat tam, kde jste přestali</translation>
+<translation id="4197940474316761015">Web <ph name="ORIGIN" /> může ukládat změny přímo do následujících souborů. Tento web může změny ukládat, pouze když je otevřená tato karta.</translation>
 <translation id="4198146608511578238">Chcete-li hovořit s Asistentem Google, stačí podržet ikonu Spouštěče.</translation>
 <translation id="4200689466366162458">Vlastní slova</translation>
 <translation id="4200983522494130825">Nová karta</translation>
@@ -2195,7 +2210,6 @@
 <translation id="4267953847983678297">Automaticky se připojit k mobilní síti</translation>
 <translation id="4268025649754414643">Šifrování klíče</translation>
 <translation id="4270393598798225102">Verze <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Žádné shody</translation>
 <translation id="4275663329226226506">Média</translation>
 <translation id="4275830172053184480">Restartovat zařízení</translation>
 <translation id="4278101229438943600">Asistent je připraven</translation>
@@ -2344,6 +2358,7 @@
 <translation id="4533985347672295764">Doba využití procesoru</translation>
 <translation id="4534661889221639075">Zkuste to znovu.</translation>
 <translation id="4535127706710932914">Výchozí profil</translation>
+<translation id="4535767533210902251">Snímač otisků prstů je klávesa v pravém horním rohu klávesnice. Zlehka se ho dotkněte jakýmkoli prstem.</translation>
 <translation id="4538684596480161368">Vždy blokovat rozbalené pluginy u hostitele <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Nainstalováno podnikovými zásadami.</translation>
 <translation id="4542520061254486227">Čtení vašich dat na webech <ph name="WEBSITE_1" /> a <ph name="WEBSITE_2" /></translation>
@@ -2377,6 +2392,7 @@
 <translation id="457386861538956877">Další...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Párování zařízení Bluetooth</translation>
+<translation id="4578012756826807359">Vaše přihlašovací údaje byly úspěšně smazány.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> nelze odeslat.</translation>
 <translation id="4581774856936278355">Při obnovování systému Linux došlo k chybě</translation>
 <translation id="4582563038311694664">Resetovat všechna nastavení</translation>
@@ -2494,7 +2510,6 @@
 <translation id="4763830802490665879">Soubory cookie z více stránek budou smazány při ukončení návštěvy.</translation>
 <translation id="4765582662863429759">Povoluje Zprávám pro Android předávat zprávy SMS z telefonu do Chromebooku</translation>
 <translation id="4768332406694066911">Od následujících organizací máte certifikáty, které vás identifikují</translation>
-<translation id="4772404146526168240">Obě obrazovky</translation>
 <translation id="4776146737004271126">Otevřít nastavení systému Android</translation>
 <translation id="4776917500594043016">Heslo pro účet <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Obchod Play</translation>
@@ -2602,7 +2617,6 @@
 <translation id="4927846293686536410">Přihlaste se a synchronizujte záložky, historii, hesla a další nastavení do všech svých zařízení. Budete také automaticky přihlášeni do svých služeb Google.</translation>
 <translation id="4929386379796360314">Cíle tisku</translation>
 <translation id="4930714375720679147">Zapnout</translation>
-<translation id="4931132176527519925">Vždy používat zrcadlení</translation>
 <translation id="4932733599132424254">Datum</translation>
 <translation id="4933484234309072027">vloženo do <ph name="URL" /></translation>
 <translation id="493571969993549666">Přidat dozorovaného uživatele</translation>
@@ -2642,6 +2656,7 @@
 <translation id="4992066212339426712">Zapnout zvuk</translation>
 <translation id="4992458225095111526">Potvrdit obnovení pomocí funkce Powerwash</translation>
 <translation id="4992473555164495036">Administrátor omezil dostupné metody zadávání.</translation>
+<translation id="4992866843815555470">Dok vyžaduje servis. Bez funkčního větráku se dok vypne.</translation>
 <translation id="4992926179187649719">Zapnout příkaz „Ok Google“</translation>
 <translation id="4994474651455208930">Povolit dotazy stránek, zda je chcete použít jako výchozí obslužný nástroj protokolů</translation>
 <translation id="4994754230098574403">Nastavování</translation>
@@ -2780,7 +2795,6 @@
 <translation id="5233231016133573565">ID procesu</translation>
 <translation id="5233638681132016545">Nová karta</translation>
 <translation id="5233736638227740678">&amp;Vložit</translation>
-<translation id="5234764350956374838">Zavřít</translation>
 <translation id="5235050375939235066">Odinstalovat aplikaci?</translation>
 <translation id="5235750401727657667">Nahradit stránku, která se zobrazí po otevření nové karty</translation>
 <translation id="5238278114306905396">Aplikace <ph name="EXTENSION_NAME" /> byla automaticky odebrána.</translation>
@@ -2845,6 +2859,7 @@
 <translation id="5319359161174645648">Google doporučuje prohlížeč Chrome</translation>
 <translation id="532247166573571973">Server pravděpodobně není dostupný. Zkuste to znovu později.</translation>
 <translation id="5324780743567488672">Nastavit časové pásmo automaticky podle polohy</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – má povoleno ukládat původní soubory</translation>
 <translation id="5327248766486351172">Jméno</translation>
 <translation id="5327570636534774768">Toto zařízení je označeno jako spravované jinou doménou. Před nastavením ukázkového režimu mu k dané doméně zrušte přístup.</translation>
 <translation id="532943162177641444">Klepnutím na oznámení na telefonu nebo tabletu <ph name="PHONE_NAME" /> nastavte mobilní hotspot, který bude moci využít toto zařízení.</translation>
@@ -2987,7 +3002,6 @@
 <translation id="5533001281916885985">Web <ph name="SITE_NAME" /> chce</translation>
 <translation id="5534304873398226603">Zahodit fotku nebo video</translation>
 <translation id="5535941515421698170">Zároveň z tohoto zařízení odstranit vaše stávající údaje</translation>
-<translation id="5537725057119320332">Odeslat</translation>
 <translation id="5539221284352502426">Zadané heslo bylo serverem odmítnuto. Možné příčiny: Heslo je příliš krátké. Heslo musí obsahovat číslice nebo symboly. Heslo se musí lišit od předchozích hesel.</translation>
 <translation id="5541687815721799001">Použít aplikaci</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3161,7 +3175,7 @@
 <translation id="5794414402486823030">Vždy otevřít pomocí systémového prohlížeče</translation>
 <translation id="5794786537412027208">Ukončit všechny aplikace Chrome</translation>
 <translation id="5797070761912323120">Google vaši historii může používat k personalizaci Vyhledávání, reklam a dalších služeb Google</translation>
-<translation id="579915268381781820">Bezpečnostní klíč byl odstraněn.</translation>
+<translation id="579915268381781820">Bezpečnostní klíč byl odpojen.</translation>
 <translation id="5799508265798272974">Virtuální počítač systému Linux: <ph name="LINUX_VM_NAME" /></translation>
 <translation id="5800020978570554460">Cílový soubor byl od posledního stahování zkrácen nebo odstraněn.</translation>
 <translation id="5801568494490449797">Nastavení</translation>
@@ -3296,7 +3310,6 @@
 <translation id="5997337190805127100">Další informace o přístupu k webům</translation>
 <translation id="6000758707621254961">Výsledky pro dotaz <ph name="SEARCH_TEXT" /> (<ph name="RESULT_COUNT" />)</translation>
 <translation id="6002458620803359783">Preferované hlasy</translation>
-<translation id="6005695835120147974">Směrovač médií</translation>
 <translation id="6006484371116297560">Klasické</translation>
 <translation id="6007240208646052708">Hlasové vyhledávání ve vašem jazyce není k dispozici.</translation>
 <translation id="6009781704028455063">Integrovaný senzor</translation>
@@ -3496,7 +3509,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nová tiskárna v síti}few{Nové tiskárny v síti}many{Nové tiskárny v síti}other{Nové tiskárny v síti}}</translation>
 <translation id="6286708577777130801">Podrobnosti uloženého hesla</translation>
 <translation id="6289452883081499048">Přizpůsobené služby Google, jako je Google Play</translation>
-<translation id="6290556621549272952">Tuto funkci můžete použít k zobrazení obsahu z prohlížeče Chromium v televizi nebo v jiných zařízeních.</translation>
 <translation id="6291949900244949761">Zeptat se, když chce web získat přístup k zařízením USB (doporučeno)</translation>
 <translation id="6291953229176937411">Zobrazit ve &amp;službě Finder</translation>
 <translation id="6295158916970320988">Všechny weby</translation>
@@ -3560,6 +3572,7 @@
 <translation id="6395423953133416962">Odesílat <ph name="BEGIN_LINK1" />informace o systému<ph name="END_LINK1" /> a <ph name="BEGIN_LINK2" />metriky<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Blokovat webům používání senzorů pohybu</translation>
 <translation id="6397094776139756010">Možnosti synchronizace a personalizace</translation>
+<translation id="6397449385184089588">Web <ph name="ORIGIN" /> bude moci ukládat vaše změny přímo do souborů v následující složce. Tento web může změny ukládat, pouze když je otevřená tato karta.</translation>
 <translation id="6398715114293939307">Odstranit Obchod Google Play</translation>
 <translation id="6398765197997659313">Ukončit režim celé obrazovky</translation>
 <translation id="6399774419735315745">Špionka</translation>
@@ -3604,11 +3617,13 @@
 <translation id="6455264371803474013">Na konkrétních webech</translation>
 <translation id="6455894534188563617">&amp;Nová složka</translation>
 <translation id="6456394469623773452">Průměrný</translation>
+<translation id="6456955391422100996">Reklama byla odstraněna.</translation>
 <translation id="645705751491738698">Pokračovat v blokování JavaScriptu</translation>
 <translation id="6458701200018867744">Nahrávání se nezdařilo (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Pro hledání použít výběr</translation>
 <translation id="6459799433792303855">Aktivní okno bylo přesunuto na jinou obrazovku.</translation>
 <translation id="6460601847208524483">Najít další</translation>
+<translation id="6461170143930046705">Vyhledávání sítí...</translation>
 <translation id="6463795194797719782">&amp;Upravit</translation>
 <translation id="6466988389784393586">&amp;Otevřít všechny záložky</translation>
 <translation id="6467304607960172345">Optimalizovat videa na celou obrazovku</translation>
@@ -3647,6 +3662,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Jste připojení k tomuto typu sítě: <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Sdílet</translation>
 <translation id="6528513914570774834">Povolit ostatním uživatelům tohoto zařízení používat tuto síť</translation>
 <translation id="652948702951888897">Historie Chromu</translation>
@@ -3743,7 +3759,6 @@
 <translation id="6680650203439190394">Ohodnotit</translation>
 <translation id="6681668084120808868">Vyfotit</translation>
 <translation id="6681964764822470072">Aplikace <ph name="APP_NAME" /> bude odinstalována.</translation>
-<translation id="6685083257944113180">Zastavit, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Otevřít Google Play</translation>
 <translation id="6686490380836145850">Zavřít karty napravo</translation>
 <translation id="6686817083349815241">Uložte si heslo</translation>
@@ -3851,6 +3866,7 @@
 <translation id="6845038076637626672">Otevřít maximalizované</translation>
 <translation id="6845325883481699275">Pomoci zlepšovat zabezpečení Chromu</translation>
 <translation id="6848388270925200958">V současné době máte několik karet, které lze používat jen na tomto zařízení.</translation>
+<translation id="6850286078059909152">Barva textu</translation>
 <translation id="6851497530878285708">Aplikace povolena</translation>
 <translation id="6853388645642883916">Nástroj na aktualizaci je v režimu spánku</translation>
 <translation id="68541483639528434">Zavřít ostatní karty</translation>
@@ -3900,7 +3916,6 @@
 <translation id="6923132443355966645">Posouvání/kliknutí</translation>
 <translation id="6923633482430812883">Při připojování sdíleného úložiště došlo k chybě. Zkontrolujte, zda souborový server, ke kterému se připojujete, podporuje protokol SMBv2 nebo novější.</translation>
 <translation id="6930036377490597025">Externí bezpečnostní klíč nebo zabudovaný senzor</translation>
-<translation id="6930242544192836755">Délka</translation>
 <translation id="693807610556624488">Operace zápisu překračuje maximální délku atributu povolenou pro zařízení <ph name="DEVICE_NAME" />.</translation>
 <translation id="6941937518557314510">Chcete-li provést ověření hostitele <ph name="HOST_NAME" /> pomocí svého certifikátu, přihlaste se prosím do zařízení <ph name="TOKEN_NAME" />.</translation>
 <translation id="6943176775188458830">Zrušit tisk</translation>
@@ -3914,6 +3929,7 @@
 <translation id="6951153907720526401">Obslužné nástroje pro platby</translation>
 <translation id="6951663584153258142">Vaše organizace vás žádá o aktualizaci tohoto zařízení</translation>
 <translation id="6953878494808481632">Související informace</translation>
+<translation id="6953916367503892689">{0,plural, =1{Soubor: <ph name="FILES" />}few{Soubory: <ph name="FILES" />}many{Soubory: <ph name="FILES" />}other{Soubory: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Prozkoumat vyskakovací okna</translation>
 <translation id="6957044667612803194">Tento bezpečnostní klíč nepodporuje kódy PIN</translation>
 <translation id="6957231940976260713">Název služby</translation>
@@ -4126,7 +4142,6 @@
 <translation id="7254554697254365959">Tuto stránku se nepodařilo přeložit.</translation>
 <translation id="7254951428499890870">Opravdu chcete aplikaci <ph name="APP_NAME" /> spustit v diagnostickém režimu?</translation>
 <translation id="7255002516883565667">V současné době máte jednu kartu, kterou lze používat jen na tomto zařízení.</translation>
-<translation id="7255220508626648026">Odesílání: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Potvrďte reset tím, že se znovu dotknete bezpečnostního klíče. Všechny informace uložené na bezpečnostním klíči, včetně kódu PIN, se vymažou.</translation>
 <translation id="7255935316994522020">Použít</translation>
 <translation id="7256069762010468647">Web používá kameru</translation>
@@ -4260,6 +4275,7 @@
 <translation id="7456142309650173560">pro vývojáře</translation>
 <translation id="7456847797759667638">Otevřít umístění...</translation>
 <translation id="7458168200501453431">Používá stejnou technologii kontroly pravopisu jako Vyhledávání Google. Text, který v prohlížeči zadáte, se odešle do Googlu</translation>
+<translation id="7460045493116006516">Aktuálně nainstalovaný motiv</translation>
 <translation id="7461924472993315131">Připnout</translation>
 <translation id="746216226901520237">Příště váš telefon zařízení <ph name="DEVICE_TYPE" /> odemkne. Funkci Smart Lock můžete vypnout v Nastavení.</translation>
 <translation id="7463006580194749499">Přidat osobu</translation>
@@ -4319,6 +4335,7 @@
 <translation id="7554791636758816595">Nová karta</translation>
 <translation id="7556033326131260574">Funkci Smart Lock se nepodařilo ověřit váš účet. Chcete-li zařízení otevřít, zadejte heslo.</translation>
 <translation id="7556242789364317684">Litujeme, prohlížeč <ph name="SHORT_PRODUCT_NAME" /> vaše nastavení nedokáže obnovit. Aby prohlížeč <ph name="SHORT_PRODUCT_NAME" /> mohl chybu odstranit, musí zařízení resetovat pomocí funkce Powerwash.</translation>
+<translation id="7559444627302317199">Zkontrolujte připojení k síti a zkuste to znovu.</translation>
 <translation id="7559719679815339381">Čekejte prosím… Probíhá aktualizace terminálové aplikace. Nevyjímejte jednotku USB.</translation>
 <translation id="7561196759112975576">Vždy</translation>
 <translation id="7563991800558061108">Pokud chcete po této chybě systém obnovit, je třeba se na přihlašovací obrazovce přihlásit k účtu Google. Pak se z účtu Google můžete odhlásit a zkusit dozorovaného uživatele vytvořit znovu.</translation>
@@ -4559,7 +4576,6 @@
 <translation id="7887334752153342268">Duplikovat</translation>
 <translation id="7887864092952184874">Myš Bluetooth byla spárována</translation>
 <translation id="7889565820482017512">Velikost zobrazení</translation>
-<translation id="7889966925761734854">Posuvník přehrávání</translation>
 <translation id="7893008570150657497">Přistupovat k fotografiím, hudbě a dalším médiím z vašeho počítače</translation>
 <translation id="7893153962594818789">V tomto zařízení <ph name="DEVICE_TYPE" /> je vypnut Bluetooth. Zadejte heslo a zapněte Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Předvolba)</translation>
@@ -4567,7 +4583,6 @@
 <translation id="7898627924844766532">Ponechat na liště</translation>
 <translation id="7898725031477653577">Vždy překládat</translation>
 <translation id="790040513076446191">Manipulovat s nastavením týkajícím se ochrany soukromí</translation>
-<translation id="7902874111237641165">Smooth Motion [beta]</translation>
 <translation id="7903345046358933331">Stránka přestala reagovat. Můžete počkat, až začne reagovat, nebo ji ukončit.</translation>
 <translation id="7903742244674067440">Máte založené certifikáty, které identifikují tyto certifikační autority</translation>
 <translation id="7903925330883316394">Nástroj: <ph name="UTILITY_TYPE" /></translation>
@@ -4679,6 +4694,7 @@
 <translation id="8037117027592400564">Číst veškerý text vyslovovaný pomocí syntetické řeči</translation>
 <translation id="8037357227543935929">Zeptat se (výchozí)</translation>
 <translation id="803771048473350947">Soubor</translation>
+<translation id="8042142357103597104">Neprůhlednost textu</translation>
 <translation id="8044899503464538266">Pomalu</translation>
 <translation id="8045253504249021590">Synchronizace byla zastavena prostřednictvím Hlavního panelu Google.</translation>
 <translation id="8045923671629973368">Zadejte identifikátor aplikace nebo URL internetového obchodu</translation>
@@ -4715,7 +4731,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Tuto službu můžete vypnout v Nastavení.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Kódy PIN se neshodují</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> používá nastavení proxy serveru z rozšíření</translation>
-<translation id="8099495042588009598">Další oprávnění</translation>
 <translation id="8101987792947961127">Je vyžadováno použití funkce Powerwash při dalším restartu</translation>
 <translation id="8102159139658438129">Možnosti připojeného telefonu najdete v sekci <ph name="LINK_BEGIN" />Nastavení<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Tato akce resetuje zařízení <ph name="IDS_SHORT_PRODUCT_NAME" /> pomocí funkce Powerwash a obnoví předchozí verzi aplikace.</translation>
@@ -4766,8 +4781,10 @@
     Tento web by podle mě neměl být blokován.</translation>
 <translation id="8184288427634747179">Přepnout na profil <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Další informace</translation>
+<translation id="8184472985242519288">Obrys</translation>
 <translation id="8185331656081929126">Zobrazit oznámení, když budou v síti zjištěny nové tiskárny</translation>
 <translation id="8186609076106987817">Serveru se nepodařilo soubor najít.</translation>
+<translation id="8187950680397073878">Web <ph name="ORIGIN" /> může číst všechny soubory v následující složce. Tento web změny ve složce vidí, pouze když je otevřená tato karta.</translation>
 <translation id="8188389033983459049">Chcete-li pokračovat, zkontrolujte nastavení zařízení a zapněte Bluetooth</translation>
 <translation id="8190193592390505034">Připojování k síti poskytovatele <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Spravovat aplikace, rozšíření a motivy</translation>
@@ -4871,7 +4888,6 @@
 <translation id="833986336429795709">Chcete-li otevřít tento odkaz, vyberte aplikaci</translation>
 <translation id="8342861492835240085">Vyberte sbírku</translation>
 <translation id="834290227245955730">Neplatný kód PIN. Zbývající pokusy: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Nejlepšího videa či animace docílíte s vysokou rychlostí připojení. Uživatelé s pomalým připojením mohou mít se zobrazením vašeho obsahu problémy.</translation>
 <translation id="8351419472474436977">Toto rozšíření převzalo kontrolu nad nastavením vašeho proxy serveru, což znamená, že může změnit, narušit nebo sledovat vše, co děláte na internetu. Pokud si nejste jisti, proč k tomu došlo, zřejmě se jedná o nežádoucí změnu.</translation>
 <translation id="8351630282875799764">Baterie se nenabíjí</translation>
 <translation id="835238322900896202">Při odinstalaci došlo k chybě. Odinstalujte aplikaci pomocí terminálu.</translation>
@@ -4904,9 +4920,11 @@
 <translation id="839736845446313156">Registrace</translation>
 <translation id="8398877366907290961">Přesto pokračovat</translation>
 <translation id="8400146488506985033">Správa uživatelů</translation>
+<translation id="8400444932218572097">Web <ph name="ORIGIN" /> může ukládat změny přímo do souborů v následující složce. Tento web může změny ukládat, pouze když je otevřená tato karta.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Nejprve se dotázat (doporučeno)</translation>
 <translation id="8418445294933751433">Zobrazit jako kartu</translation>
+<translation id="8418905021510211421">Tato stránka má povoleno čtení složky na vašem zařízení.</translation>
 <translation id="8419098111404128271">Výsledky vyhledávání pro <ph name="SEARCH_TEXT" /></translation>
 <translation id="8419368276599091549">Vítá vás <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Změnit</translation>
@@ -4926,6 +4944,7 @@
 <translation id="8438566539970814960">Vylepšit vyhledávání a procházení</translation>
 <translation id="8439506636278576865">Nabízet překlad stránek v tomto jazyce</translation>
 <translation id="8440630305826533614">Aplikace pro Linux</translation>
+<translation id="844241640324986723">Smazání vašich přihlašovacích údajů se nezdařilo.</translation>
 <translation id="8443338615972234259">Vytvořte dozorovanému uživateli nový účet.</translation>
 <translation id="8446884382197647889">Další informace</translation>
 <translation id="8447409163267621480">Zahrňte klávesu Ctrl nebo Alt</translation>
@@ -4941,8 +4960,6 @@
 <translation id="8461914792118322307">Proxy server</translation>
 <translation id="8463215747450521436">Tento dozorovaný uživatel byl možná smazán nebo deaktivován správcem. Pokud se i nadále chcete přihlašovat jako tento uživatel, kontaktujte prosím správce.</translation>
 <translation id="846374874681391779">Lišta se staženými soubory</translation>
-<translation id="8463807869745732775">"&gt;
-    Přihlašovací údaje uložené na bezpečnostním klíči</translation>
 <translation id="8463955938112983119">Plugin <ph name="PLUGIN_NAME" /> byl deaktivován.</translation>
 <translation id="8464132254133862871">Uživatelský účet nemá přístup do této služby.</translation>
 <translation id="8465252176946159372">Neplatné</translation>
@@ -5008,6 +5025,7 @@
 <translation id="8569002732135253578">Tiskne se dokument <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Žádné cíle nebyly nalezeny</translation>
 <translation id="8571213806525832805">Poslední 4 týdny</translation>
+<translation id="8573403125070227391">Tato reklama v zařízení používá příliš mnoho zdrojů, proto ji Chrome odstranil.</translation>
 <translation id="8574990355410201600">Na webu <ph name="HOST" /> vždy povolit zvuk</translation>
 <translation id="8575286410928791436">Ukončíte podržením kláves <ph name="KEY_EQUIVALENT" /></translation>
 <translation id="8578639784464423491">Nesmí přesahovat 99 písmen</translation>
@@ -5031,13 +5049,13 @@
 <translation id="8609465669617005112">Posunout nahoru</translation>
 <translation id="8610103157987623234">Nesprávný formát, zkuste to znovu</translation>
 <translation id="8615618338313291042">Anonymní aplikace: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Stín</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Stav roamingu</translation>
 <translation id="8620765578342452535">Konfigurovat síťová připojení</translation>
 <translation id="8621866727807194849">Máte v počítači škodlivý software. Chrome ho odstraní, obnoví vaše nastavení a zakáže rozšíření. Prohlížeč bude zase fungovat jako normálně.</translation>
 <translation id="8621979332865976405">Sdílet celou obrazovku</translation>
 <translation id="862542460444371744">Rozšíř&amp;ení</translation>
-<translation id="8627151598708688654">Vyberte zdroj</translation>
 <translation id="862727964348362408">Pozastaveno</translation>
 <translation id="862750493060684461">Mezipaměť CSS</translation>
 <translation id="8627795981664801467">Pouze zabezpečená spojení</translation>
@@ -5091,6 +5109,7 @@
 <translation id="8688579245973331962">Nevidíte svoje jméno?</translation>
 <translation id="8688591111840995413">Nesprávné heslo</translation>
 <translation id="8688672835843460752">Dostupné</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;Otevřít umístění...</translation>
 <translation id="869884720829132584">Nabídka Aplikace</translation>
 <translation id="869891660844655955">Datum vypršení platnosti</translation>
@@ -5254,6 +5273,7 @@
 <translation id="891365694296252935">Odesílat údaje o využití a diagnostice. Toto zařízení aktuálně automaticky odesílá do Googlu diagnostické údaje a údaje o zařízení a využití. Tyto údaje nebudou používány ke zjištění totožnosti dítěte a pomohou nám se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Toto nastavení je vyžadováno vlastníkem. Bude-li mít dítě zapnutou ještě Aktivitu na webu a v aplikacích, mohou se tato data ukládat do jeho účtu Google. <ph name="BEGIN_LINK1" />Další informace<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Načítá se návrh</translation>
 <translation id="8916476537757519021">Anonymní podrámec: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – má povoleno číst složku na vašem zařízení</translation>
 <translation id="8919275547519617350">Chcete-li mít všechna hesla na všech svých zařízeních, přihlaste se a zapněte synchronizaci.</translation>
 <translation id="8921366488406707015">Ověřování bezpečnostního klíče...</translation>
 <translation id="8922013791253848639">Na tomto webu reklamy vždy povolovat</translation>
@@ -5283,7 +5303,6 @@
 <translation id="8965037249707889821">Zadat staré heslo</translation>
 <translation id="8966870118594285808">Pokud jste nějakou kartu zavřeli omylem, můžete ji znovu otevřít</translation>
 <translation id="8967866634928501045">Zobrazíte stisknutím Alt + Shift + A</translation>
-<translation id="8970203673128054105">Zobrazit seznam režimů odesílání</translation>
 <translation id="89720367119469899">Escapovat</translation>
 <translation id="8972513834460200407">Obraťte se na svého správce sítě a ověřte, že stahování ze serverů Google neblokuje firewall.</translation>
 <translation id="8973557916016709913">Odstranit úroveň přiblížení</translation>
@@ -5432,6 +5451,7 @@
 <translation id="9214520840402538427">Jejda! Vypršel časový limit inicializace atributů doby instalace. Kontaktujte zástupce podpory.</translation>
 <translation id="9214695392875603905">Sladký košíček</translation>
 <translation id="9215293857209265904">Bylo přidáno rozšíření <ph name="EXTENSION_NAME" /></translation>
+<translation id="9216712190298404438">Web <ph name="ORIGIN" /> bude moci ukládat změny přímo do následujícího souboru. Tento web může změny ukládat, pouze když je otevřená tato karta.</translation>
 <translation id="9218430445555521422">Nastavit jako výchozí</translation>
 <translation id="9219103736887031265">Obrázky</translation>
 <translation id="9220525904950070496">Odebrat účet</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 0484bf04..4110a5b 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Der opstod en fejl ved opstarten af den virtuelle maskine. Prøv igen.</translation>
 <translation id="1089439967362294234">Skift adgangskode</translation>
 <translation id="1090126737595388931">Ingen apps kører i baggrunden</translation>
+<translation id="1090290614672149983">Vil du gemme ændringerne i den oprindelige fil?</translation>
 <translation id="1090918500949388876">Få adgang til Google-assistenten, hver gang du siger "Ok Google", når skærmen er tændt</translation>
 <translation id="1091767800771861448">Tryk på ESC for at springe over (kun uofficielle builds).</translation>
 <translation id="1093457606523402488">Synlige netværk:</translation>
 <translation id="1094607894174825014">Der blev anmodet om en læse- eller skrivehandling med en ugyldig forskydning på: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Før du logger ind, skal du logge ind som gæst for at aktivere netværket <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Denne fane har tilladelse til at gemme i oprindelige filer.</translation>
 <translation id="1103523840287552314">Oversæt altid <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Stop</translation>
 <translation id="1110155001042129815">Vent</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Solbriller</translation>
 <translation id="1151917987301063366">Tillad altid, at <ph name="HOST" /> kan få adgang til sensorer</translation>
 <translation id="1153356358378277386">Parrede enheder</translation>
-<translation id="1156488781945104845">Aktuel tid</translation>
 <translation id="1161575384898972166">Log ind på <ph name="TOKEN_NAME" /> for at eksportere klientcertifikatet.</translation>
 <translation id="1163931534039071049">&amp;Vis rammens kildetekst</translation>
 <translation id="1164674268730883318">Vil du slå Smart Lock fra for <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Lagerindstillinger for Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies og andre websitedata</translation>
 <translation id="127668050356036882">Luk alle dine vinduer</translation>
-<translation id="1277908057200820621">Se listen over enheder</translation>
 <translation id="1280820357415527819">Søger efter mobilnetværk</translation>
 <translation id="1285320974508926690">Oversæt aldrig dette website</translation>
 <translation id="1285484354230578868">Gemme data på din Google Drev-konto</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Hjemmenetværk, uden roaming</translation>
 <translation id="1316136264406804862">Søger...</translation>
 <translation id="1316495628809031177">Synkroniseringen er sat på pause</translation>
+<translation id="1317637799698924700">Din dockingstation køres i USB-C-kompatibel tilstand.</translation>
 <translation id="1322046419516468189">Se og administrer gemte adgangskoder på din <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Log ind på Chrome for at få adgang til dine faner på dine andre enheder.</translation>
 <translation id="1327074568633507428">Printer i Google Cloudprinter</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Din <ph name="BEGIN_LINK" />browser administreres<ph name="END_LINK" /> af <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Kør værktøjer, redigeringsværktøjer og IDE-pakker fra Linux på din <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Få flere oplysninger&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Vælg en fil</translation>
+<translation id="1370749010280229230">Der er et problem med den skærm, der er tilsluttet dockingstationen</translation>
 <translation id="1371301976177520732">Din historik samt dine bogmærker, adgangskoder og meget mere på alle dine enheder</translation>
 <translation id="1372841398847029212">Synkroniser med din konto</translation>
 <translation id="1374844444528092021">Det certifikat, som netværket "<ph name="NETWORK_NAME" />" kræver, er enten ikke installeret eller ikke længere gyldigt.  Få fat i et nyt certifikat, og prøv at oprette forbindelse igen.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Webside, enkelt fil</translation>
 <translation id="1451917004835509682">Tilføj administreret person</translation>
 <translation id="1454223536435069390">T&amp;ag screenshot</translation>
+<translation id="1458243790901188746">{0,plural, =1{Mappe: <ph name="DIRECTORIES" />}one{Mappe: <ph name="DIRECTORIES" />}other{Mapper: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Søgemaskiner, der er tilføjet af udvidelser</translation>
 <translation id="146000042969587795">Denne ramme blev blokeret, da den indeholder usikkert indhold.</translation>
 <translation id="146219525117638703">ONC-tilstand</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">Vis inputmuligheder</translation>
 <translation id="1651008383952180276">Du skal angive den samme adgangssætning to gange</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Føj printeren til Google Cloudprinter, så du kan udskrive, uanset hvor du befinder dig.}one{Føj # printere til Google Cloudprinter, så du kan udskrive, uanset hvor du befinder dig.}other{Føj # printere til Google Cloudprinter, så du kan udskrive, uanset hvor du befinder dig.}}</translation>
+<translation id="1656528038316521561">Baggrundens gennemsigtighed</translation>
 <translation id="1657406563541664238">Vær med til at gøre <ph name="PRODUCT_NAME" /> bedre ved automatisk at sende forbrugsstatistikker og rapportere om nedbrud til Google</translation>
 <translation id="1658424621194652532">Denne side har adgang til din mikrofon.</translation>
 <translation id="1660204651932907780">Tillad, at websites afspiller lyd (anbefales)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> ønsker at se din sikkerhedsnøgles fabrikat og model</translation>
 <translation id="1679068421605151609">Udviklerværktøjer</translation>
 <translation id="1679806121152819234">PluginVm</translation>
+<translation id="1679810534535368772">Er du sikker på, at du vil afslutte?</translation>
 <translation id="167983332380191032">Administrationstjenesten sendte en HTTP-fejl.</translation>
 <translation id="1680849702532889074">Der opstod en fejl ved installationen af Linux-appen.</translation>
 <translation id="16815041330799488">Tillad ikke, at websites kan se tekst og billeder, der er kopieret til udklipsholderen</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">Id for beskyttet medie</translation>
 <translation id="175196451752279553">G&amp;enåbn lukket fane</translation>
 <translation id="1753905327828125965">Mest besøgte</translation>
+<translation id="1755601632425835748">Tekststørrelse</translation>
 <translation id="1756681705074952506">Indtastningsmetode</translation>
 <translation id="1757301747492736405">Afinstallation afventer</translation>
 <translation id="175772926354468439">Aktivér tema</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">&amp;Mindre</translation>
 <translation id="1919345977826869612">Annoncer</translation>
 <translation id="1919814239594435008">Der blev givet adgang til et plugin, som ikke er gemt i sandbox</translation>
+<translation id="1920390473494685033">Kontakter</translation>
 <translation id="1921050530041573580">Par din telefon med Beskeder</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Få Googles smarte funktioner i <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">Inkognitofane: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Pluginnet <ph name="PEPPER_PLUGIN_NAME" /> på <ph name="PEPPER_PLUGIN_DOMAIN" /> anmoder om adgang til din computer</translation>
 <translation id="2178614541317717477">Sammensat nøglecenter</translation>
+<translation id="2179849162388791084">Der kunne ikke indsamles logindata fra din sikkerhedsnøgle.</translation>
 <translation id="218070003709087997">Brug et tal til at angive, hvor mange kopier der skal udskrives (1 til 999).</translation>
 <translation id="2184515124301515068">Lad Chrome bestemme, hvornår websites må afspille lyd (anbefales)</translation>
 <translation id="2187895286714876935">Fejl ved import af servercertifikat</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">Alle cookies og websitedata</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 element er kopieret}one{# element er kopieret}other{# elementer er kopieret}}</translation>
 <translation id="2278562042389100163">Åbn browservindue</translation>
-<translation id="2279874276457403668">Der kan kun oprettes én session ad gangen.</translation>
 <translation id="2280486287150724112">Højremargen</translation>
 <translation id="2282146716419988068">GPU-proces</translation>
 <translation id="2282155092769082568">Webadresse til automatisk konfiguration:</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">Noter på låseskærmen gemmes automatisk i <ph name="LOCK_SCREEN_APP_NAME" />. Din seneste note forbliver på låseskærmen.</translation>
 <translation id="2353297238722298836">Der er givet adgang til kameraet og mikrofonen</translation>
 <translation id="2356070529366658676">Spørg</translation>
-<translation id="2357949918965361754">Du kan bruge denne funktion til at vise indhold fra Chrome på dit fjernsyn eller andre enheder.</translation>
 <translation id="2359345697448000899">Administrer dine udvidelser ved at klikke på Udvidelser i værktøjsmenuen.</translation>
 <translation id="2359808026110333948">Fortsæt</translation>
 <translation id="236117173274098341">Optimer</translation>
@@ -962,6 +968,7 @@
 <translation id="2436720498717686157">Din organisation kræver, at denne enhed opdateres med det samme</translation>
 <translation id="2439545803278355377">Angiv din nye pinkode. En pinkode skal bestå af mindst fire tegn og kan indeholde bogstaver, tal og andre tegn.</translation>
 <translation id="2440604414813129000">Vis &amp;kilde</translation>
+<translation id="2442916515643169563">Tekstskygge</translation>
 <translation id="2444119669991608829">Er siden ikke på <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Udvidelsens rodmappe er påkrævet.</translation>
 <translation id="2445484935443597917">Opret en ny profil</translation>
@@ -1178,6 +1185,7 @@
 <translation id="2738771556149464852">Ikke efter</translation>
 <translation id="2739191690716947896">Fejlretning</translation>
 <translation id="2739240477418971307">Skift dine tilgængelighedsindstillinger</translation>
+<translation id="274029851662193272">Sænket</translation>
 <translation id="2740393541869613458">gennemse de websites, som den administrerede bruger har besøgt, og</translation>
 <translation id="2741912629735277980">Vis brugerflade på loginskærmen</translation>
 <translation id="274290345632688601">Gendanner Linux-apps og -filer</translation>
@@ -1226,6 +1234,7 @@
 <translation id="2806891468525657116">Genvejen findes allerede</translation>
 <translation id="2807517655263062534">Dine downloadede filer vises her</translation>
 <translation id="2809586584051668049">og <ph name="NUMBER_ADDITIONAL_DISABLED" /> mere</translation>
+<translation id="2812049959647166806">Thunderbolt understøttes ikke</translation>
 <translation id="2812944337881233323">Prøv at logge ud og ind igen.</translation>
 <translation id="2812989263793994277">Vis ikke billeder</translation>
 <translation id="281390819046738856">Anmodningen kunne ikke signeres.</translation>
@@ -1248,7 +1257,6 @@
 <translation id="2841837950101800123">Udbyder</translation>
 <translation id="2844169650293029770">USB-C-enhed (porten foran i venstre side)</translation>
 <translation id="2845382757467349449">Vis altid bogmærkelinjen</translation>
-<translation id="2847759467426165163">Cast til</translation>
 <translation id="284805635805850872">Vil du slette den skadelige software?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Indholdet blev ikke ryddet</translation>
@@ -1295,6 +1303,7 @@
     Servermeddelelse: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Tilføj mediegalleri efter mappe</translation>
 <translation id="2910318910161511225">Opret forbindelse til et netværk, og prøv igen</translation>
+<translation id="2910518940971897750">Gem i oprindelig fil</translation>
 <translation id="2913331724188855103">Tillad, at websites gemmer og læser cookiedata (anbefales)</translation>
 <translation id="2915102088417824677">Se din aktivitetshistorik</translation>
 <translation id="2915873080513663243">Automatisk scanning</translation>
@@ -1359,12 +1368,14 @@
 <translation id="3013291976881901233">MIDI-enheder</translation>
 <translation id="3015639418649705390">Genstart nu</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> kunne ikke konfigureres automatisk. Angiv avancerede indstillinger for printeren.</translation>
+<translation id="3016381065346027039">Ingen logfilposter</translation>
 <translation id="3016641847947582299">Komponenten er opdateret</translation>
 <translation id="3016780570757425217">Kende din placering</translation>
 <translation id="3017079585324758401">Baggrund</translation>
 <translation id="3020183492814296499">Genveje</translation>
 <translation id="3020990233660977256">Serienummer: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Sommerfugl</translation>
+<translation id="3021408157810018664">Vil du gemme ændringerne i de oprindelige filer?</translation>
 <translation id="3021426244864538700">Adgang til dette websites data</translation>
 <translation id="3021678814754966447">&amp;Vis rammens kilde</translation>
 <translation id="3022978424994383087">Det er ikke forstået.</translation>
@@ -1457,6 +1468,7 @@
 <translation id="3170072451822350649">Du kan også springe login over og <ph name="LINK_START" />anvende som gæst<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Et website har adgang til videoinput</translation>
 <translation id="3177909033752230686">Sidens sprog:</translation>
+<translation id="3179982752812949580">Tekstskrifttype</translation>
 <translation id="3181954750937456830">Beskyttet browsing (beskytter dig og din enhed mod farlige websites)</translation>
 <translation id="3182749001423093222">Stavekontrol</translation>
 <translation id="3183139917765991655">Profilimport</translation>
@@ -1509,7 +1521,6 @@
 <translation id="3275778913554317645">Åbn som vindue</translation>
 <translation id="3278001907972365362">Din Google-konto kræver handling</translation>
 <translation id="3279230909244266691">Denne proces kan tage et par minutter. Den virtuelle maskine startes.</translation>
-<translation id="3279741024917655738">Se videoer i fuld skærm på</translation>
 <translation id="3280237271814976245">Gem &amp;som...</translation>
 <translation id="3280243678470289153">Bliv i Chrome</translation>
 <translation id="3281892622610078515">Filer og programmer, der skal i karantæne:</translation>
@@ -1531,7 +1542,7 @@
 <translation id="3303855915957856445">Der blev ikke fundet nogen søgeresultater</translation>
 <translation id="3305389145870741612">Formateringen kan tage et par sekunder. Vent et øjeblik.</translation>
 <translation id="3305661444342691068">Åbn PDF i fremviseren</translation>
-<translation id="3306684685104080068">Aktivér casting til tjenester, der er baseret på skyen, som f.eks. Google Hangouts.</translation>
+<translation id="3307871847038842490">Denne side har tilladelse til at gemme i oprindelige filer.</translation>
 <translation id="3308006649705061278">Organisationsenhed (OU)</translation>
 <translation id="3308116878371095290">Denne side blev forhindret i at konfigurere cookies.</translation>
 <translation id="3308134619352333507">Skjul knap</translation>
@@ -1637,7 +1648,6 @@
 <translation id="3462413494201477527">Vil du annullere konfigurationen af kontoen?</translation>
 <translation id="3464012987031883895">Et website har adgang til lydinput</translation>
 <translation id="346431825526753">Dette er en børnekonto, som administreres af <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Stream en video eller lydfil</translation>
 <translation id="3468999815377931311">Android-telefon</translation>
 <translation id="3470442499439619530">Fjern denne bruger</translation>
 <translation id="3473479545200714844">Skærmforstørrer</translation>
@@ -1660,6 +1670,7 @@
 <translation id="3496213124478423963">Zoom ud</translation>
 <translation id="3497560059572256875">Del doodle</translation>
 <translation id="3505030558724226696">Tilbagekald adgang til enhed</translation>
+<translation id="3505635633742443645">Din dockingstations HDMI-port kan ikke bruges, når USB-C-porten bruges til videooutput. Brug en anden port til en af skærmene.</translation>
 <translation id="3507421388498836150">Nuværende tilladelser for "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Søg efter Bluetooth-enheder igen</translation>
 <translation id="3508920295779105875">Vælg en anden mappe...</translation>
@@ -1712,6 +1723,7 @@
 <translation id="3576324189521867626">Appen blev installeret</translation>
 <translation id="3578594933904494462">Indholdet på denne fane deles.</translation>
 <translation id="357886715122934472">&lt;Strong&gt;<ph name="SENDER" />&lt;/ Strong&gt; vil gerne dele printeren &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/ Strong&gt; med en gruppe, som du ejer: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/ Strong&gt;. Hvis du accepterer, kan alle gruppens medlemmer udskrive til printeren.</translation>
+<translation id="357889014807611375">forbrugsafregnet Wi-Fi</translation>
 <translation id="3584169441612580296">Læs og rediger billeder, musik og andre medier på din computer</translation>
 <translation id="3587482841069643663">Alle</translation>
 <translation id="358796204584394954">Angiv denne kode på enheden "<ph name="DEVICE_NAME" />" for at parre:</translation>
@@ -1722,6 +1734,7 @@
 <translation id="359283478042092570">Angiv</translation>
 <translation id="3593965109698325041">Begrænsninger for certifikatnavn</translation>
 <translation id="3596235046596950091">Aktivér skytjenester</translation>
+<translation id="3599221874935822507">Hævet</translation>
 <translation id="3599863153486145794">Rydder historikken på alle enheder, hvor du er logget ind. Din Google-konto kan have andre former for browserhistorik på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Oplysninger om webanmodning</translation>
 <translation id="3600792891314830896">Lyden slås fra for websites, der afspiller lyd</translation>
@@ -1736,6 +1749,7 @@
 <translation id="3612673635130633812">Downloadet af &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Vis <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Åbn på ny fane</translation>
+<translation id="3615073365085224194">Tryk på fingeraftrykslæseren med din finger</translation>
 <translation id="3616113530831147358">Lyd</translation>
 <translation id="3616741288025931835">&amp;Slet browserdata...</translation>
 <translation id="3617891479562106823">Baggrunde er utilgængelige. Prøv igen senere.</translation>
@@ -1817,7 +1831,6 @@
 <translation id="3719826155360621982">Startside</translation>
 <translation id="3720996970802414353">Skift alligevel</translation>
 <translation id="3722108462506185496">Der opstod en fejl under opstarten af tjenesten på den virtuelle maskine. Prøv igen.</translation>
-<translation id="3723158278575423087">Velkommen til Cast-oplevelsen i Chromium.</translation>
 <translation id="3725367690636977613">sider</translation>
 <translation id="3726137731714254362">Hvis mapper fjernes herfra, deles de ikke længere, men filerne slettes ikke.</translation>
 <translation id="3727148787322499904">Hvis denne indstilling ændres, påvirker det alle delte netværk</translation>
@@ -1852,7 +1865,6 @@
 <translation id="3764314093345384080">Detaljerede buildoplysninger</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Kommuniker med en USB-enhed}one{Kommuniker med # USB-enheder}other{Kommuniker med # USB-enheder}}</translation>
 <translation id="3765246971671567135">Politikken for offlinedemotilstand kunne ikke læses.</translation>
-<translation id="3766223500670287046">Ekstern skærm</translation>
 <translation id="3768037234834996183">Synkroniserer dine præferencer...</translation>
 <translation id="377050016711188788">Is</translation>
 <translation id="3771294271822695279">Videofiler</translation>
@@ -1925,7 +1937,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Løft, og tryk igen</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Synkronisering er sat på pause</translation>
-<translation id="3862134173397075045">Velkommen til Cast-oplevelsen i Chrome!</translation>
 <translation id="3862693525629180217">Bekræft via indbygget sensor</translation>
 <translation id="3862788408946266506">Appen med manifestattributten "kiosk_only" skal installeres i ChromeOS-terminaltilstand</translation>
 <translation id="3865414814144988605">Opløsning</translation>
@@ -1974,6 +1985,7 @@
 <translation id="3926002189479431949">Smart Lock-telefon er blevet ændret</translation>
 <translation id="3927932062596804919">Afvis</translation>
 <translation id="3930737994424905957">Søger efter enheder</translation>
+<translation id="3930968231047618417">Baggrundsfarve</translation>
 <translation id="3933283459331715412">Gendan en slettet adgangskode for <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Åbn lyd på ny fane</translation>
 <translation id="3936925983113350642">Den valgte adgangskode kræves for at gendanne dette certifikat senere. Gem den et sikkert sted.</translation>
@@ -1993,6 +2005,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importeret fra IE</translation>
 <translation id="3950820424414687140">Log ind</translation>
+<translation id="3950828138786918475">Denne fane har tilladelse til at læse en mappe på din enhed.</translation>
 <translation id="3954354850384043518">I gang</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> hertz)</translation>
 <translation id="3954953195017194676">Du har ingen nyligt registrerede WebRTC-hændelseslogfiler.</translation>
@@ -2011,6 +2024,7 @@
 <translation id="397105322502079400">Beregner...</translation>
 <translation id="3975565978598857337">Det var ikke muligt at kontakte serveren for domænet</translation>
 <translation id="397703832102027365">Afslutter...</translation>
+<translation id="3977886311744775419">Automatiske opdateringer downloades ikke på denne netværkstype, men du kan kigge efter opdateringer manuelt.</translation>
 <translation id="3979395879372752341">Ny udvidelse er tilføjet (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Aktivér <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Den indtastede filtype er ugyldig.</translation>
@@ -2150,6 +2164,7 @@
 <translation id="4194570336751258953">Aktivér berøringsklik</translation>
 <translation id="4195643157523330669">Åbn på ny fane</translation>
 <translation id="4195814663415092787">Fortsæt, hvor du slap</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> kan gemme dine ændringer direkte i de følgende filer. Dette website kan kun gemme ændringer, når denne fane er åben.</translation>
 <translation id="4198146608511578238">Du skal bare holde Starter-ikonet nede for at tale til Google-assistenten.</translation>
 <translation id="4200689466366162458">Tilpassede ord</translation>
 <translation id="4200983522494130825">Ny &amp;fane</translation>
@@ -2197,7 +2212,6 @@
 <translation id="4267953847983678297">Opret automatisk forbindelse til mobilnetværk</translation>
 <translation id="4268025649754414643">Omsætning af nøgle til kode</translation>
 <translation id="4270393598798225102">Version <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Ingen resultater</translation>
 <translation id="4275663329226226506">Medier</translation>
 <translation id="4275830172053184480">Genstart din enhed</translation>
 <translation id="4278101229438943600">Din Google-assistent er klar</translation>
@@ -2346,6 +2360,7 @@
 <translation id="4533985347672295764">CPU-tid</translation>
 <translation id="4534661889221639075">Prøv igen.</translation>
 <translation id="4535127706710932914">Standardprofil</translation>
+<translation id="4535767533210902251">Fingeraftrykslæseren er tasten øverst til højre på dit tastatur. Tryk let på den med en finger.</translation>
 <translation id="4538684596480161368">Bloker altid plugins, der ikke er gemt i sandbox, på <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Installeret af virksomhedspolitik.</translation>
 <translation id="4542520061254486227">Læs dine data på <ph name="WEBSITE_1" /> og <ph name="WEBSITE_2" /></translation>
@@ -2379,6 +2394,7 @@
 <translation id="457386861538956877">Flere...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Par Bluetooth-enhed</translation>
+<translation id="4578012756826807359">Dine logindata blev slettet.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> kunne ikke castes.</translation>
 <translation id="4581774856936278355">Der opstod en fejl ved gendannelsen af Linux</translation>
 <translation id="4582563038311694664">Nulstil alle indstillinger</translation>
@@ -2496,7 +2512,6 @@
 <translation id="4763830802490665879">Cookies fra flere websites bliver ryddet ved lukning.</translation>
 <translation id="4765582662863429759">Tillader, at Android Beskeder videresender sms-beskeder fra din telefon til din Chromebook</translation>
 <translation id="4768332406694066911">Du har certifikater fra disse organisationer, der identificerer dig</translation>
-<translation id="4772404146526168240">Begge skærme</translation>
 <translation id="4776146737004271126">Åbn Android-indstillingerne</translation>
 <translation id="4776917500594043016">Adgangskode for <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Butik</translation>
@@ -2604,7 +2619,6 @@
 <translation id="4927846293686536410">Log ind for at få dine bogmærker, din historik, dine adgangskoder og dine øvrige indstillinger på alle dine enheder. Du bliver også automatisk logget ind på dine Google-tjenester.</translation>
 <translation id="4929386379796360314">Udskriftsdestinationer</translation>
 <translation id="4930714375720679147">Aktivér</translation>
-<translation id="4931132176527519925">Brug altid spejling</translation>
 <translation id="4932733599132424254">Dato</translation>
 <translation id="4933484234309072027">indlejret på <ph name="URL" /></translation>
 <translation id="493571969993549666">Tilføj en administreret bruger</translation>
@@ -2644,6 +2658,7 @@
 <translation id="4992066212339426712">Slå lyden til</translation>
 <translation id="4992458225095111526">Bekræft Powerwash</translation>
 <translation id="4992473555164495036">Din administrator har begrænset de tilgængelige indtastningsmetoder.</translation>
+<translation id="4992866843815555470">Din dockingstation skal serviceres. Din dockingstation lukker ned, hvis den ikke har en ventilator, der fungerer.</translation>
 <translation id="4992926179187649719">Aktivér "Ok Google"</translation>
 <translation id="4994474651455208930">Tillad, at websites beder om at håndtere protokoller som standard</translation>
 <translation id="4994754230098574403">Konfigurerer</translation>
@@ -2782,7 +2797,6 @@
 <translation id="5233231016133573565">Behandling af ID</translation>
 <translation id="5233638681132016545">Ny fane</translation>
 <translation id="5233736638227740678">&amp;Indsæt</translation>
-<translation id="5234764350956374838">Luk</translation>
 <translation id="5235050375939235066">Vil du afinstallere appen?</translation>
 <translation id="5235750401727657667">Skift den side, du får vist, når du åbner en ny fane</translation>
 <translation id="5238278114306905396">Appen "<ph name="EXTENSION_NAME" />" blev automatisk fjernet.</translation>
@@ -2847,6 +2861,7 @@
 <translation id="5319359161174645648">Google anbefaler Chrome</translation>
 <translation id="532247166573571973">Serveren kan være utilgængelig. Prøv igen senere.</translation>
 <translation id="5324780743567488672">Indstil tidszonen automatisk ved hjælp af din placering</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – har tilladelse til at gemme i oprindelige filer</translation>
 <translation id="5327248766486351172">Navn</translation>
 <translation id="5327570636534774768">Denne enhed er markeret til administration af et andet domæne. Enheden skal deprovisioneres fra dette domæne, før demotilstand konfigureres.</translation>
 <translation id="532943162177641444">Tryk på notifikationen på din <ph name="PHONE_NAME" /> for at konfigurere det mobilhotspot, der kan anvendes af denne enhed.</translation>
@@ -2989,7 +3004,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> vil gerne</translation>
 <translation id="5534304873398226603">Slet billede eller video</translation>
 <translation id="5535941515421698170">Fjern også dine eksisterende data fra denne enhed</translation>
-<translation id="5537725057119320332">Cast</translation>
 <translation id="5539221284352502426">Den angivne adgangskode blev afvist af serveren. Mulige årsager: Adgangskoden er for kort. Adgangskoden skal indeholde tal eller symboler. Adgangskoden skal være forskellig fra tidligere adgangskoder.</translation>
 <translation id="5541687815721799001">Brug app</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3298,7 +3312,6 @@
 <translation id="5997337190805127100">Få flere oplysninger om websiteadgang</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultater for "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Foretrukne stemmer</translation>
-<translation id="6005695835120147974">Medierouter</translation>
 <translation id="6006484371116297560">Klassisk</translation>
 <translation id="6007240208646052708">Talesøgning er ikke tilgængelig på dit sprog.</translation>
 <translation id="6009781704028455063">Indbygget sensor</translation>
@@ -3499,7 +3512,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Ny printer på dit netværk}one{Nye printere på dit netværk}other{Nye printere på dit netværk}}</translation>
 <translation id="6286708577777130801">Info om gemt adgangskode</translation>
 <translation id="6289452883081499048">Tilpassede Google-tjenester som f.eks. Play</translation>
-<translation id="6290556621549272952">Du kan bruge denne funktion til at vise indhold fra Chromium på dit fjernsyn eller andre enheder.</translation>
 <translation id="6291949900244949761">Spørg, når et website vil have adgang til USB-enheder (anbefales)</translation>
 <translation id="6291953229176937411">&amp;Vis i Finder</translation>
 <translation id="6295158916970320988">Alle websites</translation>
@@ -3563,6 +3575,7 @@
 <translation id="6395423953133416962">Send <ph name="BEGIN_LINK1" />systemoplysninger<ph name="END_LINK1" /> og <ph name="BEGIN_LINK2" />metrics<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Bloker brug af bevægelsessensorer på websites</translation>
 <translation id="6397094776139756010">Muligheder for synkronisering og tilpasning</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> vil have mulighed for at gemme dine ændringer direkte i filerne i den følgende mappe. Dette website kan kun gemme ændringer, når denne fane er åben.</translation>
 <translation id="6398715114293939307">Fjern Google Play Butik</translation>
 <translation id="6398765197997659313">Afslut fuld skærm</translation>
 <translation id="6399774419735315745">Spion</translation>
@@ -3607,11 +3620,13 @@
 <translation id="6455264371803474013">På specifikke websites</translation>
 <translation id="6455894534188563617">&amp;Ny mappe</translation>
 <translation id="6456394469623773452">God</translation>
+<translation id="6456955391422100996">Annoncen blev fjernet.</translation>
 <translation id="645705751491738698">Fortsæt blokering af JavaScript</translation>
 <translation id="6458701200018867744">Upload mislykkedes (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Brug valg til Find</translation>
 <translation id="6459799433792303855">Det aktive vindue blev flyttet til en anden skærm.</translation>
 <translation id="6460601847208524483">Find næste</translation>
+<translation id="6461170143930046705">Søger efter netværk...</translation>
 <translation id="6463795194797719782">&amp;Rediger</translation>
 <translation id="6466988389784393586">Åbn alle bogmærker</translation>
 <translation id="6467304607960172345">Optimer videoer i fuld skærm</translation>
@@ -3650,6 +3665,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Du har oprettet forbindelse til et <ph name="NETWORK_TYPE" />-netværk.</translation>
 <translation id="6527303717912515753">Del</translation>
 <translation id="6528513914570774834">Giv andre brugere af denne enhed tilladelse til at bruge dette netværk</translation>
 <translation id="652948702951888897">Chrome-historik</translation>
@@ -3746,7 +3762,6 @@
 <translation id="6680650203439190394">Talehastighed</translation>
 <translation id="6681668084120808868">Tag billede</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" afinstalleres.</translation>
-<translation id="6685083257944113180">Stop, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Åbn Google Play</translation>
 <translation id="6686490380836145850">Luk fanerne til højre</translation>
 <translation id="6686817083349815241">Gem din adgangskode</translation>
@@ -3854,6 +3869,7 @@
 <translation id="6845038076637626672">Åbn maksimeret</translation>
 <translation id="6845325883481699275">Hjælp med at forbedre sikkerheden i Chrome</translation>
 <translation id="6848388270925200958">Lige nu har du kort, som kun kan bruges på denne enhed.</translation>
+<translation id="6850286078059909152">Tekstfarve</translation>
 <translation id="6851497530878285708">Appen er aktiveret</translation>
 <translation id="6853388645642883916">Opdateringsprogrammet er i dvale</translation>
 <translation id="68541483639528434">Luk alle andre faner</translation>
@@ -3903,7 +3919,6 @@
 <translation id="6923132443355966645">Rul/klik</translation>
 <translation id="6923633482430812883">Delingen kunne ikke anvendes. Tjek, at den filserver, du opretter forbindelse til, understøtter SMBv2 eller nyere.</translation>
 <translation id="6930036377490597025">Ekstern sikkerhedsnøgle eller indbygget sensor</translation>
-<translation id="6930242544192836755">Varighed</translation>
 <translation id="693807610556624488">Skrivehandlingen overskrider den maksimale længde af attributten på: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Log ind på <ph name="TOKEN_NAME" /> for at give <ph name="HOST_NAME" /> autorisation med dit certifikat.</translation>
 <translation id="6943176775188458830">Annuller udskrivning</translation>
@@ -3917,6 +3932,7 @@
 <translation id="6951153907720526401">Betalingshandlere</translation>
 <translation id="6951663584153258142">Din organisation beder dig om at opdatere denne enhed</translation>
 <translation id="6953878494808481632">Relaterede oplysninger</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fil: <ph name="FILES" />}one{Fil: <ph name="FILES" />}other{Filer: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Undersøg pop op-vindue</translation>
 <translation id="6957044667612803194">Denne sikkerhedsnøgle understøtter ikke pinkoder</translation>
 <translation id="6957231940976260713">Tjenestens navn</translation>
@@ -4129,7 +4145,6 @@
 <translation id="7254554697254365959">Denne side kunne ikke oversættes.</translation>
 <translation id="7254951428499890870">Er du sikker på, du vil åbne "<ph name="APP_NAME" />" i diagnosticeringstilstand?</translation>
 <translation id="7255002516883565667">Lige nu har du ét kort, som kun kan bruges på denne enhed</translation>
-<translation id="7255220508626648026">Caster: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Tryk på din sikkerhedsnøgle igen for at bekræfte nulstillingen. Alle oplysninger, der er gemt på sikkerhedsnøglen, bl.a. pinkoden, slettes.</translation>
 <translation id="7255935316994522020">Anvend</translation>
 <translation id="7256069762010468647">Websitet anvender dit kamera</translation>
@@ -4263,6 +4278,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Åbn placering...</translation>
 <translation id="7458168200501453431">Bruger samme stavekontrol som Google-søgning. Tekst, som du angiver i browseren, sendes til Google.</translation>
+<translation id="7460045493116006516">Det aktuelle tema, du har installeret</translation>
 <translation id="7461924472993315131">Fastgør</translation>
 <translation id="746216226901520237">Næste gang låser din telefon din <ph name="DEVICE_TYPE" /> op. Du kan deaktivere Smart Lock i Indstillinger.</translation>
 <translation id="7463006580194749499">Tilføj person</translation>
@@ -4322,6 +4338,7 @@
 <translation id="7554791636758816595">Ny fane</translation>
 <translation id="7556033326131260574">Smart Lock kunne ikke bekræfte din konto. Angiv din adgangskode for at få adgang.</translation>
 <translation id="7556242789364317684"><ph name="SHORT_PRODUCT_NAME" /> kan ikke gendanne dine indstillinger. Denne fejl kan korrigeres ved at lade <ph name="SHORT_PRODUCT_NAME" /> nulstille din enhed med Powerwash.</translation>
+<translation id="7559444627302317199">Tjek din netværksforbindelse, og prøv igen.</translation>
 <translation id="7559719679815339381">Vent et øjeblik....Terminalappen er ved at blive opdateret. Undlad at fjerne USB-stikket.</translation>
 <translation id="7561196759112975576">Altid</translation>
 <translation id="7563991800558061108">Du kan undgå denne fejl ved at logge ind på din Google-konto
@@ -4563,7 +4580,6 @@
 <translation id="7887334752153342268">Dupliker</translation>
 <translation id="7887864092952184874">Bluetooth-mus er parret</translation>
 <translation id="7889565820482017512">Skærmstørrelse</translation>
-<translation id="7889966925761734854">Hop</translation>
 <translation id="7893008570150657497">Få adgang til billeder, musik og andre medier fra din computer</translation>
 <translation id="7893153962594818789">Bluetooth er slået fra på denne <ph name="DEVICE_TYPE" />. Angiv din adgangskode, og slå Bluetooth til.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Standard)</translation>
@@ -4571,7 +4587,6 @@
 <translation id="7898627924844766532">Behold på værktøjslinjen</translation>
 <translation id="7898725031477653577">Oversæt altid</translation>
 <translation id="790040513076446191">Manipulere indstillinger til beskyttelse af personlige oplysninger</translation>
-<translation id="7902874111237641165">Smooth Motion [beta]</translation>
 <translation id="7903345046358933331">Siden svarer ikke. Du kan vente på, at den svarer, eller lukke den.</translation>
 <translation id="7903742244674067440">Du har lagrede certifikater, som identificerer disse certifikatautoriteter</translation>
 <translation id="7903925330883316394">Værktøj: <ph name="UTILITY_TYPE" /></translation>
@@ -4683,6 +4698,7 @@
 <translation id="8037117027592400564">Læs hele teksten højt ved hjælp af talesyntese</translation>
 <translation id="8037357227543935929">Spørg (standardindstilling)</translation>
 <translation id="803771048473350947">Fil</translation>
+<translation id="8042142357103597104">Tekstens gennemsigtighed</translation>
 <translation id="8044899503464538266">Langsom</translation>
 <translation id="8045253504249021590">Synkronisering er blevet stoppet via Google Betjeningspanel.</translation>
 <translation id="8045923671629973368">Angiv et app-id eller webadressen til Chrome Webshop</translation>
@@ -4719,7 +4735,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Du kan deaktivere denne tjeneste i Indstillinger.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Pinkoderne stemmer ikke overens</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> anvender proxyindstillinger fra en udvidelse</translation>
-<translation id="8099495042588009598">Flere tilladelser</translation>
 <translation id="8101987792947961127">Powerwash er påkrævet ved næste genstart</translation>
 <translation id="8102159139658438129">Gå til <ph name="LINK_BEGIN" />Indstillinger<ph name="LINK_END" /> for at se valgmulighederne for din tilsluttede telefon</translation>
 <translation id="8104696615244072556">Powerwash din <ph name="IDS_SHORT_PRODUCT_NAME" />-enhed, og nulstil til forrige version.</translation>
@@ -4771,8 +4786,10 @@
     Jeg synes ikke, at dette website skal blokeres.</translation>
 <translation id="8184288427634747179">Skift til <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Flere oplysninger</translation>
+<translation id="8184472985242519288">Ensartet</translation>
 <translation id="8185331656081929126">Vis notifikationer, når der registreres nye printere på netværket</translation>
 <translation id="8186609076106987817">Serveren kunne ikke finde filen.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> kan læse alle filerne i den følgende mappe. Dette website kan kun se ændringer i mappen, når denne fane er åben.</translation>
 <translation id="8188389033983459049">Tjek enhedens indstillinger, og aktivér Bluetooth for at fortsætte</translation>
 <translation id="8190193592390505034">Forbinder til <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Administrere dine apps, udvidelser og temaer</translation>
@@ -4876,7 +4893,6 @@
 <translation id="833986336429795709">Vælg en app for at åbne dette link</translation>
 <translation id="8342861492835240085">Vælg en samling</translation>
 <translation id="834290227245955730">Pinkoden er ugyldig. Antal resterende forsøg: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Du får den bedste video- eller animationskvalitet ved at bruge den højeste båndbredde. Andre brugere med langsomme forbindelser kan muligvis ikke se dit indhold.</translation>
 <translation id="8351419472474436977">En udvidelse har taget kontrol over dine proxyindstillinger, hvilket betyder, at den kan ændre, ødelægge eller aflytte alt, hvad du foretager dig på nettet. Hvis du ikke er sikker på, hvorfor denne ændring er sket, er den sandsynligvis uønsket.</translation>
 <translation id="8351630282875799764">Batteriet oplader ikke</translation>
 <translation id="835238322900896202">Der opstod en fejl under afinstallationen. Afinstaller via Terminal.</translation>
@@ -4909,9 +4925,11 @@
 <translation id="839736845446313156">Registrer</translation>
 <translation id="8398877366907290961">Fortsæt alligevel</translation>
 <translation id="8400146488506985033">Administrer personer</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> kan gemme dine ændringer direkte i filerne i den følgende mappe. Dette website kan kun gemme ændringer, når denne fane er åben.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Spørg først (anbefales)</translation>
 <translation id="8418445294933751433">&amp;Vis som fane</translation>
+<translation id="8418905021510211421">Denne side har tilladelse til at læse en mappe på din enhed.</translation>
 <translation id="8419098111404128271">Søgeresultater for "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Velkommen til din <ph name="DEVICE_TYPE" /></translation>
 <translation id="8425213833346101688">Skift</translation>
@@ -4931,6 +4949,7 @@
 <translation id="8438566539970814960">Gør søgninger og browsing endnu bedre</translation>
 <translation id="8439506636278576865">Tilbyd at oversætte sider på dette sprog</translation>
 <translation id="8440630305826533614">Linux-apps</translation>
+<translation id="844241640324986723">Din logindata kunne ikke slettes.</translation>
 <translation id="8443338615972234259">Opret en ny konto for din administrerede bruger nu.</translation>
 <translation id="8446884382197647889">Få flere oplysninger</translation>
 <translation id="8447409163267621480">Skal indeholde enten Ctrl eller Alt</translation>
@@ -4946,8 +4965,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Denne administrerede bruger kan være slettet eller deaktiveret af administratoren. Kontakt administratoren, hvis du gerne vil fortsætte med at logge ind som denne bruger.</translation>
 <translation id="846374874681391779">Downloadlinje</translation>
-<translation id="8463807869745732775">"&gt;
-    Gemte logindata på sikkerhedsnøglen</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> er deaktiveret.</translation>
 <translation id="8464132254133862871">Denne brugerkonto er ikke kvalificeret til at bruge tjenesten.</translation>
 <translation id="8465252176946159372">Ikke gyldig</translation>
@@ -5013,6 +5030,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" /> udskrives nu</translation>
 <translation id="8569682776816196752">Der blev ikke fundet nogen destinationer</translation>
 <translation id="8571213806525832805">Seneste 4 uger</translation>
+<translation id="8573403125070227391">Denne annonce anvender for mange ressourcer på din enhed, så Chrome har fjernet den.</translation>
 <translation id="8574990355410201600">Tillad altid lyd på <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Hold <ph name="KEY_EQUIVALENT" /> nede for at afslutte</translation>
 <translation id="8578639784464423491">Må højst indeholde 99 bogstaver</translation>
@@ -5036,13 +5054,13 @@
 <translation id="8609465669617005112">Flyt op</translation>
 <translation id="8610103157987623234">Formatet er forkert. Prøv igen.</translation>
 <translation id="8615618338313291042">Inkognitoprogram: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Dropskygge</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Roamingstatus</translation>
 <translation id="8620765578342452535">Konfigurere netværksforbindelser</translation>
 <translation id="8621866727807194849">Der er skadelig software på din computer. Chrome fjerner den, gendanner dine indstillinger og deaktiverer udvidelser. Dermed kan din browser fungere normalt igen.</translation>
 <translation id="8621979332865976405">Del hele din skærm</translation>
 <translation id="862542460444371744">&amp;Udvidelser</translation>
-<translation id="8627151598708688654">Vælg kilde</translation>
 <translation id="862727964348362408">På pause</translation>
 <translation id="862750493060684461">CSS-cache</translation>
 <translation id="8627795981664801467">Kun sikre forbindelser</translation>
@@ -5096,6 +5114,7 @@
 <translation id="8688579245973331962">Kan du ikke se dit navn?</translation>
 <translation id="8688591111840995413">Forkert adgangskode</translation>
 <translation id="8688672835843460752">Tilgængelig</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Åbn &amp;placering...</translation>
 <translation id="869884720829132584">Programmenu</translation>
 <translation id="869891660844655955">Udløbsdato</translation>
@@ -5260,6 +5279,7 @@
 <translation id="891365694296252935">Send brugs- og diagnosticeringsdata. Denne enhed sender i øjeblikket automatisk diagnosticerings- og enhedsdata samt data om brug af apps til Google. Disse data bruges ikke til at identificere dit barn. De bruges kun til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Denne indstilling håndhæves af ejeren. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret for dit barn, gemmes disse data muligvis på barnets Google-konto. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Indlæser forslag</translation>
 <translation id="8916476537757519021">Underramme for inkognitotilstand: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – har tilladelse til at læse en mappe på din enhed</translation>
 <translation id="8919275547519617350">Log ind, og aktivér synkronisering for at få alle dine adgangskoder på alle dine enheder.</translation>
 <translation id="8921366488406707015">Bekræfter din sikkerhedsnøgle...</translation>
 <translation id="8922013791253848639">Tillad altid annoncer på dette website</translation>
@@ -5289,7 +5309,6 @@
 <translation id="8965037249707889821">Angiv den gamle adgangskode</translation>
 <translation id="8966870118594285808">Åbn en fane igen, hvis du lukkede den ved et uheld</translation>
 <translation id="8967866634928501045">Tryk på Alt+Shift+A for at vise</translation>
-<translation id="8970203673128054105">Se listen over cast-tilstande</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Kontakt din netværksadministrator for at sikre, at firewallen ikke blokerer downloads fra Google-servere.</translation>
 <translation id="8973557916016709913">Fjern zoomniveau</translation>
@@ -5438,6 +5457,7 @@
 <translation id="9214520840402538427">Ups! Initialiseringen af ​​installationstidens attributter har fået timeout. Kontakt en supportmedarbejder.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" er tilføjet</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> vil have mulighed for at gemme dine ændringer direkte i den følgende fil. Dette website kan kun gemme ændringer, når denne fane er åben.</translation>
 <translation id="9218430445555521422">Indstil som standard</translation>
 <translation id="9219103736887031265">Billeder</translation>
 <translation id="9220525904950070496">Fjern konto</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index a93f208..b8f5993 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Fehler beim Starten der virtuellen Maschine. Bitte versuchen Sie es noch einmal.</translation>
 <translation id="1089439967362294234">Passwort ändern</translation>
 <translation id="1090126737595388931">Es werden keine Apps im Hintergrund ausgeführt.</translation>
+<translation id="1090290614672149983">Änderungen in Originaldatei speichern?</translation>
 <translation id="1090918500949388876">Bei eingeschaltetem Bildschirm steht Ihnen Google Assistant jederzeit zur Verfügung, wenn Sie "Ok Google" sagen</translation>
 <translation id="1091767800771861448">Drücken Sie die Esc-Taste, um die Aktualisierung zu überspringen (nur inoffizielle Builds).</translation>
 <translation id="1093457606523402488">Sichtbare Netzwerke:</translation>
 <translation id="1094607894174825014">Auf folgendem Gerät wurde ein Lese- oder Schreibvorgang mit ungültiger Abweichung angefordert: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Melden Sie vor der Anmeldung als Gast an, um das Netzwerk <ph name="NETWORK_ID" /> zu aktivieren.</translation>
+<translation id="110029732810301672">Dieser Tab darf in Originaldateien speichern.</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> immer übersetzen</translation>
 <translation id="1108600514891325577">&amp;Anhalten</translation>
 <translation id="1110155001042129815">Warten</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Sonnenbrille</translation>
 <translation id="1151917987301063366"><ph name="HOST" /> immer den Zugriff auf Sensoren erlauben</translation>
 <translation id="1153356358378277386">Gekoppelte Geräte</translation>
-<translation id="1156488781945104845">Aktuelle Uhrzeit</translation>
 <translation id="1161575384898972166">Melden Sie sich in <ph name="TOKEN_NAME" /> an, um das Clientzertifikat zu exportieren.</translation>
 <translation id="1163931534039071049">Frame-Quelltext &amp;anzeigen</translation>
 <translation id="1164674268730883318">Smart Lock für <ph name="DEVICE_TYPE" /> deaktivieren?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Speichereinstellungen für Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies und andere Websitedaten</translation>
 <translation id="127668050356036882">Alle Fenster schließen</translation>
-<translation id="1277908057200820621">Geräteliste aufrufen</translation>
 <translation id="1280820357415527819">Nach Mobilfunknetzen wird gesucht</translation>
 <translation id="1285320974508926690">Diese Website nie übersetzen</translation>
 <translation id="1285484354230578868">Daten in meinem Google Drive-Konto speichern</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Heimnetzwerk, kein Roaming</translation>
 <translation id="1316136264406804862">Suche läuft...</translation>
 <translation id="1316495628809031177">Synchronisierung pausiert</translation>
+<translation id="1317637799698924700">Ihre Dockingstation arbeitet im Modus für USB Typ-C-Kompatibilität.</translation>
 <translation id="1322046419516468189">Gespeicherte Passwörter in Ihrem <ph name="SAVED_PASSWORDS_STORE" /> ansehen und verwalten</translation>
 <translation id="1326317727527857210">Melden Sie sich in Chrome an, um Tabs von Ihren anderen Geräten abzurufen.</translation>
 <translation id="1327074568633507428">Google Cloud Print-Drucker</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Ihr Browser wird von <ph name="ENROLLMENT_DOMAIN" /> verwaltet<ph name="END_LINK" /></translation>
 <translation id="1366177842110999534">Sie können auf Ihrem <ph name="DEVICE_TYPE" /> Linux-Tools, -Editoren und -IDEs nutzen. &lt;a target="_blank" href="<ph name="URL" />"&gt;Weitere Informationen&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Datei auswählen</translation>
+<translation id="1370749010280229230">Es gibt ein Problem mit dem Display, das mit dem Dock verbunden ist</translation>
 <translation id="1371301976177520732">Von all Ihren Geräten auf Lesezeichen, Passwörter, den Verlauf und andere Funktionen zugreifen</translation>
 <translation id="1372841398847029212">Mit meinem Konto synchronisieren</translation>
 <translation id="1374844444528092021">Das vom Netzwerk "<ph name="NETWORK_NAME" />" benötigte Zertifikat ist entweder nicht installiert oder nicht mehr gültig. Bitte fordern Sie ein neues Zertifikat an und versuchen Sie es erneut.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Webseite, Einzeldatei</translation>
 <translation id="1451917004835509682">Betreuten Nutzer hinzufügen</translation>
 <translation id="1454223536435069390">Screenshot &amp;erstellen</translation>
+<translation id="1458243790901188746">{0,plural, =1{Ordner: <ph name="DIRECTORIES" />}other{Ordner: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Von Erweiterungen hinzugefügte Suchmaschinen</translation>
 <translation id="146000042969587795">Dieser Frame wurde gesperrt, weil er unsicheren Inhalt enthält.</translation>
 <translation id="146219525117638703">ONC-Status</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">Eingabeoptionen anzeigen</translation>
 <translation id="1651008383952180276">Sie müssen zweimal dieselbe Passphrase eingeben</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Fügen Sie den Drucker zu Google Cloud Print hinzu, damit Sie von überall aus drucken können.}other{Fügen Sie # Drucker zu Google Cloud Print hinzu, damit Sie von überall aus drucken können.}}</translation>
+<translation id="1656528038316521561">Deckkraft des Hintergrunds</translation>
 <translation id="1657406563541664238">Zur Verbesserung von <ph name="PRODUCT_NAME" /> Nutzungsstatistiken und Absturzberichte automatisch an Google senden</translation>
 <translation id="1658424621194652532">Diese Seite greift auf Ihr Mikrofon zu.</translation>
 <translation id="1660204651932907780">Wiedergabe von Ton auf Websites zulassen (empfohlen)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> möchte den Hersteller und das Modell Ihres Sicherheitsschlüssels aufrufen</translation>
 <translation id="1679068421605151609">Entwicklertools</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Möchten Sie den Bildschirm wirklich schließen?</translation>
 <translation id="167983332380191032">Der Verwaltungsdienst hat einen HTTP-Fehler gemeldet.</translation>
 <translation id="1680849702532889074">Bei der Installation Ihrer Linux-Anwendung ist ein Fehler aufgetreten.</translation>
 <translation id="16815041330799488">Websites keinen Zugriff auf Texte und Bilder gewähren, die sich in der Zwischenablage befinden</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">Kennzeichnung für geschützte Medien</translation>
 <translation id="175196451752279553">Geschlossenen Tab wieder öffn&amp;en</translation>
 <translation id="1753905327828125965">Meistbesucht</translation>
+<translation id="1755601632425835748">Textgröße</translation>
 <translation id="1756681705074952506">Eingabemethode</translation>
 <translation id="1757301747492736405">Deinstallation ausstehend</translation>
 <translation id="175772926354468439">Design aktivieren</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">&amp;Kleiner</translation>
 <translation id="1919345977826869612">Werbung</translation>
 <translation id="1919814239594435008">Plug-in ohne Sandbox zugelassen</translation>
+<translation id="1920390473494685033">Kontakte</translation>
 <translation id="1921050530041573580">Smartphone mit Messages koppeln</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" /> intelligent nutzen mit Google</translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">Inkognito-Tab: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Das Plug-in <ph name="PEPPER_PLUGIN_NAME" /> auf <ph name="PEPPER_PLUGIN_DOMAIN" /> möchte auf Ihren Computer zugreifen</translation>
 <translation id="2178614541317717477">Kompromittierung der Zertifizierungsstelle</translation>
+<translation id="2179849162388791084">Es konnten keine Anmeldedaten von Ihrem Sicherheitsschlüssel abgerufen werden.</translation>
 <translation id="218070003709087997">Geben Sie eine Zahl ein, um die Anzahl der zu druckenden Exemplare festzulegen (1 bis 999).</translation>
 <translation id="2184515124301515068">Chrome die Entscheidung überlassen, wann Audioinhalte auf Websites abgespielt werden (empfohlen)</translation>
 <translation id="2187895286714876935">Fehler beim Importieren des Serverzertifikats</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">Alle Cookies und Websitedaten</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 Element kopiert}other{# Elemente kopiert}}</translation>
 <translation id="2278562042389100163">Browserfenster öffnen</translation>
-<translation id="2279874276457403668">Es kann jeweils nur eine Sitzung erstellt werden.</translation>
 <translation id="2280486287150724112">Rechter Rand</translation>
 <translation id="2282146716419988068">GPU-Verarbeitung</translation>
 <translation id="2282155092769082568">URL für Autokonfiguration:</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">Notizen auf dem Sperrbildschirm werden automatisch in <ph name="LOCK_SCREEN_APP_NAME" /> gespeichert. Ihre letzte Notiz wird weiterhin auf dem Sperrbildschirm angezeigt.</translation>
 <translation id="2353297238722298836">Kamera- und Mikrofonnutzung zulässig</translation>
 <translation id="2356070529366658676">Fragen</translation>
-<translation id="2357949918965361754">Sie können diese Funktion nutzen, um Inhalte aus Chrome auf Ihrem Fernseher oder auf anderen Geräten anzusehen.</translation>
 <translation id="2359345697448000899">Klicken Sie zum Verwalten Ihrer Erweiterungen im Menü "Tools" auf "Erweiterungen".</translation>
 <translation id="2359808026110333948">Weiter</translation>
 <translation id="236117173274098341">Optimieren</translation>
@@ -961,6 +967,7 @@
 <translation id="2436720498717686157">Ihre Organisation verlangt, dass dieses Gerät umgehend aktualisiert wird</translation>
 <translation id="2439545803278355377">Geben Sie Ihre neue PIN ein. Eine PIN muss aus mindestens vier Zeichen bestehen und kann Buchstaben, Zahlen und andere Zeichen enthalten.</translation>
 <translation id="2440604414813129000">Quelltext an&amp;zeigen</translation>
+<translation id="2442916515643169563">Textschatten</translation>
 <translation id="2444119669991608829">Diese Seite ist nicht auf <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Stammverzeichnis der Erweiterung ist erforderlich.</translation>
 <translation id="2445484935443597917">Neues Profil erstellen</translation>
@@ -1175,6 +1182,7 @@
 <translation id="2738771556149464852">Nicht nach</translation>
 <translation id="2739191690716947896">Fehlerbehebung</translation>
 <translation id="2739240477418971307">Einstellungen für Zugänglichkeit ändern</translation>
+<translation id="274029851662193272">Vertieft</translation>
 <translation id="2740393541869613458">von dem betreuten Nutzer besuchte Websites überprüfen und</translation>
 <translation id="2741912629735277980">UI auf dem Anmeldebildschirm anzeigen</translation>
 <translation id="274290345632688601">Linux-Apps und -Dateien werden wiederhergestellt</translation>
@@ -1223,6 +1231,7 @@
 <translation id="2806891468525657116">Verknüpfung ist bereits vorhanden</translation>
 <translation id="2807517655263062534">Hier werden heruntergeladene Dateien angezeigt</translation>
 <translation id="2809586584051668049">und <ph name="NUMBER_ADDITIONAL_DISABLED" /> weitere</translation>
+<translation id="2812049959647166806">Thunderbolt wird nicht unterstützt</translation>
 <translation id="2812944337881233323">Melden Sie sich ab und dann wieder an</translation>
 <translation id="2812989263793994277">Keine Bilder anzeigen</translation>
 <translation id="281390819046738856">Die Anfrage konnte nicht signiert werden.</translation>
@@ -1245,7 +1254,6 @@
 <translation id="2841837950101800123">Anbieter</translation>
 <translation id="2844169650293029770">USB-C-Gerät (Port vorne links)</translation>
 <translation id="2845382757467349449">Lesezeichenleiste immer anzeigen</translation>
-<translation id="2847759467426165163">Übertragen an</translation>
 <translation id="284805635805850872">Schädliche Software entfernen?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Fehler bei der Bereinigung</translation>
@@ -1292,6 +1300,7 @@
 Servernachricht: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Mediengalerie nach Verzeichnis hinzufügen</translation>
 <translation id="2910318910161511225">Stellen Sie eine Verbindung zu einem Netzwerk her und versuchen Sie es noch einmal</translation>
+<translation id="2910518940971897750">In Originaldatei speichern</translation>
 <translation id="2913331724188855103">Websites dürfen Cookiedaten speichern und lesen (empfohlen)</translation>
 <translation id="2915102088417824677">Aktivitätsprotokoll ansehen</translation>
 <translation id="2915873080513663243">Automatischer Scan</translation>
@@ -1356,12 +1365,14 @@
 <translation id="3013291976881901233">MIDI-Geräte</translation>
 <translation id="3015639418649705390">Jetzt neu starten</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> konnte nicht automatisch konfiguriert werden. Bitte legen Sie erweiterte Einstellungen für den Drucker fest.</translation>
+<translation id="3016381065346027039">Keine Protokolleinträge</translation>
 <translation id="3016641847947582299">Komponente aktualisiert</translation>
 <translation id="3016780570757425217">Ihren Standort abrufen</translation>
 <translation id="3017079585324758401">Hintergrund</translation>
 <translation id="3020183492814296499">Tastenkombinationen</translation>
 <translation id="3020990233660977256">Seriennummer: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Schmetterling</translation>
+<translation id="3021408157810018664">Änderungen in Originaldateien speichern?</translation>
 <translation id="3021426244864538700">Zugriff auf die Daten dieser Website</translation>
 <translation id="3021678814754966447">Frame-Quelltext &amp;anzeigen</translation>
 <translation id="3022978424994383087">Nicht verstanden.</translation>
@@ -1454,6 +1465,7 @@
 <translation id="3170072451822350649">Sie können die Anmeldung auch überspringen und <ph name="LINK_START" />als Gast surfen<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Eine Website greift auf Ihre Videoeingaben zu</translation>
 <translation id="3177909033752230686">Sprache der Seite:</translation>
+<translation id="3179982752812949580">Schriftart für Text</translation>
 <translation id="3181954750937456830">Safe Browsing (mich und mein Gerät vor schädlichen Websites schützen)</translation>
 <translation id="3182749001423093222">Rechtschreibprüfung</translation>
 <translation id="3183139917765991655">Profilimport</translation>
@@ -1506,7 +1518,6 @@
 <translation id="3275778913554317645">In neuem Fenster öffnen</translation>
 <translation id="3278001907972365362">Ihre Google-Konten erfordern Aufmerksamkeit</translation>
 <translation id="3279230909244266691">Der Vorgang kann einige Minuten dauern. Virtuelle Maschine wird gestartet.</translation>
-<translation id="3279741024917655738">Zeigen von Vollbildvideos ist aktiviert</translation>
 <translation id="3280237271814976245">Speichern &amp;unter...</translation>
 <translation id="3280243678470289153">In Chrome bleiben</translation>
 <translation id="3281892622610078515">Dateien und Programme, die unter Quarantäne gestellt werden:</translation>
@@ -1528,7 +1539,7 @@
 <translation id="3303855915957856445">Keine Suchergebnisse gefunden</translation>
 <translation id="3305389145870741612">Die Formatierung kann einige Sekunden dauern. Bitte warten...</translation>
 <translation id="3305661444342691068">PDF-Vorschau</translation>
-<translation id="3306684685104080068">Streaming an cloudbasierte Dienste wie Google Hangouts aktivieren.</translation>
+<translation id="3307871847038842490">Diese Seite darf in Originaldateien speichern.</translation>
 <translation id="3308006649705061278">Organisationseinheit (OU)</translation>
 <translation id="3308116878371095290">Diese Seite konnte keine Cookies setzen.</translation>
 <translation id="3308134619352333507">Schaltfläche ausblenden</translation>
@@ -1634,7 +1645,6 @@
 <translation id="3462413494201477527">Kontoeinrichtung abbrechen?</translation>
 <translation id="3464012987031883895">Eine Website greift auf Ihre Audioeingaben zu</translation>
 <translation id="346431825526753">Dies ist ein Konto für Kinder, das von <ph name="CUSTODIAN_EMAIL" /> verwaltet wird.</translation>
-<translation id="3468275649641751422">Video- oder Audiodatei streamen</translation>
 <translation id="3468999815377931311">Android-Smartphone</translation>
 <translation id="3470442499439619530">Diesen Nutzer entfernen</translation>
 <translation id="3473479545200714844">Lupe</translation>
@@ -1657,6 +1667,7 @@
 <translation id="3496213124478423963">Verkleinern</translation>
 <translation id="3497560059572256875">Doodle teilen</translation>
 <translation id="3505030558724226696">Gerätezugriff aufheben</translation>
+<translation id="3505635633742443645">Der HDMI-Port Ihres Docks kann nicht verwendet werden, wenn der USB Typ-C-Port für die Videoausgabe genutzt wird. Verwenden Sie für eines der Displays einen anderen Port.</translation>
 <translation id="3507421388498836150">Aktuelle Berechtigungen für "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Noch einmal nach Bluetooth-Geräten suchen</translation>
 <translation id="3508920295779105875">Anderen Ordner wählen...</translation>
@@ -1709,6 +1720,7 @@
 <translation id="3576324189521867626">Installation war erfolgreich</translation>
 <translation id="3578594933904494462">Der Inhalt dieses Tabs wird geteilt.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; möchte den Drucker &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; für eine Gruppe freigeben, deren Inhaber Sie sind: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Falls Sie zustimmen, können alle Gruppenmitglieder diesen Drucker nutzen.</translation>
+<translation id="357889014807611375">Kostenpflichtiges WLAN</translation>
 <translation id="3584169441612580296">Fotos, Musik und andere Medien auf Ihrem Computer lesen und ändern</translation>
 <translation id="3587482841069643663">Alle</translation>
 <translation id="358796204584394954">Geben Sie zur Kopplung diesen Code auf "<ph name="DEVICE_NAME" />" ein:</translation>
@@ -1719,6 +1731,7 @@
 <translation id="359283478042092570">Anmelden</translation>
 <translation id="3593965109698325041">Beschränkungen für Zertifikatsnamen</translation>
 <translation id="3596235046596950091">Clouddienste aktivieren</translation>
+<translation id="3599221874935822507">Erhöht</translation>
 <translation id="3599863153486145794">Löscht den Verlauf bei allen angemeldeten Geräten. Unter <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> sind möglicherweise weitere Arten von Browserverlaufsdaten für Ihr Google-Konto gespeichert.</translation>
 <translation id="3600051066689725006">Webanfrageinformationen</translation>
 <translation id="3600792891314830896">Websites stummschalten, die Ton wiedergeben</translation>
@@ -1733,6 +1746,7 @@
 <translation id="3612673635130633812">Heruntergeladen von &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">"<ph name="FOLDER_NAME" />" anzeigen</translation>
 <translation id="3613422051106148727">In &amp;neuem Tab öffnen</translation>
+<translation id="3615073365085224194">Berühren Sie den Fingerabdrucksensor mit dem Finger</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Browserdaten löschen...</translation>
 <translation id="3617891479562106823">Hintergründe sind nicht verfügbar. Bitte versuchen Sie es später noch einmal.</translation>
@@ -1814,7 +1828,6 @@
 <translation id="3719826155360621982">Startseite</translation>
 <translation id="3720996970802414353">Trotzdem wechseln</translation>
 <translation id="3722108462506185496">Fehler beim Starten des Dienstes für die virtuelle Maschine. Bitte versuchen Sie es noch einmal.</translation>
-<translation id="3723158278575423087">Herzlich willkommen bei Cast in Chromium!</translation>
 <translation id="3725367690636977613">Seiten</translation>
 <translation id="3726137731714254362">Wenn Sie Ordner von hier entfernen, wird die Freigabe beendet, die Dateien werden aber nicht gelöscht.</translation>
 <translation id="3727148787322499904">Änderungen dieser Einstellung wirken sich auf alle freigegebenen Netzwerke aus</translation>
@@ -1849,7 +1862,6 @@
 <translation id="3764314093345384080">Detaillierte Build-Informationen</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Kommunikation mit einem USB-Gerät}other{Kommunikation mit # USB-Geräten}}</translation>
 <translation id="3765246971671567135">Richtlinie für den Offlinedemomodus konnte nicht verarbeitet werden.</translation>
-<translation id="3766223500670287046">Remote-Bildschirm</translation>
 <translation id="3768037234834996183">Ihre Einstellungen werden synchronisiert...</translation>
 <translation id="377050016711188788">Eiscreme</translation>
 <translation id="3771294271822695279">Videodateien</translation>
@@ -1922,7 +1934,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Anheben und erneut berühren</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Synchronisierung pausiert</translation>
-<translation id="3862134173397075045">Herzlich willkommen bei Cast in Chrome!</translation>
 <translation id="3862693525629180217">Über integrierten Sensor bestätigen</translation>
 <translation id="3862788408946266506">App mit Manifest-Attribut "kiosk_only" muss im Chrome OS-Kioskmodus installiert werden</translation>
 <translation id="3865414814144988605">Auflösung</translation>
@@ -1971,6 +1982,7 @@
 <translation id="3926002189479431949">Telefon für Smart Lock geändert</translation>
 <translation id="3927932062596804919">Ablehnen</translation>
 <translation id="3930737994424905957">Suche nach Geräten läuft</translation>
+<translation id="3930968231047618417">Hintergrundfarbe</translation>
 <translation id="3933283459331715412">Gelöschtes Passwort wiederherstellen für <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Audio in neuem Tab öffnen</translation>
 <translation id="3936925983113350642">Das gewählte Passwort wird später zur Wiederherstellung dieses Zertifikats benötigt. Bewahren Sie es an einem sicheren Ort auf.</translation>
@@ -1990,6 +2002,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Aus Internet Explorer importiert</translation>
 <translation id="3950820424414687140">Anmelden</translation>
+<translation id="3950828138786918475">Dieser Tab darf den Inhalt eines Ordners auf Ihrem Gerät lesen.</translation>
 <translation id="3954354850384043518">Wird heruntergeladen</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">Es sind keine kürzlich erfassten WebRTC-Ereignisprotokolle vorhanden.</translation>
@@ -2008,6 +2021,7 @@
 <translation id="397105322502079400">Wird berechnet...</translation>
 <translation id="3975565978598857337">Fehler bei Verbindungsaufbau mit Server für diesen Bereich</translation>
 <translation id="397703832102027365">Aktualisierung wird abgeschlossen...</translation>
+<translation id="3977886311744775419">Bei diesem Netzwerktyp werden keine automatischen Updates heruntergeladen. Sie können aber manuell nach Updates suchen.</translation>
 <translation id="3979395879372752341">Neue Erweiterung hinzugefügt (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> aktivieren</translation>
 <translation id="3981760180856053153">Eingegebener Speichertyp ist ungültig.</translation>
@@ -2147,6 +2161,7 @@
 <translation id="4194570336751258953">Touchpad-Klick aktivieren</translation>
 <translation id="4195643157523330669">In neuem Tab öffnen</translation>
 <translation id="4195814663415092787">Zuletzt angesehene Seiten öffnen</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> kann Ihre Änderungen direkt in den unten angegebenen Dateien speichern. Diese Website kann Änderungen nur speichern, während dieser Tab geöffnet ist.</translation>
 <translation id="4198146608511578238">Halten Sie einfach das Launcher-Symbol gedrückt, um mit Ihrem Google Assistant zu sprechen.</translation>
 <translation id="4200689466366162458">Benutzerdefinierte Wörter</translation>
 <translation id="4200983522494130825">Neuer &amp;Tab</translation>
@@ -2194,7 +2209,6 @@
 <translation id="4267953847983678297">Verbindung mit dem Mobilfunknetz automatisch herstellen</translation>
 <translation id="4268025649754414643">Schlüsselverschlüsselung</translation>
 <translation id="4270393598798225102">Version <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Keine Übereinstimmungen</translation>
 <translation id="4275663329226226506">Medien</translation>
 <translation id="4275830172053184480">Gerät neu starten</translation>
 <translation id="4278101229438943600">Google Assistant ist bereit</translation>
@@ -2343,6 +2357,7 @@
 <translation id="4533985347672295764">CPU-Zeit</translation>
 <translation id="4534661889221639075">Versuchen Sie es noch einmal.</translation>
 <translation id="4535127706710932914">Standardprofil</translation>
+<translation id="4535767533210902251">Der Fingerabdrucksensor ist die Taste rechts oben auf der Tastatur. Berühren Sie sie leicht mit dem Finger.</translation>
 <translation id="4538684596480161368">Plug-ins ohne Sandbox auf <ph name="HOST" /> immer blockieren</translation>
 <translation id="4538792345715658285">Durch Unternehmensrichtlinie installiert</translation>
 <translation id="4542520061254486227">Ihre Daten auf <ph name="WEBSITE_1" /> und <ph name="WEBSITE_2" /> lesen</translation>
@@ -2376,6 +2391,7 @@
 <translation id="457386861538956877">Mehr...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Bluetooth-Gerät koppeln</translation>
+<translation id="4578012756826807359">Ihre Anmeldedaten wurden gelöscht.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> kann nicht gestreamt werden.</translation>
 <translation id="4581774856936278355">Fehler beim Wiederherstellen von Linux</translation>
 <translation id="4582563038311694664">Alle Einstellungen zurücksetzen</translation>
@@ -2493,7 +2509,6 @@
 <translation id="4763830802490665879">Cookies von mehreren Websites werden beim Beenden gelöscht.</translation>
 <translation id="4765582662863429759">Zulassen, dass Android Messages SMS von Ihrem Smartphone an Ihr Chromebook übermittelt</translation>
 <translation id="4768332406694066911">Ihr Name ist in den Zertifikaten folgender Organisationen angegeben</translation>
-<translation id="4772404146526168240">Beide Bildschirme</translation>
 <translation id="4776146737004271126">Android-Einstellungen öffnen</translation>
 <translation id="4776917500594043016">Passwort für <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Google Play Store</translation>
@@ -2601,7 +2616,6 @@
 <translation id="4927846293686536410">Melden Sie sich an, um Ihre Lesezeichen, Ihren Verlauf und Ihre anderen Einstellungen auf allen Ihren Geräten zu sehen. Sie werden auch automatisch in Ihren Google-Diensten angemeldet.</translation>
 <translation id="4929386379796360314">Druckziele</translation>
 <translation id="4930714375720679147">Aktivieren</translation>
-<translation id="4931132176527519925">Immer spiegeln</translation>
 <translation id="4932733599132424254">Datum</translation>
 <translation id="4933484234309072027">auf <ph name="URL" /> eingebettet</translation>
 <translation id="493571969993549666">Betreuten Nutzer hinzufügen</translation>
@@ -2641,6 +2655,7 @@
 <translation id="4992066212339426712">Stummschaltung aufheben</translation>
 <translation id="4992458225095111526">Powerwash bestätigen</translation>
 <translation id="4992473555164495036">Ihr Administrator hat die verfügbaren Eingabemethoden eingeschränkt.</translation>
+<translation id="4992866843815555470">Ihr Dock muss gewartet werden. Wenn der Lüfter nicht funktioniert, wird es deaktiviert.</translation>
 <translation id="4992926179187649719">"Ok Google" aktivieren</translation>
 <translation id="4994474651455208930">Registrierung von Websites als Standard-Handler für Protokolle zulassen</translation>
 <translation id="4994754230098574403">Wird eingerichtet</translation>
@@ -2779,7 +2794,6 @@
 <translation id="5233231016133573565">Prozess-ID</translation>
 <translation id="5233638681132016545">Neuer Tab</translation>
 <translation id="5233736638227740678">&amp;Einfügen</translation>
-<translation id="5234764350956374838">Schließen</translation>
 <translation id="5235050375939235066">App deinstallieren?</translation>
 <translation id="5235750401727657667">Seite ändern, die beim Öffnen eines neuen Tabs angezeigt wird</translation>
 <translation id="5238278114306905396">Die App "<ph name="EXTENSION_NAME" />" wurde automatisch entfernt.</translation>
@@ -2844,6 +2858,7 @@
 <translation id="5319359161174645648">Google empfiehlt Chrome</translation>
 <translation id="532247166573571973">Der Server ist eventuell nicht erreichbar. Versuchen Sie es später noch einmal.</translation>
 <translation id="5324780743567488672">Zeitzone automatisch anhand des Standorts einstellen</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – darf in den Originaldateien speichern</translation>
 <translation id="5327248766486351172">Name</translation>
 <translation id="5327570636534774768">Dieses Gerät ist für die Verwaltung durch eine andere Domain markiert. Heben Sie die Bereitstellung von dieser Domain aus auf, bevor Sie den Demomodus einrichten.</translation>
 <translation id="532943162177641444">Tippen Sie auf die Benachrichtigung auf Ihrem <ph name="PHONE_NAME" />, um einen mobilen Hotspot einzurichten, den dieses Gerät nutzen kann.</translation>
@@ -2986,7 +3001,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> möchte:</translation>
 <translation id="5534304873398226603">Foto oder Video verwerfen</translation>
 <translation id="5535941515421698170">Auch vorhandene Daten von diesem Gerät entfernen</translation>
-<translation id="5537725057119320332">Übertragen</translation>
 <translation id="5539221284352502426">Das eingegebene Passwort wurde vom Server zurückgewiesen. Mögliche Ursachen: Das Passwort ist zu kurz. Das Passwort muss Zahlen oder Symbole enthalten. Das Passwort muss sich von vorherigen Passwörtern unterscheiden.</translation>
 <translation id="5541687815721799001">App verwenden</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3295,7 +3309,6 @@
 <translation id="5997337190805127100">Weitere Informationen zum Websitezugriff</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> Ergebnisse für "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Bevorzugte Stimmen</translation>
-<translation id="6005695835120147974">Media Router</translation>
 <translation id="6006484371116297560">Klassisch</translation>
 <translation id="6007240208646052708">Die Sprachsuche ist nicht in Ihrer Sprache verfügbar.</translation>
 <translation id="6009781704028455063">Integrierter Sensor</translation>
@@ -3495,7 +3508,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Neuer Drucker in Ihrem Netzwerk gefunden}other{Neue Drucker in Ihrem Netzwerk gefunden}}</translation>
 <translation id="6286708577777130801">Gespeicherte Passwortdetails</translation>
 <translation id="6289452883081499048">Personalisierte Google-Dienste wie Play</translation>
-<translation id="6290556621549272952">Sie können diese Funktion nutzen, um Inhalte aus Chromium auf Ihrem Fernseher oder auf anderen Geräten anzusehen.</translation>
 <translation id="6291949900244949761">Nachfragen, wenn eine Website auf USB-Geräte zugreifen möchte (empfohlen)</translation>
 <translation id="6291953229176937411">Im Finder &amp;zeigen</translation>
 <translation id="6295158916970320988">Alle Websites</translation>
@@ -3559,6 +3571,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />Systeminformationen<ph name="END_LINK1" /> und <ph name="BEGIN_LINK2" />Messwerte<ph name="END_LINK2" /> senden</translation>
 <translation id="6396988158856674517">Verwendung von Bewegungssensoren für Websites blockieren</translation>
 <translation id="6397094776139756010">Synchronisierungs- und Personalisierungsoptionen</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> wird in der Lage sein, Ihre Änderungen direkt in den Dateien im unten angegebenen Ordner zu speichern. Diese Website kann Änderungen nur speichern, während dieser Tab geöffnet ist.</translation>
 <translation id="6398715114293939307">Google Play Store entfernen</translation>
 <translation id="6398765197997659313">Vollbildmodus beenden</translation>
 <translation id="6399774419735315745">Spionin</translation>
@@ -3603,11 +3616,13 @@
 <translation id="6455264371803474013">Auf bestimmten Websites</translation>
 <translation id="6455894534188563617">&amp;Neuer Ordner</translation>
 <translation id="6456394469623773452">In Ordnung</translation>
+<translation id="6456955391422100996">Werbeanzeige entfernt.</translation>
 <translation id="645705751491738698">JavaScript weiterhin blockieren</translation>
 <translation id="6458701200018867744">Upload fehlgeschlagen (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Auswahl suchen</translation>
 <translation id="6459799433792303855">Aktives Fenster auf anderen Bildschirm verschoben.</translation>
 <translation id="6460601847208524483">Nächste Übereinstimmung suchen</translation>
+<translation id="6461170143930046705">Netzwerke werden gesucht…</translation>
 <translation id="6463795194797719782">B&amp;earbeiten</translation>
 <translation id="6466988389784393586">&amp;Alle Lesezeichen öffnen</translation>
 <translation id="6467304607960172345">Vollbildvideos optimieren</translation>
@@ -3646,6 +3661,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Sie sind mit einem <ph name="NETWORK_TYPE" />-Netzwerk verbunden.</translation>
 <translation id="6527303717912515753">Teilen</translation>
 <translation id="6528513914570774834">Anderen Nutzern des Geräts erlauben, dieses Netzwerk zu verwenden</translation>
 <translation id="652948702951888897">Chrome-Verlauf</translation>
@@ -3742,7 +3758,6 @@
 <translation id="6680650203439190394">Geschwindigkeit</translation>
 <translation id="6681668084120808868">Foto machen</translation>
 <translation id="6681964764822470072"><ph name="APP_NAME" /> wird deinstalliert.</translation>
-<translation id="6685083257944113180">Stopp, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Google Play öffnen</translation>
 <translation id="6686490380836145850">Tabs rechts schließen</translation>
 <translation id="6686817083349815241">Passwort speichern</translation>
@@ -3850,6 +3865,7 @@
 <translation id="6845038076637626672">Maximiert öffnen</translation>
 <translation id="6845325883481699275">Zur Verbesserung der Sicherheit von Chrome beitragen</translation>
 <translation id="6848388270925200958">Zurzeit können einige Ihrer Karten nur auf diesem Gerät verwendet werden</translation>
+<translation id="6850286078059909152">Schriftfarbe</translation>
 <translation id="6851497530878285708">App aktiviert</translation>
 <translation id="6853388645642883916">Updater im Ruhemodus</translation>
 <translation id="68541483639528434">Andere Tabs schließen</translation>
@@ -3899,7 +3915,6 @@
 <translation id="6923132443355966645">Scrollen/Klicken</translation>
 <translation id="6923633482430812883">Fehler beim Bereitstellen der Freigabe. Der Dateiserver, zu dem Sie eine Verbindung herstellen, muss SMBv2 oder höher unterstützen.</translation>
 <translation id="6930036377490597025">Externer Sicherheitsschlüssel oder integrierter Sensor</translation>
-<translation id="6930242544192836755">Dauer</translation>
 <translation id="693807610556624488">Der Schreibvorgang auf das folgende Gerät überschreitet die maximal zulässige Attributlänge: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Melden Sie sich in <ph name="TOKEN_NAME" /> an, damit Sie mit Ihrem Zertifikat bei <ph name="HOST_NAME" /> authentifiziert werden können.</translation>
 <translation id="6943176775188458830">Druckvorgang abbrechen</translation>
@@ -3913,6 +3928,7 @@
 <translation id="6951153907720526401">Zahlungs-Handler</translation>
 <translation id="6951663584153258142">Ihre Organisation verlangt, dass Sie dieses Gerät aktualisieren</translation>
 <translation id="6953878494808481632">Weitere Informationen</translation>
+<translation id="6953916367503892689">{0,plural, =1{Datei: <ph name="FILES" />}other{Dateien: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Pop-up prüfen</translation>
 <translation id="6957044667612803194">Der Sicherheitsschlüssel unterstützt keine PINs</translation>
 <translation id="6957231940976260713">Name des Dienstes</translation>
@@ -4125,7 +4141,6 @@
 <translation id="7254554697254365959">Diese Seite konnte nicht übersetzt werden.</translation>
 <translation id="7254951428499890870">Soll "<ph name="APP_NAME" />" wirklich im Diagnosemodus gestartet werden?</translation>
 <translation id="7255002516883565667">Derzeit kann eine Ihrer Karten nur auf diesem Gerät verwendet werden</translation>
-<translation id="7255220508626648026">Wird gestreamt: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Tippen Sie noch einmal auf Ihren Sicherheitsschlüssel, um das Zurücksetzen zu bestätigen. Damit werden alle auf dem Sicherheitsschlüssel gespeicherten Informationen und die zugehörige PIN gelöscht.</translation>
 <translation id="7255935316994522020">Übernehmen</translation>
 <translation id="7256069762010468647">Die Website verwendet Ihre Kamera</translation>
@@ -4259,6 +4274,7 @@
 <translation id="7456142309650173560">Dev</translation>
 <translation id="7456847797759667638">Adresse öffnen...</translation>
 <translation id="7458168200501453431">Verwendet dieselbe Rechtschreibprüfung, die auch in der Google-Suche zum Einsatz kommt. Der in den Browser eingegebene Text wird an Google gesendet.</translation>
+<translation id="7460045493116006516">Derzeit installiertes Design</translation>
 <translation id="7461924472993315131">Anpinnen</translation>
 <translation id="746216226901520237">Das nächste Mal wird Ihr <ph name="DEVICE_TYPE" /> von Ihrem Smartphone entsperrt. Sie können Smart Lock in den Einstellungen deaktivieren.</translation>
 <translation id="7463006580194749499">Person hinzufügen</translation>
@@ -4318,6 +4334,7 @@
 <translation id="7554791636758816595">Neuer Tab</translation>
 <translation id="7556033326131260574">Smart Lock konnte Ihr Konto nicht bestätigen. Bitte geben Sie Ihr Passwort ein.</translation>
 <translation id="7556242789364317684"><ph name="SHORT_PRODUCT_NAME" /> kann Ihre Einstellungen nicht wiederherstellen. Zur Behebung des Fehlers muss Ihr Gerät von <ph name="SHORT_PRODUCT_NAME" /> per Powerwash zurückgesetzt werden.</translation>
+<translation id="7559444627302317199">Prüfen Sie die Netzwerkverbindung und versuchen Sie es noch einmal.</translation>
 <translation id="7559719679815339381">Die Kiosk-App wird gerade aktualisiert, bitte warten. Entfernen Sie den USB-Stick nicht.</translation>
 <translation id="7561196759112975576">Immer</translation>
 <translation id="7563991800558061108">Wenn Sie dieses Problems beheben möchten, müssen Sie sich auf der Anmeldeseite in Ihrem
@@ -4560,7 +4577,6 @@
 <translation id="7887334752153342268">Duplizieren</translation>
 <translation id="7887864092952184874">Bluetooth-Maus ist gekoppelt</translation>
 <translation id="7889565820482017512">Anzeigegröße</translation>
-<translation id="7889966925761734854">Suche</translation>
 <translation id="7893008570150657497">Auf Fotos, Musik und andere Medien auf Ihrem Computer zugreifen</translation>
 <translation id="7893153962594818789">Bluetooth ist auf diesem <ph name="DEVICE_TYPE" /> deaktiviert. Geben Sie Ihr Passwort ein und aktivieren Sie Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Standard)</translation>
@@ -4568,7 +4584,6 @@
 <translation id="7898627924844766532">In Symbolleiste behalten</translation>
 <translation id="7898725031477653577">Immer übersetzen</translation>
 <translation id="790040513076446191">Datenschutzeinstellungen bearbeiten</translation>
-<translation id="7902874111237641165">Smooth Motion [Beta]</translation>
 <translation id="7903345046358933331">Die Seite reagiert nicht mehr. Sie können warten, bis sie wieder reagiert, oder sie schließen.</translation>
 <translation id="7903742244674067440">In Ihren gespeicherten Zertifikaten sind folgende Zertifizierungsstellen angegeben</translation>
 <translation id="7903925330883316394">Dienstprogramm: <ph name="UTILITY_TYPE" /></translation>
@@ -4680,6 +4695,7 @@
 <translation id="8037117027592400564">Alle mit künstlicher Sprachausgabe gesprochenen Texte lesen</translation>
 <translation id="8037357227543935929">Nachfragen (Standardeinstellung)</translation>
 <translation id="803771048473350947">Datei</translation>
+<translation id="8042142357103597104">Deckkraft von Text</translation>
 <translation id="8044899503464538266">Langsam</translation>
 <translation id="8045253504249021590">Die Synchronisierung wurde über das Google Dashboard gestoppt.</translation>
 <translation id="8045923671629973368">Anwendungs-ID oder Webstore-URL eingeben</translation>
@@ -4716,7 +4732,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Sie können diesen Dienst in den Einstellungen deaktivieren.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Die PINs stimmen nicht überein</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> verwendet Proxy-Einstellungen einer Erweiterung</translation>
-<translation id="8099495042588009598">Weitere Berechtigungen</translation>
 <translation id="8101987792947961127">Powerwash beim nächsten Neustart erforderlich</translation>
 <translation id="8102159139658438129">Rufen Sie die <ph name="LINK_BEGIN" />Einstellungen<ph name="LINK_END" /> auf, um Optionen für Ihr verbundenes Smartphone zu sehen.</translation>
 <translation id="8104696615244072556">Powerwash für Ihr <ph name="IDS_SHORT_PRODUCT_NAME" />-Gerät ausführen und auf die vorherige Version zurücksetzen</translation>
@@ -4767,8 +4782,10 @@
     Meiner Meinung nach sollte diese Website nicht blockiert werden.</translation>
 <translation id="8184288427634747179">Zu <ph name="AVATAR_NAME" /> wechseln</translation>
 <translation id="8184318863960255706">Weitere Informationen</translation>
+<translation id="8184472985242519288">Einheitlich</translation>
 <translation id="8185331656081929126">Benachrichtigung anzeigen, wenn neue Drucker im Netzwerk gefunden werden</translation>
 <translation id="8186609076106987817">Die Datei konnte nicht gefunden werden.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> kann alle Dateien im unten angegebenen Ordner lesen. Diese Website kann Änderungen nur dann im Ordner speichern, wenn dieser Tab geöffnet ist.</translation>
 <translation id="8188389033983459049">Überprüfen Sie Ihre Geräteeinstellungen und aktivieren Sie Bluetooth, um fortzufahren</translation>
 <translation id="8190193592390505034">Verbindung zu <ph name="PROVIDER_NAME" /> wird hergestellt.</translation>
 <translation id="8191230140820435481">Apps, Erweiterungen und Designs verwalten</translation>
@@ -4872,8 +4889,6 @@
 <translation id="833986336429795709">App auswählen, um diesen Link zu öffnen</translation>
 <translation id="8342861492835240085">Sammlung auswählen</translation>
 <translation id="834290227245955730">Ungültige PIN. Noch <ph name="RETRIES" /> Versuche.</translation>
-<translation id="8343956361364550006">Verwenden Sie für die beste Video- oder Animationsqualität eine hohe Bandbreite.
-Andere Personen mit langsamen Verbindungen sehen Ihre Inhalte möglicherweise nicht.</translation>
 <translation id="8351419472474436977">Diese Erweiterung hat die Kontrolle über Ihre Proxyeinstellungen übernommen. Das bedeutet, dass sie sämtliche Onlineaktivitäten ändern, abbrechen oder überwachen kann. Wenn Sie nicht sicher sind, wie es zu dieser Änderung gekommen ist, war sie wahrscheinlich nicht beabsichtigt.</translation>
 <translation id="8351630282875799764">Akku lädt nicht</translation>
 <translation id="835238322900896202">Bei der Deinstallation ist ein Fehler aufgetreten. Führen Sie die Deinstallation über das Terminal durch.</translation>
@@ -4906,9 +4921,11 @@
 <translation id="839736845446313156">Registrieren</translation>
 <translation id="8398877366907290961">Trotzdem fortfahren</translation>
 <translation id="8400146488506985033">Nutzer verwalten</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> kann Ihre Änderungen direkt in den Dateien im unten angegebenen Ordner speichern. Diese Website kann Änderungen nur speichern, während dieser Tab geöffnet ist.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Zuerst fragen (empfohlen)</translation>
 <translation id="8418445294933751433">Al&amp;s Tab anzeigen</translation>
+<translation id="8418905021510211421">Diese Seite darf den Inhalt eines Ordners auf Ihrem Gerät lesen.</translation>
 <translation id="8419098111404128271">Suchergebnisse für "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Willkommen bei Ihrem <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Ändern</translation>
@@ -4928,6 +4945,7 @@
 <translation id="8438566539970814960">Suchanfragen und das Surfen verbessern</translation>
 <translation id="8439506636278576865">Übersetzung für Seiten in dieser Sprache anbieten</translation>
 <translation id="8440630305826533614">Linux-Apps</translation>
+<translation id="844241640324986723">Ihre Anmeldedaten konnten nicht gelöscht werden.</translation>
 <translation id="8443338615972234259">Bitte erstellen Sie jetzt ein neues Konto für Ihren betreuten Nutzer.</translation>
 <translation id="8446884382197647889">Weitere Informationen</translation>
 <translation id="8447409163267621480">Entweder Strg oder Alt integrieren</translation>
@@ -4943,8 +4961,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Dieser betreute Nutzer wurde möglicherweise vom Manager gelöscht oder deaktiviert. Wenden Sie sich an den Manager, wenn Sie sich weiterhin als dieser Nutzer anmelden möchten.</translation>
 <translation id="846374874681391779">Downloadleiste</translation>
-<translation id="8463807869745732775">"&gt;
-    Auf dem Sicherheitsschlüssel gespeicherte Anmeldedaten</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> deaktiviert.</translation>
 <translation id="8464132254133862871">Dieses Nutzerkonto ist nicht für diesen Dienst berechtigt.</translation>
 <translation id="8465252176946159372">Ungültig</translation>
@@ -5010,6 +5026,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" /> wird gedruckt</translation>
 <translation id="8569682776816196752">Keine Ziele gefunden</translation>
 <translation id="8571213806525832805">Letzte 4 Wochen</translation>
+<translation id="8573403125070227391">Diese Werbeanzeige erfordert auf Ihrem Gerät zu viele Ressourcen. Darum hat Chrome sie entfernt.</translation>
 <translation id="8574990355410201600">Ton auf <ph name="HOST" /> immer zulassen</translation>
 <translation id="8575286410928791436">Zum Beenden <ph name="KEY_EQUIVALENT" /> gedrückt halten</translation>
 <translation id="8578639784464423491">Maximale Länge: 99 Buchstaben</translation>
@@ -5033,13 +5050,13 @@
 <translation id="8609465669617005112">Nach oben</translation>
 <translation id="8610103157987623234">Fehlerhaftes Format. Bitte versuchen Sie es noch einmal.</translation>
 <translation id="8615618338313291042">Anonyme App: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Schlagschatten</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Roaming-Status</translation>
 <translation id="8620765578342452535">Netzwerkverbindungen konfigurieren</translation>
 <translation id="8621866727807194849">Schädliche Software wurde auf Ihrem Computer gefunden. Chrome ist gerade dabei, diese zu entfernen, Ihre Einstellungen wiederherzustellen und Erweiterungen zu deaktivieren. Danach wird Ihr Browser wieder wie gewohnt funktionieren.</translation>
 <translation id="8621979332865976405">Gesamten Bildschirm teilen</translation>
 <translation id="862542460444371744">&amp;Erweiterungen</translation>
-<translation id="8627151598708688654">Quelle auswählen</translation>
 <translation id="862727964348362408">Ausgesetzt</translation>
 <translation id="862750493060684461">CSS-Cache</translation>
 <translation id="8627795981664801467">Nur sichere Verbindungen</translation>
@@ -5093,6 +5110,7 @@
 <translation id="8688579245973331962">Wird Ihr Name nicht angezeigt?</translation>
 <translation id="8688591111840995413">Passwort ungültig</translation>
 <translation id="8688672835843460752">Verfügbar</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;Adresse öffnen...</translation>
 <translation id="869884720829132584">Apps-Menü</translation>
 <translation id="869891660844655955">Ablaufdatum</translation>
@@ -5256,6 +5274,7 @@
 <translation id="891365694296252935">Sie haben die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Dieses Gerät sendet momentan automatisch Diagnose- sowie Geräte- und App-Nutzungsdaten an Google. Ihr Kind wird mithilfe dieser Daten nicht identifiziert, sie helfen jedoch beispielsweise dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Diese Einstellung wird vom Inhaber erzwungen. Wenn zusätzlich die Einstellung "Web- &amp; App-Aktivitäten" für Ihr Kind aktiviert ist, werden diese Daten in seinem Google-Konto gespeichert. <ph name="BEGIN_LINK1" />Weitere Informationen<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Vorschläge werden geladen</translation>
 <translation id="8916476537757519021">Inkognito-Subframe: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – darf den Inhalt eines Ordners auf Ihrem Gerät lesen</translation>
 <translation id="8919275547519617350">Wenn Sie Ihre Passwörter auf allen Ihren Geräten verfügbar haben möchten, melden Sie sich an und aktivieren Sie die Synchronisierung.</translation>
 <translation id="8921366488406707015">Sicherheitsschlüssel wird geprüft…</translation>
 <translation id="8922013791253848639">Werbung auf dieser Website immer zulassen</translation>
@@ -5285,7 +5304,6 @@
 <translation id="8965037249707889821">Altes Passwort eingeben</translation>
 <translation id="8966870118594285808">Versehentlich geschlossenen Tab wieder öffnen</translation>
 <translation id="8967866634928501045">Zum Anzeigen drücken Sie Alt + Umschalttaste + A</translation>
-<translation id="8970203673128054105">Übertragungsmodusliste aufrufen</translation>
 <translation id="89720367119469899">Esc-Taste</translation>
 <translation id="8972513834460200407">Bitten Sie Ihren Netzwerkadministrator, zu überprüfen, ob Downloads von Google-Servern von der Firewall blockiert werden.</translation>
 <translation id="8973557916016709913">Zoomstufe entfernen</translation>
@@ -5435,6 +5453,7 @@
 <translation id="9214520840402538427">Hoppla! Bei der Initialisierung der Installationszeit-Attribute ist eine Zeitüberschreitung aufgetreten. Bitte wenden Sie sich an Ihren Support-Mitarbeiter.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" hinzugefügt</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> wird in der Lage sein, Ihre Änderungen direkt in der unten angegebenen Datei zu speichern. Diese Website kann Änderungen nur speichern, während dieser Tab geöffnet ist.</translation>
 <translation id="9218430445555521422">Als Standard festlegen</translation>
 <translation id="9219103736887031265">Bilder</translation>
 <translation id="9220525904950070496">Konto entfernen</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index 5f72b3c3..9102624c 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Σφάλμα έναρξης του εικονικού μηχανήματος. Προσπαθήστε ξανά.</translation>
 <translation id="1089439967362294234">Αλλαγή κωδικού πρόσβασης</translation>
 <translation id="1090126737595388931">Δεν εκτελούνται εφαρμογές φόντου</translation>
+<translation id="1090290614672149983">Αποθήκευση αλλαγών στο αρχικό αρχείο;</translation>
 <translation id="1090918500949388876">Μεταβείτε στον Βοηθό σας οποιαδήποτε στιγμή λέγοντας "Ok Google", ενώ η οθόνη σας είναι ενεργή</translation>
 <translation id="1091767800771861448">Πατήστε ESCAPE για παράλειψη (Μόνο για ανεπίσημες εκδόσεις).</translation>
 <translation id="1093457606523402488">Ορατά δίκτυα:</translation>
 <translation id="1094607894174825014">Η λειτουργία ανάγνωσης ή γραφής ζητήθηκε με μη έγκυρη μετατόπιση στη συσκευή: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Προτού συνδεθείτε, πραγματοποιήστε είσοδο ως επισκέπτης για να ενεργοποιηθεί το δίκτυο <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Επιτρέπεται σε αυτή την καρτέλα να αποθηκεύει σε αρχικά αρχεία.</translation>
 <translation id="1103523840287552314">Να μεταφράζονται πάντα τα <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Διακοπή</translation>
 <translation id="1110155001042129815">Αναμονή</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Γυαλιά ηλίου</translation>
 <translation id="1151917987301063366">Να επιτρέπεται πάντα στο <ph name="HOST" /> να έχει πρόσβαση στους αισθητήρες</translation>
 <translation id="1153356358378277386">Συσκευές σε σύζευξη</translation>
-<translation id="1156488781945104845">Τρέχουσα ώρα</translation>
 <translation id="1161575384898972166">Συνδεθείτε στο <ph name="TOKEN_NAME" /> για εξαγωγή του πιστοποιητικού πελάτη.</translation>
 <translation id="1163931534039071049">&amp;Προβολή κώδικα πλαισίου</translation>
 <translation id="1164674268730883318">Να απενεργοποιηθεί το Smart Lock για <ph name="DEVICE_TYPE" />;</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Ρυθμίσεις αποθήκευσης του Adobe Flash Player</translation>
 <translation id="1274997165432133392">Εμφάνιση cookie και άλλων δεδομένων ιστότοπου</translation>
 <translation id="127668050356036882">Κλείσιμο όλων των παραθύρων</translation>
-<translation id="1277908057200820621">Προβολή λίστας συσκευών</translation>
 <translation id="1280820357415527819">Αναζήτηση για δίκτυα κινητής τηλεφωνίας</translation>
 <translation id="1285320974508926690">Να μην γίνεται ποτέ μετάφραση αυτού του ιστότοπου</translation>
 <translation id="1285484354230578868">Αποθήκευση δεδομένων στο λογαριασμό σας στο Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Εγχώριο δίκτυο, χωρίς περιαγωγή </translation>
 <translation id="1316136264406804862">Αναζήτηση...</translation>
 <translation id="1316495628809031177">Ο συγχρονισμός τέθηκε σε παύση</translation>
+<translation id="1317637799698924700">Η βάση σύνδεσης θα βρίσκεται σε λειτουργία συμβατότητας USB τύπου C.</translation>
 <translation id="1322046419516468189">Προβολή και διαχείριση αποθηκευμένων κωδικών πρόσβασης στον <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Για να εμφανίζονται οι καρτέλες από τις άλλες συσκευές σας, συνδεθείτε στο Chrome.</translation>
 <translation id="1327074568633507428">Εκτυπωτής στο Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Το <ph name="BEGIN_LINK" />πρόγραμμα περιήγησής σας είναι διαχειριζόμενο<ph name="END_LINK" /> από τον τομέα <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Εκτελέστε εργαλεία, προγράμματα επεξεργασίας και IDE Linux στη συσκευή <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Μάθετε περισσότερα&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Επιλογή αρχείου</translation>
+<translation id="1370749010280229230">Η οθόνη που έχει συνδεθεί στη βάση σύνδεσης αντιμετωπίζει ένα πρόβλημα</translation>
 <translation id="1371301976177520732">Οι σελιδοδείκτες, οι κωδικοί πρόσβασης, το ιστορικό σας και άλλο περιεχόμενο σε όλες τις συσκευές σας</translation>
 <translation id="1372841398847029212">Συγχρονισμός με τον λογαριασμό σας</translation>
 <translation id="1374844444528092021">Το πιστοποιητικό που απαιτείται από το δίκτυο "<ph name="NETWORK_NAME" />" δεν είναι εγκατεστημένο ή δεν είναι πλέον έγκυρο.  Λάβετε ένα νέο πιστοποιητικό και δοκιμάστε να συνδεθείτε ξανά.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Ιστοσελίδα, μεμονωμένο αρχείο</translation>
 <translation id="1451917004835509682">Προσθήκη εποπτευόμενου ατόμου</translation>
 <translation id="1454223536435069390">Λήψη στιγμιότυπου οθόνης</translation>
+<translation id="1458243790901188746">{0,plural, =1{Φάκελος: <ph name="DIRECTORIES" />}other{Φάκελοι: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Μηχανές αναζήτησης οι οποίες έχουν προστεθεί από επεκτάσεις</translation>
 <translation id="146000042969587795">Αυτό το πλαίσιο αποκλείστηκε διότι περιέχει μη ασφαλές περιεχόμενο.</translation>
 <translation id="146219525117638703">Κατάσταση ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Εμφάνιση επιλογών εισαγωγής</translation>
 <translation id="1651008383952180276">Πρέπει να εισαγάγετε δύο φορές την ίδια φράση πρόσβασης</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Προσθέστε τον εκτυπωτή στο Google Cloud Print, για να μπορείτε να εκτυπώνετε όπου και αν βρίσκεστε.}other{Προσθέστε # εκτυπωτές στο Google Cloud Print, για να μπορείτε να εκτυπώνετε όπου και αν βρίσκεστε.}}</translation>
+<translation id="1656528038316521561">Αδιαφάνεια φόντου</translation>
 <translation id="1657406563541664238">Συμβάλετε στη βελτίωση του <ph name="PRODUCT_NAME" /> στέλνοντας αυτόματα στην Google στατιστικά στοιχεία χρήσης και αναφορές σφαλμάτων</translation>
 <translation id="1658424621194652532">Αυτή η σελίδα έχει πρόσβαση στο μικρόφωνό σας.</translation>
 <translation id="1660204651932907780">Να επιτρέπεται στους ιστοτόπους να αναπαράγουν ήχο (συνιστάται)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546">Το <ph name="URL" /> θέλει να δει την κατασκευή και το μοντέλο του Κλειδιού ασφαλείας σας</translation>
 <translation id="1679068421605151609">Εργαλεία για Προγραμματιστές</translation>
 <translation id="1679806121152819234">Προσθήκη VM</translation>
+<translation id="1679810534535368772">Είστε βέβαιοι ότι θέλετε να βγείτε;</translation>
 <translation id="167983332380191032">Η υπηρεσία διαχείρισης έστειλε σφάλμα HTTP.</translation>
 <translation id="1680849702532889074">Παρουσιάστηκε σφάλμα κατά την εγκατάσταση της εφαρμογής σας Linux.</translation>
 <translation id="16815041330799488">Να μην επιτρέπεται στους ιστοτόπους να βλέπουν κείμενο και εικόνες που αντιγράψατε στο πρόχειρο</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Αναγνωριστικό προστατευμένων μέσων</translation>
 <translation id="175196451752279553">Ε&amp;παναφορά καρτέλας που έχει κλείσει</translation>
 <translation id="1753905327828125965">Πιο Δημοφιλή</translation>
+<translation id="1755601632425835748">Μέγεθος κειμένου</translation>
 <translation id="1756681705074952506">Μέθοδος εισόδου</translation>
 <translation id="1757301747492736405">Απεγκατάσταση σε εκκρεμότητα</translation>
 <translation id="175772926354468439">Ενεργοποίηση θέματος</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Σμίκρυνση</translation>
 <translation id="1919345977826869612">Διαφημίσεις</translation>
 <translation id="1919814239594435008">Η προσθήκη εκτός περιβάλλοντος δοκιμών επιτρέπεται</translation>
+<translation id="1920390473494685033">Επαφές</translation>
 <translation id="1921050530041573580">Κάντε σύζευξη μεταξύ του τηλεφώνου σας και του Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Λήψη Google Smarts σε <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Καρτέλα ανώνυμης περιήγησης: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Η προσθήκη <ph name="PEPPER_PLUGIN_NAME" /> στον τομέα <ph name="PEPPER_PLUGIN_DOMAIN" /> επιθυμεί να αποκτήσει πρόσβαση στον υπολογιστή σας</translation>
 <translation id="2178614541317717477">Παραβίαση αρχής έκδοσης πιστοποιητικών</translation>
+<translation id="2179849162388791084">Η συλλογή δεδομένων σύνδεσης από το κλειδί ασφαλείας σας απέτυχε.</translation>
 <translation id="218070003709087997">Χρησιμοποιήστε έναν αριθμό για να υποδείξετε πόσα αντίγραφα θα εκτυπωθούν (1 ή 999).</translation>
 <translation id="2184515124301515068">Επιτρέψτε στο Chrome να επιλέξει πότε οι ιστότοποι μπορούν να αναπαράγουν ήχο (συνιστάται)</translation>
 <translation id="2187895286714876935">Σφάλμα εισαγωγής του πιστοποιητικού διακομιστή  </translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Όλα τα cookie και τα δεδομένα ιστοτόπων</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 στοιχείο αντιγράφηκε}other{# στοιχεία αντιγράφηκαν}}</translation>
 <translation id="2278562042389100163">Άνοιγμα παραθύρου προγράμματος περιήγησης</translation>
-<translation id="2279874276457403668">Κάθε φορά μπορεί να δημιουργηθεί μόνο μία περίοδος σύνδεσης.</translation>
 <translation id="2280486287150724112">Δεξιό περιθώριο</translation>
 <translation id="2282146716419988068">Διαδικασία GPU</translation>
 <translation id="2282155092769082568">Αυτόματη διαμόρφωση URL</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Οι σημειώσεις στην οθόνη κλειδώματος αποθηκεύονται αυτόματα στο <ph name="LOCK_SCREEN_APP_NAME" />. Η πιο πρόσφατη σημείωση θα παραμείνει στην οθόνη κλειδώματος.</translation>
 <translation id="2353297238722298836">Η κάμερα και το μικρόφωνο επιτρέπονται</translation>
 <translation id="2356070529366658676">Να γίνεται ερώτηση</translation>
-<translation id="2357949918965361754">Μπορείτε να χρησιμοποιήσετε αυτήν τη λειτουργία για την προβολή περιεχομένου από το Chrome στην τηλεόραση ή σε άλλες συσκευές σας.</translation>
 <translation id="2359345697448000899">Διαχειριστείτε τις επεκτάσεις σας, κάνοντας κλικ στην επιλογή "Επεκτάσεις" στο μενού "Εργαλεία".</translation>
 <translation id="2359808026110333948">Συνέχεια</translation>
 <translation id="236117173274098341">Βελτιστοποίηση</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Ο οργανισμός σας απαιτεί άμεση ενημέρωση αυτής της συσκευής</translation>
 <translation id="2439545803278355377">Εισαγάγετε το νέο PIN σας. Ένα PIN πρέπει να αποτελείται από τουλάχιστον τέσσερις χαρακτήρες και μπορεί να περιέχει γράμματα, αριθμούς και άλλους χαρακτήρες.</translation>
 <translation id="2440604414813129000">Προβολή κώ&amp;δικα</translation>
+<translation id="2442916515643169563">Σκίαση κειμένου</translation>
 <translation id="2444119669991608829">Η σελίδα δεν είναι στα <ph name="LANGUAGE" />;</translation>
 <translation id="2445081178310039857">Απαιτείται ο κατάλογος ρίζας επέκτασης.</translation>
 <translation id="2445484935443597917">Δημιουργία νέου προφίλ</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Όχι αργότερα από</translation>
 <translation id="2739191690716947896">Εντοπισμός σφαλμάτων</translation>
 <translation id="2739240477418971307">Αλλαγή των ρυθμίσεων προσβασιμότητας</translation>
+<translation id="274029851662193272">Συμπτυγμένο</translation>
 <translation id="2740393541869613458">ελέγξτε τους ιστότοπους που επισκέφτηκε ο εποπτευόμενος χρήστης και</translation>
 <translation id="2741912629735277980">Εμφάνιση διεπαφής χρήστη στην οθόνη σύνδεσης</translation>
 <translation id="274290345632688601">Επαναφορά εφαρμογών και αρχείων Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Η συντόμευση υπάρχει ήδη</translation>
 <translation id="2807517655263062534">Τα αρχεία που κατεβάζετε εμφανίζονται εδώ</translation>
 <translation id="2809586584051668049">και ακόμη <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Δεν υποστηρίζεται το Thunderbolt</translation>
 <translation id="2812944337881233323">Δοκιμάστε να αποσυνδεθείτε και να συνδεθείτε ξανά</translation>
 <translation id="2812989263793994277">Να μην γίνεται εμφάνιση εικόνων</translation>
 <translation id="281390819046738856">Δεν ήταν δυνατή η έγκριση του αιτήματος.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Πάροχος</translation>
 <translation id="2844169650293029770">Συσκευή USB-C (αριστερή μπροστινή θύρα)</translation>
 <translation id="2845382757467349449">Διαρκής εμφάνιση γραμμής σελιδοδεικτών</translation>
-<translation id="2847759467426165163">Μετάδοση σε</translation>
 <translation id="284805635805850872">Κατάργηση επιβλαβούς λογισμικού;</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Αποτυχία καθαρισμού</translation>
@@ -1297,6 +1305,7 @@
     μήνυμα διακομιστή: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Προσθήκη συλλογής μέσων από τον κατάλογο</translation>
 <translation id="2910318910161511225">Συνδεθείτε σε ένα δίκτυο και δοκιμάστε ξανά</translation>
+<translation id="2910518940971897750">Αποθήκευση στο αρχικό αρχείο</translation>
 <translation id="2913331724188855103">Να επιτρέπεται στους ιστότοπους η αποθήκευση και η ανάγνωση δεδομένων cookie (συνιστάται)</translation>
 <translation id="2915102088417824677">Προβολή αρχείου καταγραφής δραστηριοτήτων</translation>
 <translation id="2915873080513663243">Αυτόματη σάρωση</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Συσκευές MIDI</translation>
 <translation id="3015639418649705390">Επανεκκίνηση τώρα</translation>
 <translation id="3016329696181678353">Δεν ήταν δυνατή η αυτόματη διαμόρφωση του <ph name="PRINTER_NAME" />. Ορίστε σύνθετες λεπτομέρειες εκτυπωτή.</translation>
+<translation id="3016381065346027039">Δεν υπάρχουν καταχωρίσεις αρχείου καταγραφής</translation>
 <translation id="3016641847947582299">Το στοιχείο ενημερώθηκε</translation>
 <translation id="3016780570757425217">Πρόσβαση στην τοποθεσία σας</translation>
 <translation id="3017079585324758401">Φόντο</translation>
 <translation id="3020183492814296499">Συντομεύσεις</translation>
 <translation id="3020990233660977256">Σειριακός αριθμός: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Πεταλούδα</translation>
+<translation id="3021408157810018664">Να αποθηκευτούν οι αλλαγές στα αρχικά αρχεία;</translation>
 <translation id="3021426244864538700">Με πρόσβαση στα δεδομένα αυτού του ιστοτόπου</translation>
 <translation id="3021678814754966447">&amp;Προβολή Πηγαίου Κώδικα Πλαισίου</translation>
 <translation id="3022978424994383087">Δεν έγινε κατανοητό.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Μπορείτε επίσης να παραλείψετε τη σύνδεση και να <ph name="LINK_START" />πραγματοποιήσετε περιήγηση ως Επισκέπτης<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Κάποιος ιστότοπος έχει πρόσβαση στην είσοδο βίντεο</translation>
 <translation id="3177909033752230686">Γλώσσα σελίδας:</translation>
+<translation id="3179982752812949580">Γραμματοσειρά κειμένου</translation>
 <translation id="3181954750937456830">Ασφαλής περιήγηση (προστατεύει εσάς και τη συσκευή σας από επικίνδυνους ιστοτόπους)</translation>
 <translation id="3182749001423093222">Ορθογραφικός έλεγχος</translation>
 <translation id="3183139917765991655">Εργαλείο εισαγωγής προφίλ</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Άνοιγμα σε παράθυρο</translation>
 <translation id="3278001907972365362">Απαιτείται η προσοχή σας σχετικά με τον Λογαριασμό σας Google</translation>
 <translation id="3279230909244266691">Αυτή η διαδικασία μπορεί να διαρκέσει μερικά λεπτά. Έναρξη του εικονικού μηχανήματος.</translation>
-<translation id="3279741024917655738">Προβολή βίντεο σε πλήρη οθόνη σε</translation>
 <translation id="3280237271814976245">Αποθήκευση &amp;ως...</translation>
 <translation id="3280243678470289153">Παραμονή στο Chrome</translation>
 <translation id="3281892622610078515">Αρχεία και προγράμματα για καραντίνα:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Δεν βρέθηκαν αποτελέσματα αναζήτησης</translation>
 <translation id="3305389145870741612">Η διαδικασία διαμόρφωσης ενδέχεται να διαρκέσει μερικά δευτερόλεπτα. Περιμένετε.</translation>
 <translation id="3305661444342691068">Άνοιγμα PDF σε προεπισκόπηση</translation>
-<translation id="3306684685104080068">Ενεργοποίηση μετάδοσης σε υπηρεσίες που βασίζονται στο cloud, όπως το Google Hangouts.</translation>
+<translation id="3307871847038842490">Επιτρέπεται σε αυτήν τη σελίδα να αποθηκεύει σε αρχικά αρχεία.</translation>
 <translation id="3308006649705061278">Οργανωτική ομάδα (OU)</translation>
 <translation id="3308116878371095290">Σε αυτήν τη σελίδα δεν έχει επιτραπεί ο ορισμός των cookie.</translation>
 <translation id="3308134619352333507">Απόκρυψη κουμπιού</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Ακύρωση ρύθμισης λογαριασμού;</translation>
 <translation id="3464012987031883895">Κάποιος ιστότοπος έχει πρόσβαση στην είσοδο ήχου</translation>
 <translation id="346431825526753">Αυτός είναι ένας λογαριασμός για παιδιά τον οποίο διαχειρίζεται ο χρήστης <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Μεταδώστε σε ροή ένα αρχείο βίντεο ή ήχου</translation>
 <translation id="3468999815377931311">Τηλέφωνο Android</translation>
 <translation id="3470442499439619530">Κατάργηση αυτού του χρήστη</translation>
 <translation id="3473479545200714844">Μεγεθυντής οθόνης</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Σμίκρυνση</translation>
 <translation id="3497560059572256875">Κοινοποίηση doodle</translation>
 <translation id="3505030558724226696">Ανάκληση πρόσβασης στη συσκευή</translation>
+<translation id="3505635633742443645">Η θύρα HDMI της βάσης σύνδεσης δεν μπορεί να χρησιμοποιηθεί όταν η θύρα USB τύπου C χρησιμοποιείται για έξοδο βίντεο. Χρησιμοποιήστε διαφορετική θύρα για μια από τις οθόνες.</translation>
 <translation id="3507421388498836150">Τρέχοντα δικαιώματα για "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Επανάληψη σάρωσης συσκευών Bluetooth</translation>
 <translation id="3508920295779105875">Επιλέξτε άλλο φάκελο...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Εγκαταστάθηκε επιτυχώς</translation>
 <translation id="3578594933904494462">Το περιεχόμενο αυτής της ετικέτας είναι κοινόχρηστο.</translation>
 <translation id="357886715122934472">Ο χρήστης &lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; θέλει να μοιραστεί έναν εκτυπωτή &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; με μια ομάδα που σας ανήκει: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Εάν δεχτείτε, όλα τα μέλη της ομάδας θα έχουν τη δυνατότητα να χρησιμοποιούν τον εκτυπωτή.</translation>
+<translation id="357889014807611375">Wi-Fi με ογκοχρέωση</translation>
 <translation id="3584169441612580296">Ανάγνωση και αλλαγή φωτογραφιών, μουσικής και άλλων μέσων από τον υπολογιστή σας</translation>
 <translation id="3587482841069643663">Όλες</translation>
 <translation id="358796204584394954">Πληκτρολογήστε αυτόν τον κωδικό στη συσκευή "<ph name="DEVICE_NAME" />" για να κάνετε σύζευξη:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Είσοδος</translation>
 <translation id="3593965109698325041">Περιορισμοί ονόματος πιστοποιητικού</translation>
 <translation id="3596235046596950091">Ενεργοποίηση υπηρεσιών cloud</translation>
+<translation id="3599221874935822507">Αναπτυγμένο</translation>
 <translation id="3599863153486145794">Διαγράφει το ιστορικό από όλες τις συνδεδεμένες συσκευές. Ο Λογαριασμός σας Google ενδέχεται να διαθέτει άλλες μορφές ιστορικού περιήγησης στη διεύθυνση <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Πληροφορίες αιτήματος ιστού</translation>
 <translation id="3600792891314830896">Σίγαση ιστοτόπων που αναπαράγουν ήχο</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Λήψη από &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Εμφάνιση <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">Άνοιγμα σε νέα καρτέ&amp;λα</translation>
+<translation id="3615073365085224194">Αγγίξτε τον αισθητήρα δακτυλικών αποτυπωμάτων με το δάχτυλό σας</translation>
 <translation id="3616113530831147358">Ήχος</translation>
 <translation id="3616741288025931835">&amp;Διαγραφή δεδομένων περιήγησης...</translation>
 <translation id="3617891479562106823">Τα φόντα δεν είναι διαθέσιμα. Δοκιμάστε ξανά αργότερα.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Αρχική σελίδα</translation>
 <translation id="3720996970802414353">Εναλλαγή</translation>
 <translation id="3722108462506185496">Σφάλμα έναρξης της υπηρεσίας εικονικού μηχανήματος. Δοκιμάστε ξανά.</translation>
-<translation id="3723158278575423087">Καλώς ήρθατε στην εμπειρία Μετάδοσης στο Chromium!</translation>
 <translation id="3725367690636977613">σελίδες</translation>
 <translation id="3726137731714254362">Η κατάργηση των φακέλων από εδώ θα διακόψει την κοινή χρήση αλλά δεν θα διαγράψει τα αρχεία.</translation>
 <translation id="3727148787322499904">Η αλλαγή αυτής της ρύθμισης θα επηρεάσει όλα τα κοινόχρηστα δίκτυα</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Λεπτομερείς πληροφορίες έκδοσης</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Επικοινωνία με μια συσκευή USB}other{Επικοινωνία με # συσκευές USB}}</translation>
 <translation id="3765246971671567135">Δεν ήταν δυνατή η ανάγνωση της πολιτικής λειτουργίας επίδειξης εκτός σύνδεσης.</translation>
-<translation id="3766223500670287046">Απομακρυσμένη οθόνη</translation>
 <translation id="3768037234834996183">Γίνεται συγχρονισμός των προτιμήσεών σας…</translation>
 <translation id="377050016711188788">Παγωτό</translation>
 <translation id="3771294271822695279">Αρχεία βίντεο </translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Ανασηκώστε και αγγίξτε ξανά</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Ο συγχρονισμός τέθηκε σε παύση</translation>
-<translation id="3862134173397075045">Καλώς ήρθατε στην εμπειρία Μετάδοσης στο Chrome!</translation>
 <translation id="3862693525629180217">Επαλήθευση μέσω ενσωματωμένου αισθητήρα</translation>
 <translation id="3862788408946266506">Θα πρέπει να εγκατασταθεί μια εφαρμογή με χαρακτηριστικό μανιφέστου "kiosk_only" στη λειτουργία kiosk του Chrome OS</translation>
 <translation id="3865414814144988605">Ανάλυση</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Το τηλέφωνο που χρησιμοποιείται το Smart Lock άλλαξε</translation>
 <translation id="3927932062596804919">Άρνηση</translation>
 <translation id="3930737994424905957">Αναζήτηση συσκευών</translation>
+<translation id="3930968231047618417">Χρώμα φόντου</translation>
 <translation id="3933283459331715412">Επαναφορά διαγραμμένου κωδικού πρόσβασης για τον λογαριασμό <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Άνοιγμα ήχου σε νέα καρτέλα</translation>
 <translation id="3936925983113350642">Ο κωδικός πρόσβασης που επιλέγετε θα χρειαστεί αργότερα για την επαναφορά αυτού του πιστοποιητικού. Καταγράψτε τον σε ασφαλή τοποθεσία.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Εισαγωγή από το IE</translation>
 <translation id="3950820424414687140">Σύνδεση</translation>
+<translation id="3950828138786918475">Επιτρέπεται σε αυτή την καρτέλα να διαβάσει έναν φάκελο στη συσκευή σας.</translation>
 <translation id="3954354850384043518">Σε εξέλιξη</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">Δεν υπάρχουν αρχεία καταγραφής WebRTC που λήφθηκαν πρόσφατα.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Υπολογισμός…</translation>
 <translation id="3975565978598857337">Η επικοινωνία με τον διακομιστή για realm απέτυχε</translation>
 <translation id="397703832102027365">Ολοκλήρωση…</translation>
+<translation id="3977886311744775419">Δεν πραγματοποιείται λήψη αυτόματων ενημερώσεων σε αυτόν τον τύπο δικτύου, αλλά μπορείτε να ελέγξετε για ενημερώσεις με μη αυτόματο τρόπο.</translation>
 <translation id="3979395879372752341">Προστέθηκε νέα επέκταση (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Ενεργοποίηση <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Καταχωρήθηκε μη έγκυρος τύπος αποθήκευσης.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Ενεργοποίηση λειτουργίας χειρισμού με αφή</translation>
 <translation id="4195643157523330669">Άνοιγμα σε νέα καρτέλα</translation>
 <translation id="4195814663415092787">Συνέχεια από εκεί που σταματήσατε</translation>
+<translation id="4197940474316761015">Ο ιστότοπος <ph name="ORIGIN" /> μπορεί να αποθηκεύσει τις αλλαγές σας απευθείας στα παρακάτω αρχεία. Αυτός ο ιστότοπος μπορεί να αποθηκεύσει αλλαγές μόνο όταν αυτή η καρτέλα είναι ανοικτή.</translation>
 <translation id="4198146608511578238">Απλώς αγγίξτε παρατεταμένα το εικονίδιο της Εφαρμογής εκκίνησης, για να μιλήσετε στον Βοηθό Google.</translation>
 <translation id="4200689466366162458">Προσαρμοσμένες λέξεις</translation>
 <translation id="4200983522494130825">Νέα &amp;καρτέλα</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Αυτόματη σύνδεση στο δίκτυο κινητής τηλεφωνίας</translation>
 <translation id="4268025649754414643">Κρυπτογράφηση κλειδιού</translation>
 <translation id="4270393598798225102">Έκδοση <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Δεν υπάρχουν αντιστοιχίες</translation>
 <translation id="4275663329226226506">Μέσα</translation>
 <translation id="4275830172053184480">Επανεκκινήστε τη συσκευή σας</translation>
 <translation id="4278101229438943600">Ο Βοηθός σας είναι έτοιμος</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Χρόνος CPU</translation>
 <translation id="4534661889221639075">Δοκιμάστε ξανά.</translation>
 <translation id="4535127706710932914">Προεπιλεγμένο προφίλ</translation>
+<translation id="4535767533210902251">Ο αισθητήρας δακτυλικών αποτυπωμάτων είναι το επάνω δεξιά πλήκτρο του πληκτρολογίου σας. Αγγίξτε το ελαφρώς με οποιοδήποτε δάκτυλο.</translation>
 <translation id="4538684596480161368">Να γίνεται πάντα αποκλεισμός των προσθηκών εκτός περιβάλλοντος δοκιμών σε <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Εγκαταστάθηκε από την εταιρική πολιτική.</translation>
 <translation id="4542520061254486227">Ανάγνωση των δεδομένων σας στο <ph name="WEBSITE_1" /> και στο <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Περισσότερα...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Σύζευξη συσκευής Bluetooth</translation>
+<translation id="4578012756826807359">Τα δεδομένα σύνδεσης διαγράφηκαν με επιτυχία.</translation>
 <translation id="4579581181964204535">Δεν είναι δυνατή η μετάδοση <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Σφάλμα κατά την επαναφορά του Linux</translation>
 <translation id="4582563038311694664">Επαναφορά όλων των ρυθμίσεων</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Τα cookie που προέρχονται από πολλαπλούς ιστότοπους θα διαγραφούν κατά την έξοδο.</translation>
 <translation id="4765582662863429759">Επιτρέπει στο Android Messages τη μετάδοση μηνυμάτων κειμένου από το τηλέφωνό σας στο Chromebook</translation>
 <translation id="4768332406694066911">Διαθέτετε πιστοποιητικά από αυτούς τους οργανισμούς που σας προσδιορίζουν</translation>
-<translation id="4772404146526168240">Και στις δύο οθόνες</translation>
 <translation id="4776146737004271126">Άνοιγμα ρυθμίσεων Android</translation>
 <translation id="4776917500594043016">Κωδικός πρόσβασης για <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Συνδεθείτε για να έχετε πρόσβαση στους σελιδοδείκτες, στο ιστορικό, στους κωδικούς πρόσβασης και σε άλλες ρυθμίσεις σε όλες τις συσκευές σας. Επίσης, θα συνδέεστε αυτόματα στις υπηρεσίες της Google.</translation>
 <translation id="4929386379796360314">Εκτύπωση προορισμών</translation>
 <translation id="4930714375720679147">Ενεργοποίηση</translation>
-<translation id="4931132176527519925">Να χρησιμοποιείται πάντα κατοπτρισμός</translation>
 <translation id="4932733599132424254">Ημερομηνία</translation>
 <translation id="4933484234309072027">ενσωματωμένο σε <ph name="URL" /></translation>
 <translation id="493571969993549666">Προσθήκη εποπτευόμενου χρήστη</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Κατάργηση σίγασης</translation>
 <translation id="4992458225095111526">Επιβεβαίωση Powerwash</translation>
 <translation id="4992473555164495036">Ο διαχειριστής σας περιόρισε τις διαθέσιμες μεθόδους εισαγωγής.</translation>
+<translation id="4992866843815555470">Η βάση σύνδεσης χρειάζεται επισκευή. Εάν δεν λειτουργεί κάποιος ανεμιστήρας, η βάση σύνδεσης θα απενεργοποιηθεί.</translation>
 <translation id="4992926179187649719">Ενεργοποίηση "Ok Google"</translation>
 <translation id="4994474651455208930">Να επιτρέπεται σε ιστότοπους να ζητούν να γίνονται προεπιλεγμένα προγράμματα χειρισμού για πρωτόκολλα</translation>
 <translation id="4994754230098574403">Γίνεται ρύθμιση</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">Αναγνωριστικό διαδικασίας</translation>
 <translation id="5233638681132016545">Νέα καρτέλα</translation>
 <translation id="5233736638227740678">&amp;Επικόλληση</translation>
-<translation id="5234764350956374838">Παράβλεψη</translation>
 <translation id="5235050375939235066">Απεγκατάσταση εφαρμογής;</translation>
 <translation id="5235750401727657667">Αντικατάσταση της σελίδας που βλέπετε κατά το άνοιγμα νέας καρτέλας</translation>
 <translation id="5238278114306905396">Έχει γίνει αυτόματη κατάργηση της εφαρμογής "<ph name="EXTENSION_NAME" />".</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Η Google συνιστά το Chrome</translation>
 <translation id="532247166573571973">Ο διακομιστής μπορεί να μην είναι προσβάσιμος. Δοκιμάστε ξανά αργότερα.</translation>
 <translation id="5324780743567488672">Αυτόματη ρύθμιση ζώνης ώρας με χρήση της τοποθεσίας σας</translation>
+<translation id="5327129740973624286">Επιτρέπεται στο <ph name="WINDOW_TITLE" /> να αποθηκεύει σε αρχικά αρχεία</translation>
 <translation id="5327248766486351172">Όνομα</translation>
 <translation id="5327570636534774768">Αυτή η συσκευή έχει επισημανθεί για διαχείριση από διαφορετικό τομέα. Καταργήστε την από αυτόν τον τομέα πριν ρυθμίσετε τη λειτουργία επίδειξης.</translation>
 <translation id="532943162177641444">Πατήστε στην ειδοποίηση στο τηλέφωνο <ph name="PHONE_NAME" /> για να ρυθμίσετε το σημείο πρόσβασης Wi-Fi για κινητά που μπορεί να χρησιμοποιηθεί από αυτήν τη συσκευή.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985">Ο ιστότοπος <ph name="SITE_NAME" /> επιθυμεί</translation>
 <translation id="5534304873398226603">Απόρριψη φωτογραφίας ή βίντεο</translation>
 <translation id="5535941515421698170">Επίσης, καταργήστε τα υπάρχοντα δεδομένα σας από αυτήν τη συσκευή</translation>
-<translation id="5537725057119320332">Μετάδοση</translation>
 <translation id="5539221284352502426">Ο κωδικός πρόσβασης που εισαγάγατε απορρίφθηκε από τον διακομιστή. Στις πιθανές αιτίες περιλαμβάνονται οι εξής: Ο κωδικός πρόσβασης είναι πάρα πολύ σύντομος. Ο κωδικός πρόσβασης πρέπει να περιέχει αριθμούς ή σύμβολα. Ο κωδικός πρόσβασης πρέπει να διαφέρει από τους προηγούμενους κωδικούς πρόσβασης.</translation>
 <translation id="5541687815721799001">Χρήση εφαρμογής</translation>
 <translation id="5542132724887566711">Προφίλ</translation>
@@ -3301,7 +3315,6 @@
 <translation id="5997337190805127100">Μάθετε περισσότερα για την πρόσβαση ιστοτόπου</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> αποτελέσματα για την αναζήτηση "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Προτιμώμενες φωνές</translation>
-<translation id="6005695835120147974">Δρομολογητής μέσων</translation>
 <translation id="6006484371116297560">Κλασικό</translation>
 <translation id="6007240208646052708">Η Φωνητική αναζήτηση δεν είναι διαθέσιμη στη γλώσσα σας.</translation>
 <translation id="6009781704028455063">Ενσωματωμένος αισθητήρας</translation>
@@ -3501,7 +3514,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Εντοπίστηκε νέος εκτυπωτής στο δίκτυό σας}other{Εντοπίστηκαν νέοι εκτυπωτές στο δίκτυό σας}}</translation>
 <translation id="6286708577777130801">Λεπτομέρειες αποθηκευμένου κωδικού πρόσβασης</translation>
 <translation id="6289452883081499048">Εξατομικευμένες υπηρεσίες Google, όπως το Play</translation>
-<translation id="6290556621549272952">Μπορείτε να χρησιμοποιήσετε αυτήν τη λειτουργία για την προβολή περιεχομένου από το Chromium στην τηλεόραση ή σε άλλες συσκευές σας.</translation>
 <translation id="6291949900244949761">Να γίνεται ερώτηση όταν κάποιος ιστότοπος θέλει να αποκτήσει πρόσβαση σε συσκευές USB (συνιστάται)</translation>
 <translation id="6291953229176937411">&amp;Εμφάνιση στο Finder</translation>
 <translation id="6295158916970320988">Όλοι οι ιστότοποι</translation>
@@ -3565,6 +3577,7 @@
 <translation id="6395423953133416962">Αποστολή <ph name="BEGIN_LINK1" />πληροφοριών συστήματος<ph name="END_LINK1" /> και <ph name="BEGIN_LINK2" />μετρήσεων<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Αποκλεισμός χρήσης αισθητήρων κίνησης από ιστοτόπους</translation>
 <translation id="6397094776139756010">Επιλογές συγχρονισμού και εξατομίκευσης</translation>
+<translation id="6397449385184089588">Ο ιστότοπος <ph name="ORIGIN" /> θα μπορεί να αποθηκεύει τις αλλαγές σας απευθείας στα αρχεία στον παρακάτω φάκελο. Αυτός ο ιστότοπος μπορεί να αποθηκεύσει αλλαγές μόνο όταν αυτή η καρτέλα είναι ανοικτή.</translation>
 <translation id="6398715114293939307">Κατάργηση Google Play Store</translation>
 <translation id="6398765197997659313">Έξοδος από πλήρη οθόνη</translation>
 <translation id="6399774419735315745">Κατάσκοπος</translation>
@@ -3609,11 +3622,13 @@
 <translation id="6455264371803474013">Σε συγκεκριμένους ιστοτόπους</translation>
 <translation id="6455894534188563617">&amp;Νέος φάκελος</translation>
 <translation id="6456394469623773452">Καλό</translation>
+<translation id="6456955391422100996">Η διαφήμιση καταργήθηκε.</translation>
 <translation id="645705751491738698">Συνέχιση αποκλεισμού JavaScript</translation>
 <translation id="6458701200018867744">Η μεταφόρτωση απέτυχε (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Χρήση Επιλογής για Εύρεση</translation>
 <translation id="6459799433792303855">Το ενεργό παράθυρο μετακινήθηκε στη άλλη οθόνη.</translation>
 <translation id="6460601847208524483">Εύρεση επόμενου</translation>
+<translation id="6461170143930046705">Αναζήτηση δικτύων…</translation>
 <translation id="6463795194797719782">Επε&amp;ξεργασία</translation>
 <translation id="6466988389784393586">Άνοιγμα Όλων των Σελιδοδεικτών</translation>
 <translation id="6467304607960172345">Βελτιστοποίηση βίντεο πλήρους οθόνης</translation>
@@ -3652,6 +3667,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Έχετε συνδεθεί σε ένα δίκτυο <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Κοινοποίηση</translation>
 <translation id="6528513914570774834">Επιτρέψτε σε άλλους χρήστες της συσκευής να χρησιμοποιούν αυτό το δίκτυο</translation>
 <translation id="652948702951888897">Ιστορικό Chrome</translation>
@@ -3748,7 +3764,6 @@
 <translation id="6680650203439190394">Βαθμολόγηση</translation>
 <translation id="6681668084120808868">Λήψη φωτογραφίας</translation>
 <translation id="6681964764822470072">Η εγκατάσταση της εφαρμογής "<ph name="APP_NAME" />" θα καταργηθεί.</translation>
-<translation id="6685083257944113180">Διακοπή, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Άνοιγμα Google Play</translation>
 <translation id="6686490380836145850">Κλείσιμο καρτελών δεξιά</translation>
 <translation id="6686817083349815241">Αποθηκεύστε τον κωδικό πρόσβασής σας</translation>
@@ -3856,6 +3871,7 @@
 <translation id="6845038076637626672">Άνοιγμα μεγιστοποιημένης εφαρμογής</translation>
 <translation id="6845325883481699275">Συμβάλετε στη βελτίωση της ασφάλειας του Chrome</translation>
 <translation id="6848388270925200958">Αυτήν τη στιγμή, έχετε ορισμένες κάρτες που μπορούν να χρησιμοποιηθούν μόνο σε αυτήν τη συσκευή</translation>
+<translation id="6850286078059909152">Χρώμα κειμένου</translation>
 <translation id="6851497530878285708">Η εφαρμογή ενεργοποιήθηκε</translation>
 <translation id="6853388645642883916">Το πρόγραμμα ενημέρωσης είναι σε αδράνεια</translation>
 <translation id="68541483639528434">Κλείσιμο των άλλων καρτελών</translation>
@@ -3905,7 +3921,6 @@
 <translation id="6923132443355966645">Κύλιση/κλικ</translation>
 <translation id="6923633482430812883">Παρουσιάστηκε σφάλμα κατά την προσάρτηση κοινοποίησης. Βεβαιωθείτε ότι ο διακομιστής αρχείων στον οποίο συνδέεστε υποστηρίζει το SMBv2 ή νεότερη έκδοση.</translation>
 <translation id="6930036377490597025">Εξωτερικό κλειδί ασφαλείας ή ενσωματωμένος αισθητήρας</translation>
-<translation id="6930242544192836755">Διάρκεια</translation>
 <translation id="693807610556624488">Η λειτουργία εγγραφής υπερβαίνει το μέγιστο μέγεθος του χαρακτηριστικού στη συσκευή: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Συνδεθείτε στο <ph name="TOKEN_NAME" /> για έλεγχο ταυτότητας στο <ph name="HOST_NAME" /> με το πιστοποιητικό σας.</translation>
 <translation id="6943176775188458830">Ακύρωση εκτύπωσης</translation>
@@ -3919,6 +3934,7 @@
 <translation id="6951153907720526401">Δείκτες χειρισμού για πληρωμές</translation>
 <translation id="6951663584153258142">Ο οργανισμός σας ζητά να ενημερώσετε αυτήν τη συσκευή</translation>
 <translation id="6953878494808481632">Σχετικές πληροφορίες</translation>
+<translation id="6953916367503892689">{0,plural, =1{Αρχείο: <ph name="FILES" />}other{Αρχεία: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Έλεγχος αναδυόμενου παραθύρου</translation>
 <translation id="6957044667612803194">Αυτό το κλειδί ασφαλείας δεν υποστηρίζει PIN</translation>
 <translation id="6957231940976260713">Όνομα υπηρεσίας</translation>
@@ -4131,7 +4147,6 @@
 <translation id="7254554697254365959">Δεν ήταν δυνατή η μετάφραση αυτής της σελίδας.</translation>
 <translation id="7254951428499890870">Είστε βέβαιοι ότι θέλετε να ξεκινήσετε την εφαρμογή "<ph name="APP_NAME" />" στη λειτουργία διάγνωσης;</translation>
 <translation id="7255002516883565667">Αυτήν τη στιγμή, έχετε μία κάρτα που μπορεί να χρησιμοποιηθεί μόνο σε αυτήν τη συσκευή</translation>
-<translation id="7255220508626648026">Μετάδοση: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Αγγίξτε ξανά το κλειδί ασφαλείας, για να επιβεβαιώσετε την επαναφορά. Όλες οι πληροφορίες που είναι αποθηκευμένες στο κλειδί ασφαλείας, συμπεριλαμβανομένου του PIN του, θα διαγραφούν.</translation>
 <translation id="7255935316994522020">Εφαρμογή</translation>
 <translation id="7256069762010468647">Ο ιστότοπος χρησιμοποιεί την κάμερά σας</translation>
@@ -4265,6 +4280,7 @@
 <translation id="7456142309650173560">προγραμματιστές</translation>
 <translation id="7456847797759667638">Άνοιγμα Τοποθεσίας...</translation>
 <translation id="7458168200501453431">Χρησιμοποιεί το ίδιο εργαλείο ορθογραφικού ελέγχου που χρησιμοποιείται στην Αναζήτηση Google. Το κείμενο που πληκτρολογείτε στο πρόγραμμα περιήγησης αποστέλλεται στην Google.</translation>
+<translation id="7460045493116006516">Τρέχον θέμα που έχετε εγκαταστήσει</translation>
 <translation id="7461924472993315131">Καρφίτσωμα</translation>
 <translation id="746216226901520237">Την επόμενη φορά, το τηλέφωνό σας θα ξεκλειδώσει τη συσκευή <ph name="DEVICE_TYPE" />. Μπορείτε να απενεργοποιήσετε το Smart Lock στις Ρυθμίσεις.</translation>
 <translation id="7463006580194749499">Προσθήκη χρήστη</translation>
@@ -4324,6 +4340,7 @@
 <translation id="7554791636758816595">Νέα καρτέλα</translation>
 <translation id="7556033326131260574">Δεν ήταν δυνατή η επαλήθευση του λογαριασμού σας από τη λειτουργία Smart Lock. Πληκτρολογήστε τον κωδικό πρόσβασής σας για να εισέλθετε.</translation>
 <translation id="7556242789364317684">Δυστυχώς, το <ph name="SHORT_PRODUCT_NAME" /> δεν μπορεί να ανακτήσει τις ρυθμίσεις σας. Για την επιδιόρθωση του σφάλματος, το <ph name="SHORT_PRODUCT_NAME" /> θα πρέπει να επαναφέρει της συσκευή σας με το Powerwash.</translation>
+<translation id="7559444627302317199">Ελέγξτε τη σύνδεση δικτύου σας και δοκιμάστε ξανά.</translation>
 <translation id="7559719679815339381">Παρακαλώ περιμένετε… Η εφαρμογή kiosk βρίσκεται σε διαδικασία ενημέρωσης. Μην αφαιρέσετε τη συσκευή αποθήκευσης USB.</translation>
 <translation id="7561196759112975576">Πάντα</translation>
 <translation id="7563991800558061108">Για να αντιμετωπίσετε αυτό το σφάλμα, θα πρέπει να συνδεθείτε στο Λογαριασμό σας Google
@@ -4566,7 +4583,6 @@
 <translation id="7887334752153342268">Αντιγραφή</translation>
 <translation id="7887864092952184874">Έγινε σύζευξη του ποντικιού Bluetooth</translation>
 <translation id="7889565820482017512">Μέγεθος οθόνης</translation>
-<translation id="7889966925761734854">Αναζήτηση</translation>
 <translation id="7893008570150657497">Πρόσβασης στις φωτογραφίες, στη μουσική και στα άλλα μέσα από τον υπολογιστή σας</translation>
 <translation id="7893153962594818789">Το Bluetooth είναι απενεργοποιημένο σε αυτό το <ph name="DEVICE_TYPE" />. Καταχωρίστε τον κωδικό πρόσβασης και ενεργοποιήστε το Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Προεπιλογή)</translation>
@@ -4574,7 +4590,6 @@
 <translation id="7898627924844766532">Διατήρηση στη γραμμή εργαλείων</translation>
 <translation id="7898725031477653577">Να μεταφράζονται πάντα</translation>
 <translation id="790040513076446191">Διαχείριση ρυθμίσεων σχετικά με το απόρρητο</translation>
-<translation id="7902874111237641165">Απαλή κίνηση [beta]</translation>
 <translation id="7903345046358933331">Η σελίδα δεν ανταποκρίνεται. Μπορείτε να περιμένετε μέχρι να ανταποκριθεί ή να την τερματίσετε.</translation>
 <translation id="7903742244674067440">Έχετε καταχωρίσει πιστοποιητικά που προσδιορίζουν αυτές τις αρχές έκδοσης πιστοποιητικών</translation>
 <translation id="7903925330883316394">Βοηθητικό πρόγραμμα: <ph name="UTILITY_TYPE" /></translation>
@@ -4686,6 +4701,7 @@
 <translation id="8037117027592400564">Ανάγνωση όλου του κειμένου που εκφωνείται με χρήση ομιλίας σύνθεσης</translation>
 <translation id="8037357227543935929">Να γίνεται ερώτηση (προεπιλογή)</translation>
 <translation id="803771048473350947">Αρχείο</translation>
+<translation id="8042142357103597104">Αδιαφάνεια κειμένου</translation>
 <translation id="8044899503464538266">Αργά</translation>
 <translation id="8045253504249021590">Ο συγχρονισμός έχει διακοπεί μέσω του Πίνακα ελέγχου Google.</translation>
 <translation id="8045923671629973368">Εισαγάγετε αναγνωριστικό εφαρμογής ή URL στο webstore</translation>
@@ -4722,7 +4738,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Μπορείτε να απενεργοποιήσετε αυτήν την υπηρεσία στις Ρυθμίσεις.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Τα PIN δεν ταιριάζουν</translation>
 <translation id="809792523045608178">Το <ph name="IDS_SHORT_PRODUCT_NAME" /> χρησιμοποιεί ρυθμίσεις διακομιστή μεσολάβησης από μια επέκταση</translation>
-<translation id="8099495042588009598">Περισσότερες άδειες</translation>
 <translation id="8101987792947961127">Απαιτείται Powerwash στην επόμενη επανεκκίνηση</translation>
 <translation id="8102159139658438129">Μεταβείτε στις <ph name="LINK_BEGIN" />Ρυθμίσεις<ph name="LINK_END" />, για να δείτε τις επιλογές που έχετε για το συνδεδεμένο τηλέφωνο</translation>
 <translation id="8104696615244072556">Επαναφέρετε (powerwash) τη συσκευή σας <ph name="IDS_SHORT_PRODUCT_NAME" /> και επιστρέψτε στην προηγούμενη έκδοση</translation>
@@ -4774,8 +4789,10 @@
     Πιστεύω ότι αυτός ο ιστότοπος δεν πρέπει να είναι αποκλεισμένος!</translation>
 <translation id="8184288427634747179">Εναλλαγή σε <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Περισσότερες πληροφορίες</translation>
+<translation id="8184472985242519288">Ομοιόμορφο</translation>
 <translation id="8185331656081929126">Εμφάνιση ειδοποιήσεων κατά τον εντοπισμό νέων εκτυπωτών στο δίκτυο</translation>
 <translation id="8186609076106987817">Δεν ήταν δυνατός ο εντοπισμός του αρχείου από τον διακομιστή.</translation>
+<translation id="8187950680397073878">Ο ιστότοπος <ph name="ORIGIN" /> μπορεί να διαβάσει όλα τα αρχεία στον παρακάτω φάκελο. Αυτός ο ιστότοπος μπορεί να δει αλλαγές στον φάκελο μόνο όταν αυτή η καρτέλα είναι ανοικτή.</translation>
 <translation id="8188389033983459049">Ελέγξτε τις ρυθμίσεις της συσκευής σας και ενεργοποιήστε την για να συνεχίσετε</translation>
 <translation id="8190193592390505034">Σύνδεση με <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Διαχείριση των εφαρμογών, των επεκτάσεων και των θεμάτων σας</translation>
@@ -4879,7 +4896,6 @@
 <translation id="833986336429795709">Για να ανοίξετε αυτόν τον σύνδεσμο, επιλέξτε μια εφαρμογή</translation>
 <translation id="8342861492835240085">Επιλέξτε μια συλλογή</translation>
 <translation id="834290227245955730">Μη έγκυρο PIN. Απομένουν <ph name="RETRIES" /> προσπάθειες.</translation>
-<translation id="8343956361364550006">Χρησιμοποιήστε υψηλό εύρος ζώνης για τη βέλτιστη ποιότητα βίντεο ή κινούμενων εικόνων. Τα άτομα με συνδέσεις χαμηλότερης ταχύτητας μπορεί να μην βλέπουν το περιεχόμενό σας.</translation>
 <translation id="8351419472474436977">Αυτή η επέκταση ελέγχει τις ρυθμίσεις σας διακομιστή μεσολάβησης. Αυτό σημαίνει ότι μπορεί να αλλάξει, να διακόψει ή να παρακολουθήσει όλες τις ενέργειες που εκτελείτε στο διαδίκτυο. Εάν δεν είστε βέβαιοι όσον αφορά το λόγο αυτής της αλλαγής, πιθανότατα δεν την επιθυμούσατε.</translation>
 <translation id="8351630282875799764">Η μπαταρία δεν φορτίζει</translation>
 <translation id="835238322900896202">Παρουσιάστηκε σφάλμα κατά την απεγκατάσταση. Απεγκαταστήστε το μέσω του Terminal.</translation>
@@ -4912,9 +4928,11 @@
 <translation id="839736845446313156">Εγγραφή</translation>
 <translation id="8398877366907290961">Συνέχεια</translation>
 <translation id="8400146488506985033">Διαχείριση ατόμων</translation>
+<translation id="8400444932218572097">Ο ιστότοπος <ph name="ORIGIN" /> μπορεί να αποθηκεύσει τις αλλαγές σας απευθείας στα αρχεία του παρακάτω φακέλου. Αυτός ο ιστότοπος μπορεί να αποθηκεύσει αλλαγές μόνο όταν αυτή η καρτέλα είναι ανοικτή.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Να γίνεται ερώτηση πρώτα (συνιστάται)</translation>
 <translation id="8418445294933751433">&amp;Εμφάνιση ως καρτέλα</translation>
+<translation id="8418905021510211421">Επιτρέπεται σε αυτήν τη σελίδα να διαβάσει έναν φάκελο στη συσκευή σας.</translation>
 <translation id="8419098111404128271">Αποτελέσματα αναζήτησης για "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Καλώς ήρθατε στο <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Αλλαγή</translation>
@@ -4934,6 +4952,7 @@
 <translation id="8438566539970814960">Βελτιώστε τις αναζητήσεις και την περιήγηση</translation>
 <translation id="8439506636278576865">Ερώτηση για τη μετάφραση σελίδων σε αυτήν τη γλώσσα</translation>
 <translation id="8440630305826533614">Εφαρμογές Linux</translation>
+<translation id="844241640324986723">Η διαγραφή των δεδομένων σύνδεσης απέτυχε.</translation>
 <translation id="8443338615972234259">Δημιουργήστε έναν νέο λογαριασμό για τον εποπτευόμενο χρήστη τώρα.</translation>
 <translation id="8446884382197647889">Μάθετε περισσότερα</translation>
 <translation id="8447409163267621480">Συμπερίληψη είτε του Ctrl είτε του Alt</translation>
@@ -4949,8 +4968,6 @@
 <translation id="8461914792118322307">Διακομιστής μεσολάβησης</translation>
 <translation id="8463215747450521436">Αυτός ο εποπτευόμενος χρήστης ενδέχεται να έχει διαγραφεί ή απενεργοποιηθεί από το διαχειριστή. Επικοινωνήστε με το διαχειριστή εάν επιθυμείτε να συνεχίσετε να συνδέεστε με τα στοιχεία αυτού του χρήστη.</translation>
 <translation id="846374874681391779">Γραμμή λήψεων</translation>
-<translation id="8463807869745732775">"&gt;
-    Αποθηκευμένα δεδομένα σύνδεσης κλειδιού ασφαλείας</translation>
 <translation id="8463955938112983119">Το <ph name="PLUGIN_NAME" /> απενεργοποιήθηκε.</translation>
 <translation id="8464132254133862871">Αυτός ο λογαριασμός χρήστη δεν είναι κατάλληλος για την υπηρεσία.</translation>
 <translation id="8465252176946159372">Μη έγκυρο</translation>
@@ -5016,6 +5033,7 @@
 <translation id="8569002732135253578">Αυτήν τη στιγμή γίνεται εκτύπωση του εγγράφου <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Δεν βρέθηκαν προορισμοί</translation>
 <translation id="8571213806525832805">Τελευταίες 4 εβδομάδες</translation>
+<translation id="8573403125070227391">Αυτή η διαφήμιση καταργήθηκε από το Chrome επειδή χρησιμοποιεί υπερβολικά πολλούς πόρους στη συσκευή σας.</translation>
 <translation id="8574990355410201600">Να επιτρέπεται πάντα ο ήχος στο <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Κρατήστε πατημένο το πλήκτρο <ph name="KEY_EQUIVALENT" /> για τερματισμό.</translation>
 <translation id="8578639784464423491">Δεν μπορεί να υπερβαίνει τα 99 γράμματα</translation>
@@ -5039,13 +5057,13 @@
 <translation id="8609465669617005112">Μετακίνηση προς τα επάνω</translation>
 <translation id="8610103157987623234">Λανθασμένη μορφή, δοκιμάστε ξανά</translation>
 <translation id="8615618338313291042">Εφαρμογή ανώνυμης περιήγησης: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Αναπτυσσόμενη σκιά</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Κατάσταση περιαγωγής</translation>
 <translation id="8620765578342452535">Διαμόρφωση συνδέσεων δικτύου</translation>
 <translation id="8621866727807194849">Υπάρχει επιβλαβές λογισμικό στον υπολογιστή σας. Το Chrome το καταργεί, επαναφέρει τις ρυθμίσεις σας και απενεργοποιεί τις επεκτάσεις. Με αυτήν την ενέργεια,το πρόγραμμα περιήγησής σας θα λειτουργεί και πάλι φυσιολογικά.</translation>
 <translation id="8621979332865976405">Μοιραστείτε ολόκληρη την οθόνη σας</translation>
 <translation id="862542460444371744">&amp;Επεκτάσεις</translation>
-<translation id="8627151598708688654">Επιλογή πηγής</translation>
 <translation id="862727964348362408">Σε αναστολή</translation>
 <translation id="862750493060684461">Προσωρινή μνήμη CSS</translation>
 <translation id="8627795981664801467">Μόνο ασφαλείς συνδέσεις</translation>
@@ -5099,6 +5117,7 @@
 <translation id="8688579245973331962">Δεν βλέπετε το όνομά σας;</translation>
 <translation id="8688591111840995413">Μη αποδεκτός κωδικός πρόσβασης</translation>
 <translation id="8688672835843460752">Διαθέσιμο</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Άνοιγμα τοποθεσίας...</translation>
 <translation id="869884720829132584">Μενού εφαρμογών</translation>
 <translation id="869891660844655955">Ημερομηνία λήξης</translation>
@@ -5260,6 +5279,7 @@
 <translation id="891365694296252935">Αποστολή δεδομένων χρήσης και διαγνωστικών. Επί του παρόντος, αυτή η συσκευή στέλνει αυτόματα διαγνωστικά δεδομένα, δεδομένα συσκευής και χρήσης εφαρμογών στην Google. Αυτά τα δεδομένα δεν θα χρησιμοποιηθούν για την ταυτοποίηση του παιδιού σας και  θα βοηθήσουν με τη σταθερότητα του συστήματος και των εφαρμογών και την παροχή άλλων βελτιώσεων. Ορισμένα συγκεντρωτικά δεδομένα θα βοηθήσουν επίσης τις εφαρμογές και τους συνεργάτες της Google, όπως τους προγραμματιστές Android. Αυτή η ρύθμιση επιβάλλεται από τον κάτοχο. Εάν είναι ενεργή η πρόσθετη Δραστηριότητα ιστού και εφαρμογών για το παιδί σας, αυτά τα δεδομένα μπορεί να αποθηκευτούν στον Λογαριασμό του Google. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Φόρτωση πρότασης</translation>
 <translation id="8916476537757519021">Υποπλαίσιο ανώνυμης περιήγησης: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780">Επιτρέπεται στο <ph name="WINDOW_TITLE" /> να διαβάσει έναν φάκελο στη συσκευή σας</translation>
 <translation id="8919275547519617350">Για να έχετε όλους τους κωδικούς πρόσβασης σε όλες τις συσκευές σας, συνδεθείτε και ενεργοποιήστε τον συγχρονισμό.</translation>
 <translation id="8921366488406707015">Επαλήθευση του κλειδιού ασφαλείας σας…</translation>
 <translation id="8922013791253848639">Να επιτρέπονται πάντα οι διαφημίσεις σε αυτόν τον ιστότοπο</translation>
@@ -5289,7 +5309,6 @@
 <translation id="8965037249707889821">Εισαγάγετε τον προηγούμενο κωδικό πρόσβασης</translation>
 <translation id="8966870118594285808">Ανοίξτε ξανά μια καρτέλα εάν την κλείσατε τυχαία</translation>
 <translation id="8967866634928501045">Πατήστε τα πλήκτρα Alt, Shift και A για εμφάνιση</translation>
-<translation id="8970203673128054105">Προβολή λίστας λειτουργιών μετάδοσης</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Πραγματοποιήστε έλεγχο με το διαχειριστή του δικτύου σας, για να βεβαιωθείτε ότι το τείχος προστασίας δεν αποκλείει λήψεις από τους διακομιστές της Google.</translation>
 <translation id="8973557916016709913">Κατάργηση επιπέδου εστίασης</translation>
@@ -5438,6 +5457,7 @@
 <translation id="9214520840402538427">Ωχ!  Η περίοδος προετοιμασίας των ιδιοτήτων χρόνου εγκατάστασης έχει λήξει.  Επικοινωνήστε με τον αντιπρόσωπό σας υποστήριξης.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">Προστέθηκε η επέκταση "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="9216712190298404438">Ο ιστότοπος <ph name="ORIGIN" /> θα μπορεί να αποθηκεύει τις αλλαγές σας απευθείας στο παρακάτω αρχείο. Αυτός ο ιστότοπος μπορεί να αποθηκεύσει αλλαγές μόνο όταν αυτή η καρτέλα είναι ανοικτή.</translation>
 <translation id="9218430445555521422">Ορισμός ως προεπιλογή</translation>
 <translation id="9219103736887031265">Εικόνες</translation>
 <translation id="9220525904950070496">Κατάργηση λογαριασμού</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index c912929..24658b2 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Error starting the virtual machine. Please try again.</translation>
 <translation id="1089439967362294234">Change Password</translation>
 <translation id="1090126737595388931">No Background Apps Running</translation>
+<translation id="1090290614672149983">Save changes to original file?</translation>
 <translation id="1090918500949388876">Access your Assistant any time that you say, "Ok Google" when your screen is on</translation>
 <translation id="1091767800771861448">Press ESCAPE to skip (Non-official builds only).</translation>
 <translation id="1093457606523402488">Visible Networks:</translation>
 <translation id="1094607894174825014">Read or write operation was requested with an invalid offset on: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Before signing in, please enter as Guest to activate the network <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">This tab is allowed to save to original files.</translation>
 <translation id="1103523840287552314">Always translate <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Stop</translation>
 <translation id="1110155001042129815">Wait</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Sunglasses</translation>
 <translation id="1151917987301063366">Always allow <ph name="HOST" /> to access sensors</translation>
 <translation id="1153356358378277386">Paired devices</translation>
-<translation id="1156488781945104845">Current time</translation>
 <translation id="1161575384898972166">Please sign in to <ph name="TOKEN_NAME" /> to export the client certificate.</translation>
 <translation id="1163931534039071049">&amp;View frame source</translation>
 <translation id="1164674268730883318">Turn off Smart Lock for <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player Storage settings</translation>
 <translation id="1274997165432133392">Cookies and other site data</translation>
 <translation id="127668050356036882">Close all your windows</translation>
-<translation id="1277908057200820621">View device list</translation>
 <translation id="1280820357415527819">Searching for mobile networks</translation>
 <translation id="1285320974508926690">Never translate this site</translation>
 <translation id="1285484354230578868">Store data in your Google Drive account</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Home network, not roaming</translation>
 <translation id="1316136264406804862">Searching...</translation>
 <translation id="1316495628809031177">Sync is paused</translation>
+<translation id="1317637799698924700">Your docking station will operate in USB Type-C compatible mode.</translation>
 <translation id="1322046419516468189">View and manage saved passwords in your <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">To get your tabs from your other devices, sign in to Chrome.</translation>
 <translation id="1327074568633507428">Printer on Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Your <ph name="BEGIN_LINK" />browser is managed<ph name="END_LINK" /> by <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Run Linux tools, editors and IDEs on your <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Find out more&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Choose a file</translation>
+<translation id="1370749010280229230">Display connected to the dock has an issue</translation>
 <translation id="1371301976177520732">Your bookmarks, passwords, history and more on all your devices</translation>
 <translation id="1372841398847029212">Sync to your account</translation>
 <translation id="1374844444528092021">The certificate required by network "<ph name="NETWORK_NAME" />" is either not installed or is no longer valid.  Please get a new certificate and try connecting again.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Web page, Single File</translation>
 <translation id="1451917004835509682">Add Supervised Person</translation>
 <translation id="1454223536435069390">T&amp;ake screenshot</translation>
+<translation id="1458243790901188746">{0,plural, =1{Folder: <ph name="DIRECTORIES" />}other{Folders: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Search engines added by extensions</translation>
 <translation id="146000042969587795">This frame was blocked because it contains some insecure content.</translation>
 <translation id="146219525117638703">ONC State</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Show input options</translation>
 <translation id="1651008383952180276">You must enter the same passphrase twice</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Add the printer to Google Cloud Print so that you can print from anywhere.}other{Add # printers to Google Cloud Print so that you can print from anywhere.}}</translation>
+<translation id="1656528038316521561">Background opacity</translation>
 <translation id="1657406563541664238">Help make <ph name="PRODUCT_NAME" /> better by automatically sending usage statistics and crash reports to Google.</translation>
 <translation id="1658424621194652532">This page is accessing your microphone.</translation>
 <translation id="1660204651932907780">Allow sites to play sound (recommended)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> wants to see the make and model of your Security Key</translation>
 <translation id="1679068421605151609">Developer Tools</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Are you sure that you want to exit?</translation>
 <translation id="167983332380191032">Management service sent HTTP error.</translation>
 <translation id="1680849702532889074">An error occurred during installation of your Linux application.</translation>
 <translation id="16815041330799488">Do not allow sites to see text and images copied to the clipboard</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Protected media identifier</translation>
 <translation id="175196451752279553">R&amp;eopen closed tab</translation>
 <translation id="1753905327828125965">Most Visited</translation>
+<translation id="1755601632425835748">Text size</translation>
 <translation id="1756681705074952506">Input method</translation>
 <translation id="1757301747492736405">Uninstall pending</translation>
 <translation id="175772926354468439">Enable theme</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Smaller</translation>
 <translation id="1919345977826869612">Ads</translation>
 <translation id="1919814239594435008">Unsandboxed plug-in allowed</translation>
+<translation id="1920390473494685033">Contacts</translation>
 <translation id="1921050530041573580">Pair your phone with Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Get Google smarts in <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Incognito Tab: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> on <ph name="PEPPER_PLUGIN_DOMAIN" /> wants to access your computer</translation>
 <translation id="2178614541317717477">CA Compromise</translation>
+<translation id="2179849162388791084">Gathering sign-in data from your security key failed.</translation>
 <translation id="218070003709087997">Use a number to indicate how many copies to print (1 to 999).</translation>
 <translation id="2184515124301515068">Let Chrome choose when sites can play sound (recommended)</translation>
 <translation id="2187895286714876935">Server Certificate Import Error</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">All cookies and site data</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 item copied}other{# items copied}}</translation>
 <translation id="2278562042389100163">Open browser window</translation>
-<translation id="2279874276457403668">Only one session can be created at a time.</translation>
 <translation id="2280486287150724112">Right margin</translation>
 <translation id="2282146716419988068">GPU Process</translation>
 <translation id="2282155092769082568">Auto-configuration URL:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Lock screen notes are automatically saved to <ph name="LOCK_SCREEN_APP_NAME" />. Your most recent note will remain on the lock screen.</translation>
 <translation id="2353297238722298836">Camera and microphone allowed</translation>
 <translation id="2356070529366658676">Ask</translation>
-<translation id="2357949918965361754">You can use this feature to display content from Chrome on your TV or other devices.</translation>
 <translation id="2359345697448000899">Manage your extensions by clicking Extensions in the Tools menu.</translation>
 <translation id="2359808026110333948">Continue</translation>
 <translation id="236117173274098341">Optimise</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Your organisation requires an update to this device straight away</translation>
 <translation id="2439545803278355377">Enter your new PIN. A PIN must be at least four characters long and can contain letters, numbers and other characters.</translation>
 <translation id="2440604414813129000">View s&amp;ource</translation>
+<translation id="2442916515643169563">Text shadow</translation>
 <translation id="2444119669991608829">Page is not in <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Extension root directory is required.</translation>
 <translation id="2445484935443597917">Create a New Profile</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">Not After</translation>
 <translation id="2739191690716947896">Debug</translation>
 <translation id="2739240477418971307">Change your accessibility settings</translation>
+<translation id="274029851662193272">Depressed</translation>
 <translation id="2740393541869613458">review websites the supervised user has visited, and</translation>
 <translation id="2741912629735277980">Display UI on the login screen</translation>
 <translation id="274290345632688601">Restoring Linux apps &amp; files</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">Shortcut already exists</translation>
 <translation id="2807517655263062534">Files you download appear here</translation>
 <translation id="2809586584051668049">and <ph name="NUMBER_ADDITIONAL_DISABLED" /> more</translation>
+<translation id="2812049959647166806">Thunderbolt is not supported</translation>
 <translation id="2812944337881233323">Try signing out and back in again</translation>
 <translation id="2812989263793994277">Do not show any images</translation>
 <translation id="281390819046738856">Request could not be signed.</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">Provider</translation>
 <translation id="2844169650293029770">USB-C device (left side front port)</translation>
 <translation id="2845382757467349449">Always Show Bookmarks Bar</translation>
-<translation id="2847759467426165163">Cast to</translation>
 <translation id="284805635805850872">Remove harmful software?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Cleanup failed</translation>
@@ -1296,6 +1304,7 @@
     Server message: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Add Media Gallery by Directory</translation>
 <translation id="2910318910161511225">Connect to a network and try again</translation>
+<translation id="2910518940971897750">Save to original file</translation>
 <translation id="2913331724188855103">Allow sites to save and read cookie data (recommended)</translation>
 <translation id="2915102088417824677">View activity log</translation>
 <translation id="2915873080513663243">Auto-scan</translation>
@@ -1360,12 +1369,14 @@
 <translation id="3013291976881901233">MIDI devices</translation>
 <translation id="3015639418649705390">Relaunch now</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> could not be configured automatically. Please specify advanced printer details.</translation>
+<translation id="3016381065346027039">No log entries</translation>
 <translation id="3016641847947582299">Component updated</translation>
 <translation id="3016780570757425217">Know your location</translation>
 <translation id="3017079585324758401">Background</translation>
 <translation id="3020183492814296499">Shortcuts</translation>
 <translation id="3020990233660977256">Serial Number: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Butterfly</translation>
+<translation id="3021408157810018664">Save changes to original files?</translation>
 <translation id="3021426244864538700">Accessing this site's data</translation>
 <translation id="3021678814754966447">&amp;View Frame Source</translation>
 <translation id="3022978424994383087">Didn't get that.</translation>
@@ -1458,6 +1469,7 @@
 <translation id="3170072451822350649">You may also skip signing in and <ph name="LINK_START" />browse as Guest<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">A site is accessing video input</translation>
 <translation id="3177909033752230686">Page language:</translation>
+<translation id="3179982752812949580">Text font</translation>
 <translation id="3181954750937456830">Safe Browsing (protects you and your device from dangerous sites)</translation>
 <translation id="3182749001423093222">Spell check</translation>
 <translation id="3183139917765991655">Profile Importer</translation>
@@ -1510,7 +1522,6 @@
 <translation id="3275778913554317645">Open as window</translation>
 <translation id="3278001907972365362">Your Google Account(s) need attention</translation>
 <translation id="3279230909244266691">This process may take a few minutes. Starting the virtual machine.</translation>
-<translation id="3279741024917655738">Show full screen videos on</translation>
 <translation id="3280237271814976245">Save &amp;as...</translation>
 <translation id="3280243678470289153">Stay in Chrome</translation>
 <translation id="3281892622610078515">Files and programs to be quarantined:</translation>
@@ -1532,7 +1543,7 @@
 <translation id="3303855915957856445">No search results found</translation>
 <translation id="3305389145870741612">The formatting process can take a couple of seconds. Please wait.</translation>
 <translation id="3305661444342691068">Open PDF in Preview</translation>
-<translation id="3306684685104080068">Enable casting to cloud-based services like Google Hangouts.</translation>
+<translation id="3307871847038842490">This page is allowed to save to original files.</translation>
 <translation id="3308006649705061278">Organisational Unit (OU)</translation>
 <translation id="3308116878371095290">This page was prevented from setting cookies.</translation>
 <translation id="3308134619352333507">Hide Button</translation>
@@ -1638,7 +1649,6 @@
 <translation id="3462413494201477527">Cancel account setup?</translation>
 <translation id="3464012987031883895">A site is accessing audio input</translation>
 <translation id="346431825526753">This is an account for kids managed by <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Stream a video or audio file</translation>
 <translation id="3468999815377931311">Android phone</translation>
 <translation id="3470442499439619530">Remove This User</translation>
 <translation id="3473479545200714844">Screen magnifier</translation>
@@ -1661,6 +1671,7 @@
 <translation id="3496213124478423963">Zoom Out</translation>
 <translation id="3497560059572256875">Share Doodle</translation>
 <translation id="3505030558724226696">Revoke device access</translation>
+<translation id="3505635633742443645">Your dock's HDMI port can't be used when the USB Type-C port is used for video output. Please use a different port for one of the displays.</translation>
 <translation id="3507421388498836150">Current Permissions for "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Re-scan Bluetooth devices</translation>
 <translation id="3508920295779105875">Choose Another Folder...</translation>
@@ -1713,6 +1724,7 @@
 <translation id="3576324189521867626">Successfully installed</translation>
 <translation id="3578594933904494462">This tab's content is being shared.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; wants to share a printer &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; with a group that you own: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. If you accept, all group members will be able to print to the printer.</translation>
+<translation id="357889014807611375">metered Wi-Fi</translation>
 <translation id="3584169441612580296">Read and change photos, music and other media from your computer</translation>
 <translation id="3587482841069643663">All</translation>
 <translation id="358796204584394954">Type this code on "<ph name="DEVICE_NAME" />" to pair:</translation>
@@ -1723,6 +1735,7 @@
 <translation id="359283478042092570">Enter</translation>
 <translation id="3593965109698325041">Certificate Name Constraints</translation>
 <translation id="3596235046596950091">Enable cloud services</translation>
+<translation id="3599221874935822507">Raised</translation>
 <translation id="3599863153486145794">Clears history from all signed-in devices. Your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Web request info</translation>
 <translation id="3600792891314830896">Mute sites that play sound</translation>
@@ -1737,6 +1750,7 @@
 <translation id="3612673635130633812">Downloaded by &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Show <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Open in new tab</translation>
+<translation id="3615073365085224194">Touch the fingerprint sensor with your finger</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Clear Browsing Data...</translation>
 <translation id="3617891479562106823">Backgrounds are unavailable. Try again later.</translation>
@@ -1818,7 +1832,6 @@
 <translation id="3719826155360621982">Homepage</translation>
 <translation id="3720996970802414353">Switch anyway</translation>
 <translation id="3722108462506185496">Error starting the virtual machine service. Please try again.</translation>
-<translation id="3723158278575423087">Welcome to the Cast experience in Chromium!</translation>
 <translation id="3725367690636977613">pages</translation>
 <translation id="3726137731714254362">Removing folders from here will stop sharing but will not delete files.</translation>
 <translation id="3727148787322499904">Changing this setting will affect all shared networks</translation>
@@ -1853,7 +1866,6 @@
 <translation id="3764314093345384080">Detailed build information</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Communicate with a USB device}other{Communicate with # USB devices}}</translation>
 <translation id="3765246971671567135">Could not read offline demo mode policy.</translation>
-<translation id="3766223500670287046">Remote screen</translation>
 <translation id="3768037234834996183">Syncing your preferences...</translation>
 <translation id="377050016711188788">Ice-cream</translation>
 <translation id="3771294271822695279">Video Files</translation>
@@ -1926,7 +1938,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Lift, then touch again</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Sync paused</translation>
-<translation id="3862134173397075045">Welcome to the Cast experience in Chrome!</translation>
 <translation id="3862693525629180217">Verify via built-in sensor</translation>
 <translation id="3862788408946266506">App with 'kiosk_only' manifest attribute must be installed in Chrome OS kiosk mode</translation>
 <translation id="3865414814144988605">Resolution</translation>
@@ -1975,6 +1986,7 @@
 <translation id="3926002189479431949">Smart Lock phone changed</translation>
 <translation id="3927932062596804919">Deny</translation>
 <translation id="3930737994424905957">Looking for devices</translation>
+<translation id="3930968231047618417">Background colour</translation>
 <translation id="3933283459331715412">Restore deleted password for <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Open audio in new tab</translation>
 <translation id="3936925983113350642">The password you choose will be required to restore this certificate later. Please record it in a safe location.</translation>
@@ -1994,6 +2006,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Imported From IE</translation>
 <translation id="3950820424414687140">Sign in</translation>
+<translation id="3950828138786918475">This tab is allowed to read a folder on your device.</translation>
 <translation id="3954354850384043518">In progress</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">You have no recently captured WebRTC event logs.</translation>
@@ -2012,6 +2025,7 @@
 <translation id="397105322502079400">Calculating...</translation>
 <translation id="3975565978598857337">Contacting server for realm failed</translation>
 <translation id="397703832102027365">Finalising...</translation>
+<translation id="3977886311744775419">Automatic updates don't download on this network type, but you can check for updates manually.</translation>
 <translation id="3979395879372752341">New extension added (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Enable <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Invalid save type entered.</translation>
@@ -2151,6 +2165,7 @@
 <translation id="4194570336751258953">Enable tap-to-click</translation>
 <translation id="4195643157523330669">Open in new tab</translation>
 <translation id="4195814663415092787">Continue where you left off</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> can save your changes directly to the following files. This site can save changes only while this tab is open.</translation>
 <translation id="4198146608511578238">Just hold the Launcher icon to talk to your Google Assistant.</translation>
 <translation id="4200689466366162458">Customised words</translation>
 <translation id="4200983522494130825">New &amp;tab</translation>
@@ -2198,7 +2213,6 @@
 <translation id="4267953847983678297">Automatically connect to mobile network</translation>
 <translation id="4268025649754414643">Key Encipherment</translation>
 <translation id="4270393598798225102">Version <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">No matches</translation>
 <translation id="4275663329226226506">Media</translation>
 <translation id="4275830172053184480">Restart your device</translation>
 <translation id="4278101229438943600">Your Assistant is ready</translation>
@@ -2347,6 +2361,7 @@
 <translation id="4533985347672295764">CPU Time</translation>
 <translation id="4534661889221639075">Try again.</translation>
 <translation id="4535127706710932914">Default Profile</translation>
+<translation id="4535767533210902251">The fingerprint sensor is the top-right key on your keyboard. Touch it lightly with any finger.</translation>
 <translation id="4538684596480161368">Always block unsandboxed plug-ins on <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Installed by enterprise policy.</translation>
 <translation id="4542520061254486227">Read your data on <ph name="WEBSITE_1" /> and <ph name="WEBSITE_2" /></translation>
@@ -2380,6 +2395,7 @@
 <translation id="457386861538956877">More...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Pair Bluetooth device</translation>
+<translation id="4578012756826807359">Your sign-in data was deleted successfully.</translation>
 <translation id="4579581181964204535">Unable to cast <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Error while restoring Linux</translation>
 <translation id="4582563038311694664">Reset all settings</translation>
@@ -2497,7 +2513,6 @@
 <translation id="4763830802490665879">Cookies from multiple sites will be cleared on exit.</translation>
 <translation id="4765582662863429759">Allows Android Messages to relay texts from your phone to your Chromebook</translation>
 <translation id="4768332406694066911">You have certificates from these organisations that identify you</translation>
-<translation id="4772404146526168240">Both screens</translation>
 <translation id="4776146737004271126">Open Android settings</translation>
 <translation id="4776917500594043016">Password for <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2605,7 +2620,6 @@
 <translation id="4927846293686536410">Sign in to get your bookmarks, history, passwords and other settings on all your devices. You'll also automatically be signed in to your Google services.</translation>
 <translation id="4929386379796360314">Print Destinations</translation>
 <translation id="4930714375720679147">Turn On</translation>
-<translation id="4931132176527519925">Always use mirroring</translation>
 <translation id="4932733599132424254">Date</translation>
 <translation id="4933484234309072027">embedded on <ph name="URL" /></translation>
 <translation id="493571969993549666">Add supervised user</translation>
@@ -2645,6 +2659,7 @@
 <translation id="4992066212339426712">Unmute</translation>
 <translation id="4992458225095111526">Confirm Powerwash</translation>
 <translation id="4992473555164495036">Your administrator has limited the available input methods.</translation>
+<translation id="4992866843815555470">Your dock needs to be serviced. Without a working fan your dock will shut down.</translation>
 <translation id="4992926179187649719">Turn on "Ok Google"</translation>
 <translation id="4994474651455208930">Allow sites to ask to become default handlers for protocols</translation>
 <translation id="4994754230098574403">Setting up</translation>
@@ -2783,7 +2798,6 @@
 <translation id="5233231016133573565">Process ID</translation>
 <translation id="5233638681132016545">New tab</translation>
 <translation id="5233736638227740678">&amp;Paste</translation>
-<translation id="5234764350956374838">Dismiss</translation>
 <translation id="5235050375939235066">Uninstall app?</translation>
 <translation id="5235750401727657667">Replace the page that you see when opening a new tab</translation>
 <translation id="5238278114306905396">The app "<ph name="EXTENSION_NAME" />" was automatically removed.</translation>
@@ -2848,6 +2862,7 @@
 <translation id="5319359161174645648">Google recommends Chrome</translation>
 <translation id="532247166573571973">The server may be unreachable. Try again later.</translation>
 <translation id="5324780743567488672">Set time zone automatically using your location</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – is allowed to save to original files</translation>
 <translation id="5327248766486351172">Name</translation>
 <translation id="5327570636534774768">This device is marked for management by a different domain. Deprovision it from that domain before setting up demo mode.</translation>
 <translation id="532943162177641444">Tap the notification on your <ph name="PHONE_NAME" /> to set up the mobile hotspot that can be used by this device.</translation>
@@ -2990,7 +3005,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> wants to</translation>
 <translation id="5534304873398226603">Discard photo or video</translation>
 <translation id="5535941515421698170">Also remove your existing data from this device</translation>
-<translation id="5537725057119320332">Cast</translation>
 <translation id="5539221284352502426">The password that you entered was rejected by the server. Possible reasons include: The password is too short. The password must include numbers or symbols. The password must be different from previous passwords.</translation>
 <translation id="5541687815721799001">Use app</translation>
 <translation id="5542132724887566711">Profile</translation>
@@ -3299,7 +3313,6 @@
 <translation id="5997337190805127100">Learn more about site access</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> results for '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="6002458620803359783">Preferred Voices</translation>
-<translation id="6005695835120147974">Media Router</translation>
 <translation id="6006484371116297560">Classic</translation>
 <translation id="6007240208646052708">Voice search in your language is not available.</translation>
 <translation id="6009781704028455063">Built-in sensor</translation>
@@ -3499,7 +3512,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{New printer on your network}other{New printers on your network}}</translation>
 <translation id="6286708577777130801">Saved password details</translation>
 <translation id="6289452883081499048">Personalised Google services such as Play</translation>
-<translation id="6290556621549272952">You can use this feature to display content from Chromium on your TV or other devices.</translation>
 <translation id="6291949900244949761">Ask when a site wants to access USB devices (recommended)</translation>
 <translation id="6291953229176937411">&amp;Show in Finder</translation>
 <translation id="6295158916970320988">All sites</translation>
@@ -3563,6 +3575,7 @@
 <translation id="6395423953133416962">Send <ph name="BEGIN_LINK1" />system information<ph name="END_LINK1" /> and <ph name="BEGIN_LINK2" />metrics<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Block sites from using motion sensors</translation>
 <translation id="6397094776139756010">Sync and personalisation options</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> will be able to save your changes directly to the files in the following folder. This site can save changes only while this tab is open.</translation>
 <translation id="6398715114293939307">Remove Google Play Store</translation>
 <translation id="6398765197997659313">Exit full screen</translation>
 <translation id="6399774419735315745">Spy</translation>
@@ -3607,11 +3620,13 @@
 <translation id="6455264371803474013">On specific sites</translation>
 <translation id="6455894534188563617">&amp;New Folder</translation>
 <translation id="6456394469623773452">Fine</translation>
+<translation id="6456955391422100996">Ad removed.</translation>
 <translation id="645705751491738698">Continue blocking JavaScript</translation>
 <translation id="6458701200018867744">Upload failed (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Use Selection for Find</translation>
 <translation id="6459799433792303855">Active window moved to another display.</translation>
 <translation id="6460601847208524483">Find Next</translation>
+<translation id="6461170143930046705">Searching for networks...</translation>
 <translation id="6463795194797719782">&amp;Edit</translation>
 <translation id="6466988389784393586">&amp;Open All Bookmarks</translation>
 <translation id="6467304607960172345">Optimise full-screen videos</translation>
@@ -3650,6 +3665,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">You're connected to a <ph name="NETWORK_TYPE" /> network.</translation>
 <translation id="6527303717912515753">Share</translation>
 <translation id="6528513914570774834">Allow other users of this device to use this network</translation>
 <translation id="652948702951888897">Chrome history</translation>
@@ -3746,7 +3762,6 @@
 <translation id="6680650203439190394">Rate</translation>
 <translation id="6681668084120808868">Take photo</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" will be uninstalled.</translation>
-<translation id="6685083257944113180">Stop, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Open Google Play</translation>
 <translation id="6686490380836145850">Close tabs to the right</translation>
 <translation id="6686817083349815241">Save your password</translation>
@@ -3854,6 +3869,7 @@
 <translation id="6845038076637626672">Open Maximised</translation>
 <translation id="6845325883481699275">Help improve Chrome security</translation>
 <translation id="6848388270925200958">At the moment, you have some cards that can only be used on this device</translation>
+<translation id="6850286078059909152">Text colour</translation>
 <translation id="6851497530878285708">App Enabled</translation>
 <translation id="6853388645642883916">Updater sleeping</translation>
 <translation id="68541483639528434">Close other tabs</translation>
@@ -3903,7 +3919,6 @@
 <translation id="6923132443355966645">Scroll/Click</translation>
 <translation id="6923633482430812883">Error mounting share. Please check that the file server that you are connecting to supports SMBv2 or later.</translation>
 <translation id="6930036377490597025">External security key or built-in sensor</translation>
-<translation id="6930242544192836755">Duration</translation>
 <translation id="693807610556624488">Write operation exceeds the maximum length of the attribute to: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Please sign in to <ph name="TOKEN_NAME" /> to authenticate to <ph name="HOST_NAME" /> with your certificate.</translation>
 <translation id="6943176775188458830">Cancel printing</translation>
@@ -3917,6 +3932,7 @@
 <translation id="6951153907720526401">Payment Handlers</translation>
 <translation id="6951663584153258142">Your organisation asks that you update this device</translation>
 <translation id="6953878494808481632">Related info</translation>
+<translation id="6953916367503892689">{0,plural, =1{File: <ph name="FILES" />}other{Files: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Inspect Pop-up</translation>
 <translation id="6957044667612803194">This security key doesn’t support PINs</translation>
 <translation id="6957231940976260713">Service name</translation>
@@ -4129,7 +4145,6 @@
 <translation id="7254554697254365959">This Page Could Not Be Translated.</translation>
 <translation id="7254951428499890870">Are you sure that you want to launch "<ph name="APP_NAME" />" in diagnostic mode?</translation>
 <translation id="7255002516883565667">At the moment, you have one card that can only be used on this device</translation>
-<translation id="7255220508626648026">Casting: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Touch your security key again to confirm reset. All information stored on the security key, including its PIN, will be erased.</translation>
 <translation id="7255935316994522020">Apply</translation>
 <translation id="7256069762010468647">Site is using your camera</translation>
@@ -4263,6 +4278,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Open Location...</translation>
 <translation id="7458168200501453431">Uses the same spell checker that’s used in Google search. Text that you type in the browser is sent to Google.</translation>
+<translation id="7460045493116006516">Current theme that you have installed</translation>
 <translation id="7461924472993315131">Pin</translation>
 <translation id="746216226901520237">Next time, your phone will unlock your <ph name="DEVICE_TYPE" />. You can turn off Smart Lock in Settings.</translation>
 <translation id="7463006580194749499">Add person</translation>
@@ -4322,6 +4338,7 @@
 <translation id="7554791636758816595">New Tab</translation>
 <translation id="7556033326131260574">Smart Lock couldn’t verify your account. Type your password to enter.</translation>
 <translation id="7556242789364317684">Unfortunately, <ph name="SHORT_PRODUCT_NAME" /> is unable to recover your settings. To fix the error, <ph name="SHORT_PRODUCT_NAME" /> must reset your device with Powerwash.</translation>
+<translation id="7559444627302317199">Please check your network connection and retry.</translation>
 <translation id="7559719679815339381">Please wait... Kiosk app is in the process of being updated. Do not remove the USB stick.</translation>
 <translation id="7561196759112975576">Always</translation>
 <translation id="7563991800558061108">To recover from this error, you will need to sign in to your Google Account
@@ -4564,7 +4581,6 @@
 <translation id="7887334752153342268">Duplicate</translation>
 <translation id="7887864092952184874">Bluetooth mouse paired</translation>
 <translation id="7889565820482017512">Display Size</translation>
-<translation id="7889966925761734854">Seek</translation>
 <translation id="7893008570150657497">Access photos, music and other media from your computer</translation>
 <translation id="7893153962594818789">Bluetooth is off on this <ph name="DEVICE_TYPE" />. Enter your password, and turn on Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Default)</translation>
@@ -4572,7 +4588,6 @@
 <translation id="7898627924844766532">Keep in toolbar</translation>
 <translation id="7898725031477653577">Always translate</translation>
 <translation id="790040513076446191">Manipulate privacy-related settings</translation>
-<translation id="7902874111237641165">Smooth Motion [beta]</translation>
 <translation id="7903345046358933331">The page has become unresponsive. You can wait for it to become responsive or close it.</translation>
 <translation id="7903742244674067440">You have certificates on file that identify these certificate authorities</translation>
 <translation id="7903925330883316394">Utility: <ph name="UTILITY_TYPE" /></translation>
@@ -4684,6 +4699,7 @@
 <translation id="8037117027592400564">Read all text spoken using synthesised speech</translation>
 <translation id="8037357227543935929">Ask (default)</translation>
 <translation id="803771048473350947">File</translation>
+<translation id="8042142357103597104">Text opacity</translation>
 <translation id="8044899503464538266">Slow</translation>
 <translation id="8045253504249021590">Sync has been stopped via the Google Dashboard.</translation>
 <translation id="8045923671629973368">Enter application ID or web store URL</translation>
@@ -4720,7 +4736,6 @@
     <ph name="BEGIN_PARAGRAPH5" />You can turn this service off in Settings.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PINs do not match</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> is using proxy settings from an extension</translation>
-<translation id="8099495042588009598">More permissions</translation>
 <translation id="8101987792947961127">Powerwash required on next reboot</translation>
 <translation id="8102159139658438129">Go to <ph name="LINK_BEGIN" />Settings<ph name="LINK_END" /> to see options for your connected phone</translation>
 <translation id="8104696615244072556">Powerwash your <ph name="IDS_SHORT_PRODUCT_NAME" /> device and return to the previous version.</translation>
@@ -4772,8 +4787,10 @@
     I don't think this site should be blocked.</translation>
 <translation id="8184288427634747179">Switch to <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">More info</translation>
+<translation id="8184472985242519288">Uniform</translation>
 <translation id="8185331656081929126">Show notifications when new printers are detected on the network</translation>
 <translation id="8186609076106987817">The server could not find the file.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> can read all the files in the following folder. This site can see changes to the folder only while this tab is open.</translation>
 <translation id="8188389033983459049">Check your device settings and turn it on to continue</translation>
 <translation id="8190193592390505034">Connecting to <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Manage your apps, extensions, and themes</translation>
@@ -4877,7 +4894,6 @@
 <translation id="833986336429795709">To open this link, choose an app</translation>
 <translation id="8342861492835240085">Select a collection</translation>
 <translation id="834290227245955730">Invalid PIN. Retries left: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Use high bandwidth for best video or animation. Other people with slow connections may not see your content.</translation>
 <translation id="8351419472474436977">This extension has taken control of your proxy settings, which means it can change, break or eavesdrop on anything that you do online. If you aren't sure why this change happened, you probably don't want it.</translation>
 <translation id="8351630282875799764">Battery isn't charging</translation>
 <translation id="835238322900896202">An error occurred during uninstallation. Please uninstall through the Terminal.</translation>
@@ -4910,9 +4926,11 @@
 <translation id="839736845446313156">Register</translation>
 <translation id="8398877366907290961">Proceed anyway</translation>
 <translation id="8400146488506985033">Manage people</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> can save your changes directly to the files in the following folder. This site can save changes only while this tab is open.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Ask first (recommended)</translation>
 <translation id="8418445294933751433">&amp;Show as tab</translation>
+<translation id="8418905021510211421">This page is allowed to read a folder on your device.</translation>
 <translation id="8419098111404128271">Search results for '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="8419368276599091549">Welcome to your <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Change</translation>
@@ -4932,6 +4950,7 @@
 <translation id="8438566539970814960">Make searches and browsing better</translation>
 <translation id="8439506636278576865">Offer to translate pages in this language</translation>
 <translation id="8440630305826533614">Linux apps</translation>
+<translation id="844241640324986723">Deleting your sign-in data failed.</translation>
 <translation id="8443338615972234259">Please create a new account for your supervised user now.</translation>
 <translation id="8446884382197647889">Learn More</translation>
 <translation id="8447409163267621480">Include either Ctrl or Alt</translation>
@@ -4947,8 +4966,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">This supervised user may have been deleted or disabled by the manager. Please contact the manager if you would like to continue signing in as this user.</translation>
 <translation id="846374874681391779">Downloads bar</translation>
-<translation id="8463807869745732775">"&gt;
-    Stored security key sign-in data</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> disabled.</translation>
 <translation id="8464132254133862871">This user account is not eligible for the service.</translation>
 <translation id="8465252176946159372">Not valid</translation>
@@ -5014,6 +5031,7 @@
 <translation id="8569002732135253578">Now printing <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">No destinations found</translation>
 <translation id="8571213806525832805">Last 4 weeks</translation>
+<translation id="8573403125070227391">This ad uses too many resources for your device, so Chrome removed it.</translation>
 <translation id="8574990355410201600">Always allow sound on <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Hold <ph name="KEY_EQUIVALENT" /> to quit</translation>
 <translation id="8578639784464423491">Cannot exceed 99 letters</translation>
@@ -5037,13 +5055,13 @@
 <translation id="8609465669617005112">Move up</translation>
 <translation id="8610103157987623234">Incorrect format, please try again</translation>
 <translation id="8615618338313291042">Incognito App: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Drop shadow</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Roaming status</translation>
 <translation id="8620765578342452535">Configure network connections</translation>
 <translation id="8621866727807194849">There's harmful software on your computer. Chrome is removing it, restoring your settings and disabling extensions. This will make your browser work normally again.</translation>
 <translation id="8621979332865976405">Share your entire screen</translation>
 <translation id="862542460444371744">&amp;Extensions</translation>
-<translation id="8627151598708688654">Select source</translation>
 <translation id="862727964348362408">Suspended</translation>
 <translation id="862750493060684461">CSS cache</translation>
 <translation id="8627795981664801467">Secure connections only</translation>
@@ -5097,6 +5115,7 @@
 <translation id="8688579245973331962">Don't see your name?</translation>
 <translation id="8688591111840995413">Bad password</translation>
 <translation id="8688672835843460752">Available</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Open &amp;Location...</translation>
 <translation id="869884720829132584">Applications menu</translation>
 <translation id="869891660844655955">Expiry date</translation>
@@ -5260,6 +5279,7 @@
 <translation id="891365694296252935">Send usage and diagnostic data. This device is currently automatically sending diagnostic, device and app usage data to Google. This won't be used to identify your child, and will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. This setting is enforced by the owner. If additional Web &amp; App Activity is turned on for your child, this data may be saved to their Google Account. <ph name="BEGIN_LINK1" />Find out more<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Loading suggestion</translation>
 <translation id="8916476537757519021">Incognito Subframe: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – is allowed to read a folder on your device</translation>
 <translation id="8919275547519617350">To get all of your passwords on all your devices, sign in and turn on sync.</translation>
 <translation id="8921366488406707015">Verifying your security key...</translation>
 <translation id="8922013791253848639">Always allow ads on this site</translation>
@@ -5289,7 +5309,6 @@
 <translation id="8965037249707889821">Enter old password</translation>
 <translation id="8966870118594285808">Reopen a tab if you accidentally closed it</translation>
 <translation id="8967866634928501045">Press Alt Shift A to show</translation>
-<translation id="8970203673128054105">View cast mode list</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Please check with your network administrator to make sure that the firewall is not blocking downloads from Google servers.</translation>
 <translation id="8973557916016709913">Remove zoom level</translation>
@@ -5438,6 +5457,7 @@
 <translation id="9214520840402538427">Oops!  The initialisation of the installation-time attributes has timed out.  Please contact your support representative.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" added</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> will be able to save your changes directly to the following file. This site can save changes only while this tab is open.</translation>
 <translation id="9218430445555521422">Set as default</translation>
 <translation id="9219103736887031265">Images</translation>
 <translation id="9220525904950070496">Remove account</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 3afa423..d1ec92f 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Se produjo un error al iniciar la máquina virtual. Vuelve a intentarlo.</translation>
 <translation id="1089439967362294234">Cambiar contraseña</translation>
 <translation id="1090126737595388931">No se ejecutan aplicaciones de fondo</translation>
+<translation id="1090290614672149983">¿Quieres guardar los cambios en el archivo original?</translation>
 <translation id="1090918500949388876">Di "Ok Google" con la pantalla encendida para acceder al Asistente en cualquier momento</translation>
 <translation id="1091767800771861448">Presiona ESCAPE para omitir (solo compilaciones no oficiales).</translation>
 <translation id="1093457606523402488">Redes visibles:</translation>
 <translation id="1094607894174825014">Se solicitó una operación de lectura o escritura con un intervalo no válido en: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Antes de acceder, ingresa como Invitado para activar la red <ph name="NETWORK_ID" />.</translation>
+<translation id="110029732810301672">Se permite esta pestaña para guardar en archivos originales.</translation>
 <translation id="1103523840287552314">Siempre traducir <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Interrumpir</translation>
 <translation id="1110155001042129815">Esperar</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Gafas de sol</translation>
 <translation id="1151917987301063366">Siempre permitir que <ph name="HOST" /> acceda a los sensores</translation>
 <translation id="1153356358378277386">Dispositivos sincronizados</translation>
-<translation id="1156488781945104845">Hora actual</translation>
 <translation id="1161575384898972166">Accede a <ph name="TOKEN_NAME" /> para exportar el certificado de cliente.</translation>
 <translation id="1163931534039071049">&amp;Ver fuente de marco</translation>
 <translation id="1164674268730883318">¿Deseas desactivar Smart Lock para el dispositivo <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Configuración de almacenamiento de Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies y otros datos de sitios</translation>
 <translation id="127668050356036882">Cerrar todas tus ventanas</translation>
-<translation id="1277908057200820621">Ver lista de dispositivos</translation>
 <translation id="1280820357415527819">Buscando redes móviles</translation>
 <translation id="1285320974508926690">Nunca traducir este sitio</translation>
 <translation id="1285484354230578868">Almacenar datos en tu cuenta de Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Red local, no en modo roaming</translation>
 <translation id="1316136264406804862">Buscando...</translation>
 <translation id="1316495628809031177">Se pausó la sincronización</translation>
+<translation id="1317637799698924700">La estación de conectores funcionará en modo compatible con USB tipo C.</translation>
 <translation id="1322046419516468189">Consulta y administra las contraseñas guardadas en tu <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Accede a Chrome para obtener las pestañas de tus otros dispositivos.</translation>
 <translation id="1327074568633507428">Impresora en Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="ENROLLMENT_DOMAIN" /> administra tu <ph name="BEGIN_LINK" />navegador<ph name="END_LINK" /></translation>
 <translation id="1366177842110999534">Ejecuta IDE, editores y herramientas de Linux en tu <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Más información&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Selecciona un archivo</translation>
+<translation id="1370749010280229230">La pantalla conectada al conector tiene un problema</translation>
 <translation id="1371301976177520732">Tus favoritos, las contraseñas, el historial y mucho más en todos tus dispositivos</translation>
 <translation id="1372841398847029212">Sincronizar con tu cuenta</translation>
 <translation id="1374844444528092021">El certificado que requiere la red "<ph name="NETWORK_NAME" />" no está instalado o ya no es válido. Obtén un nuevo certificado e intenta volver a conectarte.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Página web (un único archivo)</translation>
 <translation id="1451917004835509682">Agregar persona supervisada</translation>
 <translation id="1454223536435069390">Tomar captura de pantalla</translation>
+<translation id="1458243790901188746">{0,plural, =1{Carpeta: <ph name="DIRECTORIES" />}other{Carpetas: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Motores de búsqueda agregados por extensiones</translation>
 <translation id="146000042969587795">Este marco se ha bloqueado porque incluye contenido no seguro.</translation>
 <translation id="146219525117638703">Estado de ONC</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">Mostrar opciones de entrada</translation>
 <translation id="1651008383952180276">Debes ingresar la misma frase de contraseña dos veces</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Agrega la impresora a Google Cloud Print para poder imprimir desde todas partes.}other{Agrega # impresoras a Google Cloud Print para poder imprimir desde todas partes.}}</translation>
+<translation id="1656528038316521561">Opacidad del fondo</translation>
 <translation id="1657406563541664238">Ayúdanos a <ph name="PRODUCT_NAME" /> mejorar enviando automáticamente estadísticas de uso e informes de fallos a Google.</translation>
 <translation id="1658424621194652532">Esta página está accediendo al micrófono.</translation>
 <translation id="1660204651932907780">Permitir que los sitios reproduzcan sonido (recomendado)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> desea ver la marca y el modelo de tu llave de seguridad</translation>
 <translation id="1679068421605151609">Herramientas del programador</translation>
 <translation id="1679806121152819234">VM del complemento</translation>
+<translation id="1679810534535368772">¿Confirmas que quieres salir?</translation>
 <translation id="167983332380191032">El servicio de administración envió un error de HTTP.</translation>
 <translation id="1680849702532889074">Se produjo un error durante la instalación de la app de Linux.</translation>
 <translation id="16815041330799488">No permitir que los sitios vean el texto ni las imágenes copiados en el portapapeles</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">Identificador de medios protegidos</translation>
 <translation id="175196451752279553">Volver a abrir una pestaña cerrada</translation>
 <translation id="1753905327828125965">Más visitados</translation>
+<translation id="1755601632425835748">Tamaño del texto</translation>
 <translation id="1756681705074952506">Método de entrada</translation>
 <translation id="1757301747492736405">Desinstalación pendiente</translation>
 <translation id="175772926354468439">Habilitar tema</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">Meno&amp;r</translation>
 <translation id="1919345977826869612">Anuncios</translation>
 <translation id="1919814239594435008">Se habilitaron complementos no incluidos en la zona de pruebas</translation>
+<translation id="1920390473494685033">Contactos</translation>
 <translation id="1921050530041573580">Sincronizar tu teléfono con Mensajes</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> ppp</translation>
 <translation id="1924559387127953748">Obtener las funciones inteligentes de Google en <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">Pestaña de incógnito: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">El complemento <ph name="PEPPER_PLUGIN_NAME" /> del dominio <ph name="PEPPER_PLUGIN_DOMAIN" /> desea acceder a tu computadora</translation>
 <translation id="2178614541317717477">Compromiso de entidad de certificación</translation>
+<translation id="2179849162388791084">No se pudieron recopilar datos de acceso de tu llave de seguridad.</translation>
 <translation id="218070003709087997">Usa un número para indicar la cantidad de copias que deseas imprimir (1 a 999).</translation>
 <translation id="2184515124301515068">Permitir que Chrome elija cuándo los sitios pueden reproducir sonido (recomendado)</translation>
 <translation id="2187895286714876935">Error en el servidor de importación de certificado</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">Todas las cookies y todos los datos de sitios</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 elemento copiado}other{# elementos copiados}}</translation>
 <translation id="2278562042389100163">Abrir ventana del navegador</translation>
-<translation id="2279874276457403668">Solamente es posible crear una sesión a la vez.</translation>
 <translation id="2280486287150724112">Margen derecho</translation>
 <translation id="2282146716419988068">Proceso de GPU</translation>
 <translation id="2282155092769082568">URL de autoconfiguración:</translation>
@@ -872,7 +879,7 @@
 <translation id="2294358108254308676">¿Deseas instalar <ph name="PRODUCT_NAME" />?</translation>
 <translation id="2297705863329999812">Buscar impresoras</translation>
 <translation id="2300383962156589922">Personaliza y controla <ph name="APP_NAME" /></translation>
-<translation id="2300800387751317588">La sincronización está pausada porque borras cookies en el inicio. Para continuar con la sincronización, cambia <ph name="COOKIE_SETTINGS_LINK" />.</translation>
+<translation id="2300800387751317588">La sincronización está pausada porque borraste cookies en el inicio. Para continuar con la sincronización, cambia <ph name="COOKIE_SETTINGS_LINK" />.</translation>
 <translation id="2301382460326681002">El directorio de raíz de la extensión no es válido.</translation>
 <translation id="23030561267973084">"<ph name="EXTENSION_NAME" />" ha solicitado permisos adicionales.</translation>
 <translation id="2307462900900812319">Configurar red</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">Las notas de la pantalla bloqueada se guardan automáticamente en <ph name="LOCK_SCREEN_APP_NAME" />. La nota más reciente permanecerá en la pantalla bloqueada.</translation>
 <translation id="2353297238722298836">Cámara y micrófono permitidos</translation>
 <translation id="2356070529366658676">Preguntar</translation>
-<translation id="2357949918965361754">Puedes usar esta función para ver contenido de Chrome en tu TV u otros dispositivos.</translation>
 <translation id="2359345697448000899">Para administrar tus extensiones, haz clic en la opción Extensiones en el menú Herramientas.</translation>
 <translation id="2359808026110333948">Continuar</translation>
 <translation id="236117173274098341">Optimizar</translation>
@@ -962,6 +968,7 @@
 <translation id="2436720498717686157">Tu organización debe actualizar este dispositivo de inmediato</translation>
 <translation id="2439545803278355377">Ingresa el PIN nuevo. Un PIN debe tener al menos cuatro caracteres y puede incluir letras, números y otros caracteres.</translation>
 <translation id="2440604414813129000">Ver códig&amp;o fuente</translation>
+<translation id="2442916515643169563">Sombra del texto</translation>
 <translation id="2444119669991608829">¿La página no está en <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Se requiere un directorio de raíz de la extensión.</translation>
 <translation id="2445484935443597917">Crear un perfil nuevo</translation>
@@ -1177,6 +1184,7 @@
 <translation id="2738771556149464852">No después</translation>
 <translation id="2739191690716947896">Depurar</translation>
 <translation id="2739240477418971307">Cambiar la configuración de accesibilidad</translation>
+<translation id="274029851662193272">Disminuida</translation>
 <translation id="2740393541869613458">revisar sitios web que visitó el usuario supervisado; y</translation>
 <translation id="2741912629735277980">Mostrar IU en la pantalla de acceso</translation>
 <translation id="274290345632688601">Restableciendo los archivos y apps de Linux</translation>
@@ -1225,6 +1233,7 @@
 <translation id="2806891468525657116">El acceso directo ya existe</translation>
 <translation id="2807517655263062534">Los archivos que descargas aparecen aquí</translation>
 <translation id="2809586584051668049">y <ph name="NUMBER_ADDITIONAL_DISABLED" /> más</translation>
+<translation id="2812049959647166806">No se admite Thunderbolt</translation>
 <translation id="2812944337881233323">Intenta salir y volver a acceder</translation>
 <translation id="2812989263793994277">No mostrar imágenes</translation>
 <translation id="281390819046738856">La solicitud no se pudo firmar.</translation>
@@ -1247,7 +1256,6 @@
 <translation id="2841837950101800123">Proveedor</translation>
 <translation id="2844169650293029770">Dispositivo USB-C (puerto lateral izquierdo delantero)</translation>
 <translation id="2845382757467349449">Mostrar siempre la barra de favoritos</translation>
-<translation id="2847759467426165163">Transmitir a</translation>
 <translation id="284805635805850872">¿Deseas quitar software dañino?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Se produjo un error en la limpieza</translation>
@@ -1294,6 +1302,7 @@
     Mensaje del servidor: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Agregar galería de medios por directorio</translation>
 <translation id="2910318910161511225">Conéctate a una red y vuelve a intentarlo</translation>
+<translation id="2910518940971897750">Guardar en el archivo original</translation>
 <translation id="2913331724188855103">Permitir que todos los sitios guarden y lean datos de cookies (recomendado)</translation>
 <translation id="2915102088417824677">Ver el registro de actividad</translation>
 <translation id="2915873080513663243">Búsqueda automática</translation>
@@ -1358,12 +1367,14 @@
 <translation id="3013291976881901233">Dispositivos MIDI</translation>
 <translation id="3015639418649705390">Reiniciar ahora</translation>
 <translation id="3016329696181678353">No se pudo configurar <ph name="PRINTER_NAME" /> automáticamente. Especifica los detalles avanzados de la impresora.</translation>
+<translation id="3016381065346027039">No hay entradas de registro</translation>
 <translation id="3016641847947582299">Componente actualizado</translation>
 <translation id="3016780570757425217">Determinar tu ubicación</translation>
 <translation id="3017079585324758401">Imagen de fondo</translation>
 <translation id="3020183492814296499">Combinación de teclas</translation>
 <translation id="3020990233660977256">Número de serie: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Mariposa</translation>
+<translation id="3021408157810018664">¿Quieres guardar los cambios en los archivos originales?</translation>
 <translation id="3021426244864538700">Acceso a los datos de este sitio</translation>
 <translation id="3021678814754966447">&amp;Ver fuente del marco</translation>
 <translation id="3022978424994383087">No entendí.</translation>
@@ -1456,6 +1467,7 @@
 <translation id="3170072451822350649">También puedes omitir el acceso y <ph name="LINK_START" />navegar como invitado<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Un sitio está accediendo a la entrada de video</translation>
 <translation id="3177909033752230686">Idioma de la página:</translation>
+<translation id="3179982752812949580">Fuente del texto</translation>
 <translation id="3181954750937456830">Navegación segura (te protege a ti y tu dispositivo de sitios peligrosos)</translation>
 <translation id="3182749001423093222">Corrector ortográfico</translation>
 <translation id="3183139917765991655">Importador de perfiles</translation>
@@ -1508,7 +1520,6 @@
 <translation id="3275778913554317645">Abrir como ventana</translation>
 <translation id="3278001907972365362">Tus Cuentas de Google necesitan atención</translation>
 <translation id="3279230909244266691">Este proceso puede demorar unos minutos. Se está iniciando la máquina virtual.</translation>
-<translation id="3279741024917655738">Activar opción de mostrar los videos en pantalla completa</translation>
 <translation id="3280237271814976245">Gu&amp;ardar como...</translation>
 <translation id="3280243678470289153">Seguir en Chrome</translation>
 <translation id="3281892622610078515">Archivos y programas que se guardarán en cuarentena:</translation>
@@ -1530,7 +1541,7 @@
 <translation id="3303855915957856445">No se encontraron resultados en la búsqueda</translation>
 <translation id="3305389145870741612">El proceso de formato puede tardar algunos segundos. Espera.</translation>
 <translation id="3305661444342691068">Abrir PDF en vista previa</translation>
-<translation id="3306684685104080068">Habilitar la transmisión de contenido a servicios basados en la nube como Google Hangouts</translation>
+<translation id="3307871847038842490">Se permite esta página para guardar en archivos originales.</translation>
 <translation id="3308006649705061278">Unidad organizativa (OU)</translation>
 <translation id="3308116878371095290">Se impidió que esta página configure cookies.</translation>
 <translation id="3308134619352333507">Ocultar botón</translation>
@@ -1560,7 +1571,7 @@
 <translation id="3348038390189153836">Se detectó un dispositivo removible.</translation>
 <translation id="3349933790966648062">Espacio en memoria</translation>
 <translation id="3350117557200012647">Activar el modo de sincronización</translation>
-<translation id="3350263973613584174">Esta llave de seguridad no tiene almacenado ningún dato de acceso.</translation>
+<translation id="3350263973613584174">Esta llave de seguridad no tiene almacenados datos de acceso.</translation>
 <translation id="3355936511340229503">Error de conexión</translation>
 <translation id="3356580349448036450">Completo</translation>
 <translation id="3359256513598016054">Restricciones de directivas para certificados</translation>
@@ -1636,7 +1647,6 @@
 <translation id="3462413494201477527">¿Cancelar la configuración de la cuenta?</translation>
 <translation id="3464012987031883895">Un sitio está accediendo a la entrada de audio</translation>
 <translation id="346431825526753">Esta es una cuenta para niños administrada por <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Transmite un archivo de audio o video</translation>
 <translation id="3468999815377931311">Teléfono Android</translation>
 <translation id="3470442499439619530">Eliminar este usuario</translation>
 <translation id="3473479545200714844">Lupa</translation>
@@ -1659,6 +1669,7 @@
 <translation id="3496213124478423963">Alejar</translation>
 <translation id="3497560059572256875">Compartir doodle</translation>
 <translation id="3505030558724226696">Revocar el acceso al dispositivo</translation>
+<translation id="3505635633742443645">No se puede usar el puerto HDMI del conector cuando se usa el puerto USB tipo C para salida de video. Usa otro puerto para una de las pantallas.</translation>
 <translation id="3507421388498836150">Permisos actuales para "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Vuelve a buscar dispositivos Bluetooth</translation>
 <translation id="3508920295779105875">Elegir otra carpeta...</translation>
@@ -1711,6 +1722,7 @@
 <translation id="3576324189521867626">Se instaló correctamente</translation>
 <translation id="3578594933904494462">Se está compartiendo el contenido de esta pestaña.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; quiere compartir una impresora &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; con un grupo del cual eres propietario: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Si aceptas, todos los miembros del grupo podrán usar esa impresora para imprimir.</translation>
+<translation id="357889014807611375">Wi-Fi de uso medido</translation>
 <translation id="3584169441612580296">Leer y cambiar fotos, música y otro contenido multimedia desde tu computadora</translation>
 <translation id="3587482841069643663">Todos</translation>
 <translation id="358796204584394954">Escribe este código en el dispositivo "<ph name="DEVICE_NAME" />" para sincronizar:</translation>
@@ -1721,6 +1733,7 @@
 <translation id="359283478042092570">Ingresar</translation>
 <translation id="3593965109698325041">Restricciones para el nombre del certificado</translation>
 <translation id="3596235046596950091">Habilitar los servicios de nube</translation>
+<translation id="3599221874935822507">Elevada</translation>
 <translation id="3599863153486145794">Borra el historial de todos los dispositivos en los que accediste. Es posible que tu cuenta de Google tenga otros formularios del historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Información de solicitud web</translation>
 <translation id="3600792891314830896">Silenciar los sitios que reproducen sonido</translation>
@@ -1735,6 +1748,7 @@
 <translation id="3612673635130633812">Descargado por &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Mostrar <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Abrir en una pestaña nueva</translation>
+<translation id="3615073365085224194">Toca el sensor de huellas digitales con el dedo</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">Eliminar datos de navega&amp;ción...</translation>
 <translation id="3617891479562106823">Los fondos no están disponibles. Vuelve a intentarlo más tarde.</translation>
@@ -1816,7 +1830,6 @@
 <translation id="3719826155360621982">Página principal</translation>
 <translation id="3720996970802414353">Cambiar de todos modos</translation>
 <translation id="3722108462506185496">Se produjo un error al iniciar el servicio de máquina virtual. Vuelve a intentarlo.</translation>
-<translation id="3723158278575423087">¡Bienvenido a la experiencia de transmisión en Chromium!</translation>
 <translation id="3725367690636977613">páginas</translation>
 <translation id="3726137731714254362">Si quitas carpetas desde aquí, se detendrá el uso compartido, pero no se borrarán los archivos.</translation>
 <translation id="3727148787322499904">Si cambias esta configuración, las redes compartidas se verán afectadas</translation>
@@ -1851,7 +1864,6 @@
 <translation id="3764314093345384080">Información detallada sobre la compilación</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Comunicarse con un dispositivo USB}other{Comunicarse con # dispositivos USB}}</translation>
 <translation id="3765246971671567135">No se pudo leer la política del modo de demostración sin conexión.</translation>
-<translation id="3766223500670287046">Pantalla remota</translation>
 <translation id="3768037234834996183">Sincronizando tus preferencias…</translation>
 <translation id="377050016711188788">Helado</translation>
 <translation id="3771294271822695279">Archivos de video</translation>
@@ -1924,7 +1936,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Levanta el dedo y vuelve a tocar</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Se pausó la sincronización</translation>
-<translation id="3862134173397075045">¡Bienvenido a la experiencia de transmisión en Chrome!</translation>
 <translation id="3862693525629180217">Verificar mediante el sensor incorporado</translation>
 <translation id="3862788408946266506">Se debe instalar la app con el atributo del manifiesto "kiosk_only" en el modo kiosco del Sistema operativo Chrome</translation>
 <translation id="3865414814144988605">Resolución</translation>
@@ -1973,6 +1984,7 @@
 <translation id="3926002189479431949">Cambió el teléfono con Smart Lock</translation>
 <translation id="3927932062596804919">Rechazar</translation>
 <translation id="3930737994424905957">Buscando dispositivos</translation>
+<translation id="3930968231047618417">Color del fondo</translation>
 <translation id="3933283459331715412">Restablecer la contraseña eliminada de <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">Abrir audio en una nueva pestaña</translation>
 <translation id="3936925983113350642">La contraseña que selecciones se te pedirá para restablecer este certificado más tarde. Guárdala en un lugar seguro.</translation>
@@ -1992,6 +2004,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importado de Internet Explorer</translation>
 <translation id="3950820424414687140">Acceder</translation>
+<translation id="3950828138786918475">Se permite esta pestaña para leer una carpeta del dispositivo.</translation>
 <translation id="3954354850384043518">En curso</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> × <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">No capturaste ningún registro de acontecimientos de WebRTC recientemente.</translation>
@@ -2010,6 +2023,7 @@
 <translation id="397105322502079400">Calculando...</translation>
 <translation id="3975565978598857337">Comunicándose con el servidor debido a un error en el dominio</translation>
 <translation id="397703832102027365">Finalizando...</translation>
+<translation id="3977886311744775419">Las actualizaciones automáticas no se descargan en este tipo de red, pero puedes buscar actualizaciones de forma manual.</translation>
 <translation id="3979395879372752341">Se agregó una extensión nueva (<ph name="EXTENSION_NAME" />).</translation>
 <translation id="3979748722126423326">Habilitar <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Se ingresó un tipo de almacenaje no válido.</translation>
@@ -2130,7 +2144,7 @@
 <translation id="4147911968024186208">Vuelve a intentarlo. Si vuelves a ver este error, comunícate con tu representante de asistencia.</translation>
 <translation id="4150125039112138020">|</translation>
 <translation id="4150201353443180367">Pantalla</translation>
-<translation id="4150234330364554482">Usa una estación de conector OEM diseñada para funcionar con esta Chromebook.</translation>
+<translation id="4150234330364554482">Usa una estación de conexión OEM diseñada para funcionar con esta Chromebook.</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 pestaña}other{# pestañas}}</translation>
 <translation id="4154664944169082762">Huellas digitales</translation>
 <translation id="4157869833395312646">Criptografía controlada por servidor de Microsoft</translation>
@@ -2149,6 +2163,7 @@
 <translation id="4194570336751258953">Habilitar el punteo para hacer clic</translation>
 <translation id="4195643157523330669">Abrir en una pestaña nueva</translation>
 <translation id="4195814663415092787">Continuar la sesión desde donde la dejaste</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> puede guardar los cambios directamente en los archivos que se indican más abajo. Este sitio puede guardar los cambios solo cuando se encuentre abierta esta pestaña.</translation>
 <translation id="4198146608511578238">Mantén presionado el ícono de Launcher para hablar con el Asistente de Google.</translation>
 <translation id="4200689466366162458">Palabras personalizadas</translation>
 <translation id="4200983522494130825">Nueva pes&amp;taña</translation>
@@ -2196,7 +2211,6 @@
 <translation id="4267953847983678297">Conectar a la red celular de forma automática</translation>
 <translation id="4268025649754414643">Cifrado de clave</translation>
 <translation id="4270393598798225102">Versión <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">No hay coincidencias</translation>
 <translation id="4275663329226226506">Multimedia</translation>
 <translation id="4275830172053184480">Reiniciar tu dispositivo</translation>
 <translation id="4278101229438943600">Tu Asistente está listo</translation>
@@ -2345,6 +2359,7 @@
 <translation id="4533985347672295764">Tiempo de CPU</translation>
 <translation id="4534661889221639075">Vuelve a intentarlo.</translation>
 <translation id="4535127706710932914">Perfil predeterminado</translation>
+<translation id="4535767533210902251">El sensor de huellas digitales es la opción de la parte superior derecha del teclado. Tócalo suavemente con un dedo.</translation>
 <translation id="4538684596480161368">Siempre bloquear los complementos no incluidos en la zona de pruebas en <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Instalada por una política empresarial</translation>
 <translation id="4542520061254486227">Leer los datos en <ph name="WEBSITE_1" /> y <ph name="WEBSITE_2" /></translation>
@@ -2378,6 +2393,7 @@
 <translation id="457386861538956877">Más ...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Sincronizar dispositivo Bluetooth</translation>
+<translation id="4578012756826807359">Tus datos de acceso se borraron correctamente.</translation>
 <translation id="4579581181964204535">No se puede transmitir <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Se produjo un error al restablecer Linux</translation>
 <translation id="4582563038311694664">Restablecer toda la configuración</translation>
@@ -2495,7 +2511,6 @@
 <translation id="4763830802490665879">Las cookies de varios sitios se borrarán al salir.</translation>
 <translation id="4765582662863429759">Permite que Mensajes Android transfiera mensajes de texto del teléfono a tu Chromebook</translation>
 <translation id="4768332406694066911">Tienes certificados de esas organizaciones que te identifican</translation>
-<translation id="4772404146526168240">Ambas pantallas</translation>
 <translation id="4776146737004271126">Abrir la configuración de Android</translation>
 <translation id="4776917500594043016">Contraseña para <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2603,7 +2618,6 @@
 <translation id="4927846293686536410">Accede para obtener tus favoritos, historial, contraseñas y otras opciones de configuración en todos tus dispositivos. Además, accederás de forma automática a los servicios de Google.</translation>
 <translation id="4929386379796360314">Destinos de impresión</translation>
 <translation id="4930714375720679147">Activar</translation>
-<translation id="4931132176527519925">Usar siempre la duplicación</translation>
 <translation id="4932733599132424254">Fecha</translation>
 <translation id="4933484234309072027">insertado en <ph name="URL" /></translation>
 <translation id="493571969993549666">Agregar usuario supervisado</translation>
@@ -2643,6 +2657,7 @@
 <translation id="4992066212339426712">Dejar de silenciar</translation>
 <translation id="4992458225095111526">Confirmar Powerwash</translation>
 <translation id="4992473555164495036">Tu administrador limitó los métodos de entrada disponibles.</translation>
+<translation id="4992866843815555470">Se debe realizar un mantenimiento del conector. Sin un ventilador que funcione, este se apagará.</translation>
 <translation id="4992926179187649719">Activar "Ok Google"</translation>
 <translation id="4994474651455208930">Permitir que los sitios web soliciten convertirse en controladores predeterminados de protocolos</translation>
 <translation id="4994754230098574403">Configurando</translation>
@@ -2690,7 +2705,7 @@
 <translation id="5072836811783999860">Mostrar favoritos administrados</translation>
 <translation id="5074318175948309511">Es posible que debas actualizar la página para que se aplique la nueva configuración.</translation>
 <translation id="5075131525758602494">Ingresar el PIN de la tarjeta SIM</translation>
-<translation id="507514548843781244">Visualiza y borra los datos de acceso almacenados en tu llave de seguridad</translation>
+<translation id="507514548843781244">Visualiza y borra los datos de acceso almacenados en la llave de seguridad</translation>
 <translation id="5078638979202084724">Agregar a favoritos todas las pestañas</translation>
 <translation id="5078796286268621944">Número de PIN incorrecto</translation>
 <translation id="5079950360618752063">Usar la contraseña sugerida</translation>
@@ -2781,7 +2796,6 @@
 <translation id="5233231016133573565">ID de proceso</translation>
 <translation id="5233638681132016545">Nueva pestaña</translation>
 <translation id="5233736638227740678">&amp;Pegar</translation>
-<translation id="5234764350956374838">Rechazar</translation>
 <translation id="5235050375939235066">¿Desinstalar la app?</translation>
 <translation id="5235750401727657667">Reemplazar la página que ves cuando abres una pestaña nueva</translation>
 <translation id="5238278114306905396">Se eliminó automáticamente la aplicación "<ph name="EXTENSION_NAME" />".</translation>
@@ -2846,6 +2860,7 @@
 <translation id="5319359161174645648">Google recomienda Chrome</translation>
 <translation id="532247166573571973">Es posible que no se pueda acceder al servidor. Vuelve a intentarlo más tarde.</translation>
 <translation id="5324780743567488672">Configurar la zona horaria automáticamente mediante la ubicación</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" />: se permite para guardar en archivos originales</translation>
 <translation id="5327248766486351172">Nombre</translation>
 <translation id="5327570636534774768">Otro dominio administra este dispositivo. Desaprovisiónalo de ese dominio para configurar el modo de demostración.</translation>
 <translation id="532943162177641444">Presiona la notificación en tu <ph name="PHONE_NAME" /> para configurar la zona móvil que puede usar este dispositivo.</translation>
@@ -2988,7 +3003,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> quiere</translation>
 <translation id="5534304873398226603">Descartar foto o video</translation>
 <translation id="5535941515421698170">También quitar tus datos existentes de este dispositivo</translation>
-<translation id="5537725057119320332">Transmitir</translation>
 <translation id="5539221284352502426">El servidor rechazó la contraseña que ingresaste porque es demasiado corta, debe incluir números o símbolos, o debe ser diferente a las contraseñas anteriores.</translation>
 <translation id="5541687815721799001">Usar la app</translation>
 <translation id="5542132724887566711">Perfil</translation>
@@ -3162,7 +3176,7 @@
 <translation id="5794414402486823030">Abrir siempre con el visualizador del sistema</translation>
 <translation id="5794786537412027208">Salir de todas las aplicaciones de Chrome</translation>
 <translation id="5797070761912323120">Es posible que Google use tu historial para personalizar la Búsqueda, los anuncios y otros servicios de Google</translation>
-<translation id="579915268381781820">Se quitó tu llave de seguridad.</translation>
+<translation id="579915268381781820">Se quitó la llave de seguridad.</translation>
 <translation id="5799508265798272974">Máquina virtual de Linux: <ph name="LINUX_VM_NAME" /></translation>
 <translation id="5800020978570554460">El archivo de destino se truncó o eliminó desde la última descarga.</translation>
 <translation id="5801568494490449797">Preferencias</translation>
@@ -3297,7 +3311,6 @@
 <translation id="5997337190805127100">Más información sobre el acceso a sitios</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultados para "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Voces preferidas</translation>
-<translation id="6005695835120147974">Router multimedia</translation>
 <translation id="6006484371116297560">Clásico</translation>
 <translation id="6007240208646052708">La búsqueda por voz no está disponible en tu idioma.</translation>
 <translation id="6009781704028455063">Sensor incorporado</translation>
@@ -3497,7 +3510,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nueva impresora en la red}other{Nuevas impresoras en la red}}</translation>
 <translation id="6286708577777130801">Detalles de las contraseñas guardadas</translation>
 <translation id="6289452883081499048">Servicios de Google personalizados, como Play</translation>
-<translation id="6290556621549272952">Puedes usar esta función para ver contenido de Chromium en tu TV u otros dispositivos.</translation>
 <translation id="6291949900244949761">Preguntarme cuando un sitio desee acceder a dispositivos USB (recomendado)</translation>
 <translation id="6291953229176937411">Mo&amp;strar en Buscador</translation>
 <translation id="6295158916970320988">Todos los sitios</translation>
@@ -3561,6 +3573,7 @@
 <translation id="6395423953133416962">Enviar <ph name="BEGIN_LINK1" />información del sistema<ph name="END_LINK1" /> y <ph name="BEGIN_LINK2" />métricas<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Impedir que los sitios usen los sensores de movimiento</translation>
 <translation id="6397094776139756010">Opciones de personalización y sincronización</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> podrá guardar los cambios directamente en los archivos de la carpeta que se indica más abajo. Este sitio puede guardar los cambios solo cuando se encuentre abierta esta pestaña.</translation>
 <translation id="6398715114293939307">Quitar Google Play Store</translation>
 <translation id="6398765197997659313">Salir de pantalla completa</translation>
 <translation id="6399774419735315745">Espía</translation>
@@ -3605,11 +3618,13 @@
 <translation id="6455264371803474013">En sitios específicos</translation>
 <translation id="6455894534188563617">&amp;Nueva carpeta</translation>
 <translation id="6456394469623773452">Regular</translation>
+<translation id="6456955391422100996">Se quitó el anuncio.</translation>
 <translation id="645705751491738698">Continuar con el bloqueo de JavaScript</translation>
 <translation id="6458701200018867744">No se pudo realizar la descarga (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Usar la selección para buscar</translation>
 <translation id="6459799433792303855">La ventana activa se movió a otra pantalla.</translation>
 <translation id="6460601847208524483">Buscar siguiente</translation>
+<translation id="6461170143930046705">Buscando redes…</translation>
 <translation id="6463795194797719782">&amp;Edición</translation>
 <translation id="6466988389784393586">&amp;Abrir todos los favoritos</translation>
 <translation id="6467304607960172345">Optimizar los videos en pantalla completa</translation>
@@ -3648,6 +3663,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Estás conectado a una red <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Compartir</translation>
 <translation id="6528513914570774834">Permitir que otros usuarios de este dispositivo usen esta red</translation>
 <translation id="652948702951888897">Historial de Chrome</translation>
@@ -3744,7 +3760,6 @@
 <translation id="6680650203439190394">Calificar</translation>
 <translation id="6681668084120808868">Tomar foto</translation>
 <translation id="6681964764822470072">Se desinstalará "<ph name="APP_NAME" />".</translation>
-<translation id="6685083257944113180">Detener, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Abrir Google Play</translation>
 <translation id="6686490380836145850">Cerrar pestañas a la derecha</translation>
 <translation id="6686817083349815241">Guardar la contraseña</translation>
@@ -3852,6 +3867,7 @@
 <translation id="6845038076637626672">Abrir de forma maximizada</translation>
 <translation id="6845325883481699275">Ayudar a mejorar la seguridad de Chrome</translation>
 <translation id="6848388270925200958">En este momento, tienes algunas tarjetas que solo se pueden usar en este dispositivo</translation>
+<translation id="6850286078059909152">Color del texto</translation>
 <translation id="6851497530878285708">App habilitada</translation>
 <translation id="6853388645642883916">Actualizador suspendido</translation>
 <translation id="68541483639528434">Cerrar las demás pestañas</translation>
@@ -3901,7 +3917,6 @@
 <translation id="6923132443355966645">Desplazar/Hacer clic</translation>
 <translation id="6923633482430812883">Se produjo un error al activar el uso compartido. Asegúrate de que el servidor de archivos al que te estás conectando sea compatible con SMBv2 o versiones posteriores.</translation>
 <translation id="6930036377490597025">Llave de seguridad externa o sensor integrado</translation>
-<translation id="6930242544192836755">Duración</translation>
 <translation id="693807610556624488">La operación de escritura excede la longitud máxima del atributo de: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Accede a <ph name="TOKEN_NAME" /> para autenticarte en <ph name="HOST_NAME" /> con tu certificado.</translation>
 <translation id="6943176775188458830">Cancelar impresión</translation>
@@ -3915,6 +3930,7 @@
 <translation id="6951153907720526401">Controladores de pago</translation>
 <translation id="6951663584153258142">Tu organización te solicita que actualices este dispositivo</translation>
 <translation id="6953878494808481632">Información relacionada</translation>
+<translation id="6953916367503892689">{0,plural, =1{Archivo: <ph name="FILES" />}other{Archivos: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Inspeccionar ventana emergente</translation>
 <translation id="6957044667612803194">Esta llave de seguridad no es compatible con los PIN</translation>
 <translation id="6957231940976260713">Nombre del servicio</translation>
@@ -3932,7 +3948,7 @@
 <translation id="6974609594866392343">Modo de demostración sin conexión</translation>
 <translation id="6977381486153291903">Revisión de firmware</translation>
 <translation id="6978121630131642226">Motores de búsqueda</translation>
-<translation id="6979044105893951891">Inicia las sesiones de invitado administradas y sale de ellas</translation>
+<translation id="6979044105893951891">Inicia las sesiones de invitado administradas y sal de ellas</translation>
 <translation id="6979440798594660689">Silenciar (predeterminado)</translation>
 <translation id="6979737339423435258">Todos</translation>
 <translation id="6981982820502123353">Accesibilidad</translation>
@@ -4127,7 +4143,6 @@
 <translation id="7254554697254365959">No se pudo traducir esta página.</translation>
 <translation id="7254951428499890870">¿Confirmas que quieres iniciar "<ph name="APP_NAME" />" en modo de diagnóstico?</translation>
 <translation id="7255002516883565667">En este momento, tienes una tarjeta que puede usarse solo en este dispositivo</translation>
-<translation id="7255220508626648026">Transmitiendo: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Vuelve a tocar tu llave de seguridad para confirmar el restablecimiento. Se borrará toda la información almacenada en la llave de seguridad, incluido su PIN.</translation>
 <translation id="7255935316994522020">Aplicar</translation>
 <translation id="7256069762010468647">El sitio está usando la cámara</translation>
@@ -4261,6 +4276,7 @@
 <translation id="7456142309650173560">para programadores</translation>
 <translation id="7456847797759667638">Abrir ubicación...</translation>
 <translation id="7458168200501453431">Utiliza el mismo corrector ortográfico que en la Búsqueda de Google. El texto que escribes en el navegador se envía a Google.</translation>
+<translation id="7460045493116006516">Tema actual que tienes instalado</translation>
 <translation id="7461924472993315131">Fijar</translation>
 <translation id="746216226901520237">La próxima vez, tu teléfono desbloqueará tu <ph name="DEVICE_TYPE" />. Puedes desactivar Smart Lock en la configuración.</translation>
 <translation id="7463006580194749499">Agregar a una persona</translation>
@@ -4320,6 +4336,7 @@
 <translation id="7554791636758816595">Nueva pestaña</translation>
 <translation id="7556033326131260574">Smart Lock no pudo verificar la cuenta. Escribe la contraseña para acceder.</translation>
 <translation id="7556242789364317684">Lamentablemente, <ph name="SHORT_PRODUCT_NAME" /> no puede recuperar la configuración. Para solucionar el error, <ph name="SHORT_PRODUCT_NAME" /> debe restablecer el dispositivo con Powerwash.</translation>
+<translation id="7559444627302317199">Verifica tu conexión de red y vuelve a intentarlo.</translation>
 <translation id="7559719679815339381">Espera. La aplicación de kiosco se está actualizando. No desconectes el dispositivo USB.</translation>
 <translation id="7561196759112975576">Siempre</translation>
 <translation id="7563991800558061108">Para solucionar este error, debes acceder a tu cuenta de Google
@@ -4562,7 +4579,6 @@
 <translation id="7887334752153342268">Duplicar</translation>
 <translation id="7887864092952184874">Mouse Bluetooth sincronizado</translation>
 <translation id="7889565820482017512">Tamaño de la pantalla</translation>
-<translation id="7889966925761734854">Buscar</translation>
 <translation id="7893008570150657497">Acceder a fotos, música y otros medios desde tu computadora</translation>
 <translation id="7893153962594818789">Bluetooth está desactivado en esta <ph name="DEVICE_TYPE" />. Ingresa tu contraseña y activa Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (predeterminado)</translation>
@@ -4570,7 +4586,6 @@
 <translation id="7898627924844766532">Mantener en la barra de herramientas</translation>
 <translation id="7898725031477653577">Traducir siempre</translation>
 <translation id="790040513076446191">Manipular la configuración relacionada con la privacidad</translation>
-<translation id="7902874111237641165">Movimiento continuo [Beta]</translation>
 <translation id="7903345046358933331">La página no responde. Puedes esperar a que vuelva a responder o cerrarla.</translation>
 <translation id="7903742244674067440">Tienes certificados archivados que identifican estas autoridades de certificación</translation>
 <translation id="7903925330883316394">Utilidad: <ph name="UTILITY_TYPE" /></translation>
@@ -4682,6 +4697,7 @@
 <translation id="8037117027592400564">Leer todo el texto hablado con la síntesis de voz</translation>
 <translation id="8037357227543935929">Preguntar (predeterminado)</translation>
 <translation id="803771048473350947">Archivo</translation>
+<translation id="8042142357103597104">Opacidad del texto</translation>
 <translation id="8044899503464538266">Lento</translation>
 <translation id="8045253504249021590">La sincronización se detuvo mediante el Panel de control de Google.</translation>
 <translation id="8045923671629973368">Ingresa el ID de aplicación o la URL de la tienda web</translation>
@@ -4718,7 +4734,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Se puede desactivar este servicio en Configuración.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Los PIN no coinciden</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> usa la configuración de proxy de una extensión</translation>
-<translation id="8099495042588009598">Más permisos</translation>
 <translation id="8101987792947961127">Se requiere Powerwash en el siguiente reinicio</translation>
 <translation id="8102159139658438129">Para ver las opciones para tu teléfono conectado, accede a la <ph name="LINK_BEGIN" />Configuración<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Usa la función Powerwash en el dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> y regresa a la versión anterior.</translation>
@@ -4770,8 +4785,10 @@
     No creo que este sitio deba estar bloqueado.</translation>
 <translation id="8184288427634747179">Cambiar a <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Más información</translation>
+<translation id="8184472985242519288">Uniforme</translation>
 <translation id="8185331656081929126">Mostrar notificaciones cuando se detecten nuevas impresoras en la red</translation>
 <translation id="8186609076106987817">El servidor no pudo encontrar el archivo.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> puede leer todos los archivos de la carpeta que se indica más abajo. Este sitio puede ver cambios en la carpeta solo cuando se encuentre abierta esta pestaña.</translation>
 <translation id="8188389033983459049">Revisa la configuración del dispositivo y activa la conexión Bluetooth para continuar</translation>
 <translation id="8190193592390505034">Estableciendo conexión con <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Administrar tus aplicaciones, extensiones y temas</translation>
@@ -4875,8 +4892,6 @@
 <translation id="833986336429795709">Para abrir este vínculo, selecciona una app</translation>
 <translation id="8342861492835240085">Seleccionar una colección</translation>
 <translation id="834290227245955730">El PIN no es válido. Intentos restantes: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Para disfrutar de animaciones y videos óptimos, aumenta el ancho de banda.
-Es posible que los usuarios con conexiones lentas no puedan ver tu contenido.</translation>
 <translation id="8351419472474436977">Esta extensión tomó control de tu configuración de proxy, lo que significa que puede cambiar, dañar o espiar cualquier actividad que realices en línea. Si sabes con certeza por qué se produjo este cambio, probablemente no lo desees.</translation>
 <translation id="8351630282875799764">No se está cargando la batería</translation>
 <translation id="835238322900896202">Se produjo un error durante la desinstalación. Completa la operación a través de la terminal.</translation>
@@ -4909,9 +4924,11 @@
 <translation id="839736845446313156">Registrarse</translation>
 <translation id="8398877366907290961">Continuar de todos modos</translation>
 <translation id="8400146488506985033">Administrar personas</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> puede guardar los cambios directamente en los archivos de la carpeta que se indica más abajo. Este sitio puede guardar los cambios solo cuando se encuentre abierta esta pestaña.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Preguntar primero (recomendado)</translation>
 <translation id="8418445294933751433">Mo&amp;strar como pestaña</translation>
+<translation id="8418905021510211421">Se permite esta página para leer una carpeta del dispositivo.</translation>
 <translation id="8419098111404128271">Resultados de la búsqueda para "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Te damos la bienvenida a tu <ph name="DEVICE_TYPE" /></translation>
 <translation id="8425213833346101688">Cambiar</translation>
@@ -4931,6 +4948,7 @@
 <translation id="8438566539970814960">Mejorar las búsquedas y la navegación</translation>
 <translation id="8439506636278576865">Ofrecer la traducción de páginas en este idioma</translation>
 <translation id="8440630305826533614">Apps de Linux</translation>
+<translation id="844241640324986723">No se pudieron borrar tus datos de acceso.</translation>
 <translation id="8443338615972234259">Crea una nueva cuenta para tu usuario supervisado ahora.</translation>
 <translation id="8446884382197647889">Más información</translation>
 <translation id="8447409163267621480">Incluir Ctrl o Alt</translation>
@@ -4946,8 +4964,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Es posible que el administrador haya eliminado o inhabilitado este usuario supervisado. Comunícate con el administrador si deseas seguir accediendo como este usuario.</translation>
 <translation id="846374874681391779">Barra de descargas</translation>
-<translation id="8463807869745732775">"&gt;
-    Datos de acceso almacenados en la llave de seguridad</translation>
 <translation id="8463955938112983119">Se inhabilitó <ph name="PLUGIN_NAME" />.</translation>
 <translation id="8464132254133862871">Esta cuenta de usuario no es elegible para el servicio.</translation>
 <translation id="8465252176946159372">No válido</translation>
@@ -5013,6 +5029,7 @@
 <translation id="8569002732135253578">Se está imprimiendo <ph name="DOCUMENT_NAME" /> ahora</translation>
 <translation id="8569682776816196752">No se encontró ningún destino.</translation>
 <translation id="8571213806525832805">Últimas cuatro semanas</translation>
+<translation id="8573403125070227391">Chrome quitó este anuncio porque usa demasiados recursos en tu dispositivo.</translation>
 <translation id="8574990355410201600">Permitir siempre el sonido en <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Mantén presionada la tecla <ph name="KEY_EQUIVALENT" /> para salir</translation>
 <translation id="8578639784464423491">No se pueden superar las 99 letras</translation>
@@ -5036,13 +5053,13 @@
 <translation id="8609465669617005112">Subir</translation>
 <translation id="8610103157987623234">El formato es incorrecto; vuelve a intentarlo</translation>
 <translation id="8615618338313291042">Aplicación de incógnito: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Sombra paralela</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Estado de roaming</translation>
 <translation id="8620765578342452535">Configurar las conexiones de red</translation>
 <translation id="8621866727807194849">Tu computadora tiene software dañino. Chrome lo está quitando, inhabilitando las extensiones y restableciendo la configuración. Estas acciones harán que tu navegador vuelva a funcionar normalmente.</translation>
 <translation id="8621979332865976405">Compartir la pantalla completa</translation>
 <translation id="862542460444371744">&amp;Extensiones</translation>
-<translation id="8627151598708688654">Seleccionar la fuente</translation>
 <translation id="862727964348362408">En suspensión</translation>
 <translation id="862750493060684461">Caché CSS</translation>
 <translation id="8627795981664801467">Conexiones seguras solamente</translation>
@@ -5096,6 +5113,7 @@
 <translation id="8688579245973331962">¿No aparece tu nombre?</translation>
 <translation id="8688591111840995413">Contraseña incorrecta</translation>
 <translation id="8688672835843460752">Disponible</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Abrir &amp;ubicación...</translation>
 <translation id="869884720829132584">Menú Aplicaciones</translation>
 <translation id="869891660844655955">Fecha de vencimiento</translation>
@@ -5259,6 +5277,7 @@
 <translation id="891365694296252935">Envía datos de uso y diagnóstico. De forma automática, este dispositivo está enviando a Google datos de diagnóstico y sobre el uso del dispositivo y las apps. Esta información no se usará para identificar a tu hijo y ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. El propietario controla esta configuración. Si habilitaste la "Actividad de web y de aplicaciones adicional" en la Cuenta de Google de tu hijo, es posible que se almacenen estos datos en esa cuenta. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Cargando sugerencia</translation>
 <translation id="8916476537757519021">Submarco incógnito: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" />: se permite para leer una carpeta del dispositivo</translation>
 <translation id="8919275547519617350">Para obtener todas tus contraseñas en todos los dispositivos, accede a tu cuenta y activa la sincronización.</translation>
 <translation id="8921366488406707015">Verificando la llave de seguridad…</translation>
 <translation id="8922013791253848639">Permite mostrar anuncios en este sitio</translation>
@@ -5288,7 +5307,6 @@
 <translation id="8965037249707889821">Ingresa la contraseña anterior.</translation>
 <translation id="8966870118594285808">Volver a abrir una pestaña si la cerraste por accidente</translation>
 <translation id="8967866634928501045">Presiona Alt+mayúscula+A para mostrar</translation>
-<translation id="8970203673128054105">Ver la lista de modos de transmisión</translation>
 <translation id="89720367119469899">Esc</translation>
 <translation id="8972513834460200407">Consulta con tu administrador de red para asegurarte de que el firewall no esté bloqueando las descargas de los servidores de Google.</translation>
 <translation id="8973557916016709913">Quitar el nivel de zoom</translation>
@@ -5437,6 +5455,7 @@
 <translation id="9214520840402538427">¡Vaya! Se ha agotado el tiempo de la inicialización de los atributos de tiempo de instalación. Comunícate con el representante de asistencia.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" agregada</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> podrá guardar los cambios directamente en el archivo que se indica más abajo. Este sitio puede guardar los cambios solo cuando se encuentre abierta esta pestaña.</translation>
 <translation id="9218430445555521422">Establecer como predeterminado</translation>
 <translation id="9219103736887031265">Imágenes</translation>
 <translation id="9220525904950070496">Eliminar cuenta</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 1682a9cf..db8c30d 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">No se ha podido iniciar la máquina virtual. Inténtalo de nuevo.</translation>
 <translation id="1089439967362294234">Cambiar contraseña</translation>
 <translation id="1090126737595388931">No se están ejecutando aplicaciones en segundo plano.</translation>
+<translation id="1090290614672149983">¿Quieres guardar los cambios en el archivo original?</translation>
 <translation id="1090918500949388876">Podrás acceder al Asistente cuando digas "Ok Google" y la pantalla esté encendida</translation>
 <translation id="1091767800771861448">Pulsa Esc para omitir este paso (solo para compilaciones no oficiales).</translation>
 <translation id="1093457606523402488">Redes visibles:</translation>
 <translation id="1094607894174825014">La operación de lectura o escritura se ha solicitado con una variación no válida de "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Antes de iniciar sesión, entra como invitado para activar la red <ph name="NETWORK_ID" />.</translation>
+<translation id="110029732810301672">Esta pestaña tiene permiso para guardar cambios en los archivos originales.</translation>
 <translation id="1103523840287552314">Traducir siempre del <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Detener</translation>
 <translation id="1110155001042129815">Esperar</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Gafas de sol</translation>
 <translation id="1151917987301063366">Permitir siempre que <ph name="HOST" /> acceda a los sensores</translation>
 <translation id="1153356358378277386">Dispositivos vinculados</translation>
-<translation id="1156488781945104845">Hora actual</translation>
 <translation id="1161575384898972166">Inicia sesión en <ph name="TOKEN_NAME" /> para exportar el certificado de cliente.</translation>
 <translation id="1163931534039071049">&amp;Ver fuente del marco</translation>
 <translation id="1164674268730883318">¿Quieres desactivar Smart Lock para <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Configuración de almacenamiento de Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies y otros datos de sitios</translation>
 <translation id="127668050356036882">Cerrar todas las ventanas</translation>
-<translation id="1277908057200820621">Ver lista de dispositivos</translation>
 <translation id="1280820357415527819">Buscando redes móviles</translation>
 <translation id="1285320974508926690">No traducir nunca este sitio</translation>
 <translation id="1285484354230578868">Almacenar datos en tu cuenta de Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Red doméstica, sin itinerancia</translation>
 <translation id="1316136264406804862">Buscando...</translation>
 <translation id="1316495628809031177">La sincronización está en pausa</translation>
+<translation id="1317637799698924700">Tu base funcionará en el modo compatible con USB tipo C.</translation>
 <translation id="1322046419516468189">Consulta y administra las contraseñas guardadas en tu <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Inicia sesión en Chrome para ver las pestañas de tus otros dispositivos.</translation>
 <translation id="1327074568633507428">Impresora en Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">El <ph name="BEGIN_LINK" />navegador está gestionado<ph name="END_LINK" /> por <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Ejecuta herramientas, editores e IDEs de Linux en tu <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Más información&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Selecciona un archivo</translation>
+<translation id="1370749010280229230">La pantalla conectada a la base tiene un problema</translation>
 <translation id="1371301976177520732">Tus marcadores, contraseñas, historial y mucho más en todos tus dispositivos</translation>
 <translation id="1372841398847029212">Sincronizar con tu cuenta</translation>
 <translation id="1374844444528092021">El certificado requerido por la red "<ph name="NETWORK_NAME" />" no está instalado o ya no es válido. Consigue un nuevo certificado y prueba a conectarte de nuevo.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Página web (un único archivo)</translation>
 <translation id="1451917004835509682">Añadir persona supervisada</translation>
 <translation id="1454223536435069390">H&amp;acer captura de pantalla</translation>
+<translation id="1458243790901188746">{0,plural, =1{Carpeta: <ph name="DIRECTORIES" />}other{Carpetas: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Motores de búsqueda añadidos por extensiones</translation>
 <translation id="146000042969587795">Este marco se ha bloqueado porque incluye contenido no seguro.</translation>
 <translation id="146219525117638703">Estado ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Mostrar opciones de entrada</translation>
 <translation id="1651008383952180276">Debes introducir la misma frase de contraseña dos veces</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Añade la impresora a Google Cloud Print para que puedas imprimir desde cualquier parte.}other{Añade # impresoras a Google Cloud Print para que puedas imprimir desde cualquier parte.}}</translation>
+<translation id="1656528038316521561">Opacidad del fondo</translation>
 <translation id="1657406563541664238">Ayúdanos a mejorar <ph name="PRODUCT_NAME" /> enviando estadísticas de uso e informes sobre fallos.</translation>
 <translation id="1658424621194652532">Esta página está accediendo al micrófono</translation>
 <translation id="1660204651932907780">Permitir que los sitios web reproduzcan sonidos (recomendado)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> quiere ver la marca y el modelo de tu llave de seguridad</translation>
 <translation id="1679068421605151609">Herramientas para desarrolladores</translation>
 <translation id="1679806121152819234">Complemento de VM</translation>
+<translation id="1679810534535368772">¿Seguro que quieres salir?</translation>
 <translation id="167983332380191032">El servicio de gestión ha enviado un error de HTTP.</translation>
 <translation id="1680849702532889074">No se ha podido instalar la aplicación de Linux.</translation>
 <translation id="16815041330799488">No permitir que los sitios web vean el texto y las imágenes que se hayan copiado en el portapapeles</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identificador de contenido multimedia protegido</translation>
 <translation id="175196451752279553">Volv&amp;er a abrir pestaña cerrada</translation>
 <translation id="1753905327828125965">Más visitado</translation>
+<translation id="1755601632425835748">Tamaño del texto</translation>
 <translation id="1756681705074952506">Método de introducción</translation>
 <translation id="1757301747492736405">Desinstalación pendiente</translation>
 <translation id="175772926354468439">Habilitar tema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">Meno&amp;r</translation>
 <translation id="1919345977826869612">Anuncios</translation>
 <translation id="1919814239594435008">Complemento no incluido en la zona de pruebas permitido</translation>
+<translation id="1920390473494685033">Contactos</translation>
 <translation id="1921050530041573580">Vincula tu teléfono con Mensajes</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> PPP</translation>
 <translation id="1924559387127953748">Obtener funciones inteligentes de Google en <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Pestaña de incógnito: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">El complemento <ph name="PEPPER_PLUGIN_NAME" /> de <ph name="PEPPER_PLUGIN_DOMAIN" /> quiere acceder a tu ordenador</translation>
 <translation id="2178614541317717477">Compromiso de entidad emisora de certificados</translation>
+<translation id="2179849162388791084">Se ha producido un error al obtener los datos de inicio de sesión almacenados en la llave de seguridad.</translation>
 <translation id="218070003709087997">Usa un número para indicar cuántas copias quieres imprimir (entre 1 y 999).</translation>
 <translation id="2184515124301515068">Permitir que Chrome elija cuándo los sitios web pueden reproducir sonidos (recomendado)</translation>
 <translation id="2187895286714876935">Error de importación del certificado de servidor</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Todas las cookies y los datos de sitios web</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Se ha copiado 1 elemento}other{Se han copiado # elementos}}</translation>
 <translation id="2278562042389100163">Abrir ventana del navegador</translation>
-<translation id="2279874276457403668">Solo se puede crear una sesión cada vez.</translation>
 <translation id="2280486287150724112">Margen derecho</translation>
 <translation id="2282146716419988068">Proceso de GPU</translation>
 <translation id="2282155092769082568">URL de configuración automática:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Las notas de la pantalla de bloqueo se guardan automáticamente en <ph name="LOCK_SCREEN_APP_NAME" />. La nota más reciente seguirá apareciendo en la pantalla de bloqueo.</translation>
 <translation id="2353297238722298836">Cámara y micrófono permitidos</translation>
 <translation id="2356070529366658676">Preguntar</translation>
-<translation id="2357949918965361754">Puedes usar esta función para mostrar contenido de Chrome en tu TV o en otros dispositivos.</translation>
 <translation id="2359345697448000899">Para administrar tus extensiones, haz clic en la opción Extensiones del menú Herramientas.</translation>
 <translation id="2359808026110333948">Continuar</translation>
 <translation id="236117173274098341">Optimizar</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Tu organización pide que actualices este dispositivo inmediatamente</translation>
 <translation id="2439545803278355377">Introduce tu nuevo PIN. El PIN debe tener al menos cuatro caracteres y puede contener letras, números y otros caracteres.</translation>
 <translation id="2440604414813129000">Ver códig&amp;o fuente</translation>
+<translation id="2442916515643169563">Sombra del texto</translation>
 <translation id="2444119669991608829">¿La página no está en <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">El directorio raíz de la extensión es obligatorio.</translation>
 <translation id="2445484935443597917">Crear perfil</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Anterior a</translation>
 <translation id="2739191690716947896">Depurar</translation>
 <translation id="2739240477418971307">Cambiar tu configuración de accesibilidad</translation>
+<translation id="274029851662193272">Hundida</translation>
 <translation id="2740393541869613458">revisar sitios web que ha visitado el usuario supervisado,</translation>
 <translation id="2741912629735277980">Mostrar interfaz de usuario en la pantalla de inicio de sesión</translation>
 <translation id="274290345632688601">Restaurando las aplicaciones y los archivos de Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">El acceso directo ya existe</translation>
 <translation id="2807517655263062534">Los archivos que descargues aparecen aquí</translation>
 <translation id="2809586584051668049">y <ph name="NUMBER_ADDITIONAL_DISABLED" /> más</translation>
+<translation id="2812049959647166806">No se admite Thunderbolt</translation>
 <translation id="2812944337881233323">Prueba a cerrar sesión y volver a iniciarla</translation>
 <translation id="2812989263793994277">No mostrar ninguna imagen</translation>
 <translation id="281390819046738856">No se ha podido firmar la solicitud</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Proveedor</translation>
 <translation id="2844169650293029770">Dispositivo USB tipo C (puerto frontal izquierdo)</translation>
 <translation id="2845382757467349449">Mostrar siempre la barra de marcadores</translation>
-<translation id="2847759467426165163">Enviar a</translation>
 <translation id="284805635805850872">¿Eliminar software dañino?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">No se ha podido eliminar software malicioso</translation>
@@ -1297,6 +1305,7 @@
     Mensaje del servidor: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Añadir galería de archivos por directorio</translation>
 <translation id="2910318910161511225">Conéctate a una red y vuelve a intentarlo</translation>
+<translation id="2910518940971897750">Guardar en el archivo original</translation>
 <translation id="2913331724188855103">Permitir que los sitios guarden y lean datos de cookies (recomendado)</translation>
 <translation id="2915102088417824677">Ver registro de actividad</translation>
 <translation id="2915873080513663243">Búsqueda automática</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Dispositivos MIDI</translation>
 <translation id="3015639418649705390">Reiniciar ahora</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> no se ha podido configurar automáticamente. Debes especificar información detallada de la impresora.</translation>
+<translation id="3016381065346027039">No hay ninguna entrada de registro</translation>
 <translation id="3016641847947582299">Componente actualizado</translation>
 <translation id="3016780570757425217">Conocer tu ubicación</translation>
 <translation id="3017079585324758401">Fondo</translation>
 <translation id="3020183492814296499">Combinaciones de teclas</translation>
 <translation id="3020990233660977256">Número de serie: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Mariposa</translation>
+<translation id="3021408157810018664">¿Quieres guardar los cambios en los archivos originales?</translation>
 <translation id="3021426244864538700">Pueden acceder a los datos de este sitio web</translation>
 <translation id="3021678814754966447">&amp;Ver fuente del marco</translation>
 <translation id="3022978424994383087">No te he entendido.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">También puedes <ph name="LINK_START" />navegar como invitado<ph name="LINK_END" /> sin iniciar sesión.</translation>
 <translation id="3172045848207518317">Un sitio web está accediendo a la entrada de vídeo</translation>
 <translation id="3177909033752230686">Idioma de la página:</translation>
+<translation id="3179982752812949580">Fuente del texto</translation>
 <translation id="3181954750937456830">Navegación Segura (te protege a ti y a tu dispositivo frente a sitios web peligrosos)</translation>
 <translation id="3182749001423093222">Revisión ortográfica</translation>
 <translation id="3183139917765991655">Importador de perfiles</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Abrir como ventana</translation>
 <translation id="3278001907972365362">Parece que hay algún problema con tus cuentas de Google</translation>
 <translation id="3279230909244266691">Iniciando la máquina virtual. Este proceso puede tardar unos minutos.</translation>
-<translation id="3279741024917655738">Ver vídeos en pantalla completa</translation>
 <translation id="3280237271814976245">Gu&amp;ardar como...</translation>
 <translation id="3280243678470289153">Permanecer en Chrome</translation>
 <translation id="3281892622610078515">Archivos y programas que se pondrán en cuarentena:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">No se han encontrado resultados de búsqueda</translation>
 <translation id="3305389145870741612">El proceso de formateo puede tardar unos segundos. Espera...</translation>
 <translation id="3305661444342691068">Vista previa de PDF</translation>
-<translation id="3306684685104080068">Habilita el envío de contenido a servicios basados en la nube como Hangouts de Google.</translation>
+<translation id="3307871847038842490">Esta página tiene permiso para guardar cambios en archivos originales.</translation>
 <translation id="3308006649705061278">Unidad organizativa (OU)</translation>
 <translation id="3308116878371095290">Se ha evitado el uso de cookies en esta página.</translation>
 <translation id="3308134619352333507">Ocultar botón</translation>
@@ -1637,7 +1648,6 @@
 <translation id="3462413494201477527">¿Quieres cancelar la configuración de la cuenta?</translation>
 <translation id="3464012987031883895">Un sitio web está accediendo a la entrada de audio</translation>
 <translation id="346431825526753">Esta es una cuenta infantil administrada por <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Reproduce un archivo de audio o vídeo en streaming</translation>
 <translation id="3468999815377931311">Teléfono Android</translation>
 <translation id="3470442499439619530">Eliminar este usuario</translation>
 <translation id="3473479545200714844">Lupa</translation>
@@ -1660,6 +1670,7 @@
 <translation id="3496213124478423963">Alejar</translation>
 <translation id="3497560059572256875">Compartir doodle</translation>
 <translation id="3505030558724226696">Revocar acceso al dispositivo</translation>
+<translation id="3505635633742443645">No se puede usar el puerto HDMI de la base cuando el puerto USB tipo C se emplea como salida de vídeo. Utiliza otro puerto para una de las pantallas.</translation>
 <translation id="3507421388498836150">Permisos actuales para <ph name="EXTENSION_NAME" /></translation>
 <translation id="3507888235492474624">Volver a buscar dispositivos Bluetooth</translation>
 <translation id="3508920295779105875">Seleccionar otra carpeta...</translation>
@@ -1712,6 +1723,7 @@
 <translation id="3576324189521867626">Se ha instalado correctamente</translation>
 <translation id="3578594933904494462">Se está compartiendo el contenido de esta pestaña.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; quiere compartir una impresora &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; con un grupo que te pertenece: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Si aceptas, todos los miembros del grupo podrán utilizar esa impresora para imprimir.</translation>
+<translation id="357889014807611375">Wi‑Fi de uso medido</translation>
 <translation id="3584169441612580296">Leer y modificar fotos, música y otros archivos multimedia de tu ordenador</translation>
 <translation id="3587482841069643663">Todo</translation>
 <translation id="358796204584394954">Escribe este código en el dispositivo <ph name="DEVICE_NAME" /> para vincularlo:</translation>
@@ -1722,6 +1734,7 @@
 <translation id="359283478042092570">Acceder</translation>
 <translation id="3593965109698325041">Restricciones de nombres de certificado</translation>
 <translation id="3596235046596950091">Habilitar servicios en la nube</translation>
+<translation id="3599221874935822507">Elevada</translation>
 <translation id="3599863153486145794">Borra el historial de todos los dispositivos en los que hayas iniciado sesión. Es posible que tu cuenta de Google tenga otros tipos de historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Solicitud de información web</translation>
 <translation id="3600792891314830896">Silenciar los sitios web que reproducen sonidos</translation>
@@ -1736,6 +1749,7 @@
 <translation id="3612673635130633812">Descargado a través de &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Mostrar <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Abrir en una pestaña nueva</translation>
+<translation id="3615073365085224194">Toca el sensor de huellas digitales con el dedo</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Borrar datos de navegación...</translation>
 <translation id="3617891479562106823">Los fondos no están disponibles. Inténtalo de nuevo más tarde.</translation>
@@ -1817,7 +1831,6 @@
 <translation id="3719826155360621982">Página principal</translation>
 <translation id="3720996970802414353">Cambiar de todos modos</translation>
 <translation id="3722108462506185496">No se ha podido iniciar el servicio de la máquina virtual. Inténtalo de nuevo.</translation>
-<translation id="3723158278575423087">Te damos la bienvenida a la experiencia Cast en Chromium</translation>
 <translation id="3725367690636977613">páginas</translation>
 <translation id="3726137731714254362">Las carpetas que quites de aquí dejarán de compartirse, pero los archivos no se eliminarán.</translation>
 <translation id="3727148787322499904">Si cambias esta opción, todas las redes compartidas se verán afectadas</translation>
@@ -1852,7 +1865,6 @@
 <translation id="3764314093345384080">Información detallada de compilación</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Comunicarse con un dispositivo USB}other{Comunicarse con # dispositivos USB}}</translation>
 <translation id="3765246971671567135">No se ha podido leer la política del modo de demostración sin conexión.</translation>
-<translation id="3766223500670287046">Pantalla remota</translation>
 <translation id="3768037234834996183">Sincronizando tus preferencias...</translation>
 <translation id="377050016711188788">Helado</translation>
 <translation id="3771294271822695279">Archivos de vídeo</translation>
@@ -1925,7 +1937,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Levanta el dedo y toca de nuevo</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronización en pausa</translation>
-<translation id="3862134173397075045">Te damos la bienvenida a la experiencia Cast en Chrome</translation>
 <translation id="3862693525629180217">Verificar mediante sensor integrado</translation>
 <translation id="3862788408946266506">La aplicación con el atributo del archivo de manifiesto "kiosk_only" se debe instalar en el modo kiosco de Chrome OS</translation>
 <translation id="3865414814144988605">Resolución</translation>
@@ -1974,6 +1985,7 @@
 <translation id="3926002189479431949">El teléfono de Smart Lock ha cambiado</translation>
 <translation id="3927932062596804919">Denegar</translation>
 <translation id="3930737994424905957">Buscando dispositivos</translation>
+<translation id="3930968231047618417">Color de fondo</translation>
 <translation id="3933283459331715412">Recuperar la contraseña eliminada de <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Abrir audio en una pestaña nueva</translation>
 <translation id="3936925983113350642">La contraseña que selecciones será necesaria para restaurar este certificado más adelante. Guárdala en un lugar seguro.</translation>
@@ -1992,6 +2004,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importado desde Internet Explorer</translation>
 <translation id="3950820424414687140">Iniciar sesión</translation>
+<translation id="3950828138786918475">Esta pestaña tiene permiso para leer una carpeta de tu dispositivo.</translation>
 <translation id="3954354850384043518">En curso</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" />x<ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">No has capturado ningún registro de eventos de WebRTC recientemente.</translation>
@@ -2010,6 +2023,7 @@
 <translation id="397105322502079400">Calculando...</translation>
 <translation id="3975565978598857337">Se ha producido un error al contactar con el servidor del dominio</translation>
 <translation id="397703832102027365">Finalizando...</translation>
+<translation id="3977886311744775419">Este tipo de red no admite que se descarguen actualizaciones de forma automática, pero puedes buscar actualizaciones manualmente.</translation>
 <translation id="3979395879372752341">Nueva extensión añadida (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Habilitar <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Tipo de almacenamiento no válido</translation>
@@ -2149,6 +2163,7 @@
 <translation id="4194570336751258953">Habilitar la función Tocar para hacer clic</translation>
 <translation id="4195643157523330669">Abrir en una pestaña nueva</translation>
 <translation id="4195814663415092787">Abrir todo como estaba antes de cerrar</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> puede guardar los cambios que hagas directamente en los siguientes archivos. Este sitio web solo podrá guardar los cambios mientras esa pestaña esté abierta.</translation>
 <translation id="4198146608511578238">Solo tienes que mantener pulsado el icono del menú de aplicaciones para hablar con el Asistente de Google.</translation>
 <translation id="4200689466366162458">Palabras personalizadas</translation>
 <translation id="4200983522494130825">Nueva pes&amp;taña</translation>
@@ -2196,7 +2211,6 @@
 <translation id="4267953847983678297">Conectar automáticamente a la red móvil</translation>
 <translation id="4268025649754414643">Cifrado de clave</translation>
 <translation id="4270393598798225102">Versión <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Sin resultados</translation>
 <translation id="4275663329226226506">Multimedia</translation>
 <translation id="4275830172053184480">Reiniciar tu dispositivo</translation>
 <translation id="4278101229438943600">El Asistente está listo</translation>
@@ -2345,6 +2359,7 @@
 <translation id="4533985347672295764">Tiempo de uso de la CPU</translation>
 <translation id="4534661889221639075">Inténtalo de nuevo.</translation>
 <translation id="4535127706710932914">Perfil predeterminado</translation>
+<translation id="4535767533210902251">El sensor de huellas digitales está en la tecla de arriba a la derecha de tu teclado. Tócalo ligeramente con un dedo.</translation>
 <translation id="4538684596480161368">Bloquear siempre complementos no incluidos en zona de pruebas en <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Instalada por una política empresarial</translation>
 <translation id="4542520061254486227">Leer tus datos en <ph name="WEBSITE_1" /> y en <ph name="WEBSITE_2" /></translation>
@@ -2378,6 +2393,7 @@
 <translation id="457386861538956877">Más...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Vincular dispositivo Bluetooth</translation>
+<translation id="4578012756826807359">Tus datos de inicio de sesión se han eliminado correctamente.</translation>
 <translation id="4579581181964204535">No se puede enviar <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Error al restaurar Linux</translation>
 <translation id="4582563038311694664">Recuperar configuración completa</translation>
@@ -2495,7 +2511,6 @@
 <translation id="4763830802490665879">Las cookies de varios sitios se borrarán al salir.</translation>
 <translation id="4765582662863429759">Permite que Mensajes Android transmita mensajes desde tu teléfono al Chromebook</translation>
 <translation id="4768332406694066911">Tienes certificados de estas organizaciones que te identifican</translation>
-<translation id="4772404146526168240">Ambas pantallas</translation>
 <translation id="4776146737004271126">Abrir ajustes de Android</translation>
 <translation id="4776917500594043016">Contraseña de <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2603,7 +2618,6 @@
 <translation id="4927846293686536410">Inicia sesión para acceder a tus marcadores, tu historial, tus contraseñas y tu configuración en todos tus dispositivos. Además, iniciarás sesión automáticamente en tus servicios de Google.</translation>
 <translation id="4929386379796360314">Destinos de impresión</translation>
 <translation id="4930714375720679147">Activar</translation>
-<translation id="4931132176527519925">Usar proyección siempre</translation>
 <translation id="4932733599132424254">Fecha</translation>
 <translation id="4933484234309072027">insertada en <ph name="URL" /></translation>
 <translation id="493571969993549666">Añadir usuario supervisado</translation>
@@ -2643,6 +2657,7 @@
 <translation id="4992066212339426712">Activar sonido</translation>
 <translation id="4992458225095111526">Confirmar Powerwash</translation>
 <translation id="4992473555164495036">Tu administrador ha limitado los métodos de introducción disponibles.</translation>
+<translation id="4992866843815555470">La base necesita repararse. La base se apagará si no dispone de un ventilador que funcione correctamente.</translation>
 <translation id="4992926179187649719">Activar "Ok Google"</translation>
 <translation id="4994474651455208930">Permitir que los sitios web se conviertan en controladores de protocolos predeterminados</translation>
 <translation id="4994754230098574403">Se está configurando</translation>
@@ -2781,7 +2796,6 @@
 <translation id="5233231016133573565">ID de proceso</translation>
 <translation id="5233638681132016545">Nueva pestaña</translation>
 <translation id="5233736638227740678">&amp;Pegar</translation>
-<translation id="5234764350956374838">Cerrar</translation>
 <translation id="5235050375939235066">¿Desinstalar aplicación?</translation>
 <translation id="5235750401727657667">Cambiar la página que ves al abrir una nueva pestaña</translation>
 <translation id="5238278114306905396">Se ha eliminado automáticamente la aplicación <ph name="EXTENSION_NAME" />.</translation>
@@ -2846,6 +2860,7 @@
 <translation id="5319359161174645648">Google recomienda Chrome</translation>
 <translation id="532247166573571973">Es posible que no se pueda acceder al servidor. Vuelve a intentarlo más tarde.</translation>
 <translation id="5324780743567488672">Establecer la zona horaria de forma automática según tu ubicación</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - tiene permiso para guardar cambios en archivos originales</translation>
 <translation id="5327248766486351172">Nombre</translation>
 <translation id="5327570636534774768">El dispositivo está marcado para que lo gestione un dominio diferente. Dalo de baja de ese dominio antes de configurar el modo de demostración.</translation>
 <translation id="532943162177641444">Toca la notificación en el <ph name="PHONE_NAME" /> para configurar el punto de acceso móvil que este dispositivo puede usar.</translation>
@@ -2988,7 +3003,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> quiere</translation>
 <translation id="5534304873398226603">Descartar foto o vídeo</translation>
 <translation id="5535941515421698170">Eliminar también los datos de este dispositivo</translation>
-<translation id="5537725057119320332">Enviar</translation>
 <translation id="5539221284352502426">El servidor ha rechazado la contraseña que has introducido. Puede deberse a alguna de estas causas: la contraseña es demasiado corta. La contraseña debe contener números o símbolos. La contraseña debe ser diferente a las contraseñas anteriores.</translation>
 <translation id="5541687815721799001">Usar aplicación</translation>
 <translation id="5542132724887566711">Perfil</translation>
@@ -3297,7 +3311,6 @@
 <translation id="5997337190805127100">Más información sobre el acceso del sitio web</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultados para "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Voces preferidas</translation>
-<translation id="6005695835120147974">Router multimedia</translation>
 <translation id="6006484371116297560">Clásico</translation>
 <translation id="6007240208646052708">La búsqueda por voz no está disponible en tu idioma.</translation>
 <translation id="6009781704028455063">Sensor integrado</translation>
@@ -3497,7 +3510,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nueva impresora en tu red}other{Nuevas impresoras en tu red}}</translation>
 <translation id="6286708577777130801">Detalles de contraseña guardada</translation>
 <translation id="6289452883081499048">Servicios de Google personalizados, como Play</translation>
-<translation id="6290556621549272952">Puedes usar esta función para mostrar contenido de Chromium en tu TV o en otros dispositivos.</translation>
 <translation id="6291949900244949761">Preguntar cuando un sitio web quiera acceder a los dispositivos USB (recomendado)</translation>
 <translation id="6291953229176937411">&amp;Mostrar en Finder</translation>
 <translation id="6295158916970320988">Todos los sitios</translation>
@@ -3561,6 +3573,7 @@
 <translation id="6395423953133416962">Enviar <ph name="BEGIN_LINK2" />métricas<ph name="END_LINK2" /> e <ph name="BEGIN_LINK1" />información del sistema<ph name="END_LINK1" /></translation>
 <translation id="6396988158856674517">Impedir que los sitios web usen los sensores de movimiento</translation>
 <translation id="6397094776139756010">Opciones de sincronización y personalización</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> podrá guardar los cambios que hagas directamente en los archivos de la siguiente carpeta. Este sitio web solo podrá guardar los cambios mientras esa pestaña esté abierta.</translation>
 <translation id="6398715114293939307">Quitar Google Play Store</translation>
 <translation id="6398765197997659313">Salir del modo de pantalla completa</translation>
 <translation id="6399774419735315745">Espía</translation>
@@ -3605,11 +3618,13 @@
 <translation id="6455264371803474013">En sitios web específicos</translation>
 <translation id="6455894534188563617">&amp;Nueva carpeta</translation>
 <translation id="6456394469623773452">Aceptable</translation>
+<translation id="6456955391422100996">Se ha retirado el anuncio.</translation>
 <translation id="645705751491738698">Seguir bloqueando JavaScript</translation>
 <translation id="6458701200018867744">No se ha podido subir (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Usar selección para buscar</translation>
 <translation id="6459799433792303855">La ventana activa se ha movido a otra pantalla.</translation>
 <translation id="6460601847208524483">Buscar siguiente</translation>
+<translation id="6461170143930046705">Buscando redes...</translation>
 <translation id="6463795194797719782">&amp;Edición</translation>
 <translation id="6466988389784393586">&amp;Abrir todos los marcadores</translation>
 <translation id="6467304607960172345">Optimizar vídeos en pantalla completa</translation>
@@ -3648,6 +3663,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
 <ph name="FILE_INFO" />
 <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Estás conectado a una red <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Compartir</translation>
 <translation id="6528513914570774834">Permitir que otros usuarios de este dispositivo usen esta red</translation>
 <translation id="652948702951888897">Historial de Chrome</translation>
@@ -3744,7 +3760,6 @@
 <translation id="6680650203439190394">Velocidad</translation>
 <translation id="6681668084120808868">Sacar foto</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" se desinstalará.</translation>
-<translation id="6685083257944113180">Parar, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Abrir Google Play</translation>
 <translation id="6686490380836145850">Cerrar pestañas a la derecha</translation>
 <translation id="6686817083349815241">Guardar tu contraseña</translation>
@@ -3852,6 +3867,7 @@
 <translation id="6845038076637626672">Abrir de forma maximizada</translation>
 <translation id="6845325883481699275">Ayudar a mejorar la seguridad de Chrome</translation>
 <translation id="6848388270925200958">Tienes algunas tarjetas que solo se pueden utilizar en este dispositivo</translation>
+<translation id="6850286078059909152">Color del texto</translation>
 <translation id="6851497530878285708">Aplicación habilitada</translation>
 <translation id="6853388645642883916">Herramienta de actualización no disponible</translation>
 <translation id="68541483639528434">Cerrar las demás pestañas</translation>
@@ -3901,7 +3917,6 @@
 <translation id="6923132443355966645">Desplazarse/Hacer clic</translation>
 <translation id="6923633482430812883">Se ha producido un error al activar el sistema compartido. Comprueba que el servidor de archivos con el que estés conectando sea compatible con SMBv2 o versiones posteriores.</translation>
 <translation id="6930036377490597025">Llave de seguridad externa o sensor integrado</translation>
-<translation id="6930242544192836755">Duración</translation>
 <translation id="693807610556624488">La operación de escritura supera la longitud máxima permitida del atributo para "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Inicia sesión en <ph name="TOKEN_NAME" /> para identificarte en <ph name="HOST_NAME" /> con tu certificado.</translation>
 <translation id="6943176775188458830">Cancelar impresión</translation>
@@ -3915,6 +3930,7 @@
 <translation id="6951153907720526401">Controladores de pago</translation>
 <translation id="6951663584153258142">Tu organización pide que actualices este dispositivo</translation>
 <translation id="6953878494808481632">Información relacionada</translation>
+<translation id="6953916367503892689">{0,plural, =1{Archivo: <ph name="FILES" />}other{Archivos: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Inspeccionar ventana emergente</translation>
 <translation id="6957044667612803194">Esta llave de seguridad no admite números PIN.</translation>
 <translation id="6957231940976260713">Nombre de servicio</translation>
@@ -4127,7 +4143,6 @@
 <translation id="7254554697254365959">No se ha podido traducir la página.</translation>
 <translation id="7254951428499890870">¿Seguro que quieres iniciar <ph name="APP_NAME" /> en modo de diagnóstico?</translation>
 <translation id="7255002516883565667">Tienes una tarjeta que solo se puede usar en este dispositivo</translation>
-<translation id="7255220508626648026">Enviando: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Vuelve a tocar tu llave de seguridad para confirmar el restablecimiento. Se borrará toda la información guardada en la llave de seguridad, incluido el PIN.</translation>
 <translation id="7255935316994522020">Aplicar</translation>
 <translation id="7256069762010468647">El sitio web está usando tu cámara</translation>
@@ -4261,6 +4276,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Abrir ubicación...</translation>
 <translation id="7458168200501453431">Usa el mismo corrector ortográfico que se usa en la Búsqueda de Google. El texto que escribas en el navegador se enviará a Google.</translation>
+<translation id="7460045493116006516">Tema instalado actualmente</translation>
 <translation id="7461924472993315131">Fijar</translation>
 <translation id="746216226901520237">La próxima vez, el teléfono desbloqueará tu <ph name="DEVICE_TYPE" />. Puedes desactivar Smart Lock en la configuración.</translation>
 <translation id="7463006580194749499">Añadir perfil</translation>
@@ -4320,6 +4336,7 @@
 <translation id="7554791636758816595">Nueva pestaña</translation>
 <translation id="7556033326131260574">Smart Lock no ha podido verificar tu cuenta. Introduce la contraseña para acceder.</translation>
 <translation id="7556242789364317684">Lamentablemente, <ph name="SHORT_PRODUCT_NAME" /> no puede recuperar tu configuración. Para solucionar el error, <ph name="SHORT_PRODUCT_NAME" /> debe restablecer tu dispositivo con Powerwash.</translation>
+<translation id="7559444627302317199">Comprueba tu conexión de red y vuelve a intentarlo.</translation>
 <translation id="7559719679815339381">Por favor, espera... La aplicación de kiosco se está actualizando. No extraigas el dispositivo USB.</translation>
 <translation id="7561196759112975576">Siempre</translation>
 <translation id="7563991800558061108">Para solucionar este error, deberás iniciar sesión en tu cuenta de Google desde
@@ -4562,7 +4579,6 @@
 <translation id="7887334752153342268">Duplicar</translation>
 <translation id="7887864092952184874">Ratón Bluetooth vinculado</translation>
 <translation id="7889565820482017512">Tamaño de la pantalla</translation>
-<translation id="7889966925761734854">Buscar</translation>
 <translation id="7893008570150657497">Acceder a fotos, música y otro contenido multimedia de tu ordenador</translation>
 <translation id="7893153962594818789">El Bluetooth está desactivado en este <ph name="DEVICE_TYPE" />. Introduce la contraseña y activa el Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (predeterminado)</translation>
@@ -4570,7 +4586,6 @@
 <translation id="7898627924844766532">Mantener en la barra de herramientas</translation>
 <translation id="7898725031477653577">Traducir siempre</translation>
 <translation id="790040513076446191">Modificar la configuración relacionada con la privacidad</translation>
-<translation id="7902874111237641165">Movimiento fluido [beta]</translation>
 <translation id="7903345046358933331">La página no responde. Puedes esperar a que vuelva a responder o cerrarla.</translation>
 <translation id="7903742244674067440">Tienes certificados registrados que identifican a estas entidades</translation>
 <translation id="7903925330883316394">Utilidad: <ph name="UTILITY_TYPE" /></translation>
@@ -4682,6 +4697,7 @@
 <translation id="8037117027592400564">Leer todo el texto hablado con la síntesis de voz</translation>
 <translation id="8037357227543935929">Preguntar (predeterminado)</translation>
 <translation id="803771048473350947">Archivo</translation>
+<translation id="8042142357103597104">Opacidad del texto</translation>
 <translation id="8044899503464538266">Lento</translation>
 <translation id="8045253504249021590">La sincronización se ha detenido mediante el Panel de Control de Google.</translation>
 <translation id="8045923671629973368">Introducir el ID de la aplicación o la URL de Chrome Web Store</translation>
@@ -4718,7 +4734,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Puedes desactivar este servicio en Ajustes.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Los PIN no coinciden</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> está usando los ajustes de proxy de una extensión</translation>
-<translation id="8099495042588009598">Más permisos</translation>
 <translation id="8101987792947961127">Se requiere Powerwash en el siguiente reinicio</translation>
 <translation id="8102159139658438129">Ve a <ph name="LINK_BEGIN" />Configuración<ph name="LINK_END" /> para ver las opciones del teléfono conectado</translation>
 <translation id="8104696615244072556">Haz un Powerwash del dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> y vuelve a la versión anterior.</translation>
@@ -4770,8 +4785,10 @@
     No creo que este sitio deba bloquearse.</translation>
 <translation id="8184288427634747179">Cambiar a <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Más información</translation>
+<translation id="8184472985242519288">Uniforme</translation>
 <translation id="8185331656081929126">Mostrar notificaciones cuando se detecten nuevas impresoras en la red</translation>
 <translation id="8186609076106987817">El servidor no ha podido encontrar el archivo.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> puede leer todos los archivos de la siguiente carpeta. Este sitio web solo puede ver los cambios que se hagan en la carpeta mientras esa pestaña esté abierta.</translation>
 <translation id="8188389033983459049">Comprueba los ajustes del dispositivo y actívalo para continuar</translation>
 <translation id="8190193592390505034">Conectando con <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Administrar tus aplicaciones, extensiones y temas</translation>
@@ -4875,7 +4892,6 @@
 <translation id="833986336429795709">Para abrir este enlace, elige una aplicación</translation>
 <translation id="8342861492835240085">Seleccionar una colección</translation>
 <translation id="834290227245955730">El PIN no es válido. Intentos restantes: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Utiliza un ancho de banda alto para disfrutar de mejores vídeos y animaciones. Es posible que otros usuarios con conexiones lentas no vean tu contenido.</translation>
 <translation id="8351419472474436977">Esta extensión ha tomado el control de la configuración del proxy, lo que significa que puede cambiar, deshacer o espiar cualquier acción que hagas online. Si no estás seguro de los motivos por los que se ha producido este cambio, probablemente no lo quieras.</translation>
 <translation id="8351630282875799764">La batería no se está cargando</translation>
 <translation id="835238322900896202">Se ha producido un error durante la desinstalación. Realiza la desinstalación a través del terminal.</translation>
@@ -4908,9 +4924,11 @@
 <translation id="839736845446313156">Registrar</translation>
 <translation id="8398877366907290961">Continuar de todos modos</translation>
 <translation id="8400146488506985033">Administrar usuarios</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> puede guardar los cambios que hagas directamente en los archivos de la siguiente carpeta. Este sitio web solo podrá guardar los cambios mientras esa pestaña esté abierta.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Preguntar antes (recomendado)</translation>
 <translation id="8418445294933751433">Mo&amp;strar como pestaña</translation>
+<translation id="8418905021510211421">La página tiene permiso para leer una carpeta de tu dispositivo.</translation>
 <translation id="8419098111404128271">Resultados de búsqueda de "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Te damos la bienvenida a tu <ph name="DEVICE_TYPE" /></translation>
 <translation id="8425213833346101688">Cambiar</translation>
@@ -4930,6 +4948,7 @@
 <translation id="8438566539970814960">Mejorar las búsquedas y la navegación</translation>
 <translation id="8439506636278576865">Ofrecer la traducción de páginas en este idioma</translation>
 <translation id="8440630305826533614">Aplicaciones de Linux</translation>
+<translation id="844241640324986723">No se han podido eliminar tus datos de inicio de sesión.</translation>
 <translation id="8443338615972234259">Crea una cuenta para tu usuario supervisado.</translation>
 <translation id="8446884382197647889">Más información</translation>
 <translation id="8447409163267621480">Incluye Ctrl o Alt</translation>
@@ -4945,8 +4964,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Es posible que el administrador haya eliminado o inhabilitado este usuario supervisado. Ponte en contacto con el administrador si quieres seguir iniciando sesión como este usuario.</translation>
 <translation id="846374874681391779">Barra de descargas</translation>
-<translation id="8463807869745732775">"&gt;
-    Datos de inicio de sesión almacenados en la llave de seguridad</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> inhabilitado.</translation>
 <translation id="8464132254133862871">Esta cuenta de usuario no es apta para este servicio.</translation>
 <translation id="8465252176946159372">No válido</translation>
@@ -5012,6 +5029,7 @@
 <translation id="8569002732135253578">Imprimiendo <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">No se ha encontrado ningún destino.</translation>
 <translation id="8571213806525832805">Últimas cuatro semanas</translation>
+<translation id="8573403125070227391">Google ha retirado este anuncio porque consumía demasiados recursos de tu dispositivo.</translation>
 <translation id="8574990355410201600">Permitir siempre el sonido en <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Mantén pulsado <ph name="KEY_EQUIVALENT" /> para salir</translation>
 <translation id="8578639784464423491">No puede tener más de 99 caracteres</translation>
@@ -5035,13 +5053,13 @@
 <translation id="8609465669617005112">Subir</translation>
 <translation id="8610103157987623234">El formato no es correcto; inténtalo de nuevo</translation>
 <translation id="8615618338313291042">Aplicación de incógnito: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Sombra paralela</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Estado de itinerancia</translation>
 <translation id="8620765578342452535">Configurar conexiones de red</translation>
 <translation id="8621866727807194849">Se ha detectado software dañino en tu ordenador. Chrome está eliminándolo, restaurando la configuración y desactivando las extensiones. Así, el navegador volverá a funcionar con normalidad.</translation>
 <translation id="8621979332865976405">Compartir toda la pantalla</translation>
 <translation id="862542460444371744">&amp;Extensiones</translation>
-<translation id="8627151598708688654">Seleccionar fuente</translation>
 <translation id="862727964348362408">En suspensión</translation>
 <translation id="862750493060684461">Caché de CSS</translation>
 <translation id="8627795981664801467">Conexiones seguras solamente</translation>
@@ -5095,6 +5113,7 @@
 <translation id="8688579245973331962">¿No aparece tu nombre?</translation>
 <translation id="8688591111840995413">Contraseña incorrecta</translation>
 <translation id="8688672835843460752">Disponible</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Abrir &amp;ubicación...</translation>
 <translation id="869884720829132584">Menú de aplicaciones</translation>
 <translation id="869891660844655955">Fecha de caducidad</translation>
@@ -5258,6 +5277,7 @@
 <translation id="891365694296252935">Enviar datos de uso y diagnóstico. Este dispositivo envía automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos no se usarán para identificar a tu hijo, sino para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. El propietario ha aplicado este ajuste. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en la cuenta de Google de tu hijo. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Cargando sugerencia</translation>
 <translation id="8916476537757519021">Submarco incógnito: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - tiene permiso para leer una carpeta del dispositivo</translation>
 <translation id="8919275547519617350">Inicia sesión y activa la sincronización para tener tus contraseñas en todos tus dispositivos.</translation>
 <translation id="8921366488406707015">Verificando la llave de seguridad...</translation>
 <translation id="8922013791253848639">Permite los anuncios siempre en este sitio web</translation>
@@ -5287,7 +5307,6 @@
 <translation id="8965037249707889821">Introducir contraseña anterior</translation>
 <translation id="8966870118594285808">Vuelve a abrir una pestaña si se cierra por error</translation>
 <translation id="8967866634928501045">Pulsa Alt + Mayús + A para mostrarlo</translation>
-<translation id="8970203673128054105">Ver la lista del modo de envío</translation>
 <translation id="89720367119469899">Esc</translation>
 <translation id="8972513834460200407">Consulta al administrador de tu red para asegurarte de que el cortafuegos no está bloqueando las descargas procedentes de los servidores de Google.</translation>
 <translation id="8973557916016709913">Quitar el nivel de zoom</translation>
@@ -5436,6 +5455,7 @@
 <translation id="9214520840402538427">¡Vaya! Se ha agotado el tiempo de la inicialización de los atributos de tiempo de instalación. Ponte en contacto con el representante del servicio de asistencia.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" añadida</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> podrá guardar los cambios que hagas directamente en el siguiente archivo. Este sitio web solo podrá guardar los cambios mientras esa pestaña esté abierta.</translation>
 <translation id="9218430445555521422">Elegir como predeterminado</translation>
 <translation id="9219103736887031265">Imágenes</translation>
 <translation id="9220525904950070496">Quitar cuenta</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index 4bd6672f..14674b2 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Viga virtuaalseadme käivitamisel. Proovige uuesti.</translation>
 <translation id="1089439967362294234">Parooli muutmine</translation>
 <translation id="1090126737595388931">Taustal rakendusi ei tööta</translation>
+<translation id="1090290614672149983">Kas salvestada muudatused algsesse faili?</translation>
 <translation id="1090918500949388876">Pääsete assistendile alati juurde, kui ekraan on sisse lülitatud ja ütlete „Ok Google”.</translation>
 <translation id="1091767800771861448">Vahelejätmiseks vajutage klahvi ESC (ainult mitteametlike järkude puhul).</translation>
 <translation id="1093457606523402488">Nähtavad võrgud:</translation>
 <translation id="1094607894174825014">Lugemise või kirjutamise toimingut taotleti sobimatu nihkega seadmes „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="1097658378307015415">Enne sisselogimist sisenege võrgu <ph name="NETWORK_ID" /> aktiveerimiseks külastajana</translation>
+<translation id="110029732810301672">Selle vahelehe puhul lubatakse salvestada algsetesse failidesse.</translation>
 <translation id="1103523840287552314">Tõlgi alati: <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Peata</translation>
 <translation id="1110155001042129815">Oota</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Päikeseprillid</translation>
 <translation id="1151917987301063366">Luba saidi <ph name="HOST" /> jaoks alati juurdepääs anduritele</translation>
 <translation id="1153356358378277386">Seotud seadmed</translation>
-<translation id="1156488781945104845">Praegune kellaaeg</translation>
 <translation id="1161575384898972166">Logige sisse rakendusse <ph name="TOKEN_NAME" /> kliendi sertifikaadi eksportimiseks.</translation>
 <translation id="1163931534039071049">&amp;Vaata paneeli allikat</translation>
 <translation id="1164674268730883318">Kas lülitada Smart Lock välja seadmes <ph name="DEVICE_TYPE" />?</translation>
@@ -191,12 +192,11 @@
 <translation id="126768002343224824">16-kordne</translation>
 <translation id="1269405567167332785">Täpsem seadistus</translation>
 <translation id="1272079795634619415">Peata</translation>
-<translation id="1272293450992660632">PIN-koodi väärtused ei ühti.</translation>
+<translation id="1272293450992660632">PIN-koodide väärtused ei ühti.</translation>
 <translation id="1272978324304772054">See kasutajakonto ei kuulu domeeni, kus seade on registreeritud. Kui soovite registreeruda mõnel teisel domeenil, peate esmalt tegema seadmetaaste.</translation>
 <translation id="1274977772557788323">Adobe Flash Playeri salvestusruumi seaded</translation>
 <translation id="1274997165432133392">Küpsised ja muud saidi andmed</translation>
 <translation id="127668050356036882">Sule kõik aknad</translation>
-<translation id="1277908057200820621">Kuva seadmete loend</translation>
 <translation id="1280820357415527819">Mobiilsidevõrkude otsimine</translation>
 <translation id="1285320974508926690">Ära kunagi seda saiti tõlgi</translation>
 <translation id="1285484354230578868">Salvestage andmed oma Google Drive'i kontole</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Koduvõrk, mitte rändlus</translation>
 <translation id="1316136264406804862">Otsimine ...</translation>
 <translation id="1316495628809031177">Sünkroonimine on peatatud</translation>
+<translation id="1317637799698924700">Teie dokkimisjaam töötab C-tüüpi USB-ga ühilduvas režiimis.</translation>
 <translation id="1322046419516468189">Vaadake ja hallake oma salvestatud paroole siin: <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Vahelehtede hankimiseks oma teistest seadmetest logige Chrome'i sisse.</translation>
 <translation id="1327074568633507428">Printer Google'i pilvprintimises</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Teie <ph name="BEGIN_LINK" />brauserit haldab<ph name="END_LINK" /> <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Saate oma seadmes <ph name="DEVICE_TYPE" /> käitada Linuxi tööriistu, redaktoreid ja IDE-sid. &lt;a target="_blank" href="<ph name="URL" />"&gt;Lisateave&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Vali fail</translation>
+<translation id="1370749010280229230">Dokiga ühendatud ekraani puhul tekkis probleem</translation>
 <translation id="1371301976177520732">Teie järjehoidjad, paroolid, ajalugu ja muu kõigis teie seadmetes</translation>
 <translation id="1372841398847029212">Sünkrooni minu kontoga</translation>
 <translation id="1374844444528092021">Võrk „<ph name="NETWORK_NAME" />” nõuab sertifikaati, mis on installimata või kehtetu. Hankige uus sertifikaat ja proovige uuesti ühendust luua.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Veebileht, üks fail</translation>
 <translation id="1451917004835509682">Jälgitava isiku lisamine</translation>
 <translation id="1454223536435069390">J&amp;äädvusta ekraanipilt</translation>
+<translation id="1458243790901188746">{0,plural, =1{Kaust: <ph name="DIRECTORIES" />}other{Kaustad: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Laienduste lisatud otsingumootorid</translation>
 <translation id="146000042969587795">See paneel keelati, kuna see sisaldab osaliselt ebaturvalist sisu.</translation>
 <translation id="146219525117638703">ONC olek</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Kuva sisestusvalikud</translation>
 <translation id="1651008383952180276">Peate sisestama sama parooli kaks korda</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Lisage printer teenusesse Google'i pilvprintimine, et saaksite printida kõikjal.}other{Lisage # printerit teenusesse Google'i pilvprintimine, et saaksite printida kõikjal.}}</translation>
+<translation id="1656528038316521561">Tausta läbipaistvus</translation>
 <translation id="1657406563541664238">Aidake muuta rakendus <ph name="PRODUCT_NAME" /> paremaks, saates Google'ile automaatselt kasutusstatistikat ja veaaruandeid</translation>
 <translation id="1658424621194652532">See leht pääseb teie mikrofoni juurde.</translation>
 <translation id="1660204651932907780">Saitidel lubatakse esitada heli (soovitatav)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> soovib näha teie turvavõtme tootjat ja mudelit</translation>
 <translation id="1679068421605151609">Arendaja tööriistad</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Kas soovite kindlasti väljuda?</translation>
 <translation id="167983332380191032">Haldusteenus edastas HTTP vea.</translation>
 <translation id="1680849702532889074">Linuxi rakenduse installimisel ilmnes viga.</translation>
 <translation id="16815041330799488">Ära luba saitidel näha lõikelauale kopeeritud teksti ega kujutisi</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Kaitstud meedia identifikaator</translation>
 <translation id="175196451752279553">&amp;Ava suletud vaheleht uuesti</translation>
 <translation id="1753905327828125965">Enim külastatud</translation>
+<translation id="1755601632425835748">Teksti suurus</translation>
 <translation id="1756681705074952506">Sisestusmeetod</translation>
 <translation id="1757301747492736405">Desinstallimine on ootel</translation>
 <translation id="175772926354468439">Luba teema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Väiksemaks</translation>
 <translation id="1919345977826869612">Reklaamid</translation>
 <translation id="1919814239594435008">Liivakastist eemaldatud pistikprogramm on lubatud</translation>
+<translation id="1920390473494685033">Kontaktid</translation>
 <translation id="1921050530041573580">Siduge oma telefon rakendusega Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> punkti tolli kohta</translation>
 <translation id="1924559387127953748">Teenuses <ph name="IDS_SHORT_PRODUCT_NAME" /> Google'i nutikate funktsioonide kasutamine</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Inkognito vaheleht: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> domeenil <ph name="PEPPER_PLUGIN_DOMAIN" /> soovib juurdepääsu teie arvutile</translation>
 <translation id="2178614541317717477">CA turvarike</translation>
+<translation id="2179849162388791084">Teie turvavõtmest sisselogimisandmete kogumine ebaõnnestus.</translation>
 <translation id="218070003709087997">Kasutage numbrit, mis näitab, kui palju koopiaid printida (1 kuni 999).</translation>
 <translation id="2184515124301515068">Luba Chrome'il valida, millal saidid võivad heli esitada (soovitatav)</translation>
 <translation id="2187895286714876935">Serveri sertifikaadi impordi viga</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Kõik küpsisefailid ja saidiandmed</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 üksus on kopeeritud}other{# üksust on kopeeritud}}</translation>
 <translation id="2278562042389100163">Ava brauseri aken</translation>
-<translation id="2279874276457403668">Korraga saab luua vaid ühe seansi.</translation>
 <translation id="2280486287150724112">Parem veeris</translation>
 <translation id="2282146716419988068">GPU-protsess</translation>
 <translation id="2282155092769082568">Automaatse konfigureerimise URL:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Lukustuskuva märkmed salvestatakse automaatselt rakendusse <ph name="LOCK_SCREEN_APP_NAME" />. Teie kõige viimane märge jääb lukustuskuvale.</translation>
 <translation id="2353297238722298836">Kaamera ja mikrofon on lubatud</translation>
 <translation id="2356070529366658676">Küsi</translation>
-<translation id="2357949918965361754">Selle funktsiooni abil saate kuvada Chrome'ist pärinevat sisu oma teleris või muudes seadmetes.</translation>
 <translation id="2359345697448000899">Laienduste haldamiseks klõpsake menüüs Tööriistad valikul Laiendused.</translation>
 <translation id="2359808026110333948">Jätka</translation>
 <translation id="236117173274098341">Optimeeri</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Teie organisatsioon nõuab, et seda seadet kohe värskendaksite</translation>
 <translation id="2439545803278355377">Sisestage oma uus PIN-kood. PIN-kood peab sisaldama vähemalt nelja tähemärki ja see tohib sisaldada nii tähti, numbreid kui ka teisi tähemärke.</translation>
 <translation id="2440604414813129000">Vaata a&amp;llikat</translation>
+<translation id="2442916515643169563">Teksti vari</translation>
 <translation id="2444119669991608829">Kas leht ei ole <ph name="LANGUAGE" /> keeles?</translation>
 <translation id="2445081178310039857">Laienduse juurkaust on nõutav.</translation>
 <translation id="2445484935443597917">Loo uus profiil</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Mitte pärast</translation>
 <translation id="2739191690716947896">Silu</translation>
 <translation id="2739240477418971307">Juurdepääsetavuse seadete muutmine</translation>
+<translation id="274029851662193272">Lohkus</translation>
 <translation id="2740393541869613458">üle vaadata valvatava kasutaja külastatud veebisaite ja</translation>
 <translation id="2741912629735277980">Sisselogimiskuval kasutajaliidese kuvamine</translation>
 <translation id="274290345632688601">Linuxi rakenduste ja failide taastamine</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Otsetee on juba olemas</translation>
 <translation id="2807517655263062534">Siin kuvatakse teie allalaaditud failid</translation>
 <translation id="2809586584051668049">ja veel <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolti ei toetata</translation>
 <translation id="2812944337881233323">Proovige välja ja seejärel uuesti sisse logida</translation>
 <translation id="2812989263793994277">Ära kuva ühtki pilti</translation>
 <translation id="281390819046738856">Taotlust ei saanud allkirjastada.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Pakkuja</translation>
 <translation id="2844169650293029770">C-tüüpi USB-seade (eesmine vasakpoolne port)</translation>
 <translation id="2845382757467349449">Kuva alati järjehoidjariba</translation>
-<translation id="2847759467426165163">Ülekandmine seadmesse</translation>
 <translation id="284805635805850872">Kas eemaldada kahjulik tarkvara?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Tühjendamine ebaõnnestus</translation>
@@ -1297,6 +1305,7 @@
         Serveri teade: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Meediagalerii lisamine kataloogiga</translation>
 <translation id="2910318910161511225">Looge võrguühendus ja proovige uuesti</translation>
+<translation id="2910518940971897750">Salvesta algsesse faili</translation>
 <translation id="2913331724188855103">Lubab saitidel salvestada küpsiseid ja lugeda küpsiste andmeid (soovitatav)</translation>
 <translation id="2915102088417824677">Kuva tegevuste logi</translation>
 <translation id="2915873080513663243">Automaatne skannimine</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI-seadmed</translation>
 <translation id="3015639418649705390">Taaskäivita kohe</translation>
 <translation id="3016329696181678353">Printerit <ph name="PRINTER_NAME" /> ei saanud automaatselt seadistada. Esitage printeri täpsemad üksikasjad.</translation>
+<translation id="3016381065346027039">Logikirjed puuduvad</translation>
 <translation id="3016641847947582299">Komponent on värskendatud</translation>
 <translation id="3016780570757425217">Teada teie asukohta</translation>
 <translation id="3017079585324758401">Taust</translation>
 <translation id="3020183492814296499">Otseteed</translation>
 <translation id="3020990233660977256">Seerianumber: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Liblikas</translation>
+<translation id="3021408157810018664">Kas salvestada muudatused algsetesse failidesse?</translation>
 <translation id="3021426244864538700">Saidi andmetele juurdepääsemine</translation>
 <translation id="3021678814754966447">&amp;Vaata raami allikat</translation>
 <translation id="3022978424994383087">Ei saanud aru.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Võite sisselogimise vahele jätta ja <ph name="LINK_START" />sirvida külalisena<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Saidil on juurdepääs teie videosisendile</translation>
 <translation id="3177909033752230686">Lehe keel:</translation>
+<translation id="3179982752812949580">Teksti font</translation>
 <translation id="3181954750937456830">Ohutu sirvimine (kaitseb teid ja teie seadet ohtlike saitide eest)</translation>
 <translation id="3182749001423093222">Õigekirjakontroll</translation>
 <translation id="3183139917765991655">Profiili importija</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Ava aknana</translation>
 <translation id="3278001907972365362">Teie Google'i kontod vajavad tähelepanu</translation>
 <translation id="3279230909244266691">Protsess võib võtta mõne minuti. Virtuaalset masinat käivitatakse.</translation>
-<translation id="3279741024917655738">Kuva täisekraanil videod:</translation>
 <translation id="3280237271814976245">Salvesta &amp;nimega...</translation>
 <translation id="3280243678470289153">Jää Chrome'i</translation>
 <translation id="3281892622610078515">Karantiini pandavad failid ja programmid:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Otsingutulemusi ei leitud</translation>
 <translation id="3305389145870741612">Vormindusprotsessile võib kuluda paar sekundit. Oodake.</translation>
 <translation id="3305661444342691068">Ava PDF-i eelvaade</translation>
-<translation id="3306684685104080068">Lubage ülekandmine pilvepõhistesse teenustesse (nt Google Hangouts).</translation>
+<translation id="3307871847038842490">Selle lehe puhul lubatakse salvestada algsetesse failidesse.</translation>
 <translation id="3308006649705061278">Organisatsiooniüksus (OU)</translation>
 <translation id="3308116878371095290">Sellel lehel takistati küpsiste seadistamine.</translation>
 <translation id="3308134619352333507">Nupp Peida</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Kas tühistada konto seadistamine?</translation>
 <translation id="3464012987031883895">Saidil on juurdepääs helisisendile</translation>
 <translation id="346431825526753">Seda lastekontot haldab <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Voogesitage videot või helifaili</translation>
 <translation id="3468999815377931311">Android-telefon</translation>
 <translation id="3470442499439619530">Eemalda see kasutaja</translation>
 <translation id="3473479545200714844">Ekraanisuurendi</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Vähenda</translation>
 <translation id="3497560059572256875">Jaga Doodle'i vigurlogo</translation>
 <translation id="3505030558724226696">Tühista juurdepääs seadmele</translation>
+<translation id="3505635633742443645">Kui videoväljundi puhul kasutatakse C-tüüpi USB-porti, siis teie doki HDMI-porti ei saa kasutada. Kasutage ühe ekraani puhul muud porti.</translation>
 <translation id="3507421388498836150">Laiendi „<ph name="EXTENSION_NAME" />” praegused õigused</translation>
 <translation id="3507888235492474624">Otsi Bluetoothi seadmeid uuesti</translation>
 <translation id="3508920295779105875">Valige muu kaust...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Installimine õnnestus</translation>
 <translation id="3578594933904494462">Selle vahekaardi sisu jagatakse.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; soovib jagada printerit &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; teie rühmaga &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Kui nõustute, saavad printerit kasutada ka kõik rühmaliikmed.</translation>
+<translation id="357889014807611375">mahupõhine WiFi</translation>
 <translation id="3584169441612580296">Arvutis olevate fotode, muusika ja muu meedia lugemine ja muutmine</translation>
 <translation id="3587482841069643663">Kõik</translation>
 <translation id="358796204584394954">Sisestage seadmes „<ph name="DEVICE_NAME" />” sidumiseks see kood:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Sisestusklahv</translation>
 <translation id="3593965109698325041">Sertifikaadi nimepiirangud</translation>
 <translation id="3596235046596950091">Luba pilveteenused</translation>
+<translation id="3599221874935822507">Tõstetud</translation>
 <translation id="3599863153486145794">Kustutab ajaloo kõigist sisselogitud seadmetest. Aadressil <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> võib teie Google'i kontol olla muus vormis sirvimisajalugu.</translation>
 <translation id="3600051066689725006">Veebitaotluse teave</translation>
 <translation id="3600792891314830896">Heli esitavad saidid vaigistatakse</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Laadis alla &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Kuva <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Ava uuel vahelehel</translation>
+<translation id="3615073365085224194">Puudutage oma sõrmega sõrmejäljeandurit</translation>
 <translation id="3616113530831147358">Heli</translation>
 <translation id="3616741288025931835">Kustuta sirvi&amp;mise andmed...</translation>
 <translation id="3617891479562106823">Taustad pole saadaval. Proovige hiljem uuesti</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Avaleht</translation>
 <translation id="3720996970802414353">Vaheta ikkagi</translation>
 <translation id="3722108462506185496">Viga virtuaalseadme teenuse käivitamisel. Proovige uuesti.</translation>
-<translation id="3723158278575423087">Tere tulemast Chromiumis Cast'i avastama!</translation>
 <translation id="3725367690636977613">lk-d</translation>
 <translation id="3726137731714254362">Siinsete kaustada eemaldamisel jagamine katkestatakse, ent faile ei kustutata.</translation>
 <translation id="3727148787322499904">Selle seade muutmine mõjutab kõiki jagatud võrke</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Üksikasjalik järguteave</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Ühendus USB-seadmega}other{Ühendus # USB-seadmega}}</translation>
 <translation id="3765246971671567135">Võrguühenduseta demorežiimi reeglit ei saanud lugeda.</translation>
-<translation id="3766223500670287046">Kaugekraan</translation>
 <translation id="3768037234834996183">Eelistuste sünkroonimine ...</translation>
 <translation id="377050016711188788">Jäätis</translation>
 <translation id="3771294271822695279">Videofailid</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Tõstke sõrm andurilt ja seejärel puudutage uuesti</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sünkroonimine on peatatud</translation>
-<translation id="3862134173397075045">Tere tulemast Chrome'is Cast'i avastama!</translation>
 <translation id="3862693525629180217">Kinnitamine sisseehitatud anduri abil</translation>
 <translation id="3862788408946266506">Rakendus manifesti atribuudiga „kiosk_only” tuleb installida Chrome OS-i kioskirežiimis</translation>
 <translation id="3865414814144988605">Eraldusvõime</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Funktsiooni Smart Lock telefoni muudeti</translation>
 <translation id="3927932062596804919">Keela</translation>
 <translation id="3930737994424905957">Seadmete otsimine</translation>
+<translation id="3930968231047618417">Taustavärv</translation>
 <translation id="3933283459331715412">Taasta kasutaja <ph name="USERNAME" /> kustutatud paroolid</translation>
 <translation id="3936390757709632190">&amp;Ava heli uuel vahelehel</translation>
 <translation id="3936925983113350642">Teie valitavat parooli on vaja selle sertifikaadi hilisemaks taastamiseks. Salvestage see turvalisse asukohta.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Imporditud IE'st</translation>
 <translation id="3950820424414687140">Sisselogimine</translation>
+<translation id="3950828138786918475">See vaheleht saab lugeda teie seadme kausta.</translation>
 <translation id="3954354850384043518">Pooleli</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> × <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> hertsi)</translation>
 <translation id="3954953195017194676">Teil pole ühtegi hiljuti jäädvustatud WebRTC sündmuselogi.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Arvutamine ...</translation>
 <translation id="3975565978598857337">Valduse jaoks serveriga ühenduse loomine nurjus</translation>
 <translation id="397703832102027365">Lõpetamine ...</translation>
+<translation id="3977886311744775419">See võrgu tüüp ei toeta automaatsete värskenduste allalaadimist, kuid võite värskendusi kontrollida käsitsi.</translation>
 <translation id="3979395879372752341">Lisati uus laiendus (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Luba <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Sisestati vale salvestamistüüp.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Luba klõpsamine</translation>
 <translation id="4195643157523330669">Ava uuel vahelehel</translation>
 <translation id="4195814663415092787">Jätka sealt, kus pooleli jäin</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> saab teie muudatused salvestada otse järgmistesse failidesse. See sait saab muudatusi salvestada vaid siis, kui see vaheleht on avatud.</translation>
 <translation id="4198146608511578238">Google'i assistendiga rääkimiseks hoidke all käivitaja ikooni.</translation>
 <translation id="4200689466366162458">Kohandatud sõnad</translation>
 <translation id="4200983522494130825">Uus &amp;vaheleht</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Loo mobiilsidevõrguga automaatselt ühendus</translation>
 <translation id="4268025649754414643">Võtme šifreerimine</translation>
 <translation id="4270393598798225102">Versioon <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Vasted puuduvad</translation>
 <translation id="4275663329226226506">Meedia</translation>
 <translation id="4275830172053184480">Taaskäivitage seade</translation>
 <translation id="4278101229438943600">Teie assistent on valmis</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Protsessoriaeg</translation>
 <translation id="4534661889221639075">Proovige uuesti.</translation>
 <translation id="4535127706710932914">Vaikeprofiil</translation>
+<translation id="4535767533210902251">Sõrmejäljeandur on teie klaviatuuri paremal ülal olev klahv. Puudutage seda õrnalt mis tahes sõrmega.</translation>
 <translation id="4538684596480161368">Blokeeri alati saidil <ph name="HOST" /> pistikprogrammid, mis ei ole liivakastirežiimis</translation>
 <translation id="4538792345715658285">Installitud ettevõtte reegli alusel.</translation>
 <translation id="4542520061254486227">Lugege oma andmeid veebisaitidel <ph name="WEBSITE_1" /> ja <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Rohkem ...</translation>
 <translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Bluetoothi seadme sidumine</translation>
+<translation id="4578012756826807359">Sisselogimisandmete kustutamine õnnestus.</translation>
 <translation id="4579581181964204535">Hosti <ph name="HOST_NAME" /> ei saa üle kanda.</translation>
 <translation id="4581774856936278355">Viga Linuxi taastamisel</translation>
 <translation id="4582563038311694664">Lähtesta kõik seaded</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Mitme saidi küpsised tühjendatakse väljumisel.</translation>
 <translation id="4765582662863429759">Lubab rakendusel Android Messages tekstisõnumeid telefonist Chromebooki edastada</translation>
 <translation id="4768332406694066911">Teil on nende organisatsioonide sertifikaadid, mis teid tuvastavad</translation>
-<translation id="4772404146526168240">Mõlemad ekraanid</translation>
 <translation id="4776146737004271126">Ava Androidi seaded</translation>
 <translation id="4776917500594043016">Kasutaja <ph name="USER_EMAIL_ADDRESS" /> parool</translation>
 <translation id="4777825441726637019">Play pood</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Logige sisse, et teie järjehoidjad, ajalugu, paroolid ja muud seaded oleksid kõikides teie seadmetes saadaval. Teid logitakse ka automaatselt sisse Google'i teenustesse.</translation>
 <translation id="4929386379796360314">Sihtkohtade printimine</translation>
 <translation id="4930714375720679147">Lülita sisse</translation>
-<translation id="4931132176527519925">Kasuta alati peegeldamist</translation>
 <translation id="4932733599132424254">Kuupäev</translation>
 <translation id="4933484234309072027">manustatud aadressil <ph name="URL" /></translation>
 <translation id="493571969993549666">Jälgitava kasutaja lisamine</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Tühista vaigistus</translation>
 <translation id="4992458225095111526">Powerwashi kinnitamine</translation>
 <translation id="4992473555164495036">Administraator on saadaolevaid sisestusmeetodeid piiranud.</translation>
+<translation id="4992866843815555470">Teie dokki tuleb hooldada. Ilma töötava ventilaatorita lülitub teie dokk välja.</translation>
 <translation id="4992926179187649719">Lülitage funktsioon „Ok Google” sisse</translation>
 <translation id="4994474651455208930">Luba saitidel küsida, kas hakata protokollide vaikimisi töötlejateks</translation>
 <translation id="4994754230098574403">Seadistamine</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">Protsessi ID</translation>
 <translation id="5233638681132016545">Uus vaheleht</translation>
 <translation id="5233736638227740678">&amp;Kleebi</translation>
-<translation id="5234764350956374838">Loobu</translation>
 <translation id="5235050375939235066">Kas desinstallida rakendus?</translation>
 <translation id="5235750401727657667">Asendatakse leht, mida uue vahelehe avamisel näete</translation>
 <translation id="5238278114306905396">Rakendus „<ph name="EXTENSION_NAME" />” eemaldati automaatselt.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google soovitab Chrome'i</translation>
 <translation id="532247166573571973">Serveriga ei pruugi ühendust saada. Proovige hiljem uuesti.</translation>
 <translation id="5324780743567488672">Määra ajavöönd asukoha alusel automaatselt</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – lubatakse salvestada algsetesse failidesse</translation>
 <translation id="5327248766486351172">Nimi</translation>
 <translation id="5327570636534774768">Seade on märgitud muu domeeni kaudu haldamiseks. Enne demorežiimi seadistamist eemaldage seade sellest domeenist.</translation>
 <translation id="532943162177641444">Puudutage seadmes <ph name="PHONE_NAME" /> märguannet, et seadistada mobiilne leviala, mida see seade saab kasutada.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> soovib</translation>
 <translation id="5534304873398226603">Eemalda foto või video</translation>
 <translation id="5535941515421698170">Eemaldage sellest seadmest ka oma olemasolevad andmed</translation>
-<translation id="5537725057119320332">Ülekanne</translation>
 <translation id="5539221284352502426">Server lükkas sisestatud parooli tagasi. Võimalikud põhjused on järgmised. Parool on liiga lühike. Parool peab sisaldama numbreid või sümboleid. Parool peab erinema eelmistest paroolidest.</translation>
 <translation id="5541687815721799001">Kasuta rakendust</translation>
 <translation id="5542132724887566711">Profiil</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Lisateave saidile juurdepääsu kohta</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> tulemust otsingule „<ph name="SEARCH_TEXT" />”</translation>
 <translation id="6002458620803359783">Eelistatud hääled</translation>
-<translation id="6005695835120147974">Meedia marsruuter</translation>
 <translation id="6006484371116297560">Klassikaline</translation>
 <translation id="6007240208646052708">Häälotsing pole teie keeles saadaval.</translation>
 <translation id="6009781704028455063">Sisseehitatud andur</translation>
@@ -3380,7 +3393,7 @@
 <translation id="6103681770816982672">Hoiatus: lülitute arendajakanalile</translation>
 <translation id="6104068876731806426">Google'i kontod</translation>
 <translation id="6104311680260824317">Seadet ei saa domeeniga ühendada. Server ei toeta määratud Kerberose krüpteerimistüüpe. Krüpteerimisseaded leiate jaotisest „Rohkem valikuid”.</translation>
-<translation id="6106186653986077033">PluginVM nõuab litsentsi</translation>
+<translation id="6106186653986077033">Plugin VM nõuab litsentsi</translation>
 <translation id="6107012941649240045">Väljastatud subjektile:</translation>
 <translation id="6112294629795967147">Puudutage suuruse muutmiseks</translation>
 <translation id="6112931163620622315">Kontrollige oma telefoni</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Teie võrgus on uus printer}other{Teie võrgus on uued printerid}}</translation>
 <translation id="6286708577777130801">Salvestatud parooli üksikasjad</translation>
 <translation id="6289452883081499048">Isikupärastatud Google'i teenused, nagu Play</translation>
-<translation id="6290556621549272952">Selle funktsiooni abil saate kuvada Chromiumist pärinevat sisu oma teleris või muudes seadmetes.</translation>
 <translation id="6291949900244949761">Küsi, kui sait soovib juurdepääsu USB-seadmetele (soovitatav)</translation>
 <translation id="6291953229176937411">&amp;Näita otsijas</translation>
 <translation id="6295158916970320988">Kõik saidid</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Saada <ph name="BEGIN_LINK1" />süsteemiteave<ph name="END_LINK1" /> ja <ph name="BEGIN_LINK2" />mõõdikud<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Blokeeri saitide jaoks liikumisandurite kasutamine</translation>
 <translation id="6397094776139756010">Sünkroonimise ja isikupärastamise valikud</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> saab teie muudatused otse failidesse salvestada järgmises kaustas. See sait saab muudatusi salvestada vaid siis, kui see vaheleht on avatud.</translation>
 <translation id="6398715114293939307">Google Play poe eemaldamine</translation>
 <translation id="6398765197997659313">Välju täisekraanilt</translation>
 <translation id="6399774419735315745">Spioon</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">Konkreetsetel saitidel</translation>
 <translation id="6455894534188563617">&amp;Uus kaust</translation>
 <translation id="6456394469623773452">Hea</translation>
+<translation id="6456955391422100996">Reklaam eemaldati.</translation>
 <translation id="645705751491738698">Jätka JavaScripti blokeerimist</translation>
 <translation id="6458701200018867744">Üleslaadimine nurjus (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Kasuta otsimiseks valikut</translation>
 <translation id="6459799433792303855">Aktiivne aken teisaldati teisele ekraanile.</translation>
 <translation id="6460601847208524483">Otsi järgmine</translation>
+<translation id="6461170143930046705">Võrkude otsimine …</translation>
 <translation id="6463795194797719782">&amp;Muuda</translation>
 <translation id="6466988389784393586">&amp;Ava kõik järjehoidjad</translation>
 <translation id="6467304607960172345">Optimeeri täisekraanrežiimis videoid</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Teil on ühendus võrguga <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Jaga</translation>
 <translation id="6528513914570774834">Luba teistel selle seadme kasutajatel seda võrku kasutada</translation>
 <translation id="652948702951888897">Chrome'i ajalugu</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Kiirus</translation>
 <translation id="6681668084120808868">Tee foto</translation>
 <translation id="6681964764822470072">Rakendus „<ph name="APP_NAME" />” desinstallitakse.</translation>
-<translation id="6685083257944113180">Peata, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Ava Google Play</translation>
 <translation id="6686490380836145850">Sule vahelehed paremalt</translation>
 <translation id="6686817083349815241">Parooli salvestamine</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Ava maksimeeritult</translation>
 <translation id="6845325883481699275">Aidake Chrome'i turvalisust täiustada</translation>
 <translation id="6848388270925200958">Praegu on teil kaarte, mida saab kasutada ainult selles seadmes</translation>
+<translation id="6850286078059909152">Teksti värv</translation>
 <translation id="6851497530878285708">Rakendus on lubatud</translation>
 <translation id="6853388645642883916">Värskendaja on unerežiimis</translation>
 <translation id="68541483639528434">Sule muud vahelehed</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Kerimine/klõpsamine</translation>
 <translation id="6923633482430812883">Viga ühiskasutuse seadistamisel. Veenduge, et failiserver, millega ühenduse loote, toetaks SMBv2 või uuemat versiooni.</translation>
 <translation id="6930036377490597025">Väline turvavõti või sisseehitatud andur</translation>
-<translation id="6930242544192836755">Kestus</translation>
 <translation id="693807610556624488">Kirjutamistoiming ületab atribuudi maksimumpikkust: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="6941937518557314510">Logige rakendusse <ph name="TOKEN_NAME" /> oma hosti <ph name="HOST_NAME" /> sertifikaadi autentimiseks.</translation>
 <translation id="6943176775188458830">Tühista printimine</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Maksetöötlejad</translation>
 <translation id="6951663584153258142">Teie organisatsioon palub teil seda seadet värskendada</translation>
 <translation id="6953878494808481632">Seotud teave</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fail: <ph name="FILES" />}other{Failid: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Uuri hüpikut</translation>
 <translation id="6957044667612803194">See turvavõti ei toeta PIN-koode</translation>
 <translation id="6957231940976260713">Teenuse nimi</translation>
@@ -3935,7 +3951,7 @@
 <translation id="6974609594866392343">Võrguühenduseta demorežiim</translation>
 <translation id="6977381486153291903">Püsivara redaktsioon</translation>
 <translation id="6978121630131642226">Otsingumootorid</translation>
-<translation id="6979044105893951891">Hallatud külastajaseansside käivitamine ja nendest väljumine</translation>
+<translation id="6979044105893951891">Hallatavate külastajaseansside käivitamine ja nendest väljumine</translation>
 <translation id="6979440798594660689">Vaigista (vaikeseade)</translation>
 <translation id="6979737339423435258">Algusest</translation>
 <translation id="6981982820502123353">Juurdepääsetavus</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Seda lehte ei õnnestunud tõlkida.</translation>
 <translation id="7254951428499890870">Kas soovite kindlasti käivitada rakenduse „<ph name="APP_NAME" />” diagnostikarežiimis?</translation>
 <translation id="7255002516883565667">Praegu on teil üks kaart, mida saab kasutada ainult selles seadmes</translation>
-<translation id="7255220508626648026">Ülekandmine: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Lähtestamise kinnitamiseks puudutage turvavõtit. Kogu turvavõtmele salvestatud teave, sh selle PIN-kood, kustutatakse.</translation>
 <translation id="7255935316994522020">Rakenda</translation>
 <translation id="7256069762010468647">Sait kasutab teie kaamerat</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">arendaja</translation>
 <translation id="7456847797759667638">Ava asukoht...</translation>
 <translation id="7458168200501453431">Kasutab sama õigekirjakontrolli, mida kasutatakse Google'i otsingus. Brauseris sisestatav tekst saadetakse Google'ile.</translation>
+<translation id="7460045493116006516">Teie installitud praegune teema</translation>
 <translation id="7461924472993315131">Kinnita</translation>
 <translation id="746216226901520237">Järgmisel korral avab seadme <ph name="DEVICE_TYPE" /> teie telefon. Funktsiooni Smart Lock saab välja lülitada menüüs Seaded.</translation>
 <translation id="7463006580194749499">Lisa inimene</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Uus vaheleht</translation>
 <translation id="7556033326131260574">Smart Lock ei suutnud teie kontot kinnitada. Sisestage sisenemiseks parool.</translation>
 <translation id="7556242789364317684">Kahjuks ei saa teenus <ph name="SHORT_PRODUCT_NAME" /> teie seadeid taastada. Vea parandamiseks peab teenus <ph name="SHORT_PRODUCT_NAME" /> seadme lähtestama funktsiooniga Powerwash.</translation>
+<translation id="7559444627302317199">Kontrollige võrguühendust ja proovige uuesti.</translation>
 <translation id="7559719679815339381">Oodake ... kioski rakendust värskendatakse. Ärge eemaldage USB-mälupulka.</translation>
 <translation id="7561196759112975576">Alati</translation>
 <translation id="7563991800558061108">Vea kõrvaldamiseks peate sisselogimisekraanil oma Google'i kontole
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Tee koopia</translation>
 <translation id="7887864092952184874">Bluetoothi hiir on seotud</translation>
 <translation id="7889565820482017512">Kuvamissuurus</translation>
-<translation id="7889966925761734854">Otsing</translation>
 <translation id="7893008570150657497">Pääseda juurde fotodele, muusikale ja muule meediale teie arvutist</translation>
 <translation id="7893153962594818789">Bluetooth on seadmes <ph name="DEVICE_TYPE" /> välja lülitatud. Sisestage parool ja lülitage Bluetooth sisse.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (vaikimisi)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Tööriistaribale jätmine</translation>
 <translation id="7898725031477653577">Tõlgi alati</translation>
 <translation id="790040513076446191">Privaatsusega seotud seadete muutmine</translation>
-<translation id="7902874111237641165">Sujuv liikumine [beeta]</translation>
 <translation id="7903345046358933331">Leht ei reageeri. Võite oodata lehe reageerimist või selle sulgeda.</translation>
 <translation id="7903742244674067440">Teil on neid sertimisorganeid tuvastavad sertifikaadid</translation>
 <translation id="7903925330883316394">Utiliit: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">Kogu kõnesünteesil põhineva teksti lugemine</translation>
 <translation id="8037357227543935929">Küsi (vaikimisi)</translation>
 <translation id="803771048473350947">Fail</translation>
+<translation id="8042142357103597104">Teksti läbipaistvus</translation>
 <translation id="8044899503464538266">Aeglane</translation>
 <translation id="8045253504249021590">Sünkroonimine on Google Dashboardi kaudu peatatud.</translation>
 <translation id="8045923671629973368">Sisestage rakenduse ID või veebipoe URL</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Selle teenuse saate menüüs Seaded välja lülitada.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN-koodid ei ühti</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> kasutab laienduse puhverserveri seadeid</translation>
-<translation id="8099495042588009598">Rohkem lube</translation>
 <translation id="8101987792947961127">Järgmisel taaskäivitusel nõutakse Powerwashi</translation>
 <translation id="8102159139658438129">Avage jaotis <ph name="LINK_BEGIN" />Seaded<ph name="LINK_END" />, et näha ühendatud telefoni valikuid</translation>
 <translation id="8104696615244072556">Rakendage teenuse <ph name="IDS_SHORT_PRODUCT_NAME" /> seadmele funktsioon Powerwash ja naaske eelmisele versioonile.</translation>
@@ -4773,8 +4788,10 @@
     Ma arvan, et see sait ei tohiks olla blokeeritud.</translation>
 <translation id="8184288427634747179">Aktiveeri <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Lisateave</translation>
+<translation id="8184472985242519288">Ühtne</translation>
 <translation id="8185331656081929126">Kuva märguanne, kui võrgus tuvastatakse mõni uus printer</translation>
 <translation id="8186609076106987817">Server ei leidnud faili.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> saab lugeda kõiki faile järgmises kaustas. See sait näeb kaustas tehtud muudatusi vaid siis, kui see vaheleht on avatud.</translation>
 <translation id="8188389033983459049">Kontrollige oma seadme seadeid ja lülitage see jätkamiseks sisse</translation>
 <translation id="8190193592390505034">Ühendamine võrku <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Teie rakenduste, laienduste ja teemade haldamine</translation>
@@ -4878,8 +4895,6 @@
 <translation id="833986336429795709">Valige lingi avamiseks rakendus</translation>
 <translation id="8342861492835240085">Kogu valimine</translation>
 <translation id="834290227245955730">Vale PIN-kood. Katseid jäänud: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Parima kvaliteediga video või animatsiooni kuvamiseks kasutatakse suurt ribalaiust.
-Inimesed, kelle ühendus on aeglane, ei pruugi teie sisu näha.</translation>
 <translation id="8351419472474436977">Laiendus on hõivanud puhverserveri seaded, mis tähendab, et see saab muuta, lõhkuda või kuulata pealt kogu teie veebitegevust. Kui te pole kindel, miks see muudatus toimus, siis te tõenäoliselt ei taha seda.</translation>
 <translation id="8351630282875799764">Akut ei laeta</translation>
 <translation id="835238322900896202">Desinstallimisel ilmnes viga. Desinstallige terminali kaudu.</translation>
@@ -4912,9 +4927,11 @@
 <translation id="839736845446313156">Registreerumine</translation>
 <translation id="8398877366907290961">Jätka ikkagi</translation>
 <translation id="8400146488506985033">Halda inimesi</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> saab teie muudatused otse failidesse salvestada järgmises kaustas. See sait saab muudatusi salvestada vaid siis, kui see vaheleht on avatud.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Esmalt küsi (soovitatav)</translation>
 <translation id="8418445294933751433">&amp;Kuva vahelehena</translation>
+<translation id="8418905021510211421">See leht saab lugeda teie seadme kausta.</translation>
 <translation id="8419098111404128271">Päringu „<ph name="SEARCH_TEXT" />” otsingutulemused</translation>
 <translation id="8419368276599091549">Tere tulemast seadme <ph name="DEVICE_TYPE" /> kasutajaks!</translation>
 <translation id="8425213833346101688">Muuda</translation>
@@ -4934,6 +4951,7 @@
 <translation id="8438566539970814960">Otsingute ja sirvimise paremaks muutmine</translation>
 <translation id="8439506636278576865">Paku selles keeles olevate lehtede tõlkimist</translation>
 <translation id="8440630305826533614">Linuxi rakendused</translation>
+<translation id="844241640324986723">Sisselogimisandmete kustutamine ebaõnnestus.</translation>
 <translation id="8443338615972234259">Looge jälgitavatele kasutajatele nüüd uus konto.</translation>
 <translation id="8446884382197647889">Lisateave</translation>
 <translation id="8447409163267621480">Kaasake Ctrl või Alt</translation>
@@ -4949,8 +4967,6 @@
 <translation id="8461914792118322307">Puhverserver</translation>
 <translation id="8463215747450521436">Haldur on selle jälgitava kasutaja võib-olla kustutanud või keelanud. Kui soovite edaspidi selle kasutajana sisse logida, siis võtke ühendust halduriga.</translation>
 <translation id="846374874681391779">Allalaadimiste riba</translation>
-<translation id="8463807869745732775">"&gt;
-    Turvavõtmele salvestatud sisselogimisandmed</translation>
 <translation id="8463955938112983119">Pistikprogramm <ph name="PLUGIN_NAME" /> on keelatud.</translation>
 <translation id="8464132254133862871">Kasutajakonto ei ole teenuse jaoks sobilik.</translation>
 <translation id="8465252176946159372">Pole kehtiv</translation>
@@ -5016,6 +5032,7 @@
 <translation id="8569002732135253578">Dokumenti <ph name="DOCUMENT_NAME" /> prinditakse</translation>
 <translation id="8569682776816196752">Sihtkohti ei leitud</translation>
 <translation id="8571213806525832805">Viimased 4 nädalat</translation>
+<translation id="8573403125070227391">See reklaam kasutab liiga palju teie seadme ressursse, seetõttu Chrome eemaldas selle.</translation>
 <translation id="8574990355410201600">Luba saidil <ph name="HOST" /> alati heli</translation>
 <translation id="8575286410928791436">Sulgemiseks hoidke all klahve <ph name="KEY_EQUIVALENT" /></translation>
 <translation id="8578639784464423491">Ei tohi olla üle 99 tähe</translation>
@@ -5039,13 +5056,13 @@
 <translation id="8609465669617005112">Liiguta üles</translation>
 <translation id="8610103157987623234">Vale vorming, proovige uuesti</translation>
 <translation id="8615618338313291042">Inkognito rakendus: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Langev vari</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Rändluse olek</translation>
 <translation id="8620765578342452535">Võrguühenduste seadistamine</translation>
 <translation id="8621866727807194849">Teie arvutis on kahjulik tarkvara. Chrome eemaldab selle, taastab teie seaded ja keelab laiendused. See taastab teie brauseri normaalse toimimise.</translation>
 <translation id="8621979332865976405">Terve ekraanikuva jagamine</translation>
 <translation id="862542460444371744">&amp;Laiendused</translation>
-<translation id="8627151598708688654">Allika valimine</translation>
 <translation id="862727964348362408">Peatatud</translation>
 <translation id="862750493060684461">CSS-i vahemälu</translation>
 <translation id="8627795981664801467">Turvalised ühendused ainult</translation>
@@ -5099,6 +5116,7 @@
 <translation id="8688579245973331962">Kas te ei näe oma nime?</translation>
 <translation id="8688591111840995413">Sobimatu parool</translation>
 <translation id="8688672835843460752">Saadaval</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Ava a&amp;sukoht ...</translation>
 <translation id="869884720829132584">Rakenduste menüü</translation>
 <translation id="869891660844655955">Aegumiskuupäev</translation>
@@ -5262,6 +5280,7 @@
 <translation id="891365694296252935">Saada kasutus- ja diagnostikaandmeid. See seade saadab Google'ile praegu automaatselt seadme teavet ning rakenduse kasutus- ja  diagnostikaandmeid. Neid andmeid ei kasutata teie lapse isiku tuvastamiseks ning need aitavad parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Selle seade on jõustanud omanik. Kui täiendavad veebi- ja rakendustegevused on teie lapse jaoks sisse lülitatud, võidakse need andmed salvestada tema Google'i kontole. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Soovituste laadimine</translation>
 <translation id="8916476537757519021">Inkognito alamraam: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – saab lugeda teie seadme kausta</translation>
 <translation id="8919275547519617350">Selleks et hankida kõik oma paroolid kõikidesse seadmetesse, logige sisse ja lülitage sünkroonimine sisse.</translation>
 <translation id="8921366488406707015">Turvavõtme kinnitamine …</translation>
 <translation id="8922013791253848639">Luba sellel saidil alati reklaamid</translation>
@@ -5291,7 +5310,6 @@
 <translation id="8965037249707889821">Sisestage vana parool</translation>
 <translation id="8966870118594285808">Saate kogemata suletud vahelehe uuesti avada</translation>
 <translation id="8967866634928501045">Kuvamiseks vajutage klahvi Alt + tõstuklahvi + klahvi A</translation>
-<translation id="8970203673128054105">Kuva ülekandmise režiimi loend</translation>
 <translation id="89720367119469899">Klahv Escape</translation>
 <translation id="8972513834460200407">Paluge oma võrguadministraatoril tagada, et tulemüür ei blokeeriks allalaaditavaid faile Google'i serveritest.</translation>
 <translation id="8973557916016709913">Suumitaseme eemaldamine</translation>
@@ -5440,6 +5458,7 @@
 <translation id="9214520840402538427">Installimisaja atribuutide lähtestamisel ilmnes ajalõpp. Võtke ühendust tugiteenuse esindajaga.</translation>
 <translation id="9214695392875603905">Keeks</translation>
 <translation id="9215293857209265904">Lisati „<ph name="EXTENSION_NAME" />”</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> saab teie muudatused salvestada otse järgmisesse faili. See sait saab muudatusi salvestada vaid siis, kui see vaheleht on avatud.</translation>
 <translation id="9218430445555521422">Seadista vaikebrauseriks</translation>
 <translation id="9219103736887031265">Pildid</translation>
 <translation id="9220525904950070496">Konto eemaldamine</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index c213ea8..2e4ea71 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">هنگام شروع دستگاه مجازی خطایی روی داد. لطفاً دوباره امتحان کنید.</translation>
 <translation id="1089439967362294234">تغییر گذرواژه</translation>
 <translation id="1090126737595388931">بدون برنامه‌های در حال اجرا در پس‌زمینه</translation>
+<translation id="1090290614672149983">تغییرات در فایل اصلی ذخیره شود؟</translation>
 <translation id="1090918500949388876">‏هرزمان که صفحه‌نمایش روشن است با گفتن «Ok Google» به «دستیار» دسترسی داشته باشید</translation>
 <translation id="1091767800771861448">‏برای رد شدن، ESCAPE را فشار دهید (فقط ساخت‌های غیررسمی).</translation>
 <translation id="1093457606523402488">شبکه‌های قابل مشاهده:</translation>
 <translation id="1094607894174825014">عملیات خواندن یا نوشتن با فاصله نامعتبری در این دستگاه درخواست شد: «<ph name="DEVICE_NAME" />».</translation>
 <translation id="1097658378307015415">قبل از ورود به سیستم، لطفاً جهت فعال کردن شبکه <ph name="NETWORK_ID" />، به‌عنوان مهمان وارد شوید</translation>
+<translation id="110029732810301672">این برگه مجاز است در فایل‌های اصلی ذخیره کند.</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> همیشه ترجمه شود</translation>
 <translation id="1108600514891325577">&amp;توقف</translation>
 <translation id="1110155001042129815">انتظار</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">عینک آفتابی</translation>
 <translation id="1151917987301063366">همیشه اجازه دسترسی به حسگرها به <ph name="HOST" /> داده شود</translation>
 <translation id="1153356358378277386">دستگاه‌های مرتبط‌شده</translation>
-<translation id="1156488781945104845">زمان کنونی</translation>
 <translation id="1161575384898972166">لطفاً برای صدور مجوز سرویس گیرنده، به <ph name="TOKEN_NAME" /> وارد شوید.</translation>
 <translation id="1163931534039071049">&amp;نمای منبع قاب</translation>
 <translation id="1164674268730883318">‏Smart Lock برای <ph name="DEVICE_TYPE" /> خاموش شود؟</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">‏تنظیمات فضای ذخیره‌سازی Adobe Flash Player</translation>
 <translation id="1274997165432133392">کوکی‌ها و دیگر داده‌های سایت</translation>
 <translation id="127668050356036882">بستن همه پنجره‌ها</translation>
-<translation id="1277908057200820621">مشاهده فهرست دستگاه</translation>
 <translation id="1280820357415527819">درحال جستجوی شبکه‌های دستگاه همراه</translation>
 <translation id="1285320974508926690">این سایت هرگز ترجمه نشود</translation>
 <translation id="1285484354230578868">‏ذخیره کردن داده‌‌ها در حساب Google Drive شما</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">شبکه اصلی، بدون فراگردی</translation>
 <translation id="1316136264406804862">در حال جستجو...</translation>
 <translation id="1316495628809031177">همگام‌سازی موقتاً متوقف شده است</translation>
+<translation id="1317637799698924700">‏ایستگاه پایه اتصال در حالت سازگار با «USB نوع C» کار می‌کند.</translation>
 <translation id="1322046419516468189">در <ph name="SAVED_PASSWORDS_STORE" /> گذرواژه‌های ذخیره‌شده‌تان را مشاهده و مدیریت کنید</translation>
 <translation id="1326317727527857210">‏برای دسترسی به برگه‌هایتان در دستگاه‌های دیگر، به سیستم Chrome وارد شوید.</translation>
 <translation id="1327074568633507428">‏چاپگر در Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />مرورگرتان<ph name="END_LINK" /> توسط <ph name="ENROLLMENT_DOMAIN" /> مدیریت می‌شود</translation>
 <translation id="1366177842110999534">‏اجرای ابزارها، ویرایشگرها و محیط‌های یکپارچه توسعه نرم‌افزار (IDE) ‏Linux در <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;بیشتر بدانید&lt;/a&gt;</translation>
 <translation id="1367951781824006909">انتخاب یک فایل</translation>
+<translation id="1370749010280229230">نمایشگر متصل به پایه مشکلی دارد</translation>
 <translation id="1371301976177520732">در همه دستگاه‌هایتان می‌توانید به نشانک‌ها، سابقه و موارد دیگر دسترسی داشته باشید</translation>
 <translation id="1372841398847029212">همگام‌سازی با حسابتان</translation>
 <translation id="1374844444528092021">گواهی‌نامه مورد نیاز شبکه "<ph name="NETWORK_NAME" />" یا نصب نشده است و یا دیگر اعتبار ندارد. لطفاً گواهی‌نامه جدیدی بگیرید و دوباره سعی کنید وصل شوید.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">صفحه وب، فایل واحد</translation>
 <translation id="1451917004835509682">افزون فرد تحت نظارت</translation>
 <translation id="1454223536435069390">گرفتن عکس صفحه‌نمایش</translation>
+<translation id="1458243790901188746">{0,plural, =1{پوشه: <ph name="DIRECTORIES" />}one{پوشه‌ها: <ph name="DIRECTORIES" />}other{پوشه‌ها: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">موتورهای جستجو به وسیله برنامه‌های افزودنی اضافه شدند</translation>
 <translation id="146000042969587795">این قاب مسدود شد چون شامل چند محتوای ناامن است.</translation>
 <translation id="146219525117638703">‏وضعیت ONC</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">نمایش گزینه‌های ورودی</translation>
 <translation id="1651008383952180276">باید همان عبارت عبور را دو بار وارد کنید</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{‏چاپگر را به Google Cloud Print اضافه کنید تا بتوانید از هر کجا چاپ کنید.}one{‏# چاپگر را به Google Cloud Print اضافه کنید تا بتوانید از هر کجا چاپ کنید.}other{‏# چاپگر را به Google Cloud Print اضافه کنید تا بتوانید از هر کجا چاپ کنید.}}</translation>
+<translation id="1656528038316521561">ماتی پس‌زمینه</translation>
 <translation id="1657406563541664238">‏با ارسال خودکار آمار استفاده و گزارش‌های خرابی به Google، به بهتر شدن <ph name="PRODUCT_NAME" /> کمک کنید.</translation>
 <translation id="1658424621194652532">این صفحه به میکروفون شما دسترسی دارد.</translation>
 <translation id="1660204651932907780">به سایت‌ها اجازه داده شود صدا پخش کنند (توصیه می‌شود)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> می‌خواهد به ساخت و مدل «کلید امنیتی» شما دسترسی پیدا کند</translation>
 <translation id="1679068421605151609">ابزار برنامه‌نویس</translation>
 <translation id="1679806121152819234">‏افزایه VM</translation>
+<translation id="1679810534535368772">مطمئنید می‌خواهید خارج شوید؟</translation>
 <translation id="167983332380191032">‏سرویس مدیریت خطای HTTP (اچ‌تی‌تی‌پی) ارسال کرد.</translation>
 <translation id="1680849702532889074">‏هنگام نصب برنامه Linux خطایی روی داد.</translation>
 <translation id="16815041330799488">به سایت‌ها اجازه داده نشود به نوشتار و تصاویر کپی‌شده در بریده‌دان دسترسی پیدا کنند</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">شناسه رسانه محافظت‌شده</translation>
 <translation id="175196451752279553">با&amp;ز کردن مجدد برگه بسته</translation>
 <translation id="1753905327828125965">بیشترین موارد بازدید شده</translation>
+<translation id="1755601632425835748">اندازه نوشتار</translation>
 <translation id="1756681705074952506">روش ورودی</translation>
 <translation id="1757301747492736405">حذف نصب درانتظار انجام است</translation>
 <translation id="175772926354468439">فعال کردن طرح زمینه</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">&amp;کوچک تر</translation>
 <translation id="1919345977826869612">آگهی‌ها</translation>
 <translation id="1919814239594435008">افزایه خارج از جعبه ایمنی مجاز شد</translation>
+<translation id="1920390473494685033">مخاطبین</translation>
 <translation id="1921050530041573580">مرتبط‌سازی تلفن با پیام‌ها</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> نقطه در اینچ</translation>
 <translation id="1924559387127953748">‏هوشمندی‌های Google را در <ph name="IDS_SHORT_PRODUCT_NAME" /> دریافت کنید</translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">برگه ناشناس: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">افزایه <ph name="PEPPER_PLUGIN_NAME" /> در <ph name="PEPPER_PLUGIN_DOMAIN" /> می‌خواهد به رایانه شما دسترسی پیدا کند</translation>
 <translation id="2178614541317717477">‏بی اعتبارشدن CA</translation>
+<translation id="2179849162388791084">جمع‌آوری داده‌های ورود به سیستم از کلید امنیتی ناموفق بود.</translation>
 <translation id="218070003709087997">استفاده از شماره برای نشان دادن تعداد کپی‌های چاپ (۱ تا ۹۹۹).</translation>
 <translation id="2184515124301515068">‏Chrome انتخاب کند سایت‌ها چه موقع صدا پخش کنند (توصیه می‌شود)</translation>
 <translation id="2187895286714876935">خطای وارد کردن مجوز سرور</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">همه کوکی‌ها و داده‌های سایت</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{۱ مورد کپی شد}one{# مورد کپی شد}other{# مورد کپی شد}}</translation>
 <translation id="2278562042389100163">باز کردن پنجرهٔ مرورگر</translation>
-<translation id="2279874276457403668">هر بار فقط می‌توان یک جلسه ایجاد کرد.</translation>
 <translation id="2280486287150724112">حاشیه راست</translation>
 <translation id="2282146716419988068">‏پردازش GPU</translation>
 <translation id="2282155092769082568">نشانی وب پیکربندی خودکار</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">یادداشت‌های صفحه درحالت قفل به‌طور خودکار در <ph name="LOCK_SCREEN_APP_NAME" /> ذخیره می‌شوند. جدیدترین یادداشت روی صفحه قفل باقی می‌ماند.</translation>
 <translation id="2353297238722298836">دوربین و میکروفون مجاز هستند</translation>
 <translation id="2356070529366658676">سؤال شود</translation>
-<translation id="2357949918965361754">‏می‌توانید از این قابلیت برای نمایش محتوا از Chrome روی تلویزیون یا دستگاه‌های دیگرتان استفاده کنید.</translation>
 <translation id="2359345697448000899">با کلیک کردن روی افزونه‌ها در منوی ابزار، برنامه‌های افزودنی خود را مدیریت کنید.</translation>
 <translation id="2359808026110333948">ادامه</translation>
 <translation id="236117173274098341">بهینه‌سازی</translation>
@@ -962,6 +968,7 @@
 <translation id="2436720498717686157">سازمانتان می‌خواهد در این لحظه این دستگاه را به‌روزرسانی کنید</translation>
 <translation id="2439545803278355377">پین جدید را وارد کنید. پین باید حداقل چهار نویسه داشته باشد و می‌تواند حاوی حروف، اعداد، و سایر نویسه‌ها باشد.</translation>
 <translation id="2440604414813129000">مشاهده م&amp;نبع</translation>
+<translation id="2442916515643169563">سایه نوشتار</translation>
 <translation id="2444119669991608829">صفحه به زبان <ph name="LANGUAGE" /> وجود ندارد؟</translation>
 <translation id="2445081178310039857">دایرکتوری ریشه برنامهٔ افزودنی لازم است.</translation>
 <translation id="2445484935443597917">ایجاد نمایه جدید</translation>
@@ -1176,6 +1183,7 @@
 <translation id="2738771556149464852">نه بعد از</translation>
 <translation id="2739191690716947896">رفع اشکال</translation>
 <translation id="2739240477418971307">تغییر تنظیمات دسترس‌پذیریتان</translation>
+<translation id="274029851662193272">فرورفته</translation>
 <translation id="2740393541869613458">وب‌سایت‌های بازدیدشده توسط کاربر نظارت‌شده را بررسی کنید و</translation>
 <translation id="2741912629735277980">نمایش رابط کاربری در صفحه ورود به سیستم</translation>
 <translation id="274290345632688601">‏بازیابی برنامه‌ها و فایل‌های Linux</translation>
@@ -1224,6 +1232,7 @@
 <translation id="2806891468525657116">میان‌بر از قبل وجود دارد</translation>
 <translation id="2807517655263062534">فایل‌هایی که بارگیری می‌کنید اینجا نشان داده می‌شود</translation>
 <translation id="2809586584051668049">و <ph name="NUMBER_ADDITIONAL_DISABLED" /> مورد دیگر</translation>
+<translation id="2812049959647166806">‏از Thunderbolt پشتیبانی نمی‌شود</translation>
 <translation id="2812944337881233323">تلاش کنید از سیستم خارج و دوباره وارد شوید</translation>
 <translation id="2812989263793994277">تصویری نشان داده نشود</translation>
 <translation id="281390819046738856">درخواست امضا نشد.</translation>
@@ -1246,7 +1255,6 @@
 <translation id="2841837950101800123">ارائه‌دهنده</translation>
 <translation id="2844169650293029770">‏دستگاه USB-C (درگاه جلوی سمت چپ)</translation>
 <translation id="2845382757467349449">همیشه نوار نشانک‌ها نمایش داده شود</translation>
-<translation id="2847759467426165163">فرستادن به</translation>
 <translation id="284805635805850872">نرم‌افزار مضر پاک شود؟</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">پاک‌سازی انجام نشد</translation>
@@ -1293,6 +1301,7 @@
     پیام سرور: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">افزودن گالری رسانه از طریق دایرکتوری</translation>
 <translation id="2910318910161511225">به شبکه متصل شوید و دوباره امتحان کنید</translation>
+<translation id="2910518940971897750">در فایل اصلی ذخیره شود</translation>
 <translation id="2913331724188855103">سایت‌ها مجاز به ذخیره و خواندن داده‌های کوکی باشند (توصیه می‌شود)</translation>
 <translation id="2915102088417824677">مشاهده گزارش فعالیت</translation>
 <translation id="2915873080513663243">اسکن-خودکار</translation>
@@ -1357,12 +1366,14 @@
 <translation id="3013291976881901233">‏دستگاه‌های MIDI</translation>
 <translation id="3015639418649705390">اکنون راه‌اندازی مجدد شود</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> به‌طور خودکار پیکربندی نشد. لطفاً جزئیات پیشرفته چاپگر را مشخص کنید.</translation>
+<translation id="3016381065346027039">ورودی گزارشی وجود ندارد</translation>
 <translation id="3016641847947582299">مؤلفه به‌روز شد</translation>
 <translation id="3016780570757425217">مکان‌تان را بدانید</translation>
 <translation id="3017079585324758401">پس‌زمینه</translation>
 <translation id="3020183492814296499">میان‌برها</translation>
 <translation id="3020990233660977256">شمارهٔ سریال: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">پروانه</translation>
+<translation id="3021408157810018664">تغییرات در فایل‌های اصلی ذخیره شود؟</translation>
 <translation id="3021426244864538700">درحال دسترسی به داده‌های این سایت</translation>
 <translation id="3021678814754966447">&amp;نمای منبع قاب</translation>
 <translation id="3022978424994383087">متوجه نشدم.</translation>
@@ -1455,6 +1466,7 @@
 <translation id="3170072451822350649">همچنین می‌توانید از ورود به سیستم صرف‌نظر کرده، <ph name="LINK_START" />به عنوان مهمان مرور کنید<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">سایتی درحال دسترسی به ورودی ویدیویی است</translation>
 <translation id="3177909033752230686">زبان صفحه:</translation>
+<translation id="3179982752812949580">قلم نوشتار</translation>
 <translation id="3181954750937456830">مرور ایمن (از شما و دستگاهتان درمقابل سایت‌های خطرناک محافظت می‌کند)</translation>
 <translation id="3182749001423093222">غلط‌گیر املا</translation>
 <translation id="3183139917765991655">واردکننده نمایه</translation>
@@ -1507,7 +1519,6 @@
 <translation id="3275778913554317645">باز کردن به‌عنوان پنجره</translation>
 <translation id="3278001907972365362">‏حساب(های) Google شما به توجه نیاز دارد</translation>
 <translation id="3279230909244266691">این فرایند ممکن است چند دقیقه طول بکشد. درحال شروع دستگاه مجازی.</translation>
-<translation id="3279741024917655738">نمایش ویدیوهای تمام‌صفحه در</translation>
 <translation id="3280237271814976245">ذخیره &amp;بعنوان</translation>
 <translation id="3280243678470289153">‏ماندن در Chrome</translation>
 <translation id="3281892622610078515">فایل‌ها و برنامه‌هایی که قرنطینه می‌شود:</translation>
@@ -1529,7 +1540,7 @@
 <translation id="3303855915957856445">هیچ نتیجه‌ای برای جستجو یافت نشد</translation>
 <translation id="3305389145870741612">مراحل قالب‌بندی چند ثانیه طول می‌کشد. لطفاً منتظر بمانید.</translation>
 <translation id="3305661444342691068">‏باز کردن PDF در پیش‌نمایش</translation>
-<translation id="3306684685104080068">‏ارسال محتوا را به خدمات مبتنی بر رایانش ابری مانند Google Hangouts فعال کنید.</translation>
+<translation id="3307871847038842490">این صفحه مجاز است فایل‌های اصلی را ذخیره کند.</translation>
 <translation id="3308006649705061278">‏واحد سازمانی (OU)</translation>
 <translation id="3308116878371095290">این صفحه نمی‌تواند کوکی‌ها را تنظیم کند.</translation>
 <translation id="3308134619352333507">دکمه پنهان کردن</translation>
@@ -1635,7 +1646,6 @@
 <translation id="3462413494201477527">راه‌اندازی حساب لغو شود؟</translation>
 <translation id="3464012987031883895">سایتی درحال دسترسی به ورودی صوتی است</translation>
 <translation id="346431825526753">این یک حساب مخصوص بچه‌ها است که توسط <ph name="CUSTODIAN_EMAIL" /> مدیریت می‌شود.</translation>
-<translation id="3468275649641751422">پخش جریانی فایل ویدیویی یا صوتی</translation>
 <translation id="3468999815377931311">‏تلفن Android</translation>
 <translation id="3470442499439619530">حذف این کاربر</translation>
 <translation id="3473479545200714844">ذره‌بین صفحه</translation>
@@ -1658,6 +1668,7 @@
 <translation id="3496213124478423963">‏Zoom Out (دورنمایی)</translation>
 <translation id="3497560059572256875">‏هم‌رسانی Doodle</translation>
 <translation id="3505030558724226696">لغو دسترسی دستگاه</translation>
+<translation id="3505635633742443645">‏هنگامی که برای خروجی ویدیو از درگاه «USB نوع C» استفاده می‌شود، نمی‌توان از درگاه HDMI پایه اتصال استفاده کرد. لطفاً برای یکی از نمایشگرها از درگاه متفاوتی استفاده کنید.</translation>
 <translation id="3507421388498836150">اجازه‌های فعلی برای «<ph name="EXTENSION_NAME" />»</translation>
 <translation id="3507888235492474624">اسکن مجدد دستگاه‌های بلوتوث</translation>
 <translation id="3508920295779105875">انتخاب یک پوشه دیگر...</translation>
@@ -1710,6 +1721,7 @@
 <translation id="3576324189521867626">نصب موفقیت‌آمیز بود</translation>
 <translation id="3578594933904494462">محتوای این برگه اشتراک‌گذاری می‌شود.</translation>
 <translation id="357886715122934472">‏&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; می‌خواهد چاپگر &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; را با گروهی که شما مالک آن هستید، به اشتراک بگذارد: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. اگر بپذیرید، تمام اعضای گروه می‌توانند با چاپگر چاپ کنند.</translation>
+<translation id="357889014807611375">‏Wi-Fi کنتوردار</translation>
 <translation id="3584169441612580296">خواندن و تغییر عکس‌ها، موسیقی، و رسانه‌های دیگر از رایانه‌تان</translation>
 <translation id="3587482841069643663">همه</translation>
 <translation id="358796204584394954">برای مرتبط کردن، این کد را در «<ph name="DEVICE_NAME" />» تایپ کنید:</translation>
@@ -1720,6 +1732,7 @@
 <translation id="359283478042092570">ورود</translation>
 <translation id="3593965109698325041">محدودیتهای نام گواهی</translation>
 <translation id="3596235046596950091">فعال کردن سرویس‌های ابری</translation>
+<translation id="3599221874935822507">برجسته</translation>
 <translation id="3599863153486145794">‏سابقه را از همه دستگاه‌های به سیستم واردشده پاک می‌کند. ممکن است حساب Google شما اشکال دیگری از سابقه مرور در <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> داشته باشد.</translation>
 <translation id="3600051066689725006">اطلاعات درخواست وب</translation>
 <translation id="3600792891314830896">سایت‌هایی که صدا پخش می‌کنند بی‌صدا شوند</translation>
@@ -1734,6 +1747,7 @@
 <translation id="3612673635130633812">‏بارگیری‌شده توسط &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">نشان دادن <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">باز &amp;کردن در برگهٔ جدید</translation>
+<translation id="3615073365085224194">حسگر اثر انگشت را با انگشتانتان لمس کنید</translation>
 <translation id="3616113530831147358">صوتی</translation>
 <translation id="3616741288025931835">&amp;پاک کردن داده‌های مرور...</translation>
 <translation id="3617891479562106823">پس‌زمینه‌ها دردسترس نیست. بعداً دوباره امتحان کنید.</translation>
@@ -1815,7 +1829,6 @@
 <translation id="3719826155360621982">صفحه اصلی</translation>
 <translation id="3720996970802414353">درهرصورت جابه‌جایی</translation>
 <translation id="3722108462506185496">هنگام شروع سرویس دستگاه مجازی خطایی روی داد. لطفاً دوباره امتحان کنید.</translation>
-<translation id="3723158278575423087">‏به تجربه ارسال محتوا در Chromium خوش آمدید!</translation>
 <translation id="3725367690636977613">صفحات</translation>
 <translation id="3726137731714254362">برداشتن پوشه‌ها از اینجا موجب توقف هم‌رسانی می‌شود اما فایل‌ها را حذف نمی‌کند.</translation>
 <translation id="3727148787322499904">تغییر این تنظیم همه شبکه‌های به اشتراک‌گذاشته‌شده را تحت تأثیر قرار می‌دهد</translation>
@@ -1850,7 +1863,6 @@
 <translation id="3764314093345384080">اطلاعات دقیق ساخت</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{‏ارتباط با یک دستگاه USB}one{‏ارتباط با # دستگاه USB}other{‏ارتباط با # دستگاه USB}}</translation>
 <translation id="3765246971671567135">خط‌مشی آفلاین حالت نمایشی خوانده نشد.</translation>
-<translation id="3766223500670287046">پخش ازراه‌دور صفحه‌نمایش</translation>
 <translation id="3768037234834996183">در حال همگام‌سازی تنظیمات ترجیحی...</translation>
 <translation id="377050016711188788">بستنی</translation>
 <translation id="3771294271822695279">فایل‌های ویدئویی</translation>
@@ -1923,7 +1935,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">بردارید و سپس دوباره لمس کنید</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: همگام‌سازی موقتاً متوقف شد</translation>
-<translation id="3862134173397075045">‏به تجربه ارسال محتوا در Chrome خوش آمدید!</translation>
 <translation id="3862693525629180217">به‌تأیید رساندن ازطریق حسگر داخلی</translation>
 <translation id="3862788408946266506">‏برنامه‌ای با ویژگی مانیفست «kiosk_only» باید در حالت کیوسک سیستم عامل Chrome نصب شود</translation>
 <translation id="3865414814144988605">وضوح</translation>
@@ -1972,6 +1983,7 @@
 <translation id="3926002189479431949">‏تلفن مربوط به Smart Lock تغییر کرد</translation>
 <translation id="3927932062596804919">ردکردن</translation>
 <translation id="3930737994424905957">درحال جستجوی دستگاه‌ها</translation>
+<translation id="3930968231047618417">رنگ پس‌زمینه</translation>
 <translation id="3933283459331715412">گذرواژه حذف‌شده مربوط به <ph name="USERNAME" /> بازنشانی شود</translation>
 <translation id="3936390757709632190">&amp;باز کردن فایل صوتی در برگهٔ جدید</translation>
 <translation id="3936925983113350642">برای بازیابی این گواهی در فرصتی دیگر، گذرواژه انتخابی‌تان لازم است. لطفاً آن را در مکانی امن حفظ کنید.</translation>
@@ -1991,6 +2003,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">‏وارد شده از IE</translation>
 <translation id="3950820424414687140">ورود به سیستم</translation>
+<translation id="3950828138786918475">این برگه مجاز است یکی از پوشه‌های موجود در دستگاهتان را بخواند.</translation>
 <translation id="3954354850384043518">درحال انجام</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> × <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> هرتز)</translation>
 <translation id="3954953195017194676">‏هیچ گزارش وقایع WebRTC که اخیراً ثبت شده باشد ندارید.</translation>
@@ -2009,6 +2022,7 @@
 <translation id="397105322502079400">در حال محاسبه…</translation>
 <translation id="3975565978598857337">برقراری ارتباط با سرور برای گستره ناموفق بود</translation>
 <translation id="397703832102027365">نهایی‌سازی…</translation>
+<translation id="3977886311744775419">به‌روزرسانی‌های خودکار در این نوع شبکه بارگیری نمی‌شود، اما می‌توانید به‌صورت دستی دردسترس بودن آن‌ها را بررسی کنید.</translation>
 <translation id="3979395879372752341">افزودنه‌های جدید اضافه شد (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">فعال کردن <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">نوع ذخیره نامعتبری وارد شده است.</translation>
@@ -2148,6 +2162,7 @@
 <translation id="4194570336751258953">فعال کردن ضربه بجای کلیک</translation>
 <translation id="4195643157523330669">باز کردن در برگهٔ جدید</translation>
 <translation id="4195814663415092787">ادامه از جایی که ترک کردید</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> می‌تواند تغییراتتان را مستقیماً در فایل‌های زیر ذخیره کند. این سایت تنها زمانی می‌تواند تغییرات را ذخیره کند که این برگه باز باشد.</translation>
 <translation id="4198146608511578238">‏برای صحبت کردن با «دستیار Google»، کافیست نماد «راه‌انداز» را نگه‌دارید.</translation>
 <translation id="4200689466366162458">واژه‌های سفارشی</translation>
 <translation id="4200983522494130825">&amp;برگه جدید</translation>
@@ -2195,7 +2210,6 @@
 <translation id="4267953847983678297">اتصال خودکار به شبکه داده تلفن همراه</translation>
 <translation id="4268025649754414643">به رمز درآوردن کلید</translation>
 <translation id="4270393598798225102">نسخه <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">مورد منطبقی وجود ندارد</translation>
 <translation id="4275663329226226506">رسانه</translation>
 <translation id="4275830172053184480">راه‌اندازی دستگاه خود</translation>
 <translation id="4278101229438943600">«دستیار» آماده است</translation>
@@ -2344,6 +2358,7 @@
 <translation id="4533985347672295764">‏زمان پردازش CPU</translation>
 <translation id="4534661889221639075">دوباره امتحان کنید.</translation>
 <translation id="4535127706710932914">نمایه پیش‌فرض</translation>
+<translation id="4535767533210902251">حسگر اثر انگشت، بالاترین کلید سمت چپ در صفحه‌کلید است. با یکی از انگشت‌هایتان آن را به‌آرامی لمس کنید.</translation>
 <translation id="4538684596480161368">همیشه افزایه‌های آزمایشی نشده در <ph name="HOST" /> مسدود شوند</translation>
 <translation id="4538792345715658285">نصب شده توسط خط‌مشی سازمانی.</translation>
 <translation id="4542520061254486227">خواندن داده‌های شما در <ph name="WEBSITE_1" /> و <ph name="WEBSITE_2" /></translation>
@@ -2377,6 +2392,7 @@
 <translation id="457386861538956877">بیشتر...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">مرتبط‌سازی دستگاه بلوتوث</translation>
+<translation id="4578012756826807359">داده‌های ورود به سیستم با موفقیت حذف شد.</translation>
 <translation id="4579581181964204535">ارسال محتوای <ph name="HOST_NAME" /> امکان‌پذیر نیست.</translation>
 <translation id="4581774856936278355">‏خطا هنگام بازیابی Linux</translation>
 <translation id="4582563038311694664">بازنشانی همه تنظیمات</translation>
@@ -2494,7 +2510,6 @@
 <translation id="4763830802490665879">کوکی‌های سایت‌های مختلف در هنگام خروج پاک خواهند شد.</translation>
 <translation id="4765582662863429759">‏به «پیام‌های Android» اجازه دهید پیام‌های متنی را از تلفن در Chromebook بازپخش کند</translation>
 <translation id="4768332406694066911">گواهی‌هایی از این سازمان‌ها دارید که هویت شما را شناسایی می‌کنند</translation>
-<translation id="4772404146526168240">هر دو صفحه‌نمایش</translation>
 <translation id="4776146737004271126">‏باز کردن تنظیمات Android</translation>
 <translation id="4776917500594043016">گذرواژه <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">‏فروشگاه Play</translation>
@@ -2602,7 +2617,6 @@
 <translation id="4927846293686536410">‏برای دریافت نشانک‌ها، سابقه، گذرواژه‌ها و تنظیمات دیگر در همه دستگاه‌هایتان، به سیستم وارد شوید. به‌صورت خودکار به سیستم سرویس‌های Google خود نیز وارد می‌شوید.</translation>
 <translation id="4929386379796360314">مقصدهای چاپ</translation>
 <translation id="4930714375720679147">روشن کردن</translation>
-<translation id="4931132176527519925">همیشه استفاده از نمایش صفحه‌نمایش روی دستگاه دیگر</translation>
 <translation id="4932733599132424254">تاریخ</translation>
 <translation id="4933484234309072027">جاسازی‌شده در <ph name="URL" /></translation>
 <translation id="493571969993549666">افزودن کاربر تحت نظارت</translation>
@@ -2642,6 +2656,7 @@
 <translation id="4992066212339426712">باصدا کردن</translation>
 <translation id="4992458225095111526">‏تأیید Powerwash</translation>
 <translation id="4992473555164495036">سرپرست سیستم روش‌های ورودی دردسترس را محدود کرده است.</translation>
+<translation id="4992866843815555470">پایه اتصال نیاز به سرویس دارد. اگر پنکه کار نکند، پایه اتصال خاموش می‌شود.</translation>
 <translation id="4992926179187649719">‏روشن کردن «Ok Google»</translation>
 <translation id="4994474651455208930">سایت‌ها اجازه دارند درخواست کنند کنترل کننده پیش‌فرض برای پروتکل ها شوند</translation>
 <translation id="4994754230098574403">درحال راه‌اندازی</translation>
@@ -2780,7 +2795,6 @@
 <translation id="5233231016133573565">شناسه فرایند</translation>
 <translation id="5233638681132016545">برگه جدید</translation>
 <translation id="5233736638227740678">&amp;جای‌گذاری</translation>
-<translation id="5234764350956374838">لغو کردن</translation>
 <translation id="5235050375939235066">برنامه حذف نصب شود؟</translation>
 <translation id="5235750401727657667">جایگزین کردن صفحه‌ای که هنگام باز کردن برگه جدید می‌بینید</translation>
 <translation id="5238278114306905396">برنامه «<ph name="EXTENSION_NAME" />» به‌طور خودکار حذف شد.</translation>
@@ -2845,6 +2859,7 @@
 <translation id="5319359161174645648">‏Google،‏ Chrome را توصیه می‌کند</translation>
 <translation id="532247166573571973">ممکن است سرور در دسترس نباشد. بعداً دوباره امتحان کنید.</translation>
 <translation id="5324780743567488672">تنظیم خودکار منطقه زمانی با استفاده از موقعیت مکانی شما</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - مجاز است فایل‌های اصلی را ذخیره کند</translation>
 <translation id="5327248766486351172">نام</translation>
 <translation id="5327570636534774768">این دستگاه علامت خورده است که در دامنه دیگری مدیریت می‌شود. پیش از راه‌اندازی حالت نمایشی، مجوز دسترسی‌اش را از آن دامنه لغو کنید.</translation>
 <translation id="532943162177641444">برای تنظیم نقطه اتصال تلفن همراهی که می‌توان از آن برای این دستگاه استفاده کرد، روی اعلان در <ph name="PHONE_NAME" /> خود ضربه بزنید.</translation>
@@ -2987,7 +3002,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> می‌خواهد</translation>
 <translation id="5534304873398226603">صرف‌نظر کردن از عکس یا ویدیو</translation>
 <translation id="5535941515421698170">همچنین داده‌های موجودتان را در این دستگاه پاک کنید</translation>
-<translation id="5537725057119320332">فرستادن</translation>
 <translation id="5539221284352502426">سرور گذرواژه‌ای را که وارد کرده‌اید نپذیرفته است. دلایل احتمالی عبارت‌ است از: گذرواژه خیلی کوتاه است. گذرواژه باید حاوی اعداد یا نمادها باشد. گذرواژه باید با گذرواژه‌های قبلی متفاوت باشد.</translation>
 <translation id="5541687815721799001">استفاده از برنامه</translation>
 <translation id="5542132724887566711">نمایه</translation>
@@ -3296,7 +3310,6 @@
 <translation id="5997337190805127100">درباره دسترسی به سایت بیشتر بدانید</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> نتیجه برای «<ph name="SEARCH_TEXT" />»</translation>
 <translation id="6002458620803359783">صداهای برگزیده</translation>
-<translation id="6005695835120147974">رهیاب رسانه</translation>
 <translation id="6006484371116297560">کلاسيک</translation>
 <translation id="6007240208646052708">جستجوی گفتاری به زبان شما در دسترس نیست.</translation>
 <translation id="6009781704028455063">حسگر داخلی</translation>
@@ -3496,7 +3509,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{چاپگر جدید در شبکه شما}one{چاپگر جدید در شبکه شما}other{چاپگر جدید در شبکه شما}}</translation>
 <translation id="6286708577777130801">جزئیات گذرواژه ذخیره‌شده</translation>
 <translation id="6289452883081499048">‏سرویس‌های شخصی‌شده Google مانند Play</translation>
-<translation id="6290556621549272952">‏می‌توانید از این قابلیت برای نمایش محتوا از Chromium روی تلویزیون یا دستگاه‌های دیگر استفاده کنید.</translation>
 <translation id="6291949900244949761">‏وقتی سایتی می‌خواهد به دستگاه‌های USB‌ دسترسی پیدا کند سؤال شود (توصیه می‌شود)</translation>
 <translation id="6291953229176937411">‏&amp;نمایش در Finder</translation>
 <translation id="6295158916970320988">همه سایت‌ها</translation>
@@ -3560,6 +3572,7 @@
 <translation id="6395423953133416962">ارسال <ph name="BEGIN_LINK1" />اطلاعات سیستم<ph name="END_LINK1" /> و <ph name="BEGIN_LINK2" />معیارها<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">سایت‌ها نمی‌توانند از حسگرهای حرکتی استفاده کنند</translation>
 <translation id="6397094776139756010">گزینه‌های همگام‌سازی و شخصی‌سازی</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> می‌تواند تغییراتتان را مستقیماً در فایل‌های پوشه زیر ذخیره کند. این سایت تنها زمانی می‌تواند تغییرات را ذخیره کند که این برگه باز باشد.</translation>
 <translation id="6398715114293939307">‏برداشتن «فروشگاه Google Play»</translation>
 <translation id="6398765197997659313">خروج از حالت تمام صفحه</translation>
 <translation id="6399774419735315745">جاسوس</translation>
@@ -3604,11 +3617,13 @@
 <translation id="6455264371803474013">در سایت‌هایی خاص</translation>
 <translation id="6455894534188563617">پوشه &amp;جدید</translation>
 <translation id="6456394469623773452">عالی</translation>
+<translation id="6456955391422100996">آگهی حذف شد.</translation>
 <translation id="645705751491738698">ادامه مسدودکردن جاوا اسکریپت</translation>
 <translation id="6458701200018867744">بارگذاری انجام نشد (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">استفاده از انتخاب برای یافتن</translation>
 <translation id="6459799433792303855">پنجره فعال به نمایشگر دیگری منتقل شد.</translation>
 <translation id="6460601847208524483">یافتن بعدی</translation>
+<translation id="6461170143930046705">درحال جستجوی شبکه...</translation>
 <translation id="6463795194797719782">&amp;ویرایش</translation>
 <translation id="6466988389784393586">&amp;باز کردن همه نشانک‌ها</translation>
 <translation id="6467304607960172345">بهینه‌سازی ویدیوهای تمام‌صفحه</translation>
@@ -3647,6 +3662,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         ‏<ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">به یک شبکه <ph name="NETWORK_TYPE" /> متصل شده‌اید.</translation>
 <translation id="6527303717912515753">اشتراک‌گذاری</translation>
 <translation id="6528513914570774834">به سایر کاربران این دستگاه اجازه داده شود از این شبکه استفاده کنند</translation>
 <translation id="652948702951888897">‏سابقه Chrome</translation>
@@ -3743,7 +3759,6 @@
 <translation id="6680650203439190394">رتبه‌بندی</translation>
 <translation id="6681668084120808868">عکسبرداری</translation>
 <translation id="6681964764822470072">«<ph name="APP_NAME" />» حذف نصب می‌شود.</translation>
-<translation id="6685083257944113180">توقف، <ph name="SINK_NAME" />، <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">‏باز کردن Google Play</translation>
 <translation id="6686490380836145850">بستن برگه‌ها به چپ</translation>
 <translation id="6686817083349815241">ذخیره گذرواژه‌تان</translation>
@@ -3851,6 +3866,7 @@
 <translation id="6845038076637626672">باز کردن در حداکثر اندازه</translation>
 <translation id="6845325883481699275">‏کمک به بهبود امنیت Chrome</translation>
 <translation id="6848388270925200958">درحال‌حاضر، کارت‌هایی دارید که فقط در این دستگاه قابل استفاده‌اند</translation>
+<translation id="6850286078059909152">رنگ نوشتار</translation>
 <translation id="6851497530878285708">برنامه فعال شد</translation>
 <translation id="6853388645642883916">به‌روزرسان در حالت خواب</translation>
 <translation id="68541483639528434">بستن برگه‌های دیگر</translation>
@@ -3900,7 +3916,6 @@
 <translation id="6923132443355966645">پیمایش / کلیک</translation>
 <translation id="6923633482430812883">‏هنگام نشاندن دستگاه ذخیره‌سازی متصل به شبکه خطایی روی داد. لطفاً مطمئن شوید سرور فایلی که می‌خواهید به آن متصل شوید از SMB نسخه v2 یا بالاتر پشتیبانی می‌کند.</translation>
 <translation id="6930036377490597025">کلید امنیتی خارجی یا حسگر داخلی</translation>
-<translation id="6930242544192836755">مدت زمان</translation>
 <translation id="693807610556624488">عملیات نوشتن از حداکثر طول مجاز ویژگی برای این دستگاه بیشتر می‌شود: «<ph name="DEVICE_NAME" />».</translation>
 <translation id="6941937518557314510">لطفاً به سیستم <ph name="TOKEN_NAME" /> وارد شوید تا بتوانید <ph name="HOST_NAME" /> را با گواهی خود راستی‌آزمایی کنید.</translation>
 <translation id="6943176775188458830">لغو چاپ</translation>
@@ -3914,6 +3929,7 @@
 <translation id="6951153907720526401">کنترل‌کننده‌های پرداخت</translation>
 <translation id="6951663584153258142">سازمانتان از شما می‌خواهد این دستگاه را به‌روزرسانی کنید</translation>
 <translation id="6953878494808481632">اطلاعات مرتبط</translation>
+<translation id="6953916367503892689">{0,plural, =1{فایل: <ph name="FILES" />}one{فایل‌ها: <ph name="FILES" />}other{فایل‌ها: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">بازرسی پنجره بازشو</translation>
 <translation id="6957044667612803194">این کلید امنیتی از پین‌ها پشتیبانی نمی‌کند</translation>
 <translation id="6957231940976260713">نام سرویس</translation>
@@ -4126,7 +4142,6 @@
 <translation id="7254554697254365959">این صفحه ترجمه نشد.</translation>
 <translation id="7254951428499890870">مطمئنید می‌خواهید «<ph name="APP_NAME" />» را در حالت تشخیص راه‌اندازی کنید؟</translation>
 <translation id="7255002516883565667">درحال‌حاضر، یک کارت دارید که فقط در این دستگاه قابل استفاده است</translation>
-<translation id="7255220508626648026">درحال فرستادن: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">برای تأیید بازنشانی، کلید امنیتی‌تان را لمس کنید. همه اطلاعات ذخیره‌شده در کلید امنیتی (ازجمله پین) پاک می‌شود.</translation>
 <translation id="7255935316994522020">اعمال</translation>
 <translation id="7256069762010468647">سایت درحال استفاده از دوربین شما است</translation>
@@ -4260,6 +4275,7 @@
 <translation id="7456142309650173560">‏برنامه‌نویسان (dev)</translation>
 <translation id="7456847797759667638">باز کردن مکان...</translation>
 <translation id="7458168200501453431">‏از همان غلط‌گیر املایی استفاده می‌کند که در جستجوی Google استفاده می‌شود. نوشتاری که در مرورگر تایپ کرده‌اید برای Google ارسال می‌شود.</translation>
+<translation id="7460045493116006516">طرح زمینه کنونی که نصب کرده‌اید</translation>
 <translation id="7461924472993315131">پین</translation>
 <translation id="746216226901520237">‏دفعه بعد، تلفنتان قفل <ph name="DEVICE_TYPE" /> را باز خواهد کرد. می‌توانید Smart Lock را در «تنظیمات» خاموش کنید.</translation>
 <translation id="7463006580194749499">افزودن شخص</translation>
@@ -4319,6 +4335,7 @@
 <translation id="7554791636758816595">برگهٔ جدید</translation>
 <translation id="7556033326131260574">‏Smart Lock حساب شما را تأیید نکرد. برای ورود، گذرواژه‌تان را تایپ کنید.</translation>
 <translation id="7556242789364317684">‏متأسفانه <ph name="SHORT_PRODUCT_NAME" /> قادر به بازیابی تنظیماتتان نیست. برای رفع این خطا، <ph name="SHORT_PRODUCT_NAME" /> باید دستگاهتان را با Powerwash بازنشانی کند.</translation>
+<translation id="7559444627302317199">لطفاً اتصال شبکه‌تان را بررسی کنید و دوباره امتحان کنید.</translation>
 <translation id="7559719679815339381">‏لطفاً صبر کنید....برنامه کیوسک در حال به‌روز شدن است. فلش USB را خارج نکنید.</translation>
 <translation id="7561196759112975576">همیشه</translation>
 <translation id="7563991800558061108">‏برای رفع این خطا، باید از صفحه ورود به سیستم وارد حساب Google خود شوید.
@@ -4561,7 +4578,6 @@
 <translation id="7887334752153342268">کپی‌برداری</translation>
 <translation id="7887864092952184874">موشواره بلوتوث مرتبط شد</translation>
 <translation id="7889565820482017512">اندازه صفحه‌نمایش</translation>
-<translation id="7889966925761734854">جستجو</translation>
 <translation id="7893008570150657497">دسترسی به عکس‌ها، موسیقی، و دیگر رسانه‌ها از رایانه شما</translation>
 <translation id="7893153962594818789">بلوتوث در این <ph name="DEVICE_TYPE" /> خاموش است. گذرواژه‌تان را وارد و بلوتوث را روشن کنید.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (پیش‌فرض)</translation>
@@ -4569,7 +4585,6 @@
 <translation id="7898627924844766532">نگه داشتن در نوار ابزار</translation>
 <translation id="7898725031477653577">همیشه ترجمه شود</translation>
 <translation id="790040513076446191">دستکاری تنظیمات مربوط به حریم خصوصی</translation>
-<translation id="7902874111237641165">حرکت یکنواخت [بتا]</translation>
 <translation id="7903345046358933331">صفحه پاسخ نمی‌دهد. می‌توانید صبر کنید تا پاسخ بدهد یا آن را ببندید.</translation>
 <translation id="7903742244674067440">گواهی‌هایی برای فایل دارید که اعتبارهای این گواهی را شناسایی می‌کنند</translation>
 <translation id="7903925330883316394">ابزار: <ph name="UTILITY_TYPE" /></translation>
@@ -4681,6 +4696,7 @@
 <translation id="8037117027592400564">خواندن همه نوشتار با استفاده از گفتار تجزیه و تحلیل شده</translation>
 <translation id="8037357227543935929">درخواست (پیش‌فرض)</translation>
 <translation id="803771048473350947">فایل</translation>
+<translation id="8042142357103597104">ماتی نوشتار</translation>
 <translation id="8044899503464538266">آهسته</translation>
 <translation id="8045253504249021590">‏همگام‌سازی از طریق «داشبورد Google» متوقف شده است.</translation>
 <translation id="8045923671629973368">شناسه برنامه یا نشانی وب فروشگاه وب را وارد کنید</translation>
@@ -4717,7 +4733,6 @@
     <ph name="BEGIN_PARAGRAPH5" />می‌توانید این سرویس را در «تنظیمات» خاموش کنید.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">پین‌ها مطابقت ندارند</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> درحال استفاده از تنظیمات پراکسی از افزونه است</translation>
-<translation id="8099495042588009598">سایر مجوزها</translation>
 <translation id="8101987792947961127">در راه‌اندازی مجدد بعدی پاکسازی لازم است</translation>
 <translation id="8102159139658438129">برای دیدن گزینه‌های تلفن متصل، به <ph name="LINK_BEGIN" />تنظیمات<ph name="LINK_END" /> بروید</translation>
 <translation id="8104696615244072556">‏دستگاه <ph name="IDS_SHORT_PRODUCT_NAME" /> شما Powerwash می‌شود و به نسخه قبلی باز می‌گردد.</translation>
@@ -4769,8 +4784,10 @@
     فکر می‌کنم این سایت نباید مسدود باشد!</translation>
 <translation id="8184288427634747179">تغییر به <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">اطلاعات بیشتر</translation>
+<translation id="8184472985242519288">یکسان</translation>
 <translation id="8185331656081929126">نمایش اعلان‌ها هنگامی که چاپگرهای جدیدی در شبکه شناسایی می‌شوند</translation>
 <translation id="8186609076106987817">سرور نتوانست فایل را پیدا کند.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> می‌تواند همه فایل‌های موجود در پوشه زیر را بخواند. این سایت تنها زمانی می‌تواند تغییرات اعمال‌شده در پوشه موردنظر را ببیند که این برگه باز باشد.</translation>
 <translation id="8188389033983459049">تنظیمات دستگاه را بررسی کنید و برای ادامه، آن را روشن کنید</translation>
 <translation id="8190193592390505034">اتصال به <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">مدیریت برنامه‌ها، افزونه‌ها و طرح‌های زمینه</translation>
@@ -4874,7 +4891,6 @@
 <translation id="833986336429795709">برای باز کردن این پیوند، برنامه‌ای انتخاب کنید</translation>
 <translation id="8342861492835240085">انتخاب مجموعه</translation>
 <translation id="834290227245955730">پین نامعتبر است. تلاش‌های باقی‌مانده: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">از پهنای باند بالا برای داشتن بهترین ویدیو یا پویانمایی استفاده کنید. ممکن است سایر افرادی که اتصال کند دارند، نتوانند محتوای شما را ببینند.</translation>
 <translation id="8351419472474436977">این برنامه افزودنی کنترل تنظیمات پروکسی شما را در اختیار گرفته است یعنی می‌تواند هر چیزی را در که حالت آنلاین انجام می‌دهید تغییر دهد، خراب کند یا استراق سمع کند. اگر مطمئن نیستید چرا این تغییر اتفاق افتاده، احتمالاً این برنامه را نمی‌خواهید.</translation>
 <translation id="8351630282875799764">باتری درحال شارژ شدن نیست</translation>
 <translation id="835238322900896202">خطایی درحین حذف نصب روی داد. لطفاً ازطریق «پایانه» حذف نصب کنید.</translation>
@@ -4907,9 +4923,11 @@
 <translation id="839736845446313156">ثبت‌نام</translation>
 <translation id="8398877366907290961">در هر حال ادامه داده شود</translation>
 <translation id="8400146488506985033">مدیریت افراد</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> می‌تواند تغییراتتان را مستقیماً در فایل‌های پوشه زیر ذخیره کند. این سایت تنها زمانی می‌تواند تغییرات را ذخیره کند که این برگه باز باشد.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ابتدا سؤال شود (توصیه می‌شود)</translation>
 <translation id="8418445294933751433">&amp;نمایش به‌صورت برگه</translation>
+<translation id="8418905021510211421">این صفحه مجاز است یکی از پوشه‌های موجود در دستگاه را بخواند.</translation>
 <translation id="8419098111404128271">نتایج جستجو برای «<ph name="SEARCH_TEXT" />»</translation>
 <translation id="8419368276599091549">به <ph name="DEVICE_TYPE" /> خوش آمدید!</translation>
 <translation id="8425213833346101688">تغییر</translation>
@@ -4929,6 +4947,7 @@
 <translation id="8438566539970814960">بهبود جستجوها و مرور</translation>
 <translation id="8439506636278576865">ترجمه صفحات نوشته شده به این زبان پیشنهاد داده شود</translation>
 <translation id="8440630305826533614">‏برنامه‌های Linux</translation>
+<translation id="844241640324986723">داده‌های ورود به سیستم حذف نشد.</translation>
 <translation id="8443338615972234259">لطفاً همین حالا حساب کاربری جدیدی برای کاربر تحت‌نظارت ایجاد کنید.</translation>
 <translation id="8446884382197647889">بیشتر بیاموزید</translation>
 <translation id="8447409163267621480">‏باید شامل Ctrl یا Alt باشد</translation>
@@ -4944,8 +4963,6 @@
 <translation id="8461914792118322307">پراکسی</translation>
 <translation id="8463215747450521436">این کاربر نظارت شده ممکن است حذف یا توسط مدیر غیرفعال شده باشد. اگر می‌خواهید با نام این کاربر به ورود به سیستم ادامه دهید، لطفاً با مدیر تماس بگیرید.</translation>
 <translation id="846374874681391779">نوار بارگیری‌ها</translation>
-<translation id="8463807869745732775">"&gt;
-    داده‌های ورود به سیستم ذخیره‌شده</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> غیرفعال شد.</translation>
 <translation id="8464132254133862871">این حساب کاربر برای سرویس واجد شرایط نیست.</translation>
 <translation id="8465252176946159372">معتبر نیست</translation>
@@ -5011,6 +5028,7 @@
 <translation id="8569002732135253578">درحال چاپ <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">مقصدی یافت نشد</translation>
 <translation id="8571213806525832805">۴ هفته گذشته</translation>
+<translation id="8573403125070227391">‏این آگهی از منابع زیادی برای دستگاهتان استفاده می‌کند، بنابراین Chrome آن را حذف کرد.</translation>
 <translation id="8574990355410201600">همیشه در <ph name="HOST" /> به صدا اجازه داده شود</translation>
 <translation id="8575286410928791436">برای خارج شدن، <ph name="KEY_EQUIVALENT" /> را نگه دارید</translation>
 <translation id="8578639784464423491">نمی‌تواند بیش از ۹۹ حرف باشد</translation>
@@ -5034,13 +5052,13 @@
 <translation id="8609465669617005112">انتقال به بالا</translation>
 <translation id="8610103157987623234">قالب نادرست است، لطفاً دوباره امتحان کنید</translation>
 <translation id="8615618338313291042">برنامه ناشناس: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">سایه‌دار</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">وضعیت فراگردی</translation>
 <translation id="8620765578342452535">پیکربندی اتصالات شبکه</translation>
 <translation id="8621866727807194849">‏نرم‌افزار مضری در رایانه‌تان وجود دارد. Chrome آن را برمی‌دارد، تنظیمات شما را بازنشانی می‌کند و افزونه‌ها را غیرفعال می‌کند. این کار باعث می‌شود مرورگرتان دوباره به‌طور معمول کار کند.</translation>
 <translation id="8621979332865976405">هم‌رسانی کل صفحه‌نمایش</translation>
 <translation id="862542460444371744">&amp;برنامه های افزودنی</translation>
-<translation id="8627151598708688654">انتخاب منبع</translation>
 <translation id="862727964348362408">معلق شد</translation>
 <translation id="862750493060684461">‏حافظهٔ پنهان CSS</translation>
 <translation id="8627795981664801467">فقط اتصالات ایمن</translation>
@@ -5094,6 +5112,7 @@
 <translation id="8688579245973331962">نامتان را مشاهده نمی‌کنید؟</translation>
 <translation id="8688591111840995413">گذرواژه بد</translation>
 <translation id="8688672835843460752">دردسترس</translation>
+<translation id="8689998525144040851">۱۰۰</translation>
 <translation id="8695825812785969222">باز کردن &amp;مکان...</translation>
 <translation id="869884720829132584">منوی برنامه</translation>
 <translation id="869891660844655955">تاریخ انقضا</translation>
@@ -5257,6 +5276,7 @@
 <translation id="891365694296252935">‏داده‌های استفاده و عیب‌یابی را ارسال کنید. این دستگاه درحال‌حاضر به‌صورت‌ خودکار داده‌های عیب‌یابی و داده‌های استفاده از دستگاه و برنامه را برای Google ارسال می‌کند. این داده‌ها برای شناسایی فرزندتان استفاده نخواهند شد و به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی داده‌های انبوه نیز به برنامه‌ها و شرکای Google (مانند برنامه‌نویس‌های Android) کمک می‌کند. این تنظیم توسط مالک اعمال می‌شود. اگر «فعالیت وب و برنامه» تکمیلی برای فرزندتان روشن باشد، ممکن است این داده‌ها در حساب Google او ذخیره شود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">در حال بارگیری پیشنهادات</translation>
 <translation id="8916476537757519021">قاب فرعی ناشناس: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - مجاز است یکی از پوشه‌های موجود در دستگاهتان را بخواند</translation>
 <translation id="8919275547519617350">برای اینکه همه گذرواژه‌هایتان را در همه دستگاه‌ها دریافت کنید، به سیستم وارد شوید و همگام‌سازی را روشن کنید.</translation>
 <translation id="8921366488406707015">درحال تأیید کردن کلید امنیتی…</translation>
 <translation id="8922013791253848639">آگهی‌ها همیشه در این سایت مجاز باشند</translation>
@@ -5286,7 +5306,6 @@
 <translation id="8965037249707889821">گذرواژه قدیمی را وارد کنید</translation>
 <translation id="8966870118594285808">اگر به اشتباه برگه‌ای را بستید، دوباره آن را باز کنید</translation>
 <translation id="8967866634928501045">‏Alt Shift A را برای نمایش فشار دهید</translation>
-<translation id="8970203673128054105">مشاهده فهرست حالت ارسال محتوا</translation>
 <translation id="89720367119469899">فرار</translation>
 <translation id="8972513834460200407">‏لطفاً با سرپرست شبکه خود بررسی کنید تا مطمئن شوید فایروال از بارگیری از سرورهای Google جلوگیری نمی‌کند.</translation>
 <translation id="8973557916016709913">برداشتن سطح بزرگ‌نمایی</translation>
@@ -5435,6 +5454,7 @@
 <translation id="9214520840402538427">متأسفیم! مهلت مقداردهی اولیه از ویژگی‌های زمان نصب به پایان رسیده است. لطفاً با نماینده پشتیبانی خود تماس بگیرید.</translation>
 <translation id="9214695392875603905">کیک فنجانی</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" اضافه شد</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> می‌تواند تغییراتتان را مستقیماً در فایل زیر ذخیره کند. این سایت تنها زمانی می‌تواند تغییرات را ذخیره کند که این برگه باز باشد.</translation>
 <translation id="9218430445555521422">تنظیم به‌عنوان پیش‌فرض</translation>
 <translation id="9219103736887031265">تصاویر</translation>
 <translation id="9220525904950070496">حذف حساب</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index b49932c..72e470cb 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Virtuaalikoneen käynnistys epäonnistui. Yritä uudelleen.</translation>
 <translation id="1089439967362294234">Vaihda salasana</translation>
 <translation id="1090126737595388931">Ei käynnissä olevia taustasovelluksia</translation>
+<translation id="1090290614672149983">Tallennetaanko muutokset alkuperäiseen tiedostoon?</translation>
 <translation id="1090918500949388876">Käytä Assistantia sanomalla Ok Google koska vain, kun näyttö on päällä</translation>
 <translation id="1091767800771861448">Ohita painamalla ESCAPE (vain epävirallisissa ohjelmistoversioissa).</translation>
 <translation id="1093457606523402488">Näkyvät verkot:</translation>
 <translation id="1094607894174825014">Lukemis- tai kirjoittamistoimintoa pyydettiin virheellisellä poikkeamalla laitteella <ph name="DEVICE_NAME" />.</translation>
 <translation id="1097658378307015415">Aloita vierailijakäyttö ennen sisäänkirjautumista aktivoidaksesi verkon <ph name="NETWORK_ID" />.</translation>
+<translation id="110029732810301672">Tämä välilehti saa tallentaa alkuperäisiin tiedostoihin.</translation>
 <translation id="1103523840287552314">Käännä <ph name="LANGUAGE" /> aina</translation>
 <translation id="1108600514891325577">Py&amp;säytä</translation>
 <translation id="1110155001042129815">Odota</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Aurinkolasit</translation>
 <translation id="1151917987301063366"><ph name="HOST" /> saa aina luvan käyttää tunnistimia</translation>
 <translation id="1153356358378277386">Laiteparit</translation>
-<translation id="1156488781945104845">Nykyinen aika</translation>
 <translation id="1161575384898972166">Kirjaudu sisään laitteeseen <ph name="TOKEN_NAME" /> ja tuo asiakkaan varmenne.</translation>
 <translation id="1163931534039071049">&amp;Näytä kehyksen lähdekoodi</translation>
 <translation id="1164674268730883318">Poistetaanko käytöstä Smart Lock laitteelle <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Playerin tallennusasetukset</translation>
 <translation id="1274997165432133392">Evästeet ja muut sivuston tiedot</translation>
 <translation id="127668050356036882">Sulje kaikki ikkunat</translation>
-<translation id="1277908057200820621">Näytä laiteluettelo</translation>
 <translation id="1280820357415527819">Haetaan mobiiliverkkoja</translation>
 <translation id="1285320974508926690">Älä käännä tätä sivustoa</translation>
 <translation id="1285484354230578868">Tallenna tiedot Google Drive -tiliin</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Kotiverkko, ei roaming-tilassa </translation>
 <translation id="1316136264406804862">Haetaan...</translation>
 <translation id="1316495628809031177">Synkronointi on keskeytetty</translation>
+<translation id="1317637799698924700">Telineesi toimii USB Type-C ‑yhteensopivassa tilassa.</translation>
 <translation id="1322046419516468189">Katso ja ylläpidä salasanoja: <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Käytä välilehtiä muilta laitteiltasi kirjautumalla Chromeen.</translation>
 <translation id="1327074568633507428">Tulostin Google Cloud Printissä</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Selaintasi ylläpitää<ph name="END_LINK" /> <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Käytä Linux-työkaluja, muokkausohjelmia ja integroituja kehitysympäristöjä (<ph name="DEVICE_TYPE" />). &lt;a target="_blank" href="<ph name="URL" />"&gt;Lue lisää&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Valitse tiedosto</translation>
+<translation id="1370749010280229230">Ongelma telineeseen yhdistetyssä näytössä</translation>
 <translation id="1371301976177520732">Kirjanmerkit, historia ja paljon muuta kaikilla laitteillasi</translation>
 <translation id="1372841398847029212">Synkronoi tilillesi</translation>
 <translation id="1374844444528092021">Verkon <ph name="NETWORK_NAME" /> vaatimaa varmennetta ei ole asennettu tai varmenne ei ole enää voimassa. Hanki uusi varmenne ja yritä muodostaa yhteys uudelleen.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Verkkosivu, yksi tiedosto</translation>
 <translation id="1451917004835509682">Lisää valvottu käyttäjä</translation>
 <translation id="1454223536435069390">Ot&amp;a kuvakaappaus</translation>
+<translation id="1458243790901188746">{0,plural, =1{Kansio: <ph name="DIRECTORIES" />}other{Kansiot: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Laajennuksien lisäämät hakukoneet</translation>
 <translation id="146000042969587795">Kehys estettiin, koska se sisältää suojaamatonta sisältöä.</translation>
 <translation id="146219525117638703">ONC-tila</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Näytä syöttöasetukset</translation>
 <translation id="1651008383952180276">Kirjoita sama tunnuslause kahdesti.</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Lisää tulostin Google Cloud Printiin, jotta voit tulostaa mistä tahansa.}other{Lisää # tulostinta Google Cloud Printiin, jotta voit tulostaa mistä tahansa.}}</translation>
+<translation id="1656528038316521561">Taustan läpinäkyvyys</translation>
 <translation id="1657406563541664238">Auta parantamaan tuotetta <ph name="PRODUCT_NAME" /> lähettämällä automaattisesti käyttötilastoja ja virheraportteja Googlelle.</translation>
 <translation id="1658424621194652532">Tämä sivu käyttää mikrofoniasi.</translation>
 <translation id="1660204651932907780">Salli sivustojen toistaa ääniä (suositus)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> haluaa nähdä suojausavaimesi merkin ja mallin.</translation>
 <translation id="1679068421605151609">Kehittäjän työkalut</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Haluatko varmasti poistua?</translation>
 <translation id="167983332380191032">Ylläpitopalvelu lähetti HTTP-virheen.</translation>
 <translation id="1680849702532889074">Linux-sovelluksen asennuksessa tapahtui virhe.</translation>
 <translation id="16815041330799488">Älä anna sivustojen nähdä leikepöydälle kopioitua tekstiä ja kuvia</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Suojatun median tunniste</translation>
 <translation id="175196451752279553">A&amp;vaa suljettu välilehti uudelleen</translation>
 <translation id="1753905327828125965">Käydyimmät</translation>
+<translation id="1755601632425835748">Tekstin koko</translation>
 <translation id="1756681705074952506">Syöttötapa</translation>
 <translation id="1757301747492736405">Odotetaan poistoa</translation>
 <translation id="175772926354468439">Ota teema käyttöön</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Pienempi</translation>
 <translation id="1919345977826869612">Mainokset</translation>
 <translation id="1919814239594435008">Ei hiekkalaatikossa toimiva laajennus sallittu</translation>
+<translation id="1920390473494685033">Yhteystiedot</translation>
 <translation id="1921050530041573580">Muodosta laitepari puhelimen ja Messagesin välille</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Googlen älykkäät ratkaisut: <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Incognito-välilehti: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> verkkotunnuksessa <ph name="PEPPER_PLUGIN_DOMAIN" /> haluaa käyttää tietokonettasi.</translation>
 <translation id="2178614541317717477">Myöntäjäkompromissi</translation>
+<translation id="2179849162388791084">Kirjautumisdatan kerääminen suojausavaimestasi epäonnistui.</translation>
 <translation id="218070003709087997">Määritä tulostettavien kappaleiden määrä antamalla numero (1–999).</translation>
 <translation id="2184515124301515068">Anna Chromen valita, milloin sivustot voivat toistaa ääniä (suositus)</translation>
 <translation id="2187895286714876935">Palvelimen varmenteen tuontivirhe</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Kaikki evästeet ja sivuston tiedot</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 kohde kopioitu}other{# kohdetta kopioitu}}</translation>
 <translation id="2278562042389100163">Avaa selainikkuna</translation>
-<translation id="2279874276457403668">Kerrallaan voidaan luoda vain yksi istunto</translation>
 <translation id="2280486287150724112">Oikea reuna</translation>
 <translation id="2282146716419988068">GPU-prosessi</translation>
 <translation id="2282155092769082568">Automaattisen määrityksen URL-osoite:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Lukitusnäytön ilmoitukset tallennetaan automaattisesti sovellukseen <ph name="LOCK_SCREEN_APP_NAME" />. Viimeisin ilmoitus pysyy lukitusnäytöllä.</translation>
 <translation id="2353297238722298836">Kamera ja mikrofoni sallittu</translation>
 <translation id="2356070529366658676">Kysy</translation>
-<translation id="2357949918965361754">Tämän ominaisuuden avulla voit katsella Chromen sisältöä television ja muiden laitteiden näytöltä.</translation>
 <translation id="2359345697448000899">Hallinnoi laajennuksiasi valitsemalla Työkalut-valikosta Laajennukset.</translation>
 <translation id="2359808026110333948">Jatka</translation>
 <translation id="236117173274098341">Optimoi</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Organisaatio edellyttää laitteen päivittämistä heti</translation>
 <translation id="2439545803278355377">Lisää uusi PIN-koodisi. PIN-koodin on oltava vähintään neljä merkkiä pitkä, ja se voi sisältää kirjaimia, numeroita ja muita merkkejä.</translation>
 <translation id="2440604414813129000">Näytä a&amp;lkuperä</translation>
+<translation id="2442916515643169563">Tekstin varjo</translation>
 <translation id="2444119669991608829">Eikö sivu ole kirjoitettu kielellä <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Laajennuksen juurihakemisto tarvitaan.</translation>
 <translation id="2445484935443597917">Luo uusi profiili</translation>
@@ -1181,6 +1188,7 @@
 <translation id="2738771556149464852">Ei tämän jälkeen</translation>
 <translation id="2739191690716947896">Vianetsintä</translation>
 <translation id="2739240477418971307">Muokata esteettömyysasetuksia</translation>
+<translation id="274029851662193272">Laskettu</translation>
 <translation id="2740393541869613458">tarkastaa verkkosivustot, joilla valvottu käyttäjä on käynyt, ja</translation>
 <translation id="2741912629735277980">Näytä käyttöliittymä kirjautumisnäytöllä</translation>
 <translation id="274290345632688601">Palautetaan Linux-sovellukset ja ‑tiedostot</translation>
@@ -1229,6 +1237,7 @@
 <translation id="2806891468525657116">Pikakuvake on jo olemassa</translation>
 <translation id="2807517655263062534">Lataamasi tiedostot näytetään tässä.</translation>
 <translation id="2809586584051668049">ja <ph name="NUMBER_ADDITIONAL_DISABLED" /> muuta</translation>
+<translation id="2812049959647166806">Thunderboltia ei tueta</translation>
 <translation id="2812944337881233323">Kokeile kirjautua ensin ulos ja sitten takaisin sisään.</translation>
 <translation id="2812989263793994277">Älä näytä kuvia</translation>
 <translation id="281390819046738856">Pyynnön allekirjoittaminen epäonnistui.</translation>
@@ -1251,7 +1260,6 @@
 <translation id="2841837950101800123">Tarjoaja</translation>
 <translation id="2844169650293029770">C-tyypin USB-laite (vasemman sivun etummainen portti)</translation>
 <translation id="2845382757467349449">Näytä kirjanmerkkipalkki aina</translation>
-<translation id="2847759467426165163">Lähetä laitteelle</translation>
 <translation id="284805635805850872">Poistetaanko haittaohjelmia?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Poisto epäonnistui</translation>
@@ -1298,6 +1306,7 @@
     Palvelimen viesti: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Lisää mediagalleria hakemiston mukaan</translation>
 <translation id="2910318910161511225">Muodosta yhteys verkkoon ja yritä uudelleen.</translation>
+<translation id="2910518940971897750">Tallenna alkuperäiseen tiedostoon</translation>
 <translation id="2913331724188855103">Salli sivustojen tallentaa ja lukea evästetietoja (suositus).</translation>
 <translation id="2915102088417824677">Näytä tapahtumaloki</translation>
 <translation id="2915873080513663243">Automaattinen skannaus</translation>
@@ -1362,12 +1371,14 @@
 <translation id="3013291976881901233">MIDI-laitteet</translation>
 <translation id="3015639418649705390">Käynnistä uudelleen nyt</translation>
 <translation id="3016329696181678353">Tulostimen <ph name="PRINTER_NAME" /> automaattinen määritys epäonnistui. Määritä tulostimen lisäasetukset.</translation>
+<translation id="3016381065346027039">Ei lokimerkintöjä</translation>
 <translation id="3016641847947582299">Komponentti päivitettiin</translation>
 <translation id="3016780570757425217">Saada sijaintisi selville.</translation>
 <translation id="3017079585324758401">Tausta</translation>
 <translation id="3020183492814296499">Pikanäppäimet</translation>
 <translation id="3020990233660977256">Sarjanumero: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Perhonen</translation>
+<translation id="3021408157810018664">Tallennetaanko muutokset alkuperäisiin tiedostoihin?</translation>
 <translation id="3021426244864538700">Pääsy tämän sivuston dataan</translation>
 <translation id="3021678814754966447">&amp;Näytä kehyksen lähdekoodi</translation>
 <translation id="3022978424994383087">En ymmärtänyt.</translation>
@@ -1460,6 +1471,7 @@
 <translation id="3170072451822350649">Voit myös ohittaa sisäänkirjautumisen ja <ph name="LINK_START" />selata vierailijana<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Sivusto käyttää videotuloa</translation>
 <translation id="3177909033752230686">Sivun kieli:</translation>
+<translation id="3179982752812949580">Tekstin kirjasin</translation>
 <translation id="3181954750937456830">Selaussuoja (suojaa sinua ja laitettasi vaarallisilta sivustoilta)</translation>
 <translation id="3182749001423093222">Oikeinkirjoituksen tarkistus</translation>
 <translation id="3183139917765991655">Profiilien tuoja</translation>
@@ -1512,7 +1524,6 @@
 <translation id="3275778913554317645">Avaa ikkunana</translation>
 <translation id="3278001907972365362">Google-tilisi vaativat toimenpiteitä</translation>
 <translation id="3279230909244266691">Tämä voi kestää muutaman minuutin. Käynnistetään virtuaalikonetta.</translation>
-<translation id="3279741024917655738">Koko näytön videoiden näyttötapa:</translation>
 <translation id="3280237271814976245">Tallenna &amp;nimellä...</translation>
 <translation id="3280243678470289153">Pysy Chromessa</translation>
 <translation id="3281892622610078515">Karanteeniin siirrettävät tiedostot ja ohjelmat:</translation>
@@ -1534,7 +1545,7 @@
 <translation id="3303855915957856445">Ei hakutuloksia</translation>
 <translation id="3305389145870741612">Alustus voi kestää pari sekuntia. Odota.</translation>
 <translation id="3305661444342691068">Avaa PDF esikatselussa</translation>
-<translation id="3306684685104080068">Ota käyttöön suoratoisto pilvipohjaisiin palveluihin, kuten Google Hangoutsiin.</translation>
+<translation id="3307871847038842490">Tämä sivu saa tallentaa alkuperäisiin tiedostoihin.</translation>
 <translation id="3308006649705061278">Organisaatioyksikkö (OU)</translation>
 <translation id="3308116878371095290">Tämä sivu ei saa asettaa evästeitä.</translation>
 <translation id="3308134619352333507">Piilota painike</translation>
@@ -1640,7 +1651,6 @@
 <translation id="3462413494201477527">Perutaanko tilin luominen?</translation>
 <translation id="3464012987031883895">Sivusto käyttää äänituloa</translation>
 <translation id="346431825526753">Tämä on lapsen tili, jota hallinnoi <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Suoratoista video- tai äänitiedosto</translation>
 <translation id="3468999815377931311">Android-puhelin</translation>
 <translation id="3470442499439619530">Poista tämä käyttäjä</translation>
 <translation id="3473479545200714844">Ruudun suurentaminen</translation>
@@ -1663,6 +1673,7 @@
 <translation id="3496213124478423963">Loitonna</translation>
 <translation id="3497560059572256875">Jaa Doodle</translation>
 <translation id="3505030558724226696">Peruuta laitteen käyttöoikeus</translation>
+<translation id="3505635633742443645">Telineen HDMI-porttia ei voi käyttää, kun USB Type-C ‑porttia käytetään videoulostulona. Valitse yhdelle näytölle toinen portti.</translation>
 <translation id="3507421388498836150">Laajennuksen <ph name="EXTENSION_NAME" /> nykyiset käyttöoikeudet</translation>
 <translation id="3507888235492474624">Hae Bluetooth-laitteet uudelleen</translation>
 <translation id="3508920295779105875">Valitse toinen kansio...</translation>
@@ -1715,6 +1726,7 @@
 <translation id="3576324189521867626">Asennus onnistui.</translation>
 <translation id="3578594933904494462">Tämän välilehden sisältöä jaetaan.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; haluaa jakaa tulostimen &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; omistamasi ryhmän kanssa: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Jos hyväksyt, kaikki ryhmän jäsenet voivat tulostaa tulostimeen.</translation>
+<translation id="357889014807611375">maksullinen Wi-Fi</translation>
 <translation id="3584169441612580296">Käyttää ja muokata valokuvia, musiikkia ja muuta tietokoneesi mediaa</translation>
 <translation id="3587482841069643663">Kaikki</translation>
 <translation id="358796204584394954">Kirjoita tämä laitteessa <ph name="DEVICE_NAME" /> oleva koodi, jos haluat muodostaa laiteparin:</translation>
@@ -1725,6 +1737,7 @@
 <translation id="359283478042092570">Sisään</translation>
 <translation id="3593965109698325041">Varmenteen nimirajoitukset</translation>
 <translation id="3596235046596950091">Ota pilvipalvelut käyttöön</translation>
+<translation id="3599221874935822507">Korotettu</translation>
 <translation id="3599863153486145794">Tyhjentää kaikkien sisäänkirjautuneiden laitteiden historian. Google-tililläsi voi olla muuta toimintaa osoitteessa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Verkkopyynnön tiedot</translation>
 <translation id="3600792891314830896">Mykistä ääniä toistavat sivustot</translation>
@@ -1739,6 +1752,7 @@
 <translation id="3612673635130633812">Lataaja: &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Näytä <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">Avaa uudessa välilehdessä</translation>
+<translation id="3615073365085224194">Kosketa sormenjälkitunnistinta sormellasi.</translation>
 <translation id="3616113530831147358">Ääni</translation>
 <translation id="3616741288025931835">&amp;Poista selaustiedot...</translation>
 <translation id="3617891479562106823">Taustat eivät ole käytettävissä. Yritä myöhemmin uudelleen.</translation>
@@ -1820,7 +1834,6 @@
 <translation id="3719826155360621982">Etusivu</translation>
 <translation id="3720996970802414353">Vaihda silti</translation>
 <translation id="3722108462506185496">Virtuaalikonepalvelun käynnistys epäonnistui. Yritä myöhemmin uudelleen.</translation>
-<translation id="3723158278575423087">Tervetuloa käyttämään Cast-ominaisuuksia Chromiumissa!</translation>
 <translation id="3725367690636977613">sivut</translation>
 <translation id="3726137731714254362">Jos poistat kansion tästä, sen jakaminen keskeytetään, mutta siinä olevia tiedostoja ei poisteta.</translation>
 <translation id="3727148787322499904">Tämän asetuksen muuttaminen vaikuttaa kaikkiin jaettuihin verkkoihin.</translation>
@@ -1855,7 +1868,6 @@
 <translation id="3764314093345384080">Koontiversion yksityiskohtaiset tiedot</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Käyttää USB-laitetta}other{Käyttää # USB-laitetta}}</translation>
 <translation id="3765246971671567135">Esittelytilan offline-käytäntöjä ei voitu lukea.</translation>
-<translation id="3766223500670287046">Etänäyttö</translation>
 <translation id="3768037234834996183">Asetuksia synkronoidaan…</translation>
 <translation id="377050016711188788">Jäätelö</translation>
 <translation id="3771294271822695279">Videotiedostot </translation>
@@ -1928,7 +1940,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Nosta sormi ja kosketa uudelleen</translation>
 <translation id="3860104611854310167">Synkronointi keskeytetty: <ph name="PROFILE_NAME" /></translation>
-<translation id="3862134173397075045">Tervetuloa käyttämään Cast-ominaisuuksia Chromessa!</translation>
 <translation id="3862693525629180217">Vahvista sisäänrakennetun anturin kautta</translation>
 <translation id="3862788408946266506">Sovellukset, joilla on luetteloattribuutti kiosk_only, täytyy asentaa Chrome-käyttöjärjestelmän kioskitilassa.</translation>
 <translation id="3865414814144988605">Resoluutio</translation>
@@ -1977,6 +1988,7 @@
 <translation id="3926002189479431949">Smart Lock -puhelin on vaihdettu</translation>
 <translation id="3927932062596804919">Estä</translation>
 <translation id="3930737994424905957">Haetaan laitteita</translation>
+<translation id="3930968231047618417">Taustaväri</translation>
 <translation id="3933283459331715412">Palauta poistettu salasana: <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">Avaa äänitied&amp;osto uudessa välilehdessä</translation>
 <translation id="3936925983113350642">Valitsemasi salasana vaaditaan tämän varmenteen palauttamiseen myöhemmin. Tallenna se varmaan paikkaan.</translation>
@@ -1993,6 +2005,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Tuotu IE:stä</translation>
 <translation id="3950820424414687140">Kirjaudu sisään</translation>
+<translation id="3950828138786918475">Tämä välilehti saa lukea laitteesi kansiota.</translation>
 <translation id="3954354850384043518">Käynnissä</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> hertsiä)</translation>
 <translation id="3954953195017194676">Sinulla ei ole äskettäin tallennettuja WebRTC-lokeja.</translation>
@@ -2011,6 +2024,7 @@
 <translation id="397105322502079400">Lasketaan...</translation>
 <translation id="3975565978598857337">Alueen hakeminen palvelimelta epäonnistui</translation>
 <translation id="397703832102027365">Viimeistellään...</translation>
+<translation id="3977886311744775419">Automaattisia päivityksiä ei ladata tässä verkkotyypissä, mutta voit tarkistaa päivitykset manuaalisesti.</translation>
 <translation id="3979395879372752341">Uusi laajennus lisätty (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Ota käyttöön <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Annoit virheellisen tallennustyypin.</translation>
@@ -2150,6 +2164,7 @@
 <translation id="4194570336751258953">Ota koskettamalla klikkaus käyttöön</translation>
 <translation id="4195643157523330669">Avaa uudelle välilehdelle</translation>
 <translation id="4195814663415092787">Jatka siitä, mihin jäit</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> saa tallentaa muutokset suoraan seuraaviin tiedostoihin. Tämä sivusto saa tallentaa muutokset vain kun nykyinen välilehti on avoinna.</translation>
 <translation id="4198146608511578238">Paina käynnistysohjelman kuvaketta pitkään, niin voit puhua Google Assistantille.</translation>
 <translation id="4200689466366162458">Muokatut sanat</translation>
 <translation id="4200983522494130825">Uusi &amp;välilehti</translation>
@@ -2197,7 +2212,6 @@
 <translation id="4267953847983678297">Yhdistä automaattisesti mobiiliverkkoon</translation>
 <translation id="4268025649754414643">Avaimen salakoodaus</translation>
 <translation id="4270393598798225102">Versio <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Ei hakutuloksia</translation>
 <translation id="4275663329226226506">Media</translation>
 <translation id="4275830172053184480">Käynnistä laite uudelleen</translation>
 <translation id="4278101229438943600">Assistant on valmiina</translation>
@@ -2346,6 +2360,7 @@
 <translation id="4533985347672295764">Prosessoriaika</translation>
 <translation id="4534661889221639075">Yritä uudelleen.</translation>
 <translation id="4535127706710932914">Oletusprofiili</translation>
+<translation id="4535767533210902251">Sormenjälkitunnistin on näppäimistön oikeassa yläkulmassa. Kosketa sitä kevyesti millä tahansa sormella.</translation>
 <translation id="4538684596480161368">Estä aina hiekkalaatikolla testaamattomat laajennukset sivustolla <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Asennettu yrityskäytännön mukaisesti</translation>
 <translation id="4542520061254486227">Lukea tietojasi sivustoissa <ph name="WEBSITE_1" /> ja <ph name="WEBSITE_2" /></translation>
@@ -2379,6 +2394,7 @@
 <translation id="457386861538956877">Lisää...</translation>
 <translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Parin muodostus Bluetooth-laitteen kanssa</translation>
+<translation id="4578012756826807359">Kirjautumistietojasi poistettiin.</translation>
 <translation id="4579581181964204535">Osoitteen <ph name="HOST_NAME" /> suoratoisto ei onnistu.</translation>
 <translation id="4581774856936278355">Virhe palautettaessa Linuxia</translation>
 <translation id="4582563038311694664">Palauta kaikki asetukset</translation>
@@ -2496,7 +2512,6 @@
 <translation id="4763830802490665879">Useiden sivustojen evästeet tyhjennetään poistuttaessa.</translation>
 <translation id="4765582662863429759">Android Messages saa hakea viestejä puhelimesta Chromebookiin</translation>
 <translation id="4768332406694066911">Sinulla on varmenteita seuraavilta sinut tunnistavilta organisaatioilta</translation>
-<translation id="4772404146526168240">Molemmat näytöt</translation>
 <translation id="4776146737004271126">Avaa Android-asetukset</translation>
 <translation id="4776917500594043016">Osoitteen <ph name="USER_EMAIL_ADDRESS" /> salasana</translation>
 <translation id="4777825441726637019">Play Kauppa</translation>
@@ -2604,7 +2619,6 @@
 <translation id="4927846293686536410">Kirjaudu sisään, niin voit käyttää kirjanmerkkejä, historiaa, salasanoja ja muita asetuksiasi kaikilla laitteilla. Sinut kirjataan lisäksi automaattisesti sisään käyttämiisi Googlen palveluihin.</translation>
 <translation id="4929386379796360314">Tulostuskohteet</translation>
 <translation id="4930714375720679147">Ota käyttöön</translation>
-<translation id="4931132176527519925">Käytä peilausta aina</translation>
 <translation id="4932733599132424254">Päiväys</translation>
 <translation id="4933484234309072027">upotettu sivustoon <ph name="URL" /></translation>
 <translation id="493571969993549666">Lisää valvottu käyttäjä</translation>
@@ -2644,6 +2658,7 @@
 <translation id="4992066212339426712">Poista mykistys</translation>
 <translation id="4992458225095111526">Vahvista powerwash</translation>
 <translation id="4992473555164495036">Järjestelmänvalvoja on rajoittanut syöttötapoja.</translation>
+<translation id="4992866843815555470">Telineesi tarvitsee huoltoa. Jos tuuletin ei toimi, teline sammuu.</translation>
 <translation id="4992926179187649719">Ota käyttöön Ok Google</translation>
 <translation id="4994474651455208930">Anna sivustojen ehdottaa protokollien oletuskäsittelypalveluiden määrittämistä.</translation>
 <translation id="4994754230098574403">Määritetään</translation>
@@ -2782,7 +2797,6 @@
 <translation id="5233231016133573565">Prosessin tunnus</translation>
 <translation id="5233638681132016545">Uusi välilehti</translation>
 <translation id="5233736638227740678">&amp;Liitä</translation>
-<translation id="5234764350956374838">Piilota</translation>
 <translation id="5235050375939235066">Poistetaanko sovellus?</translation>
 <translation id="5235750401727657667">Korvaa sivu, joka näkyy uuden välilehden avaamisen yhteydessä</translation>
 <translation id="5238278114306905396">Sovellus <ph name="EXTENSION_NAME" /> poistettiin automaattisesti.</translation>
@@ -2847,6 +2861,7 @@
 <translation id="5319359161174645648">Google suosittelee Chromea</translation>
 <translation id="532247166573571973">Palvelimeen ei ehkä saada yhteyttä. Yritä uudelleen.</translation>
 <translation id="5324780743567488672">Aseta aikavyöhyke automaattisesti käyttämällä sijaintiasi.</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – saa tallentaa alkuperäisiin tiedostoihin</translation>
 <translation id="5327248766486351172">Nimi</translation>
 <translation id="5327570636534774768">Laite on merkitty toisen verkkotunnuksen ylläpitämäksi. Poista siltä toisen verkkotunnuksen oikeudet ennen esittelytilan määrittämistä.</translation>
 <translation id="532943162177641444">Avaa <ph name="PHONE_NAME" /> ja kosketa siinä näkyvää ilmoitusta, niin mobiili-hotspot määritetään tämän laitteen käyttöön.</translation>
@@ -2989,7 +3004,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> pyytää lupaa</translation>
 <translation id="5534304873398226603">Hylkää valokuva tai video</translation>
 <translation id="5535941515421698170">Poista myös olemassa olevat tietosi tältä laitteelta</translation>
-<translation id="5537725057119320332">Lähetä</translation>
 <translation id="5539221284352502426">Palvelin hylkäsi antamasi salasanan. Mahdollisia syitä: Salasana on liian lyhyt. Salasanassa on oltava numeroita tai merkkejä. Salasanan on oltava eri kuin aiemmat salasanat.</translation>
 <translation id="5541687815721799001">Käytä sovellusta</translation>
 <translation id="5542132724887566711">Profiili</translation>
@@ -3298,7 +3312,6 @@
 <translation id="5997337190805127100">Lisätietoja sivustojen käyttöoikeuksista</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> tulosta: <ph name="SEARCH_TEXT" /></translation>
 <translation id="6002458620803359783">Ensisijaiset äänet</translation>
-<translation id="6005695835120147974">Mediareititin</translation>
 <translation id="6006484371116297560">Perinteinen</translation>
 <translation id="6007240208646052708">Puhehaku ei ole käytettävissä kielelläsi.</translation>
 <translation id="6009781704028455063">Sisäänrakennettu anturi</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Verkossasi on uusi tulostin}other{Verkossasi on uusia tulostimia}}</translation>
 <translation id="6286708577777130801">Tallennettujen salasanojen tiedot</translation>
 <translation id="6289452883081499048">Play ja muut personoidut Google-palvelut</translation>
-<translation id="6290556621549272952">Tämän ominaisuuden avulla voit katsella Chromiumin sisältöä television ja muiden laitteiden näytöltä.</translation>
 <translation id="6291949900244949761">Kysy aina, kun sivusto pyytää USB-laitteen käyttölupaa (suositus)</translation>
 <translation id="6291953229176937411">Näytä Finderi&amp;ssä</translation>
 <translation id="6295158916970320988">Kaikki sivustot</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Lähetä <ph name="BEGIN_LINK1" />järjestelmän tiedot<ph name="END_LINK1" /> ja <ph name="BEGIN_LINK2" />tilastot<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Estä sivustoja käyttämästä liiketunnistimia</translation>
 <translation id="6397094776139756010">Synkronoinnin ja personoinnin asetukset</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> saa tallentaa muutoksia suoraan seuraavan kansion tiedostoihin. Tämä sivusto saa tallentaa muutokset vain kun nykyinen välilehti on avoinna.</translation>
 <translation id="6398715114293939307">Poista Google Play Kauppa</translation>
 <translation id="6398765197997659313">Poistu koko näytön tilasta</translation>
 <translation id="6399774419735315745">Vakooja</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">Tietyillä sivustoilla</translation>
 <translation id="6455894534188563617">Uusi ka&amp;nsio</translation>
 <translation id="6456394469623773452">Hyväksyttävä</translation>
+<translation id="6456955391422100996">Mainos poistettu</translation>
 <translation id="645705751491738698">Estä JavaScript edelleen</translation>
 <translation id="6458701200018867744">Lataus epäonnistui (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Hae valinnan avulla</translation>
 <translation id="6459799433792303855">Aktiivinen ikkuna siirrettiin toiselle näytölle.</translation>
 <translation id="6460601847208524483">Hae seuraava</translation>
+<translation id="6461170143930046705">Etsitään verkkoja…</translation>
 <translation id="6463795194797719782">M&amp;uokkaa</translation>
 <translation id="6466988389784393586">Avaa kaikki kirjanmerkit</translation>
 <translation id="6467304607960172345">Optimoi koko näytön videot</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Olet yhteydessä verkkoon (<ph name="NETWORK_TYPE" />).</translation>
 <translation id="6527303717912515753">Jaa</translation>
 <translation id="6528513914570774834">Anna muiden laitteen käyttäjien käyttää tätä verkkoa</translation>
 <translation id="652948702951888897">Chromen historia</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Nopeus</translation>
 <translation id="6681668084120808868">Ota valokuva</translation>
 <translation id="6681964764822470072"><ph name="APP_NAME" /> poistetaan</translation>
-<translation id="6685083257944113180">Lopeta <ph name="SINK_NAME" />: <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Avaa Google Play</translation>
 <translation id="6686490380836145850">Sulje välilehdet oikealle</translation>
 <translation id="6686817083349815241">Tallenna salasanasi</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Avaa suuressa koossa</translation>
 <translation id="6845325883481699275">Auta parantamaan Chromen suojausta</translation>
 <translation id="6848388270925200958">Joitakin korttejasi voi juuri nyt käyttää vain tällä laitteella</translation>
+<translation id="6850286078059909152">Tekstin väri</translation>
 <translation id="6851497530878285708">Sovellus käytössä</translation>
 <translation id="6853388645642883916">Päivittäjä on lepotilassa</translation>
 <translation id="68541483639528434">Sulje muut välilehdet</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Vieritä / klikkaa</translation>
 <translation id="6923633482430812883">Virhe jaon käyttöönotossa. Varmista, että yhdistetty tiedostopalvelin tukee SMBv2:ta tai uudempaa.</translation>
 <translation id="6930036377490597025">Ulkoinen suojausavain tai sisäänrakennettu anturi</translation>
-<translation id="6930242544192836755">Kesto</translation>
 <translation id="693807610556624488">Kirjoitustoiminto ylittää attribuutin enimmäispituuden laitteella <ph name="DEVICE_NAME" />.</translation>
 <translation id="6941937518557314510">Kirjaudu sisään laitteeseen <ph name="TOKEN_NAME" /> ja todenna <ph name="HOST_NAME" /> varmenteellasi.</translation>
 <translation id="6943176775188458830">Peruuta tulostus</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Maksujen käsittelijät</translation>
 <translation id="6951663584153258142">Organisaatiosi pyytää päivittämään laitteen</translation>
 <translation id="6953878494808481632">Asiaan liittyvät tiedot</translation>
+<translation id="6953916367503892689">{0,plural, =1{Tiedosto: <ph name="FILES" />}other{Tiedostot: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Näytä ponnahdusikkuna</translation>
 <translation id="6957044667612803194">Tämä suojausavain ei tue PIN-koodia</translation>
 <translation id="6957231940976260713">Palvelun nimi</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Sivua ei voi kääntää.</translation>
 <translation id="7254951428499890870">Haluatko varmasti käynnistää sovelluksen <ph name="APP_NAME" /> diagnostiikkatilassa?</translation>
 <translation id="7255002516883565667">Yhtä korteistasi voi juuri nyt käyttää vain tällä laitteella</translation>
-<translation id="7255220508626648026">Suoratoistetaan: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Vahvista nollaus koskettamalla suojausavainta uudelleen. Tällöin kaikki suojausavaimeen tallennetut tiedot, kuten sen PIN-koodi, poistetaan.</translation>
 <translation id="7255935316994522020">Ota käyttöön</translation>
 <translation id="7256069762010468647">Sivusto käyttää kameraasi</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">kehitys</translation>
 <translation id="7456847797759667638">Avaa sijainti...</translation>
 <translation id="7458168200501453431">Käyttää samaa oikolukua kuin Google Haussa. Selaimeen kirjoittamasi teksti lähetetään Googlelle.</translation>
+<translation id="7460045493116006516">Asentamasi nykyinen teema</translation>
 <translation id="7461924472993315131">Kiinnitä</translation>
 <translation id="746216226901520237">Ensi kerralla <ph name="DEVICE_TYPE" /> avataan lukituksesta puhelimellasi. Voit poistaa Smart Lockin käytöstä asetuksissa.</translation>
 <translation id="7463006580194749499">Lisää käyttäjä</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Uusi välilehti</translation>
 <translation id="7556033326131260574">Smart Lock ei voinut vahvistaa tiliäsi. Avaa laite kirjoittamalla salasana.</translation>
 <translation id="7556242789364317684">Valitettavasti <ph name="SHORT_PRODUCT_NAME" /> ei voi palauttaa asetuksiasi. Jos haluat korjata tämän virheen, kohteen <ph name="SHORT_PRODUCT_NAME" /> on nollattava laitteesi Powerwashilla.</translation>
+<translation id="7559444627302317199">Tarkista verkkoyhteys ja yritä uudelleen.</translation>
 <translation id="7559719679815339381">Odota hetki, kioskisovellusta päivitetään. Älä irrota USB-tikkua.</translation>
 <translation id="7561196759112975576">Aina</translation>
 <translation id="7563991800558061108">Voit korjata tämän virheen kirjautumalla Google-tiliisi
@@ -4564,7 +4581,6 @@
 <translation id="7887334752153342268">Monista</translation>
 <translation id="7887864092952184874">Laitepari muodostettu Bluetooth-hiiren kanssa</translation>
 <translation id="7889565820482017512">Näyttökoko</translation>
-<translation id="7889966925761734854">Kelaa</translation>
 <translation id="7893008570150657497">käyttää valokuvia, musiikkia ja muuta tietokoneesi mediaa</translation>
 <translation id="7893153962594818789"><ph name="DEVICE_TYPE" /> ei käytä Bluetoothia tällä hetkellä. Anna salasana ja ota Bluetooth käyttöön.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Oletus)</translation>
@@ -4572,7 +4588,6 @@
 <translation id="7898627924844766532">Pidä yläpalkissa</translation>
 <translation id="7898725031477653577">Käännä aina</translation>
 <translation id="790040513076446191">Muokata tietosuojaan liittyviä asetuksia</translation>
-<translation id="7902874111237641165">Sulava liikkeentunnistus [beta]</translation>
 <translation id="7903345046358933331">Tämä sivu ei enää vastaa. Voit odottaa sivun vastausta tai sulkea sen.</translation>
 <translation id="7903742244674067440">Olet tallentanut seuraavat varmenteen myöntäjät tunnistavat varmenteet</translation>
 <translation id="7903925330883316394">Apuohjelma: <ph name="UTILITY_TYPE" /></translation>
@@ -4684,6 +4699,7 @@
 <translation id="8037117027592400564">Käyttää kaikkea puhesynteesin avulla luettua tekstiä</translation>
 <translation id="8037357227543935929">Kysy (oletus)</translation>
 <translation id="803771048473350947">Tiedosto</translation>
+<translation id="8042142357103597104">Tekstin läpinäkyvyys</translation>
 <translation id="8044899503464538266">Hidas</translation>
 <translation id="8045253504249021590">Synkronointi on keskeytetty Google Hallintapaneelin kautta.</translation>
 <translation id="8045923671629973368">Anna sovellustunnus tai verkkokaupan URL-osoite.</translation>
@@ -4720,7 +4736,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Voit poistaa tämän palvelun käytöstä asetuksissa.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN-koodit eivät täsmää.</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> käyttää laajennuksen välityspalvelinasetuksia</translation>
-<translation id="8099495042588009598">Lisää käyttöoikeuksia</translation>
 <translation id="8101987792947961127">Powerwash vaaditaan seuraavan uudelleenkäynnistyksen yhteydessä</translation>
 <translation id="8102159139658438129">Katso yhdistetyn puhelimen toiminnot <ph name="LINK_BEGIN" />asetuksista<ph name="LINK_END" />.</translation>
 <translation id="8104696615244072556">Suorita Powerwash <ph name="IDS_SHORT_PRODUCT_NAME" />-laitteellesi ja palaa aiempaan versioon.</translation>
@@ -4772,8 +4787,10 @@
     Tämän sivuston ei pitäisi olla estetty.</translation>
 <translation id="8184288427634747179">Vaihda profiiliin <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Lisätietoja</translation>
+<translation id="8184472985242519288">Yhdenmukainen</translation>
 <translation id="8185331656081929126">Näytä ilmoitukset, kun verkossa havaitaan uusia tulostimia</translation>
 <translation id="8186609076106987817">Palvelin ei löydä tiedostoa.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> saa lukea kaikkia seuraavan kansion tiedostoja. Tämä sivusto näkee kansion muutokset vain kun nykyinen välilehti on avoinna.</translation>
 <translation id="8188389033983459049">Tarkista laitteesi asetukset ja ota se käyttöön jatkaaksesi</translation>
 <translation id="8190193592390505034">Muodostetaan yhteyttä sivustoon <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Hallita sovelluksia, laajennuksia ja teemoja</translation>
@@ -4877,7 +4894,6 @@
 <translation id="833986336429795709">Valitse sovellus tämän linkin avaamista varten</translation>
 <translation id="8342861492835240085">Valitse kokoelma</translation>
 <translation id="834290227245955730">Väärä PIN-koodi. Yrityksiä jäljellä: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Videon tai animaation kuvanlaatu on paras silloin, kun käytät nopeaa yhteyttä. Jos muiden käyttäjien yhteys on hidas, he eivät välttämättä näe lähettämääsi sisältöä.</translation>
 <translation id="8351419472474436977">Välityspalvelimesi asetuksia hallinnoi tällä hetkellä tämä laajennus, joka voi muokata, haitata tai salakuunnella kaikkia verkkotoimiasi. Jos et tiedä, miksi tämä muutos tehtiin, et luultavasti halua käyttää sitä.</translation>
 <translation id="8351630282875799764">Akku ei lataudu</translation>
 <translation id="835238322900896202">Poiston aikana tapahtui virhe. Poista sovellus käyttämällä terminaalia.</translation>
@@ -4910,9 +4926,11 @@
 <translation id="839736845446313156">Rekisteröidy</translation>
 <translation id="8398877366907290961">Jatka silti</translation>
 <translation id="8400146488506985033">Hallinnoi käyttäjiä</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> saa tallentaa muutokset suoraan seuraavan kansion tiedostoihin. Tämä sivusto saa tallentaa muutokset vain kun nykyinen välilehti on avoinna.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Kysy ensin (suositus)</translation>
 <translation id="8418445294933751433">&amp;Näytä välilehtenä</translation>
+<translation id="8418905021510211421">Tämä sivu saa lukea laitteesi kansiota.</translation>
 <translation id="8419098111404128271">Hakutulokset kyselylle <ph name="SEARCH_TEXT" /></translation>
 <translation id="8419368276599091549">Tervetuloa <ph name="DEVICE_TYPE" />-käyttäjäksi!</translation>
 <translation id="8425213833346101688">Vaihda</translation>
@@ -4932,6 +4950,7 @@
 <translation id="8438566539970814960">Paranna hakuja ja selausta</translation>
 <translation id="8439506636278576865">Tarjoudu kääntämään sivuja tälle kielelle</translation>
 <translation id="8440630305826533614">Linux-sovellukset</translation>
+<translation id="844241640324986723">Kirjautumistietojesi poistaminen epäonnistui.</translation>
 <translation id="8443338615972234259">Luo valvotulle käyttäjälle uusi tili.</translation>
 <translation id="8446884382197647889">Lisätietoja</translation>
 <translation id="8447409163267621480">Lisää alkuun joko Ctrl tai Alt</translation>
@@ -4947,8 +4966,6 @@
 <translation id="8461914792118322307">Välityspalvelin</translation>
 <translation id="8463215747450521436">Hallinnoija on poistanut tämän valvotun käyttäjän käytöstä tai kokonaan. Ota yhteyttä hallinnoijaan, jos haluat edelleen kirjautua sisään tänä käyttäjänä.</translation>
 <translation id="846374874681391779">Latauspalkki</translation>
-<translation id="8463807869745732775">"&gt;
-    Suojausavaimen tallennettu kirjautumisdata</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> on poistettu käytöstä.</translation>
 <translation id="8464132254133862871">Palvelua ei voi käyttää tällä käyttäjätilillä.</translation>
 <translation id="8465252176946159372">Virheellinen</translation>
@@ -5014,6 +5031,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" /> tulostetaan</translation>
 <translation id="8569682776816196752">Kohteita ei löytynyt</translation>
 <translation id="8571213806525832805">Viimeiset neljä viikkoa</translation>
+<translation id="8573403125070227391">Chrome poisti tämän mainoksen, koska se käyttää liian paljon laitteen resursseja.</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> saa aina toistaa ääntä</translation>
 <translation id="8575286410928791436">Lopeta painamalla pitkään <ph name="KEY_EQUIVALENT" />.</translation>
 <translation id="8578639784464423491">Enimmäispituus 99 kirjainta</translation>
@@ -5037,13 +5055,13 @@
 <translation id="8609465669617005112">Siirrä ylös</translation>
 <translation id="8610103157987623234">Väärä muoto, yritä uudelleen</translation>
 <translation id="8615618338313291042">Incognito-sovellus: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Varjostus</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Roaming-tila</translation>
 <translation id="8620765578342452535">Määrittää verkkoyhteydet</translation>
 <translation id="8621866727807194849">Tietokoneellasi on haitallinen ohjelmisto. Chrome poistaa sen, palauttaa asetuksesi ja poistaa laajennukset käytöstä. Tämä saa selaimen toimimaan taas normaalisti.</translation>
 <translation id="8621979332865976405">Jaa koko näyttö</translation>
 <translation id="862542460444371744">Laaj&amp;ennukset</translation>
-<translation id="8627151598708688654">Valitse lähde</translation>
 <translation id="862727964348362408">Pysäytetty</translation>
 <translation id="862750493060684461">CSS-välimuisti</translation>
 <translation id="8627795981664801467">Vain suojatut yhteydet</translation>
@@ -5097,6 +5115,7 @@
 <translation id="8688579245973331962">Eikö nimeäsi näy?</translation>
 <translation id="8688591111840995413">Virheellinen salasana</translation>
 <translation id="8688672835843460752">Saatavilla</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;Avaa sijainti...</translation>
 <translation id="869884720829132584">Sovellusvalikko</translation>
 <translation id="869891660844655955">Vanhenemispäivämäärä</translation>
@@ -5260,6 +5279,7 @@
 <translation id="891365694296252935">Lähetä käyttö- ja diagnostiikkadataa. Laite lähettää tällä hetkellä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Dataa ei käytetä lapsesi henkilöllisyyden selvittämiseen – sen avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Omistaja on ottanut tämän asetuksen käyttöön. Jos muun verkko- ja sovellustoiminnan asetus on lapsella käytössä, tätä dataa voidaan tallentaa hänen Google-tililleen. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Ladataan ehdotusta</translation>
 <translation id="8916476537757519021">Incognito-alakehys: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – saa lukea kansioita laitteellasi</translation>
 <translation id="8919275547519617350">Kirjaudu sisään ja ota synkronointi käyttöön, niin voit käyttää salasanojasi kaikilla laitteilla.</translation>
 <translation id="8921366488406707015">Vahvistetaan suojausavainta…</translation>
 <translation id="8922013791253848639">Salli aina mainokset tällä sivustolla.</translation>
@@ -5289,7 +5309,6 @@
 <translation id="8965037249707889821">Syötä vanha salasana</translation>
 <translation id="8966870118594285808">Avaa välilehti uudelleen, jos suljit sen vahingossa</translation>
 <translation id="8967866634928501045">Näytä painamalla Alt Vaihto A</translation>
-<translation id="8970203673128054105">Näytä Cast-tilaluettelo</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Ota yhteyttä verkon järjestelmänvalvojaan ja varmista, ettei palomuuri estä latauksia Googlen palvelimilta.</translation>
 <translation id="8973557916016709913">Poista zoomaustaso</translation>
@@ -5438,6 +5457,7 @@
 <translation id="9214520840402538427">Hups! Asennus-aika-attribuuttien alustaminen on aikakatkaistu. Ota yhteyttä tukipalveluun.</translation>
 <translation id="9214695392875603905">Kuppikakku</translation>
 <translation id="9215293857209265904"><ph name="EXTENSION_NAME" /> lisätty</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> saa tallentaa muutokset suoraan seuraavaan tiedostoon. Tämä sivusto saa tallentaa muutokset vain kun nykyinen välilehti on avoinna.</translation>
 <translation id="9218430445555521422">Aseta oletusselaimeksi</translation>
 <translation id="9219103736887031265">Kuvat</translation>
 <translation id="9220525904950070496">Poista tili</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index bae0733..12942b0 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Nagkaroon ng error sa pagpapagana sa virtual machine. Pakisubukang muli.</translation>
 <translation id="1089439967362294234">Palitan ang Password</translation>
 <translation id="1090126737595388931">Walang Tumatakbong Apps sa Background</translation>
+<translation id="1090290614672149983">I-save ang mga pagbabago sa orihinal na file?</translation>
 <translation id="1090918500949388876">I-access ang iyong Assistant anumang oras na sabihin mo ang "Ok Google" kapag naka-on ang screen mo</translation>
 <translation id="1091767800771861448">Pindutin ang ESCAPE upang lumaktaw (Mga hindi opisyal na build lamang).</translation>
 <translation id="1093457606523402488">Mga Nakikitang Network:</translation>
 <translation id="1094607894174825014">Ang read o write na operation ay hiniling nang may di-wastong offset sa: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Bago mag-sign in, mangyaring pumasok bilang Bisita upang i-activate ang network <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Pinapayagan ang tab na ito na mag-save sa mga orihinal na file.</translation>
 <translation id="1103523840287552314">Palaging i-translate ang <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Huminto</translation>
 <translation id="1110155001042129815">Mag-intay</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Sunglasses</translation>
 <translation id="1151917987301063366">Palaging payagan ang <ph name="HOST" /> na i-access ang mga sensor</translation>
 <translation id="1153356358378277386">Mga nakapares na device</translation>
-<translation id="1156488781945104845">Kasalukuyang oras</translation>
 <translation id="1161575384898972166">Mangyaring mag-sign in sa <ph name="TOKEN_NAME" /> upang i-export ang certificate ng client.</translation>
 <translation id="1163931534039071049">&amp;View frame source</translation>
 <translation id="1164674268730883318">I-off ang Smart Lock para sa <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Mga setting ng Storage ng Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies at iba pang data ng site</translation>
 <translation id="127668050356036882">Isara ang lahat ng iyong window</translation>
-<translation id="1277908057200820621">Tingnan ang listahan ng device</translation>
 <translation id="1280820357415527819">Naghahanap ng mga mobile network</translation>
 <translation id="1285320974508926690">Huwag isalin kailanman ang site na ito</translation>
 <translation id="1285484354230578868">Mag-imbak ng data sa iyong Google Drive account</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Home network, hindi roaming</translation>
 <translation id="1316136264406804862">Naghahanap...</translation>
 <translation id="1316495628809031177">Naka-pause ang pag-sync</translation>
+<translation id="1317637799698924700">Gagana ang iyong istasyon ng pag-dock sa USB Type-C compatible mode.</translation>
 <translation id="1322046419516468189">Tingnan at pamahalaan ang mga naka-save na password sa iyong <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Upang makuha ang iyong mga tab mula sa iba mo pang mga device, mag-sign in sa Chrome.</translation>
 <translation id="1327074568633507428">Printer sa Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Pinaapamahalaan ang iyong <ph name="BEGIN_LINK" />browser<ph name="END_LINK" /> ng <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Magpatakbo ng mga Linux tool, editor, at IDE sa iyong <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Matuto pa&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Pumili ng isang file</translation>
+<translation id="1370749010280229230">May isyu ang display na nakakonekta sa dock</translation>
 <translation id="1371301976177520732">Makita ang iyong mga bookmark, password, history, at higit pa sa lahat ng device mo</translation>
 <translation id="1372841398847029212">I-sync sa iyong account</translation>
 <translation id="1374844444528092021">Ang certificate na kinakailangan ng network na "<ph name="NETWORK_NAME" />" ay maaaring hindi naka-install o wala nang bisa.  Mangyaring kumuha ng isang bagong certificate at subukang kumonekta muli.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Webpage, Iisang File</translation>
 <translation id="1451917004835509682">Magdagdag ng Pinapangasiwaang Tao</translation>
 <translation id="1454223536435069390">Kumuha ng screenshot</translation>
+<translation id="1458243790901188746">{0,plural, =1{Folder: <ph name="DIRECTORIES" />}one{Mga Folder: <ph name="DIRECTORIES" />}other{Mga Folder: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Mga search engine na idinagdag ng mga extension</translation>
 <translation id="146000042969587795">Ang frame na ito ay naharang dahil naglalaman ito ng ilang nilalaman na insecure.</translation>
 <translation id="146219525117638703">Estado ng ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Ipakita ang mga opsyon sa pag-input</translation>
 <translation id="1651008383952180276">Dapat mong ilagay ang katulad na passphrase nang dalawang beses</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Idagdag ang printer sa Google Cloud Print nang sa gayon ay makakapag-print ka kahit saan.}one{Idagdag ang # printer sa Google Cloud Print nang sa gayon ay makakapag-print ka kahit saan.}other{Idagdag ang # na printer sa Google Cloud Print nang sa gayon ay makakapag-print ka kahit saan.}}</translation>
+<translation id="1656528038316521561">Opacity ng background</translation>
 <translation id="1657406563541664238">Tulungan ang <ph name="PRODUCT_NAME" /> na maging mas mahusay sa pamamagitan ng awtomatikong pagpapadala ng mga istatistika ng paggamit at mga crash report sa Google</translation>
 <translation id="1658424621194652532">Ina-access ng pahinang ito ang iyong mikropono.</translation>
 <translation id="1660204651932907780">Payagan ang mga site na mag-play ng tunog (inirerekomenda)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546">Gustong tingnan ng <ph name="URL" /> ang manufacturer at modelo ng iyong Security Key</translation>
 <translation id="1679068421605151609">Mga Tool ng Developer</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Sigurado ka bang gusto mong lumabas?</translation>
 <translation id="167983332380191032">Nagpadala ang serbisyo ng pamamahala ng HTTP error.</translation>
 <translation id="1680849702532889074">Nagkaroon ng error habang ini-install ang iyong Linux application.</translation>
 <translation id="16815041330799488">Huwag payagan ang mga site na makita ang text at mga larawang kinopya sa clipboard</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Pagkakakilanlan ng Pinoprotektahang Media</translation>
 <translation id="175196451752279553">M&amp;uling buksan ang nakasarang tab</translation>
 <translation id="1753905327828125965">Most Visited</translation>
+<translation id="1755601632425835748">Laki ng text</translation>
 <translation id="1756681705074952506">Pamamaraan ng pag-input</translation>
 <translation id="1757301747492736405">Nakabinbin ang pag-uninstall</translation>
 <translation id="175772926354468439">Paganahin ang tema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Mas maliit</translation>
 <translation id="1919345977826869612">Mga Ad</translation>
 <translation id="1919814239594435008">Pinapayagan ang hindi naka-sandbox na plugin</translation>
+<translation id="1920390473494685033">Mga Contact</translation>
 <translation id="1921050530041573580">Ipares ang iyong telepono sa Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Kunin ang mga smart na feature ng Google sa <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Tab na Incognito: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Gustong i-access ng <ph name="PEPPER_PLUGIN_NAME" /> sa <ph name="PEPPER_PLUGIN_DOMAIN" /> ang iyong computer</translation>
 <translation id="2178614541317717477">CA Compromise</translation>
+<translation id="2179849162388791084">Hindi nakakuha ng data ng pag-sign in sa iyong security key.</translation>
 <translation id="218070003709087997">Gumamit ng numero upang maisaad kung gaano karaming kopya ang ipi-print (1 hanggang 999).</translation>
 <translation id="2184515124301515068">Hayaan ang Chrome na pumili kung kailan makakapag-play ng tunog ang mga site (inirerekomenda)</translation>
 <translation id="2187895286714876935">Error sa Pag-import ng Certificate ng Server</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Lahat ng data ng cookies at site</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Nakopya ang 1 item}one{Nakopya ang # item}other{Nakopya ang # na item}}</translation>
 <translation id="2278562042389100163">Magbukas ng browser window</translation>
-<translation id="2279874276457403668">Isang session lang ang magagawa sa isang pagkakataon.</translation>
 <translation id="2280486287150724112">Kanang margin</translation>
 <translation id="2282146716419988068">Proseso ng GPU</translation>
 <translation id="2282155092769082568">Autoconfiguration URL:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Awtomatikong nase-save sa <ph name="LOCK_SCREEN_APP_NAME" /> ang mga tala sa lock screen. Mananatili ang iyong pinakabagong tala sa lock screen.</translation>
 <translation id="2353297238722298836">Pinapayagan ang camera at mikropono</translation>
 <translation id="2356070529366658676">Magtanong</translation>
-<translation id="2357949918965361754">Maaari mong gamitin ang feature na ito upang magpalabas ng content mula sa Chrome sa iyong TV o sa iba pang mga device.</translation>
 <translation id="2359345697448000899">Pamahalaan ang iyong mga extension sa pamamagitan ng pag-click sa Mga Extension sa menu na Mga Tool.</translation>
 <translation id="2359808026110333948">Magpatuloy</translation>
 <translation id="236117173274098341">I-optimize</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Humihiling kaagad ang iyong organisasyon ng update sa device na ito</translation>
 <translation id="2439545803278355377">Ilagay ang bago mong PIN. Dapat ay may hindi bababa sa apat na character ang PIN, at puwede itong maglaman ng mga titik, numero, at iba pang character.</translation>
 <translation id="2440604414813129000">Tingnan s&amp;ource</translation>
+<translation id="2442916515643169563">Shadow ng text</translation>
 <translation id="2444119669991608829">Hindi <ph name="LANGUAGE" /> Ang Page ?</translation>
 <translation id="2445081178310039857">Kinakailangan ang pinagmulang direktoryo ng extension.</translation>
 <translation id="2445484935443597917">Gumawa ng Bagong Profile</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Hindi Pagkatapos</translation>
 <translation id="2739191690716947896">I-debug</translation>
 <translation id="2739240477418971307">Baguhin ang iyong mga setting ng accessibility</translation>
+<translation id="274029851662193272">Depressed</translation>
 <translation id="2740393541869613458">i-review ang mga website na binisita ng pinangangasiwaang user, at</translation>
 <translation id="2741912629735277980">Ipakita ang UI sa screen sa pag-log in</translation>
 <translation id="274290345632688601">Nire-restore ang mga app at file ng Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Mayroon nang ganitong shortcut</translation>
 <translation id="2807517655263062534">Dito lalabas ang mga file na iyong ida-download</translation>
 <translation id="2809586584051668049">at <ph name="NUMBER_ADDITIONAL_DISABLED" /> pa</translation>
+<translation id="2812049959647166806">Hindi sinusuportahan ang thunderbolt</translation>
 <translation id="2812944337881233323">Subukang mag-sign out at muling mag-sign in</translation>
 <translation id="2812989263793994277">Huwag magpakita ng anumang mga larawan</translation>
 <translation id="281390819046738856">Hindi malagdaan ang kahilingan.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Provider</translation>
 <translation id="2844169650293029770">USB-C device (port sa kaliwang bahagi sa harap)</translation>
 <translation id="2845382757467349449">Palaging Ipakita ang Bookmarks Bar</translation>
-<translation id="2847759467426165163">I-cast sa</translation>
 <translation id="284805635805850872">Alisin ang mapaminsalang software?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Nabigo ang pag-clean up</translation>
@@ -1297,6 +1305,7 @@
     Mensahe mula sa server: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Magdagdag ng Media Gallery ayon sa Direktoryo</translation>
 <translation id="2910318910161511225">Kumonekta sa isang network at subukang muli</translation>
+<translation id="2910518940971897750">I-save sa orihinal na file</translation>
 <translation id="2913331724188855103">Payagan ang mga site na mag-save at magbasa ng data ng cookie (inirerekomenda)</translation>
 <translation id="2915102088417824677">Tingnan ang log ng aktibidad</translation>
 <translation id="2915873080513663243">Awtomatikong Pag-scan</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Mga MIDI device</translation>
 <translation id="3015639418649705390">Ilunsad muli ngayon</translation>
 <translation id="3016329696181678353">Hindi ma-configure nang awtomatiko ang <ph name="PRINTER_NAME" />. Pakitukoy ang mga advanced na detalye ng printer.</translation>
+<translation id="3016381065346027039">Walang entry sa log</translation>
 <translation id="3016641847947582299">Na-update ang bahagi</translation>
 <translation id="3016780570757425217">Alamin ang iyong lokasyon</translation>
 <translation id="3017079585324758401">Background</translation>
 <translation id="3020183492814296499">Mga Shortcut</translation>
 <translation id="3020990233660977256">Serial Number: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Paruparo</translation>
+<translation id="3021408157810018664">I-save ang mga pagbabago sa mga orihinal na file?</translation>
 <translation id="3021426244864538700">Nakaka-access sa data ng site na ito</translation>
 <translation id="3021678814754966447">&amp;Tingnan ang Pinagmulan ng Frame</translation>
 <translation id="3022978424994383087">Hindi iyon nakuha.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Maaari mo ring laktawan ang pag-sign in at <ph name="LINK_START" />mag-browse bilang Bisita<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Ina-access ng isang site ang input ng video</translation>
 <translation id="3177909033752230686">Wika ng Page:</translation>
+<translation id="3179982752812949580">Font ng text</translation>
 <translation id="3181954750937456830">Ligtas na Pag-browse (pinoprotektahan ka at ang iyong device mula sa mga mapanganib na site)</translation>
 <translation id="3182749001423093222">Pang-check ng pagbabaybay</translation>
 <translation id="3183139917765991655">Pang-import ng Profile</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Buksan bilang window</translation>
 <translation id="3278001907972365362">Nangangailangan ng pansin ang iyong (mga) Google Account</translation>
 <translation id="3279230909244266691">Maaaring abutin nang ilang minuto ang prosesong ito. Sinisimulan ang virtual machine.</translation>
-<translation id="3279741024917655738">Ipakita ang mga fullscreen video sa</translation>
 <translation id="3280237271814976245">I-save &amp;bilang...</translation>
 <translation id="3280243678470289153">Manatili sa Chrome</translation>
 <translation id="3281892622610078515">Mga file at program na iku-quarantine:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Walang nakitang resulta ng paghahanap</translation>
 <translation id="3305389145870741612">Maaaring tumagal nang ilang segundo ang proseso ng pag-format. Mangyaring maghintay.</translation>
 <translation id="3305661444342691068">Buksan ang PDF sa Preview</translation>
-<translation id="3306684685104080068">I-enable ang pagka-cast sa mga cloud-based na serbisyo gaya ng Google Hangouts.</translation>
+<translation id="3307871847038842490">Pinapayagan ang page na ito na mag-save sa mga orihinal na file.</translation>
 <translation id="3308006649705061278">Organizational Unit (OU)</translation>
 <translation id="3308116878371095290">Naharangan ang pahinang ito mula sa pagtatakda ng cookies.</translation>
 <translation id="3308134619352333507">Itago ang Button</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Kanselahin ang pag-setup ng account?</translation>
 <translation id="3464012987031883895">Ina-access ng isang site ang input ng audio</translation>
 <translation id="346431825526753">Isa itong account para sa mga bata na pinamamahalaan ni <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Mag-stream ng file na video o audio</translation>
 <translation id="3468999815377931311">Android phone</translation>
 <translation id="3470442499439619530">Alisin ang User na Ito</translation>
 <translation id="3473479545200714844">Screen magnifier</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Zoom Out</translation>
 <translation id="3497560059572256875">Ibahagi ang Doodle</translation>
 <translation id="3505030558724226696">Bawiin ang access sa device</translation>
+<translation id="3505635633742443645">Hindi magagamit ang HDMI port ng iyong dock kapag ginagamit ang USB Type-C port para sa video output. Gumamit ng ibang port para sa isa sa mga display.</translation>
 <translation id="3507421388498836150">Mga Kasalukuyang Pahintulot para sa "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Muling mag-scan ng mga Bluetooth device</translation>
 <translation id="3508920295779105875">Pumili ng Isa Pang Folder...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Matagumpay na na-install</translation>
 <translation id="3578594933904494462">Ibinabahagi ang nilalaman ng tab na ito.</translation>
 <translation id="357886715122934472">Gustong magbahagi ng &lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; ng printer na &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; sa isang pangkat na pagmamay-ari mo: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Kung tatanggapin mo, makakapag-print ang lahat ng miyembro ng pangkat sa printer.</translation>
+<translation id="357889014807611375">nakametrong Wi-Fi</translation>
 <translation id="3584169441612580296">Basahin at baguhin ang mga larawan, musika at iba pang media sa iyong computer</translation>
 <translation id="3587482841069643663">Lahat</translation>
 <translation id="358796204584394954">I-type ang code na ito sa "<ph name="DEVICE_NAME" />" upang ipares:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Ilagay</translation>
 <translation id="3593965109698325041">Mga Limitasyon sa Pangalan ng Certificate</translation>
 <translation id="3596235046596950091">I-enable ang mga serbisyo sa cloud</translation>
+<translation id="3599221874935822507">Raised</translation>
 <translation id="3599863153486145794">Kini-clear ang history sa lahat ng naka-sign in na device. Maaaring may iba pang anyo ng history ng pag-browse ang iyong Google Account sa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Impormasyon ng kahilingan sa web</translation>
 <translation id="3600792891314830896">I-mute ang mga site na nagpe-play ng tunog</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Na-download ng &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Ipakita ang <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Buksan sa bagong tab</translation>
+<translation id="3615073365085224194">Pindutin ang sensor para sa fingerprint gamit ang iyong daliri</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;I-clear ang Data sa Pag-browse...</translation>
 <translation id="3617891479562106823">Hindi available ang mga background. Subukang muli sa ibang pagkakataon.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Homepage</translation>
 <translation id="3720996970802414353">Lumipat pa rin</translation>
 <translation id="3722108462506185496">Nagkaroon ng error sa pagpapagana ng serbisyo ng virtual machine. Pakisubukang muli.</translation>
-<translation id="3723158278575423087">Welcome sa karanasan sa Cast sa Chromium!</translation>
 <translation id="3725367690636977613">mga pahina</translation>
 <translation id="3726137731714254362">Kung mag-aalis ng mga folder dito, mahihinto ang pagbabahagi ng mga file ngunit hindi made-delete ang mga ito.</translation>
 <translation id="3727148787322499904">Maaapektuhan ang lahat ng nakabahaging network kung babaguhin ang setting na ito</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Detalyadong impormasyon ng build</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Kumonekta sa isang USB device}one{Kumonekta sa # USB device}other{Kumonekta sa # na USB device}}</translation>
 <translation id="3765246971671567135">Hindi ma-read ang patakaran ng offline na demo mode.</translation>
-<translation id="3766223500670287046">Malayong screen</translation>
 <translation id="3768037234834996183">Nagsi-sync ng iyong mga kagustuhan...</translation>
 <translation id="377050016711188788">Icecream</translation>
 <translation id="3771294271822695279">Mga Video File</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Iangat, pagkatapos ay pindutin muli</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Na-pause ang pag-sync</translation>
-<translation id="3862134173397075045">Welcome sa karanasan sa Cast sa Chrome!</translation>
 <translation id="3862693525629180217">I-verify sa pamamagitan ng built-in na sensor</translation>
 <translation id="3862788408946266506">Naka-install dapat sa kiosk mode ng Chrome OS ang app na may 'kiosk_only' na manifest attribute</translation>
 <translation id="3865414814144988605">Resolution</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Binago ang telepono ng Smart Lock</translation>
 <translation id="3927932062596804919">Tanggihan</translation>
 <translation id="3930737994424905957">Naghahanap ng mga device</translation>
+<translation id="3930968231047618417">Kulay ng background</translation>
 <translation id="3933283459331715412">I-restore ang na-delete na password para sa <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Buksan ang audio sa bagong tab</translation>
 <translation id="3936925983113350642">Kakailanganin ang pipiliin mong password upang ma-restore ang certificate na ito sa ibang pagkakataon. Pakitala ito sa isang ligtas na lokasyon.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Nag-import mula sa IE</translation>
 <translation id="3950820424414687140">Mag-sign in</translation>
+<translation id="3950828138786918475">Pinapayagan ang tab na ito na magbasa ng folder sa iyong device.</translation>
 <translation id="3954354850384043518">Kasalukuyang isinasagawa</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">Wala kang kamakailang nakuhang log ng event ng WebRTC.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Kinakalkula...</translation>
 <translation id="3975565978598857337">Hindi nagawang makipag-ugnayan sa server para sa realm</translation>
 <translation id="397703832102027365">Tinatapos...</translation>
+<translation id="3977886311744775419">Hindi nada-download ang mga awtomatikong update sa ganitong uri ng network, pero puwede kang tumingin ng mga update nang manual.</translation>
 <translation id="3979395879372752341">Nagdagdag ng bagong extension (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Paganahin ang <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Di-wastong uri ng pag-save ang ipinasok.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Paganahin ang tap-to-click</translation>
 <translation id="4195643157523330669">Buksan sa bagong tab</translation>
 <translation id="4195814663415092787">Magpatuloy kung saan ka tumigil</translation>
+<translation id="4197940474316761015">Puwedeng i-save ng <ph name="ORIGIN" /> ang iyong mga pagbabago nang direkta sa mga sumusunod na file. Makakapag-save lang ang site na ito ng mga pagbabago habang nakabukas ang tab na ito.</translation>
 <translation id="4198146608511578238">I-hold lang ang icon ng Launcher upang kausapin ang iyong Google Assistant.</translation>
 <translation id="4200689466366162458">Mga custom na salita</translation>
 <translation id="4200983522494130825">Bagong &amp;tab</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Awtomatikong kumonekta sa cellular network</translation>
 <translation id="4268025649754414643">Pag-encipher ng Key</translation>
 <translation id="4270393598798225102">Bersyon <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Walang mga pagtutugma</translation>
 <translation id="4275663329226226506">Media</translation>
 <translation id="4275830172053184480">I-restart ang iyong device</translation>
 <translation id="4278101229438943600">Handa na ang iyong Assistant</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Oras ng CPU</translation>
 <translation id="4534661889221639075">Subukang muli.</translation>
 <translation id="4535127706710932914">Default na Profile</translation>
+<translation id="4535767533210902251">Ang sensor para sa fingerprint ay ang key sa kanang bahagi sa itaas ng iyong keyboard. Pindutin ito nang magaan gamit ang alinmang daliri.</translation>
 <translation id="4538684596480161368">Laging i-block ang mga hindi naka-sandbox na plugin sa <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Na-install ng patakaran ng enterprise.</translation>
 <translation id="4542520061254486227">Basahin ang iyong data sa <ph name="WEBSITE_1" /> at <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Higit pa...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Magpares ng Bluetooth device</translation>
+<translation id="4578012756826807359">Matagumpay na na-delete ang iyong data ng pag-sign in.</translation>
 <translation id="4579581181964204535">Hindi ma-cast ang <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Error habang nire-restore ang Linux</translation>
 <translation id="4582563038311694664">I-reset lahat ng setting</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Iki-clear ang cookies mula sa maraming site sa paglabas.</translation>
 <translation id="4765582662863429759">Binibigyang-daan ang Android Messages na mag-relay ng mga text mula sa iyong telepono papunta sa Chromebook mo</translation>
 <translation id="4768332406694066911">Mayroon kang mga certificate mula sa mga organisasyong ito na tutukoy sa iyo</translation>
-<translation id="4772404146526168240">Parehong screen</translation>
 <translation id="4776146737004271126">Buksan ang mga setting ng Android</translation>
 <translation id="4776917500594043016">Password para sa <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Mag-sign in upang makuha ang iyong mga bookmark, history, password at iba pang mga setting sa lahat ng iyong device. Awtomatiko ka ring masa-sign in sa iyong mga serbisyo ng Google.</translation>
 <translation id="4929386379796360314">Mga Destinasyon sa Pag-print</translation>
 <translation id="4930714375720679147">I-on</translation>
-<translation id="4931132176527519925">Palaging gumamit ng pag-mirror</translation>
 <translation id="4932733599132424254">Petsa</translation>
 <translation id="4933484234309072027">naka-embed sa <ph name="URL" /></translation>
 <translation id="493571969993549666">Magdagdag ng pinapangasiwaang user</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">I-unmute</translation>
 <translation id="4992458225095111526">Kumpirmahin ang Powerwash</translation>
 <translation id="4992473555164495036">Nilimitahan ng iyong administrator ang mga available na pamamaraan ng pag-input.</translation>
+<translation id="4992866843815555470">Kailangang ayusin ang mga pangangailangan ng iyong dock. Magsa-shut down ang iyong dock kapag walang gumaganang fan.</translation>
 <translation id="4992926179187649719">I-on ang 'Ok Google'</translation>
 <translation id="4994474651455208930">Payagan ang mga site na humiling na maging mga default na handler para sa mga protocol</translation>
 <translation id="4994754230098574403">Sine-set up</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">ID ng proseso</translation>
 <translation id="5233638681132016545">Bagong tab</translation>
 <translation id="5233736638227740678">I-&amp;paste</translation>
-<translation id="5234764350956374838">Balewalain</translation>
 <translation id="5235050375939235066">I-uninstall ang app?</translation>
 <translation id="5235750401727657667">Palitan ang page na nakikita mo kapag nagbubukas ng bagong tab</translation>
 <translation id="5238278114306905396">Awtomatikong inalis ang app na "<ph name="EXTENSION_NAME" />."</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Inirerekomenda ng Google ang Chrome</translation>
 <translation id="532247166573571973">Maaaring hindi makakonekta sa server. Subukang muli sa ibang pagkakataon.</translation>
 <translation id="5324780743567488672">Awtomatikong itakda ang time zone gamit ang iyong lokasyon</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - pinapayagang mag-save sa mga orihinal na file</translation>
 <translation id="5327248766486351172">Pangalan</translation>
 <translation id="5327570636534774768">Minarkahan ang device na ito para mapamahalaan ng ibang domain. I-deprovision ito mula sa domain na iyon bago i-set up ang demo mode.</translation>
 <translation id="532943162177641444">I-tap ang notification sa iyong <ph name="PHONE_NAME" /> upang i-set up ang mobile hotspot na magagamit ng device na ito.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985">Gusto ng <ph name="SITE_NAME" /> na</translation>
 <translation id="5534304873398226603">I-discard ang larawan o video</translation>
 <translation id="5535941515421698170">Alisin din ang iyong kasalukuyang data sa device na ito</translation>
-<translation id="5537725057119320332">I-cast</translation>
 <translation id="5539221284352502426">Tinanggihan ng server ang password na inilagay mo. Kabilang sa mga posibleng dahilan: Masyadong maikli ang password. Dapat may mga numero o simbolo ang password. Dapat naiiba ang password sa mga nakaraang password.</translation>
 <translation id="5541687815721799001">Gamitin ang app</translation>
 <translation id="5542132724887566711">Profile</translation>
@@ -3110,7 +3124,7 @@
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Itakda ang Chrome bilang iyong default na browser</translation>
 <translation id="5711983031544731014">Hindi mai-unlock. Ilagay ang iyong password.</translation>
-<translation id="5713723565110096165">Mali ang PIN. Natitirang muling pagsubok: <ph name="RETRIES" />.</translation>
+<translation id="5713723565110096165">Mali ang PIN. Natitirang pag-retry: <ph name="RETRIES" />.</translation>
 <translation id="5715711091495208045">Broker ng plugin: <ph name="PLUGIN_NAME" /></translation>
 <translation id="5719603411793408026">Mga default na search engine</translation>
 <translation id="5720705177508910913">Kasalukuyang user</translation>
@@ -3300,14 +3314,13 @@
 <translation id="5997337190805127100">Matuto pa Tungkol sa Access sa Site</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> (na) resulta para sa '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="6002458620803359783">Mga Gustong Boses</translation>
-<translation id="6005695835120147974">Router para sa Media</translation>
 <translation id="6006484371116297560">Classic</translation>
 <translation id="6007240208646052708">Hindi available sa iyong wika ang paghahanap gamit ang boses.</translation>
 <translation id="6009781704028455063">Built-in na sensor</translation>
 <translation id="6010869025736512584">Ina-access ang input ng video</translation>
 <translation id="6011193465932186973">Fingerprint</translation>
 <translation id="6011449291337289699">I-clear ang data ng site</translation>
-<translation id="6015266928248016057">Di-wasto ang PUK. Natitirang muling pagsubok: <ph name="RETRIES" />.</translation>
+<translation id="6015266928248016057">Di-wasto ang PUK. Natitirang pag-retry: <ph name="RETRIES" />.</translation>
 <translation id="6015796118275082299">Taon</translation>
 <translation id="6016551720757758985">Kumpirmahin ang Powerwash na maaaring bumalik sa dating bersyon</translation>
 <translation id="6016972670657536680">Button ng pumili ng wika at keyboard. Ang kasalukuyang napiling wika ay <ph name="LANGUAGE" />.</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Bagong printer sa iyong network}one{Mga bagong printer sa iyong network}other{Mga bagong printer sa iyong network}}</translation>
 <translation id="6286708577777130801">Mga naka-save na detalye ng password</translation>
 <translation id="6289452883081499048">Mga naka-personalize na serbisyo ng Google gaya ng Play</translation>
-<translation id="6290556621549272952">Magagamit mo ang feature na ito upang ipakita ang content mula sa Chromium sa iyong TV o iba pang mga device.</translation>
 <translation id="6291949900244949761">Magtanong kapag gusto ng isang site na i-access ang mga USB device (inirerekomenda)</translation>
 <translation id="6291953229176937411">&amp;Show in Finder</translation>
 <translation id="6295158916970320988">Lahat ng site</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Ipadala ang <ph name="BEGIN_LINK1" />impormasyon ng system<ph name="END_LINK1" /> at <ph name="BEGIN_LINK2" />mga sukatan<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">I-block ang mga site sa paggamit ng mga sensor ng paggalaw</translation>
 <translation id="6397094776139756010">Mga opsyon sa pag-sync at pag-personalize</translation>
+<translation id="6397449385184089588">Makakapag-save ang <ph name="ORIGIN" /> ng iyong mga pagbabago nang direkta sa mga file sa sumusunod na folder. Makakapag-save lang ang site na ito ng mga pagbabago habang nakabukas ang tab na ito.</translation>
 <translation id="6398715114293939307">Alisin ang Google Play Store</translation>
 <translation id="6398765197997659313">Lumabas sa buong screen</translation>
 <translation id="6399774419735315745">Espiya</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">Sa mga partikular na site</translation>
 <translation id="6455894534188563617">&amp;Bagong Folder</translation>
 <translation id="6456394469623773452">Maayos</translation>
+<translation id="6456955391422100996">Inalis ang ad.</translation>
 <translation id="645705751491738698">Magpatuloy sa pagharang ng JavaScript</translation>
 <translation id="6458701200018867744">Hindi na-upload (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Use Selection for Find</translation>
 <translation id="6459799433792303855">Inilipat ang aktibong window sa ibang display.</translation>
 <translation id="6460601847208524483">Find Next</translation>
+<translation id="6461170143930046705">Naghahanap ng mga network...</translation>
 <translation id="6463795194797719782">&amp;Mag-edit</translation>
 <translation id="6466988389784393586">&amp;Buksan Ang Lahat ng Bookmark</translation>
 <translation id="6467304607960172345">I-optimize ang mga fullscreen na video</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Nakakonekta ka sa isang <ph name="NETWORK_TYPE" /> network.</translation>
 <translation id="6527303717912515753">Ibahagi</translation>
 <translation id="6528513914570774834">Payagan ang iba pang user ng device na ito na gamitin ang network na ito</translation>
 <translation id="652948702951888897">History sa Chrome</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">I-rate</translation>
 <translation id="6681668084120808868">Kumuha ng larawan</translation>
 <translation id="6681964764822470072">Ia-uninstall ang "<ph name="APP_NAME" />."</translation>
-<translation id="6685083257944113180">Ihinto, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Buksan ang Google Play</translation>
 <translation id="6686490380836145850">Isara ang mga tab sa kanan</translation>
 <translation id="6686817083349815241">I-save ang iyong password</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Buksan ang naka-maximize</translation>
 <translation id="6845325883481699275">Tulungang paigtingin ang seguridad ng Chrome</translation>
 <translation id="6848388270925200958">Sa ngayon, mayroon kang ilang card na magagamit lang sa device na ito</translation>
+<translation id="6850286078059909152">Kulay ng text</translation>
 <translation id="6851497530878285708">Naka-enable ang App</translation>
 <translation id="6853388645642883916">Naka-sleep ang updater</translation>
 <translation id="68541483639528434">Isara ang ibang mga tab</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Mag-scroll / Mag-click</translation>
 <translation id="6923633482430812883">Nagkaroon ng error sa pag-mount ng pagbabahagi. Pakitingnan kung sumusuporta sa SMBv2 o mas bago ang file server kung saan ka kumokonekta.</translation>
 <translation id="6930036377490597025">External na security key o built-in na sensor</translation>
-<translation id="6930242544192836755">Tagal</translation>
 <translation id="693807610556624488">Ang write na operation ay lampas sa maximum na haba ng attribute sa: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Mangyaring mag-sign in sa <ph name="TOKEN_NAME" /> upang magpatunay sa <ph name="HOST_NAME" /> gamit ang iyong certificate.</translation>
 <translation id="6943176775188458830">Kanselahin ang pag-print</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Mga Tagapangasiwa ng Pagbabayad</translation>
 <translation id="6951663584153258142">Hinihiling ng iyong organisasyon na i-update mo ang device na ito</translation>
 <translation id="6953878494808481632">Nauugnay na impormasyon</translation>
+<translation id="6953916367503892689">{0,plural, =1{File: <ph name="FILES" />}one{Mga File: <ph name="FILES" />}other{Mga File: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Siyasatin ang Popup</translation>
 <translation id="6957044667612803194">Hindi sinusuportahan ng security key na ito ang mga PIN</translation>
 <translation id="6957231940976260713">Pangalan ng serbisyo</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Hindi Maisalin Ang Page na Ito.</translation>
 <translation id="7254951428499890870">Sigurado ka bang gusto mong ilunsad ang "<ph name="APP_NAME" />" sa diagnostic mode?</translation>
 <translation id="7255002516883565667">Sa ngayon, may isa kang card na magagamit lang sa device na ito</translation>
-<translation id="7255220508626648026">Nagka-cast: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Pinduting muli ang iyong security key para kumpirmahin ang pag-reset. Buburahin ang lahat ng impormasyong naka-store sa security key, kabilang ang PIN nito.</translation>
 <translation id="7255935316994522020">Ilapat</translation>
 <translation id="7256069762010468647">Ginagamit ng site ang iyong camera</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Buksan ang Lokasyon...</translation>
 <translation id="7458168200501453431">Ginagamit ang parehong spell checker na ginagamit sa paghahanap sa Google. Ipapadala sa Google ang text na tina-type mo.</translation>
+<translation id="7460045493116006516">Kasalukuyang temang na-install mo</translation>
 <translation id="7461924472993315131">I-pin</translation>
 <translation id="746216226901520237">Sa susunod, ia-unlock ng iyong telepono ang <ph name="DEVICE_TYPE" /> mo. Puwede mong i-off ang Smart Lock sa Mga Setting.</translation>
 <translation id="7463006580194749499">Magdagdag ng tao</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Bagong Tab</translation>
 <translation id="7556033326131260574">Hindi na-verify ng Smart Lock ang iyong account. I-type ang iyong password upang makapasok.</translation>
 <translation id="7556242789364317684">Sa kasamaang palad, hindi mabawi ng <ph name="SHORT_PRODUCT_NAME" /> ang iyong mga setting. Upang maayos ang error, dapat i-reset ng <ph name="SHORT_PRODUCT_NAME" /> ang iyong device gamit ang Powerwash.</translation>
+<translation id="7559444627302317199">Pakisuri ang iyong koneksyon ng network at subukang muli.</translation>
 <translation id="7559719679815339381">Mangyaring maghintay....kasalukuyang ina-update ang Kiosk app. Huwag alisin ang USB stick.</translation>
 <translation id="7561196759112975576">Palagi</translation>
 <translation id="7563991800558061108">Upang makabawi sa error na ito, kakailanganin mong mag-sign in sa iyong Google Account
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Doblehin</translation>
 <translation id="7887864092952184874">Naipares ang bluetooth mouse</translation>
 <translation id="7889565820482017512">Laki ng Display</translation>
-<translation id="7889966925761734854">Maghanap</translation>
 <translation id="7893008570150657497">Ma-access ang mga larawan, musika, at iba pang media mula sa iyong computer</translation>
 <translation id="7893153962594818789">Naka-off ang Bluetooth sa <ph name="DEVICE_TYPE" /> na ito. Ilagay ang iyong password, at i-on ang Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Default)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Panatilihin sa toolbar</translation>
 <translation id="7898725031477653577">Palaging i-translate</translation>
 <translation id="790040513076446191">Manipulahin ang mga setting kaugnay ng privacy</translation>
-<translation id="7902874111237641165">Smooth Motion [beta]</translation>
 <translation id="7903345046358933331">Hindi na tumutugon ang page. Maaari mong hintaying tumugon ito o isara ito.</translation>
 <translation id="7903742244674067440">Mayroon kang mga certificate sa file na tutukoy sa mga certificate authority na ito</translation>
 <translation id="7903925330883316394">Utility: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">Basahin ang lahat ng binigkas na text gamit ang naka-synthesize na pagsasalita</translation>
 <translation id="8037357227543935929">Magtanong (default)</translation>
 <translation id="803771048473350947">File</translation>
+<translation id="8042142357103597104">Opacity ng text</translation>
 <translation id="8044899503464538266">Mabagal</translation>
 <translation id="8045253504249021590">Inihinto ang pag-sync sa pamamagitan ng Google Dashboard.</translation>
 <translation id="8045923671629973368">Maglagay ng application ID o URL ng webstore</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Maaari mong i-off ang serbisyong ito sa Mga Setting.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Hindi nagtutugma ang mga PIN</translation>
 <translation id="809792523045608178">Gumagamit ang <ph name="IDS_SHORT_PRODUCT_NAME" /> ng mga setting ng proxy mula sa isang extension</translation>
-<translation id="8099495042588009598">Higit pang pahintulot</translation>
 <translation id="8101987792947961127">Kinakailangan ng Powerwash sa susunod na reboot</translation>
 <translation id="8102159139658438129">Pumunta sa <ph name="LINK_BEGIN" />Mga Setting<ph name="LINK_END" /> para makakita ng mga opsyon para sa iyong nakakonektang telepono</translation>
 <translation id="8104696615244072556">I-powerwash ang iyong <ph name="IDS_SHORT_PRODUCT_NAME" /> device at ibalik sa dating bersyon.</translation>
@@ -4773,8 +4788,10 @@
     Sa palagay ko, hindi dapat i-block ang site na ito!</translation>
 <translation id="8184288427634747179">Lumipat sa <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Higit pang impormasyon</translation>
+<translation id="8184472985242519288">Magkapareho</translation>
 <translation id="8185331656081929126">Magpakita ng mga notification kapag may nakitang mga bagong printer sa network</translation>
 <translation id="8186609076106987817">Hindi makita ng server ang file.</translation>
+<translation id="8187950680397073878">Mababasa ng <ph name="ORIGIN" /> ang lahat ng file sa sumusunod na folder. Makakapag-save lang ang site na ito ng mga pagbabago sa folder habang nakabukas ang tab na ito.</translation>
 <translation id="8188389033983459049">Suriin ang mga setting ng iyong device at i-on ito para magpatuloy</translation>
 <translation id="8190193592390505034">Kumukonekta sa <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Pamahalaan ang iyong apps, mga extension, at tema</translation>
@@ -4877,8 +4894,7 @@
 <translation id="8339059274628563283">Lokal na naka-store na data ng <ph name="SITE" /></translation>
 <translation id="833986336429795709">Para buksan ang link na ito, pumili ng app</translation>
 <translation id="8342861492835240085">Pumili ng koleksyon</translation>
-<translation id="834290227245955730">Di-wasto ang PIN. Natitirang muling pagsubok: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Gumamit ng mataas na bandwidth para sa pinakamagandang video o animation. Maaaring hindi makita ng ibang taong may mababagal na koneksyon sa internet ang iyong content.</translation>
+<translation id="834290227245955730">Di-wasto ang PIN. Natitirang pag-retry: <ph name="RETRIES" />.</translation>
 <translation id="8351419472474436977">Kinokontrol na ng extension na ito ang iyong mga setting ng proxy, na nangangahulugang maaari nitong baguhin, sirain o alamin ang anumang bagay na gagawin mo online. Kung hindi ka sigurado kung bakit naganap ang pagbabagong ito, malamang na hindi mo ito ginustong mangyari.</translation>
 <translation id="8351630282875799764">Hindi nagcha-charge ang baterya</translation>
 <translation id="835238322900896202">Nagka-error habang nag-a-uninstall. Mag-uninstall sa pamamagitan ng Terminal.</translation>
@@ -4911,9 +4927,11 @@
 <translation id="839736845446313156">Magparehistro</translation>
 <translation id="8398877366907290961">Magpatuloy</translation>
 <translation id="8400146488506985033">Pamahalaan ang mga tao</translation>
+<translation id="8400444932218572097">Puwedeng i-save ng <ph name="ORIGIN" /> ang iyong mga pagbabago nang direkta sa mga file sa sumusunod na folder. Makakapag-save lang ang site na ito ng mga pagbabago habang nakabukas ang tab na ito.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Magtanong muna (inirerekomenda)</translation>
 <translation id="8418445294933751433">&amp;Ipakita bilang tab</translation>
+<translation id="8418905021510211421">Pinapayagan ang page na ito na magbasa ng folder sa iyong device.</translation>
 <translation id="8419098111404128271">Mga resulta ng paghahanap para sa '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="8419368276599091549">Welcome sa iyong <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Baguhin</translation>
@@ -4934,6 +4952,7 @@
 <translation id="8439506636278576865">Mag-alok na magsalin ng mga page sa wikang ito
 </translation>
 <translation id="8440630305826533614">Mga Linux app</translation>
+<translation id="844241640324986723">Hindi na-delete ang iyong data ng pag-sign in.</translation>
 <translation id="8443338615972234259">Gumawa ng bagong account para sa iyong pinangangasiwaang user ngayon.</translation>
 <translation id="8446884382197647889">Matuto Pa</translation>
 <translation id="8447409163267621480">Isama ang Ctrl o Alt</translation>
@@ -4949,8 +4968,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Maaaring tinanggal o na-disable na ng tagapamahala ang pinangangasiwaang user na ito. Mangyaring makipag-ugnay sa tagapamahala kung gusto mong patuloy na mag-sign in bilang ang user na ito.</translation>
 <translation id="846374874681391779">Bar ng mga download</translation>
-<translation id="8463807869745732775">"&gt;
-    Na-store ang data ng pag-sign in ng security key</translation>
 <translation id="8463955938112983119">Na-disable ang <ph name="PLUGIN_NAME" />.</translation>
 <translation id="8464132254133862871">Hindi karapat-dapat para sa serbisyo ang user account na ito.</translation>
 <translation id="8465252176946159372">Hindi wasto</translation>
@@ -4975,7 +4992,7 @@
 <translation id="8497219075884839166">Mga Utility ng Windows</translation>
 <translation id="8498214519255567734">Pinapadali nitong tumingin sa iyong screen o magbasa sa dilim</translation>
 <translation id="8498395510292172881">Ipagpatuloy ang pagbabasa sa Chrome</translation>
-<translation id="8500234928660943538">Mali ang PUK. Natitirang muling pagsubok: <ph name="RETRIES" />.</translation>
+<translation id="8500234928660943538">Mali ang PUK. Natitirang pag-retry: <ph name="RETRIES" />.</translation>
 <translation id="8502536196501630039">Para magamit ang mga app mula sa Google Play, dapat mo munang i-restore ang iyong mga app. Maaaring mawala ang ilang data.</translation>
 <translation id="8503813439785031346">Username</translation>
 <translation id="850875081535031620">Walang nahanap na mapaminsalang software</translation>
@@ -5016,6 +5033,7 @@
 <translation id="8569002732135253578">Pini-print ngayon ang <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Walang nahanap na mga destinasyon</translation>
 <translation id="8571213806525832805">Huling 4 na linggo</translation>
+<translation id="8573403125070227391">Gumagamit ang ad na ito ng masyadong maraming resource para sa iyong device kaya inalis ito ng Chrome.</translation>
 <translation id="8574990355410201600">Palaging payagan ang tunog sa <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Pindutin nang matagal ang <ph name="KEY_EQUIVALENT" /> para Umalis.</translation>
 <translation id="8578639784464423491">Hindi maaaring lumagpas sa 99 na titik</translation>
@@ -5039,13 +5057,13 @@
 <translation id="8609465669617005112">Lumipat</translation>
 <translation id="8610103157987623234">Hindi wastong format, pakisubukang muli</translation>
 <translation id="8615618338313291042">Incognito App: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Drop shadow</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Status ng roaming</translation>
 <translation id="8620765578342452535">I-configure ang mga koneksyon sa network</translation>
 <translation id="8621866727807194849">May mapaminsalang software sa iyong computer. Aalisin ito ng Chrome, ire-restore ang iyong mga setting, at idi-disable ang mga extension. Muli nitong papaganahin nang normal ang iyong browser.</translation>
 <translation id="8621979332865976405">Ibahagi ang iyong buong screen</translation>
 <translation id="862542460444371744">&amp;Mga Extension</translation>
-<translation id="8627151598708688654">Pumili ng pinagmulan</translation>
 <translation id="862727964348362408">Sinuspinde</translation>
 <translation id="862750493060684461">CSS cache</translation>
 <translation id="8627795981664801467">Secure na mga koneksyon lamang</translation>
@@ -5099,6 +5117,7 @@
 <translation id="8688579245973331962">Hindi makita ang iyong pangalan?</translation>
 <translation id="8688591111840995413">Hindi magandang password</translation>
 <translation id="8688672835843460752">Available</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Buksan ang &amp;Lokasyon...</translation>
 <translation id="869884720829132584">Menu ng mga application</translation>
 <translation id="869891660844655955">Expiration date</translation>
@@ -5263,6 +5282,7 @@
 <translation id="891365694296252935">Magpadala ng data ng paggamit at diagnostic na data. Sa kasalukuyan, ang device na ito ay awtomatikong nagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Hindi ito gagamitin para tukuyin ang pagkakakilanlan ng iyong anak, at makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Ipinapatupad ng may-ari ang setting na ito. Kung naka-on ang karagdagang Aktibidad sa Web at App para sa iyong anak, maaaring ma-save ang data na ito sa kanyang Google Account. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Nilo-load ang suhestiyon</translation>
 <translation id="8916476537757519021">Incognito na Subframe: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - pinapayagang magbasa ng folder sa iyong device</translation>
 <translation id="8919275547519617350">Para mailagay ang lahat ng iyong password sa lahat ng device mo, mag-sign in at i-on ang pag-sync.</translation>
 <translation id="8921366488406707015">Vine-verify ang iyong security key...</translation>
 <translation id="8922013791253848639">Palaging payagan ang mga ad sa site na ito</translation>
@@ -5292,7 +5312,6 @@
 <translation id="8965037249707889821">Ilagay ang lumang password</translation>
 <translation id="8966870118594285808">Muling magbukas ng tab kung naisara mo ito nang hindi sinasadya</translation>
 <translation id="8967866634928501045">Pindutin ang Alt Shift A upang ipakita</translation>
-<translation id="8970203673128054105">Tingnan ang listahan ng cast mode</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Pakisuri sa administrator ng iyong network upang matiyak na hindi bina-block ng firewall ang mga pag-download mula sa mga server ng Google.</translation>
 <translation id="8973557916016709913">Mag-alis ng antas ng zoom</translation>
@@ -5441,6 +5460,7 @@
 <translation id="9214520840402538427">Oops!  Nag-time out ang pagpapasimula sa mga katangian ng pag-install at panahon.  Mangyaring makipag-ugnay sa iyong kinatawan ng suporta.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">Idinagdag ang "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="9216712190298404438">Makakapag-save ang <ph name="ORIGIN" /> ng iyong mga pagbabago nang direkta sa sumusunod na file. Makakapag-save lang ang site na ito ng mga pagbabago habang nakabukas ang tab na ito.</translation>
 <translation id="9218430445555521422">Itakda bilang default</translation>
 <translation id="9219103736887031265">Mga Larawan</translation>
 <translation id="9220525904950070496">Alisin ang account</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 47ecac7f..490b6b5a 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Impossible de démarrer la machine virtuelle. Veuillez réessayer.</translation>
 <translation id="1089439967362294234">Modifier le mot de passe</translation>
 <translation id="1090126737595388931">Aucune application active en arrière plan</translation>
+<translation id="1090290614672149983">Enregistrer les modifications dans le fichier d'origine ?</translation>
 <translation id="1090918500949388876">Accédez à l'Assistant chaque fois que vous dites "Ok Google" quand l'écran est allumé</translation>
 <translation id="1091767800771861448">Appuyez sur ECHAP pour ignorer (versions non officielles uniquement).</translation>
 <translation id="1093457606523402488">Réseaux visibles :</translation>
 <translation id="1094607894174825014">L'opération de lecture ou d'écriture a été demandée avec un décalage incorrect sur l'appareil <ph name="DEVICE_NAME" />.</translation>
 <translation id="1097658378307015415">Avant de vous connecter, veuillez vous connecter en tant qu'invité afin d'activer le réseau <ph name="NETWORK_ID" />.</translation>
+<translation id="110029732810301672">Cet onglet est autorisé à enregistrer des modifications dans les fichiers d'origine.</translation>
 <translation id="1103523840287552314">Toujours traduire les pages en <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Arrêter</translation>
 <translation id="1110155001042129815">Attendre</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Lunettes de soleil</translation>
 <translation id="1151917987301063366">Toujours autoriser <ph name="HOST" /> à accéder aux capteurs</translation>
 <translation id="1153356358378277386">Appareils associés</translation>
-<translation id="1156488781945104845">Heure actuelle</translation>
 <translation id="1161575384898972166">Connectez-vous à <ph name="TOKEN_NAME" /> pour exporter le certificat client.</translation>
 <translation id="1163931534039071049">&amp;Afficher le code source du cadre</translation>
 <translation id="1164674268730883318">Désactiver Smart Lock pour l'appareil <ph name="DEVICE_TYPE" /> ?</translation>
@@ -191,12 +192,11 @@
 <translation id="126768002343224824">16x</translation>
 <translation id="1269405567167332785">Configuration avancée</translation>
 <translation id="1272079795634619415">Arrêter</translation>
-<translation id="1272293450992660632">Les valeurs du code sont différentes.</translation>
+<translation id="1272293450992660632">Les valeurs de code PIN sont différentes.</translation>
 <translation id="1272978324304772054">Ce compte utilisateur n'appartient pas au domaine auprès duquel l'appareil est enregistré. Si vous souhaitez vous enregistrer auprès d'un autre domaine, vous devez d'abord suivre la procédure de récupération de votre appareil.</translation>
 <translation id="1274977772557788323">Paramètres de stockage d'Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies et autres données de site</translation>
 <translation id="127668050356036882">Fermer toutes les fenêtres</translation>
-<translation id="1277908057200820621">Afficher la liste des appareils</translation>
 <translation id="1280820357415527819">Recherche de réseaux mobiles…</translation>
 <translation id="1285320974508926690">Ne jamais traduire ce site</translation>
 <translation id="1285484354230578868">Stocker les données dans votre compte Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Réseau domestique, sans itinérance</translation>
 <translation id="1316136264406804862">Recherche en cours…</translation>
 <translation id="1316495628809031177">La synchronisation est mise en veille</translation>
+<translation id="1317637799698924700">Votre station d'accueil fonctionnera dans le mode compatible USB Type-C.</translation>
 <translation id="1322046419516468189">Afficher et gérer les mots de passe enregistrés de votre <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Connectez-vous à Chrome pour accéder à vos onglets sur vos autres appareils.</translation>
 <translation id="1327074568633507428">Imprimante connectée à Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Votre <ph name="BEGIN_LINK" />navigateur est géré<ph name="END_LINK" /> par <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Exécutez des outils, des éditeurs et des IDE Linux sur votre <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;En savoir plus&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Choisir un fichier</translation>
+<translation id="1370749010280229230">Problème au niveau de l'écran connecté à la station d'accueil</translation>
 <translation id="1371301976177520732">Vos favoris, vos mots de passe, votre historique et plus encore sur tous vos appareils</translation>
 <translation id="1372841398847029212">Synchroniser avec votre compte</translation>
 <translation id="1374844444528092021">Le certificat requis par le réseau "<ph name="NETWORK_NAME" />" n'est pas installé ou n'est plus valide. Veuillez obtenir un nouveau certificat et réessayer de vous connecter.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Page Web, un seul fichier</translation>
 <translation id="1451917004835509682">Ajouter une personne supervisée</translation>
 <translation id="1454223536435069390">F&amp;aire une capture d'écran</translation>
+<translation id="1458243790901188746">{0,plural, =1{Dossier : <ph name="DIRECTORIES" />}one{Dossier : <ph name="DIRECTORIES" />}other{Dossiers : <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Moteurs de recherche ajoutés par les extensions</translation>
 <translation id="146000042969587795">Ce cadre a été bloqué, car il contient des éléments non sécurisés.</translation>
 <translation id="146219525117638703">État ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Afficher les options de saisie</translation>
 <translation id="1651008383952180276">Vous devez saisir deux fois la même phrase secrète</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Ajoutez l'imprimante à Google Cloud Print pour imprimer des documents où que vous soyez.}one{Ajoutez # imprimante à Google Cloud Print pour imprimer des documents où que vous soyez.}other{Ajoutez # imprimantes à Google Cloud Print pour imprimer des documents où que vous soyez.}}</translation>
+<translation id="1656528038316521561">Opacité de l'arrière-plan</translation>
 <translation id="1657406563541664238">Nous aider à améliorer <ph name="PRODUCT_NAME" /> en envoyant automatiquement les statistiques d'utilisation et les rapports d'erreur à Google</translation>
 <translation id="1658424621194652532">Cette page a accès à votre micro</translation>
 <translation id="1660204651932907780">Autoriser le son des sites (recommandé)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> souhaite voir la marque et le modèle de votre clé de sécurité</translation>
 <translation id="1679068421605151609">Outils de développement</translation>
 <translation id="1679806121152819234">VM Plug-in</translation>
+<translation id="1679810534535368772">Voulez-vous vraiment quitter cet écran ?</translation>
 <translation id="167983332380191032">Le service de gestion a renvoyé une erreur HTTP.</translation>
 <translation id="1680849702532889074">Une erreur s'est produite pendant l'installation de votre application Linux.</translation>
 <translation id="16815041330799488">Interdire aux sites de voir le texte et les images copiés dans le presse-papiers</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identifiant du contenu multimédia protégé</translation>
 <translation id="175196451752279553">&amp;Rouvrir l'onglet fermé</translation>
 <translation id="1753905327828125965">Les + visités</translation>
+<translation id="1755601632425835748">Taille du texte</translation>
 <translation id="1756681705074952506">Mode de saisie</translation>
 <translation id="1757301747492736405">Désinstallation en attente</translation>
 <translation id="175772926354468439">Activer le thème</translation>
@@ -539,7 +545,7 @@
 <translation id="1792619191750875668">Affichage étendu</translation>
 <translation id="1794791083288629568">Envoyer des commentaires pour nous aider à résoudre ce problème.</translation>
 <translation id="1795214765651529549">Utiliser le thème classique</translation>
-<translation id="1797738254362176886">Insérez votre clé de sécurité et appuyez sur son bouton d'activation pour afficher les données de connexion stockées sur la clé.</translation>
+<translation id="1797738254362176886">Insérez votre clé de sécurité et appuyez sur son bouton d'activation pour afficher les données de connexion stockées dessus.</translation>
 <translation id="1799071797295057738">L'extension "<ph name="EXTENSION_NAME" />" a été désactivée automatiquement.</translation>
 <translation id="1802687198411089702">La page ne répond plus. Vous pouvez attendre qu'elle soit de nouveau accessible ou la fermer.</translation>
 <translation id="1802931390041703523">Flash a été bloqué sur cette page</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">Plu&amp;s petit</translation>
 <translation id="1919345977826869612">Annonces</translation>
 <translation id="1919814239594435008">Autorisation de l'accès via un plug-in sans système de bac à sable</translation>
+<translation id="1920390473494685033">Contacts</translation>
 <translation id="1921050530041573580">Associer votre téléphone à Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> PPP</translation>
 <translation id="1924559387127953748">Bénéficiez des fonctionnalités intelligentes de Google dans <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Onglet de navigation privée : <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Le plug-in <ph name="PEPPER_PLUGIN_NAME" /> provenant du domaine <ph name="PEPPER_PLUGIN_DOMAIN" /> demande l'accès à votre ordinateur</translation>
 <translation id="2178614541317717477">Autorité de certification compromise</translation>
+<translation id="2179849162388791084">Échec de la collecte des données de connexion stockées sur votre clé sécurité.</translation>
 <translation id="218070003709087997">Indiquez le nombre de copies à imprimer (1 à 999).</translation>
 <translation id="2184515124301515068">Chrome détermine quand activer le son des sites (recommandé)</translation>
 <translation id="2187895286714876935">Erreur d'importation du certificat serveur</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Ensemble des cookies et données de site</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 élément copié}one{# élément copié}other{# éléments copiés}}</translation>
 <translation id="2278562042389100163">Ouvrir une fenêtre du navigateur</translation>
-<translation id="2279874276457403668">Vous ne pouvez créer qu'une session à la fois</translation>
 <translation id="2280486287150724112">Marge droite</translation>
 <translation id="2282146716419988068">GPU</translation>
 <translation id="2282155092769082568">URL de configuration automatique :</translation>
@@ -875,7 +882,7 @@
 <translation id="2294358108254308676">Souhaitez-vous installer <ph name="PRODUCT_NAME" /> ?</translation>
 <translation id="2297705863329999812">Rechercher des imprimantes</translation>
 <translation id="2300383962156589922">Personnaliser et configurer <ph name="APP_NAME" /></translation>
-<translation id="2300800387751317588">La synchronisation est suspendue, car vous avez choisi de supprimer les cookies au démarrage. Modifiez le paramètre <ph name="COOKIE_SETTINGS_LINK" /> pour que la synchronisation puisse toujours être effectuée.</translation>
+<translation id="2300800387751317588">La synchronisation est suspendue, car vous avez choisi d'effacer les cookies au démarrage. Modifiez le paramètre <ph name="COOKIE_SETTINGS_LINK" /> pour que la synchronisation continue de s'effectuer.</translation>
 <translation id="2301382460326681002">Le répertoire racine de l'extension est incorrect.</translation>
 <translation id="23030561267973084">"<ph name="EXTENSION_NAME" />" a demandé des autorisations supplémentaires.</translation>
 <translation id="2307462900900812319">Configurer le réseau</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Les notes rédigées sur l'écran de verrouillage sont automatiquement enregistrées dans <ph name="LOCK_SCREEN_APP_NAME" />. Votre note la plus récente restera sur l'écran de verrouillage.</translation>
 <translation id="2353297238722298836">Caméra et micro autorisés</translation>
 <translation id="2356070529366658676">Demander</translation>
-<translation id="2357949918965361754">Vous pouvez utiliser cette fonctionnalité pour afficher des contenus issus de Chrome sur votre téléviseur ou sur d'autres appareils.</translation>
 <translation id="2359345697448000899">Pour gérer les extensions, cliquer sur "Extensions" dans le menu "Outils"</translation>
 <translation id="2359808026110333948">Continuer</translation>
 <translation id="236117173274098341">Optimiser</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Votre organisation exige que cet appareil soit mis à jour immédiatement</translation>
 <translation id="2439545803278355377">Saisissez votre nouveau code. Un code doit comporter au moins quatre caractères et peut contenir des lettres, des chiffres et d'autres caractères.</translation>
 <translation id="2440604414813129000">Afficher la s&amp;ource</translation>
+<translation id="2442916515643169563">Ombre du texte</translation>
 <translation id="2444119669991608829">La page n'est pas en <ph name="LANGUAGE" /> ?</translation>
 <translation id="2445081178310039857">Le répertoire racine de l'extension doit être indiqué.</translation>
 <translation id="2445484935443597917">Créer un profil</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Pas après le</translation>
 <translation id="2739191690716947896">Déboguer</translation>
 <translation id="2739240477418971307">Modifier vos paramètres d'accessibilité</translation>
+<translation id="274029851662193272">Bord en retrait</translation>
 <translation id="2740393541869613458">examiner les sites Web que l'utilisateur supervisé a consultés ;</translation>
 <translation id="2741912629735277980">Afficher l'UI sur l'écran de connexion</translation>
 <translation id="274290345632688601">Restauration des applications et fichiers Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Le raccourci existe déjà</translation>
 <translation id="2807517655263062534">Les fichiers téléchargés s'affichent ici</translation>
 <translation id="2809586584051668049">ainsi que <ph name="NUMBER_ADDITIONAL_DISABLED" /> autre(s) extension(s)</translation>
+<translation id="2812049959647166806">Le format Thunderbolt n'est pas compatible</translation>
 <translation id="2812944337881233323">Essayez de vous déconnecter, puis de vous reconnecter</translation>
 <translation id="2812989263793994277">Ne pas afficher les images</translation>
 <translation id="281390819046738856">Impossible de signer la demande.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Fournisseur</translation>
 <translation id="2844169650293029770">Appareil USB de type C (port situé sur la gauche de l'appareil, à l'avant)</translation>
 <translation id="2845382757467349449">Toujours afficher la barre de favoris</translation>
-<translation id="2847759467426165163">Caster sur</translation>
 <translation id="284805635805850872">Supprimer le logiciel malveillant ?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Échec du nettoyage</translation>
@@ -1297,6 +1305,7 @@
     Message du serveur : <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Ajouter une galerie de médias par répertoire</translation>
 <translation id="2910318910161511225">Connectez-vous à un réseau et réessayez</translation>
+<translation id="2910518940971897750">Enregistrer dans le fichier d'origine</translation>
 <translation id="2913331724188855103">Autoriser les sites à enregistrer et à lire les données des cookies (recommandé)</translation>
 <translation id="2915102088417824677">Afficher le journal d'activité</translation>
 <translation id="2915873080513663243">Recherche automatique</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Appareils MIDI</translation>
 <translation id="3015639418649705390">Relancer maintenant</translation>
 <translation id="3016329696181678353">Impossible de configurer automatiquement l'imprimante <ph name="PRINTER_NAME" />. Veuillez définir des paramètres avancés pour l'imprimante.</translation>
+<translation id="3016381065346027039">Aucune entrée de journal</translation>
 <translation id="3016641847947582299">Composant mis à jour</translation>
 <translation id="3016780570757425217">Connaître votre position</translation>
 <translation id="3017079585324758401">Arrière-plan</translation>
 <translation id="3020183492814296499">Raccourcis</translation>
 <translation id="3020990233660977256">Numéro de série : <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Papillon</translation>
+<translation id="3021408157810018664">Enregistrer les modifications dans les fichiers d'origine ?</translation>
 <translation id="3021426244864538700">Accéder aux données de ce site</translation>
 <translation id="3021678814754966447">&amp;Afficher le code source du cadre</translation>
 <translation id="3022978424994383087">Je n'ai pas compris.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Vous pouvez également ignorer l'étape de connexion et <ph name="LINK_START" />naviguer en tant qu'invité<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Un site accède à votre entrée vidéo</translation>
 <translation id="3177909033752230686">Langue de la page :</translation>
+<translation id="3179982752812949580">Police du texte</translation>
 <translation id="3181954750937456830">Navigation sécurisée (assure votre protection et celle de votre appareil contre les sites dangereux)</translation>
 <translation id="3182749001423093222">Correcteur orthographique</translation>
 <translation id="3183139917765991655">Importation de profils</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Ouvrir dans une fenêtre</translation>
 <translation id="3278001907972365362">Vos comptes Google nécessitent votre attention</translation>
 <translation id="3279230909244266691">Cette opération peut prendre quelques minutes. Démarrage de la machine virtuelle…</translation>
-<translation id="3279741024917655738">Affichage des vidéos en plein écran sur</translation>
 <translation id="3280237271814976245">Enregistrer &amp;sous...</translation>
 <translation id="3280243678470289153">Rester dans Chrome</translation>
 <translation id="3281892622610078515">Fichiers et programmes à placer en quarantaine :</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Aucun résultat de recherche n'a été trouvé.</translation>
 <translation id="3305389145870741612">Le processus de formatage peut prendre quelques secondes. Veuillez patienter.</translation>
 <translation id="3305661444342691068">Ouvrir le PDF dans Aperçu</translation>
-<translation id="3306684685104080068">Activer la diffusion sur des services basés sur le cloud tels que Google Hangouts.</translation>
+<translation id="3307871847038842490">Cette page est autorisée à enregistrer des modifications dans les fichiers d'origine.</translation>
 <translation id="3308006649705061278">Unité d'organisation (OU)</translation>
 <translation id="3308116878371095290">Le stockage des cookies n'est pas autorisé pour cette page.</translation>
 <translation id="3308134619352333507">Masquer le bouton</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Annuler la configuration du compte ?</translation>
 <translation id="3464012987031883895">Un site accède à votre entrée audio</translation>
 <translation id="346431825526753">Il s'agit d'un compte pour enfants géré par <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Lire une vidéo ou un fichier audio en streaming</translation>
 <translation id="3468999815377931311">Téléphone Android</translation>
 <translation id="3470442499439619530">Supprimer cet utilisateur</translation>
 <translation id="3473479545200714844">Loupe</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Zoom arrière</translation>
 <translation id="3497560059572256875">Partager le doodle</translation>
 <translation id="3505030558724226696">Retirer les droits d'accès aux appareils</translation>
+<translation id="3505635633742443645">Impossible d'utiliser le port HDMI de votre station d'accueil lorsque le port USB Type-C sert à la sortie vidéo. Veuillez utiliser un autre port pour l'un des écrans.</translation>
 <translation id="3507421388498836150">Autorisations actuelles pour <ph name="EXTENSION_NAME" /></translation>
 <translation id="3507888235492474624">Relancer la recherche d'appareils Bluetooth</translation>
 <translation id="3508920295779105875">Choisir un autre dossier...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">L'application a bien été installée.</translation>
 <translation id="3578594933904494462">Le contenu de cet onglet est en cours de partage</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; souhaite partager une imprimante &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; avec un groupe que vous gérez : &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Si vous acceptez, tous les membres du groupe seront en mesure d'imprimer sur cette imprimante.</translation>
+<translation id="357889014807611375">Wi-Fi facturé à l'usage</translation>
 <translation id="3584169441612580296">Accéder aux photos, à la musique et aux autres fichiers multimédias stockés sur votre ordinateur et les modifier</translation>
 <translation id="3587482841069643663">Tous</translation>
 <translation id="358796204584394954">Saisissez ce code sur "<ph name="DEVICE_NAME" />" pour l'associer :</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Se connecter</translation>
 <translation id="3593965109698325041">Contraintes de nom du certificat</translation>
 <translation id="3596235046596950091">Activer les services cloud</translation>
+<translation id="3599221874935822507">Bord en relief</translation>
 <translation id="3599863153486145794">Efface l'historique de tous les appareils sur lesquels vous êtes connecté à votre compte Google. Ce dernier peut conserver d'autres formes d'historique de navigation sur la page <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Informations sur la requête Web</translation>
 <translation id="3600792891314830896">Couper le son des sites</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Téléchargé par &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Afficher "<ph name="FOLDER_NAME" />"</translation>
 <translation id="3613422051106148727">&amp;Ouvrir dans un nouvel onglet</translation>
+<translation id="3615073365085224194">Appuyez avec un doigt sur le lecteur d'empreinte digitale</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Effacer les données de navigation...</translation>
 <translation id="3617891479562106823">Les arrière-plans sont indisponibles. Réessayez plus tard.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Page d'accueil</translation>
 <translation id="3720996970802414353">Changer quand même</translation>
 <translation id="3722108462506185496">Erreur lors du démarrage du service de machine virtuelle. Veuillez réessayer.</translation>
-<translation id="3723158278575423087">Bienvenue dans l'expérience Cast sur Chromium</translation>
 <translation id="3725367690636977613">pages</translation>
 <translation id="3726137731714254362">Si vous retirez les dossiers qui figurent ici, ces derniers ne seront plus partagés, mais ne seront pas supprimés.</translation>
 <translation id="3727148787322499904">Les modifications apportées à ce paramètre s'appliquent à tous les réseaux partagés</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Informations détaillées sur la version</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Communication avec un appareil USB}one{Communication avec # appareil USB}other{Communication avec # appareils USB}}</translation>
 <translation id="3765246971671567135">Impossible de lire la règle du mode de démonstration hors connexion.</translation>
-<translation id="3766223500670287046">Écran distant</translation>
 <translation id="3768037234834996183">Synchronisation des préférences en cours…</translation>
 <translation id="377050016711188788">Glace</translation>
 <translation id="3771294271822695279">Fichiers vidéo</translation>
@@ -1891,7 +1903,7 @@
 <translation id="3812525830114410218">Certificat non fiable</translation>
 <translation id="3813296892522778813">Si vous ne trouvez pas ce que vous recherchez, consultez l'<ph name="BEGIN_LINK_CHROMIUM" />Aide Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation>
 <translation id="3816118180265633665">Couleurs de Chrome</translation>
-<translation id="3817524650114746564">Accéder aux paramètres de proxy sur votre ordinateur</translation>
+<translation id="3817524650114746564">Accéder aux paramètres de proxy de votre ordinateur</translation>
 <translation id="3817579325494460411">Non indiqué</translation>
 <translation id="3819257035322786455">Sauvegardez</translation>
 <translation id="3819261658055281761">Échec de l'enregistrement du jeton d'accès aux API à long terme pour cet appareil.</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Lever le doigt, puis appuyer de nouveau</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" /> : synchronisation désactivée</translation>
-<translation id="3862134173397075045">Bienvenue dans l'expérience Cast sur Chrome</translation>
 <translation id="3862693525629180217">Valider via le capteur intégré</translation>
 <translation id="3862788408946266506">L'application dont le fichier manifeste comporte un attribut "kiosk_only" doit être installée en mode Kiosque pour Chrome OS</translation>
 <translation id="3865414814144988605">Résolution</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Le téléphone Smart Lock a changé</translation>
 <translation id="3927932062596804919">Refuser</translation>
 <translation id="3930737994424905957">Recherche d'appareils</translation>
+<translation id="3930968231047618417">Couleur de l'arrière-plan</translation>
 <translation id="3933283459331715412">Restaurer le mot de passe supprimé du compte <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Ouvrir le fichier audio dans un nouvel onglet</translation>
 <translation id="3936925983113350642">Le mot de passe choisi vous sera demandé pour restaurer le certificat ultérieurement. Veillez à le conserver en lieu sûr.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importés depuis IE</translation>
 <translation id="3950820424414687140">Ouvrir une session</translation>
+<translation id="3950828138786918475">Cet onglet est autorisé à lire un dossier sur votre appareil.</translation>
 <translation id="3954354850384043518">En cours</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> hertz)</translation>
 <translation id="3954953195017194676">Aucun journal des événements WebRTC n'a été créé récemment.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Calcul en cours…</translation>
 <translation id="3975565978598857337">Échec de la tentative de contact du serveur correspondant à ce domaine</translation>
 <translation id="397703832102027365">Finalisation en cours…</translation>
+<translation id="3977886311744775419">Les mises à jour automatiques ne sont pas téléchargées sur ce type de réseau. Cependant, vous pouvez rechercher les mises à jour manuellement.</translation>
 <translation id="3979395879372752341">Nouvelle extension (<ph name="EXTENSION_NAME" />) ajoutée.</translation>
 <translation id="3979748722126423326">Activer <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Le type d'enregistrement indiqué est incorrect.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Activer la fonction "Taper pour cliquer"</translation>
 <translation id="4195643157523330669">Ouvrir dans un nouvel onglet</translation>
 <translation id="4195814663415092787">Reprendre mes activités là où je m'étais arrêté</translation>
+<translation id="4197940474316761015">Le site <ph name="ORIGIN" /> peut enregistrer vos modifications directement dans les fichiers ci-après. Pour cela, cet onglet doit obligatoirement être ouvert.</translation>
 <translation id="4198146608511578238">Appuyez de manière prolongée sur l'icône du lanceur d'applications pour parler à l'Assistant Google.</translation>
 <translation id="4200689466366162458">Mots personnalisés</translation>
 <translation id="4200983522494130825">Nouvel ongle&amp;t</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Se connecter automatiquement au réseau mobile</translation>
 <translation id="4268025649754414643">Chiffrement de la clé</translation>
 <translation id="4270393598798225102">Version <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Aucune correspondance</translation>
 <translation id="4275663329226226506">Médias</translation>
 <translation id="4275830172053184480">Redémarrer l'appareil</translation>
 <translation id="4278101229438943600">L'Assistant est prêt</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Temps CPU</translation>
 <translation id="4534661889221639075">Réessayez.</translation>
 <translation id="4535127706710932914">Profil par défaut</translation>
+<translation id="4535767533210902251">Le lecteur d'empreinte digitale est la touche située en haut à droite de votre clavier. Appuyez dessus légèrement avec n'importe quel doigt.</translation>
 <translation id="4538684596480161368">Toujours bloquer l'exécution hors bac à sable des plug-ins sur <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Installée conformément à une règle d'entreprise</translation>
 <translation id="4542520061254486227">Lire vos données sur <ph name="WEBSITE_1" /> et <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Autres...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Associer un appareil Bluetooth</translation>
+<translation id="4578012756826807359">Vos données de connexion ont bien été supprimées.</translation>
 <translation id="4579581181964204535">Impossible de caster <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Erreur lors de la restauration de Linux</translation>
 <translation id="4582563038311694664">Réinitialiser tous les paramètres</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Les cookies provenant de plusieurs sites seront effacés lorsque vous quitterez votre session de navigation.</translation>
 <translation id="4765582662863429759">Autorise Android Messages à transmettre les SMS de votre téléphone à votre Chromebook</translation>
 <translation id="4768332406694066911">Certains certificats provenant de ces organisations vous identifient.</translation>
-<translation id="4772404146526168240">Les deux écrans</translation>
 <translation id="4776146737004271126">Ouvrir les paramètres Android</translation>
 <translation id="4776917500594043016">Mot de passe de <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Connectez-vous pour retrouver vos favoris, votre historique, vos mots de passe et d'autres paramètres sur tous vos appareils. De plus, vous serez automatiquement connecté à vos services Google.</translation>
 <translation id="4929386379796360314">Destinations d'impression</translation>
 <translation id="4930714375720679147">Activer</translation>
-<translation id="4931132176527519925">Toujours utiliser la duplication d'écran</translation>
 <translation id="4932733599132424254">Date</translation>
 <translation id="4933484234309072027">intégration sur <ph name="URL" /></translation>
 <translation id="493571969993549666">Ajouter un utilisateur supervisé</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Réactiver le son</translation>
 <translation id="4992458225095111526">Confirmer la réinitialisation Powerwash</translation>
 <translation id="4992473555164495036">Votre administrateur a limité les modes de saisie disponibles.</translation>
+<translation id="4992866843815555470">Votre station d'accueil doit être réparée. Elle ne fonctionnera plus si le ventilateur n'est plus en état de marche.</translation>
 <translation id="4992926179187649719">Activer la commande "Ok Google"</translation>
 <translation id="4994474651455208930">Permettre aux sites de demander l'autorisation de devenir gestionnaires par défaut des protocoles</translation>
 <translation id="4994754230098574403">Configuration</translation>
@@ -2660,7 +2675,7 @@
 <translation id="5017633213534173756">Mémoriser</translation>
 <translation id="5018207570537526145">Ouvrir le site Web de l'extension</translation>
 <translation id="5021750053540820849">Pas encore mis à jour</translation>
-<translation id="5026688690798028095">Accédez à la page de gestion des applications</translation>
+<translation id="5026688690798028095">Accéder à la page de gestion des applications</translation>
 <translation id="5026874946691314267">Ne plus afficher ce message</translation>
 <translation id="5027550639139316293">Certificat de courrier électronique</translation>
 <translation id="5027562294707732951">Ajouter l'extension</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">ID du processus</translation>
 <translation id="5233638681132016545">Nouvel onglet</translation>
 <translation id="5233736638227740678">&amp;Coller</translation>
-<translation id="5234764350956374838">Ignorer</translation>
 <translation id="5235050375939235066">Désinstaller l'application ?</translation>
 <translation id="5235750401727657667">Remplace la page qui s'affiche lorsque vous ouvrez un nouvel onglet</translation>
 <translation id="5238278114306905396">L'application "<ph name="EXTENSION_NAME" />" a été automatiquement supprimée.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google recommande Chrome</translation>
 <translation id="532247166573571973">Le serveur peut être inaccessible. Veuillez réessayer plus tard.</translation>
 <translation id="5324780743567488672">Définir le fuseau horaire automatiquement à l'aide de votre position</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> est autorisé à enregistrer des modifications dans les fichiers d'origine</translation>
 <translation id="5327248766486351172">Nom</translation>
 <translation id="5327570636534774768">Cet appareil est géré par un autre domaine. Annulez sa gestion pour ce domaine avant de configurer le mode de démonstration.</translation>
 <translation id="532943162177641444">Appuyez sur la notification sur votre <ph name="PHONE_NAME" /> pour configurer le point d'accès mobile qui sera utilisé par cet appareil.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> souhaite</translation>
 <translation id="5534304873398226603">Supprimer la photo ou la vidéo</translation>
 <translation id="5535941515421698170">Supprimer également les données de cet appareil</translation>
-<translation id="5537725057119320332">Caster</translation>
 <translation id="5539221284352502426">Le serveur a refusé le mot de passe que vous avez saisi. Voici plusieurs raisons possibles : le mot de passe est trop court. Il ne contient pas de chiffres ni de symboles. Il est identique aux précédents mots de passe.</translation>
 <translation id="5541687815721799001">Utiliser l'application</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3111,7 +3125,7 @@
 <translation id="5708171344853220004">Nom Microsoft principal</translation>
 <translation id="5709557627224531708">Définir Chrome comme navigateur par défaut</translation>
 <translation id="5711983031544731014">Déverrouillage impossible. Veuillez saisir votre mot de passe.</translation>
-<translation id="5713723565110096165">Code incorrect. Il vous reste <ph name="RETRIES" /> tentatives.</translation>
+<translation id="5713723565110096165">Code PIN incorrect. Il vous reste <ph name="RETRIES" /> tentative(s).</translation>
 <translation id="5715711091495208045">Gestionnaire de plug-ins : "<ph name="PLUGIN_NAME" />"</translation>
 <translation id="5719603411793408026">Moteurs de recherche par défaut</translation>
 <translation id="5720705177508910913">Utilisateur actuel</translation>
@@ -3166,7 +3180,7 @@
 <translation id="5794414402486823030">Toujours ouvrir avec le lecteur système</translation>
 <translation id="5794786537412027208">Quitter toutes les applications Chrome</translation>
 <translation id="5797070761912323120">Google peut utiliser votre historique pour personnaliser la recherche, les annonces et d'autres services Google</translation>
-<translation id="579915268381781820">Votre clé de sécurité a été supprimée.</translation>
+<translation id="579915268381781820">Votre clé de sécurité a été retirée.</translation>
 <translation id="5799508265798272974">Machine virtuelle Linux : <ph name="LINUX_VM_NAME" /></translation>
 <translation id="5800020978570554460">Le fichier de destination a été tronqué ou supprimé depuis le dernier téléchargement.</translation>
 <translation id="5801568494490449797">Préférences</translation>
@@ -3301,14 +3315,13 @@
 <translation id="5997337190805127100">En savoir plus sur l'accès aux sites</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> résultats pour "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Voix préférées</translation>
-<translation id="6005695835120147974">Routeur multimédia</translation>
 <translation id="6006484371116297560">Classique</translation>
 <translation id="6007240208646052708">La recherche vocale n'est pas disponible dans votre langue.</translation>
 <translation id="6009781704028455063">Capteur intégré</translation>
 <translation id="6010869025736512584">Accès à l'entrée vidéo en cours…</translation>
 <translation id="6011193465932186973">Empreinte digitale</translation>
 <translation id="6011449291337289699">Effacer les données de sites</translation>
-<translation id="6015266928248016057">Clé PUK incorrecte. Il vous reste <ph name="RETRIES" /> tentatives.</translation>
+<translation id="6015266928248016057">Clé PUK incorrecte. Il vous reste <ph name="RETRIES" /> tentative(s).</translation>
 <translation id="6015796118275082299">Année</translation>
 <translation id="6016551720757758985">Confirmer la réinitialisation Powerwash et rétablir la version précédente</translation>
 <translation id="6016972670657536680">Bouton de sélection de la langue et du clavier. Langue actuellement sélectionnée : <ph name="LANGUAGE" />.</translation>
@@ -3381,7 +3394,7 @@
 <translation id="6103681770816982672">Avertissement : Vous êtes sur le point de passer à la version développeur</translation>
 <translation id="6104068876731806426">Comptes Google</translation>
 <translation id="6104311680260824317">Impossible d'associer l'appareil au domaine. Le serveur n'accepte pas les types de chiffrement Kerberos spécifiés. Pour consulter les paramètres de chiffrement, sélectionnez "Plus d'options".</translation>
-<translation id="6106186653986077033">La VM Plug-in exige une licence</translation>
+<translation id="6106186653986077033">Plugin VM exige une licence</translation>
 <translation id="6107012941649240045">Émis pour</translation>
 <translation id="6112294629795967147">Appuyer pour redimensionner</translation>
 <translation id="6112931163620622315">Vérifier le téléphone</translation>
@@ -3501,7 +3514,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nouvelle imprimante sur le réseau}one{Nouvelle imprimante sur le réseau}other{Nouvelles imprimantes sur le réseau}}</translation>
 <translation id="6286708577777130801">Détails du mot de passe enregistré</translation>
 <translation id="6289452883081499048">Services Google personnalisés tels que Play</translation>
-<translation id="6290556621549272952">Vous pouvez utiliser cette fonctionnalité pour afficher des contenus issus de Chromium sur votre téléviseur ou sur d'autres appareils.</translation>
 <translation id="6291949900244949761">Me demander lorsqu'un site souhaite accéder aux appareils USB (recommandé)</translation>
 <translation id="6291953229176937411">&amp;Afficher dans le Finder</translation>
 <translation id="6295158916970320988">Tous les sites</translation>
@@ -3565,6 +3577,7 @@
 <translation id="6395423953133416962">Envoyer les <ph name="BEGIN_LINK1" />informations système<ph name="END_LINK1" /> et les <ph name="BEGIN_LINK2" />statistiques<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Bloquer l'accès à vos capteurs de mouvement pour certains sites</translation>
 <translation id="6397094776139756010">Options de synchronisation et de personnalisation</translation>
+<translation id="6397449385184089588">Le site <ph name="ORIGIN" /> pourra enregistrer vos modifications directement dans les fichiers du dossier ci-après. Pour cela, cet onglet doit obligatoirement être ouvert.</translation>
 <translation id="6398715114293939307">Supprimer le Google Play Store</translation>
 <translation id="6398765197997659313">Quitter le mode plein écran</translation>
 <translation id="6399774419735315745">Espionne</translation>
@@ -3609,11 +3622,13 @@
 <translation id="6455264371803474013">Sur des sites spécifiques</translation>
 <translation id="6455894534188563617">&amp;Nouveau dossier</translation>
 <translation id="6456394469623773452">Bon</translation>
+<translation id="6456955391422100996">Annonce supprimée.</translation>
 <translation id="645705751491738698">Continuer à bloquer JavaScript</translation>
 <translation id="6458701200018867744">Échec de l'importation (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Rechercher la sélection</translation>
 <translation id="6459799433792303855">Fenêtre active transférée vers un autre écran.</translation>
 <translation id="6460601847208524483">Rechercher le suivant</translation>
+<translation id="6461170143930046705">Recherche de réseaux…</translation>
 <translation id="6463795194797719782">&amp;Modifier</translation>
 <translation id="6466988389784393586">&amp;Ouvrir tous les favoris</translation>
 <translation id="6467304607960172345">Optimiser les vidéos en plein écran</translation>
@@ -3652,6 +3667,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Vous êtes connecté à un réseau <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Partager</translation>
 <translation id="6528513914570774834">Autoriser les autres utilisateurs de cet appareil à employer ce réseau</translation>
 <translation id="652948702951888897">Historique Chrome</translation>
@@ -3748,7 +3764,6 @@
 <translation id="6680650203439190394">Noter</translation>
 <translation id="6681668084120808868">Prendre une photo</translation>
 <translation id="6681964764822470072">L'application "<ph name="APP_NAME" />" va être désinstallée.</translation>
-<translation id="6685083257944113180">Arrêter <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Ouvrir Google Play</translation>
 <translation id="6686490380836145850">Fermer les onglets sur la droite</translation>
 <translation id="6686817083349815241">Enregistrer votre mot de passe</translation>
@@ -3856,6 +3871,7 @@
 <translation id="6845038076637626672">Ouvrir la version agrandie</translation>
 <translation id="6845325883481699275">Contribuer à améliorer la sécurité de Chrome</translation>
 <translation id="6848388270925200958">Vous disposez actuellement de plusieurs cartes qui ne peuvent être utilisées qu'avec cet appareil</translation>
+<translation id="6850286078059909152">Couleur du texte</translation>
 <translation id="6851497530878285708">Application activée</translation>
 <translation id="6853388645642883916">Processus de mise à jour en veille</translation>
 <translation id="68541483639528434">Fermer les autres onglets</translation>
@@ -3905,7 +3921,6 @@
 <translation id="6923132443355966645">Défilement/Clic</translation>
 <translation id="6923633482430812883">Erreur lors de l'installation du partage. Veuillez vérifier que le serveur de fichiers auquel vous vous connectez est compatible avec le protocole SMB (version 2 ou ultérieure).</translation>
 <translation id="6930036377490597025">Clé de sécurité externe ou capteur intégré</translation>
-<translation id="6930242544192836755">Durée</translation>
 <translation id="693807610556624488">L'opération d'écriture dépasse la longueur maximale de l'attribut sur l'appareil <ph name="DEVICE_NAME" />.</translation>
 <translation id="6941937518557314510">Connectez-vous à <ph name="TOKEN_NAME" /> pour vous authentifier auprès de <ph name="HOST_NAME" /> avec votre certificat.</translation>
 <translation id="6943176775188458830">Annuler l'impression</translation>
@@ -3919,6 +3934,7 @@
 <translation id="6951153907720526401">Gestionnaires de paiement</translation>
 <translation id="6951663584153258142">Votre organisation vous demande de mettre à jour cet appareil</translation>
 <translation id="6953878494808481632">Autres infos</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fichier : <ph name="FILES" />}one{Fichier : <ph name="FILES" />}other{Fichiers : <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Inspecter le pop-up</translation>
 <translation id="6957044667612803194">Cette clé de sécurité n'accepte pas les codes d'identification personnels</translation>
 <translation id="6957231940976260713">Nom du service</translation>
@@ -4131,7 +4147,6 @@
 <translation id="7254554697254365959">Impossible de traduire cette page.</translation>
 <translation id="7254951428499890870">Voulez-vous vraiment lancer l'application "<ph name="APP_NAME" />" en mode diagnostic ?</translation>
 <translation id="7255002516883565667">Vous disposez actuellement d'une carte qui ne peut être utilisée qu'avec cet appareil</translation>
-<translation id="7255220508626648026">Diffusion de l'élément suivant : <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Appuyez à nouveau sur votre clé de sécurité pour confirmer la réinitialisation. Cette opération effacera toutes les informations stockées sur la clé de sécurité, y compris son code.</translation>
 <translation id="7255935316994522020">Appliquer</translation>
 <translation id="7256069762010468647">Le site utilise votre caméra</translation>
@@ -4265,6 +4280,7 @@
 <translation id="7456142309650173560">développeur</translation>
 <translation id="7456847797759667638">Ouvrir une adresse</translation>
 <translation id="7458168200501453431">Utilise le même correcteur orthographique que celui utilisé dans la recherche Google. Le texte que vous saisissez dans le navigateur est envoyé à Google.</translation>
+<translation id="7460045493116006516">Thème actuel que vous avez installé</translation>
 <translation id="7461924472993315131">Épingler</translation>
 <translation id="746216226901520237">La prochaine fois, votre téléphone déverrouillera votre <ph name="DEVICE_TYPE" />. Vous pouvez désactiver Smart Lock dans les paramètres.</translation>
 <translation id="7463006580194749499">Ajouter une personne</translation>
@@ -4324,6 +4340,7 @@
 <translation id="7554791636758816595">Nouvel onglet</translation>
 <translation id="7556033326131260574">Smart Lock n'a pas pu valider votre compte. Veuillez saisir votre mot de passe pour accéder à l'appareil.</translation>
 <translation id="7556242789364317684">Malheureusement, il est impossible de récupérer vos paramètres <ph name="SHORT_PRODUCT_NAME" />. Pour corriger cette erreur, votre appareil doit être réinitialisé avec la fonctionnalité <ph name="SHORT_PRODUCT_NAME" /> Powerwash.</translation>
+<translation id="7559444627302317199">Veuillez vérifier votre connexion réseau et réessayer.</translation>
 <translation id="7559719679815339381">Veuillez patienter… L'application kiosque est en cours de mise à jour. Ne débranchez pas la clé USB.</translation>
 <translation id="7561196759112975576">Toujours</translation>
 <translation id="7563991800558061108">Pour résoudre cette erreur, vous devez vous connecter à votre compte Google
@@ -4566,7 +4583,6 @@
 <translation id="7887334752153342268">Dupliquer</translation>
 <translation id="7887864092952184874">Souris Bluetooth associée.</translation>
 <translation id="7889565820482017512">Taille d'affichage</translation>
-<translation id="7889966925761734854">Chercher</translation>
 <translation id="7893008570150657497">accéder aux photos, titres et autres médias de votre ordinateur ;</translation>
 <translation id="7893153962594818789">Le Bluetooth est désactivé sur ce <ph name="DEVICE_TYPE" />. Saisissez votre mot de passe et activez le Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (par défaut)</translation>
@@ -4574,7 +4590,6 @@
 <translation id="7898627924844766532">Garder dans la barre d'outils</translation>
 <translation id="7898725031477653577">Toujours traduire</translation>
 <translation id="790040513076446191">Modifier les paramètres de confidentialité</translation>
-<translation id="7902874111237641165">Smooth Motion [version bêta]</translation>
 <translation id="7903345046358933331">La page ne répond plus. Vous pouvez attendre qu'elle soit de nouveau accessible ou la fermer.</translation>
 <translation id="7903742244674067440">Certains de vos certificats enregistrés identifient ces autorités de certification.</translation>
 <translation id="7903925330883316394">Utilitaire : <ph name="UTILITY_TYPE" /></translation>
@@ -4686,6 +4701,7 @@
 <translation id="8037117027592400564">Accéder à l'ensemble du texte énoncé à l'aide de la synthèse vocale</translation>
 <translation id="8037357227543935929">Demander (par défaut)</translation>
 <translation id="803771048473350947">Fichier</translation>
+<translation id="8042142357103597104">Opacité du texte</translation>
 <translation id="8044899503464538266">Lente</translation>
 <translation id="8045253504249021590">La synchronisation a été arrêtée via Google Dashboard.</translation>
 <translation id="8045923671629973368">Saisissez l'ID de l'application ou l'URL du Chrome Web Store</translation>
@@ -4722,7 +4738,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Vous pouvez désactiver ce service dans les paramètres.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Les codes ne correspondent pas</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> utilise les paramètres de proxy provenant d'une extension</translation>
-<translation id="8099495042588009598">Autres autorisations</translation>
 <translation id="8101987792947961127">Powerwash requis au prochain redémarrage</translation>
 <translation id="8102159139658438129">Accédez à <ph name="LINK_BEGIN" />Paramètres<ph name="LINK_END" /> pour consulter les options de votre téléphone connecté</translation>
 <translation id="8104696615244072556">Réinitialiser l'appareil <ph name="IDS_SHORT_PRODUCT_NAME" /> avec la fonctionnalité Powerwash et rétablir la version précédente</translation>
@@ -4774,8 +4789,10 @@
     Je ne pense pas que ce site devrait être bloqué.</translation>
 <translation id="8184288427634747179">Passer à <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Plus d'infos</translation>
+<translation id="8184472985242519288">Bord uniforme</translation>
 <translation id="8185331656081929126">Afficher des notifications lorsque de nouvelles imprimantes sont détectées sur le réseau</translation>
 <translation id="8186609076106987817">Impossible de trouver le fichier sur le serveur.</translation>
+<translation id="8187950680397073878">Le site <ph name="ORIGIN" /> peut lire tous les fichiers du dossier ci-après. Il a également accès aux modifications enregistrées dans le dossier à condition que cet onglet soit ouvert.</translation>
 <translation id="8188389033983459049">Activez le Bluetooth dans les paramètres de votre appareil pour continuer</translation>
 <translation id="8190193592390505034">Connexion à <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Gérer vos applications, vos extensions et vos thèmes</translation>
@@ -4878,8 +4895,7 @@
 <translation id="8339059274628563283">Données stockées en local pour <ph name="SITE" /></translation>
 <translation id="833986336429795709">Pour ouvrir ce lien, sélectionner une application</translation>
 <translation id="8342861492835240085">Sélectionner une collection</translation>
-<translation id="834290227245955730">Code incorrect. Il vous reste <ph name="RETRIES" /> tentatives.</translation>
-<translation id="8343956361364550006">Utilisez une bande passante élevée pour obtenir une qualité vidéo ou d'animation optimale. Vos contenus peuvent ne pas être visibles pour les personnes disposant d'une connexion lente.</translation>
+<translation id="834290227245955730">Code PIN incorrect. Il vous reste <ph name="RETRIES" /> tentative(s).</translation>
 <translation id="8351419472474436977">Cette extension a pris le contrôle de vos paramètres de proxy, ce qui signifie que toutes vos activités en ligne peuvent être modifiées, interrompues ou espionnées. Si vous ne savez pas pourquoi cette modification s'est produite, c'est qu'elle est probablement indésirable.</translation>
 <translation id="8351630282875799764">La batterie ne se recharge pas</translation>
 <translation id="835238322900896202">Une erreur s'est produite lors de la désinstallation. Veuillez procéder à la désinstallation via le terminal.</translation>
@@ -4912,9 +4928,11 @@
 <translation id="839736845446313156">S'inscrire</translation>
 <translation id="8398877366907290961">Poursuivre quand même</translation>
 <translation id="8400146488506985033">Gérer les utilisateurs</translation>
+<translation id="8400444932218572097">Le site <ph name="ORIGIN" /> peut enregistrer vos modifications directement dans les fichiers du dossier ci-après. Pour cela, cet onglet doit obligatoirement être ouvert.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Demander d'abord (recommandé)</translation>
 <translation id="8418445294933751433">Afficher dan&amp;s un onglet</translation>
+<translation id="8418905021510211421">Cette page est autorisée à lire un dossier sur votre appareil.</translation>
 <translation id="8419098111404128271">Résultats de recherche pour "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Bienvenue sur votre <ph name="DEVICE_TYPE" /> !</translation>
 <translation id="8425213833346101688">Modifier</translation>
@@ -4934,6 +4952,7 @@
 <translation id="8438566539970814960">Améliorer les recherches et la navigation</translation>
 <translation id="8439506636278576865">Proposer de traduire les pages dans cette langue</translation>
 <translation id="8440630305826533614">Applications Linux</translation>
+<translation id="844241640324986723">Échec de la suppression des données de connexion.</translation>
 <translation id="8443338615972234259">Veuillez créer un compte pour votre utilisateur supervisé.</translation>
 <translation id="8446884382197647889">En savoir plus</translation>
 <translation id="8447409163267621480">Vous devez inclure la touche Ctrl ou la touche Alt</translation>
@@ -4949,7 +4968,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Il semble que cet utilisateur supervisé ait été supprimé ou désactivé par le gestionnaire. Veuillez contacter ce dernier pour continuer à vous connecter avec ce nom d'utilisateur.</translation>
 <translation id="846374874681391779">Barre de téléchargements</translation>
-<translation id="8463807869745732775">Données de connexion stockées sur la clé de sécurité</translation>
 <translation id="8463955938112983119">Plug-in <ph name="PLUGIN_NAME" /> désactivé.</translation>
 <translation id="8464132254133862871">Ce compte utilisateur n'est pas compatible avec ce service.</translation>
 <translation id="8465252176946159372">Non valide</translation>
@@ -4974,7 +4992,7 @@
 <translation id="8497219075884839166">Utilitaires Windows</translation>
 <translation id="8498214519255567734">Facilite la lecture à l'écran lorsque l'éclairage est faible</translation>
 <translation id="8498395510292172881">Poursuivre la lecture dans Chrome</translation>
-<translation id="8500234928660943538">Clé PUK incorrecte. Il vous reste <ph name="RETRIES" /> tentatives.</translation>
+<translation id="8500234928660943538">Clé PUK incorrecte. Il vous reste <ph name="RETRIES" /> tentative(s).</translation>
 <translation id="8502536196501630039">Pour utiliser des applications de Google Play, vous devez d'abord restaurer vos applications. Certaines données peuvent avoir été perdues.</translation>
 <translation id="8503813439785031346">Nom d'utilisateur</translation>
 <translation id="850875081535031620">Aucun logiciel malveillant détecté</translation>
@@ -5015,6 +5033,7 @@
 <translation id="8569002732135253578">Impression de "<ph name="DOCUMENT_NAME" />"…</translation>
 <translation id="8569682776816196752">Aucun emplacement de destination trouvé.</translation>
 <translation id="8571213806525832805">4 dernières semaines</translation>
+<translation id="8573403125070227391">Cette annonce utilise trop de ressources pour votre appareil. Chrome l'a donc supprimée.</translation>
 <translation id="8574990355410201600">Toujours activer le son sur <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Maintenez la touche <ph name="KEY_EQUIVALENT" /> enfoncée pour quitter</translation>
 <translation id="8578639784464423491">Le mot ne peut pas comporter plus de 99 lettres</translation>
@@ -5038,13 +5057,13 @@
 <translation id="8609465669617005112">Monter</translation>
 <translation id="8610103157987623234">Format incorrect, veuillez réessayer</translation>
 <translation id="8615618338313291042">Application en mode navigation privée : <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Ombre projetée</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" /> : <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">État d'itinérance</translation>
 <translation id="8620765578342452535">Configurer les connexions réseau</translation>
 <translation id="8621866727807194849">Un logiciel malveillant a été détecté sur votre ordinateur. Chrome va le supprimer, restaurer vos paramètres et désactiver les extensions. Ceci permettra à votre navigateur de fonctionner à nouveau normalement.</translation>
 <translation id="8621979332865976405">Partager l'intégralité de votre écran</translation>
 <translation id="862542460444371744">&amp;Extensions</translation>
-<translation id="8627151598708688654">Sélectionner la source</translation>
 <translation id="862727964348362408">Suspendu</translation>
 <translation id="862750493060684461">Cache CSS</translation>
 <translation id="8627795981664801467">Uniquement les connexions sécurisées</translation>
@@ -5098,6 +5117,7 @@
 <translation id="8688579245973331962">Vous ne trouvez pas votre nom ?</translation>
 <translation id="8688591111840995413">Mot de passe incorrect.</translation>
 <translation id="8688672835843460752">Disponible</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Ouvrir une &amp;adresse...</translation>
 <translation id="869884720829132584">Menu Applications</translation>
 <translation id="869891660844655955">Date d'expiration</translation>
@@ -5261,6 +5281,7 @@
 <translation id="891365694296252935">Envoyer des données d'utilisation et de diagnostic. À l'heure actuelle, cet appareil envoie automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ces informations ne seront pas utilisées pour identifier votre enfant, mais elles nous aideront à améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Ce paramètre est appliqué par le propriétaire. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Chargement des suggestions en cours…</translation>
 <translation id="8916476537757519021">Sous-cadre de navigation privée : <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> est autorisé à lire un dossier sur votre appareil</translation>
 <translation id="8919275547519617350">Pour enregistrer tous vos mots de passe sur tous vos appareils, connectez-vous et activez la synchronisation.</translation>
 <translation id="8921366488406707015">Validation de votre clé de sécurité…</translation>
 <translation id="8922013791253848639">Toujours autoriser les annonces sur ce site</translation>
@@ -5290,7 +5311,6 @@
 <translation id="8965037249707889821">Saisir l'ancien mot de passe</translation>
 <translation id="8966870118594285808">Permet de rouvrir un onglet fermé par erreur</translation>
 <translation id="8967866634928501045">Appuyez sur Alt+Maj+A pour afficher</translation>
-<translation id="8970203673128054105">Afficher la liste des modes de diffusion</translation>
 <translation id="89720367119469899">Échap</translation>
 <translation id="8972513834460200407">Vérifiez auprès de votre administrateur réseau que le pare-feu ne bloque pas les téléchargements effectués depuis les serveurs Google.</translation>
 <translation id="8973557916016709913">Supprimer le niveau de zoom</translation>
@@ -5439,6 +5459,7 @@
 <translation id="9214520840402538427">Petit problème… Le délai alloué à l'initialisation des attributs de temps d'installation a expiré. Veuillez contacter le service d'assistance.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" ajoutée</translation>
+<translation id="9216712190298404438">Le site <ph name="ORIGIN" /> pourra enregistrer vos modifications directement dans le fichier ci-après. Pour cela, cet onglet doit obligatoirement être ouvert.</translation>
 <translation id="9218430445555521422">Définir comme navigateur par défaut</translation>
 <translation id="9219103736887031265">Images</translation>
 <translation id="9220525904950070496">Supprimer le compte</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index db599471..fce346a 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">વર્ચ્યુઅલ મશીન શરૂ કરવામાં ભૂલ આવી. કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
 <translation id="1089439967362294234">પાસવર્ડ બદલો</translation>
 <translation id="1090126737595388931">કોઈપણ પૃષ્ઠભૂમિ ઍપ્લિકેશન ચાલી રહી નથી</translation>
+<translation id="1090290614672149983">ફેરફારોને ઑરિજિનલ ફાઇલમાં સાચવીએ?</translation>
 <translation id="1090918500949388876">તમારી સ્ક્રીન ચાલુ હોય ત્યારે તમે કોઈપણ સમયે "ઓકે Google" બોલીને તમારા આસિસ્ટંટને ઍક્સેસ કરો</translation>
 <translation id="1091767800771861448">છોડવા માટે ESCAPE દબાવો (ફક્ત બિન-આધિકારીક બિલ્ડ).</translation>
 <translation id="1093457606523402488">દૃશ્યક્ષમ નેટવર્ક્સ:</translation>
 <translation id="1094607894174825014">આના પર અમાન્ય ઓફસેટ સાથે વાંચન અથવા લેખન ઓપરેશનની વિનંતી કરી હતી: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">સાઇન ઇન કરતા પહેલા, કૃપા કરીને નેટવર્ક <ph name="NETWORK_ID" /> ને સક્રિય કરવા માટે એક અતિથિ તરીકે દાખલ થાઓ</translation>
+<translation id="110029732810301672">આ ટૅબ ઑરિજિનલ ફાઇલોમાં સાચવવાની મંજૂરી ધરાવે છે.</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> નો હંમેશાં અનુવાદ કરો</translation>
 <translation id="1108600514891325577">&amp;Stop</translation>
 <translation id="1110155001042129815">રાહ જુઓ</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">ગોગલ્સ</translation>
 <translation id="1151917987301063366"><ph name="HOST" />ને હંમેશાં સેન્સર ઍક્સેસ કરવાની મંજૂરી આપો</translation>
 <translation id="1153356358378277386">જોડી કરેલા ઉપકરણો</translation>
-<translation id="1156488781945104845">હાલનો સમય</translation>
 <translation id="1161575384898972166">ક્લાયંટ પ્રમાણપત્ર નિકાસ કરવા માટે કૃપા કરીને <ph name="TOKEN_NAME" /> પર સાઇન ઇન કરો.</translation>
 <translation id="1163931534039071049">ફ્રેમ સ્રોત &amp;જુઓ</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" /> માટે Smart Lock બંધ કરીએ?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player સ્ટોરેજ સેટિંગ્સ</translation>
 <translation id="1274997165432133392">કુકીઝ અને અન્ય સાઇટ ડેટા</translation>
 <translation id="127668050356036882">તમારી તમામ વિંડોઝ બંધ કરો</translation>
-<translation id="1277908057200820621">ડિવાઇસ સૂચિ જુઓ</translation>
 <translation id="1280820357415527819">મોબાઇલ નેટવર્ક માટે શોધી રહ્યાં છીએ</translation>
 <translation id="1285320974508926690">આ સાઇટનું ક્યારેય ભાષાંતર કરશો નહીં</translation>
 <translation id="1285484354230578868">તમારા Google ડ્રાઇવ એકાઉન્ટમાં ડેટા સ્ટોર કરો</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">હોમ નેટવર્ક, રોમિંગ નહીં</translation>
 <translation id="1316136264406804862">શોધી રહ્યું છે ...</translation>
 <translation id="1316495628809031177">સિંક થોભાવ્યું છે</translation>
+<translation id="1317637799698924700">તમારું ડૉકિંગ સ્ટેશન USB Type-C સુસંગત મોડમાં ઑપરેટ થશે.</translation>
 <translation id="1322046419516468189">સાચવેલા પાસવર્ડ તમારા <ph name="SAVED_PASSWORDS_STORE" />માં જુઓ અને મેનેજ કરો</translation>
 <translation id="1326317727527857210">તમારા અન્ય ઉપકરણો પરથી તમારા ટૅબ્સ મેળવવા માટે, Chrome માં સાઇન ઇન કરો.</translation>
 <translation id="1327074568633507428">Google ક્લાઉડ પ્રિન્ટ પર પ્રિન્ટર</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="ENROLLMENT_DOMAIN" />તમારા <ph name="BEGIN_LINK" />બ્રાઉઝરને મેનેજ કરે છે<ph name="END_LINK" /></translation>
 <translation id="1366177842110999534">તમારા <ph name="DEVICE_TYPE" /> પર Linuxના સાધનો, એડિટર અને IDEs ચલાવો. &lt;a target="_blank" href="<ph name="URL" />"&gt;વધુ જાણો&lt;/a&gt;</translation>
 <translation id="1367951781824006909">એક ફાઇલ પસંદ કરો</translation>
+<translation id="1370749010280229230">ડૉક સાથે કનેક્ટ કરેલા ડિસ્પ્લેમાં કોઈ સમસ્યા છે</translation>
 <translation id="1371301976177520732">તમારા બધા ઉપકરણો પર તમારા બુકમાર્ક, પાસવર્ડ, ઇતિહાસ, અને બીજું ઘણું</translation>
 <translation id="1372841398847029212">તમારા એકાઉન્ટ સાથે સિંક કરો</translation>
 <translation id="1374844444528092021">નેટવર્ક "<ph name="NETWORK_NAME" />" દ્વારા આવશ્યક પ્રમાણપત્ર કાં તો ઇન્સ્ટોલ કરેલું નથી અથવા માન્ય નહીં હોય. કૃપા કરીને એક નવું પ્રમાણપત્ર લો અને ફરીથી કનેક્ટ કરવાનો પ્રયાસ કરો.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">વેબપેજ, એકલ ફાઇલ</translation>
 <translation id="1451917004835509682">નિરીક્ષિત વ્યક્તિ ઉમેરો</translation>
 <translation id="1454223536435069390">સ્ક્રીનશોટ &amp;લો</translation>
+<translation id="1458243790901188746">{0,plural, =1{ફોલ્ડર: <ph name="DIRECTORIES" />}one{ફોલ્ડર: <ph name="DIRECTORIES" />}other{ફોલ્ડરો: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">એક્સ્ટેંશન દ્વારા શોધ એન્જિન ઉમેરવામાં આવ્યું</translation>
 <translation id="146000042969587795">આ ફ્રેમ બ્લૉક કરવામાં આવી હતી કારણ કે તેમાં અમુક અસુરક્ષિત કન્ટેન્ટ છે.</translation>
 <translation id="146219525117638703">ONC સ્થિતિ</translation>
@@ -440,6 +443,7 @@
 <translation id="1650371550981945235">ઇનપુટ વિકલ્પો બતાવો</translation>
 <translation id="1651008383952180276">તમારે તે જ પાસફ્રેઝ બે વાર દાખલ કરવો આવશ્યક છે</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Google ક્લાઉડ પ્રિન્ટમાં પ્રિન્ટર ઉમેરો જેથી તમે ગમે-ત્યાંથી પ્રિન્ટ કાઢી શકો.}one{Google ક્લાઉડ પ્રિન્ટમાં # પ્રિન્ટર ઉમેરો જેથી તમે ગમે-ત્યાંથી પ્રિન્ટ કાઢી શકો.}other{Google ક્લાઉડ પ્રિન્ટમાં # પ્રિન્ટર ઉમેરો જેથી તમે ગમે-ત્યાંથી પ્રિન્ટ કાઢી શકો.}}</translation>
+<translation id="1656528038316521561">બૅકગ્રાઉન્ડની અપારદર્શકતા</translation>
 <translation id="1657406563541664238">ઉપયોગનાં આંકડાઓ અને ક્રૅશ રિપોર્ટ ઑટોમૅટિક રીતે Googleને મોકલીને <ph name="PRODUCT_NAME" />ને વધુ સારું બનાવવામાં મદદ કરો</translation>
 <translation id="1658424621194652532">આ પૃષ્ઠ તમારા માઇક્રોફોનને ઍક્સેસ કરી રહ્યું છે.</translation>
 <translation id="1660204651932907780">સાઇટને અવાજ ચલાવવાની મંજૂરી આપો (સુઝાવ આપેલ)</translation>
@@ -455,6 +459,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> તમારી સુરક્ષા કીની બનાવટ અને મૉડલ જોવા માગે છે</translation>
 <translation id="1679068421605151609">વિકાસકર્તા સાધનો</translation>
 <translation id="1679806121152819234">પ્લગ-ઇન VM</translation>
+<translation id="1679810534535368772">શું તમે ખરેખર બહાર નીકળવા માગો છો?</translation>
 <translation id="167983332380191032">મેનેજમેન્ટ સેવાએ HTTP ભૂલ મોકલી.</translation>
 <translation id="1680849702532889074">તમારી Linux ઍપ્લિકેશનના ઇન્સ્ટૉલેશન દરમિયાન ભૂલ આવી.</translation>
 <translation id="16815041330799488">સાઇટને ક્લિપબોર્ડ પર કૉપિ કરેલ ટેક્સ્ટ અને છબીઓ જોવાની મંજૂરી આપશો નહીં</translation>
@@ -506,6 +511,7 @@
 <translation id="1746402432151920942">સંરક્ષિત મીડિયા ઓળખકર્તા</translation>
 <translation id="175196451752279553">બંધ કરેલું ટેબ ફરિથી ખોલો</translation>
 <translation id="1753905327828125965">સૌથી વધુ જોવાયેલ</translation>
+<translation id="1755601632425835748">ટેક્સ્ટનું કદ</translation>
 <translation id="1756681705074952506">ઇનપુટ પદ્ધતિ</translation>
 <translation id="1757301747492736405">અનઇન્સ્ટૉલ કરવું બાકી</translation>
 <translation id="175772926354468439">થીમ ચાલુ કરો</translation>
@@ -625,6 +631,7 @@
 <translation id="1918141783557917887">&amp;નાનું</translation>
 <translation id="1919345977826869612">જાહેરાતો</translation>
 <translation id="1919814239594435008">અનસૅન્ડબૉક્સ કરેલ પ્લગ-ઇનને મંજૂરી છે</translation>
+<translation id="1920390473494685033">સંપર્કો</translation>
 <translation id="1921050530041573580">તમારા ફોનનું સંદેશા સાથે જોડાણ કરો</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" />માં Google સ્માર્ટ મેળવો</translation>
@@ -781,6 +788,7 @@
 <translation id="2177950615300672361">છુપો ટેબ: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> પરનું <ph name="PEPPER_PLUGIN_NAME" /> તમારા કમ્પ્યુટરને ઍક્સેસ કરવા માગે છે</translation>
 <translation id="2178614541317717477">CA સમાધાન</translation>
+<translation id="2179849162388791084">તમારી સુરક્ષા કીમાંથી સાઇન ઇન ડેટા એકત્રિત કરવાનું નિષ્ફળ થયું.</translation>
 <translation id="218070003709087997">કેટલી કૉપિ છાપવાની છે એ બતાવવા માટે સંખ્યાનો ઉપયોગ કરો (1થી 999 સુધીની).</translation>
 <translation id="2184515124301515068">સાઇટ સાઉન્ડ ક્યારે ચલાવી શકે તે Chromeને પસંદ કરવા દો (સુઝાવ આપેલ)</translation>
 <translation id="2187895286714876935">સર્વર પ્રમાણપત્ર આયાત કરવામાં ભૂલ</translation>
@@ -859,7 +867,6 @@
 <translation id="2277255602909579701">તમામ કુકીઝ અને સાઇટ ડેટા</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 આઇટમ કૉપિ કરી}one{# આઇટમ કૉપિ કરી}other{# આઇટમ કૉપિ કરી}}</translation>
 <translation id="2278562042389100163">બ્રાઉઝર વિંડો ખોલો</translation>
-<translation id="2279874276457403668">એકવારમાં માત્ર એક જ સત્ર બનાવી શકાય છે.</translation>
 <translation id="2280486287150724112">જમણો હાસિયો</translation>
 <translation id="2282146716419988068">GPU પ્રક્રિયા</translation>
 <translation id="2282155092769082568">સ્વતઃગોઠવણી URL:</translation>
@@ -912,7 +919,6 @@
 <translation id="2352810082280059586">લૉક સ્ક્રીન નોંધ આપમેળે <ph name="LOCK_SCREEN_APP_NAME" /> પર સાચવવામાં આવે છે. તમારી સૌથી તાજેતરની નોંધ લૉક સ્ક્રીન પર રહેશે.</translation>
 <translation id="2353297238722298836">કૅમેરા અને માઇક્રોફોનની મંજૂરી</translation>
 <translation id="2356070529366658676">કહો</translation>
-<translation id="2357949918965361754">તમે Chromeથી તમારા TV પર અથવા અન્ય ડિવાઇસ પર કન્ટેન્ટ બતાવવા માટે આ સુવિધાનો ઉપયોગ કરી શકો છો.</translation>
 <translation id="2359345697448000899">ટૂલ્સ મેનૂમાં એક્સટેંશનને ક્લિક કરીને તમારા એક્સ્ટેંશન્સને મેનેજ કરો.</translation>
 <translation id="2359808026110333948">આગળ વધો</translation>
 <translation id="236117173274098341">ઑપ્ટિમાઇઝ કરો</translation>
@@ -961,6 +967,7 @@
 <translation id="2436720498717686157">તમારી સંસ્થા માટે આ ડિવાઇસનું અત્યારે જ અપડેટ જરૂરી છે</translation>
 <translation id="2439545803278355377">તમારો નવો પિન દાખલ કરો. પિન ઓછામાં ઓછા ચાર અક્ષરનો હોવો જોઈએ અને તેમાં અક્ષરો, સંખ્યા અને અન્ય વર્ણો શામેલ હોઈ શકે છે.</translation>
 <translation id="2440604414813129000">&amp;સ્રોત જુઓ</translation>
+<translation id="2442916515643169563">ટેક્સ્ટ શૅડો</translation>
 <translation id="2444119669991608829">પેજ <ph name="LANGUAGE" />માં નથી?</translation>
 <translation id="2445081178310039857">એક્સ્ટેંશન રૂટ ડિરેક્ટરી જરૂરી છે.</translation>
 <translation id="2445484935443597917">એક નવી પ્રોફાઇલ બનાવો</translation>
@@ -1176,6 +1183,7 @@
 <translation id="2738771556149464852">આના પછી નહીં</translation>
 <translation id="2739191690716947896">ડીબગ કરો</translation>
 <translation id="2739240477418971307">તમારી ઍક્સેસિબિલિટી સેટિંગ્સ બદલો</translation>
+<translation id="274029851662193272">દબાવેલા</translation>
 <translation id="2740393541869613458">નિરીક્ષિણ વપરાશકર્તાએ મુલાકાત લીધેલી વેબસાઇટનો રિવ્યૂ કરો, અને</translation>
 <translation id="2741912629735277980">લૉગ ઇન સ્ક્રીન પર ડિસ્પ્લે બતાવો</translation>
 <translation id="274290345632688601">Linux ઍપ અને ફાઇલોની પુનઃસ્થાપના કરી રહ્યાં છીએ</translation>
@@ -1224,6 +1232,7 @@
 <translation id="2806891468525657116">શૉર્ટકટ પહેલેથી અસ્તિત્વમાં છે</translation>
 <translation id="2807517655263062534">તમે ડાઉનલોડ કરેલી ફાઇલો અહીં દેખાશે</translation>
 <translation id="2809586584051668049">અને <ph name="NUMBER_ADDITIONAL_DISABLED" /> વધુ</translation>
+<translation id="2812049959647166806">Thunderboltની સુવિધા ઉપલબ્ધ નથી</translation>
 <translation id="2812944337881233323">સાઇન આઉટ કરીને ફરી પાછા સાઇન ઇન કરવાનો પ્રયાસ કરો</translation>
 <translation id="2812989263793994277">કોઈ પણ છબીઓ બતાવશો નહીં</translation>
 <translation id="281390819046738856">વિનંતી પર સહી કરી શક્યાં નથી.</translation>
@@ -1246,7 +1255,6 @@
 <translation id="2841837950101800123">પ્રદાતા</translation>
 <translation id="2844169650293029770">USB-C ઉપકરણ (ડાબી બાજુનું આગળનું પોર્ટ)</translation>
 <translation id="2845382757467349449">બુકમાર્ક્સ બાર હંમેશા બતાવો</translation>
-<translation id="2847759467426165163">આના પર કાસ્ટ કરો</translation>
 <translation id="284805635805850872">નુકસાનકારક સૉફ્ટવેર દૂર કરીએ?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">ક્લીન અપ નિષ્ફળ થયું</translation>
@@ -1293,6 +1301,7 @@
     સર્વર સંદેશ: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">ડિરેક્ટરી દ્વારા મીડિયા ગૅલેરી ઉમેરો</translation>
 <translation id="2910318910161511225">નેટવર્કથી કનેક્ટ કરો અને ફરીથી પ્રયાસ કરો</translation>
+<translation id="2910518940971897750">ઑરિજિનલ ફાઇલમાં સાચવો</translation>
 <translation id="2913331724188855103">સાઇટને કૂકી ડેટા સાચવવા અને વાંચવાની મંજૂરી આપો (ભલામણ કરેલ)</translation>
 <translation id="2915102088417824677">પ્રવૃત્તિ લૉગ જુઓ</translation>
 <translation id="2915873080513663243">ઑટો સ્કેન</translation>
@@ -1357,12 +1366,14 @@
 <translation id="3013291976881901233">MIDI ઉપકરણો</translation>
 <translation id="3015639418649705390">હમણાં ફરીથી લૉન્ચ કરો</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" />ને ઑટોમૅટિક રીતે ગોઠવી શકાતું નથી. કૃપા કરીને વિગતવાર પ્રિન્ટરની વિગતો જણાવો.</translation>
+<translation id="3016381065346027039">કોઈ લૉગ એન્ટ્રી નથી</translation>
 <translation id="3016641847947582299">ઘટક અપડેટ કર્યો</translation>
 <translation id="3016780570757425217">તમારું સ્થાન જાણો</translation>
 <translation id="3017079585324758401">બૅકગ્રાઉન્ડ</translation>
 <translation id="3020183492814296499">શૉર્ટકટ</translation>
 <translation id="3020990233660977256">સીરિયલ નંબર: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">પતંગિયું</translation>
+<translation id="3021408157810018664">ફેરફારોને ઑરિજિનલ ફાઇલોમાં સાચવીએ?</translation>
 <translation id="3021426244864538700">આ સાઇટનો ડેટા ઍક્સેસ કરવા વિશે</translation>
 <translation id="3021678814754966447">ફ્રેમ સ્રોત &amp;જુઓ</translation>
 <translation id="3022978424994383087">તે મળ્યો નથી.</translation>
@@ -1455,6 +1466,7 @@
 <translation id="3170072451822350649">તમે સાઇન ઇન કરવાનું છોડી અને <ph name="LINK_START" />અતિથિ તરીકે બ્રાઉઝ<ph name="LINK_END" /> પણ કરી શકો છો.</translation>
 <translation id="3172045848207518317">સાઇટ વીડિયો ઇનપુટને ઍક્સેસ કરી રહી છે</translation>
 <translation id="3177909033752230686">પૃષ્ઠ ભાષા:</translation>
+<translation id="3179982752812949580">ટેક્સ્ટ ફોન્ટ</translation>
 <translation id="3181954750937456830">Safe Browsing (તમારું અને તમારા ડિવાઇસનું જોખમી સાઇટથી રક્ષણ કરે છે)</translation>
 <translation id="3182749001423093222">જોડણીની તપાસ</translation>
 <translation id="3183139917765991655">પ્રોફાઇલ આયાતકાર</translation>
@@ -1507,7 +1519,6 @@
 <translation id="3275778913554317645">વિંડો તરીકે ખોલો</translation>
 <translation id="3278001907972365362">તમારા Google એકાઉન્ટ પર ધ્યાન આપવાની જરૂર છે</translation>
 <translation id="3279230909244266691">આ પ્રક્રિયામાં થોડો સમય લાગી શકે છે. વર્ચ્યુઅલ મશીન શરૂ કરી રહ્યાં છીએ.</translation>
-<translation id="3279741024917655738">આના પર પૂર્ણસ્ક્રીન વીડિઓ બતાવો</translation>
 <translation id="3280237271814976245">આ રીતે સાચવો...</translation>
 <translation id="3280243678470289153">Chromeમાં રહો</translation>
 <translation id="3281892622610078515">ક્વારંટાઇન કરવા માટેની ફાઇલ અને પ્રોગ્રામ:</translation>
@@ -1529,7 +1540,7 @@
 <translation id="3303855915957856445">કોઈ શોધ પરિણામો મળ્યાં નથી</translation>
 <translation id="3305389145870741612">ફોર્મેટ કરવાની પ્રક્રિયામાં થોડો સમય લાગી શકે છે. કૃપા કરીને રાહ જુઓ.</translation>
 <translation id="3305661444342691068">PDFને પ્રીવ્યૂમાં ખોલો</translation>
-<translation id="3306684685104080068">Google Hangouts જેવી કલાઉડ-આધરિત સેવાઓ પર કાસ્ટ કરવાનું ચાલુ કરો.</translation>
+<translation id="3307871847038842490">આ પેજ ઑરિજિનલ ફાઇલોમાં સાચવવાની મંજૂરી ધરાવે છે.</translation>
 <translation id="3308006649705061278">ઑર્ગેનાઇઝેશનલ યૂનિટ (OU)</translation>
 <translation id="3308116878371095290">આ પૃષ્ઠને કૂકીઝ સેટ કરવાથી અટકાવવામાં આવ્યું હતું.</translation>
 <translation id="3308134619352333507">બટન છુપાવો</translation>
@@ -1635,7 +1646,6 @@
 <translation id="3462413494201477527">એકાઉન્ટ સેટઅપ રદ કરીએ?</translation>
 <translation id="3464012987031883895">સાઇટ ઑડિયો ઇનપુટને ઍક્સેસ કરી રહી છે</translation>
 <translation id="346431825526753">આ બાળકો માટેનું એકાઉન્ટ છે, જે <ph name="CUSTODIAN_EMAIL" /> દ્વારા મેનેજ કરાય છે.</translation>
-<translation id="3468275649641751422">વીડિયો અથવા ઑડિયો ફાઇલને સ્ટ્રીમ કરો</translation>
 <translation id="3468999815377931311">Android ફોન</translation>
 <translation id="3470442499439619530">આ વપરાશકર્તાને દૂર કરો</translation>
 <translation id="3473479545200714844">સ્ક્રીન બૃહદદર્શક</translation>
@@ -1658,6 +1668,7 @@
 <translation id="3496213124478423963">ઝૂમ ઘટાડો</translation>
 <translation id="3497560059572256875">ડૂડલ શેર કરો</translation>
 <translation id="3505030558724226696">ઉપકરણ ઍક્સેસ રદબાતલ કરો</translation>
+<translation id="3505635633742443645">જ્યારે USB Type-C પોર્ટ વીડિયો આઉટપુટ માટે ઉપયોગમાં હોય ત્યારે તમારા ડૉકનાં HDMI પોર્ટનો ઉપયોગ કરી શકાતો નથી. કૃપા કરીને કોઈ એક ડિસ્પ્લે માટે અલગ પોર્ટનો ઉપયોગ કરો.</translation>
 <translation id="3507421388498836150">"<ph name="EXTENSION_NAME" />" માટે વર્તમાન પરવાનગીઓ</translation>
 <translation id="3507888235492474624">બ્લૂટૂથ ડિવાઇસને ફરીથી સ્કૅન કરો</translation>
 <translation id="3508920295779105875">બીજું ફોલ્ડર પસંદ કરો...</translation>
@@ -1710,6 +1721,7 @@
 <translation id="3576324189521867626">સફળતાપૂર્વક ઇન્સ્ટૉલ કરી</translation>
 <translation id="3578594933904494462">આ ટેબનું કન્ટેન્ટ શેર થઈ રહ્યું છે.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt;, તમે માલિકી ધરાવો છો તે જૂથ સાથે &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; પ્રિન્ટર શેર કરવા માગે છે: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. જો તમે સ્વીકારો છો, તો બધા જૂથ સભ્યો પ્રિન્ટર પર છાપવામાં સમર્થ હશે.</translation>
+<translation id="357889014807611375">મીટર્ડ (ડેટા નિયંત્રણ) વાઇ-ફાઇ</translation>
 <translation id="3584169441612580296">વાંચો અને તમારા કમ્પ્યુટરમાંથી ફોટો, સંગીત અને અન્ય મીડિયા બદલો</translation>
 <translation id="3587482841069643663">બધા</translation>
 <translation id="358796204584394954">જોડી બનાવવા માટે "<ph name="DEVICE_NAME" />" પર આ કોડ લખો:</translation>
@@ -1720,6 +1732,7 @@
 <translation id="359283478042092570">Enter</translation>
 <translation id="3593965109698325041">પ્રમાણપત્રના નામની મર્યાદાઓ</translation>
 <translation id="3596235046596950091">કલાઉડ સેવાઓ ચાલુ કરો</translation>
+<translation id="3599221874935822507">ઉપસેલા</translation>
 <translation id="3599863153486145794">બધા સાઇન ઇન કરેલ ડિવાઇસમાંથી ઇતિહાસ સાફ કરે છે. તમારા Google એકાઉન્ટમાં <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> પર બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો હોય શકે.</translation>
 <translation id="3600051066689725006">વેબ વિનંતી વિશે માહિતી</translation>
 <translation id="3600792891314830896">જે સાઇટ અવાજ ચલાવતી હોય તેઓનો અવાજ બંધ કરો</translation>
@@ -1734,6 +1747,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; એ ડાઉનલોડ કરી</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> ને દર્શાવો</translation>
 <translation id="3613422051106148727">નવા ટૅબમાં &amp;ખોલો</translation>
+<translation id="3615073365085224194">તમારી આંગળી વડે ફિંગરપ્રિન્ટ સેન્સરને સ્પર્શ કરો</translation>
 <translation id="3616113530831147358">ઑડિઓ</translation>
 <translation id="3616741288025931835">બ્રાઉઝિંગ ડેટા &amp;સાફ કરો...</translation>
 <translation id="3617891479562106823">બૅકગ્રાઉન્ડ અનુપલબ્ધ છે. થોડા સમય પછી ફરી પ્રયાસ કરો.</translation>
@@ -1815,7 +1829,6 @@
 <translation id="3719826155360621982">હોમપેજ</translation>
 <translation id="3720996970802414353">છતાં સ્વિચ કરો</translation>
 <translation id="3722108462506185496">વર્ચ્યુઅલ મશીન સેવા શરૂ કરતી વખતે ભૂલ આવી. કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
-<translation id="3723158278575423087">Chromium માં કાસ્ટ અનુભવ પર સ્વાગત છે!</translation>
 <translation id="3725367690636977613"> પૃષ્ઠો</translation>
 <translation id="3726137731714254362">અહીંથી ફોલ્ડર કાઢી નાખવા શેર કરવાનું રોકશે પરંતુ ફાઇલોને ડિલીટ કરશે નહીં.</translation>
 <translation id="3727148787322499904">આ સેટિંગને બદલવું તમામ શેર કરેલ નેટવર્કને પ્રભાવિત કરશે</translation>
@@ -1850,7 +1863,6 @@
 <translation id="3764314093345384080">વિગતવાર બિલ્ડ માહિતી</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{એક USB ઉપકરણ સાથે સંચાર કરો}one{# USB ઉપકરણો સાથે સંચાર કરો}other{# USB ઉપકરણો સાથે સંચાર કરો}}</translation>
 <translation id="3765246971671567135">ઑફલાઇન ડેમો મોડ નીતિ વાંચી શકાઈ નથી.</translation>
-<translation id="3766223500670287046">રિમોટ સ્ક્રીન</translation>
 <translation id="3768037234834996183">તમારી પસંદગીઓને સમન્વયિત કરી રહ્યું છે...</translation>
 <translation id="377050016711188788">આઇસ્ક્રીમ</translation>
 <translation id="3771294271822695279">વીડિયો ફાઇલો</translation>
@@ -1923,7 +1935,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">ઉપાડો, પછી ફરી સ્પર્શ કરો</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: સિંક થોભાવ્યું</translation>
-<translation id="3862134173397075045">Chrome માં કાસ્ટ અનુભવ પર સ્વાગત છે!</translation>
 <translation id="3862693525629180217">બિલ્ટ-ઇન સેન્સર મારફતે ચકાસો</translation>
 <translation id="3862788408946266506">'Kiosk_only' મેનિફેસ્ટ વિશેષતાવાળી ઍપ Chrome OS કિઓસ્ક મોડમાં ઇન્સ્ટૉલ કરેલી હોવી જરૂરી છે</translation>
 <translation id="3865414814144988605">રિઝોલ્યુશન</translation>
@@ -1972,6 +1983,7 @@
 <translation id="3926002189479431949">Smart Lock ફોન બદલાવ્યો</translation>
 <translation id="3927932062596804919">નકારો</translation>
 <translation id="3930737994424905957">ઉપકરણો શોધી રહ્યાં છીએ</translation>
+<translation id="3930968231047618417">બૅકગ્રાઉન્ડનો રંગ</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> માટે ડિલીટ કરેલ પાસવર્ડ પુનઃસ્થાપિત કરો</translation>
 <translation id="3936390757709632190">નવા ટૅબમાં ઑડિયો &amp;ખોલો</translation>
 <translation id="3936925983113350642">પછીથી આ પ્રમાણપત્ર પુનર્સ્થાપિત કરવા માટે તમે પસંદ કરો છો તે પાસવર્ડની જરૂર પડશે. કૃપા કરીને તેને સુરક્ષિત સ્થાન પર નોંધો.</translation>
@@ -1991,6 +2003,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE થી આયાત કરેલ</translation>
 <translation id="3950820424414687140">સાઇન ઇન</translation>
+<translation id="3950828138786918475">આ ટૅબ તમારા ડિવાઇસ પર ફોલ્ડર વાંચવાની મંજૂરી ધરાવે છે.</translation>
 <translation id="3954354850384043518">પ્રક્રિયામાં છે</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> હર્ટ્ઝ)</translation>
 <translation id="3954953195017194676">તમારી પાસે તાજેતરમાં કૅપ્ચર કરેલ કોઈ WebRTC ઇવેન્ટ લૉગ નથી.</translation>
@@ -2009,6 +2022,7 @@
 <translation id="397105322502079400">ગણના કરી રહ્યું છે...</translation>
 <translation id="3975565978598857337">ક્ષેત્ર માટે સર્વરનો સંપર્ક કરવામાં નિષ્ફળ થયાં</translation>
 <translation id="397703832102027365">ફાઇનલ કરી રહ્યું છે...</translation>
+<translation id="3977886311744775419">ઑટોમૅટિક અપડેટ આ નેટવર્ક પ્રકાર પર ડાઉનલોડ થતાં નથી, પણ તમે અપડેટ મેન્યુઅલી ચેક કરી શકો છો.</translation>
 <translation id="3979395879372752341">નવું એક્સ્ટેંશન ઉમેરાયું (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> ચાલુ કરો</translation>
 <translation id="3981760180856053153">અમાન્ય સાચવો પ્રકાર દાખલ થયો છે.</translation>
@@ -2148,6 +2162,7 @@
 <translation id="4194570336751258953">ક્લિક કરવા હલકું દબાવોને ચાલુ કરો</translation>
 <translation id="4195643157523330669">નવા ટૅબમાં ખોલો</translation>
 <translation id="4195814663415092787">તમે જ્યાંથી છોડેલું ત્યાંથી ચાલુ કરો</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> તમારા ફેરફારોને સીધા નીચેની ફાઇલોમાં સાચવી શકે છે. આ ટૅબ ખુલ્લું હોય ત્યારે આ સાઇટ ફેરફારોને સાચવી શકે છે.</translation>
 <translation id="4198146608511578238">તમારા Google સહાયક સાથે વાત કરવા માટે લૉન્ચર આઇકનને પકડી રાખો.</translation>
 <translation id="4200689466366162458">કસ્ટમ શબ્દો</translation>
 <translation id="4200983522494130825">નવું &amp;ટૅબ</translation>
@@ -2195,7 +2210,6 @@
 <translation id="4267953847983678297">સેલ્યુલર નેટવર્કથી ઑટોમૅટિક રીતે કનેક્ટ થાઓ</translation>
 <translation id="4268025649754414643">કી ચિહ્નિકરણ</translation>
 <translation id="4270393598798225102">વર્ઝન <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">કોઇ મેળ મળ્યાં નથી</translation>
 <translation id="4275663329226226506">મીડિયા</translation>
 <translation id="4275830172053184480">તમારું ઉપકરણ પુનઃપ્રારંભ કરો</translation>
 <translation id="4278101229438943600">તમારું આસિસ્ટંટ તૈયાર છે</translation>
@@ -2344,6 +2358,7 @@
 <translation id="4533985347672295764">CPU સમય</translation>
 <translation id="4534661889221639075">ફરી પ્રયાસ કરો.</translation>
 <translation id="4535127706710932914">ડિફૉલ્ટ પ્રોફાઇલ</translation>
+<translation id="4535767533210902251">ફિંગરપ્રિન્ટ સેન્સર એ તમારા કીબોર્ડ પર સૌથી ઉપર જમણી બાજુ સ્થિત કી છે. તેને કોઈપણ આંગળી વડે હળવેથી સ્પર્શ કરો.</translation>
 <translation id="4538684596480161368"><ph name="HOST" /> પર અનસેન્ડબૉક્સ્ડ પ્લગિન્સને હંમેશાં અવરોધિત કરો</translation>
 <translation id="4538792345715658285">ઉદ્યોગ નીતિ દ્વારા ઇન્સ્ટોલ થયેલું છે.</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" /> અને <ph name="WEBSITE_2" /> પર તમારો ડેટા વાંચી શકે છે</translation>
@@ -2377,6 +2392,7 @@
 <translation id="457386861538956877">વધુ...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Bluetooth ડિવાઇસની જોડી કરો</translation>
+<translation id="4578012756826807359">તમારા સાઇન ઇન ડેટાને સફળતાપૂર્વક ડિલીટ કરવામાં આવ્યો.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> કાસ્ટ કરવામાં અસમર્થ.</translation>
 <translation id="4581774856936278355">Linuxની પુનઃસ્થાપના કરતી વખતે ભૂલ આવી</translation>
 <translation id="4582563038311694664">તમામ સેટિંગ્સને ફરીથી સેટ કરો</translation>
@@ -2494,7 +2510,6 @@
 <translation id="4763830802490665879">બહુવિધ સાઇટ્સની કૂકીઝને બહાર નીકળવા પર સાફ કરવામાં આવશે.</translation>
 <translation id="4765582662863429759">Android Messagesને તમારા ફોન પરથી તમારી Chromebook પર ટેક્સ્ટને પ્રસારિત કરવાની મંજૂરી આપે છે</translation>
 <translation id="4768332406694066911">તમારી પાસે આ સંસ્થાઓના પ્રમાણપત્ર છે કે જે તમને ઓળખે છે</translation>
-<translation id="4772404146526168240">બન્ને સ્ક્રીન</translation>
 <translation id="4776146737004271126">Android સેટિંગ ખોલો</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> માટેનો પાસવર્ડ </translation>
 <translation id="4777825441726637019">Play સ્ટોર</translation>
@@ -2602,7 +2617,6 @@
 <translation id="4927846293686536410">તમારા તમામ ઉપકરણો પર તમારા બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને અન્ય સેટિંગ્સ મેળવવા માટે સાઇન ઇન કરો. તમે તમારી Google સેવાઓમાં પણ આપમેળે સાઇન ઇન થશો.</translation>
 <translation id="4929386379796360314">નિર્ધારિત સ્થાન પ્રિન્ટ કરો</translation>
 <translation id="4930714375720679147">ચાલુ કરો</translation>
-<translation id="4931132176527519925">હંમેશાં મિરરિંગનો ઉપયોગ કરો</translation>
 <translation id="4932733599132424254">તારીખ</translation>
 <translation id="4933484234309072027"><ph name="URL" /> પર એમ્બેડ કર્યું</translation>
 <translation id="493571969993549666">નિરીક્ષિત વપરાશકર્તા ઉમેરો</translation>
@@ -2642,6 +2656,7 @@
 <translation id="4992066212339426712">અનમ્યૂટ કરો</translation>
 <translation id="4992458225095111526">Powerwash ની પુષ્ટિ કરો</translation>
 <translation id="4992473555164495036">તમારા વ્યવસ્થાપકે ઉપલબ્ધ ઇનપુટ પદ્ધતિઓને મર્યાદિત કરેલ છે.</translation>
+<translation id="4992866843815555470">તમારા ડૉકની સર્વિસ કરાવવી જરૂરી છે. કોઈ કામ કરવામાં ન આવે તો તમારા ડૉકનો પંખો બંધ થઈ જશે.</translation>
 <translation id="4992926179187649719">'ઓકે Google' ચાલુ કરો</translation>
 <translation id="4994474651455208930">પ્રોટોકૉલ્સ માટે ડિફૉલ્ટ હેન્ડલર્સ બનવા માટે સાઇટને પૂછવાની મંજૂરી આપો</translation>
 <translation id="4994754230098574403">સેટ કરી રહ્યા છીએ</translation>
@@ -2780,7 +2795,6 @@
 <translation id="5233231016133573565">પ્રક્રિયા ID</translation>
 <translation id="5233638681132016545">નવું ટૅબ</translation>
 <translation id="5233736638227740678">&amp;પેસ્ટ કરો</translation>
-<translation id="5234764350956374838">કાઢી નાખો</translation>
 <translation id="5235050375939235066">ઍપ્લિકેશનને અનઇન્સ્ટૉલ કરીએ?</translation>
 <translation id="5235750401727657667">નવું ટૅબ ખોલતી વખતે તમને દેખાય છે તે પેજને બદલો</translation>
 <translation id="5238278114306905396">ઍપ્લિકેશન "<ph name="EXTENSION_NAME" />" આપમેળે દૂર થઈ ગઈ છે.</translation>
@@ -2845,6 +2859,7 @@
 <translation id="5319359161174645648">Google Chromeની ભલામણ કરે છે</translation>
 <translation id="532247166573571973">સર્વર પહોંચની બહાર હોઇ શકે છે. પછીથી ફરી પ્રયાસ કરો.</translation>
 <translation id="5324780743567488672">તમારા સ્થાનનો ઉપયોગ કરીને આપમેળે સમય ઝોન સેટ કરો</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - ઑરિજિનલ ફાઇલોમાં સાચવવાની મંજૂરી ધરાવે છે</translation>
 <translation id="5327248766486351172">નામ</translation>
 <translation id="5327570636534774768">આ ડિવાઇસ ભિન્ન ડોમેન દ્વારા મેનેજમેન્ટ માટે ચિહ્નિત કર્યું છે. ડેમો મોડ સેટઅપ કરતા પહેલાં તે ડોમેનમાંથી તેને જોગવાઈઓને દૂર કરો.</translation>
 <translation id="532943162177641444">આ ડિવાઇસ દ્વારા ઉપયોગમાં લઈ શકાય એવું મોબાઇલ હોટસ્પોટ સેટ કરવા માટે તમારા <ph name="PHONE_NAME" /> પરની સૂચનાને ટૅપ કરો.</translation>
@@ -2987,7 +3002,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> આ કરવા માંગે છે</translation>
 <translation id="5534304873398226603">ફોટો અથવા વીડિયો કાઢી નાખો</translation>
 <translation id="5535941515421698170">આ ઉપકરણ પરથી તમારો અસ્તિત્વમાંનો ડેટા પણ દૂર કરો</translation>
-<translation id="5537725057119320332">કાસ્ટ કરો</translation>
 <translation id="5539221284352502426">તમે દાખલ કરેલો પાસવર્ડ સર્વર દ્વારા નકારવામાં આવ્યો હતો. આ શક્ય કારણો હોઈ શકે છે: પાસવર્ડ ખૂબ ટૂંકો છે. પાસવર્ડમાં સંખ્યાઓ અથવા પ્રતીકોનો સમાવેશ થવો જ જોઈએ. પાસવર્ડ પહેલાંના પાસવર્ડ કરતાં જુદો હોવો જોઈએ.</translation>
 <translation id="5541687815721799001">ઍપ્લિકેશનનો ઉપયોગ કરો</translation>
 <translation id="5542132724887566711">પ્રોફાઇલ</translation>
@@ -3107,7 +3121,7 @@
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Chromeને તમારા ડિફૉલ્ટ બ્રાઉઝર તરીકે સેટ કરો</translation>
 <translation id="5711983031544731014">અનલૉક કરવામાં અસમર્થ છે. તમારો પાસવર્ડ દાખલ કરો.</translation>
-<translation id="5713723565110096165">ખોટો પિન. બાકી ફરી પ્રયાસો: <ph name="RETRIES" />.</translation>
+<translation id="5713723565110096165">ખોટો પિન. બાકીના ફરી પ્રયાસો: <ph name="RETRIES" />.</translation>
 <translation id="5715711091495208045">પ્લગિન બ્રોકર: <ph name="PLUGIN_NAME" /></translation>
 <translation id="5719603411793408026">ડિફૉલ્ટ શોધ એંજિન્સ</translation>
 <translation id="5720705177508910913">વર્તમાન વપરાશકર્તા</translation>
@@ -3298,14 +3312,13 @@
 <translation id="5997337190805127100">સાઇટ ઍક્સેસ વિશે વધુ જાણો</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' માટે <ph name="RESULT_COUNT" /> પરિણામ</translation>
 <translation id="6002458620803359783">મનપસંદ વૉઇસ</translation>
-<translation id="6005695835120147974">મીડિયા રાઉટર</translation>
 <translation id="6006484371116297560">ક્લાસિક</translation>
 <translation id="6007240208646052708">વૉઇસ શોધ સેવા તમારી ભાષામાં ઉપલબ્ધ નથી.</translation>
 <translation id="6009781704028455063">બિલ્ટ-ઇન સેન્સર</translation>
 <translation id="6010869025736512584">વીડિયો ઇનપુટને ઍક્સેસ કરી રહ્યાં છીએ</translation>
 <translation id="6011193465932186973">ફિંગરપ્રિન્ટ</translation>
 <translation id="6011449291337289699">સાઇટનો ડેટા સાફ કરો</translation>
-<translation id="6015266928248016057">અમાન્ય PUK. બાકી ફરી પ્રયાસો: <ph name="RETRIES" />.</translation>
+<translation id="6015266928248016057">અમાન્ય PUK. બાકીના ફરી પ્રયાસો: <ph name="RETRIES" />.</translation>
 <translation id="6015796118275082299">વર્ષ</translation>
 <translation id="6016551720757758985">અગાઉના વર્ઝન પર પાછા ફરવાની સાથે Powerwashની ખાતરી કરો</translation>
 <translation id="6016972670657536680">ભાષા અને કીબોર્ડ બટન પસંદ કરો. હાલમાં પસંદ કરેલ ભાષા <ph name="LANGUAGE" /> છે.</translation>
@@ -3498,7 +3511,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{તમારા નેટવર્ક પર નવું પ્રિન્ટર}one{તમારા નેટવર્ક પર નવા પ્રિન્ટર્સ}other{તમારા નેટવર્ક પર નવા પ્રિન્ટર્સ}}</translation>
 <translation id="6286708577777130801">સાચવેલ પાસવર્ડની વિગતો</translation>
 <translation id="6289452883081499048">વ્યક્તિગત Google સેવાઓ જેમ કે Play</translation>
-<translation id="6290556621549272952">તમે Chromiumમાંથી તમારા TV પર અથવા બીજા ડિવાઇસ પર કન્ટેન્ટ પ્રદર્શિત કરવા માટે આ સુવિધાનો ઉપયોગ કરી શકો છો.</translation>
 <translation id="6291949900244949761">જ્યારે કોઈ સાઇટ USB ઉપકરણોને ઍક્સેસ કરવા માગે ત્યારે પૂછો (સુઝાવ આપેલ)</translation>
 <translation id="6291953229176937411">ફાઇન્ડર માં &amp;બતાવો</translation>
 <translation id="6295158916970320988">બધી સાઇટ્સ</translation>
@@ -3562,6 +3574,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />સિસ્ટમ માહિતી<ph name="END_LINK1" /> અને <ph name="BEGIN_LINK2" />મેટ્રિક્સ<ph name="END_LINK2" /> મોકલો</translation>
 <translation id="6396988158856674517">સાઇટને મોશન સેન્સરનો ઉપયોગ કરવાથી બ્લૉક કરો</translation>
 <translation id="6397094776139756010">સિંક અને વૈયક્તિકરણના વિકલ્પો</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> તમારા ફેરફારોને સીધા નીચેનાં ફોલ્ડરમાં રહેલી ફાઇલોમાં સાચવી શકશે. આ ટૅબ ખુલ્લું હોય ત્યારે આ સાઇટ ફેરફારોને સાચવી શકે છે.</translation>
 <translation id="6398715114293939307">Google Play સ્ટોર દૂર કરો</translation>
 <translation id="6398765197997659313">પૂર્ણ સ્ક્રીનથી બહાર નીકળો</translation>
 <translation id="6399774419735315745">જાસૂસ</translation>
@@ -3606,11 +3619,13 @@
 <translation id="6455264371803474013">વિશિષ્ટ સાઇટ પર</translation>
 <translation id="6455894534188563617">&amp;નવું ફોલ્ડર</translation>
 <translation id="6456394469623773452">સરસ</translation>
+<translation id="6456955391422100996">જાહેરાત કાઢી નાખી.</translation>
 <translation id="645705751491738698">JavaScript ને અવરોધિત કરવાનું ચાલુ રાખો</translation>
 <translation id="6458701200018867744">અપલોડ નિષ્ફળ થયું (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">શોધવા માટે પસંદગીનો ઉપયોગ કરો</translation>
 <translation id="6459799433792303855">સક્રિય વિંડો બીજા ડિસ્પ્લેમાં ખસેડી છે.</translation>
 <translation id="6460601847208524483">આગલું શોધો</translation>
+<translation id="6461170143930046705">નેટવર્ક શોધી રહ્યાં છીએ...</translation>
 <translation id="6463795194797719782">&amp;સંપાદિત કરો</translation>
 <translation id="6466988389784393586">બધાં બુકમાર્ક્સ &amp;ખોલો</translation>
 <translation id="6467304607960172345">પૂર્ણસ્ક્રીન વીડિયો ઑપ્ટિમાઇઝ કરો</translation>
@@ -3649,6 +3664,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">તમે <ph name="NETWORK_TYPE" /> નેટવર્કથી કનેક્ટ થયાં છો.</translation>
 <translation id="6527303717912515753">શેર કરો</translation>
 <translation id="6528513914570774834">આ ઉપકરણના અન્ય વપરાશકર્તાઓને આ નેટવર્ક વાપરવાની મંજૂરી આપો</translation>
 <translation id="652948702951888897">Chrome ઇતિહાસ</translation>
@@ -3745,7 +3761,6 @@
 <translation id="6680650203439190394">રેટ કરો</translation>
 <translation id="6681668084120808868">ફોટો લો</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" ને અનઇન્સ્ટૉલ કરવામાં આવશે.</translation>
-<translation id="6685083257944113180"><ph name="SINK_NAME" />, <ph name="SINK_STATUS" /> રોકો</translation>
 <translation id="668599234725812620">Google Play ખોલો</translation>
 <translation id="6686490380836145850">જમણી બાજુનાં ટૅબ્સ બંધ કરો</translation>
 <translation id="6686817083349815241">તમારો પાસવર્ડ સાચવો</translation>
@@ -3853,6 +3868,7 @@
 <translation id="6845038076637626672">મહત્તમ ખોલો</translation>
 <translation id="6845325883481699275">Chrome સુરક્ષાને વધુ સારી બનાવવામાં સહાય કરો</translation>
 <translation id="6848388270925200958">હમણાં, તમારી પાસે કેટલાક કાર્ડ છે, જેનો માત્ર આ ડિવાઇસ પર ઉપયોગ કરી શકાય છે</translation>
+<translation id="6850286078059909152">ટેક્સ્ટનો રંગ</translation>
 <translation id="6851497530878285708">ઍપ ચાલુ કરી</translation>
 <translation id="6853388645642883916">અપડેટકર્તા નિષ્ક્રિય છે</translation>
 <translation id="68541483639528434">અન્ય ટૅબ્સને બંધ કરો</translation>
@@ -3902,7 +3918,6 @@
 <translation id="6923132443355966645">સ્ક્રૉલ કરો/ ક્લિક કરો</translation>
 <translation id="6923633482430812883">શેર માઉન્ટ કરવામાં ભૂલ. કૃપા કરીને ચેક કરો કે તમે કનેક્ટ કરવાનો પ્રયાસ કરી રહ્યા છો તે ફાઇલ સર્વર SMBv2 અથવા તે પછીના વર્ઝનનું સમર્થન કરે છે.</translation>
 <translation id="6930036377490597025">બાહ્ય સુરક્ષા કોડ અને બિલ્ટ-ઇન સેન્સર</translation>
-<translation id="6930242544192836755">અવધિ</translation>
 <translation id="693807610556624488">લેખન ઓપરેશને એટ્રિબ્યુટની મહત્તમ લંબાઈને વટાવી દીધી છે: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">તમારા પ્રમાણપત્ર સાથે <ph name="HOST_NAME" /> ને અધિકૃત કરવા માટે કૃપા કરીને <ph name="TOKEN_NAME" /> પર સાઇન ઇન કરો.</translation>
 <translation id="6943176775188458830">છાપવાનું રદ કરો</translation>
@@ -3916,6 +3931,7 @@
 <translation id="6951153907720526401">ચુકવણી હૅન્ડલર</translation>
 <translation id="6951663584153258142">તમારી સંસ્થા તમને આ ડિવાઇસ અપડેટ કરવા માટે કહે છે</translation>
 <translation id="6953878494808481632">સંબંધિત માહિતી</translation>
+<translation id="6953916367503892689">{0,plural, =1{ફાઇલ: <ph name="FILES" />}one{ફાઇલ: <ph name="FILES" />}other{ફાઇલો: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">પૉપઅપની તપાસ કરો</translation>
 <translation id="6957044667612803194">આ સુરક્ષા કોડ પિનને સહાય કરતો નથી</translation>
 <translation id="6957231940976260713">સેવાનું નામ</translation>
@@ -4128,7 +4144,6 @@
 <translation id="7254554697254365959">આ પૃષ્ઠનો અનુવાદ કરી શકાયો નથી.</translation>
 <translation id="7254951428499890870">શું તમે ખરેખર "<ph name="APP_NAME" />" ને ડાયગ્નોસ્ટિક મોડમાં લોંચ કરવા માગો છો?</translation>
 <translation id="7255002516883565667">હમણાં, તમારી પાસે એક કાર્ડ છે જેનો માત્ર આ ડિવાઇસ પર ઉપયોગ કરી શકાય છે</translation>
-<translation id="7255220508626648026">કાસ્ટ કરી રહ્યાં છે: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">રીસેટ કન્ફર્મ કરવા માટે તમારા સુરક્ષા કોડને ટચ કરો. સુરક્ષા કોડ પરની, તેના પિન સહિતની તેમાં સ્ટોર કરેલી બધી માહિતી કાઢી નાખવામાં આવશે.</translation>
 <translation id="7255935316994522020">લાગુ કરો</translation>
 <translation id="7256069762010468647">સાઇટ તમારા કૅમેરાનો ઉપયોગ કરી રહી છે</translation>
@@ -4262,6 +4277,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">સ્થાન ખોલો...</translation>
 <translation id="7458168200501453431">Google શોધમાં જે જોડણી તપાસનારનો ઉપયોગ થાય છે તેનો જ ઉપયોગ કરે છે. તમે બાઉઝરમાં ટાઇપ કરો છો તે ટેક્સ્ટ Googleને મોકલવામાં આવે છે.</translation>
+<translation id="7460045493116006516">તમે ઇન્સ્ટૉલ કરેલી વર્તમાન થીમ</translation>
 <translation id="7461924472993315131">પિન કરો</translation>
 <translation id="746216226901520237">આગલી વખતે, તમારો ફોન તમારા <ph name="DEVICE_TYPE" />ને અનલૉક કરશે. તમે સેટિંગમાં Smart Lock બંધ કરી શકો છો.</translation>
 <translation id="7463006580194749499">વ્યક્તિ ઉમેરો</translation>
@@ -4321,6 +4337,7 @@
 <translation id="7554791636758816595">નવું ટૅબ</translation>
 <translation id="7556033326131260574">Smart Lock તમારા એકાઉન્ટને ચકાસી શક્યું નથી. દાખલ થવા માટે તમારો પાસવર્ડ ટાઇપ કરો.</translation>
 <translation id="7556242789364317684">કમનસીબે, <ph name="SHORT_PRODUCT_NAME" /> તમારી સેટિંગ્સને પુનઃપ્રાપ્ત કરવામાં અસમર્થ છે. ભૂલને ઠીક કરવા માટે, <ph name="SHORT_PRODUCT_NAME" /> એ Powerwash સાથે તમારા ઉપકરણને ફરીથી સેટ કરવું આવશ્યક છે.</translation>
+<translation id="7559444627302317199">કૃપા કરીને તમારું નેટવર્ક કનેક્શન ચેક કરો અને ફરી પ્રયાસ કરો.</translation>
 <translation id="7559719679815339381">કૃપા કરીને રાહ જુઓ....કિઓસ્ક ઍપ્લિકેશન અપડેટ થવાની પ્રક્રિયામાં છે. USB સ્ટીક દૂર કરશો નહીં.</translation>
 <translation id="7561196759112975576">હંમેશાં</translation>
 <translation id="7563991800558061108">આ ભૂલથી બહાર નીકળવા માટે, તમને સાઇન-ઇન સ્ક્રીન પરથી તમારા Google
@@ -4562,7 +4579,6 @@
 <translation id="7887334752153342268">ડુપ્લિકેટ</translation>
 <translation id="7887864092952184874">Bluetooth માઉસ જોડાયું</translation>
 <translation id="7889565820482017512">ડિસ્પ્લેનું કદ</translation>
-<translation id="7889966925761734854">શોધો</translation>
 <translation id="7893008570150657497">તમારા કમ્પ્યુટર પરથી ફોટો, સંગીત અને અન્ય મીડિયા ઍક્સેસ કરો</translation>
 <translation id="7893153962594818789">આ <ph name="DEVICE_TYPE" />માં Bluetooth બંધ છે. તમારો પાસવર્ડ દાખલ કરો અને Bluetooth ચાલુ કરો.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (ડિફૉલ્ટ)</translation>
@@ -4570,7 +4586,6 @@
 <translation id="7898627924844766532">ટુલબારમાં રાખો</translation>
 <translation id="7898725031477653577">હંમેશાં અનુવાદ કરો</translation>
 <translation id="790040513076446191">ગોપનીયતા સંબંધિત સેટિંગ્સનો કૂશળતાપૂર્વક ઉપયોગ કરે છે.</translation>
-<translation id="7902874111237641165">સુગમ ગતિ [બીટા]</translation>
 <translation id="7903345046358933331">પૃષ્ઠ પ્રતિસાદવિહીન બની ગયું છે. તમે તે પ્રતિસાદ આપવા યોગ્ય બને તેની રાહ જોઈ શકો છો અથવા તેને બંધ કરી શકો છો.</translation>
 <translation id="7903742244674067440">તમારી પાસે ફાઇલ પર પ્રમાણપત્રો છે જે આ પ્રમાણપત્ર અધિકારીઓને ઓળખે છે</translation>
 <translation id="7903925330883316394">ઉપયોગિતા: <ph name="UTILITY_TYPE" /></translation>
@@ -4677,6 +4692,7 @@
 <translation id="8037117027592400564">સિન્થેસાઇઝ કરેલ વાણીનો ઉપયોગ કરીને બધી બોલાયેલ ટેક્સ્ટને વાંચો</translation>
 <translation id="8037357227543935929">પૂછો (ડિફૉલ્ટ)</translation>
 <translation id="803771048473350947">ફાઇલ</translation>
+<translation id="8042142357103597104">ટેક્સ્ટની અસ્પષ્ટતા</translation>
 <translation id="8044899503464538266">ધીમું</translation>
 <translation id="8045253504249021590">સિંક, Google ડૅશબોર્ડ દ્વારા અટકાવવામાં આવ્યું છે.</translation>
 <translation id="8045923671629973368">ઍપ્લિકેશન ID અથવા વેબસ્ટોર URL દાખલ કરો</translation>
@@ -4713,7 +4729,6 @@
     <ph name="BEGIN_PARAGRAPH5" />તમે સેટિંગમાં આ સેવા બંધ કરી શકો છો.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN મેળ ખાતાં નથી</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> એક્સ્ટેંશનનાં પ્રૉક્સી સેટિંગનો ઉપયોગ કરી રહ્યું છે</translation>
-<translation id="8099495042588009598">વધુ પરવાનગીઓ</translation>
 <translation id="8101987792947961127">આગલા રીબૂટ પર Powerwash આવશ્યક છે</translation>
 <translation id="8102159139658438129">તમારા કનેક્ટ કરેલા ફોન માટેના વિકલ્પો જોવા માટે <ph name="LINK_BEGIN" />સેટિંગ<ph name="LINK_END" /> પર જાઓ</translation>
 <translation id="8104696615244072556">તમારા <ph name="IDS_SHORT_PRODUCT_NAME" /> ડિવાઇસને Powerwash કરો અને પાછલા વર્ઝન પર પાછા ફરો.</translation>
@@ -4765,8 +4780,10 @@
     મને નથી લાગતું કે આ સાઇટને બ્લૉક કરવી જોઈએ!</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" /> પર સ્વિચ કરો</translation>
 <translation id="8184318863960255706">વધુ માહિતી</translation>
+<translation id="8184472985242519288">સમાન</translation>
 <translation id="8185331656081929126">નેટવર્ક પર નવા પ્રિન્ટર્સ શોધવામાં આવે ત્યારે સૂચનાઓ બતાવો</translation>
 <translation id="8186609076106987817">સર્વર ફાઇલને શોધી શક્યું નથી.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> નીચે આપેલાં ફોલ્ડરની બધી ફાઇલો વાંચી શકે છે. આ ટૅબ ખુલ્લું હોય ત્યારે જ આ સાઇટ ફોલ્ડરમાં થયેલા ફેરફારોને જોઈ શકે છે.</translation>
 <translation id="8188389033983459049">તમારા ઉપકરણની સેટિંગ તપાસો અને ચાલુ રાખવા માટે તેને ચાલુ કરો</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> થી કનેક્ટ કરે છે</translation>
 <translation id="8191230140820435481">તમારી ઍપ્લિકેશનો, એક્સ્ટેન્શન અને થીમ્સ મેનેજ કરો</translation>
@@ -4869,8 +4886,7 @@
 <translation id="8339059274628563283"><ph name="SITE" /> એ સ્થાનિક રીતે સ્ટોર કરેલો ડેટા</translation>
 <translation id="833986336429795709">આ લિંક ખોલવા માટે, એક ઍપ પસંદ કરો</translation>
 <translation id="8342861492835240085">સંગ્રહ પસંદ કરો</translation>
-<translation id="834290227245955730">અમાન્ય પિન. બાકી ફરી પ્રયાસો: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">શ્રેષ્ઠ વીડિયો અથવા ઍનિમેશન માટે ઉચ્ચ બૅન્ડવિડ્થનો ઉપયોગ કરો. ધીમા કનેક્શન ધરાવતાં અન્ય લોકોને કદાચ તમારું કન્ટેન્ટ ન દેખાય.</translation>
+<translation id="834290227245955730">અમાન્ય પિન. બાકીના ફરી પ્રયાસો: <ph name="RETRIES" />.</translation>
 <translation id="8351419472474436977">આ એક્સ્ટેન્શને તમારા પ્રૉક્સી સેટિંગનું નિયંત્રણ લઈ લીધું છે, એનો અર્થ છે કે તમે જે કંઈ પણ ઓનલાઇન કરો છો એને એ બદલી, ભંગ કરી કે છુપાઈને પારકી વાતો સાંભળી શકે છે. આ ફેરફાર કેમ થયો એ અંગે જો તમને ખાતરી નથી, તો સંભવિત રૂપે એ તમને જોઈતું નહિ હોય.</translation>
 <translation id="8351630282875799764">બૅટરી ચાર્જ નથી થઈ રહી</translation>
 <translation id="835238322900896202">અનઇન્સ્ટૉલેશન દરમિયાન ભૂલ આવી. કૃપા કરીને ટર્મિનલ મારફતે અનઇન્સ્ટૉલ કરો.</translation>
@@ -4903,9 +4919,11 @@
 <translation id="839736845446313156">નોંધણી કરો</translation>
 <translation id="8398877366907290961">કોઈપણ રીતે આગળ વધારો</translation>
 <translation id="8400146488506985033">લોકોને સંચાલિત કરો</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> તમારા ફેરફારોને સીધા નીચેના ફોલ્ડરમાં રહેલી ફાઇલોમાં સાચવી શકે છે. આ ટૅબ ખુલ્લું હોય ત્યારે આ સાઇટ ફેરફારોને સાચવી શકે છે.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">પહેલા પૂછો (ભલામણ કરેલ)</translation>
 <translation id="8418445294933751433">ટૅબ તરીકે &amp;બતાવો</translation>
+<translation id="8418905021510211421">આ પેજ તમારા ડિવાઇસ પર ફોલ્ડર વાંચવાની મંજૂરી ધરાવે છે.</translation>
 <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' માટે શોધ પરિણામ</translation>
 <translation id="8419368276599091549">તમારા <ph name="DEVICE_TYPE" /> પર સ્વાગત છે!</translation>
 <translation id="8425213833346101688">બદલો</translation>
@@ -4925,6 +4943,7 @@
 <translation id="8438566539970814960">શોધ અને બ્રાઉઝિંગ વધુ સારું બનાવો</translation>
 <translation id="8439506636278576865">આ ભાષામાં પૃષ્ઠોનું અનુવાદ કરવાની ઓફર આપે છે</translation>
 <translation id="8440630305826533614">Linux ઍપ</translation>
+<translation id="844241640324986723">તમારા સાઇન ઇન ડેટાને ડિલીટ કરવાનું નિષ્ફળ થયું.</translation>
 <translation id="8443338615972234259">કૃપા કરીને તમારા નિરીક્ષિત વપરાશકર્તા માટે હમણાં જ નવું એકાઉન્ટ બનાવો.</translation>
 <translation id="8446884382197647889">વધુ જાણો</translation>
 <translation id="8447409163267621480">કાં તો Ctrl અથવા Alt શામેલ કરો</translation>
@@ -4940,8 +4959,6 @@
 <translation id="8461914792118322307">પ્રૉક્સી</translation>
 <translation id="8463215747450521436">આ નિરીક્ષણ કરેલા વપરાશકર્તા, મેનેજર દ્વારા ડિલીટ કરવામાં અથવા બંધ કરવામાં આવ્યો હોય શકે છે. તમે આ વપરાશકર્તા તરીકે સાઇન ઇન કરવાનું ચાલુ રાખવા માંગો છો, તો મેનેજરનો સંપર્ક કરો.</translation>
 <translation id="846374874681391779">ડાઉનલોડ બાર</translation>
-<translation id="8463807869745732775">"&gt;
-    સુરક્ષા કોડનો સ્ટોર કરેલો સાઇન ઇન ડેટા</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> અક્ષમ કર્યું.</translation>
 <translation id="8464132254133862871">સેવા માટે આ વપરાશકર્તા એકાઉન્ટ પાત્ર નથી.</translation>
 <translation id="8465252176946159372">માન્ય નથી</translation>
@@ -4966,7 +4983,7 @@
 <translation id="8497219075884839166">વિંડોની ઉપયોગીતાઓ</translation>
 <translation id="8498214519255567734">ઓછા પ્રકાશમાં તમારી સ્ક્રીન પર જોવાનું અથવા વાંચવાનું સરળ બનાવે છે</translation>
 <translation id="8498395510292172881">Chromeમાં વાંચવાનું ચાલુ રાખો</translation>
-<translation id="8500234928660943538">ખોટો PUK. બાકી ફરી પ્રયાસો: <ph name="RETRIES" />.</translation>
+<translation id="8500234928660943538">ખોટો PUK. બાકીના ફરી પ્રયાસો: <ph name="RETRIES" />.</translation>
 <translation id="8502536196501630039">Google Playમાંથી ઍપનો ઉપયોગ કરવા માટે, પહેલા તમારે તમારી ઍપ પુનઃપ્રાપ્ત કરવી જરૂરી છે. કેટલોક ડેટા ગુમ થયો હોઈ શકે છે.</translation>
 <translation id="8503813439785031346">વપરાશકર્તાનામ</translation>
 <translation id="850875081535031620">કોઈ નુકસાનકારક સૉફ્ટવેર મળ્યું નથી</translation>
@@ -5007,6 +5024,7 @@
 <translation id="8569002732135253578">હમણાં <ph name="DOCUMENT_NAME" /> છાપી રહ્યાં છીએ</translation>
 <translation id="8569682776816196752">કોઈ ગંતવ્યો મળ્યાં નથી</translation>
 <translation id="8571213806525832805">છેલ્લા 4 અઠવાડિયા</translation>
+<translation id="8573403125070227391">આ જાહેરાત તમારા ડિવાઇસ માટે ઘણાં વધારે સંસાધનોનો ઉપયોગ કરે છે, જેથી Chrome દ્વારા તેને કાઢી નાખવામાં આવી છે.</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> પર હંમેશાં અવાજને મંજૂરી આપો</translation>
 <translation id="8575286410928791436">છોડવા માટે <ph name="KEY_EQUIVALENT" /> દબાવી રાખો</translation>
 <translation id="8578639784464423491">99 અક્ષરો કરતાં વધુ હોઈ શકતો નથી</translation>
@@ -5030,13 +5048,13 @@
 <translation id="8609465669617005112">ઉપર ખસેડો</translation>
 <translation id="8610103157987623234">ખોટું ફૉર્મેટ. કૃપા કરીને ફરી પ્રયાસ કરો</translation>
 <translation id="8615618338313291042">છૂપી ઍપ્લિકેશન: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">ડ્રૉપ શૅડો</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">રોમિંગ સ્થિતિ</translation>
 <translation id="8620765578342452535">નેટવર્ક કનેક્શન્સ ગોઠવો</translation>
 <translation id="8621866727807194849">તમારા કમ્પ્યુટરમાં નુકસાનકારક સૉફ્ટવેર છે. Chrome તે કાઢી નાખે છે, તમારી સેટિંગ પાછી મેળવે છે અને એક્સ્ટેંશન બંધ કરે છે. તેને કારણે તમારું બ્રાઉઝર ફરી સામાન્ય રીતે કામ કરતું થઈ જશે.</translation>
 <translation id="8621979332865976405">તમારી સંપૂર્ણ સ્ક્રીન શેર કરો</translation>
 <translation id="862542460444371744">&amp;એક્સ્ટેન્શન્સ</translation>
-<translation id="8627151598708688654">સ્રોત પસંદ કરો</translation>
 <translation id="862727964348362408">સસ્પેન્ડેડ</translation>
 <translation id="862750493060684461">CSS કૅશ મેમરી</translation>
 <translation id="8627795981664801467">ફક્ત સુરક્ષિત કનેક્શન્સ</translation>
@@ -5090,6 +5108,7 @@
 <translation id="8688579245973331962">તમારું નામ દેખાતું નથી?</translation>
 <translation id="8688591111840995413">ખોટો પાસવર્ડ</translation>
 <translation id="8688672835843460752">ઉપલબ્ધ</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Open &amp;Location...</translation>
 <translation id="869884720829132584">ઍપ્લિકેશનો મેનૂ</translation>
 <translation id="869891660844655955">સમાપ્તિ તારીખ</translation>
@@ -5253,6 +5272,7 @@
 <translation id="891365694296252935">વપરાશ અને નિદાનનો ડેટા મોકલો. આ ડિવાઇસ હાલમાં Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલી રહ્યું છે. આનો ઉપયોગ તમારા બાળકને ઓળખવા માટે થશે નહીં અને સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. આ સેટિંગ માલિક દ્વારા લાગુ કરવામાં આવેલ છે. જો તમારા બાળક માટે વધારાની વેબ અને ઍપ પ્રવૃત્તિ ચાલુ હોય, તો આ ડેટા તેમના Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">સૂચનને લોડ કરી રહ્યું છે</translation>
 <translation id="8916476537757519021">છુપો મોડ સબફ્રેમ: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - તમારા ડિવાઇસ પર ફોલ્ડર વાંચવાની મંજૂરી ધરાવે છે</translation>
 <translation id="8919275547519617350">તમારા બધા ઉપકરણો પર તમારા બધા પાસવર્ડ મેળવવા માટે સાઇન ઇન કરો અને સિંક ચાલુ કરો.</translation>
 <translation id="8921366488406707015">તમારો સુરક્ષા કોડ ચકાસી રહ્યાં છીએ...</translation>
 <translation id="8922013791253848639">આ સાઇટ પર જાહેરાતો માટે હંમેશાં પરવાનગી આપે છે</translation>
@@ -5282,7 +5302,6 @@
 <translation id="8965037249707889821">જૂનો પાસવર્ડ દાખલ કરો</translation>
 <translation id="8966870118594285808">જો તમે ટૅબ અકસ્માતે બંધ કર્યું હોય, તો તે ફરી ખોલો</translation>
 <translation id="8967866634928501045">બતાવવા માટે Alt Shift A દબાવો</translation>
-<translation id="8970203673128054105">કાસ્ટ મોડ સૂચિ જુઓ</translation>
 <translation id="89720367119469899">બહાર નીકળો</translation>
 <translation id="8972513834460200407">ફાયરવોલ Google સર્વર્સથી ડાઉનલોડ્સ અવરોધિત તો નથી કરતું તેની ખાતરી કરવા માટે કૃપા કરીને તમારા નેટવર્ક વ્યવસ્થાપક સાથે તપાસ કરો.</translation>
 <translation id="8973557916016709913">ઝૂમ સ્તર દૂર કરો</translation>
@@ -5431,6 +5450,7 @@
 <translation id="9214520840402538427">અરે! ઇન્સ્ટૉલેશન-સમયનો ચાલુ એટ્રિબ્યૂટનો સમય સમાપ્ત થયો. કૃપા કરીને તમારા સપોર્ટ પ્રતિનિધિનો સંપર્ક કરો.</translation>
 <translation id="9214695392875603905">કપકૅક</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" ઉમેરાયું</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> તમારા ફેરફારોને સીધા નીચેની ફાઇલમાં સાચવી શકશે. આ ટૅબ ખુલ્લું હોય ત્યારે આ સાઇટ ફેરફારોને સાચવી શકે છે.</translation>
 <translation id="9218430445555521422">ડિફોલ્ટ તરીકે સેટ કરો</translation>
 <translation id="9219103736887031265">છબીઓ</translation>
 <translation id="9220525904950070496">એકાઉન્ટ દૂર કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index cce09c5..265fcb8 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">वर्चुअल मशीन शुरू करने में गड़बड़ी हुई. कृपया फिर से कोशिश करें.</translation>
 <translation id="1089439967362294234">पासवर्ड बदलें</translation>
 <translation id="1090126737595388931">कोई पृष्ठभूमि ऐप्स  चालू नहीं है</translation>
+<translation id="1090290614672149983">मूल फ़ाइल में किए गए बदलाव सेव करें?</translation>
 <translation id="1090918500949388876">स्क्रीन चालू होने पर कभी भी "OK Google" बोलें और अपनी Assistant सेवा एक्सेस करें</translation>
 <translation id="1091767800771861448">छोड़ने के लिए ESCAPE दबाएं (केवल गैर-आधिकारिक बिल्ड).</translation>
 <translation id="1093457606523402488">दृश्‍यमान नेटवर्क:</translation>
 <translation id="1094607894174825014">पढ़ें या लिखें संचालन का अनुरोध किसी अमान्य ऑफ़सेट के साथ इस पर किया गया था: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">प्रवेश करने से पहले, कृपया <ph name="NETWORK_ID" /> नेटवर्क सक्रिय करने के लिए अतिथि के रूप में प्रविष्ट हों</translation>
+<translation id="110029732810301672">इस टैब को मूल फ़ाइलों में जानकारी सेव करने की अनुमति है.</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> का हमेशा अनुवाद करें</translation>
 <translation id="1108600514891325577">&amp;रोकें</translation>
 <translation id="1110155001042129815">प्रतीक्षा करें</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">धूप के चश्मे</translation>
 <translation id="1151917987301063366"><ph name="HOST" /> को सेंसर एक्सेस करने की हमेशा मंज़ूरी दें</translation>
 <translation id="1153356358378277386">युग्‍मित डिवाइस</translation>
-<translation id="1156488781945104845">मौजूदा समय</translation>
 <translation id="1161575384898972166">क्लाइंट प्रमाणपत्र निर्यात करने के लिए, कृपया <ph name="TOKEN_NAME" /> में साइन इन करें.</translation>
 <translation id="1163931534039071049">फ़्रेम का स्रोत &amp;देखें</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" /> के लिए Smart Lock बंद करें?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player जगह सेटिंग</translation>
 <translation id="1274997165432133392">कुकी और साइट का अन्य डेटा</translation>
 <translation id="127668050356036882">अपनी सभी विंडो बंद करें</translation>
-<translation id="1277908057200820621">डिवाइस सूची देखें</translation>
 <translation id="1280820357415527819">मोबाइल नेटवर्क खोजे जा रहे हैं</translation>
 <translation id="1285320974508926690">कभी भी इस साइट का अनुवाद न करें</translation>
 <translation id="1285484354230578868">डेटा को अपने Google डिस्क खाते में संगृहीत करें</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">होम नेटवर्क, रोमिंग नहीं</translation>
 <translation id="1316136264406804862">खोज रहा है...</translation>
 <translation id="1316495628809031177">सिंक रोका हुआ है</translation>
+<translation id="1317637799698924700">आपका डॉकिंग स्टेशन, यूएसबी टाइप-सी पर काम करने वाले मोड पर चलेगा.</translation>
 <translation id="1322046419516468189">अपने <ph name="SAVED_PASSWORDS_STORE" /> में सेव किए गए पासवर्ड देखें और उन्हें प्रबंधित करें</translation>
 <translation id="1326317727527857210">अपने दूसरे डिवाइस से अपने टैब पाने के लिए, Chrome में साइन इन करें.</translation>
 <translation id="1327074568633507428">'Google क्लाउड प्रिंट' पर प्रिंटर</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="ENROLLMENT_DOMAIN" /> आपके <ph name="BEGIN_LINK" />ब्राउज़र को प्रबंधित करता है<ph name="END_LINK" /></translation>
 <translation id="1366177842110999534">अपने <ph name="DEVICE_TYPE" /> पर Linux टूल, एडिटर और आईडीई चलाएं. &lt;a target="_blank" href="<ph name="URL" />"&gt;ज़्यादा जानें&lt;/a&gt;</translation>
 <translation id="1367951781824006909">कोई फ़ाइल चुनें</translation>
+<translation id="1370749010280229230">डॉक से कनेक्ट किए गए डिसप्ले में कोई समस्या है</translation>
 <translation id="1371301976177520732">आपके बुकमार्क, पासवर्ड, इतिहास और दूसरी कई चीज़ें आपके सभी डिवाइस पर</translation>
 <translation id="1372841398847029212">अपने खाते से सिंक करें</translation>
 <translation id="1374844444528092021">नेटवर्क "<ph name="NETWORK_NAME" />" के लिए आवश्यक प्रमाणपत्र या तो इंस्टॉल नहीं है या अब मान्य नहीं है.  कृपया नया प्रमाणपत्र प्राप्त करें और फिर से कनेक्ट करने का प्रयास करें.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">वेबपेज, एकल फ़ाइल</translation>
 <translation id="1451917004835509682">पर्यवेक्षित व्‍यक्‍ति जोड़ें</translation>
 <translation id="1454223536435069390">स्क्रीन&amp;शॉट लें</translation>
+<translation id="1458243790901188746">{0,plural, =1{फ़ोल्डर: <ph name="DIRECTORIES" />}one{फ़ोल्डर: <ph name="DIRECTORIES" />}other{फ़ोल्डर: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">एक्सटेंशन के ज़रिए जोड़े गए सर्च इंजन</translation>
 <translation id="146000042969587795">यह फ़्रेम ब्लॉक किया गया था क्योंकि इसमें कुछ असुरक्षित सामग्री मौजूद है.</translation>
 <translation id="146219525117638703">ONC स्‍थिति</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">इनपुट विकल्प दिखाएं</translation>
 <translation id="1651008383952180276">आपको एक ही 'पासफ़्रेज़' दो बार डालना होगा</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{'Google क्लाउड प्रिंट' में प्रिंटर जोड़ें ताकि आप कहीं से भी प्रिंट कर सकें.}one{'Google क्लाउड प्रिंट' में # प्रिंटर जोड़ें ताकि आप कहीं से भी प्रिंट कर सकें.}other{'Google क्लाउड प्रिंट' में # प्रिंटर जोड़ें ताकि आप कहीं से भी प्रिंट कर सकें.}}</translation>
+<translation id="1656528038316521561">बैकग्राउंड की पारदर्शिता</translation>
 <translation id="1657406563541664238">Google को अपने आप इस्तेमाल के आंकड़े और खराबी रिपोर्ट भेजकर <ph name="PRODUCT_NAME" /> को बेहतर बनाने में मदद करें</translation>
 <translation id="1658424621194652532">यह पेज आपका माइक्रोफ़ोन एक्सेस कर रहा है.</translation>
 <translation id="1660204651932907780">साइटों को आवाज़ चलाने दें (सुझाया गया)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> आपकी सुरक्षा कुंजी के निर्माता और मॉडल को देखना चाहता है</translation>
 <translation id="1679068421605151609">डेवलपर टूल</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">क्या आप वाकई बाहर निकलना चाहते हैं?</translation>
 <translation id="167983332380191032">प्रबंधक सेवा ने एचटीटीपी गड़बड़ी भेजी है.</translation>
 <translation id="1680849702532889074">आपका Linux ऐप्लिकेशन इंस्टॉल करते समय कोई गड़बड़ी हुई.</translation>
 <translation id="16815041330799488">साइटों को क्लिपबोर्ड पर कॉपी किए गए लेख और इमेज न देखने दें</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">सुरक्षित सामग्री पहचानकर्ता</translation>
 <translation id="175196451752279553">बंद किए गए टैब पु&amp;न: खोलें</translation>
 <translation id="1753905327828125965">सबसे ज़्यादा देखे गए</translation>
+<translation id="1755601632425835748">टेक्स्ट का आकार</translation>
 <translation id="1756681705074952506">इनपुट का तरीका</translation>
 <translation id="1757301747492736405">अनइंस्टॉल करना बाकी है</translation>
 <translation id="175772926354468439">थीम चालू करें</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;छोटा</translation>
 <translation id="1919345977826869612">विज्ञापन</translation>
 <translation id="1919814239594435008">सैंडबॉक्स नहीं किए गए प्लग इन की अनुमति है</translation>
+<translation id="1920390473494685033">संपर्क</translation>
 <translation id="1921050530041573580">अपने फ़ोन को मैसेज ऐप्लिकेशन/सेवा से जोड़ें</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" /> में Google की स्मार्ट सुविधाएं पाएं</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">गुप्त टैब: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> पर <ph name="PEPPER_PLUGIN_NAME" /> आपके कंप्यूटर को एक्सेस करना चाहता है</translation>
 <translation id="2178614541317717477">CA समझौता</translation>
+<translation id="2179849162388791084">आपकी सुरक्षा कुंजी से साइन इन का डेटा इकट्ठा नहीं हो पाया.</translation>
 <translation id="218070003709087997">प्रिंट की जाने वाली कॉपी की संख्या (1 से 999) दर्शाने के लिए किसी संख्या का उपयोग करें.</translation>
 <translation id="2184515124301515068">Chrome को चुनने दें कि साइटें कब आवाज़ चला सकती हैं (सुझाव)</translation>
 <translation id="2187895286714876935">सर्वर प्रमाणपत्र आयात गड़बड़ी</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">सभी कुकी और साइट डेटा</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 आइटम कॉपी किया गया}one{# आइटम कॉपी किए गए}other{# आइटम कॉपी किए गए}}</translation>
 <translation id="2278562042389100163">ब्राउज़र विंडो खोलें</translation>
-<translation id="2279874276457403668">एक बार में केवल एक सत्र बनाया जा सकता है.</translation>
 <translation id="2280486287150724112">दायां हाशिया</translation>
 <translation id="2282146716419988068">GPU प्रक्रिया</translation>
 <translation id="2282155092769082568">URL का अपने आप कॉन्‍फ़िगरेशन:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">लॉक स्क्रीन के नोट <ph name="LOCK_SCREEN_APP_NAME" /> में अपने आप सेव किए जाते हैं. आपका सबसे हाल का नोट लॉक स्क्रीन पर ही रहेगा.</translation>
 <translation id="2353297238722298836">कैमरे और माइक्रोफ़ोन की अनुमति है</translation>
 <translation id="2356070529366658676">पूछें</translation>
-<translation id="2357949918965361754">आप इस सुविधा का उपयोग Chrome की सामग्री को अपने टीवी या दूसरे डिवाइस पर दिखाने के लिए कर सकते हैं.</translation>
 <translation id="2359345697448000899">टूल मेन्यू में एक्सटेंशन क्लिक करके अपने एक्सटेंशन प्रबंधित करें.</translation>
 <translation id="2359808026110333948">जारी रखें</translation>
 <translation id="236117173274098341">ऑप्टिमाइज़ करें</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">आपके संगठन के लिए इस डिवाइस को तुरंत अपडेट करना ज़रूरी है</translation>
 <translation id="2439545803278355377">अपना नया पिन डालें. पिन में कम से कम चार वर्ण होने चाहिए और इसमें अक्षर, संख्याएं, और दूसरे वर्ण भी डाले जा सकते हैं.</translation>
 <translation id="2440604414813129000">स्रोत देखें</translation>
+<translation id="2442916515643169563">टेक्स्ट की परछाई</translation>
 <translation id="2444119669991608829">पेज <ph name="LANGUAGE" /> भाषा में नहीं है?</translation>
 <translation id="2445081178310039857">एक्‍सटेंशन मूल निर्देशिका आवश्यक है.</translation>
 <translation id="2445484935443597917">नई प्रोफ़ाइल बनाएं</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">बाद में नहीं</translation>
 <translation id="2739191690716947896">डीबग</translation>
 <translation id="2739240477418971307">अपनी पहुंच-योग्यता सेटिंग बदलें</translation>
+<translation id="274029851662193272">छोटे आकार में</translation>
 <translation id="2740393541869613458">'निगरानी में रखे गए उपयोगकर्ता' ने जो वेबसाइटें देखी हैं उनकी समीक्षा करें, और</translation>
 <translation id="2741912629735277980">लाॅगिन स्क्रीन पर यूज़र इंटरफ़ेस (यूआई) दिखाएं</translation>
 <translation id="274290345632688601">Linux ऐप्लिकेशन और फ़ाइलें इंपोर्ट की जा रही हैं</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">शॉर्टकट पहले से मौजूद है</translation>
 <translation id="2807517655263062534">आपकी डाउनलोड की गई फ़ाइलें यहां दिखाई देती हैं</translation>
 <translation id="2809586584051668049">और <ph name="NUMBER_ADDITIONAL_DISABLED" /> और</translation>
+<translation id="2812049959647166806">Thunderbolt काम नहीं करता</translation>
 <translation id="2812944337881233323">प्रस्थान करके और वापस प्रवेश करके देखें</translation>
 <translation id="2812989263793994277">कोई भी चित्र न दिखाएं</translation>
 <translation id="281390819046738856">अनुरोध पर हस्ताक्षर नहीं किए जा सके.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">प्रदाता</translation>
 <translation id="2844169650293029770">USB-C डिवाइस (बायां सामने वाला पोर्ट)</translation>
 <translation id="2845382757467349449">बुकमार्क बार हमेशा दिखाएं</translation>
-<translation id="2847759467426165163">इस पर कास्ट करें</translation>
 <translation id="284805635805850872">नुकसान पहुंचाने वाला सॉफ़्टवेयर निकालें?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">क्लीन अप नहीं किया जा सका</translation>
@@ -1297,6 +1305,7 @@
     सर्वर का संदेश: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">निर्देशिका द्वारा मीडिया गैलरी जोड़ें</translation>
 <translation id="2910318910161511225">किसी नेटवर्क से कनेक्ट करें और फिर कोशिश करें</translation>
+<translation id="2910518940971897750">मूल फ़ाइल में सेव करें</translation>
 <translation id="2913331724188855103">साइटों को कुकी डेटा सेव करने और पढ़ने की अनुमति दें (सुझाए गए)</translation>
 <translation id="2915102088417824677">गतिविधि लॉग देखें</translation>
 <translation id="2915873080513663243">अपने आप स्कैन होने की सुविधा</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI डिवाइस</translation>
 <translation id="3015639418649705390">अभी फिर से लॉन्च करें</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> को अपने आप कॉन्फ़िगर नहीं किया जा सका. कृपया प्रिंटर की बेहतर जानकारी के बारे में बताएं.</translation>
+<translation id="3016381065346027039">कोई लॉग एंट्री नहीं है</translation>
 <translation id="3016641847947582299">घटक अपडेट किया गया</translation>
 <translation id="3016780570757425217">आपका स्‍थान पता करना</translation>
 <translation id="3017079585324758401">बैकग्राउंड</translation>
 <translation id="3020183492814296499">शॉर्टकट</translation>
 <translation id="3020990233660977256">क्रम संख्या: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">तितली</translation>
+<translation id="3021408157810018664">मूल फ़ाइलों में किए गए बदलाव सेव करें?</translation>
 <translation id="3021426244864538700">इस साइट के डेटा को एक्सेस किया जा रहा है</translation>
 <translation id="3021678814754966447">फ़्रेम का स्रोत &amp;देखें</translation>
 <translation id="3022978424994383087">समझ नहीं आया.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">आप प्रवेश करना छोड़ भी सकते हैं और <ph name="LINK_START" />अतिथि के रूप में ब्राउज़<ph name="LINK_END" /> कर सकते हैं.</translation>
 <translation id="3172045848207518317">एक साइट वीडियो इनपुट एक्सेस कर रही है</translation>
 <translation id="3177909033752230686">पेज की भाषा:</translation>
+<translation id="3179982752812949580">टेक्स्ट का फ़ॉन्ट</translation>
 <translation id="3181954750937456830">सुरक्षित ब्राउज़िंग (आपकी और आपके डिवाइस की खतरनाक साइट से सुरक्षा करती है)</translation>
 <translation id="3182749001423093222">वर्तनी जांच</translation>
 <translation id="3183139917765991655">प्रोफ़ाइल आयातकर्ता</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">विंडो के रूप में खोलें</translation>
 <translation id="3278001907972365362">आपके Google खाता (खातों) पर ध्यान देना होगा</translation>
 <translation id="3279230909244266691">इस प्रोसेस में कुछ मिनट लग सकते हैं. वर्चुअल मशीन को शुरू किया जा रहा है.</translation>
-<translation id="3279741024917655738">इन पर पूरी स्क्रीन वाले वीडियो दिखाएं</translation>
 <translation id="3280237271814976245">इस रूप में सेव करें</translation>
 <translation id="3280243678470289153">Chrome में बने रहें</translation>
 <translation id="3281892622610078515">क्वारंटाइन की जाने वाली फ़ाइलें और प्रोग्राम:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">कोई खोज नतीजे नहीं मिले</translation>
 <translation id="3305389145870741612">स्‍वरूपण प्रक्रिया में कुछ सेकंड लग सकते हैं. कृपया प्रतीक्षा करें.</translation>
 <translation id="3305661444342691068">PDF को 'झलक' में खोलें</translation>
-<translation id="3306684685104080068">Google Hangouts जैसी क्लाउड-आधारित सेवाओं के लिए कास्ट करना चालू करें.</translation>
+<translation id="3307871847038842490">इस पेज पर मूल फ़ाइलों में सेव करने की अनुमति है.</translation>
 <translation id="3308006649705061278">संगठनात्मक इकाई (OU)</translation>
 <translation id="3308116878371095290">इस पेज को कुकी सेट करने से रोक दिया गया था.</translation>
 <translation id="3308134619352333507">छिपाएं बटन</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">खाता सेटअप रहने दें?</translation>
 <translation id="3464012987031883895">एक साइट ऑडियो इनपुट एक्सेस कर रही है</translation>
 <translation id="346431825526753">यह बच्‍चों के लिए बनाया गया खाता है जिसे <ph name="CUSTODIAN_EMAIL" /> द्वारा प्रबंधित किया जाता है.</translation>
-<translation id="3468275649641751422">कोई वीडियो या ऑडियो फ़ाइल स्ट्रीम करें</translation>
 <translation id="3468999815377931311">Android फ़ोन</translation>
 <translation id="3470442499439619530">इस उपयोगकर्ता को हटाएं</translation>
 <translation id="3473479545200714844">स्क्रीन आवर्द्धक</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">ज़ूम आउट</translation>
 <translation id="3497560059572256875">डूडल शेयर करें</translation>
 <translation id="3505030558724226696">डिवाइस एक्सेस रद्द करें</translation>
+<translation id="3505635633742443645">जब यूएसबी टाइप-सी पोर्ट को वीडियो आउटपुट के लिए इस्तेमाल किया जाता है, तब आपके डॉक का एचडीएमआई पोर्ट इस्तेमाल नहीं किया जा सकता. कृपया किसी भी एक डिसप्ले के लिए दूसरा पोर्ट इस्तेमाल करें.</translation>
 <translation id="3507421388498836150">"<ph name="EXTENSION_NAME" />" के लिए वर्तमान अनुमतियां</translation>
 <translation id="3507888235492474624">ब्लूटूथ डिवाइस के लिए दोबारा स्कैन करें</translation>
 <translation id="3508920295779105875">कोई अन्य फ़ोल्डर चुनें...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">सफलतापूर्वक इंस्टॉल हो गया है</translation>
 <translation id="3578594933904494462">इस टैब की सामग्री को शेयर किया जा रहा है.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; आपके स्‍वामित्‍व वाले समूह: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt; से &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; प्रिंटर शेयर करना चाहता है. अगर आप स्‍वीकार करते हैं, तो समूह के सभी सदस्‍य प्रिंटर से प्रिंट कर पाएंगे.</translation>
+<translation id="357889014807611375">सीमित डेटा वाला वाई-फ़ाई</translation>
 <translation id="3584169441612580296">अपने कंप्यूटर से फ़ोटो, संगीत और अन्य मीडिया एक्सेस करें और उन्हें बदलें</translation>
 <translation id="3587482841069643663">सभी</translation>
 <translation id="358796204584394954">इन्हें युग्मित करने के लिए इस कोड को "<ph name="DEVICE_NAME" />" पर लिखें:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">प्रवेश</translation>
 <translation id="3593965109698325041">प्रमाणपत्र नाम बाध्यताएं</translation>
 <translation id="3596235046596950091">क्लाउड सेवाएं चालू करें</translation>
+<translation id="3599221874935822507">बढ़ाया गया</translation>
 <translation id="3599863153486145794">साइन इन किए हुए सभी डिवाइसों से इतिहास साफ़ कर देता है. आपके Google खाते में <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> पर अन्य प्रकार के ब्राउज़िंग इतिहास हो सकते हैं.</translation>
 <translation id="3600051066689725006">वेब अनुरोध की जानकारी</translation>
 <translation id="3600792891314830896">आवाज़ चलाने वाली साइटों की आवाज़ बंद करें</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; के द्वारा डाउनलोड किया गया</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> दिखाएं</translation>
 <translation id="3613422051106148727">नए टैब में &amp;खोलें</translation>
+<translation id="3615073365085224194">उंगली से फ़िंगरप्रिंट सेंसर को छुएं</translation>
 <translation id="3616113530831147358">ऑडियो</translation>
 <translation id="3616741288025931835">ब्राउज़िंग डेटा &amp;साफ़ करें...</translation>
 <translation id="3617891479562106823">बैकग्राउंड उपलब्ध नहीं हैं. बाद में फिर से कोशिश करें.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">मुख्यपृष्ठ</translation>
 <translation id="3720996970802414353">फिर भी स्विच करें</translation>
 <translation id="3722108462506185496">वर्चुअल मशीन सेवा शुरू करने में गड़बड़ी हुई. कृपया फिर से कोशिश करें.</translation>
-<translation id="3723158278575423087">क्रोमियम के कास्‍ट अनुभव में आपका स्‍वागत है!</translation>
 <translation id="3725367690636977613">पेज</translation>
 <translation id="3726137731714254362">यहां से फ़ोल्डर हटाने से फ़ाइलों को शेयर करना बंद हो जाएगा लेकिन उन्हें मिटाया नहीं जाएगा.</translation>
 <translation id="3727148787322499904">यह सेटिंग बदलने से सभी शेयर नेटवर्क प्रभावित होंगे</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">बिल्ड की विस्तृत जानकारी</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{किसी USB डिवाइस से संचार करें}one{# USB डिवाइस से संचार करें}other{# USB डिवाइस से संचार करें}}</translation>
 <translation id="3765246971671567135">ऑफ़लाइन डेमो मोड नीति पढ़ी नहीं जा सकी.</translation>
-<translation id="3766223500670287046">रिमोट स्क्रीन</translation>
 <translation id="3768037234834996183">आपकी प्राथमिकताएं समन्‍वयित की जा रही हैं...</translation>
 <translation id="377050016711188788">आइसक्रीम</translation>
 <translation id="3771294271822695279">वीडियो फ़ाइलें</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">उठाएं, फिर दोबारा छुएं</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: सिंक करना रोका गया</translation>
-<translation id="3862134173397075045">Chrome के कास्ट अनुभव में आपका स्वागत है!</translation>
 <translation id="3862693525629180217">पहले से मौजूद सेंसर के ज़रिए पुष्टि करें</translation>
 <translation id="3862788408946266506">'kiosk_only' मेनिफ़ेस्‍ट विशेषता वाला ऐप्लिकेशन Chrome OS कियोस्‍क मोड में इंस्‍टॉल किया जाना चाहिए</translation>
 <translation id="3865414814144988605">रिज़ॉल्यूशन</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smart Lock फ़ोन बदला गया</translation>
 <translation id="3927932062596804919">अस्वीकार करें</translation>
 <translation id="3930737994424905957">डिवाइस खोजे जा रहे हैं</translation>
+<translation id="3930968231047618417">बैकग्राउंड का रंग</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> के लिए मिटाया गया पासवर्ड बहाल करें</translation>
 <translation id="3936390757709632190">ऑडियो नए टैब में &amp;खोलें</translation>
 <translation id="3936925983113350642">  चुने जाने वाले पासवर्ड की आवश्यकता इस प्रमाणपत्र को बाद में फिर से स्थापित करने के लिए होगी. कृपया इसे कहीं पर सुरक्षित रखें.</translation>
@@ -1994,6 +2006,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE से आयात किया गया</translation>
 <translation id="3950820424414687140">साइन इन करें</translation>
+<translation id="3950828138786918475">इस टैब को आपके डिवाइस पर मौजूद फ़ोल्डर की जानकारी पढ़ने की अनुमति है.</translation>
 <translation id="3954354850384043518">जारी है</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> गुणा <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> हर्ट्ज़)</translation>
 <translation id="3954953195017194676">आपके पास हाल ही में कैप्चर किया गया कोई WebRTC इवेंट लॉग नहीं है.</translation>
@@ -2012,6 +2025,7 @@
 <translation id="397105322502079400">गणना की जा रही है...</translation>
 <translation id="3975565978598857337">दिए गए क्षेत्र के लिए सर्वर से संपर्क नहीं हो पाया</translation>
 <translation id="397703832102027365">अंतिम रूप दिया जा रहा है...</translation>
+<translation id="3977886311744775419">इस नेटवर्क प्रकार पर अपने आप अपडेट डाउनलोड नहीं होते, लेकिन आप मैन्युअल रूप से अपडेट देख सकते हैं.</translation>
 <translation id="3979395879372752341">नया एक्सटेंशन जोड़ा गया (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> चालू करें</translation>
 <translation id="3981760180856053153">सेव करने का गलत तरीका दर्ज किया गया.</translation>
@@ -2040,7 +2054,7 @@
 <translation id="4020327272915390518">विकल्प मेन्यू</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">शब्दकोश में &amp;जोड़ें</translation>
-<translation id="4023146161712577481">डिवाइस कॉन्फ़िगरेशन निर्धारित करना.</translation>
+<translation id="4023146161712577481">डिवाइस कॉन्फ़िगरेशन तय करना.</translation>
 <translation id="4027804175521224372">(आप इसे छोड़ रहे हैं—<ph name="IDS_SYNC_PROMO_NOT_SIGNED_IN_STATUS_LINK" />)</translation>
 <translation id="4027951648498485763">आपकी फ़्लैश सेटिंग को तब तक रखा जाएगा जब तक कि आप Chrome को छोड़ नहीं देते.</translation>
 <translation id="4031179711345676612">माइक्रोफ़ोन की अनुमति है</translation>
@@ -2151,6 +2165,7 @@
 <translation id="4194570336751258953">क्लिक-के-लिए-टैप करना चालू करें</translation>
 <translation id="4195643157523330669">नए टैब में खोलें</translation>
 <translation id="4195814663415092787">वहीं से जारी रखें जहां मैंने छोड़ा था</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> से सीधे आपके बदलाव इन फ़ाइलों में सेव किए जा सकते हैं. यह साइट बदलाव सिर्फ़ तब सेव कर सकती है जब यह टैब खुला हो.</translation>
 <translation id="4198146608511578238">अपनी Google Assistant से बात करने के लिए बस 'लॉन्चरआइकॉन' दबाए रखें.</translation>
 <translation id="4200689466366162458">कस्टम शब्द</translation>
 <translation id="4200983522494130825">नया &amp;टैब</translation>
@@ -2198,7 +2213,6 @@
 <translation id="4267953847983678297">माेबाइल नेटवर्क से अपने आप कनेक्ट करें</translation>
 <translation id="4268025649754414643">कुंजी कूटलेखन</translation>
 <translation id="4270393598798225102">वर्शन <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">कोई मिलान नहीं</translation>
 <translation id="4275663329226226506">मीडिया</translation>
 <translation id="4275830172053184480">अपना डिवाइस फिर से प्रारंभ करें</translation>
 <translation id="4278101229438943600">आपकी Assistant तैयार है</translation>
@@ -2347,6 +2361,7 @@
 <translation id="4533985347672295764">CPU समय</translation>
 <translation id="4534661889221639075">फिर से कोशिश करें.</translation>
 <translation id="4535127706710932914">सामान्य प्रोफ़ाइल</translation>
+<translation id="4535767533210902251">फ़िंगरप्रिंट सेंसर, आपके कीबोर्ड पर सबसे ऊपर दाईं ओर दिया गया बटन होता है. किसी भी उंगली से इसे हल्के से छुएं.</translation>
 <translation id="4538684596480161368">सैंडबॉक्‍स नहीं किए गए प्‍लग इन को <ph name="HOST" /> पर हमेशा ब्लॉक करें</translation>
 <translation id="4538792345715658285">एंटरप्राइज़ नीति द्वारा इंस्टॉल किया गया.</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" /> और <ph name="WEBSITE_2" /> पर अपना डेटा पढ़ें</translation>
@@ -2380,6 +2395,7 @@
 <translation id="457386861538956877">ज़्यादा...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">ब्लूटूथ डिवाइस युग्मित करें</translation>
+<translation id="4578012756826807359">आपका साइन-इन डेटा हटा दिया गया है.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> को कास्ट करने में असमर्थ.</translation>
 <translation id="4581774856936278355">Linux को बहाल करते समय गड़बड़ी हुई</translation>
 <translation id="4582563038311694664">सभी सेटिंग रीसेट करें</translation>
@@ -2497,7 +2513,6 @@
 <translation id="4763830802490665879">बाहर निकलने पर एकाधिक साइटों की कुकी साफ़ कर दी जाएंगी.</translation>
 <translation id="4765582662863429759">Android मैसेज को अपने Chromebook से अपने फ़ोन पर लेख भेजने की मंज़ूरी दें</translation>
 <translation id="4768332406694066911">आपके पास इन संगठनों के प्रमाणपत्र हैं जो आपकी पहचान करते हैं</translation>
-<translation id="4772404146526168240">दोनों स्क्रीन</translation>
 <translation id="4776146737004271126">Android सेटिंग खोलें</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> के लिए पासवर्ड</translation>
 <translation id="4777825441726637019">Play स्टोर</translation>
@@ -2605,7 +2620,6 @@
 <translation id="4927846293686536410">अपने सभी डिवाइस पर बुकमार्क, इतिहास, पासवर्ड और दूसरी तरह की सेटिंग पाने के लिए साइन इन करें. आप Google सेवाओं में भी अपने आप साइन इन कर लेंगे.</translation>
 <translation id="4929386379796360314">प्रिंट करने की जगहें</translation>
 <translation id="4930714375720679147">चालू करें</translation>
-<translation id="4931132176527519925">हमेशा स्क्रीन शेयर करें</translation>
 <translation id="4932733599132424254">तारीख</translation>
 <translation id="4933484234309072027"><ph name="URL" /> पर एम्बेड किया गया</translation>
 <translation id="493571969993549666">'निगरानी में रखा गया उपयोगकर्ता' जोड़ें</translation>
@@ -2645,6 +2659,7 @@
 <translation id="4992066212339426712">अनम्यूट करें</translation>
 <translation id="4992458225095111526">पावरवॉश की पुष्टि करें</translation>
 <translation id="4992473555164495036">आपके एडमिन ने इनपुट के उपलब्ध तरीके सीमित किए हुए हैं.</translation>
+<translation id="4992866843815555470">आपके डॉक को सर्विस की ज़रूरत है. सही काम करने वाले पंखे के बिना आपका डॉक बंद हो जाएगा.</translation>
 <translation id="4992926179187649719">'Ok Google' चालू करें</translation>
 <translation id="4994474651455208930">साइटों को प्रोटोकॉल के लिए सामान्य हैंडलर बनने के लिए पूछने की अनुमति दें</translation>
 <translation id="4994754230098574403">सेट अप किया जा रहा है</translation>
@@ -2783,7 +2798,6 @@
 <translation id="5233231016133573565">प्रक्रिया आईडी</translation>
 <translation id="5233638681132016545">नया टैब</translation>
 <translation id="5233736638227740678">&amp;चिपकाएं</translation>
-<translation id="5234764350956374838">खारिज करें</translation>
 <translation id="5235050375939235066">ऐप्लिकेशन अनइंस्टॉल करें?</translation>
 <translation id="5235750401727657667">नया टैब खोलते समय दिखाई देने वाला पेज बदलें</translation>
 <translation id="5238278114306905396">"<ph name="EXTENSION_NAME" />" ऐप्लिकेशन को अपने आप हटा दिया गया था.</translation>
@@ -2848,6 +2862,7 @@
 <translation id="5319359161174645648">Google, Chrome का सुझाव देता है</translation>
 <translation id="532247166573571973">हो सकता है कि सर्वर तक पहुंचा नहीं जा सकता हो. बाद में फिर से प्रयास करें.</translation>
 <translation id="5324780743567488672">अपने स्‍थान का उपयोग करके अपने आप समय क्षेत्र सेट करें</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - पर मूल फ़ाइलों में सेव करने की अनुमति है</translation>
 <translation id="5327248766486351172">नाम</translation>
 <translation id="5327570636534774768">यह डिवाइस किसी अलग डोमेन की ओर से प्रबंधित करने के लिए मार्क किया गया है. डेमो मोड सेट अप करने से पहले डिवाइस को उस डोमेन के इस्तेमाल से बाहर करें.</translation>
 <translation id="532943162177641444">इस डिवाइस में इस्तेमाल किया जा सकने वाला मोबाइल हॉटस्पॉट सेट करने के लिए अपने <ph name="PHONE_NAME" /> में सूचना पर टैप करें.</translation>
@@ -2990,7 +3005,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> यह करना चाहती है:</translation>
 <translation id="5534304873398226603">फ़ोटो या वीडियो खारिज करें</translation>
 <translation id="5535941515421698170">इस डिवाइस से अपना मौजूदा डेटा भी निकालें</translation>
-<translation id="5537725057119320332">कास्‍ट करें</translation>
 <translation id="5539221284352502426">आपने जो पासवर्ड डाला है, उसे सर्वर ने अस्वीकार कर दिया है. संभावित कारण ये हो सकते हैं: पासवर्ड बहुत छोटा है. पासवर्ड में संख्याएं या चिह्न होने चाहिए. पासवर्ड, पिछले पासवर्ड से अलग होना चाहिए.</translation>
 <translation id="5541687815721799001">ऐप्लिकेशन का उपयोग करें</translation>
 <translation id="5542132724887566711">प्रोफ़ाइल</translation>
@@ -3299,7 +3313,6 @@
 <translation id="5997337190805127100">साइट एक्सेस के बारे में ज़्यादा जानें</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' के लिए <ph name="RESULT_COUNT" /> नतीजे मिले हैं</translation>
 <translation id="6002458620803359783">पसंदीदा आवाज़ें</translation>
-<translation id="6005695835120147974">मीडिया राउटर</translation>
 <translation id="6006484371116297560">क्लासिक</translation>
 <translation id="6007240208646052708">आपकी भाषा में बोलकर खोजने की सुविधा उपलब्ध नहीं है.</translation>
 <translation id="6009781704028455063">पहले से मौजूद सेंसर</translation>
@@ -3499,7 +3512,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{आपके नेटवर्क पर नया प्रिंटर}one{आपके नेटवर्क पर नए प्रिंटर}other{आपके नेटवर्क पर नए प्रिंटर}}</translation>
 <translation id="6286708577777130801">सहेजे गए पासवर्ड के विवरण</translation>
 <translation id="6289452883081499048">Play जैसी मनमुताबिक बनाई गई Google सेवाएं</translation>
-<translation id="6290556621549272952">आप इस सुविधा का उपयोग क्रोमियम की सामग्री को अपने टीवी या दूसरे डिवाइस पर दिखाने के लिए कर सकते हैं.</translation>
 <translation id="6291949900244949761">जब कोई साइट USB डिवाइस एक्सेस करना चाहे, तो इसके लिए पूछें (सुझाया गया)</translation>
 <translation id="6291953229176937411">खोजकर्ता में &amp;दिखाएं</translation>
 <translation id="6295158916970320988">सभी साइटें</translation>
@@ -3563,6 +3575,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />सिस्टम की जानकारी<ph name="END_LINK1" /> और <ph name="BEGIN_LINK2" />मेट्रिक्स<ph name="END_LINK2" /> भेजें</translation>
 <translation id="6396988158856674517">साइटों को हलचल पकड़ने वाले सेंसर का इस्तेमाल करने से रोकें</translation>
 <translation id="6397094776139756010">सिंक करने और मनमुताबिक बनाने के विकल्प</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> से फ़ाइलों में किए गए आपके बदलाव सीधे इस फ़ोल्डर में सेव किए जा सकते हैं. यह साइट बदलाव सिर्फ़ तब सेव कर सकती है जब यह टैब खुला हो.</translation>
 <translation id="6398715114293939307">Google Play स्टोर निकालें</translation>
 <translation id="6398765197997659313">फ़ुल स्क्रीन से बाहर निकलें</translation>
 <translation id="6399774419735315745">जासूस</translation>
@@ -3607,11 +3620,13 @@
 <translation id="6455264371803474013">कुछ खास साइटों पर</translation>
 <translation id="6455894534188563617">&amp;नया फ़ोल्डर</translation>
 <translation id="6456394469623773452">अच्छा</translation>
+<translation id="6456955391422100996">विज्ञापन हटाया गया.</translation>
 <translation id="645705751491738698">JavaScript को अवरोधित करना जारी रखें</translation>
 <translation id="6458701200018867744">अपलोड नहीं हो सका (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">ढूंढने के लिए चयन का उपयोग करें</translation>
 <translation id="6459799433792303855">चालू विंडो को किसी दूसरे डिसप्ले में ले जाया गया.</translation>
 <translation id="6460601847208524483">अगला ढूंढें</translation>
+<translation id="6461170143930046705">नेटवर्क खोज रहा है...</translation>
 <translation id="6463795194797719782">&amp;संपादित करें</translation>
 <translation id="6466988389784393586">सभी बुकमार्क &amp;खोलें</translation>
 <translation id="6467304607960172345">फ़ुलस्क्रीन वीडियो ऑप्टिमाइज़ करें</translation>
@@ -3650,6 +3665,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">आप <ph name="NETWORK_TYPE" /> नेटवर्क से कनेक्ट हैं.</translation>
 <translation id="6527303717912515753">शेयर करें</translation>
 <translation id="6528513914570774834">इस डिवाइस के दूसरे उपयोगकर्ताओं को इस नेटवर्क का उपयोग करने दें</translation>
 <translation id="652948702951888897">Chrome इतिहास</translation>
@@ -3746,7 +3762,6 @@
 <translation id="6680650203439190394">दर</translation>
 <translation id="6681668084120808868">फ़ोटो लें</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" अनइंस्टॉल कर दिया जाएगा.</translation>
-<translation id="6685083257944113180">बंद करें, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Google Play खोलें</translation>
 <translation id="6686490380836145850">दाईं ओर के टैब बंद करें</translation>
 <translation id="6686817083349815241">अपना पासवर्ड सेव करें</translation>
@@ -3854,6 +3869,7 @@
 <translation id="6845038076637626672">बड़े दृश्य में खोलें</translation>
 <translation id="6845325883481699275">'Chrome सुरक्षा' को बेहतर बनाने में मदद करें</translation>
 <translation id="6848388270925200958">फ़िलहाल, आपके कुछ कार्ड सिर्फ़ इसी डिवाइस पर इस्तेमाल किए जा सकते हैं</translation>
+<translation id="6850286078059909152">टेक्स्ट का रंग</translation>
 <translation id="6851497530878285708">ऐप्लिकेशन चालू</translation>
 <translation id="6853388645642883916">अपडेटर निष्क्रिय</translation>
 <translation id="68541483639528434">अन्य टैब बंद करें</translation>
@@ -3903,7 +3919,6 @@
 <translation id="6923132443355966645">स्क्रोल करें / क्लिक करें</translation>
 <translation id="6923633482430812883">शेयर माउंट करने में गड़बड़ी. कृपया जाँचें कि आप जिस फ़ाइल सर्वर से कनेक्ट कर रहे हैं वह SMBv2 या उसके बाद के वर्शन पर काम करता है.</translation>
 <translation id="6930036377490597025">बाहरी सुरक्षा चाबी या पहले से मौजूद सेंसर</translation>
-<translation id="6930242544192836755">अवधि</translation>
 <translation id="693807610556624488">लिखें कार्रवाई विशेषता की अधिकतम लंबाई इसके लिए पार हो गई है: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510"><ph name="HOST_NAME" /> को अपने प्रमाणपत्र के साथ अधिकृत करने के लिए, कृपया <ph name="TOKEN_NAME" /> में साइन इन करें.</translation>
 <translation id="6943176775188458830">प्रिंट करना रोकें</translation>
@@ -3917,6 +3932,7 @@
 <translation id="6951153907720526401">भुगतान हैंडलर</translation>
 <translation id="6951663584153258142">आपके संगठन ने कहा है कि आप इस डिवाइस को अपडेट करें</translation>
 <translation id="6953878494808481632">मिलती-जुलती जानकारी</translation>
+<translation id="6953916367503892689">{0,plural, =1{फ़ाइल: <ph name="FILES" />}one{फ़ाइलें: <ph name="FILES" />}other{फ़ाइलें: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">पॉपअप का निरीक्षण करें</translation>
 <translation id="6957044667612803194">इस सुरक्षा कुंजी में पिन की सुविधा नहीं है</translation>
 <translation id="6957231940976260713">सेवा का नाम</translation>
@@ -4129,7 +4145,6 @@
 <translation id="7254554697254365959">इस पेज का अनुवाद नहीं किया जा सका.</translation>
 <translation id="7254951428499890870">क्या आप वाकई "<ph name="APP_NAME" />" को डाइग्नॉस्टिक मोड में लॉन्च करना चाहते हैं?</translation>
 <translation id="7255002516883565667">फ़िलहाल आपके पास सिर्फ़ इसी डिवाइस पर इस्तेमाल किया जा सकने वाला एक कार्ड है</translation>
-<translation id="7255220508626648026">कास्ट कर रहा है: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">रीसेट की पुष्टि करने के लिए, अपनी सुरक्षा कुंजी छुएं. ऐसा करने से सुरक्षा कुंजी पर मौजूद सभी डेटा और इसका पिन भी मिट जाएगा.</translation>
 <translation id="7255935316994522020">लागू करें</translation>
 <translation id="7256069762010468647">साइट आपके कैमरे का इस्तेमाल कर रही है</translation>
@@ -4263,6 +4278,7 @@
 <translation id="7456142309650173560">डेव</translation>
 <translation id="7456847797759667638">स्थान खोलें...</translation>
 <translation id="7458168200501453431">वर्तनी जांचने के लिए उसी सुविधा का इस्तेमाल करती है जिसका इस्तेमाल 'Google सर्च' में किया जाता है. आप ब्राउज़र में जो कुछ भी लिखते हैं उसे Google को भेजा जाता है.</translation>
+<translation id="7460045493116006516">आपकी इंस्टॉल की हुई मौजूदा थीम</translation>
 <translation id="7461924472993315131">पिन करें</translation>
 <translation id="746216226901520237">अगली बार, आपका फ़ोन आपके <ph name="DEVICE_TYPE" /> को अनलॉक कर देगा. आप सेटिंग में जाकर Smart Lock को बंद कर सकते हैं</translation>
 <translation id="7463006580194749499">व्‍यक्ति जोड़ें</translation>
@@ -4322,6 +4338,7 @@
 <translation id="7554791636758816595">नया टैब</translation>
 <translation id="7556033326131260574">स्‍मार्ट लॉक आपका खाता सत्‍यापित नहीं कर सका. प्रवेश करने के लिए अपना पासवर्ड लिखें.</translation>
 <translation id="7556242789364317684">दुर्भाग्यवश, <ph name="SHORT_PRODUCT_NAME" /> आपकी सेटिंग पुनर्प्राप्त करने में अक्षम है. गड़बड़ी को ठीक करने के लिए, <ph name="SHORT_PRODUCT_NAME" /> को आपके डिवाइस को पावरवॉश के साथ रीसेट करना होगा.</translation>
+<translation id="7559444627302317199">कृपया अपना नेटवर्क कनेक्शन जाँच लें और फिर से कोशिश करें.</translation>
 <translation id="7559719679815339381">कृपया इंतज़ार करें....किओस्‍क ऐप्लिकेशन अपडेट होने की प्रक्रिया में है. USB स्‍टिक न निकालें.</translation>
 <translation id="7561196759112975576">हमेशा</translation>
 <translation id="7563991800558061108">इस गड़बड़ी से बचने के लिए, आपको साइन इन स्क्रीन के ज़रिए अपने 'Google खाते' में
@@ -4563,7 +4580,6 @@
 <translation id="7887334752153342268">डुप्लीकेट</translation>
 <translation id="7887864092952184874">ब्लूटूथ माउस युग्मित किया गया</translation>
 <translation id="7889565820482017512">डिसप्ले का आकार</translation>
-<translation id="7889966925761734854">खोजें</translation>
 <translation id="7893008570150657497">आपके कंप्यूटर के फ़ोटो, संगीत, और दूसरे मीडिया को एक्सेस करने दें</translation>
 <translation id="7893153962594818789">इस <ph name="DEVICE_TYPE" /> पर ब्लूटूथ बंद है. अपना पासवर्ड डालें और ब्लूटूथ चालू करें.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (सामान्य)</translation>
@@ -4571,7 +4587,6 @@
 <translation id="7898627924844766532">टूलबार में रखें</translation>
 <translation id="7898725031477653577">हमेशा अनुवाद करें</translation>
 <translation id="790040513076446191">निजता-संबंधी सेटिंग में हेरफेर करें</translation>
-<translation id="7902874111237641165">सहज गति [बीटा]</translation>
 <translation id="7903345046358933331">पेज कोई प्रतिसाद नहीं दे रहा है. आप उसके प्रतिसाद देने तक प्रतीक्षा कर सकते हैं या उसे बंद कर सकते हैं.</translation>
 <translation id="7903742244674067440">इन प्रमाणपत्र प्राधिकारियों की पहचान करने वाले प्रमाणपत्र आपके रिकॉर्ड में हैं</translation>
 <translation id="7903925330883316394">उपयोगिता: <ph name="UTILITY_TYPE" /></translation>
@@ -4683,6 +4698,7 @@
 <translation id="8037117027592400564">संश्लेषित बोली का उपयोग करके बोला गया सभी लेख पढ़ें</translation>
 <translation id="8037357227543935929">पूछें (डिफ़ॉल्ट)</translation>
 <translation id="803771048473350947">फ़ाइल</translation>
+<translation id="8042142357103597104">टेक्स्ट की पारदर्शिता</translation>
 <translation id="8044899503464538266">धीमा</translation>
 <translation id="8045253504249021590">सिंक को Google डैशबोर्ड के माध्यम से बंद कर दिया गया है.</translation>
 <translation id="8045923671629973368">ऐप्लिकेशन आईडी या वेबस्टोर यूआरएल डालें</translation>
@@ -4719,7 +4735,6 @@
     <ph name="BEGIN_PARAGRAPH5" />आप सेटिंग में जाकर इस सेवा को बंद कर सकते हैं.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">पिन का मिलान नहीं हो रहा है</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> एक एक्सटेंशन की प्रॉक्सी सेटिंग इस्तेमाल कर रहा है</translation>
-<translation id="8099495042588009598">ज़्यादा अनुमतियां</translation>
 <translation id="8101987792947961127">अगली बार रीबूट करने पर पावरवॉश ज़रूरी है</translation>
 <translation id="8102159139658438129">अपने जुड़े हुए फ़ोन के विकल्प देखने के लिए <ph name="LINK_BEGIN" />सेटिंग<ph name="LINK_END" /> पर जाएं</translation>
 <translation id="8104696615244072556">अपने <ph name="IDS_SHORT_PRODUCT_NAME" /> डिवाइस को पावरवॉश करें और पिछले वर्ज़न पर वापस लौटें.</translation>
@@ -4771,8 +4786,10 @@
     मुझे नहीं लगता कि इस साइट को ब्लॉक किया जाना चाहिए!</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" /> पर जाएं</translation>
 <translation id="8184318863960255706">ज़्यादा जानकारी</translation>
+<translation id="8184472985242519288">एक जैसा</translation>
 <translation id="8185331656081929126">नेटवर्क पर नए प्रिंटर का पता लगाए जाने पर सूचनाएं दिखाएं</translation>
 <translation id="8186609076106987817">सर्वर को फ़ाइल नहीं मिल सकी.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> पर इस फ़ोल्डर में मौजूद सभी फ़ाइलों की जानकारी पढ़ी जा सकती है. इस साइट पर फ़ोल्डर में हुए बदलाव सिर्फ़ तब देखे जा सकते हैं जब यह टैब खुला हो.</translation>
 <translation id="8188389033983459049">अपनी डिवाइस सेटिंग जांचें और जारी रखने के लिए उसे चालू करें</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> से कनेक्‍ट हो रहा है</translation>
 <translation id="8191230140820435481">अपने ऐप्स , एक्सटेंशन, और थीम प्रबंधित करें</translation>
@@ -4876,7 +4893,6 @@
 <translation id="833986336429795709">यह लिंक खोलने के लिए कोई ऐप्लिकेशन चुनें</translation>
 <translation id="8342861492835240085">कोई संग्रह चुनें</translation>
 <translation id="834290227245955730">गलत पिन. इतनी बार और कोशिश की जा सकती है: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">सबसे बढ़िया वीडियो या ऐनिमेशन के लिए उच्च बैंडविड्थ का इस्तेमाल करें. हो सकता है कि धीमे कनेक्शन वाले अन्य लोगों को आपकी सामग्री दिखाई न दे.</translation>
 <translation id="8351419472474436977">इस एक्सटेंशन ने आपकी प्रॉक्सी सेटिंग पर नियंत्रण कर लिया है, जिसका अर्थ है कि यह   ऑनलाइन किए जाने वाले काम को बदल सकता है, खंडित कर सकता है या उसे छिप कर सुन सकता है. अगर आप पक्का नहीं हैं कि यह बदलाव क्यों हुआ है, तो संभवत: आप उसे नहीं चाहते हैं.</translation>
 <translation id="8351630282875799764">बैटरी चार्ज नहीं हो रही</translation>
 <translation id="835238322900896202">अनइंस्टॉल करते समय एक गड़बड़ी हुई. कृपया 'टर्मिनल' के ज़रिए अनइंस्टॉल करें.</translation>
@@ -4909,9 +4925,11 @@
 <translation id="839736845446313156">रजिस्टर करें</translation>
 <translation id="8398877366907290961">फिर भी आगे बढ़ें</translation>
 <translation id="8400146488506985033">लोगों को प्रबंधित करें</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> आगे बताए गए फ़ोल्डर की फ़ाइलों में किए गए आपके बदलाव सेव कर सकता है. यह साइट बदलाव सिर्फ़ तब सेव कर सकती है जब यह टैब खुला हो.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">पहले पूछें (सुझाया गया)</translation>
 <translation id="8418445294933751433">टैब के रूप में &amp;दिखाएं</translation>
+<translation id="8418905021510211421">यह पेज को आपके डिवाइस पर मौजूद फ़ोल्डर की फ़ाइलें पढ़ सकता है.</translation>
 <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' के खोज नतीजे</translation>
 <translation id="8419368276599091549">आपके <ph name="DEVICE_TYPE" /> में स्वागत है!</translation>
 <translation id="8425213833346101688">बदलें</translation>
@@ -4931,6 +4949,7 @@
 <translation id="8438566539970814960">खोजों और ब्राउज़िंग को बेहतर बनाएं</translation>
 <translation id="8439506636278576865">इस भाषा में पृष्ठों का अनुवाद करने का ऑफ़र दें</translation>
 <translation id="8440630305826533614">Linux ऐप्लिकेशन</translation>
+<translation id="844241640324986723">आपके साइन-इन डेटा को हटाया नहीं जा सका.</translation>
 <translation id="8443338615972234259">निगरानी में रखे गए अपने उपयोगकर्ता के लिए कृपया अभी एक नया खाता बनाएं.</translation>
 <translation id="8446884382197647889">ज़्यादा जानें</translation>
 <translation id="8447409163267621480">Ctrl या Alt में से किसी एक को शामिल करें</translation>
@@ -4946,8 +4965,6 @@
 <translation id="8461914792118322307">प्रॉक्सी</translation>
 <translation id="8463215747450521436">इस निगरानी में रखे गए उपयोगकर्ता को प्रबंधक ने मिटा दिया है या बंद कर दिया है. अगर आप इस उपयोगकर्ता के रूप में साइन इन किए हुए रहना चाहते हैं, तो कृपया प्रबंधक से संपर्क करें.</translation>
 <translation id="846374874681391779">डाउनलोड बार</translation>
-<translation id="8463807869745732775">"&gt;
-    सुरक्षा कुंजी पर साइन इन का डेटा सेव किया गया</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> बंद किया गया.</translation>
 <translation id="8464132254133862871">यह उपयोगकर्ता खाता सेवा के लिए योग्‍य नहीं है.</translation>
 <translation id="8465252176946159372">मान्य नहीं है</translation>
@@ -5013,6 +5030,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" /> को अब प्रिंट किया जा रहा है</translation>
 <translation id="8569682776816196752">कोई गंतव्य नहीं मिला</translation>
 <translation id="8571213806525832805">पिछले चार हफ़्ते</translation>
+<translation id="8573403125070227391">यह विज्ञापन आपके डिवाइस के लिए बहुत से संसाधन इस्तेमाल करता है, इसलिए Chrome ने इसे हटा दिया.</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> पर आवाज़ हमेशा चालू रखें</translation>
 <translation id="8575286410928791436">बाहर निकलने के लिए <ph name="KEY_EQUIVALENT" /> दबाए रखें</translation>
 <translation id="8578639784464423491">99 से ज़्यादा अक्षर नहीं हो सकते</translation>
@@ -5036,13 +5054,13 @@
 <translation id="8609465669617005112">ऊपर जाएं</translation>
 <translation id="8610103157987623234">फ़ॉर्मैट गलत है, कृपया फिर से कोशिश करें</translation>
 <translation id="8615618338313291042">गुप्‍त ऐप्लिकेशन: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">ड्रॉप शैडो</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">रोमिंग की स्‍थिति</translation>
 <translation id="8620765578342452535">नेटवर्क कनेक्‍शन कॉन्‍फ़िगर करें</translation>
 <translation id="8621866727807194849">आपके कंप्यूटर पर नुकसान पहुंचाने वाला सॉफ़्टवेयर है. Chrome इसे हटा रहा है, आपकी सेटिंग को बहाल कर रहा है, और एक्सटेंशन को बंद कर रहा है. इससे आपका ब्राउज़र फिर से सामान्य तौर पर काम कर पाएगा.</translation>
 <translation id="8621979332865976405">अपनी पूरी स्क्रीन शेयर करें</translation>
 <translation id="862542460444371744">&amp;एक्‍सटेंशन</translation>
-<translation id="8627151598708688654">स्रोत चुनें</translation>
 <translation id="862727964348362408">निलंबित</translation>
 <translation id="862750493060684461">CSS कैश मेमोरी</translation>
 <translation id="8627795981664801467">केवल सुरक्षित कनेक्शन</translation>
@@ -5096,6 +5114,7 @@
 <translation id="8688579245973331962">आपका नाम दिखाई नहीं दे रहा?</translation>
 <translation id="8688591111840995413">खराब पासवर्ड</translation>
 <translation id="8688672835843460752">उपलब्ध</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;स्‍थान खोलें...</translation>
 <translation id="869884720829132584">ऐप्लिकेशन मेन्यू</translation>
 <translation id="869891660844655955">समय समाप्ति तारीख</translation>
@@ -5259,6 +5278,7 @@
 <translation id="891365694296252935">इस्तेमाल और निदान से जुड़ा डेटा भेजें. यह डिवाइस फ़िलहाल Google को निदान, डिवाइस, और ऐप्लिकेशन के इस्तेमाल से जुड़ा डेटा अपने आप भेज रहा है. इसका इस्तेमाल आपके बच्चे की पहचान करने के लिए नहीं किया जाएगा. यह सिस्टम और ऐप्लिकेशन की स्थिरता और दूसरे सुधारों में मदद करेगा. कुछ एग्रीगेट डेटा Google ऐप्लिकेशन और पार्टनर, जैसे कि Android डेवलपरों की भी मदद करेगा. यह सेटिंग डिवाइस के मालिक ने लागू की है. अगर आपके बच्चे के लिए दूसरी 'वेब और ऐप्लिकेशन गतिविधि' चालू है, तो यह डेटा उसके Google खाते में सेव किया जा सकता है. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">सुझाव लोड हो रहे हैं</translation>
 <translation id="8916476537757519021">गुप्त सबफ़्रेम: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - को आपके डिवाइस पर मौजूद फ़ोल्डर की जानकारी पढ़ने की अनुमति है</translation>
 <translation id="8919275547519617350">अपने सभी डिवाइस पर अपने सारे पासवर्ड पाने के लिए, साइन इन करें और सिंक चालू करें.</translation>
 <translation id="8921366488406707015">आपकी 'सुरक्षा चाबी' की पुष्टि की जा रही है...</translation>
 <translation id="8922013791253848639">इस साइट पर विज्ञापनों की हमेशा अनुमति दें</translation>
@@ -5288,7 +5308,6 @@
 <translation id="8965037249707889821">पुराना पासवर्ड डालें</translation>
 <translation id="8966870118594285808">अगर आपने गलती से किसी टैब को बंद कर दिया था तो उसे फिर से खोलें</translation>
 <translation id="8967866634928501045">दिखाने के लिए Alt Shift A दबाएं</translation>
-<translation id="8970203673128054105">कास्ट मोड सूची देखें</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">यह पक्का करने के लिए कृपया अपने नेटवर्क एडमिन से बात करें कि फ़ायरवॉल Google के सर्वर से होने वाले डाउनलोड को ब्लॉक नहीं कर रहा है.</translation>
 <translation id="8973557916016709913">ज़ूम लेवल निकालें</translation>
@@ -5437,6 +5456,7 @@
 <translation id="9214520840402538427">ओह!  इंस्टॉलेशन-समय विशेषताएं शुरू करने की समय सीमा खत्म हो गई है. कृपया अपने सहायता प्रतिनिधि से संपर्क करें.</translation>
 <translation id="9214695392875603905">कपकेक</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" जोड़ा गया</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> से आपके बदलाव सीधे इस फ़ाइल में सेव किए जा सकते हैं. यह साइट बदलाव सिर्फ़ तब सेव कर सकती है जब यह टैब खुला हो.</translation>
 <translation id="9218430445555521422">डिफ़ॉल्ट के रूप में सेट करें</translation>
 <translation id="9219103736887031265">इमेज</translation>
 <translation id="9220525904950070496">खाता हटाएं</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index e782c5eb..6c89863 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Došlo je do pogreške prilikom pokretanja virtualnog računala. Pokušajte ponovo.</translation>
 <translation id="1089439967362294234">Promjena zaporke</translation>
 <translation id="1090126737595388931">Nema pokrenutih pozadinskih aplikacija</translation>
+<translation id="1090290614672149983">Želite li spremiti promjene u izvornu datoteku?</translation>
 <translation id="1090918500949388876">Pristupite svojem Asistentu svaki put kad izgovorite "Ok Google", a zaslon je uključen.</translation>
 <translation id="1091767800771861448">Pritisnite tipku ESCAPE za preskakanje (samo neslužbene međuverzije).</translation>
 <translation id="1093457606523402488">Vidljive mreže:</translation>
 <translation id="1094607894174825014">Zatražena je operacija čitanja ili zapisivanja s nevažećim odstupanjem na uređaju: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Prije nego što se prijavite, uđite kao gost da biste aktivirali mrežu <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Ova kartica ima dopuštenje za spremanje u izvorne datoteke.</translation>
 <translation id="1103523840287552314">Uvijek prevedi <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Stop (Zaustavi)</translation>
 <translation id="1110155001042129815">Čekaj</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Sunčane naočale</translation>
 <translation id="1151917987301063366">Hostu <ph name="HOST" /> uvijek dopusti pristup senzorima</translation>
 <translation id="1153356358378277386">Upareni uređaji</translation>
-<translation id="1156488781945104845">Trenutačno vrijeme</translation>
 <translation id="1161575384898972166">Prijavite se u uređaj <ph name="TOKEN_NAME" /> kako biste izvezli potvrdu klijenta.</translation>
 <translation id="1163931534039071049">&amp;Pogledaj izvor okvira</translation>
 <translation id="1164674268730883318">Želite li isključiti Smart Lock za uređaj <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Postavke pohrane Adobe Flash Playera</translation>
 <translation id="1274997165432133392">Kolačići i ostali podaci o web-lokacijama</translation>
 <translation id="127668050356036882">Zatvori sve prozore</translation>
-<translation id="1277908057200820621">Prikaži popis uređaja</translation>
 <translation id="1280820357415527819">Traženje mobilnih mreža</translation>
 <translation id="1285320974508926690">Nikad nemoj prevoditi ovu web-lokaciju</translation>
 <translation id="1285484354230578868">spremati podatke na vaš račun na Google disku</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Matična mreža, bez roaminga</translation>
 <translation id="1316136264406804862">Pretraživanje...</translation>
 <translation id="1316495628809031177">Sinkronizacija je pauzirana</translation>
+<translation id="1317637799698924700">Priključna stanica radit će u načinu kompatibilnom s USB-om vrste C.</translation>
 <translation id="1322046419516468189">Spremljene zaporke možete pregledati i upravljati njima ovdje: <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Da bi se prikazale kartice s vaših ostalih uređaja, prijavite se na Chrome.</translation>
 <translation id="1327074568633507428">Pisač na usluzi Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Vašim <ph name="BEGIN_LINK" />preglednikom upravlja<ph name="END_LINK" /> <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Pokrenite Linuxove alate, uređivače i IDE-jeve na uređaju <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Saznajte više&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Odaberite datoteku</translation>
+<translation id="1370749010280229230">Pojavila se poteškoća sa zaslonom povezanim s priključnom stanicom</translation>
 <translation id="1371301976177520732">Vaše oznake, zaporke, povijest i još mnogo na svim vašim uređajima</translation>
 <translation id="1372841398847029212">Sinkroniziraj sa svojim računom</translation>
 <translation id="1374844444528092021">Certifikat koji zahtijeva mreža "<ph name="NETWORK_NAME" />" nije instaliran ili više ne vrijedi. Preuzmite novi certifikat i pokušajte se povezati ponovo.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Web-stranica, jedna datoteka</translation>
 <translation id="1451917004835509682">Dodaj nadziranog korisnika</translation>
 <translation id="1454223536435069390">I&amp;zradi snimku zaslona</translation>
+<translation id="1458243790901188746">{0,plural, =1{Mapa: <ph name="DIRECTORIES" />}one{Mape: <ph name="DIRECTORIES" />}few{Mape: <ph name="DIRECTORIES" />}other{Mape: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Tražilice dodane proširenjem</translation>
 <translation id="146000042969587795">Ovaj je okvir blokiran jer sadrži određeni nesiguran sadržaj.</translation>
 <translation id="146219525117638703">Stanje ONC-a</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Prikaži opcije unosa</translation>
 <translation id="1651008383952180276">Morate dvaput unijeti istu šifru</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Dodajte pisač na Google Cloud Print kako biste mogli ispisivati s bilo kojeg mjesta.}one{Dodajte # pisač na Google Cloud Print kako biste mogli ispisivati s bilo kojeg mjesta.}few{Dodajte # pisača na Google Cloud Print kako biste mogli ispisivati s bilo kojeg mjesta.}other{Dodajte # pisača na Google Cloud Print kako biste mogli ispisivati s bilo kojeg mjesta.}}</translation>
+<translation id="1656528038316521561">Prozirnost pozadine</translation>
 <translation id="1657406563541664238">Olakšajte nam poboljšanje preglednika <ph name="PRODUCT_NAME" /> automatskim slanjem statistike o upotrebi i izvješća o padu programa Googleu</translation>
 <translation id="1658424621194652532">Ova stranica pristupa vašem mikrofonu.</translation>
 <translation id="1660204651932907780">Web-lokacije mogu reproducirati zvuk (preporučeno)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> želi vidjeti marku i model vašeg sigurnosnog ključa</translation>
 <translation id="1679068421605151609">Alati za razvojne programere</translation>
 <translation id="1679806121152819234">Dodatak VM</translation>
+<translation id="1679810534535368772">Jeste li sigurni da želite odustati?</translation>
 <translation id="167983332380191032">Usluga upravljanja poslala je HTTP pogrešku.</translation>
 <translation id="1680849702532889074">Došlo je do pogreške tijekom instalacije Linux aplikacije.</translation>
 <translation id="16815041330799488">Ne dopuštaj web-lokacijama uvid u tekst i slike kopirane u međuspremnik</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identifikator zaštićenog medija</translation>
 <translation id="175196451752279553">P&amp;onovo otvori zatvorenu karticu</translation>
 <translation id="1753905327828125965">Najposjećenije</translation>
+<translation id="1755601632425835748">Veličina teksta</translation>
 <translation id="1756681705074952506">Način unosa</translation>
 <translation id="1757301747492736405">Deinstalacija na čekanju</translation>
 <translation id="175772926354468439">Omogućiti temu</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Manji</translation>
 <translation id="1919345977826869612">Oglasi</translation>
 <translation id="1919814239594435008">Dopušten je dodatak izvan testnog okruženja</translation>
+<translation id="1920390473494685033">Kontakti</translation>
 <translation id="1921050530041573580">Uparite telefon s Porukama</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Pametne Googleove značajke za <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Anonimna kartica: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> na domeni <ph name="PEPPER_PLUGIN_DOMAIN" /> želi pristupiti vašem računalu</translation>
 <translation id="2178614541317717477">CA kompromis</translation>
+<translation id="2179849162388791084">Prikupljanje podataka za prijavu sa sigurnosnog ključa nije uspjelo.</translation>
 <translation id="218070003709087997">Upotrijebite broj kako biste odredili broj primjeraka za ispis (od 1 do 999).</translation>
 <translation id="2184515124301515068">Neka Chrome odluči kada web-lokacije mogu reproducirati zvuk (preporučeno)</translation>
 <translation id="2187895286714876935">Pogreška pri uvozu Certifikata poslužitelja</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Svi kolačići i podaci web-lokacije</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Kopirana je 1 stavka}one{Kopirana je # stavka}few{Kopirane su # stavke}other{Kopirano je # stavki}}</translation>
 <translation id="2278562042389100163">Otvori prozor preglednika</translation>
-<translation id="2279874276457403668">Odjednom možete izraditi samo jednu sesiju.</translation>
 <translation id="2280486287150724112">Desna margina</translation>
 <translation id="2282146716419988068">GPU proces</translation>
 <translation id="2282155092769082568">URL za automatsku konfiguraciju:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Napomene za zaključani zaslon automatski se spremaju u aplikaciju <ph name="LOCK_SCREEN_APP_NAME" />. Najnovija napomena ostat će na zaključanom zaslonu.</translation>
 <translation id="2353297238722298836">Dopušteni su kamera i mikrofon</translation>
 <translation id="2356070529366658676">Upitaj</translation>
-<translation id="2357949918965361754">Pomoću te značajke možete prikazivati sadržaj iz Chromea na televizoru ili drugim uređajima.</translation>
 <translation id="2359345697448000899">Upravljajte svojim proširenjima tako da u izborniku Alati kliknete Proširenja.</translation>
 <translation id="2359808026110333948">Nastavi</translation>
 <translation id="236117173274098341">Optimiziraj</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Vaša organizacija zahtijeva trenutačno ažuriranje ovog uređaja</translation>
 <translation id="2439545803278355377">Unesite novi PIN. PIN mora imati najmanje četiri znaka i može sadržavati slova, brojke i druge znakove.</translation>
 <translation id="2440604414813129000">Pogledaj i&amp;zvor</translation>
+<translation id="2442916515643169563">Sjenčanje teksta</translation>
 <translation id="2444119669991608829">Jezik stranice nije <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Obavezan je korijenski direktorij proširenja.</translation>
 <translation id="2445484935443597917">Izradi novi profil</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Ne nakon</translation>
 <translation id="2739191690716947896">Otkloni pogrešku</translation>
 <translation id="2739240477418971307">promijeniti postavke pristupačnosti</translation>
+<translation id="274029851662193272">Utisnuto</translation>
 <translation id="2740393541869613458">pregledavati web-lokacije koje je nadzirani korisnik posjetio i</translation>
 <translation id="2741912629735277980">Prikaži korisničko sučelje na zaslonu za prijavu</translation>
 <translation id="274290345632688601">Vraćanje Linux aplikacija i datoteka</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Prečac već postoji</translation>
 <translation id="2807517655263062534">Ovdje se prikazuju datoteke koje ste preuzeli</translation>
 <translation id="2809586584051668049">i još <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt nije podržan</translation>
 <translation id="2812944337881233323">Odjavite se, pa se ponovo prijavite</translation>
 <translation id="2812989263793994277">Ne prikazuj nikakve slike</translation>
 <translation id="281390819046738856">Zahtjev nije bilo moguće potpisati.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Davatelj usluge</translation>
 <translation id="2844169650293029770">USB-C uređaj (prednji lijevi priključak)</translation>
 <translation id="2845382757467349449">Uvijek prikaži traku oznake</translation>
-<translation id="2847759467426165163">Emitiranje na uređaju</translation>
 <translation id="284805635805850872">Ukloniti štetni softver?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Čišćenje nije uspjelo</translation>
@@ -1297,6 +1305,7 @@
     Poruka poslužitelja: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Dodavanje galerije medija po direktoriju</translation>
 <translation id="2910318910161511225">Povežite se s mrežom i pokušajte ponovo</translation>
+<translation id="2910518940971897750">Spremi u izvornu datoteku</translation>
 <translation id="2913331724188855103">Dopusti web-lokacijama da spremaju i čitaju podatke kolačića (preporučeno)</translation>
 <translation id="2915102088417824677">Pregledajte zapisnik aktivnosti</translation>
 <translation id="2915873080513663243">Automatsko traženje</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI uređaji</translation>
 <translation id="3015639418649705390">Ponovo pokreni sada</translation>
 <translation id="3016329696181678353">Automatsko konfiguriranje pisača <ph name="PRINTER_NAME" /> nije uspjelo. Navedite napredne pojedinosti pisača.</translation>
+<translation id="3016381065346027039">Nema unosa u zapisniku</translation>
 <translation id="3016641847947582299">Komponenta je ažurirana</translation>
 <translation id="3016780570757425217">znati vašu lokaciju</translation>
 <translation id="3017079585324758401">Pozadina</translation>
 <translation id="3020183492814296499">Prečaci</translation>
 <translation id="3020990233660977256">Serijski broj: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Leptir</translation>
+<translation id="3021408157810018664">Želite li spremiti promjene u izvorne datoteke?</translation>
 <translation id="3021426244864538700">Pristupanje podacima ove web-lokacije</translation>
 <translation id="3021678814754966447">&amp;Pogledaj izvor okvira</translation>
 <translation id="3022978424994383087">Nisam shvatio.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Možete također preskočiti prijavu i <ph name="LINK_START" />pregledavati kao gost<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Web-lokacija pristupa videoulazu</translation>
 <translation id="3177909033752230686">Jezik stranice:</translation>
+<translation id="3179982752812949580">Font teksta</translation>
 <translation id="3181954750937456830">Sigurno pregledavanje (štiti vas i vaš uređaj od opasnih web-lokacija)</translation>
 <translation id="3182749001423093222">Provjera pravopisa</translation>
 <translation id="3183139917765991655">Uvoz profila</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Otvori kao prozor</translation>
 <translation id="3278001907972365362">Morate učiniti nešto u vezi sa svojim Google računima</translation>
 <translation id="3279230909244266691">Taj postupak može potrajati nekoliko minuta. Pokreće se virtualno računalo.</translation>
-<translation id="3279741024917655738">Prikaži videozapise preko cijelog zaslona na</translation>
 <translation id="3280237271814976245">Spremi &amp;kao...</translation>
 <translation id="3280243678470289153">Ostani u Chromeu</translation>
 <translation id="3281892622610078515">Datoteke i programi za karantenu:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Nisu pronađeni rezultati pretraživanja</translation>
 <translation id="3305389145870741612">Postupak formatiranja može potrajati nekoliko sekundi. Pričekajte.</translation>
 <translation id="3305661444342691068">Otvori PDF u Pregledu</translation>
-<translation id="3306684685104080068">Omogući emitiranje na usluge u oblaku kao što je Google Hangouts.</translation>
+<translation id="3307871847038842490">Ova stranica ima dopuštenje za spremanje u izvorne datoteke.</translation>
 <translation id="3308006649705061278">Organizacijska jedinica (OU)</translation>
 <translation id="3308116878371095290">Ova stranica je spriječena u postavljanju kolačića.</translation>
 <translation id="3308134619352333507">Gumb za skrivanje</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Želite li otkazati izradu računa?</translation>
 <translation id="3464012987031883895">Web-lokacija pristupa audioulazu</translation>
 <translation id="346431825526753">Ovo je račun za djecu kojim upravlja <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Strujanje video ili audiodatoteke</translation>
 <translation id="3468999815377931311">Android telefon</translation>
 <translation id="3470442499439619530">Uklanjanje tog korisnika</translation>
 <translation id="3473479545200714844">Povećalo</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Smanji</translation>
 <translation id="3497560059572256875">Dijeljenje doodle logotipa</translation>
 <translation id="3505030558724226696">Opoziv pristupa uređaju</translation>
+<translation id="3505635633742443645">HDMI priključak vaše priključne stanice ne može se upotrebljavati kad se USB priključak vrste C upotrebljava za videoizlaz. Odaberite neki drugi priključak za jedan od zaslona.</translation>
 <translation id="3507421388498836150">Trenutačna dopuštenja za "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Ponovo skenirajte Bluetooth uređaje</translation>
 <translation id="3508920295779105875">Odaberi drugu mapu...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Uspješno instalirano</translation>
 <translation id="3578594933904494462">Sadržaj ove kartice dijeli se.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; želi dijeliti pisač &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; s grupom čiji ste vlasnik: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Ako prihvatite, svi članovi grupe moći će ispisivati putem pisača.</translation>
+<translation id="357889014807611375">Wi-Fi s ograničenim prometom</translation>
 <translation id="3584169441612580296">čitati i mijenjati fotografije, glazbu i druge medije s vašeg računala</translation>
 <translation id="3587482841069643663">Sve</translation>
 <translation id="358796204584394954">Upišite ovaj kôd na uređaju <ph name="DEVICE_NAME" /> da biste ga uparili:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Pridružite se</translation>
 <translation id="3593965109698325041">Ograničenja naziva certifikata</translation>
 <translation id="3596235046596950091">Omogući usluge u oblaku</translation>
+<translation id="3599221874935822507">Izdignuto</translation>
 <translation id="3599863153486145794">Briše povijest na svim uređajima na kojima ste prijavljeni. Na vašem Google računu možda postoje drugi oblici povijesti pregledavanja na stranici <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Podaci o web-zahtjevu</translation>
 <translation id="3600792891314830896">Isključen je zvuk na web-lokacijama koje ga reproduciraju</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Datoteku je preuzelo proširenje &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Prikaži <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Otvori u novoj kartici</translation>
+<translation id="3615073365085224194">Prislonite prst na senzor otiska prsta</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Obriši podatke o pregledavanju...</translation>
 <translation id="3617891479562106823">Pozadine nisu dostupne. Pokušajte ponovo kasnije.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Početna stranica</translation>
 <translation id="3720996970802414353">Svejedno promijeni</translation>
 <translation id="3722108462506185496">Došlo je do pogreške prilikom pokretanja usluge virtualnog računala. Pokušajte ponovo.</translation>
-<translation id="3723158278575423087">Dobro došli u značajku Cast na Chromiumu!</translation>
 <translation id="3725367690636977613">stranice</translation>
 <translation id="3726137731714254362">Uklanjanjem mapa s ovog mjesta zaustavit će se dijeljenje, ali se datoteke neće izbrisati.</translation>
 <translation id="3727148787322499904">Promjena te postavke utjecat će na sve dijeljene mreže</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Detaljni podaci o međuverziji</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Komuniciranje s USB uređajem}one{Komuniciranje s # USB uređajem}few{Komuniciranje s # USB uređaja}other{Komuniciranje s # USB uređaja}}</translation>
 <translation id="3765246971671567135">Nije bilo moguće pročitati pravila izvanmrežnog demo načina.</translation>
-<translation id="3766223500670287046">Udaljeni zaslon</translation>
 <translation id="3768037234834996183">Sinkroniziranje postavki...</translation>
 <translation id="377050016711188788">Sladoled</translation>
 <translation id="3771294271822695279">Datoteke videozapisa</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Podignite i ponovo dodirnite</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinkronizacija je pauzirana</translation>
-<translation id="3862134173397075045">Dobro došli u značajku Cast u Chromeu!</translation>
 <translation id="3862693525629180217">Potvrda putem ugrađenog senzora</translation>
 <translation id="3862788408946266506">Aplikaciju s atributom manifesta "kiosk_only" potrebno je instalirati u načinu kioska OS-a Chrome</translation>
 <translation id="3865414814144988605">Razlučivost</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Telefon za Smart Lock promijenio se</translation>
 <translation id="3927932062596804919">Odbij</translation>
 <translation id="3930737994424905957">Traženje uređaja</translation>
+<translation id="3930968231047618417">Boja pozadine</translation>
 <translation id="3933283459331715412">Vratite izbrisanu zaporku za <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Otvori audio na novoj kartici</translation>
 <translation id="3936925983113350642">Zaporka koju odaberete bit će potrebna kasnije za vraćanje ovog certifikata. Zabilježite je na sigurnom mjestu.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Uvezeno iz IE</translation>
 <translation id="3950820424414687140">Prijava</translation>
+<translation id="3950828138786918475">Ova kartica ima dopuštenje za čitanje mape na vašem uređaju.</translation>
 <translation id="3954354850384043518">U tijeku</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> herca)</translation>
 <translation id="3954953195017194676">Nemate nedavno snimljenih WebRTC zapisnika događaja.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Izračun u tijeku…</translation>
 <translation id="3975565978598857337">Kontaktiranje poslužitelja za domenu nije uspjelo</translation>
 <translation id="397703832102027365">Dovršavanje...</translation>
+<translation id="3977886311744775419">Na ovoj vrsti mreže ne preuzimaju se automatska ažuriranja, no možete ih potražiti ručno.</translation>
 <translation id="3979395879372752341">Dodan je novi nastavak (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Omogući <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Unesena je nevažeća vrsta spremanja.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Omogući dodir umjesto klika</translation>
 <translation id="4195643157523330669">Otvori na novoj kartici</translation>
 <translation id="4195814663415092787">Nastavite tamo gdje ste stali</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> može spremati vaše promjene izravno u sljedeće datoteke. Ta web-lokacija može spremati promjene samo dok je ova kartica otvorena.</translation>
 <translation id="4198146608511578238">Samo držite ikonu Pokretača da biste razgovarali s Google asistentom.</translation>
 <translation id="4200689466366162458">Prilagođene riječi</translation>
 <translation id="4200983522494130825">Nova &amp;kartica</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Automatski se poveži s mobilnom mrežom</translation>
 <translation id="4268025649754414643">Šifriranje ključa</translation>
 <translation id="4270393598798225102">Verzija <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Nema rezultata</translation>
 <translation id="4275663329226226506">Mediji</translation>
 <translation id="4275830172053184480">Ponovo pokrenite svoj uređaj</translation>
 <translation id="4278101229438943600">Vaš je Asistent spreman</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Vrijeme CPU-a</translation>
 <translation id="4534661889221639075">Pokušajte ponovo.</translation>
 <translation id="4535127706710932914">Zadani profil</translation>
+<translation id="4535767533210902251">Senzor otiska prsta nalazi se u najvišoj tipki s desne strane tipkovnice. Dodirnite ga lagano bilo kojim prstom.</translation>
 <translation id="4538684596480161368">Uvijek blokiraj dodatke izvan testnog okruženja na <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Instalirano pravilima tvrtke.</translation>
 <translation id="4542520061254486227">čitati vaše podatke s web-lokacija <ph name="WEBSITE_1" /> i <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Više...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Uparivanje Bluetooth uređaja</translation>
+<translation id="4578012756826807359">Podaci za prijavu uspješno su izbrisani.</translation>
 <translation id="4579581181964204535">Ne može se emitirati <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Došlo je do pogreške prilikom vraćanja Linuxa</translation>
 <translation id="4582563038311694664">Vraćanje svih postavki na zadano</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Kolačići više web-lokacija bit će izbrisani pri izlazu.</translation>
 <translation id="4765582662863429759">Omogućuje Android porukama prijenos tekstnih poruka s vašeg telefona na Chromebook</translation>
 <translation id="4768332406694066911">Imate certifikate ovih organizacija koji vas identificiraju</translation>
-<translation id="4772404146526168240">Oba zaslona</translation>
 <translation id="4776146737004271126">Otvori postavke Androida</translation>
 <translation id="4776917500594043016">Zaporka za adresu <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Trgovina Play</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Prijavite se tako da vam oznake, povijest i druge postavke budu dostupne na svim vašim uređajima. Automatski ćete se prijaviti i na Googleove usluge.</translation>
 <translation id="4929386379796360314">Odredišta ispisa</translation>
 <translation id="4930714375720679147">Uključi</translation>
-<translation id="4931132176527519925">Uvijek upotrebljavaj zrcaljenje</translation>
 <translation id="4932733599132424254">Datum</translation>
 <translation id="4933484234309072027">ugrađeno na URL <ph name="URL" /></translation>
 <translation id="493571969993549666">Dodaj nadziranog korisnika</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Uključi zvuk</translation>
 <translation id="4992458225095111526">Potvrda Powerwasha</translation>
 <translation id="4992473555164495036">Vaš je administrator ograničio dostupne načine unosa.</translation>
+<translation id="4992866843815555470">Potrebno je servisirati priključnu stanicu. Ako ventilator ne funkcionira, priključna će se stanica isključiti.</translation>
 <translation id="4992926179187649719">Uključite "Ok Google"</translation>
 <translation id="4994474651455208930">Dopusti web-lokacijama traženje dopuštenja da postanu zadani rukovatelji za protokole</translation>
 <translation id="4994754230098574403">Postavljanje</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">ID procesa</translation>
 <translation id="5233638681132016545">Nova kartica</translation>
 <translation id="5233736638227740678">&amp;Zalijepi</translation>
-<translation id="5234764350956374838">Odbaci</translation>
 <translation id="5235050375939235066">Želite li deinstalirati aplikaciju?</translation>
 <translation id="5235750401727657667">Zamijenite stranicu koja se prikazuje prilikom otvaranja nove kartice</translation>
 <translation id="5238278114306905396">Aplikacija "<ph name="EXTENSION_NAME" />" automatski je uklonjena.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google preporučuje Chrome</translation>
 <translation id="532247166573571973">Poslužitelj možda nije dostupan. Pokušajte ponovo kasnije.</translation>
 <translation id="5324780743567488672">Automatski postavi vremensku zonu pomoću vlastite lokacije</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – ima dopuštenje za spremanje u izvorne datoteke</translation>
 <translation id="5327248766486351172">Naziv</translation>
 <translation id="5327570636534774768">Označeno je da uređajem upravlja neka druga domena. Prije postavljanja demo načina oduzmite pristup za tu domenu.</translation>
 <translation id="532943162177641444">Dodirnite obavijest na telefonu <ph name="PHONE_NAME" /> da biste postavili mobilnu žarišnu točku koju može upotrebljavati ovaj uređaj.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> želi</translation>
 <translation id="5534304873398226603">Odbaci fotografiju ili videozapis</translation>
 <translation id="5535941515421698170">Također uklonite postojeće podatke s uređaja</translation>
-<translation id="5537725057119320332">Emitiraj</translation>
 <translation id="5539221284352502426">Poslužitelj je odbio zaporku koju ste unijeli. Mogući su razlozi sljedeći: zaporka je prekratka. Zaporka mora sadržavati brojeve ili simbole. Zaporka mora biti različita od prethodnih zaporki.</translation>
 <translation id="5541687815721799001">Upotreba aplikacije</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Saznajte više o pristupu web-lokacijama</translation>
 <translation id="6000758707621254961">Rezultata za upit "<ph name="SEARCH_TEXT" />" ima <ph name="RESULT_COUNT" /></translation>
 <translation id="6002458620803359783">Preferirani glasovi</translation>
-<translation id="6005695835120147974">Usmjerivač medija</translation>
 <translation id="6006484371116297560">Klasična</translation>
 <translation id="6007240208646052708">Glasovno pretraživanje na vašem jeziku nije dostupno.</translation>
 <translation id="6009781704028455063">Ugrađeni senzor</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Novi pisač na vašoj mreži}one{Novi pisači na vašoj mreži}few{Novi pisači na vašoj mreži}other{Novi pisači na vašoj mreži}}</translation>
 <translation id="6286708577777130801">Podaci o spremljenim zaporkama</translation>
 <translation id="6289452883081499048">Prilagođene Googleove usluge kao što je Play</translation>
-<translation id="6290556621549272952">Pomoću te značajke možete prikazivati sadržaj iz Chromiuma na televizoru ili drugim uređajima.</translation>
 <translation id="6291949900244949761">Kada web-lokacija želi pristupiti USB uređajima, prikaži upit (preporučeno)</translation>
 <translation id="6291953229176937411">&amp;Prikaži u programu Finder</translation>
 <translation id="6295158916970320988">Sve web-lokacije</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Šalji <ph name="BEGIN_LINK1" />informacije o sustavu<ph name="END_LINK1" /> i <ph name="BEGIN_LINK2" />mjerne podatke<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Blokiraj web-lokacijama upotrebu senzora kretanja</translation>
 <translation id="6397094776139756010">Opcije sinkronizacije i prilagodbe</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> moći će spremati vaše promjene izravno u datoteke u sljedećoj mapi. Ta web-lokacija može spremati promjene samo dok je ova kartica otvorena.</translation>
 <translation id="6398715114293939307">Ukloni Trgovinu Google Play</translation>
 <translation id="6398765197997659313">Izađi iz cijelog zaslona</translation>
 <translation id="6399774419735315745">Špijunka</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">Na određenim web-lokacijama</translation>
 <translation id="6455894534188563617">&amp;Nova mapa</translation>
 <translation id="6456394469623773452">Solidan</translation>
+<translation id="6456955391422100996">Oglas je uklonjen.</translation>
 <translation id="645705751491738698">Nastavi blokirati JavaScript</translation>
 <translation id="6458701200018867744">Prijenos nije uspio (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Koristi odabir za traženje</translation>
 <translation id="6459799433792303855">Aktivni prozor premješten je na drugi zaslon.</translation>
 <translation id="6460601847208524483">Traži sljedeće</translation>
+<translation id="6461170143930046705">Traženje mreža...</translation>
 <translation id="6463795194797719782">&amp;Uredi</translation>
 <translation id="6466988389784393586">&amp;Otvaranje svih oznaka</translation>
 <translation id="6467304607960172345">Optimiziraj videozapise na cijelom zaslonu</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Vaša je trenutačna mreža <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Podijeli</translation>
 <translation id="6528513914570774834">Dopusti drugim korisnicima ovog uređaja da upotrebljavaju ovu mrežu</translation>
 <translation id="652948702951888897">Chromeova povijest</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Brzina</translation>
 <translation id="6681668084120808868">Snimite fotografiju</translation>
 <translation id="6681964764822470072">Aplikacija "<ph name="APP_NAME" />" deinstalirat će se.</translation>
-<translation id="6685083257944113180">Zaustavi, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Otvori Google Play</translation>
 <translation id="6686490380836145850">Zatvori kartice s desne strane</translation>
 <translation id="6686817083349815241">Spremite zaporku</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Maksimalno otvaranje</translation>
 <translation id="6845325883481699275">Pomognite poboljšati sigurnost na Chromeu</translation>
 <translation id="6848388270925200958">Trenutačno imate neke kartice kojima se može plaćati samo na ovom uređaju</translation>
+<translation id="6850286078059909152">Boja teksta</translation>
 <translation id="6851497530878285708">Aplikacija je omogućena</translation>
 <translation id="6853388645642883916">Alat za ažuriranje u mirovanju je</translation>
 <translation id="68541483639528434">Zatvori ostale kartice</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Pomicanje/klik</translation>
 <translation id="6923633482430812883">Pogreška pri učitavanju dijeljenja. Provjerite podržava li poslužitelj datoteka s kojim se povezujete SMBv2 ili noviju verziju.</translation>
 <translation id="6930036377490597025">Vanjski sigurnosni ključ ili ugrađeni senzor</translation>
-<translation id="6930242544192836755">Trajanje</translation>
 <translation id="693807610556624488">Operacija zapisivanja premašuje maksimalnu duljinu atributa za uređaj: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Prijavite se na <ph name="TOKEN_NAME" /> kako biste se prijavili na <ph name="HOST_NAME" /> sa svojim certifikatom.</translation>
 <translation id="6943176775188458830">Otkaži ispis</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Rukovatelji plaćanjem</translation>
 <translation id="6951663584153258142">Vaša organizacija traži da ažurirate uređaj</translation>
 <translation id="6953878494808481632">Povezani podaci</translation>
+<translation id="6953916367503892689">{0,plural, =1{Datoteka: <ph name="FILES" />}one{Datoteke: <ph name="FILES" />}few{Datoteke: <ph name="FILES" />}other{Datoteke: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Provjeri skočni prozor</translation>
 <translation id="6957044667612803194">Ovaj sigurnosni ključ ne podržava PIN-ove</translation>
 <translation id="6957231940976260713">Naziv usluge</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Stranica se nije mogla prevesti.</translation>
 <translation id="7254951428499890870">jeste li sigurni da želite pokrenuti "<ph name="APP_NAME" />" u načinu dijagnostike?</translation>
 <translation id="7255002516883565667">Trenutačno imate jednu karticu kojom se može plaćati samo na ovom uređaju</translation>
-<translation id="7255220508626648026">Emitiranje: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Još jednom dodirnite sigurnosni ključ da biste potvrdili vraćanje na zadano. Sve informacije pohranjene na sigurnosnom ključu, uključujući njegov PIN, izbrisat će se.</translation>
 <translation id="7255935316994522020">Primijeni</translation>
 <translation id="7256069762010468647">Web-lokacija upotrebljava vašu kameru</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">razvojni</translation>
 <translation id="7456847797759667638">Otvori lokaciju...</translation>
 <translation id="7458168200501453431">Upotrebljava istu provjeru pravopisa koja se upotrebljava na Google pretraživanju. Tekst koji unesete u preglednik šalje se Googleu.</translation>
+<translation id="7460045493116006516">Trenutačna instalirana tema</translation>
 <translation id="7461924472993315131">Prikvači</translation>
 <translation id="746216226901520237">Sljedeći će put vaš telefon otključati vaš uređaj <ph name="DEVICE_TYPE" />. Smart Lock možete isključiti u Postavkama.</translation>
 <translation id="7463006580194749499">Dodaj osobu</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Nova kartica</translation>
 <translation id="7556033326131260574">Smart Lock nije uspio potvrditi vaš račun. Upišite zaporku da biste pristupili uređaju.</translation>
 <translation id="7556242789364317684">Nažalost, <ph name="SHORT_PRODUCT_NAME" /> ne može oporaviti vaše postavke. Da biste ispravili pogrešku, <ph name="SHORT_PRODUCT_NAME" /> mora vratiti vaš uređaj na zadane postavke pomoću funkcije Powerwash.</translation>
+<translation id="7559444627302317199">Provjerite mrežnu vezu i pokušajte ponovo.</translation>
 <translation id="7559719679815339381">Pričekajte... Aplikacija kioska upravo se ažurira. Ne uklanjajte USB privjesak.</translation>
 <translation id="7561196759112975576">Uvijek</translation>
 <translation id="7563991800558061108">Da biste uklonili tu pogrešku, morat ćete se prijaviti na svoj Google račun
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Udvostruči</translation>
 <translation id="7887864092952184874">Bluetooth miš uparen</translation>
 <translation id="7889565820482017512">Veličina prikaza</translation>
-<translation id="7889966925761734854">Traženje</translation>
 <translation id="7893008570150657497">pristupiti fotografijama, glazbi i drugim medijima s vašeg računala</translation>
 <translation id="7893153962594818789">Bluetooth je isključen na ovom <ph name="DEVICE_TYPE" /> uređaju. Unesite zaporku i uključite Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (zadano)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Zadrži na alatnoj traci</translation>
 <translation id="7898725031477653577">Uvijek prevedi</translation>
 <translation id="790040513076446191">rukovati postavkama koje se odnose na privatnost</translation>
-<translation id="7902874111237641165">Smooth Motion [beta]</translation>
 <translation id="7903345046358933331">Stranica je prestala reagirati. Možete pričekati da počne reagirati ili je zatvoriti.</translation>
 <translation id="7903742244674067440">U arhivi imate certifikate koji identificiraju ova tijela za izdavanje certifikata</translation>
 <translation id="7903925330883316394">Uslužni proces: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">čitati sve tekstove izgovorene sintetiziranim govorom</translation>
 <translation id="8037357227543935929">Pitaj (zadano)</translation>
 <translation id="803771048473350947">Datoteka</translation>
+<translation id="8042142357103597104">Prozirnost teksta</translation>
 <translation id="8044899503464538266">Sporo</translation>
 <translation id="8045253504249021590">Sinkronizacija je zaustavljena putem Google nadzorne ploče.</translation>
 <translation id="8045923671629973368">Unesite ID aplikacije ili URL web-trgovine</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Tu uslugu možete isključiti u Postavkama.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN-ovi se ne podudaraju</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> upotrebljava proxy postavke iz proširenja</translation>
-<translation id="8099495042588009598">Više dopuštenja</translation>
 <translation id="8101987792947961127">Pri sljedećem ponovnom pokretanju potrebno je izvršiti Powerwash</translation>
 <translation id="8102159139658438129">Otvorite <ph name="LINK_BEGIN" />Postavke<ph name="LINK_END" /> da biste vidjeli opcije za povezani telefon</translation>
 <translation id="8104696615244072556">Pokrenite Powerwash na svom <ph name="IDS_SHORT_PRODUCT_NAME" /> uređaju i vratite ga na prethodnu verziju.</translation>
@@ -4773,8 +4788,10 @@
 Mislim da ta web-lokacija ne bi trebala biti blokirana!</translation>
 <translation id="8184288427634747179">Prijeđi na <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Više informacija</translation>
+<translation id="8184472985242519288">Ujednačeno</translation>
 <translation id="8185331656081929126">Prikaži obavijesti kada se otkriju novi pisači na mreži</translation>
 <translation id="8186609076106987817">Poslužitelj nije mogao pronaći datoteku.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> može čitati sve datoteke u sljedećoj mapi. Ta web-lokacija može vidjeti promjene u mapi samo dok je ova kartica otvorena.</translation>
 <translation id="8188389033983459049">Pregledajte postavke uređaja i uključite ga da biste nastavili</translation>
 <translation id="8190193592390505034">Povezivanje s mrežom <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">upravljati vašim aplikacijama, proširenjima i temama</translation>
@@ -4878,8 +4895,6 @@
 <translation id="833986336429795709">Da biste otvorili tu vezu, odaberite aplikaciju</translation>
 <translation id="8342861492835240085">Odaberite zbirku</translation>
 <translation id="834290227245955730">PIN nije važeći. Preostalih pokušaja: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Upotrebljavajte visoku propusnost za najkvalitetniji prikaz videozapisa i animacija.
-Osobe sa sporom vezom možda neće vidjeti vaš sadržaj.</translation>
 <translation id="8351419472474436977">To proširenje preuzelo je kontrolu nad vašim postavkama proxyja, a to znači da može promijeniti, prekinuti ili prisluškivati sve što radite na mreži. Ako niste sigurni kako je došlo do te promjene, vjerojatno je ne želite.</translation>
 <translation id="8351630282875799764">Baterija se ne puni</translation>
 <translation id="835238322900896202">Došlo je do pogreške prilikom deinstalacije. Deinstalirajte aplikaciju putem terminala.</translation>
@@ -4912,9 +4927,11 @@
 <translation id="839736845446313156">Prijava</translation>
 <translation id="8398877366907290961">Svejedno nastavi</translation>
 <translation id="8400146488506985033">Upravljaj korisnicima</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> može spremati vaše promjene izravno u datoteke u sljedećoj mapi. Ta web-lokacija može spremati promjene samo dok je ova kartica otvorena.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Prvo pitaj (preporučeno)</translation>
 <translation id="8418445294933751433">&amp;Prikaži kao karticu</translation>
+<translation id="8418905021510211421">Ova stranica ima dopuštenje za čitanje mape na vašem uređaju.</translation>
 <translation id="8419098111404128271">Rezultati pretraživanja za "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Dobro došli na svoj <ph name="DEVICE_TYPE" /> uređaj!</translation>
 <translation id="8425213833346101688">Promijeni</translation>
@@ -4934,6 +4951,7 @@
 <translation id="8438566539970814960">Poboljšajte pretraživanje i pregledavanje</translation>
 <translation id="8439506636278576865">Ponudi prevođenje stranica na tom jeziku</translation>
 <translation id="8440630305826533614">Linux aplikacije</translation>
+<translation id="844241640324986723">Brisanje podataka za prijavu nije uspjelo.</translation>
 <translation id="8443338615972234259">Sada izradite novi račun za svog nadziranog korisnika.</translation>
 <translation id="8446884382197647889">Saznajte više</translation>
 <translation id="8447409163267621480">Mora sadržavati Ctrl ili Alt</translation>
@@ -4949,8 +4967,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Tog je nadziranog korisnika možda izbrisao ili onemogućio upravitelj. Kontaktirajte s upraviteljem ako se želite nastaviti prijavljivati kao taj korisnik.</translation>
 <translation id="846374874681391779">Traka preuzimanja</translation>
-<translation id="8463807869745732775">"&gt;
-    Pohranjeni podaci za prijavu na sigurnosnom ključu</translation>
 <translation id="8463955938112983119">Dodatak <ph name="PLUGIN_NAME" /> je onemogućen.</translation>
 <translation id="8464132254133862871">Račun ovog korisnika ne ispunjava uvjete za uslugu.</translation>
 <translation id="8465252176946159372">Nije važeće</translation>
@@ -5016,6 +5032,7 @@
 <translation id="8569002732135253578">Ispisuje se <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Nije pronađeno nijedno odredište</translation>
 <translation id="8571213806525832805">Protekla 4 tjedna</translation>
+<translation id="8573403125070227391">Ovaj oglas koristi previše resursa za vaš uređaj, pa ga je Chrome uklonio.</translation>
 <translation id="8574990355410201600">Uvijek dopusti zvuk na web-lokaciji <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Pritisnite <ph name="KEY_EQUIVALENT" /> za zatvaranje</translation>
 <translation id="8578639784464423491">Dopušteno je najviše 99 slova</translation>
@@ -5039,13 +5056,13 @@
 <translation id="8609465669617005112">Premjesti gore</translation>
 <translation id="8610103157987623234">Format nije točan. Pokušajte ponovo.</translation>
 <translation id="8615618338313291042">Anonimna aplikacija: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Sjena</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Status roaminga</translation>
 <translation id="8620765578342452535">Konfiguracija mrežnih veza</translation>
 <translation id="8621866727807194849">Na računalu imate štetni softver. Chrome ga uklanja, vraća vaše postavke i onemogućuje proširenja. Na taj će način vaš preglednik ponovo funkcionirati normalno.</translation>
 <translation id="8621979332865976405">Podijelite čitav zaslon</translation>
 <translation id="862542460444371744">&amp;Proširenja</translation>
-<translation id="8627151598708688654">Odaberite izvor</translation>
 <translation id="862727964348362408">Obustavljeno</translation>
 <translation id="862750493060684461">CSS predmemorija</translation>
 <translation id="8627795981664801467">Samo sigurne veze</translation>
@@ -5099,6 +5116,7 @@
 <translation id="8688579245973331962">Ne vidite svoje ime?</translation>
 <translation id="8688591111840995413">Pogrešna zaporka</translation>
 <translation id="8688672835843460752">Dostupno</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Open &amp;Location... (Otvori Lokaciju...)</translation>
 <translation id="869884720829132584">Izbornik aplikacija</translation>
 <translation id="869891660844655955">Datum isteka</translation>
@@ -5262,6 +5280,7 @@
 <translation id="891365694296252935">Slanje podataka o upotrebi i dijagnostici. Ovaj uređaj trenutačno Googleu automatski šalje dijagnostičke podatke te podatke o upotrebi uređaja i aplikacija. Ti se podaci neće upotrebljavati za identifikaciju vašeg djeteta, a pomoći će poboljšati sustav, stabilnost aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ovu postavku zadao je vlasnik. Ako je za vaše dijete uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na djetetov Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Učitavanje prijedloga</translation>
 <translation id="8916476537757519021">Anonimni podokvir: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – ima dopuštenje za čitanje mape na vašem uređaju</translation>
 <translation id="8919275547519617350">Da biste imali sve svoje zaporke na svim svojim uređajima, prijavite se i uključite sinkronizaciju.</translation>
 <translation id="8921366488406707015">Potvrđivanje sigurnosnog ključa...</translation>
 <translation id="8922013791253848639">Uvijek dopusti oglase na ovoj web-lokaciji</translation>
@@ -5291,7 +5310,6 @@
 <translation id="8965037249707889821">Unesite staru zaporku</translation>
 <translation id="8966870118594285808">Ponovo otvorite karticu ako ste je slučajno zatvorili</translation>
 <translation id="8967866634928501045">Pritisnite Alt + Shift + A za prikaz</translation>
-<translation id="8970203673128054105">Prikaži popis načina emitiranja</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Obratite se administratoru mreže i provjerite blokira li vatrozid preuzimanja s Googleovih poslužitelja.</translation>
 <translation id="8973557916016709913">Ukloni razinu zuma</translation>
@@ -5440,6 +5458,7 @@
 <translation id="9214520840402538427">Ups! Inicijalizacija atributa vremena instalacije istekla je. Obratite se predstavniku podrške.</translation>
 <translation id="9214695392875603905">Kolač</translation>
 <translation id="9215293857209265904">Dodano je proširenje "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> moći će spremati vaše promjene izravno u sljedeću datoteku. Ta web-lokacija može spremati promjene samo dok je ova kartica otvorena.</translation>
 <translation id="9218430445555521422">Postavi kao zadano</translation>
 <translation id="9219103736887031265">Slike</translation>
 <translation id="9220525904950070496">Uklanjanje računa</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index eeb58f1..b720226c 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Nem sikerült elindítani a virtuális gépet. Próbálja újra.</translation>
 <translation id="1089439967362294234">Jelszó módosítása</translation>
 <translation id="1090126737595388931">Nincs háttérben futó alkalmazás</translation>
+<translation id="1090290614672149983">Felülírja a módosításokkal az eredeti fájlt?</translation>
 <translation id="1090918500949388876">Bármikor hozzáférhet Segédjéhez, ha bekapcsolt képernyő mellett kimondja, hogy „Ok Google”</translation>
 <translation id="1091767800771861448">Nyomja le az ESC billentyűt a kihagyáshoz (csak nem hivatalos verzióknál).</translation>
 <translation id="1093457606523402488">Látható hálózatok:</translation>
 <translation id="1094607894174825014">Az olvasási vagy írási művelet érvénytelen eltolással lett kérve a következőn: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="1097658378307015415">Kérjük, bejelentkezés előtt a(z) <ph name="NETWORK_ID" /> hálózat aktiválásához lépjen be vendégként.</translation>
+<translation id="110029732810301672">Ez a lap menthet az eredeti fájlokba.</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> - mindig legyen lefordítva</translation>
 <translation id="1108600514891325577">&amp;Leállítás</translation>
 <translation id="1110155001042129815">Várakozás</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Napszemüveg</translation>
 <translation id="1151917987301063366">A(z) <ph name="HOST" /> mindig hozzáférhet az érzékelőkhöz</translation>
 <translation id="1153356358378277386">Párosított eszközök</translation>
-<translation id="1156488781945104845">Pontos idő</translation>
 <translation id="1161575384898972166">Kérjük, jelentkezzen be a(z) <ph name="TOKEN_NAME" /> szolgáltatásba az ügyféltanúsítvány exportálásához.</translation>
 <translation id="1163931534039071049">&amp;Keret forrásának megtekintése</translation>
 <translation id="1164674268730883318">Kikapcsolja a Smart Lockot a következőnél: <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player tárolási beállítások</translation>
 <translation id="1274997165432133392">Cookie-k és egyéb webhelyadatok</translation>
 <translation id="127668050356036882">Az összes ablak bezárása</translation>
-<translation id="1277908057200820621">Eszközlista megtekintése</translation>
 <translation id="1280820357415527819">Mobilhálózatok keresése…</translation>
 <translation id="1285320974508926690">Ezt a webhelyet soha ne fordítsa le</translation>
 <translation id="1285484354230578868">Adattárolás a Google Drive-fiókban</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Otthoni hálózat, nincs barangolás</translation>
 <translation id="1316136264406804862">Keresés...</translation>
 <translation id="1316495628809031177">A szinkronizálás szünetel</translation>
+<translation id="1317637799698924700">A dokkolóállomás C típusú USB-vel kompatibilis módban fog futni.</translation>
 <translation id="1322046419516468189">A mentett jelszavakat itt láthatja és kezelheti: <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Ha a többi eszközéről is szeretné elérni a lapjait, jelentkezzen be a Chrome-ba.</translation>
 <translation id="1327074568633507428">Nyomtató a Google Cloud Printben</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Böngészőjét<ph name="END_LINK" /> a(z) <ph name="ENROLLMENT_DOMAIN" /> felügyeli</translation>
 <translation id="1366177842110999534">Linuxos eszközöket, szerkesztőket és IDE-ket futtathat <ph name="DEVICE_TYPE" /> eszközén. &lt;a target="_blank" href="<ph name="URL" />"&gt;További információ&lt;/a&gt;.</translation>
 <translation id="1367951781824006909">Válasszon egy fájlt</translation>
+<translation id="1370749010280229230">A rendszer problémát észlelt a dokkhoz csatlakoztatott képernyőnél</translation>
 <translation id="1371301976177520732">Könyvjelzői, jelszavai, előzményei (és még sok más) valamennyi eszközén hozzáférhetők lesznek</translation>
 <translation id="1372841398847029212">Szinkronizálás saját fiókkal</translation>
 <translation id="1374844444528092021">A(z) "<ph name="NETWORK_NAME" />" hálózat által megkövetelt tanúsítvány nincs telepítve, illetve már nem érvényes. Kérjen egy új tanúsítványt, majd próbáljon újrakapcsolódni.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Weboldal, egyetlen fájl</translation>
 <translation id="1451917004835509682">Felügyelt személy hozzáadása</translation>
 <translation id="1454223536435069390">&amp;Képernyőkép készítése</translation>
+<translation id="1458243790901188746">{0,plural, =1{Mappa: <ph name="DIRECTORIES" />}other{Mappák: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Bővítmények által hozzáadott keresőmotorok</translation>
 <translation id="146000042969587795">A keretet blokkoltuk, mert nem biztonságos elemeket is tartalmaz.</translation>
 <translation id="146219525117638703">ONC állapot</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Beviteli lehetőségek megjelenítése</translation>
 <translation id="1651008383952180276">Mindkét alkalommal ugyanazt az összetett jelszót kell megadnia</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Adja hozzá a nyomtatót a Google Cloud Print szolgáltatáshoz, hogy bárhonnan nyomtathasson.}other{Adjon hozzá # nyomtatót a Google Cloud Print szolgáltatáshoz, hogy bárhonnan nyomtathasson.}}</translation>
+<translation id="1656528038316521561">Háttér átlátszatlansága</translation>
 <translation id="1657406563541664238">Segítsen a <ph name="PRODUCT_NAME" /> fejlesztésében azáltal, hogy automatikusan elküldi a használati statisztikákat és hibajelentéseket a Google részére</translation>
 <translation id="1658424621194652532">Ez az oldal hozzáfér az Ön mikrofonjához.</translation>
 <translation id="1660204651932907780">A webhelyek lejátszhatnak hangokat (ajánlott)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546">A(z) <ph name="URL" /> szeretné látni a biztonsági kulcs márkáját és típusát</translation>
 <translation id="1679068421605151609">Fejlesztői eszközök</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Biztosan kilép?</translation>
 <translation id="167983332380191032">A kezelési szolgáltatás HTTP-hibát küldött</translation>
 <translation id="1680849702532889074">Hiba történt a Linux-alkalmazás telepítése során.</translation>
 <translation id="16815041330799488">Annak tiltása a webhelyek számára, hogy lássák a vágólapra másolt szövegeket és képeket</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Védett médiaelem azonosítója</translation>
 <translation id="175196451752279553">Bezárt lap m&amp;egnyitása</translation>
 <translation id="1753905327828125965">Leggyakrabban látogatott</translation>
+<translation id="1755601632425835748">Szövegméret</translation>
 <translation id="1756681705074952506">Beviteli mód</translation>
 <translation id="1757301747492736405">Az eltávolítás függőben van</translation>
 <translation id="175772926354468439">Téma engedélyezése</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Kisebb</translation>
 <translation id="1919345977826869612">Hirdetések</translation>
 <translation id="1919814239594435008">Sandbox-technológiát nem alkalmazó beépülő modul engedélyezve</translation>
+<translation id="1920390473494685033">Névjegyek</translation>
 <translation id="1921050530041573580">Telefon párosítása a Messages szolgáltatással</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" /> – a Google okosmegoldásaival</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Inkognitólap: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">A(z) <ph name="PEPPER_PLUGIN_DOMAIN" /> webhelyen található <ph name="PEPPER_PLUGIN_NAME" /> bővítmény hozzá szeretne férni a számítógéphez</translation>
 <translation id="2178614541317717477">A tanúsítványkibocsátó veszélyeztetve</translation>
+<translation id="2179849162388791084">Nem sikerült beolvasni a biztonsági hardverkulcson lévő bejelentkezési adatokat.</translation>
 <translation id="218070003709087997">Számmal jelezze, hogy hány példányt kell nyomtatni (1–999).</translation>
 <translation id="2184515124301515068">A Chrome dönthet arról, hogy a webhelyek lejátszhatnak-e hangot (ajánlott)</translation>
 <translation id="2187895286714876935">Hiba a szervertanúsítvány importálásánál</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Összes cookie és webhelyadat</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 elem másolva}other{# elem másolva}}</translation>
 <translation id="2278562042389100163">Böngészőablak megnyitása</translation>
-<translation id="2279874276457403668">Egyszerre csak egy munkamenetet lehet létrehozni.</translation>
 <translation id="2280486287150724112">Jobb margó</translation>
 <translation id="2282146716419988068">GPU-folyamat</translation>
 <translation id="2282155092769082568">URL automatikus konfigurációja:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">A lezárási képernyő jegyzeteit a rendszer automatikusan elmenti ide: <ph name="LOCK_SCREEN_APP_NAME" />. A legutolsó jegyzet megmarad a lezárási képernyőn.</translation>
 <translation id="2353297238722298836">Kamera és mikrofon engedélyezve</translation>
 <translation id="2356070529366658676">Kérés</translation>
-<translation id="2357949918965361754">E funkcióval a Chrome-ban megjelenő tartalmakat jeleníthet meg tévén vagy más készüléken.</translation>
 <translation id="2359345697448000899">Bővítményeit az Eszközök menü Bővítmények elemére kattintva kezelheti.</translation>
 <translation id="2359808026110333948">Tovább</translation>
 <translation id="236117173274098341">Optimalizálás</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Szervezete megköveteli az eszköz azonnali frissítését</translation>
 <translation id="2439545803278355377">Írja be az új PIN-kódot. A PIN-kódnak legalább négy karakterből kell állnia, és tartalmazhat betűket, számokat és egyéb karaktereket is.</translation>
 <translation id="2440604414813129000">F&amp;orrás megtekintése</translation>
+<translation id="2442916515643169563">Szövegárnyék</translation>
 <translation id="2444119669991608829">Az oldal nem <ph name="LANGUAGE" /> nyelvű?</translation>
 <translation id="2445081178310039857">A bővítmény gyökérkönyvtárát kötelező megadni.</translation>
 <translation id="2445484935443597917">Új profil létrehozása</translation>
@@ -1181,6 +1188,7 @@
 <translation id="2738771556149464852">Ezután nem:</translation>
 <translation id="2739191690716947896">Hibakeresés</translation>
 <translation id="2739240477418971307">Kisegítő beállítások módosítása</translation>
+<translation id="274029851662193272">Süllyesztett</translation>
 <translation id="2740393541869613458">a felügyelt felhasználó által felkeresett webhelyek áttekintése, valamint</translation>
 <translation id="2741912629735277980">Kezelőfelület megjelenítése a bejelentkezési képernyőn</translation>
 <translation id="274290345632688601">Linux-alkalmazások és -fájlok visszaállítása</translation>
@@ -1229,6 +1237,7 @@
 <translation id="2806891468525657116">Ez a billentyűparancs már létezik</translation>
 <translation id="2807517655263062534">A letöltött fájlok itt jelennek meg</translation>
 <translation id="2809586584051668049">és <ph name="NUMBER_ADDITIONAL_DISABLED" /> további</translation>
+<translation id="2812049959647166806">A Thunderbolt nem támogatott</translation>
 <translation id="2812944337881233323">Próbáljon meg kijelentkezni, majd újra bejelentkezni</translation>
 <translation id="2812989263793994277">Ne mutassa a képeket</translation>
 <translation id="281390819046738856">A kérést nem lehetett aláírni.</translation>
@@ -1251,7 +1260,6 @@
 <translation id="2841837950101800123">Szolgáltató</translation>
 <translation id="2844169650293029770">C típusú USB-vel kompatibilis eszköz (bal első port)</translation>
 <translation id="2845382757467349449">A könyvjelzők eszköztára mindig látható</translation>
-<translation id="2847759467426165163">Átküldés a következőre</translation>
 <translation id="284805635805850872">Eltávolítja a kártékony szoftvert?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Nem sikerült a szoftvereltávolítás</translation>
@@ -1298,6 +1306,7 @@
     Szerverüzenet: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Médiagaléria hozzáadása könyvtár szerint</translation>
 <translation id="2910318910161511225">Csatlakozzon egy hálózathoz, és próbálja újra</translation>
+<translation id="2910518940971897750">Mentés az eredeti fájlba</translation>
 <translation id="2913331724188855103">Cookie-adatok mentésének és olvasásának engedélyezése a webhelyeken (ajánlott)</translation>
 <translation id="2915102088417824677">Tevékenységnapló megtekintése</translation>
 <translation id="2915873080513663243">Automatikus keresés</translation>
@@ -1362,12 +1371,14 @@
 <translation id="3013291976881901233">MIDI-eszközök</translation>
 <translation id="3015639418649705390">Újraindítás most</translation>
 <translation id="3016329696181678353">Nem sikerült a(z) <ph name="PRINTER_NAME" /> automatikus beállítása. Adja meg a nyomtató speciális adatait.</translation>
+<translation id="3016381065346027039">Nincsenek naplóbejegyzések</translation>
 <translation id="3016641847947582299">Összetevő frissítve</translation>
 <translation id="3016780570757425217">Az Ön tartózkodási helyének megismerése</translation>
 <translation id="3017079585324758401">Háttér</translation>
 <translation id="3020183492814296499">Parancsikonok</translation>
 <translation id="3020990233660977256">Sorozatszám: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Pillangó</translation>
+<translation id="3021408157810018664">Felülírja a módosításokkal az eredeti fájlokat?</translation>
 <translation id="3021426244864538700">Ezek a bővítmények hozzáférnek a jelenlegi webhely adataihoz</translation>
 <translation id="3021678814754966447">&amp;Keret forrásának megtekintése</translation>
 <translation id="3022978424994383087">Nem értettem.</translation>
@@ -1460,6 +1471,7 @@
 <translation id="3170072451822350649">Ki is hagyhatja a bejelentkezést, és <ph name="LINK_START" />böngészhet vendégként<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Az egyik webhely jelenleg használja a videobemenetet</translation>
 <translation id="3177909033752230686">Az oldal nyelve</translation>
+<translation id="3179982752812949580">Szöveg betűtípusa</translation>
 <translation id="3181954750937456830">Biztonságos Böngészés (megvédi Önt és eszközét a veszélyes webhelyekkel szemben)</translation>
 <translation id="3182749001423093222">Helyesírás-ellenőrzés</translation>
 <translation id="3183139917765991655">Profilimportáló</translation>
@@ -1512,7 +1524,6 @@
 <translation id="3275778913554317645">Megnyitás ablakként</translation>
 <translation id="3278001907972365362">Google-fiókjaival kapcsolatban teendői akadtak</translation>
 <translation id="3279230909244266691">Ez a folyamat néhány percet is igénybe vehet. A virtuális gép indítása folyamatban van.</translation>
-<translation id="3279741024917655738">Teljes képernyős videók megjelenítése a következőn</translation>
 <translation id="3280237271814976245">Mentés &amp;másként...</translation>
 <translation id="3280243678470289153">A Chrome használatának folytatása</translation>
 <translation id="3281892622610078515">Karanténba helyezendő fájlok és programok:</translation>
@@ -1534,7 +1545,7 @@
 <translation id="3303855915957856445">Nincs találat</translation>
 <translation id="3305389145870741612">A formázási folyamat eltarthat néhány másodpercig. Kérjük, várjon.</translation>
 <translation id="3305661444342691068">PDF megnyitása előnézetben</translation>
-<translation id="3306684685104080068">Átküldés engedélyezése felhőalapú szolgáltatásokba, például a Google Hangouts szolgáltatásba.</translation>
+<translation id="3307871847038842490">Ez az oldal menthet eredeti fájlokba.</translation>
 <translation id="3308006649705061278">Szervezeti egység (OU)</translation>
 <translation id="3308116878371095290">Ezen az oldalon le van tiltva a cookie-k mentése.</translation>
 <translation id="3308134619352333507">Elrejtés gomb</translation>
@@ -1640,7 +1651,6 @@
 <translation id="3462413494201477527">Kilép a fiókbeállításból?</translation>
 <translation id="3464012987031883895">Az egyik webhely jelenleg használja a hangbemenetet</translation>
 <translation id="346431825526753">Ez a fiók gyerekeknek készült; <ph name="CUSTODIAN_EMAIL" /> felügyelete mellett.</translation>
-<translation id="3468275649641751422">Videó- vagy audiofájl streamelése</translation>
 <translation id="3468999815377931311">Androidos telefon</translation>
 <translation id="3470442499439619530">Felhasználó eltávolítása</translation>
 <translation id="3473479545200714844">Képernyőnagyító</translation>
@@ -1663,6 +1673,7 @@
 <translation id="3496213124478423963">Kicsinyítés</translation>
 <translation id="3497560059572256875">Ünnepi embléma megosztása</translation>
 <translation id="3505030558724226696">Eszközhozzáférés visszavonása</translation>
+<translation id="3505635633742443645">A dokk HDMI-portja nem használható olyankor, amikor a C típusú USB-port videokimenetként üzemel. Használjon másik portot az egyik képernyőhöz.</translation>
 <translation id="3507421388498836150">Aktuális engedélyek a következőhöz: „<ph name="EXTENSION_NAME" />”</translation>
 <translation id="3507888235492474624">Bluetooth-eszközök újrakeresése</translation>
 <translation id="3508920295779105875">Válasszon másik mappát...</translation>
@@ -1715,6 +1726,7 @@
 <translation id="3576324189521867626">Sikeresen telepítve</translation>
 <translation id="3578594933904494462">A lap tartalma meg lesz osztva.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; szeretné megosztani a(z) &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; nyomtatót az Ön &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt; nevű csoportjával. Ha elfogadja, a csoport minden tagja tud majd nyomtatni a nyomtatóval.</translation>
+<translation id="357889014807611375">mért adatforgalmú Wi-Fi</translation>
 <translation id="3584169441612580296">Fotók, zeneszámok és egyéb médiatartalmak olvasása és módosítása a számítógépről</translation>
 <translation id="3587482841069643663">Mind</translation>
 <translation id="358796204584394954">Írja be ezt a kódot a(z) „<ph name="DEVICE_NAME" />” eszközön a párosításhoz:</translation>
@@ -1725,6 +1737,7 @@
 <translation id="359283478042092570">Bejelentkezés</translation>
 <translation id="3593965109698325041">Tanúsítvány nevének megkötései</translation>
 <translation id="3596235046596950091">Felhőszolgáltatások engedélyezése</translation>
+<translation id="3599221874935822507">Megemelt</translation>
 <translation id="3599863153486145794">Törli az előzményeket valamennyi bejelentkezett eszközről. Előfordulhat, hogy a böngészési előzmények más formái még megtalálhatók Google-fiókjában a <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> webhelyen.</translation>
 <translation id="3600051066689725006">Internetes kérés adatai</translation>
 <translation id="3600792891314830896">Elnémítja a hangot lejátszó webhelyeket</translation>
@@ -1739,6 +1752,7 @@
 <translation id="3612673635130633812">Letöltötte: &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> megjelenítése</translation>
 <translation id="3613422051106148727">&amp;Megnyitás új lapon</translation>
+<translation id="3615073365085224194">Érintse ujját az ujjlenyomat-érzékelőhöz</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Böngészés adatainak törlése...</translation>
 <translation id="3617891479562106823">A hátterek nem állnak rendelkezésre. Próbálja újra később.</translation>
@@ -1820,7 +1834,6 @@
 <translation id="3719826155360621982">Kezdőoldal</translation>
 <translation id="3720996970802414353">Váltás mindenképp</translation>
 <translation id="3722108462506185496">Nem sikerült elindítani a virtuális gép szolgáltatást. Próbálja újra később.</translation>
-<translation id="3723158278575423087">Üdvözli a Google Cast-élmény a Chromiumon!</translation>
 <translation id="3725367690636977613">oldal</translation>
 <translation id="3726137731714254362">Ha eltávolít innen mappákat, csak a megosztásukat állítja le, de maguk a fájlok nem törlődnek.</translation>
 <translation id="3727148787322499904">A beállítás módosítása az összes megosztott hálózatot érinti</translation>
@@ -1855,7 +1868,6 @@
 <translation id="3764314093345384080">Részletes buildinformáció</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Kommunikáció egy USB-eszközzel}other{Kommunikáció # USB-eszközzel}}</translation>
 <translation id="3765246971671567135">Nem sikerült a demó mód offline házirendjének olvasása.</translation>
-<translation id="3766223500670287046">Távoli képernyő</translation>
 <translation id="3768037234834996183">Beállítások szinkronizálása…</translation>
 <translation id="377050016711188788">Jégkrém</translation>
 <translation id="3771294271822695279">Videofájlok</translation>
@@ -1928,7 +1940,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Emelje fel, majd érintse újra</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: a szinkronizálás szünetel</translation>
-<translation id="3862134173397075045">Üdvözli a Google Cast-élmény a Chrome-ban!</translation>
 <translation id="3862693525629180217">Igazolás beépített érzékelő révén</translation>
 <translation id="3862788408946266506">A „kiosk_only” jegyzékattribútummal rendelkező alkalmazást kioszk módban kell telepíteni a Chrome OS rendszeren</translation>
 <translation id="3865414814144988605">Felbontás</translation>
@@ -1977,6 +1988,7 @@
 <translation id="3926002189479431949">A Smart Lockhoz használt telefon megváltozott</translation>
 <translation id="3927932062596804919">Megtagadás</translation>
 <translation id="3930737994424905957">Eszközök keresése…</translation>
+<translation id="3930968231047618417">Háttérszín</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> törölt jelszavának visszaállítása</translation>
 <translation id="3936390757709632190">&amp;Hang megnyitása új lapon</translation>
 <translation id="3936925983113350642">A most választott jelszó ahhoz szükséges, hogy ezt a tanúsítványt később visszaállíthassa. Tárolja biztonságos helyen.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Az IE alkalmazásból importálva</translation>
 <translation id="3950820424414687140">Bejelentkezés</translation>
+<translation id="3950828138786918475">Ez a lap olvashatja az eszközén lévő adott mappát.</translation>
 <translation id="3954354850384043518">Folyamatban</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> × <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">Nincsenek mostanában rögzített WebRTC-eseménynaplói.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Számítás…</translation>
 <translation id="3975565978598857337">Nem sikerült kapcsolódni a tartomány szerveréhez</translation>
 <translation id="397703832102027365">Véglegesítés...</translation>
+<translation id="3977886311744775419">A rendszer nem tölt le automatikus frissítéseket ilyen hálózattípusnál, de manuálisan kereshet frissítéseket.</translation>
 <translation id="3979395879372752341">Új bővítmény hozzáadva (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> engedélyezése</translation>
 <translation id="3981760180856053153">A megadott mentéstípus érvénytelen.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">A kattintás érintéssel engedélyezése</translation>
 <translation id="4195643157523330669">Megnyitás új lapon</translation>
 <translation id="4195814663415092787">Folytatás ott, ahol abbahagyta</translation>
+<translation id="4197940474316761015">A(z) <ph name="ORIGIN" /> közvetlenül mentheti a következő fájlok módosításait. Ez a webhely csak akkor mentheti a módosításokat, amikor meg van nyitva ez a lap.</translation>
 <translation id="4198146608511578238">Ha Google Segédjével szeretne beszélni, tartsa egyszerűen lenyomva az Indító ikont.</translation>
 <translation id="4200689466366162458">Egyéni szavak</translation>
 <translation id="4200983522494130825">Új &amp;lap</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Automatikus kapcsolódás mobilhálózathoz</translation>
 <translation id="4268025649754414643">Kulcstitkosítás</translation>
 <translation id="4270393598798225102">Verzió <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Nincs találat</translation>
 <translation id="4275663329226226506">Média</translation>
 <translation id="4275830172053184480">Indítsa újra az eszközt</translation>
 <translation id="4278101229438943600">Segédje készen áll</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Processzoridő</translation>
 <translation id="4534661889221639075">Próbálja újra.</translation>
 <translation id="4535127706710932914">Alapértelmezett profil</translation>
+<translation id="4535767533210902251">Az ujjlenyomat-érzékelő a billentyűzet jobb felső sarkában található gomb. Érintse meg finoman valamelyik ujjával.</translation>
 <translation id="4538684596480161368">Mindig tiltsa le a nem sandboxban lévő beépülő modulokat a következő webhelyen: <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Vállalati házirend által telepítve.</translation>
 <translation id="4542520061254486227">Adatok beolvasása a következő webhelyeken: <ph name="WEBSITE_1" /> és <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Továbbiak...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Bluetooth-eszköz párosítása</translation>
+<translation id="4578012756826807359">Sikerült a bejelentkezési adatok törlése.</translation>
 <translation id="4579581181964204535">Nem lehet átküldeni a következőt: <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Hiba történt a Linux visszaállítása során</translation>
 <translation id="4582563038311694664">Összes beállítás visszaállítása</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Több webhely cookie-jai törlődnek kilépéskor.</translation>
 <translation id="4765582662863429759">Lehetővé teszi az Android Messages számára, hogy SMS-eket küldjön át a telefonról a Chromebookra</translation>
 <translation id="4768332406694066911">Ezektől a szervezetektől olyan tanúsítványai vannak, amelyek azonosítják</translation>
-<translation id="4772404146526168240">Mindkét képernyőn</translation>
 <translation id="4776146737004271126">Android-beállítások megnyitása</translation>
 <translation id="4776917500594043016">A(z) <ph name="USER_EMAIL_ADDRESS" /> fiókhoz tartozó jelszó</translation>
 <translation id="4777825441726637019">Play Áruház</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Ha bejelentkezik, könyvjelzőit, előzményeit és egyéb beállításait bármilyen eszközről elérheti. Ráadásul automatikusan bejelentkezik a Google-szolgáltatásokba is.</translation>
 <translation id="4929386379796360314">Nyomtatási helyek</translation>
 <translation id="4930714375720679147">Bekapcsolás</translation>
-<translation id="4931132176527519925">Tükrözés folyamatos alkalmazása</translation>
 <translation id="4932733599132424254">Dátum</translation>
 <translation id="4933484234309072027">be van ágyazva itt: <ph name="URL" /></translation>
 <translation id="493571969993549666">Felügyelt felhasználó hozzáadása</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Némítás feloldása</translation>
 <translation id="4992458225095111526">Powerwash megerősítése</translation>
 <translation id="4992473555164495036">A rendszergazda korlátozta a rendelkezésre álló beviteli módokat.</translation>
+<translation id="4992866843815555470">A dokk javításra szorul. Működő ventilátor nélkül a dokk leáll.</translation>
 <translation id="4992926179187649719">„Ok Google” bekapcsolása</translation>
 <translation id="4994474651455208930">A webhelyek kérhetik, hogy protokollok alapértelmezett kezelői legyenek</translation>
 <translation id="4994754230098574403">Beállítás</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">Folyamat azonosítója</translation>
 <translation id="5233638681132016545">Új lap</translation>
 <translation id="5233736638227740678">&amp;Beillesztés</translation>
-<translation id="5234764350956374838">Elvetés</translation>
 <translation id="5235050375939235066">Eltávolítja az alkalmazást?</translation>
 <translation id="5235750401727657667">Új lap megnyitásakor látható oldal cseréje</translation>
 <translation id="5238278114306905396">A(z) „<ph name="EXTENSION_NAME" />” alkalmazás automatikusan törölve.</translation>
@@ -2850,6 +2864,7 @@
 <translation id="5319359161174645648">A Google a Chrome-ot ajánlja</translation>
 <translation id="532247166573571973">Lehet, hogy nem áll rendelkezésre a szerver. Próbálja újra később.</translation>
 <translation id="5324780743567488672">Időzóna automatikus beállítása a tartózkodási hely alapján</translation>
+<translation id="5327129740973624286">A következő menthet az eredeti fájlokba:<ph name="WINDOW_TITLE" /></translation>
 <translation id="5327248766486351172">Név</translation>
 <translation id="5327570636534774768">Megjelölése szerint ezt az eszközt egy másik domain kezeli. A demó mód beállítása előtt válassza le erről a domainről.</translation>
 <translation id="532943162177641444">Koppintson a(z) <ph name="PHONE_NAME" /> eszközére érkező értesítésre az eszköz által használható mobil hotspot beállításához.</translation>
@@ -2992,7 +3007,6 @@
 <translation id="5533001281916885985">A(z) <ph name="SITE_NAME" /> a következőket szeretné tenni:</translation>
 <translation id="5534304873398226603">Kép vagy videó elvetése</translation>
 <translation id="5535941515421698170">Továbbá a meglévő adatok eltávolítása az eszközről</translation>
-<translation id="5537725057119320332">Küldés</translation>
 <translation id="5539221284352502426">A szerver elutasította a megadott jelszót. Lehetséges okok: Túl rövid a jelszó. A jelszónak tartalmaznia kell számokat és szimbólumokat. A jelszó nem egyezhet meg korábbi jelszavakkal.</translation>
 <translation id="5541687815721799001">Alkalmazás használata</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3302,7 +3316,6 @@
 <translation id="5997337190805127100">További információ a webhelyekhez való hozzáférésről</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> találat a következőre: <ph name="SEARCH_TEXT" /></translation>
 <translation id="6002458620803359783">Előnyben részesített hangok</translation>
-<translation id="6005695835120147974">Adathordozó router</translation>
 <translation id="6006484371116297560">Klasszikus</translation>
 <translation id="6007240208646052708">A hangalapú keresés nem áll rendelkezésre az Ön nyelvén.</translation>
 <translation id="6009781704028455063">Beépített érzékelő</translation>
@@ -3502,7 +3515,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Új nyomtató a hálózaton}other{Új nyomtatók a hálózaton}}</translation>
 <translation id="6286708577777130801">Mentett jelszavak adatai</translation>
 <translation id="6289452883081499048">Személyre szabott Google-szolgáltatások, például a Play</translation>
-<translation id="6290556621549272952">E funkcióval a Chromiumban megjelenő tartalmakat jeleníthet meg tévén vagy más készüléken.</translation>
 <translation id="6291949900244949761">Kérdezzen rá, ha valamelyik webhely hozzá szeretne férni az USB-eszközökhöz (ajánlott)</translation>
 <translation id="6291953229176937411">Me&amp;gjelenítés a Finderben</translation>
 <translation id="6295158916970320988">Az összes webhely</translation>
@@ -3566,6 +3578,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />Rendszer-információk<ph name="END_LINK1" /> és <ph name="BEGIN_LINK2" />mutatószámok<ph name="END_LINK2" /> küldése</translation>
 <translation id="6396988158856674517">A mozgásérzékelők használatának letiltása a webhelyek számára</translation>
 <translation id="6397094776139756010">Szinkronizálási és személyre szabási beállítások</translation>
+<translation id="6397449385184089588">A(z) <ph name="ORIGIN" /> közvetlenül mentheti majd a fájlok módosításait a következő mappában. Ez a webhely csak akkor mentheti a módosításokat, amikor meg van nyitva ez a lap.</translation>
 <translation id="6398715114293939307">A Google Play Áruház eltávolítása</translation>
 <translation id="6398765197997659313">Kilépés a teljes képernyős módból</translation>
 <translation id="6399774419735315745">Kém</translation>
@@ -3610,11 +3623,13 @@
 <translation id="6455264371803474013">Megadott webhelyeken</translation>
 <translation id="6455894534188563617">Új &amp;mappa</translation>
 <translation id="6456394469623773452">Jó</translation>
+<translation id="6456955391422100996">Hirdetés eltávolítva.</translation>
 <translation id="645705751491738698">A JavaScript letiltásának fenntartása</translation>
 <translation id="6458701200018867744">A feltöltés sikertelen (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Keresés a kijelölésben</translation>
 <translation id="6459799433792303855">Aktív ablak áthelyezve másik kijelzőre.</translation>
 <translation id="6460601847208524483">Következő keresése</translation>
+<translation id="6461170143930046705">Hálózatok keresése…</translation>
 <translation id="6463795194797719782">&amp;Szerkesztés</translation>
 <translation id="6466988389784393586">&amp;Az összes könyvjelző megnyitása</translation>
 <translation id="6467304607960172345">A teljes képernyős videók optimalizálása</translation>
@@ -3653,6 +3668,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">A következő típusú hálózatra csatlakozik: <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Megosztás</translation>
 <translation id="6528513914570774834">Engedélyezi a hálózat használatát az eszköz többi felhasználója számára</translation>
 <translation id="652948702951888897">Chrome-előzmények</translation>
@@ -3749,7 +3765,6 @@
 <translation id="6680650203439190394">Értékelés</translation>
 <translation id="6681668084120808868">Fényképkészítés</translation>
 <translation id="6681964764822470072">A(z) „<ph name="APP_NAME" />” el lesz távolítva.</translation>
-<translation id="6685083257944113180">Leállítás, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">A Google Play megnyitása</translation>
 <translation id="6686490380836145850">Jobbra lévő lapok bezárása</translation>
 <translation id="6686817083349815241">Jelszó mentése</translation>
@@ -3857,6 +3872,7 @@
 <translation id="6845038076637626672">Megnyitás teljes méretben</translation>
 <translation id="6845325883481699275">Segítség a Chrome biztonságának továbberősítésében</translation>
 <translation id="6848388270925200958">Jelenleg van néhány olyan kártyája, amely csak ezen az eszközön használható</translation>
+<translation id="6850286078059909152">Szöveg színe</translation>
 <translation id="6851497530878285708">Alkalmazás engedélyezve</translation>
 <translation id="6853388645642883916">A frissítő alvó módba került</translation>
 <translation id="68541483639528434">A többi lap bezárása</translation>
@@ -3906,7 +3922,6 @@
 <translation id="6923132443355966645">Görgetés / Kattintás</translation>
 <translation id="6923633482430812883">Hiba történt a megosztás csatolásakor. Ellenőrizze, hogy a fájlszerver, amelyhez kapcsolódni szeretne, támogatja-e az SMBv2 vagy újabb protokollt.</translation>
 <translation id="6930036377490597025">Külső biztonsági hardverkulcs vagy beépített érzékelő</translation>
-<translation id="6930242544192836755">Időtartam</translation>
 <translation id="693807610556624488">Az írási művelet meghaladja a következő attribútumának maximális hosszát: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="6941937518557314510">Tanúsítvánnyal történő azonosításhoz jelentkezzen be a(z) <ph name="TOKEN_NAME" /> szolgáltatásba a <ph name="HOST_NAME" /> webhelyen.</translation>
 <translation id="6943176775188458830">A nyomtatás megszakítása</translation>
@@ -3920,6 +3935,7 @@
 <translation id="6951153907720526401">Fizetéskezelők</translation>
 <translation id="6951663584153258142">Szervezete arra kéri, hogy frissítse ezt az eszközt</translation>
 <translation id="6953878494808481632">Kapcsolódó információk</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fájl: <ph name="FILES" />}other{Fájlok: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Pop-up vizsgálata</translation>
 <translation id="6957044667612803194">Ez a biztonsági hardverkulcs nem támogatja a PIN-kódok használatát</translation>
 <translation id="6957231940976260713">Szolgáltatás neve</translation>
@@ -4132,7 +4148,6 @@
 <translation id="7254554697254365959">Nem sikerült lefordítani az oldalt.</translation>
 <translation id="7254951428499890870">Biztosan diagnosztikai módban indítja el a(z) „<ph name="APP_NAME" />” alkalmazást?</translation>
 <translation id="7255002516883565667">Jelenleg egy olyan kártyája van, amelyet csak ezen az eszközön használhat</translation>
-<translation id="7255220508626648026">Átküldés: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">A visszaállítás megerősítéséhez érintse meg újra a biztonsági hardverkulcsot. Ezzel törli a biztonsági hardverkulcson tárolt összes adatot, köztük a PIN-kódot is.</translation>
 <translation id="7255935316994522020">Alkalmaz</translation>
 <translation id="7256069762010468647">A webhely használja a kameráját</translation>
@@ -4266,6 +4281,7 @@
 <translation id="7456142309650173560">fejlesztői</translation>
 <translation id="7456847797759667638">Hely megnyitása...</translation>
 <translation id="7458168200501453431">A Google Keresés által használttal megegyező helyesírás-ellenőrzést használ. A begépelt szöveget a böngésző elküldi a Google-nak.</translation>
+<translation id="7460045493116006516">Jelenleg telepített téma</translation>
 <translation id="7461924472993315131">Rögzítés</translation>
 <translation id="746216226901520237">Legközelebb a telefonjával oldhatja fel <ph name="DEVICE_TYPE" /> eszköze lezárását. A Smart Lock funkciót a Beállításokban kapcsolhatja ki.</translation>
 <translation id="7463006580194749499">Személy hozzáadása</translation>
@@ -4325,6 +4341,7 @@
 <translation id="7554791636758816595">Új lap</translation>
 <translation id="7556033326131260574">A Smart Lock nem tudta ellenőrizni a fiókját. A belépéshez írja be jelszavát.</translation>
 <translation id="7556242789364317684">Sajnos a(z) <ph name="SHORT_PRODUCT_NAME" /> nem tudja visszaállítani a beállításokat. A hiba kijavításához a(z) <ph name="SHORT_PRODUCT_NAME" /> alkalmazásnak a Powerwash eljárást kell alkalmaznia.</translation>
+<translation id="7559444627302317199">Ellenőrizze a hálózati kapcsolatot, és próbálkozzon újra.</translation>
 <translation id="7559719679815339381">Kérjük, várjon… A kioszkalkalmazás frissítése folyamatban van. Ne távolítsa el az USB-meghajtót.</translation>
 <translation id="7561196759112975576">Mindig</translation>
 <translation id="7563991800558061108">A hiba kijavításához be kell jelentkeznie Google-fiókjába a bejelentkezési képernyőn.
@@ -4567,7 +4584,6 @@
 <translation id="7887334752153342268">Másodpéldány</translation>
 <translation id="7887864092952184874">Bluetooth-egér párosítva</translation>
 <translation id="7889565820482017512">Megjelenített méret</translation>
-<translation id="7889966925761734854">Ugrás</translation>
 <translation id="7893008570150657497">Fényképek, zene és egyéb multimédiás anyagok elérése a számítógépről</translation>
 <translation id="7893153962594818789">A Bluetooth ki van kapcsolva ezen a(z) <ph name="DEVICE_TYPE" /> eszközön. Adja meg jelszavát, és kapcsolja be a Bluetooth-t.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Alapértelmezett)</translation>
@@ -4575,7 +4591,6 @@
 <translation id="7898627924844766532">Gomb megtartása az eszköztáron</translation>
 <translation id="7898725031477653577">Mindig legyen lefordítva</translation>
 <translation id="790040513076446191">Adatvédelemmel kapcsolatos beállítások módosítása</translation>
-<translation id="7902874111237641165">Sima mozgás [béta]</translation>
 <translation id="7903345046358933331">Az oldal nem válaszol. Megvárhatja, hogy reagáljon, vagy bezárhatja.</translation>
 <translation id="7903742244674067440">Vannak olyan tanúsítványok, amelyek azonosítják ezeket a tanúsítványkibocsátókat</translation>
 <translation id="7903925330883316394">Segédprogram: <ph name="UTILITY_TYPE" /></translation>
@@ -4687,6 +4702,7 @@
 <translation id="8037117027592400564">Az összes szöveg felolvasása szintetizált beszéddel kimondva</translation>
 <translation id="8037357227543935929">Kérdezzen rá (alapértelmezés szerint)</translation>
 <translation id="803771048473350947">Fájl</translation>
+<translation id="8042142357103597104">Szöveg átlátszatlansága</translation>
 <translation id="8044899503464538266">Lassú</translation>
 <translation id="8045253504249021590">A szinkronizálást a Google Irányítópulton keresztül leállították.</translation>
 <translation id="8045923671629973368">Adja meg az alkalmazás azonosítóját vagy internetes áruházi URL-jét</translation>
@@ -4723,7 +4739,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Ezt a szolgáltatást a Beállítások között kapcsolhatja ki.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">A megadott PIN-kódok nem egyeznek</translation>
 <translation id="809792523045608178">A <ph name="IDS_SHORT_PRODUCT_NAME" /> az egyik bővítményből származó proxybeállításokat használja</translation>
-<translation id="8099495042588009598">További engedélyek</translation>
 <translation id="8101987792947961127">Powerwash szükséges a következő újraindításkor</translation>
 <translation id="8102159139658438129">A <ph name="LINK_BEGIN" />Beállítások<ph name="LINK_END" /> között megtalálja a csatlakoztatott telefonra vonatkozó lehetőségeket.</translation>
 <translation id="8104696615244072556">Hajtson végre Powerwash műveletet <ph name="IDS_SHORT_PRODUCT_NAME" /> eszközén, és térjen vissza a korábbi verzióhoz.</translation>
@@ -4775,8 +4790,10 @@
     Úgy gondolom, hogy ezt a webhelyet nem kellene letiltani!</translation>
 <translation id="8184288427634747179">Váltás a következő profilra: <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">További információ</translation>
+<translation id="8184472985242519288">Szabványos</translation>
 <translation id="8185331656081929126">Értesítést kérek, ha a rendszer új nyomtatót észlel a hálózaton</translation>
 <translation id="8186609076106987817">A szerver nem találta a fájlt.</translation>
+<translation id="8187950680397073878">A(z) <ph name="ORIGIN" /> a következő mappában található összes fájlt olvashatja. Ez a webhely csak akkor láthatja a mappa módosításait, amikor meg van nyitva ez a lap.</translation>
 <translation id="8188389033983459049">Ellenőrizze eszköze beállításait, és kapcsolja be a folytatáshoz</translation>
 <translation id="8190193592390505034">Csatlakozás a következő hálózathoz: <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Alkalmazások, bővítmények és témák kezelése</translation>
@@ -4880,7 +4897,6 @@
 <translation id="833986336429795709">Válassza ki, hogy melyik alkalmazással szeretné megnyitni ezt a linket</translation>
 <translation id="8342861492835240085">Válasszon gyűjteményt</translation>
 <translation id="834290227245955730">Érvénytelen PIN-kód. Próbálkozási lehetőségek száma: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">A legjobb videóélmény elérése érdekében használjon széles sávú kapcsolatot. Előfordulhat, hogy a lassú kapcsolattal rendelkező felhasználók nem látják az Ön tartalmát.</translation>
 <translation id="8351419472474436977">A bővítmény átvette az irányítást proxybeállításai felett, ami azt jelenti, hogy a bővítmény minden internetes tevékenységét módosíthatja, feltörheti vagy lehallgathatja. Ha nem biztos benne, hogy miért történt a változás, akkor valószínűleg nem is akarja azt.</translation>
 <translation id="8351630282875799764">Az akkumulátor nem töltődik</translation>
 <translation id="835238322900896202">Hiba történt az eltávolítás során. Kérjük, a terminálon keresztül hajtsa végre az eltávolítást.</translation>
@@ -4913,9 +4929,11 @@
 <translation id="839736845446313156">Regisztrálás</translation>
 <translation id="8398877366907290961">Továbblépés</translation>
 <translation id="8400146488506985033">Személyek kezelése</translation>
+<translation id="8400444932218572097">A(z) <ph name="ORIGIN" /> közvetlenül mentheti a fájlok módosításait a következő mappában. Ez a webhely csak akkor mentheti a módosításokat, amikor meg van nyitva ez a lap.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Kérdezzen rá (ajánlott)</translation>
 <translation id="8418445294933751433">&amp;Megjelenítés lapként</translation>
+<translation id="8418905021510211421">Ez az eszköz olvashatja az eszközén lévő adott mappát.</translation>
 <translation id="8419098111404128271">Keresési találatok a következőre: <ph name="SEARCH_TEXT" /></translation>
 <translation id="8419368276599091549">A(z) <ph name="DEVICE_TYPE" /> üdvözli!</translation>
 <translation id="8425213833346101688">Módosítás</translation>
@@ -4935,6 +4953,7 @@
 <translation id="8438566539970814960">Keresések és böngészés javítása</translation>
 <translation id="8439506636278576865">Kínálja fel az ezen a nyelven írt oldalak fordítását</translation>
 <translation id="8440630305826533614">Linux-alkalmazások</translation>
+<translation id="844241640324986723">Nem sikerült a bejelentkezési adatok törlése.</translation>
 <translation id="8443338615972234259">Most készítsen új fiókot a felügyelt felhasználó számára.</translation>
 <translation id="8446884382197647889">További információ</translation>
 <translation id="8447409163267621480">Használja a Ctrl vagy az Alt gombot</translation>
@@ -4950,8 +4969,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Ezt a felügyelt felhasználót valószínűleg törölte vagy letiltotta a kezelője. Forduljon a kezelőhöz, ha ezzel a felhasználónévvel szeretne bejelentkezni.</translation>
 <translation id="846374874681391779">Letöltéssáv</translation>
-<translation id="8463807869745732775">"&gt;
-    A biztonsági hardverkulcson tárolt bejelentkezési adatok</translation>
 <translation id="8463955938112983119">A(z) <ph name="PLUGIN_NAME" /> le van tiltva.</translation>
 <translation id="8464132254133862871">Ez a felhasználói fiók nem jogosult a szolgáltatásra.</translation>
 <translation id="8465252176946159372">Érvénytelen</translation>
@@ -5017,6 +5034,7 @@
 <translation id="8569002732135253578">Nyomtatás folyamatban: <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Nem található célhely</translation>
 <translation id="8571213806525832805">Az elmúlt négy hétből</translation>
+<translation id="8573403125070227391">Ez a hirdetés az eszköz túl sok erőforrását használja, ezért a Chrome eltávolította.</translation>
 <translation id="8574990355410201600">Hangok folyamatos engedélyezése a következőn: <ph name="HOST" /></translation>
 <translation id="8575286410928791436">A kilépéshez tartsa lenyomva a következő billentyűkombinációt: <ph name="KEY_EQUIVALENT" />.</translation>
 <translation id="8578639784464423491">A szó hossza nem haladhatja meg a 99 betűt</translation>
@@ -5040,13 +5058,13 @@
 <translation id="8609465669617005112">Mozgatás felfelé</translation>
 <translation id="8610103157987623234">Helytelen formátum, próbálkozzon újra</translation>
 <translation id="8615618338313291042">Inkognitómódú alkalmazás: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Árnyékvetés</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Barangolás állapota</translation>
 <translation id="8620765578342452535">Hálózati kapcsolatok beállítása</translation>
 <translation id="8621866727807194849">A számítógépen kártékony szoftver található. A Chrome eltávolítja a kártékony szoftvert, visszaállítja a beállításokat, és letiltja a bővítményeket. Így újra a megszokott módon működhet a böngésző.</translation>
 <translation id="8621979332865976405">Teljes képernyő megosztása</translation>
 <translation id="862542460444371744">Bővítménye&amp;k</translation>
-<translation id="8627151598708688654">Forrás kiválasztása</translation>
 <translation id="862727964348362408">Felfüggesztett</translation>
 <translation id="862750493060684461">CSS gyorsítótár</translation>
 <translation id="8627795981664801467">Csak biztonságos kapcsolaton keresztül</translation>
@@ -5100,6 +5118,7 @@
 <translation id="8688579245973331962">Nem látja a nevét?</translation>
 <translation id="8688591111840995413">Helytelen jelszó</translation>
 <translation id="8688672835843460752">Rendelkezésre áll</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;Hely megnyitása...</translation>
 <translation id="869884720829132584">Alkalmazások menü</translation>
 <translation id="869891660844655955">Lejárati dátum</translation>
@@ -5263,6 +5282,7 @@
 <translation id="891365694296252935">Használati és diagnosztikai adatok küldése. Ez az eszköz jelenleg automatikusan küld diagnosztikai, eszköz- és alkalmazáshasználati adatokat a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek, nem használjuk fel őket az Ön gyermekének azonosítására. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ezt a beállítást kötelezővé tette az eszköz tulajdonosa. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva a gyermekénél, akkor a rendszer ezeket az adatokat mentheti a gyermek Google-fiókjába. <ph name="BEGIN_LINK1" />További információ.<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Javaslatok betöltése</translation>
 <translation id="8916476537757519021">Inkognitó subframe: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780">A következő olvashatja az eszközén lévő mappákat: <ph name="WINDOW_TITLE" />.</translation>
 <translation id="8919275547519617350">Ha az összes eszközén szeretné elérni jelszavait, jelentkezzen be, és kapcsolja be a szinkronizálást.</translation>
 <translation id="8921366488406707015">Biztonsági hardverkulcs ellenőrzése…</translation>
 <translation id="8922013791253848639">Mindig engedélyezi a hirdetéseket ezen a webhelyen</translation>
@@ -5292,7 +5312,6 @@
 <translation id="8965037249707889821">Adja meg a régi jelszót</translation>
 <translation id="8966870118594285808">Lap újramegnyitása, ha véletlenül bezárja</translation>
 <translation id="8967866634928501045">A megjelenítéshez nyomja le az Alt+Shift+A billentyűparancsot</translation>
-<translation id="8970203673128054105">Átküldési módok listájának megtekintése</translation>
 <translation id="89720367119469899">Vezérlő</translation>
 <translation id="8972513834460200407">Kérdezze meg a hálózati rendszergazdától, hogy a tűzfal nem tiltja-e le a Google szervereiről érkező letöltéseket.</translation>
 <translation id="8973557916016709913">Nagyítási szint eltávolítása</translation>
@@ -5441,6 +5460,7 @@
 <translation id="9214520840402538427">Hoppá! A telepítés alatti attribútumok inicializálásakor időtúllépés történt. Kérjük, lépjen kapcsolatba az ügyfélszolgálattal.</translation>
 <translation id="9214695392875603905">Muffin</translation>
 <translation id="9215293857209265904">„<ph name="EXTENSION_NAME" />” hozzáadva</translation>
+<translation id="9216712190298404438">A(z) <ph name="ORIGIN" /> közvetlenül mentheti majd a következő fájl módosításait. Ez a webhely csak akkor mentheti a módosításokat, amikor meg van nyitva ez a lap.</translation>
 <translation id="9218430445555521422">Beállítás alapértelmezettként</translation>
 <translation id="9219103736887031265">Képek</translation>
 <translation id="9220525904950070496">Fiók eltávolítása</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 579b5cf121..78260401 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Error saat memulai mesin virtual. Harap coba lagi.</translation>
 <translation id="1089439967362294234">Ubah Sandi</translation>
 <translation id="1090126737595388931">Tidak Ada Apl Latar Belakang yang Sedang Berjalan</translation>
+<translation id="1090290614672149983">Simpan perubahan ke file asli?</translation>
 <translation id="1090918500949388876">Akses Asisten setiap kali Anda mengucapkan "Ok Google" saat layar aktif</translation>
 <translation id="1091767800771861448">Tekan ESCAPE untuk melewati (Khusus bentukan tidak resmi).</translation>
 <translation id="1093457606523402488">Jaringan yang Terlihat:</translation>
 <translation id="1094607894174825014">Operasi baca atau tulis diminta dengan offset yang tidak valid di: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Sebelum masuk, masuklah sebagai Tamu untuk mengaktifkan jaringan <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Tab ini diizinkan untuk menyimpan ke file asli.</translation>
 <translation id="1103523840287552314">Selalu terjemahkan <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Berhenti</translation>
 <translation id="1110155001042129815">Tunggu</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Kacamata Hitam</translation>
 <translation id="1151917987301063366">Selalu izinkan <ph name="HOST" /> mengakses sensor</translation>
 <translation id="1153356358378277386">Perangkat dihubungkan</translation>
-<translation id="1156488781945104845">Waktu saat ini</translation>
 <translation id="1161575384898972166">Masuklah ke <ph name="TOKEN_NAME" /> untuk mengeskpor sertifikat klien.</translation>
 <translation id="1163931534039071049">&amp;Lihat sumber bingkai</translation>
 <translation id="1164674268730883318">Nonaktifkan Smart Lock untuk <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Setelan Penyimpanan Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookie dan data situs lainnya</translation>
 <translation id="127668050356036882">Tutup semua jendela</translation>
-<translation id="1277908057200820621">Lihat daftar perangkat</translation>
 <translation id="1280820357415527819">Menelusuri jaringan seluler</translation>
 <translation id="1285320974508926690">Jangan pernah terjemahkan situs ini</translation>
 <translation id="1285484354230578868">Simpan data di akun Google Drive Anda</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Jaringan asal, tidak dalam jelajah</translation>
 <translation id="1316136264406804862">Menelusuri...</translation>
 <translation id="1316495628809031177">Sinkronisasi dijeda</translation>
+<translation id="1317637799698924700">Stasiun dok Anda akan berfungsi dalam mode yang kompatibel dengan USB Type-C.</translation>
 <translation id="1322046419516468189">Lihat dan kelola sandi tersimpan di <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Untuk mengakses tab Anda dari perangkat lainnya, login ke Chrome.</translation>
 <translation id="1327074568633507428">Printer di Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Browser Anda dikelola<ph name="END_LINK" /> oleh <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Menjalankan IDE, editor, dan fitur Linux di <ph name="DEVICE_TYPE" /> Anda. &lt;a target="_blank" href="<ph name="URL" />"&gt;Pelajari lebih lanjut&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Pilih file</translation>
+<translation id="1370749010280229230">Tampilan yang terhubung ke dok mengalami masalah</translation>
 <translation id="1371301976177520732">Bookmark, sandi, histori, dan lainnya di semua perangkat Anda</translation>
 <translation id="1372841398847029212">Sinkronkan ke akun Anda</translation>
 <translation id="1374844444528092021">Sertifikat yang dibutuhkan oleh jaringan "<ph name="NETWORK_NAME" />" belum dipasang ataupun tidak lagi valid. Dapatkan sertifikat baru dan cobalah menyambung lagi.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Halaman web, File Tunggal</translation>
 <translation id="1451917004835509682">Tambahkan Pengguna yang Dilindungi</translation>
 <translation id="1454223536435069390">Ambil screenshot</translation>
+<translation id="1458243790901188746">{0,plural, =1{Folder: <ph name="DIRECTORIES" />}other{Folder: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Mesin telusur ditambahkan oleh ekstensi</translation>
 <translation id="146000042969587795">Bingkai ini diblokir karena berisi sejumlah konten tidak aman.</translation>
 <translation id="146219525117638703">Status ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Tampilkan opsi masukan</translation>
 <translation id="1651008383952180276">Anda harus memasukkan frasa sandi yang sama dua kali</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Tambahkan printer ke Google Cloud Print agar Anda dapat mencetak dari mana saja.}other{Tambahkan # printer ke Google Cloud Print agar Anda dapat mencetak dari mana saja.}}</translation>
+<translation id="1656528038316521561">Opasitas latar belakang</translation>
 <translation id="1657406563541664238">Bantu menjadikan <ph name="PRODUCT_NAME" /> lebih baik dengan mengirim statistik penggunaan dan laporan kerusakan secara otomatis ke Google</translation>
 <translation id="1658424621194652532">Halaman ini mengakses mikrofon anda.</translation>
 <translation id="1660204651932907780">Mengizinkan situs memutar suara (direkomendasikan)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> ingin melihat merek dan model Kunci Keamanan Anda</translation>
 <translation id="1679068421605151609">Developer Tools</translation>
 <translation id="1679806121152819234">VM Plugin</translation>
+<translation id="1679810534535368772">Yakin ingin keluar?</translation>
 <translation id="167983332380191032">Layanan pengelolaan mengirim error HTTP.</translation>
 <translation id="1680849702532889074">Terjadi error saat menginstal aplikasi Linux.</translation>
 <translation id="16815041330799488">Jangan izinkan situs melihat teks dan gambar yang disalin ke papan klip</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">ID Media yang Dilindungi</translation>
 <translation id="175196451752279553">Buka k&amp;embali tab yang tertutup</translation>
 <translation id="1753905327828125965">Sering Dibuka</translation>
+<translation id="1755601632425835748">Ukuran teks</translation>
 <translation id="1756681705074952506">Metode masukan</translation>
 <translation id="1757301747492736405">Uninstal tertunda</translation>
 <translation id="175772926354468439">Aktifkan tema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Lebih kecil</translation>
 <translation id="1919345977826869612">Iklan</translation>
 <translation id="1919814239594435008">Plugin yang tidak dimasukkan sandbox diizinkan</translation>
+<translation id="1920390473494685033">Kontak</translation>
 <translation id="1921050530041573580">Sambungkan ponsel dengan Message</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Dapatkan kecanggihan Google di <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -741,7 +748,7 @@
 <translation id="2120478168904746065">{NUM_TABS,plural, =1{Aktifkan Notifikasi Tab}other{Aktifkan Notifikasi Beberapa Tab}}</translation>
 <translation id="2121825465123208577">Ubah ukuran</translation>
 <translation id="2122305276694332719">Menghubungkan ke jaringan tersembunyi secara otomatis akan memungkinkan orang lain melihat perangkat Anda dan beberapa setelan jaringan, sehingga tindakan ini tidak direkomendasikan.</translation>
-<translation id="2124930039827422115">{1,plural, =1{Diberi nilai <ph name="AVERAGE_RATING" /> oleh satu pengguna.}other{Diberi nilai <ph name="AVERAGE_RATING" /> oleh # pengguna.}}</translation>
+<translation id="2124930039827422115">{1,plural, =1{Diberi rating <ph name="AVERAGE_RATING" /> oleh satu pengguna.}other{Diberi rating <ph name="AVERAGE_RATING" /> oleh # pengguna.}}</translation>
 <translation id="2126167708562367080">Sinkronisasi dinonaktifkan oleh administrator Anda.</translation>
 <translation id="2127372758936585790">Pengisi daya rendah</translation>
 <translation id="212862741129535676">Persentase Pemakaian Status Frekuensi</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Tab Penyamaran: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Plugin <ph name="PEPPER_PLUGIN_NAME" /> di <ph name="PEPPER_PLUGIN_DOMAIN" /> ingin mengakses komputer Anda</translation>
 <translation id="2178614541317717477">CA Mencurigakan</translation>
+<translation id="2179849162388791084">Gagal mengumpulkan data login dari kunci keamanan Anda.</translation>
 <translation id="218070003709087997">Gunakan angka untuk mengindikasikan jumlah salinan yang akan dicetak (1 sampai 999).</translation>
 <translation id="2184515124301515068">Izinkan Chrome memilih kapan situs dapat memutar suara (direkomendasikan)</translation>
 <translation id="2187895286714876935">Kesalahan Impor Sertifikat Server</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Semua cookie dan data situs</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 item disalin}other{# item disalin}}</translation>
 <translation id="2278562042389100163">Buka jendela browser</translation>
-<translation id="2279874276457403668">Hanya satu sesi yang dapat dibuat dalam waktu yang sama.</translation>
 <translation id="2280486287150724112">Batas kanan</translation>
 <translation id="2282146716419988068">Proses GPU</translation>
 <translation id="2282155092769082568">URL konfigurasi otomatis:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Catatan layar kunci disimpan otomatis ke <ph name="LOCK_SCREEN_APP_NAME" />. Catatan terbaru akan tetap berada di layar kunci.</translation>
 <translation id="2353297238722298836">Kamera dan mikrofon diizinkan</translation>
 <translation id="2356070529366658676">Tanya</translation>
-<translation id="2357949918965361754">Anda dapat menggunakan fitur ini untuk menampilkan konten dari Chrome di TV atau perangkat lainnya.</translation>
 <translation id="2359345697448000899">Kelola ekstensi Anda dengan mengeklik Ekstensi pada menu Alat.</translation>
 <translation id="2359808026110333948">Lanjutkan</translation>
 <translation id="236117173274098341">Optimalkan</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Organisasi Anda meminta agar perangkat ini segera diupdate</translation>
 <translation id="2439545803278355377">Masukkan PIN baru. Panjang PIN minimal harus empat karakter dan dapat berisi huruf, angka, dan karakter lainnya.</translation>
 <translation id="2440604414813129000">Lihat s&amp;umber</translation>
+<translation id="2442916515643169563">Bayangan teks</translation>
 <translation id="2444119669991608829">Halaman Tidak Dalam Bahasa <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Diperlukan direktori akar ekstensi.</translation>
 <translation id="2445484935443597917">Buat Profil Baru</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Tidak Setelah</translation>
 <translation id="2739191690716947896">Debug</translation>
 <translation id="2739240477418971307">Mengubah setelan aksesibilitas Anda</translation>
+<translation id="274029851662193272">Diturunkan</translation>
 <translation id="2740393541869613458">meninjau situs web yang telah dikunjungi oleh pengguna yang dilindungi, dan</translation>
 <translation id="2741912629735277980">Tampilkan UI di layar login</translation>
 <translation id="274290345632688601">Memulihkan file &amp; aplikasi Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Pintasan sudah ada</translation>
 <translation id="2807517655263062534">File yang Anda download muncul di sini</translation>
 <translation id="2809586584051668049">dan <ph name="NUMBER_ADDITIONAL_DISABLED" /> lainnya</translation>
+<translation id="2812049959647166806">Thunderbolt tidak didukung</translation>
 <translation id="2812944337881233323">Coba keluar dan masuk lagi</translation>
 <translation id="2812989263793994277">Jangan tampilkan gambar apa pun</translation>
 <translation id="281390819046738856">Permintaan tidak dapat ditandatangani.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Penyedia</translation>
 <translation id="2844169650293029770">Perangkat USB-C (port depan sebelah kiri)</translation>
 <translation id="2845382757467349449">Selalu Tampilkan Bilah Bookmark</translation>
-<translation id="2847759467426165163">Transmisikan ke</translation>
 <translation id="284805635805850872">Hapus software berbahaya?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Pembersihan gagal</translation>
@@ -1297,6 +1305,7 @@
     Pesan server: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Tambahkan Galeri Media menurut Direktori</translation>
 <translation id="2910318910161511225">Sambungkan ke jaringan dan coba lagi</translation>
+<translation id="2910518940971897750">Simpan ke file asli</translation>
 <translation id="2913331724188855103">Izinkan situs untuk menyimpan dan membaca data cookie (disarankan)</translation>
 <translation id="2915102088417824677">Lihat log aktivitas</translation>
 <translation id="2915873080513663243">Pemindaian otomatis</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Perangkat MIDI</translation>
 <translation id="3015639418649705390">Luncurkan ulang sekarang</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> tidak dapat dikonfigurasi secara otomatis. Harap tentukan detail printer lanjutan.</translation>
+<translation id="3016381065346027039">Tidak ada entri log</translation>
 <translation id="3016641847947582299">Komponen telah diperbarui</translation>
 <translation id="3016780570757425217">Mengetahui lokasi Anda</translation>
 <translation id="3017079585324758401">Latar belakang</translation>
 <translation id="3020183492814296499">Pintasan</translation>
 <translation id="3020990233660977256">Nomor Seri: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Kupu-kupu</translation>
+<translation id="3021408157810018664">Simpan perubahan ke file asli?</translation>
 <translation id="3021426244864538700">Mengakses data situs ini</translation>
 <translation id="3021678814754966447">&amp;Lihat Sumber Bingkai</translation>
 <translation id="3022978424994383087">Tidak mengerti.</translation>
@@ -1457,6 +1468,7 @@
 <translation id="3170072451822350649">Anda juga dapat melewati proses masuk dan <ph name="LINK_START" />menjelajah sebagai tamu<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Satu situs sedang mengakses masukan video</translation>
 <translation id="3177909033752230686">Bahasa Halaman:</translation>
+<translation id="3179982752812949580">Font teks</translation>
 <translation id="3181954750937456830">Safe Browsing (melindungi Anda dan perangkat dari situs berbahaya)</translation>
 <translation id="3182749001423093222">Periksa ejaan</translation>
 <translation id="3183139917765991655">Pengimpor Profil</translation>
@@ -1509,7 +1521,6 @@
 <translation id="3275778913554317645">Buka sebagai jendela</translation>
 <translation id="3278001907972365362">Ada yang perlu diperhatikan di Akun Google Anda</translation>
 <translation id="3279230909244266691">Proses ini dapat memerlukan waktu beberapa menit. Memulai mesin virtual.</translation>
-<translation id="3279741024917655738">Tampilkan video layar penuh diaktifkan</translation>
 <translation id="3280237271814976245">Simp&amp;an sebagai...</translation>
 <translation id="3280243678470289153">Tetap di Chrome</translation>
 <translation id="3281892622610078515">File dan program yang akan dikarantina:</translation>
@@ -1531,7 +1542,7 @@
 <translation id="3303855915957856445">Hasil penelusuran tidak ditemukan</translation>
 <translation id="3305389145870741612">Proses pemformatan dapat memakan waktu beberapa detik. Harap tunggu.</translation>
 <translation id="3305661444342691068">Membuka PDF dalam Pratinjau</translation>
-<translation id="3306684685104080068">Aktifkan transmisi ke layanan berbasis cloud, seperti Google Hangouts.</translation>
+<translation id="3307871847038842490">Halaman ini diizinkan untuk menyimpan ke file asli.</translation>
 <translation id="3308006649705061278">Unit Organisasi (OU)</translation>
 <translation id="3308116878371095290">Halaman ini dicegah menyetel cookie.</translation>
 <translation id="3308134619352333507">Sembunyikan Tombol</translation>
@@ -1561,7 +1572,7 @@
 <translation id="3348038390189153836">Perangkat yang dapat dicopot terdeteksi</translation>
 <translation id="3349933790966648062">Jejak Memori</translation>
 <translation id="3350117557200012647">Masuk mode penyambungan</translation>
-<translation id="3350263973613584174">Kunci keamanan ini tidak menyimpan data login apa pun.</translation>
+<translation id="3350263973613584174">Kunci keamanan ini tidak memiliki data login apa pun yang tersimpan.</translation>
 <translation id="3355936511340229503">Kesalahan sambungan</translation>
 <translation id="3356580349448036450">Selesai</translation>
 <translation id="3359256513598016054">Kendala Kebijakan Sertifikat</translation>
@@ -1637,7 +1648,6 @@
 <translation id="3462413494201477527">Batalkan penyiapan akun?</translation>
 <translation id="3464012987031883895">Satu situs sedang mengakses masukan audio</translation>
 <translation id="346431825526753">Ini adalah akun untuk anak yang dikelola oleh <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Streaming file video atau audio</translation>
 <translation id="3468999815377931311">Ponsel Android</translation>
 <translation id="3470442499439619530">Hapus Pengguna Ini</translation>
 <translation id="3473479545200714844">Kaca pembesar layar</translation>
@@ -1660,6 +1670,7 @@
 <translation id="3496213124478423963">Perkecil</translation>
 <translation id="3497560059572256875">Bagikan Doodle</translation>
 <translation id="3505030558724226696">Mencabut akses perangkat</translation>
+<translation id="3505635633742443645">Port HDMI dock Anda tidak dapat digunakan saat port USB Type-C digunakan untuk keluaran video. Harap gunakan port lain untuk salah satu tampilan.</translation>
 <translation id="3507421388498836150">Izin Saat Ini untuk "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Memindai ulang perangkat Bluetooth</translation>
 <translation id="3508920295779105875">Pilih Folder Lain...</translation>
@@ -1712,6 +1723,7 @@
 <translation id="3576324189521867626">Berhasil dipasang</translation>
 <translation id="3578594933904494462">Konten tab ini sedang dibagikan.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; ingin membagikan printer &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; dengan grup yang Anda miliki: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Jika Anda menerima, semua anggota grup akan dapat mencetak pada printer tersebut.</translation>
+<translation id="357889014807611375">Wi-Fi terukur</translation>
 <translation id="3584169441612580296">Membaca dan mengubah foto, musik, serta media lain dari komputer Anda</translation>
 <translation id="3587482841069643663">Semua</translation>
 <translation id="358796204584394954">Ketik kode ini di "<ph name="DEVICE_NAME" />" untuk menyandingkan:</translation>
@@ -1722,6 +1734,7 @@
 <translation id="359283478042092570">Masuk</translation>
 <translation id="3593965109698325041">Kendala Nama Sertifikat</translation>
 <translation id="3596235046596950091">Aktifkan layanan awan</translation>
+<translation id="3599221874935822507">Dinaikkan</translation>
 <translation id="3599863153486145794">Menghapus histori dari semua perangkat yang dibuat login. Akun Google Anda mungkin memiliki bentuk histori penjelajahan lainnya di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Info permintaan web</translation>
 <translation id="3600792891314830896">Matikan suara situs yang memutar suara</translation>
@@ -1736,6 +1749,7 @@
 <translation id="3612673635130633812">Didownload oleh &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Tampilkan <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Buka di tab baru</translation>
+<translation id="3615073365085224194">Sentuh sensor sidik jari dengan jari Anda</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Hapus Data browsing...</translation>
 <translation id="3617891479562106823">Background tidak tersedia. Coba lagi nanti.</translation>
@@ -1817,7 +1831,6 @@
 <translation id="3719826155360621982">Beranda</translation>
 <translation id="3720996970802414353">Tetap beralih</translation>
 <translation id="3722108462506185496">Error saat memulai layanan mesin virtual. Harap coba lagi nanti.</translation>
-<translation id="3723158278575423087">Sambutlah kemudahan mentransmisi Chromium!</translation>
 <translation id="3725367690636977613">halaman</translation>
 <translation id="3726137731714254362">Menghapus folder dari sini akan menghentikan berbagi tetapi tidak akan menghapus file.</translation>
 <translation id="3727148787322499904">Perubahan pada setelan ini akan berpengaruh pada semua jaringan bersama</translation>
@@ -1852,7 +1865,6 @@
 <translation id="3764314093345384080">Detail informasi build</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Berkomunikasi dengan satu perangkat USB}other{Berkomunikasi dengan # perangkat USB}}</translation>
 <translation id="3765246971671567135">Tidak dapat membaca kebijakan mode demo offline.</translation>
-<translation id="3766223500670287046">Layar jarak jauh</translation>
 <translation id="3768037234834996183">Menyinkronkan preferensi Anda...</translation>
 <translation id="377050016711188788">Es krim</translation>
 <translation id="3771294271822695279">File Video</translation>
@@ -1925,7 +1937,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Angkat, kemudian sentuh lagi</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Sinkronisasi dijeda</translation>
-<translation id="3862134173397075045">Sambutlah pengalaman Cast di Chrome!</translation>
 <translation id="3862693525629180217">Verifikasi melalui sensor bawaan</translation>
 <translation id="3862788408946266506">Aplikasi dengan atribut manifes 'kiosk_only' harus diinstal dalam mode kios Chrome OS</translation>
 <translation id="3865414814144988605">Resolusi</translation>
@@ -1974,6 +1985,7 @@
 <translation id="3926002189479431949">Ponsel Smart Lock diubah</translation>
 <translation id="3927932062596804919">Tolak</translation>
 <translation id="3930737994424905957">Mencari perangkat</translation>
+<translation id="3930968231047618417">Warna latar belakang</translation>
 <translation id="3933283459331715412">Pulihkan sandi yang dihapus untuk <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">Buka audi&amp;o di tab baru</translation>
 <translation id="3936925983113350642">Sandi yang Anda pilih diperlukan untuk mengembalikan sertifikat ini nanti. Catat sandi di lokasi yang aman.</translation>
@@ -1993,6 +2005,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Diimpor dari IE</translation>
 <translation id="3950820424414687140">Login</translation>
+<translation id="3950828138786918475">Tab ini diizinkan untuk membaca folder di perangkat Anda.</translation>
 <translation id="3954354850384043518">Sedang berlangsung</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">Anda tidak memiliki log aktivitas WebRTC yang direkam baru-baru ini.</translation>
@@ -2011,6 +2024,7 @@
 <translation id="397105322502079400">Menghitung...</translation>
 <translation id="3975565978598857337">Menghubungi server untuk area yang gagal</translation>
 <translation id="397703832102027365">Mengakhiri...</translation>
+<translation id="3977886311744775419">Update otomatis tidak didownload pada jenis jaringan ini, namun Anda dapat memeriksa update secara manual.</translation>
 <translation id="3979395879372752341">Ekstensi baru ditambahkan (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Aktifkan <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Jenis penyimpanan yang dimasukkan tidak valid.</translation>
@@ -2150,6 +2164,7 @@
 <translation id="4194570336751258953">Aktifkan ketuk untuk mengklik</translation>
 <translation id="4195643157523330669">Buka di tab baru</translation>
 <translation id="4195814663415092787">Lanjutkan dari halaman terakhir yang dibuka</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> dapat menyimpan perubahan Anda secara langsung ke file berikut. Situs ini hanya dapat menyimpan perubahan saat tab ini terbuka.</translation>
 <translation id="4198146608511578238">Cukup tahan ikon Peluncur untuk berbicara dengan Asisten Google</translation>
 <translation id="4200689466366162458">Kata khusus</translation>
 <translation id="4200983522494130825">&amp;Tab baru</translation>
@@ -2197,7 +2212,6 @@
 <translation id="4267953847983678297">Otomatis sambungkan ke jaringan seluler</translation>
 <translation id="4268025649754414643">Penyandian Kunci</translation>
 <translation id="4270393598798225102">Versi <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Tidak ada yang cocok</translation>
 <translation id="4275663329226226506">Media</translation>
 <translation id="4275830172053184480">Mulai ulang perangkat Anda</translation>
 <translation id="4278101229438943600">Asisten sudah siap</translation>
@@ -2346,6 +2360,7 @@
 <translation id="4533985347672295764">Waktu CPU</translation>
 <translation id="4534661889221639075">Coba lagi.</translation>
 <translation id="4535127706710932914">Profil Default</translation>
+<translation id="4535767533210902251">Sensor sidik jari adalah tombol di sebelah kanan atas pada keyboard Anda. Sentuh sensornya menggunakan jari apa pun.</translation>
 <translation id="4538684596480161368">Selalu blokir plugin yang tidak dimasukkan kotak pasir di <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Dipasang oleh kebijakan perusahaan.</translation>
 <translation id="4542520061254486227">Membaca data Anda di <ph name="WEBSITE_1" /> dan <ph name="WEBSITE_2" /></translation>
@@ -2379,6 +2394,7 @@
 <translation id="457386861538956877">Lainnya...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Sandingkan perangkat Bluetooth</translation>
+<translation id="4578012756826807359">Data login Anda berhasil dihapus.</translation>
 <translation id="4579581181964204535">Tidak dapat mentransmisi <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Terjadi error saat memulihkan Linux</translation>
 <translation id="4582563038311694664">Setel ulang semua setelan</translation>
@@ -2496,7 +2512,6 @@
 <translation id="4763830802490665879">Cookie dari berbagai situs akan dihapus saat keluar.</translation>
 <translation id="4765582662863429759">Mengizinkan Android Message mengirim teks dari ponsel Anda ke Chromebook Anda</translation>
 <translation id="4768332406694066911">Anda memiliki sertifikat dari organisasi ini yang mengenali Anda</translation>
-<translation id="4772404146526168240">Kedua layar</translation>
 <translation id="4776146737004271126">Buka setelan Android</translation>
 <translation id="4776917500594043016">Sandi untuk <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2604,7 +2619,6 @@
 <translation id="4927846293686536410">Login untuk mendapatkan bookmark, histori, sandi, dan setelan lain di semua perangkat Anda. Anda juga akan otomatis login ke layanan Google.</translation>
 <translation id="4929386379796360314">Tujuan Pencetakan</translation>
 <translation id="4930714375720679147">Aktifkan</translation>
-<translation id="4931132176527519925">Selalu gunakan pencerminan</translation>
 <translation id="4932733599132424254">Tanggal</translation>
 <translation id="4933484234309072027">disematkan di <ph name="URL" /></translation>
 <translation id="493571969993549666">Tambahkan pengguna yang dilindungi</translation>
@@ -2644,6 +2658,7 @@
 <translation id="4992066212339426712">Bunyikan</translation>
 <translation id="4992458225095111526">Konfirmasi Powerwash</translation>
 <translation id="4992473555164495036">Administrator membatasi metode masukan yang tersedia.</translation>
+<translation id="4992866843815555470">Dok Anda perlu diperbaiki. Tanpa kipas yang berfungsi, dok Anda akan nonaktif.</translation>
 <translation id="4992926179187649719">Aktifkan "Ok Google"</translation>
 <translation id="4994474651455208930">Izinkan situs meminta untuk menjadi penangan default bagi protokol</translation>
 <translation id="4994754230098574403">Menyiapkan</translation>
@@ -2782,7 +2797,6 @@
 <translation id="5233231016133573565">ID proses</translation>
 <translation id="5233638681132016545">Tab baru</translation>
 <translation id="5233736638227740678">&amp;Tempel</translation>
-<translation id="5234764350956374838">Tutup</translation>
 <translation id="5235050375939235066">Uninstal aplikasi?</translation>
 <translation id="5235750401727657667">Ganti halaman yang ditampilkan saat membuka tab baru</translation>
 <translation id="5238278114306905396">Aplikasi "<ph name="EXTENSION_NAME" />" dihapus secara otomatis.</translation>
@@ -2847,6 +2861,7 @@
 <translation id="5319359161174645648">Google merekomendasikan Chrome</translation>
 <translation id="532247166573571973">Server mungkin tidak dapat dijangkau. Coba lagi nanti.</translation>
 <translation id="5324780743567488672">Setel zona waktu secara otomatis menggunakan lokasi Anda</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - diizinkan untuk menyimpan file asli</translation>
 <translation id="5327248766486351172">Nama</translation>
 <translation id="5327570636534774768">Perangkat ini ditandai untuk pengelolaan oleh domain lain. Cabut aksesnya dari domain tersebut sebelum menyiapkan mode demo.</translation>
 <translation id="532943162177641444">Ketuk notifikasi di <ph name="PHONE_NAME" /> Anda untuk menyiapkan hotspot seluler yang dapat digunakan oleh perangkat ini.</translation>
@@ -2989,7 +3004,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> ingin</translation>
 <translation id="5534304873398226603">Hapus foto atau video</translation>
 <translation id="5535941515421698170">Tindakan ini juga menghapus data yang sudah ada dari perangkat ini</translation>
-<translation id="5537725057119320332">Cast</translation>
 <translation id="5539221284352502426">Sandi yang Anda masukkan ditolak oleh server. Kemungkinan alasannya adalah: Sandi terlalu pendek. Sandi harus menyertakan angka atau simbol. Sandi harus berbeda dari sandi sebelumnya.</translation>
 <translation id="5541687815721799001">Gunakan aplikasi</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3108,7 +3122,7 @@
 <translation id="5708171344853220004">Microsoft Principal Name</translation>
 <translation id="5709557627224531708">Setel Chrome sebagai browser default Anda</translation>
 <translation id="5711983031544731014">Tidak dapat membuka. Masukkan sandi Anda.</translation>
-<translation id="5713723565110096165">PIN salah. Percobaan ulang yang tersisa: <ph name="RETRIES" />.</translation>
+<translation id="5713723565110096165">PIN salah. Percobaan ulang tersisa: <ph name="RETRIES" />.</translation>
 <translation id="5715711091495208045">Pialang Plugin: <ph name="PLUGIN_NAME" /></translation>
 <translation id="5719603411793408026">Mesin telusur default</translation>
 <translation id="5720705177508910913">Pengguna saat ini</translation>
@@ -3298,14 +3312,13 @@
 <translation id="5997337190805127100">Pelajari Akses Situs Lebih Lanjut</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> hasil untuk '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="6002458620803359783">Suara Pilihan</translation>
-<translation id="6005695835120147974">Router Media</translation>
 <translation id="6006484371116297560">Klasik</translation>
 <translation id="6007240208646052708">Penelusuran suara dalam bahasa Anda tidak tersedia.</translation>
 <translation id="6009781704028455063">Sensor yang ada di perangkat</translation>
 <translation id="6010869025736512584">Mengakses masukan video</translation>
 <translation id="6011193465932186973">Sidik jari</translation>
 <translation id="6011449291337289699">Hapus data situs</translation>
-<translation id="6015266928248016057">PUK tidak valid. Percobaan ulang yang tersisa: <ph name="RETRIES" />.</translation>
+<translation id="6015266928248016057">PUK tidak valid. Percobaan ulang tersisa: <ph name="RETRIES" />.</translation>
 <translation id="6015796118275082299">Tahun</translation>
 <translation id="6016551720757758985">Konfirmasi Powerwash dengan kembali ke versi sebelumnya</translation>
 <translation id="6016972670657536680">Pilih bahasa dan tombol keyboard. Saat ini, bahasa yang dipilih adalah <ph name="LANGUAGE" />.</translation>
@@ -3498,7 +3511,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Printer baru di jaringan Anda}other{Printer baru di jaringan Anda}}</translation>
 <translation id="6286708577777130801">Detail sandi tersimpan</translation>
 <translation id="6289452883081499048">Layanan Google yang dipersonalisasi seperti Play</translation>
-<translation id="6290556621549272952">Anda dapat menggunakan fitur ini untuk menampilkan konten dari Chromium di TV atau perangkat lainnya.</translation>
 <translation id="6291949900244949761">Tanyakan saat situs ingin mengakses perangkat USB (direkomendasikan)</translation>
 <translation id="6291953229176937411">&amp;Tampilkan di Penemu</translation>
 <translation id="6295158916970320988">Semua situs</translation>
@@ -3562,6 +3574,7 @@
 <translation id="6395423953133416962">Kirim <ph name="BEGIN_LINK1" />informasi sistem<ph name="END_LINK1" /> dan <ph name="BEGIN_LINK2" />metrik<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Blokir situs agar tidak menggunakan sensor gerakan</translation>
 <translation id="6397094776139756010">Opsi sinkronisasi dan personalisasi</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> dapat menyimpan perubahan Anda secara langsung ke file di folder berikut. Situs ini hanya dapat menyimpan perubahan saat tab ini terbuka.</translation>
 <translation id="6398715114293939307">Hapus Google Play Store</translation>
 <translation id="6398765197997659313">Keluar dari tampilan layar penuh</translation>
 <translation id="6399774419735315745">Mata-mata</translation>
@@ -3606,11 +3619,13 @@
 <translation id="6455264371803474013">Di situs tertentu</translation>
 <translation id="6455894534188563617">&amp;Folder Baru</translation>
 <translation id="6456394469623773452">Lancar</translation>
+<translation id="6456955391422100996">Iklan dihapus.</translation>
 <translation id="645705751491738698">Lanjutkan mencekal JavaScript</translation>
 <translation id="6458701200018867744">Upload gagal (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Gunakan Pilihan untuk Temukan</translation>
 <translation id="6459799433792303855">Jendela aktif dipindahkan ke layar lain.</translation>
 <translation id="6460601847208524483">Temukan Berikutnya</translation>
+<translation id="6461170143930046705">Mencari jaringan...</translation>
 <translation id="6463795194797719782">&amp;Edit</translation>
 <translation id="6466988389784393586">&amp;Buka Semua Bookmark</translation>
 <translation id="6467304607960172345">Optimalkan video layar penuh</translation>
@@ -3649,6 +3664,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Anda tersambung ke jaringan <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Bagikan</translation>
 <translation id="6528513914570774834">Izinkan pengguna lain di perangkat ini untuk menggunakan jaringan ini</translation>
 <translation id="652948702951888897">Histori Chrome</translation>
@@ -3696,7 +3712,7 @@
 <translation id="6597017209724497268">Contoh</translation>
 <translation id="659934686219830168">Sinkronisasi akan dimulai setelah Anda meninggalkan halaman ini</translation>
 <translation id="6602956230557165253">Gunakan tombol panah kiri dan kanan untuk bernavigasi.</translation>
-<translation id="6605847144724004692">Belum diberi nilai oleh pengguna.</translation>
+<translation id="6605847144724004692">Belum diberi rating oleh pengguna.</translation>
 <translation id="6607831829715835317">Fitur &amp;lainnya</translation>
 <translation id="6612358246767739896">Konten dilindungi</translation>
 <translation id="6613452264606394692">Kembali ke halaman secara cepat dengan mem-bookmark halaman ini</translation>
@@ -3742,10 +3758,9 @@
 <translation id="6676212663108450937">Pertimbangkan untuk menggunakan headphone saat melatih suara Anda</translation>
 <translation id="6678717876183468697">URL Kueri</translation>
 <translation id="6680442031740878064">Tersedia: <ph name="AVAILABLE_SPACE" /></translation>
-<translation id="6680650203439190394">Beri nilai</translation>
+<translation id="6680650203439190394">Beri rating</translation>
 <translation id="6681668084120808868">Ambil foto</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" akan dicopot pemasangannya.</translation>
-<translation id="6685083257944113180">Hentikan, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Buka Google Play</translation>
 <translation id="6686490380836145850">Tutup tab di sisi kanan</translation>
 <translation id="6686817083349815241">Simpan sandi Anda</translation>
@@ -3853,6 +3868,7 @@
 <translation id="6845038076637626672">Buka yang Dimaksimalkan</translation>
 <translation id="6845325883481699275">Bantu meningkatkan keamanan Chrome</translation>
 <translation id="6848388270925200958">Sekarang, Anda memiliki beberapa kartu yang hanya dapat digunakan di perangkat ini</translation>
+<translation id="6850286078059909152">Warna teks</translation>
 <translation id="6851497530878285708">Aplikasi Diaktifkan</translation>
 <translation id="6853388645642883916">Updater dalam mode tidur</translation>
 <translation id="68541483639528434">Tutup tab lain</translation>
@@ -3902,7 +3918,6 @@
 <translation id="6923132443355966645">Scroll / Klik</translation>
 <translation id="6923633482430812883">Terjadi error saat memasang URL berbagi. Harap periksa bahwa server file yang Anda sambungkan mendukung SMBv2 atau yang lebih baru.</translation>
 <translation id="6930036377490597025">Kunci keamanan eksternal atau sensor dalam perangkat</translation>
-<translation id="6930242544192836755">Durasi</translation>
 <translation id="693807610556624488">Operasi menulis melebihi panjang maksimum atribut ke: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Masuklah ke <ph name="TOKEN_NAME" /> untuk mengautentikasi ke <ph name="HOST_NAME" /> dengan sertifikat Anda.</translation>
 <translation id="6943176775188458830">Batalkan pencetakan</translation>
@@ -3916,6 +3931,7 @@
 <translation id="6951153907720526401">Penangan Pembayaran</translation>
 <translation id="6951663584153258142">Organisasi meminta Anda mengupdate perangkat ini</translation>
 <translation id="6953878494808481632">Info terkait</translation>
+<translation id="6953916367503892689">{0,plural, =1{File: <ph name="FILES" />}other{File: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Periksa Pop-up</translation>
 <translation id="6957044667612803194">Kunci keamanan ini tidak mendukung PIN</translation>
 <translation id="6957231940976260713">Nama layanan</translation>
@@ -4128,7 +4144,6 @@
 <translation id="7254554697254365959">Halaman Ini Tidak Dapat Diterjemahkan.</translation>
 <translation id="7254951428499890870">Yakin ingin meluncurkan "<ph name="APP_NAME" />" dalam mode diagnosis?</translation>
 <translation id="7255002516883565667">Sekarang, Anda memiliki satu kartu yang hanya dapat digunakan di perangkat ini</translation>
-<translation id="7255220508626648026">Mentransmisikan: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Sentuh kunci keamanan Anda sekali lagi untuk mengonfirmasi penyetelan ulang. Semua informasi yang tersimpan di kunci keamanan, termasuk PIN-nya, akan dihapus.</translation>
 <translation id="7255935316994522020">Terapkan</translation>
 <translation id="7256069762010468647">Situs sedang menggunakan kamera Anda</translation>
@@ -4262,6 +4277,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Buka Lokasi...</translation>
 <translation id="7458168200501453431">Menggunakan pemeriksa ejaan yang sama seperti yang digunakan di penelusuran Google. Teks yang Anda ketik di browser akan dikirim ke Google.</translation>
+<translation id="7460045493116006516">Tema saat ini yang telah diinstal</translation>
 <translation id="7461924472993315131">Pasang Pin</translation>
 <translation id="746216226901520237">Saat digunakan lagi, ponsel Anda akan membuka kunci <ph name="DEVICE_TYPE" /> ini. Anda dapat menonaktifkan Smart Lock di Setelan.</translation>
 <translation id="7463006580194749499">Tambahkan pengguna</translation>
@@ -4321,6 +4337,7 @@
 <translation id="7554791636758816595">Tab Baru</translation>
 <translation id="7556033326131260574">Smart Lock tidak dapat memverifikasi akun. Ketikkan sandi untuk masuk.</translation>
 <translation id="7556242789364317684">Maaf, <ph name="SHORT_PRODUCT_NAME" /> tidak dapat memulihkan setelan Anda. Untuk memperbaiki kesalahan tersebut, <ph name="SHORT_PRODUCT_NAME" /> harus menyetel ulang perangkat Anda menggunakan Powerwash.</translation>
+<translation id="7559444627302317199">Harap periksa sambungan jaringan Anda, lalu coba lagi.</translation>
 <translation id="7559719679815339381">Harap tunggu....aplikasi Kios sedang diperbarui. Jangan lepaskan stik USB.</translation>
 <translation id="7561196759112975576">Selalu</translation>
 <translation id="7563991800558061108">Untuk mengatasi masalah ini, Anda harus masuk ke Akun Google
@@ -4563,7 +4580,6 @@
 <translation id="7887334752153342268">Gandakan</translation>
 <translation id="7887864092952184874">Mouse Bluetooth disandingkan</translation>
 <translation id="7889565820482017512">Ukuran Tampilan</translation>
-<translation id="7889966925761734854">Cari</translation>
 <translation id="7893008570150657497">Mengakses foto, musik, dan media lain dari komputer Anda</translation>
 <translation id="7893153962594818789">Bluetooth di <ph name="DEVICE_TYPE" /> dinonaktifkan. Masukkan sandi dan aktifkan Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Default)</translation>
@@ -4571,7 +4587,6 @@
 <translation id="7898627924844766532">Tetap sematkan di bilah alat</translation>
 <translation id="7898725031477653577">Selalu terjemahkan</translation>
 <translation id="790040513076446191">Memanipulasi setelan yang terkait privasi</translation>
-<translation id="7902874111237641165">Gerakan Lancar [beta]</translation>
 <translation id="7903345046358933331">Halaman ini tidak merespons. Anda dapat menunggu hingga halaman merespons atau menutupnya.</translation>
 <translation id="7903742244674067440">Anda memiliki sertifikat pada file yang mengidentifikasi otoritas sertifikat ini</translation>
 <translation id="7903925330883316394">Utilitas: <ph name="UTILITY_TYPE" /></translation>
@@ -4683,6 +4698,7 @@
 <translation id="8037117027592400564">Membaca semua teks yang diucapkan menggunakan ucapan yang disintesis</translation>
 <translation id="8037357227543935929">Tanyakan (default)</translation>
 <translation id="803771048473350947">File</translation>
+<translation id="8042142357103597104">Opasitas teks</translation>
 <translation id="8044899503464538266">Lambat</translation>
 <translation id="8045253504249021590">Sinkronisasi telah dihentikan melalui Dasbor Google.</translation>
 <translation id="8045923671629973368">Masukan ID aplikasi atau URL toko web</translation>
@@ -4719,7 +4735,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Anda dapat menonaktifkan layanan ini di Setelan.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN tidak cocok</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> menggunakan setelan proxy dari ekstensi</translation>
-<translation id="8099495042588009598">Izin lainnya</translation>
 <translation id="8101987792947961127">Perlu Powerwash saat mulai ulang berikutnya</translation>
 <translation id="8102159139658438129">Buka <ph name="LINK_BEGIN" />Setelan<ph name="LINK_END" /> guna melihat opsi untuk ponsel yang terhubung</translation>
 <translation id="8104696615244072556">Powerwash perangkat <ph name="IDS_SHORT_PRODUCT_NAME" /> dan kembalikan ke versi sebelumnya.</translation>
@@ -4771,8 +4786,10 @@
     Saya rasa situs ini tidak perlu diblokir!</translation>
 <translation id="8184288427634747179">Alihkan ke <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Info selengkapnya</translation>
+<translation id="8184472985242519288">Seragam</translation>
 <translation id="8185331656081929126">Tampilkan pemberitahuan saat printer baru terdeteksi pada jaringan.</translation>
 <translation id="8186609076106987817">Server tidak dapat menemukan file.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> dapat membaca file di folder berikut. Situs ini dapat melihat perubahan pada folder hanya saat tab ini terbuka.</translation>
 <translation id="8188389033983459049">Periksa setelan perangkat Anda dan aktifkan untuk melanjutkan</translation>
 <translation id="8190193592390505034">Menyambung ke <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Mengelola aplikasi, ekstensi, dan tema Anda</translation>
@@ -4875,8 +4892,7 @@
 <translation id="8339059274628563283">Data <ph name="SITE" /> yang disimpan secara lokal</translation>
 <translation id="833986336429795709">Untuk membuka link ini, pilih aplikasi</translation>
 <translation id="8342861492835240085">Pilih koleksi</translation>
-<translation id="834290227245955730">PIN tidak valid. Percobaan ulang yang tersisa: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Gunakan bandwidth tinggi untuk mendapatkan kualitas video atau animasi terbaik. Pengguna lain dengan sambungan yang lambat mungkin tidak dapat melihat konten Anda.</translation>
+<translation id="834290227245955730">PIN tidak valid. Percobaan ulang tersisa: <ph name="RETRIES" />.</translation>
 <translation id="8351419472474436977">Ekstensi ini telah mengambil alih kontrol setelan proxy Anda, yang berarti ekstensi dapat mengubah, merusak, atau menyadap apa pun yang Anda lakukan secara online. Jika Anda tidak yakin mengapa perubahan ini terjadi, mungkin Anda tidak menginginkannya.</translation>
 <translation id="8351630282875799764">Daya baterai tidak terisi</translation>
 <translation id="835238322900896202">Terjadi error saat melakukan uninstal. Harap uninstal melalui Terminal.</translation>
@@ -4909,9 +4925,11 @@
 <translation id="839736845446313156">Daftar</translation>
 <translation id="8398877366907290961">Tetap lanjutkan</translation>
 <translation id="8400146488506985033">Kelola orang</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> dapat menyimpan perubahan secara langsung ke file di folder berikut. Situs ini hanya dapat menyimpan perubahan saat tab ini terbuka.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Tanya dulu (disarankan)</translation>
 <translation id="8418445294933751433">Tampilkan &amp;sebagai tab</translation>
+<translation id="8418905021510211421">Halaman ini diizinkan untuk membaca folder di perangkat Anda.</translation>
 <translation id="8419098111404128271">Hasil penelusuran untuk '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="8419368276599091549">Selamat datang di <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Ubah</translation>
@@ -4931,6 +4949,7 @@
 <translation id="8438566539970814960">Jadikan penelusuran dan penjelajahan lebih baik</translation>
 <translation id="8439506636278576865">Tawarkan penerjemahan halaman ke dalam bahasa ini</translation>
 <translation id="8440630305826533614">Aplikasi Linux</translation>
+<translation id="844241640324986723">Gagal menghapus data login Anda.</translation>
 <translation id="8443338615972234259">Buat akun baru untuk pengguna yang dilindungi sekarang.</translation>
 <translation id="8446884382197647889">Pelajari Lebih Lanjut</translation>
 <translation id="8447409163267621480">Sertakan Ctrl atau Alt</translation>
@@ -4946,8 +4965,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Pengguna yang diawasi ini dapat dihapus atau dinonaktifkan oleh pengelola. Hubungi pengelola jika Anda ingin terus login sebagai pengguna ini.</translation>
 <translation id="846374874681391779">Kotak download</translation>
-<translation id="8463807869745732775">"&gt;
-    Data login kunci keamanan yang disimpan</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> dinonaktifkan.</translation>
 <translation id="8464132254133862871">Akun pengguna ini tidak layak mendapatkan layanan.</translation>
 <translation id="8465252176946159372">Tidak valid</translation>
@@ -4972,7 +4989,7 @@
 <translation id="8497219075884839166">Windows Utilities</translation>
 <translation id="8498214519255567734">Memudahkan Anda melihat layar atau membaca saat cahaya redup</translation>
 <translation id="8498395510292172881">Lanjutkan membaca di Chrome</translation>
-<translation id="8500234928660943538">PUK salah. Percobaan ulang yang tersisa: <ph name="RETRIES" />.</translation>
+<translation id="8500234928660943538">PUK salah. Percobaan ulang tersisa: <ph name="RETRIES" />.</translation>
 <translation id="8502536196501630039">Untuk menggunakan aplikasi dari Google Play, Anda terlebih dahulu harus memulihkan aplikasi. Beberapa data mungkin telah hilang.</translation>
 <translation id="8503813439785031346">Nama Pengguna</translation>
 <translation id="850875081535031620">Software berbahaya tidak ditemukan</translation>
@@ -5013,6 +5030,7 @@
 <translation id="8569002732135253578">Sedang mencetak <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Tidak ditemukan tujuan</translation>
 <translation id="8571213806525832805">4 minggu terakhir</translation>
+<translation id="8573403125070227391">Iklan ini menggunakan terlalu banyak resource untuk perangkat Anda, sehingga Chrome menghapusnya.</translation>
 <translation id="8574990355410201600">Selalu izinkan suara di <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Tekan <ph name="KEY_EQUIVALENT" /> untuk Berhenti</translation>
 <translation id="8578639784464423491">Tidak boleh melebihi 99 huruf</translation>
@@ -5036,13 +5054,13 @@
 <translation id="8609465669617005112">Berpindah ke atas</translation>
 <translation id="8610103157987623234">Format salah, harap coba lagi</translation>
 <translation id="8615618338313291042">Aplikasi Penyamaran: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Drop shadow</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Status roaming</translation>
 <translation id="8620765578342452535">Konfigurasi sambungan jaringan</translation>
 <translation id="8621866727807194849">Ada software berbahaya di komputer Anda. Chrome sedang menghapusnya, memulihkan setelan Anda, dan menonaktifkan ekstensi. Tindakan ini akan membuat browser berfungsi kembali secara normal.</translation>
 <translation id="8621979332865976405">Bagikan seluruh layar Anda</translation>
 <translation id="862542460444371744">&amp;Ekstensi</translation>
-<translation id="8627151598708688654">Pilih sumber</translation>
 <translation id="862727964348362408">Ditangguhkan</translation>
 <translation id="862750493060684461">Cache CSS</translation>
 <translation id="8627795981664801467">Hanya sambungan aman</translation>
@@ -5096,6 +5114,7 @@
 <translation id="8688579245973331962">Tidak melihat nama Anda?</translation>
 <translation id="8688591111840995413">Sandi lemah</translation>
 <translation id="8688672835843460752">Tersedia</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Buka &amp;Lokasi...</translation>
 <translation id="869884720829132584">Menu aplikasi</translation>
 <translation id="869891660844655955">Masa berlaku</translation>
@@ -5259,6 +5278,7 @@
 <translation id="891365694296252935">Kirim data penggunaan dan diagnostik. Perangkat ini saat ini otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini tidak akan digunakan untuk mengidentifikasi anak Anda serta akan membantu sistem dan stabilitas aplikasi serta penyempurnaan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Setelan ini diterapkan oleh pemilik. Jika Aktivitas Web &amp; Aplikasi tambahan diaktifkan untuk anak Anda, data ini mungkin akan disimpan ke Akun Google miliknya. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Memuat saran</translation>
 <translation id="8916476537757519021">Subframe Mode Penyamaran: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - diizinkan untuk membaca folder di perangkat Anda</translation>
 <translation id="8919275547519617350">Untuk mendapatkan semua sandi di semua perangkat, login dan aktifkan sinkronisasi.</translation>
 <translation id="8921366488406707015">Memverifikasi kunci keamanan...</translation>
 <translation id="8922013791253848639">Selalu izinkan iklan di situs ini</translation>
@@ -5288,7 +5308,6 @@
 <translation id="8965037249707889821">Masukkan sandi lama</translation>
 <translation id="8966870118594285808">Membuka kembali tab jika Anda menutupnya secara tidak sengaja</translation>
 <translation id="8967866634928501045">Tekan Alt Shift A untuk menampilkan</translation>
-<translation id="8970203673128054105">Lihat daftar mode transmisi</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Hubungi administrator jaringan Anda untuk memastikan bahwa firewall tidak memblokir download dari server Google.</translation>
 <translation id="8973557916016709913">Menghapus tingkat zoom</translation>
@@ -5437,6 +5456,7 @@
 <translation id="9214520840402538427">Uups!  Waktu pemulaian atribut waktu pemasangan telah habis.  Hubungi perwakilan dukungan Anda.</translation>
 <translation id="9214695392875603905">Kue mangkok</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" ditambahkan</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> dapat menyimpan perubahan Anda secara langsung ke file berikut. Situs ini hanya dapat menyimpan perubahan saat tab ini terbuka.</translation>
 <translation id="9218430445555521422">Setel sebagai default</translation>
 <translation id="9219103736887031265">Gambar</translation>
 <translation id="9220525904950070496">Hapus akun</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index f05e3ce..ca9d8f5 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Errore durante l'avvio della macchina virtuale. Riprova.</translation>
 <translation id="1089439967362294234">Cambia password</translation>
 <translation id="1090126737595388931">Nessuna applicazione in esecuzione in background</translation>
+<translation id="1090290614672149983">Salvare le modifiche apportate al file originale?</translation>
 <translation id="1090918500949388876">Accedi all'assistente ogni volta che dici "Ok Google" quando lo schermo è attivo</translation>
 <translation id="1091767800771861448">Premi ESC per saltare (solo build non ufficiali).</translation>
 <translation id="1093457606523402488">Reti visibili:</translation>
 <translation id="1094607894174825014">L'operazione di lettura o scrittura è stata richiesta con un offset non valido su: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Prima di accedere, entra come Ospite per attivare la rete <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Questa scheda è autorizzata a salvare i file originali.</translation>
 <translation id="1103523840287552314">Traduci sempre <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Interrompi</translation>
 <translation id="1110155001042129815">Attendi</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Occhiali da sole</translation>
 <translation id="1151917987301063366">Consenti sempre a <ph name="HOST" /> di accedere ai sensori</translation>
 <translation id="1153356358378277386">Dispositivi accoppiati</translation>
-<translation id="1156488781945104845">Ora corrente</translation>
 <translation id="1161575384898972166">Accedi a <ph name="TOKEN_NAME" /> per esportare il certificato client.</translation>
 <translation id="1163931534039071049">&amp;Visualizza sorgente frame</translation>
 <translation id="1164674268730883318">Disattivare Smart Lock per <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Impostazioni di archiviazione Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookie e altri dati dei siti</translation>
 <translation id="127668050356036882">Chiudi tutte le finestre</translation>
-<translation id="1277908057200820621">Visualizza elenco dei dispositivi</translation>
 <translation id="1280820357415527819">Ricerca di reti mobili in corso</translation>
 <translation id="1285320974508926690">Non tradurre mai questo sito</translation>
 <translation id="1285484354230578868">Memorizza dati nel tuo account Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Rete domestica, roaming non attivo</translation>
 <translation id="1316136264406804862">Ricerca in corso...</translation>
 <translation id="1316495628809031177">Sincronizzazione in pausa</translation>
+<translation id="1317637799698924700">La dock station funzionerà alla modalità compatibile con USB Type-C.</translation>
 <translation id="1322046419516468189">Visualizza e gestisci le password salvate in <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Accedi a Chrome per trovare le tue schede degli altri dispositivi.</translation>
 <translation id="1327074568633507428">Stampante su Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Il tuo <ph name="BEGIN_LINK" />browser è gestito<ph name="END_LINK" /> da <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Esegui strumenti, editor e IDE di Linux sul tuo dispositivo <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Ulteriori informazioni&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Scegli un file</translation>
+<translation id="1370749010280229230">Il display collegato al dock presenta un problema</translation>
 <translation id="1371301976177520732">I tuoi Preferiti, le password, la cronologia e altri dati su tutti i tuoi dispositivi</translation>
 <translation id="1372841398847029212">Sincronizza con il tuo account</translation>
 <translation id="1374844444528092021">Il certificato richiesto dalla rete "<ph name="NETWORK_NAME" />" non è installato o non è più valido. Richiedi un nuovo certificato e riprova a connetterti.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Pagina web, singolo file</translation>
 <translation id="1451917004835509682">Aggiungi persona supervisionata</translation>
 <translation id="1454223536435069390">&amp;Acquisisci screenshot</translation>
+<translation id="1458243790901188746">{0,plural, =1{Cartella: <ph name="DIRECTORIES" />}other{Cartelle: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Motori di ricerca aggiunti da estensioni</translation>
 <translation id="146000042969587795">Il frame è stato bloccato poiché contiene contenuti non protetti.</translation>
 <translation id="146219525117638703">Stato ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Mostra opzioni di immissione</translation>
 <translation id="1651008383952180276">Devi inserire la stessa passphrase due volte</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Aggiungi la stampante a Google Cloud Print per poter stampare ovunque.}other{Aggiungi # stampanti a Google Cloud Print per poter stampare ovunque.}}</translation>
+<translation id="1656528038316521561">Opacità sfondo</translation>
 <translation id="1657406563541664238">Aiutaci a migliorare <ph name="PRODUCT_NAME" /> inviando automaticamente a Google le statistiche sull'utilizzo e segnalazioni sugli arresti anomali</translation>
 <translation id="1658424621194652532">Questa pagina sta accedendo al microfono.</translation>
 <translation id="1660204651932907780">Consenti ai siti di riprodurre l'audio (opzione consigliata)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> vuole accedere a marca e modello del token di sicurezza</translation>
 <translation id="1679068421605151609">Strumenti per sviluppatori</translation>
 <translation id="1679806121152819234">PluginVm</translation>
+<translation id="1679810534535368772">Vuoi uscire?</translation>
 <translation id="167983332380191032">Il servizio di gestione ha inviato un errore HTTP.</translation>
 <translation id="1680849702532889074">Si è verificato un errore durante l'installazione della tua applicazione Linux.</translation>
 <translation id="16815041330799488">Non consentire ai siti di leggere testi e immagini copiati negli appunti</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identificatore dei contenuti multimediali protetti</translation>
 <translation id="175196451752279553">R&amp;iapri scheda chiusa</translation>
 <translation id="1753905327828125965">Più visitati</translation>
+<translation id="1755601632425835748">Dimensioni testo</translation>
 <translation id="1756681705074952506">Metodo di immissione</translation>
 <translation id="1757301747492736405">Disinstallazione in attesa</translation>
 <translation id="175772926354468439">Attiva tema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">Più &amp;piccolo</translation>
 <translation id="1919345977826869612">Annunci</translation>
 <translation id="1919814239594435008">Plug-in senza sandbox consentito</translation>
+<translation id="1920390473494685033">Contatti</translation>
 <translation id="1921050530041573580">Accoppia il telefono con Messaggi</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Tutta l'esperienza di Google in <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Scheda di navigazione in incognito: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> su <ph name="PEPPER_PLUGIN_DOMAIN" /> vuole accedere al computer</translation>
 <translation id="2178614541317717477">Compromesso CA</translation>
+<translation id="2179849162388791084">Impossibile recuperare i dati di accesso dal token di sicurezza.</translation>
 <translation id="218070003709087997">Specifica un numero per indicare la quantità di copie da stampare (da 1 a 999).</translation>
 <translation id="2184515124301515068">Consenti a Chrome di scegliere quando i siti possono riprodurre audio (opzione consigliata)</translation>
 <translation id="2187895286714876935">Errore di importazione del certificato del server</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Tutti i cookie e i dati dei siti</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 elemento copiato}other{# elementi copiati}}</translation>
 <translation id="2278562042389100163">Apri finestra browser</translation>
-<translation id="2279874276457403668">È possibile creare una sola sessione alla volta.</translation>
 <translation id="2280486287150724112">Margine destro</translation>
 <translation id="2282146716419988068">Processo GPU</translation>
 <translation id="2282155092769082568">URL di configurazione automatica:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Le note sulla schermata di blocco vengono salvate automaticamente nell'app <ph name="LOCK_SCREEN_APP_NAME" />. La nota più recente rimarrà sulla schermata di blocco.</translation>
 <translation id="2353297238722298836">Videocamera e microfono consentiti</translation>
 <translation id="2356070529366658676">Chiedi</translation>
-<translation id="2357949918965361754">Puoi utilizzare questa funzione per visualizzare i contenuti di Chrome alla TV o su altri dispositivi.</translation>
 <translation id="2359345697448000899">Gestisci le tue estensioni facendo clic su Estensioni nel menu Strumenti.</translation>
 <translation id="2359808026110333948">Continua</translation>
 <translation id="236117173274098341">Ottimizza</translation>
@@ -964,6 +970,7 @@
 <translation id="2436720498717686157">La tua organizzazione richiede un aggiornamento immediato di questo dispositivo</translation>
 <translation id="2439545803278355377">Inserisci il nuovo PIN. Il PIN deve avere almeno quattro caratteri e può contenere lettere, numeri e altri caratteri.</translation>
 <translation id="2440604414813129000">Visualizza &amp;sorgente</translation>
+<translation id="2442916515643169563">Ombreggiatura testo</translation>
 <translation id="2444119669991608829">La pagina non è in <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">La directory principale dell'estensione è obbligatoria.</translation>
 <translation id="2445484935443597917">Crea un nuovo profilo</translation>
@@ -1178,6 +1185,7 @@
 <translation id="2738771556149464852">Non dopo</translation>
 <translation id="2739191690716947896">Debug</translation>
 <translation id="2739240477418971307">Modifica delle impostazioni di accesibilità</translation>
+<translation id="274029851662193272">Incassato</translation>
 <translation id="2740393541869613458">controllare i siti web visitati dall'utente supervisionato e</translation>
 <translation id="2741912629735277980">Visualizza UI sulla schermata di accesso</translation>
 <translation id="274290345632688601">Ripristino app e file Linux in corso</translation>
@@ -1226,6 +1234,7 @@
 <translation id="2806891468525657116">Scorciatoia già presente</translation>
 <translation id="2807517655263062534">I file scaricati vengono mostrati qui</translation>
 <translation id="2809586584051668049">e altre <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt non è supportato</translation>
 <translation id="2812944337881233323">Prova a uscire e ad accedere di nuovo</translation>
 <translation id="2812989263793994277">Non mostrare le immagini</translation>
 <translation id="281390819046738856">Impossibile firmare la richiesta.</translation>
@@ -1248,7 +1257,6 @@
 <translation id="2841837950101800123">Provider</translation>
 <translation id="2844169650293029770">Dispositivo USB-C (porta anteriore sinistra)</translation>
 <translation id="2845382757467349449">Mostra sempre barra dei Preferiti</translation>
-<translation id="2847759467426165163">Trasmetti a</translation>
 <translation id="284805635805850872">Rimuovere il software dannoso?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Pulizia non riuscita</translation>
@@ -1295,6 +1303,7 @@
     Messaggio del server: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Aggiungi Galleria Media per directory</translation>
 <translation id="2910318910161511225">Collegati a una rete e riprova</translation>
+<translation id="2910518940971897750">Salva il file originale</translation>
 <translation id="2913331724188855103">Consenti ai siti di salvare e leggere i dati dei cookie (opzione consigliata)</translation>
 <translation id="2915102088417824677">Apri log delle attività</translation>
 <translation id="2915873080513663243">Scansione automatica</translation>
@@ -1359,12 +1368,14 @@
 <translation id="3013291976881901233">Dispositivi MIDI</translation>
 <translation id="3015639418649705390">Riavvia ora</translation>
 <translation id="3016329696181678353">Impossibile configurare automaticamente la stampante <ph name="PRINTER_NAME" />. Specifica dettagli avanzati della stampante.</translation>
+<translation id="3016381065346027039">Non ci sono voci di log</translation>
 <translation id="3016641847947582299">Componente aggiornato</translation>
 <translation id="3016780570757425217">Conoscere la tua posizione</translation>
 <translation id="3017079585324758401">Sfondo</translation>
 <translation id="3020183492814296499">Scorciatoie</translation>
 <translation id="3020990233660977256">Numero di serie: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Farfalla</translation>
+<translation id="3021408157810018664">Vuoi salvare le modifiche apportate ai file originali?</translation>
 <translation id="3021426244864538700">Con accesso ai dati di questo sito</translation>
 <translation id="3021678814754966447">&amp;Visualizza sorgente frame</translation>
 <translation id="3022978424994383087">Non ho capito.</translation>
@@ -1457,6 +1468,7 @@
 <translation id="3170072451822350649">Puoi anche saltare l'accesso e <ph name="LINK_START" />navigare come ospite<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Un sito sta accedendo all'input video</translation>
 <translation id="3177909033752230686">Lingua della pagina:</translation>
+<translation id="3179982752812949580">Carattere testo</translation>
 <translation id="3181954750937456830">Navigazione sicura (protegge te e il tuo dispositivo da siti pericolosi)</translation>
 <translation id="3182749001423093222">Controllo ortografico</translation>
 <translation id="3183139917765991655">Profile Importer</translation>
@@ -1509,7 +1521,6 @@
 <translation id="3275778913554317645">Apri come finestra</translation>
 <translation id="3278001907972365362">I tuoi Account Google richiedono la tua attenzione</translation>
 <translation id="3279230909244266691">Questa procedura potrebbe richiedere alcuni minuti. Avvio della macchina virtuale in corso.</translation>
-<translation id="3279741024917655738">Mostra video a schermo intero su</translation>
 <translation id="3280237271814976245">Salva con &amp;nome...</translation>
 <translation id="3280243678470289153">Rimani in Chrome</translation>
 <translation id="3281892622610078515">File e programmi che saranno messi in quarantena:</translation>
@@ -1531,7 +1542,7 @@
 <translation id="3303855915957856445">Nessun risultato di ricerca trovato</translation>
 <translation id="3305389145870741612">La procedura di formattazione può richiedere alcuni secondi. Attendi.</translation>
 <translation id="3305661444342691068">Apri PDF in anteprima</translation>
-<translation id="3306684685104080068">Abilita la trasmissione ai servizi basati sulla cloud quali Google Hangouts.</translation>
+<translation id="3307871847038842490">Questa pagina è autorizzata a salvare i file originali.</translation>
 <translation id="3308006649705061278">Unità organizzativa (OU)</translation>
 <translation id="3308116878371095290">Impostazione dei cookie vietata per questa pagina.</translation>
 <translation id="3308134619352333507">Nascondi pulsante</translation>
@@ -1635,7 +1646,6 @@
 <translation id="3462413494201477527">Annullare la creazione dell'account?</translation>
 <translation id="3464012987031883895">Un sito sta accedendo all'input audio</translation>
 <translation id="346431825526753">Si tratta di un account di minori gestito da <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Trasmetti in streaming un file video o audio</translation>
 <translation id="3468999815377931311">Telefono Android</translation>
 <translation id="3470442499439619530">Rimuovi questo utente</translation>
 <translation id="3473479545200714844">Ingrandimento dello schermo</translation>
@@ -1658,6 +1668,7 @@
 <translation id="3496213124478423963">Riduci</translation>
 <translation id="3497560059572256875">Condividi doodle</translation>
 <translation id="3505030558724226696">Revoca accesso ai dispositivi</translation>
+<translation id="3505635633742443645">La porta HDMI del dock non può essere utilizzata quando la porta USB Type-C è usata per l'uscita video. Utilizza una porta diversa per uno dei display.</translation>
 <translation id="3507421388498836150">Autorizzazioni attuali di "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Ripeti la ricerca di dispositivi Bluetooth</translation>
 <translation id="3508920295779105875">Scegli un'altra cartella...</translation>
@@ -1710,6 +1721,7 @@
 <translation id="3576324189521867626">Installata</translation>
 <translation id="3578594933904494462">I contenuti di questa scheda vengono condivisi.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; vuole condividere una stampante &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; con un gruppo gestito da te: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Se accetti, tutti i membri del gruppo potranno utilizzare la stampante.</translation>
+<translation id="357889014807611375">Wi-Fi a consumo</translation>
 <translation id="3584169441612580296">Lettura e modifica di foto, musica e altri contenuti multimediali del computer</translation>
 <translation id="3587482841069643663">Tutti</translation>
 <translation id="358796204584394954">Digita questo codice in "<ph name="DEVICE_NAME" />" per accoppiare:</translation>
@@ -1720,6 +1732,7 @@
 <translation id="359283478042092570">Entra</translation>
 <translation id="3593965109698325041">Vincoli nomi certificati</translation>
 <translation id="3596235046596950091">Attiva servizi cloud</translation>
+<translation id="3599221874935822507">In rilievo</translation>
 <translation id="3599863153486145794">Consente di cancellare la cronologia da tutti i dispositivi su cui hai eseguito l'accesso. Il tuo Account Google potrebbe avere altri tipi di cronologia di navigazione all'indirizzo <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Informazioni sulla richiesta web</translation>
 <translation id="3600792891314830896">Disattiva l'audio nei siti che riproducono suoni</translation>
@@ -1734,6 +1747,7 @@
 <translation id="3612673635130633812">Scaricato da &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Mostra <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Apri in un'altra scheda</translation>
+<translation id="3615073365085224194">Tocca il sensore di impronte digitali con il dito</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Cancella dati di navigazione...</translation>
 <translation id="3617891479562106823">Gli sfondi non sono disponibili. Riprova più tardi.</translation>
@@ -1815,7 +1829,6 @@
 <translation id="3719826155360621982">Home page</translation>
 <translation id="3720996970802414353">Switch anyway (Passa comunque)</translation>
 <translation id="3722108462506185496">Errore durante l'avvio del servizio macchina virtuale. Riprova.</translation>
-<translation id="3723158278575423087">Benvenuto nell'esperienza Cast di Chromium!</translation>
 <translation id="3725367690636977613">pagine</translation>
 <translation id="3726137731714254362">Se rimuovi da qui le cartelle, la condivisione verrà interrotta ma i file non verranno eliminati.</translation>
 <translation id="3727148787322499904">La modifica di questa impostazione avrà effetto su tutte le reti condivise</translation>
@@ -1850,7 +1863,6 @@
 <translation id="3764314093345384080">Informazioni build dettagliate</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Comunicazione con un dispositivo USB}other{Comunicazione con # dispositivi USB}}</translation>
 <translation id="3765246971671567135">Impossibile leggere le norme offline relative alla modalità demo.</translation>
-<translation id="3766223500670287046">Schermo remoto</translation>
 <translation id="3768037234834996183">Sincronizzazione delle preferenze...</translation>
 <translation id="377050016711188788">Gelato</translation>
 <translation id="3771294271822695279">File video</translation>
@@ -1923,7 +1935,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Solleva, quindi tocca di nuovo</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronizzazione in pausa</translation>
-<translation id="3862134173397075045">Benvenuto nell'esperienza Cast di Chrome.</translation>
 <translation id="3862693525629180217">Verifica tramite sensore integrato</translation>
 <translation id="3862788408946266506">L'app con l'attributo del file manifest "kiosk_only" deve essere installata in modalità kiosk di Chrome OS</translation>
 <translation id="3865414814144988605">Risoluzione</translation>
@@ -1972,6 +1983,7 @@
 <translation id="3926002189479431949">Telefono con Smart Lock cambiato</translation>
 <translation id="3927932062596804919">Non consentire</translation>
 <translation id="3930737994424905957">Ricerca di dispositivi in corso</translation>
+<translation id="3930968231047618417">Colore sfondo</translation>
 <translation id="3933283459331715412">Ripristina la password eliminata di <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Apri audio in nuova scheda</translation>
 <translation id="3936925983113350642">La password scelta sarà necessaria per recuperare il certificato in un secondo momento. Registrala in una posizione sicura.</translation>
@@ -1991,6 +2003,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importati da IE</translation>
 <translation id="3950820424414687140">Accedi</translation>
+<translation id="3950828138786918475">Questa scheda è autorizzata a leggere una cartella sul tuo dispositivo.</translation>
 <translation id="3954354850384043518">In corso</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> hertz)</translation>
 <translation id="3954953195017194676">Nessun log eventi WebRTC acquisito di recente.</translation>
@@ -2009,6 +2022,7 @@
 <translation id="397105322502079400">Calcolo in corso...</translation>
 <translation id="3975565978598857337">Tentativo di contatto del server per area di autenticazione non riuscito</translation>
 <translation id="397703832102027365">Finalizzazione in corso...</translation>
+<translation id="3977886311744775419">Gli aggiornamenti automatici non vengono scaricati su questo tipo di rete, ma puoi verificare la presenza di aggiornamenti manualmente.</translation>
 <translation id="3979395879372752341">Nuova estensione aggiunta (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Abilita <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">È stato inserito un tipo non valido per il salvataggio.</translation>
@@ -2148,6 +2162,7 @@
 <translation id="4194570336751258953">Attiva tocco per fare clic</translation>
 <translation id="4195643157523330669">Apri in un'altra scheda</translation>
 <translation id="4195814663415092787">Continua da dove eri rimasto</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> può salvare le modifiche apportate direttamente sui file seguenti. Questo sito può salvare le modifiche soltanto mentre la scheda è aperta.</translation>
 <translation id="4198146608511578238">Tieni premuta l'icona Avvio applicazioni per parlare con l'Assistente Google.</translation>
 <translation id="4200689466366162458">Parole del dizionario personale</translation>
 <translation id="4200983522494130825">Nuova &amp;scheda</translation>
@@ -2195,7 +2210,6 @@
 <translation id="4267953847983678297">Collegati automaticamente alla rete mobile</translation>
 <translation id="4268025649754414643">Crittografia chiave</translation>
 <translation id="4270393598798225102">Versione <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Nessuna corrispondenza</translation>
 <translation id="4275663329226226506">Multimediali</translation>
 <translation id="4275830172053184480">Riavvia il dispositivo</translation>
 <translation id="4278101229438943600">Il tuo assistente è pronto</translation>
@@ -2344,6 +2358,7 @@
 <translation id="4533985347672295764">Tempo di CPU</translation>
 <translation id="4534661889221639075">Riprova.</translation>
 <translation id="4535127706710932914">Profilo predefinito</translation>
+<translation id="4535767533210902251">Il sensore di impronte digitali è il tasto in alto a destra della tastiera. Toccalo leggermente con un dito.</translation>
 <translation id="4538684596480161368">Blocca sempre i plug-in senza sandbox su <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Installata per norma aziendale.</translation>
 <translation id="4542520061254486227">Lettura dei dati su <ph name="WEBSITE_1" /> e <ph name="WEBSITE_2" /></translation>
@@ -2377,6 +2392,7 @@
 <translation id="457386861538956877">Altro...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Accoppia dispositivo Bluetooth</translation>
+<translation id="4578012756826807359">I dati di accesso sono stati eliminati correttamente.</translation>
 <translation id="4579581181964204535">Impossibile trasmettere <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Errore durante il ripristino di Linux</translation>
 <translation id="4582563038311694664">Ripristina tutte le impostazioni</translation>
@@ -2494,7 +2510,6 @@
 <translation id="4763830802490665879">I cookie di diversi siti verranno cancellati all'uscita.</translation>
 <translation id="4765582662863429759">Consenti ad Android Messaggi di trasmettere gli SMS dal telefono al Chromebook</translation>
 <translation id="4768332406694066911">Hai certificati da queste organizzazioni che ti identificano</translation>
-<translation id="4772404146526168240">Entrambi gli schermi</translation>
 <translation id="4776146737004271126">Apri le impostazioni Android</translation>
 <translation id="4776917500594043016">Password per <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2602,7 +2617,6 @@
 <translation id="4927846293686536410">Accedi per trovare i tuoi segnalibri, la cronologia, le password e altre impostazioni su tutti i tuoi dispositivi. Verrà inoltre eseguito l'accesso automatico ai tuoi servizi Google.</translation>
 <translation id="4929386379796360314">Destinazioni di stampa</translation>
 <translation id="4930714375720679147">Attiva</translation>
-<translation id="4931132176527519925">Usa sempre il mirroring</translation>
 <translation id="4932733599132424254">Data</translation>
 <translation id="4933484234309072027">incorporata su <ph name="URL" /></translation>
 <translation id="493571969993549666">Aggiungi utente supervisionato</translation>
@@ -2642,6 +2656,7 @@
 <translation id="4992066212339426712">Riattiva audio</translation>
 <translation id="4992458225095111526">Conferma Powerwash</translation>
 <translation id="4992473555164495036">L'amministratore ha limitato i metodi di immissione disponibili.</translation>
+<translation id="4992866843815555470">Il tuo dock deve essere riparato. Senza una ventola funzionante, il dock verrà spento.</translation>
 <translation id="4992926179187649719">Attiva "Ok Google"</translation>
 <translation id="4994474651455208930">Consenti ai siti di chiedere di diventare gestori predefiniti dei protocolli</translation>
 <translation id="4994754230098574403">Configurazione in corso</translation>
@@ -2780,7 +2795,6 @@
 <translation id="5233231016133573565">ID processo</translation>
 <translation id="5233638681132016545">Nuova scheda</translation>
 <translation id="5233736638227740678">&amp;Incolla</translation>
-<translation id="5234764350956374838">Ignora</translation>
 <translation id="5235050375939235066">Disinstallare l'app?</translation>
 <translation id="5235750401727657667">Sostituzione della pagina visualizzata quando viene aperta una nuova scheda</translation>
 <translation id="5238278114306905396">L'applicazione "<ph name="EXTENSION_NAME" />" è stata rimossa automaticamente.</translation>
@@ -2845,6 +2859,7 @@
 <translation id="5319359161174645648">Google consiglia Chrome</translation>
 <translation id="532247166573571973">Il server potrebbe non essere raggiungibile. Riprova più tardi.</translation>
 <translation id="5324780743567488672">Imposta automaticamente il fuso orario in base alla posizione</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - è autorizzato a salvare i file originali</translation>
 <translation id="5327248766486351172">Nome</translation>
 <translation id="5327570636534774768">Questo dispositivo è stato contrassegnato per la gestione da un altro dominio. Esegui il deprovisioning del dispositivo dal dominio in questione prima di configurare la modalità demo.</translation>
 <translation id="532943162177641444">Tocca la notifica sul tuo <ph name="PHONE_NAME" /> per configurare l'hotspot mobile che può essere utilizzato per questo dispositivo.</translation>
@@ -2987,7 +3002,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> vorrebbe</translation>
 <translation id="5534304873398226603">Elimina foto o video</translation>
 <translation id="5535941515421698170">Rimuovi anche i dati esistenti da questo dispositivo</translation>
-<translation id="5537725057119320332">Trasmetti</translation>
 <translation id="5539221284352502426">La password inserita è stata rifiutata dal server. Alcune possibili cause sono: la password è troppo breve; la password deve includere numeri o simboli; la password deve essere diversa dalle password precedenti.</translation>
 <translation id="5541687815721799001">Utilizza l'app</translation>
 <translation id="5542132724887566711">Profilo</translation>
@@ -3296,7 +3310,6 @@
 <translation id="5997337190805127100">Ulteriori informazioni sull'accesso ai siti</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> risultati per "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Voci preferite</translation>
-<translation id="6005695835120147974">Media Router</translation>
 <translation id="6006484371116297560">Classico</translation>
 <translation id="6007240208646052708">La ricerca vocale nella tua lingua non è disponibile.</translation>
 <translation id="6009781704028455063">Sensore integrato</translation>
@@ -3496,7 +3509,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nuova stampante in rete}other{Nuove stampanti in rete}}</translation>
 <translation id="6286708577777130801">Dettagli password salvata</translation>
 <translation id="6289452883081499048">Servizi Google personalizzati come Play</translation>
-<translation id="6290556621549272952">Puoi utilizzare questa funzione per visualizzare i contenuti di Chromium alla TV o su altri dispositivi.</translation>
 <translation id="6291949900244949761">Chiedi conferma quando un sito vuole accedere ai dispositivi USB (consigliata)</translation>
 <translation id="6291953229176937411">Mo&amp;stra nel Finder</translation>
 <translation id="6295158916970320988">Tutti i siti</translation>
@@ -3560,6 +3572,7 @@
 <translation id="6395423953133416962">Invia <ph name="BEGIN_LINK1" />informazioni di sistema<ph name="END_LINK1" /> e <ph name="BEGIN_LINK2" />metriche<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Impedisci ai siti di usare i sensori di movimento</translation>
 <translation id="6397094776139756010">Opzioni di sincronizzazione e personalizzazione</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> potrà salvare le modifiche apportate direttamente sui file nella seguente cartella. Questo sito può salvare le modifiche soltanto mentre la scheda è aperta.</translation>
 <translation id="6398715114293939307">Rimuovi il Google Play Store</translation>
 <translation id="6398765197997659313">Esci da schermo intero</translation>
 <translation id="6399774419735315745">Spia</translation>
@@ -3604,11 +3617,13 @@
 <translation id="6455264371803474013">Su siti specifici</translation>
 <translation id="6455894534188563617">&amp;Nuova cartella</translation>
 <translation id="6456394469623773452">Accettabile</translation>
+<translation id="6456955391422100996">Annuncio rimosso.</translation>
 <translation id="645705751491738698">Continua a bloccare JavaScript</translation>
 <translation id="6458701200018867744">Caricamento non riuscito (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Utilizza selezione per Trova</translation>
 <translation id="6459799433792303855">Finestra attiva spostata in un altro schermo.</translation>
 <translation id="6460601847208524483">Trova successivo</translation>
+<translation id="6461170143930046705">Ricerca di reti...</translation>
 <translation id="6463795194797719782">&amp;Modifica</translation>
 <translation id="6466988389784393586">&amp;Apri tutti i Preferiti</translation>
 <translation id="6467304607960172345">Ottimizza video a schermo intero</translation>
@@ -3647,6 +3662,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">È attiva la connessione a una rete <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Condividi</translation>
 <translation id="6528513914570774834">Consenti ad altri utenti del dispositivo di usare questa rete</translation>
 <translation id="652948702951888897">Cronologia di Chrome</translation>
@@ -3743,7 +3759,6 @@
 <translation id="6680650203439190394">Velocità</translation>
 <translation id="6681668084120808868">Scatta foto</translation>
 <translation id="6681964764822470072">L'app "<ph name="APP_NAME" />" verrà disinstallata.</translation>
-<translation id="6685083257944113180">Ferma, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Apri Google Play</translation>
 <translation id="6686490380836145850">Chiudi schede a destra</translation>
 <translation id="6686817083349815241">Salva la password</translation>
@@ -3851,6 +3866,7 @@
 <translation id="6845038076637626672">Apri ingrandita</translation>
 <translation id="6845325883481699275">Contribuisci a migliorare la sicurezza di Chrome</translation>
 <translation id="6848388270925200958">Al momento hai delle carte che possono essere utilizzate solo da questo dispositivo.</translation>
+<translation id="6850286078059909152">Colore testo</translation>
 <translation id="6851497530878285708">App attivata</translation>
 <translation id="6853388645642883916">Programma di aggiornamento in sospensione</translation>
 <translation id="68541483639528434">Chiudi le altre schede</translation>
@@ -3900,7 +3916,6 @@
 <translation id="6923132443355966645">Scorri/fai clic</translation>
 <translation id="6923633482430812883">Errore durante il montaggio della condivisione. Verifica che il file server a cui vuoi collegarti supporti SMBv2 o versioni successive.</translation>
 <translation id="6930036377490597025">Token di sicurezza esterno o sensore integrato</translation>
-<translation id="6930242544192836755">Durata</translation>
 <translation id="693807610556624488">La scrittura supera la lunghezza massima dell'attributo per: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Accedi a <ph name="TOKEN_NAME" /> per autenticarti su <ph name="HOST_NAME" /> con il tuo certificato.</translation>
 <translation id="6943176775188458830">Annulla la stampa</translation>
@@ -3914,6 +3929,7 @@
 <translation id="6951153907720526401">Gestori dei pagamenti</translation>
 <translation id="6951663584153258142">La tua organizzazione richiede l'aggiornamento di questo dispositivo</translation>
 <translation id="6953878494808481632">Informazioni correlate</translation>
+<translation id="6953916367503892689">{0,plural, =1{File: <ph name="FILES" />}other{File: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Ispeziona popup</translation>
 <translation id="6957044667612803194">Questo token di sicurezza non supporta i PIN</translation>
 <translation id="6957231940976260713">Nome servizio</translation>
@@ -4126,7 +4142,6 @@
 <translation id="7254554697254365959">Impossibile tradurre questa pagina.</translation>
 <translation id="7254951428499890870">Avviare "<ph name="APP_NAME" />" in modalità diagnostica?</translation>
 <translation id="7255002516883565667">Al momento hai una carta che può essere utilizzata solo su questo dispositivo.</translation>
-<translation id="7255220508626648026">Trasmissione: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Tocca nuovamente il token di sicurezza per confermare la reimpostazione. Tutte le credenziali memorizzate sul token di sicurezza, nonché il suo PIN, verranno resettate.</translation>
 <translation id="7255935316994522020">Applica</translation>
 <translation id="7256069762010468647">Il sito sta usando la videocamera</translation>
@@ -4260,6 +4275,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Apri percorso...</translation>
 <translation id="7458168200501453431">Consente di utilizzare lo stesso controllo ortografico utilizzato nella Ricerca Google. Il testo che digiti nel browser viene inviato a Google.</translation>
+<translation id="7460045493116006516">Tema installato attualmente</translation>
 <translation id="7461924472993315131">Blocca</translation>
 <translation id="746216226901520237">La prossima volta potrai usare il tuo telefono per sbloccare il dispositivo <ph name="DEVICE_TYPE" />. Puoi disattivare Smart Lock nelle Impostazioni.</translation>
 <translation id="7463006580194749499">Aggiungi persona</translation>
@@ -4319,6 +4335,7 @@
 <translation id="7554791636758816595">Nuova scheda</translation>
 <translation id="7556033326131260574">Impossibile verificare il tuo account con Smart Lock. Digita la password per accedere.</translation>
 <translation id="7556242789364317684">Purtroppo <ph name="SHORT_PRODUCT_NAME" /> non può recuperare le tue impostazioni. Per correggere l'errore, <ph name="SHORT_PRODUCT_NAME" /> deve ripristinare il tuo dispositivo con Powerwash.</translation>
+<translation id="7559444627302317199">Controlla la connessione di rete e riprova.</translation>
 <translation id="7559719679815339381">Attendi... L'app kiosk è in fase di aggiornamento. Non rimuovere la chiavetta USB.</translation>
 <translation id="7561196759112975576">Sempre</translation>
 <translation id="7563991800558061108">Per risolvere il problema dovuto a questo errore, dovrai accedere al tuo Account Google dalla schermata di accesso. Dopodiché potrai uscire dal tuo Account Google e provare di nuovo a creare un utente supervisionato.</translation>
@@ -4559,7 +4576,6 @@
 <translation id="7887334752153342268">Duplica</translation>
 <translation id="7887864092952184874">Mouse Bluetooth accoppiato</translation>
 <translation id="7889565820482017512">Dimensioni di visualizzazione</translation>
-<translation id="7889966925761734854">Cerca</translation>
 <translation id="7893008570150657497">Accesso a foto, musica e altri contenuti multimediali dal computer</translation>
 <translation id="7893153962594818789">Il Bluetooth non è attivo su questo dispositivo <ph name="DEVICE_TYPE" />. Inserisci la password e attiva il Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (predefinito)</translation>
@@ -4567,7 +4583,6 @@
 <translation id="7898627924844766532">Mantieni in barra degli strumenti</translation>
 <translation id="7898725031477653577">Traduci sempre</translation>
 <translation id="790040513076446191">Modifica delle impostazioni relative alla privacy</translation>
-<translation id="7902874111237641165">Smooth motion [beta]</translation>
 <translation id="7903345046358933331">La pagina non risponde. Puoi aspettare che risponda oppure chiuderla.</translation>
 <translation id="7903742244674067440">Hai dei certificati su file che identificano queste autorità di certificazione</translation>
 <translation id="7903925330883316394">Utility: <ph name="UTILITY_TYPE" /></translation>
@@ -4679,6 +4694,7 @@
 <translation id="8037117027592400564">Lettura di tutto il testo pronunciato utilizzando la sintesi vocale</translation>
 <translation id="8037357227543935929">Chiedi (predefinita)</translation>
 <translation id="803771048473350947">Archivio</translation>
+<translation id="8042142357103597104">Opacità testo</translation>
 <translation id="8044899503464538266">Lento</translation>
 <translation id="8045253504249021590">La sincronizzazione è stata interrotta tramite Google Dashboard.</translation>
 <translation id="8045923671629973368">Inserisci l'ID applicazione o l'URL del webstore</translation>
@@ -4715,7 +4731,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Puoi disattivare questo servizio nelle Impostazioni.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">I PIN non corrispondono</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> usa le impostazioni proxy di un'estensione</translation>
-<translation id="8099495042588009598">Altre autorizzazioni</translation>
 <translation id="8101987792947961127">Powerwash necessario a prossimo riavvio</translation>
 <translation id="8102159139658438129">Vai alle <ph name="LINK_BEGIN" />Impostazioni<ph name="LINK_END" /> per visualizzare le opzioni disponibili per il tuo telefono collegato</translation>
 <translation id="8104696615244072556">Esegui il Powerwash del tuo dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> e torna alla versione precedente.</translation>
@@ -4766,8 +4781,10 @@
     Non credo che questo sito debba essere bloccato.</translation>
 <translation id="8184288427634747179">Passa al profilo <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Ulteriori informazioni</translation>
+<translation id="8184472985242519288">Uniforme</translation>
 <translation id="8185331656081929126">Mostra notifiche quando vengono rilevate nuove stampanti in rete</translation>
 <translation id="8186609076106987817">Impossibile trovare il file sul server.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> può leggere tutti i file nella seguente cartella. Questo sito può vedere le modifiche soltanto mentre la scheda è aperta.</translation>
 <translation id="8188389033983459049">Controlla le impostazioni sul dispositivo e attivalo per continuare</translation>
 <translation id="8190193592390505034">Connessione a <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Gestire applicazioni, estensioni e temi</translation>
@@ -4871,7 +4888,6 @@
 <translation id="833986336429795709">Scegli un'app per aprire il link</translation>
 <translation id="8342861492835240085">Seleziona una raccolta</translation>
 <translation id="834290227245955730">PIN non valido. Tentativi ancora disponibili: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Utilizza larghezza di banda elevata per garantire video o animazioni ottimali. Altri utenti con connessioni lente potrebbero non riuscire a vedere i tuoi contenuti.</translation>
 <translation id="8351419472474436977">Questa estensione ha assunto il controllo delle tue impostazioni proxy, il che significa che può cambiare, interrompere o spiare tutto ciò che fai online. Se non sei sicuro del motivo per cui si sia verificato questo cambiamento, è probabile che sia indesiderato.</translation>
 <translation id="8351630282875799764">La batteria non si ricarica</translation>
 <translation id="835238322900896202">Si è verificato un errore durante la disinstallazione. Esegui la disinstallazione tramite il terminale.</translation>
@@ -4904,9 +4920,11 @@
 <translation id="839736845446313156">Registrati</translation>
 <translation id="8398877366907290961">Procedi comunque</translation>
 <translation id="8400146488506985033">Gestisci utenti</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> può salvare le modifiche apportate direttamente sui file nella seguente cartella. Questo sito può salvare le modifiche soltanto mentre la scheda è aperta.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Chiedi prima (opzione consigliata)</translation>
 <translation id="8418445294933751433">&amp;Mostra come scheda</translation>
+<translation id="8418905021510211421">Questa pagina è autorizzata a leggere una cartella sul tuo dispositivo.</translation>
 <translation id="8419098111404128271">Risultati di ricerca per "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Ti diamo il benvenuto sul tuo <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Cambia</translation>
@@ -4926,6 +4944,7 @@
 <translation id="8438566539970814960">Migliora le ricerche e le attività di navigazione</translation>
 <translation id="8439506636278576865">Proponi di tradurre pagine in questa lingua</translation>
 <translation id="8440630305826533614">App Linux</translation>
+<translation id="844241640324986723">Impossibile eliminare i dati di accesso.</translation>
 <translation id="8443338615972234259">Crea subito un nuovo account per l'utente supervisionato.</translation>
 <translation id="8446884382197647889">Ulteriori informazioni</translation>
 <translation id="8447409163267621480">Includi CTRL o ALT</translation>
@@ -4941,8 +4960,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Questo utente supervisionato potrebbe essere stato eliminato o disattivato dal gestore. Contatta il gestore se desideri continuare ad accedere con questo utente.</translation>
 <translation id="846374874681391779">Barra dei download</translation>
-<translation id="8463807869745732775">"&gt;
-    Dati di accesso memorizzati sul token di sicurezza</translation>
 <translation id="8463955938112983119">Plug-in <ph name="PLUGIN_NAME" /> disabilitato.</translation>
 <translation id="8464132254133862871">Questo account utente non è idoneo per il servizio.</translation>
 <translation id="8465252176946159372">Non valido</translation>
@@ -5008,6 +5025,7 @@
 <translation id="8569002732135253578">Stampa di <ph name="DOCUMENT_NAME" /> in corso</translation>
 <translation id="8569682776816196752">Nessuna destinazione trovata</translation>
 <translation id="8571213806525832805">Ultime 4 settimane</translation>
+<translation id="8573403125070227391">Questo annuncio usa troppe risorse per il tuo dispositivo, pertanto Chrome l'ha rimosso.</translation>
 <translation id="8574990355410201600">Consenti sempre l'audio su <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Tieni premuto <ph name="KEY_EQUIVALENT" /> per uscire</translation>
 <translation id="8578639784464423491">Non può superare le 99 lettere</translation>
@@ -5031,13 +5049,13 @@
 <translation id="8609465669617005112">Sposta su</translation>
 <translation id="8610103157987623234">Formato errato, riprova</translation>
 <translation id="8615618338313291042">Applicazione in incognito: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Ombreggiatura</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Stato roaming</translation>
 <translation id="8620765578342452535">Configura connessioni di rete</translation>
 <translation id="8621866727807194849">È stato rilevato software dannoso sul tuo computer. Chrome lo rimuoverà, ripristinerà le tue impostazioni e disattiverà le estensioni. In questo modo verrà ripristinato il normale funzionamento del browser.</translation>
 <translation id="8621979332865976405">Condividi tutto lo schermo</translation>
 <translation id="862542460444371744">&amp;Estensioni</translation>
-<translation id="8627151598708688654">Seleziona fonte</translation>
 <translation id="862727964348362408">Sospeso</translation>
 <translation id="862750493060684461">Cache CSS</translation>
 <translation id="8627795981664801467">Solo connessioni protette</translation>
@@ -5091,6 +5109,7 @@
 <translation id="8688579245973331962">Non riesci a visualizzare il tuo nome?</translation>
 <translation id="8688591111840995413">Password non valida</translation>
 <translation id="8688672835843460752">Disponibile</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Apri &amp;percorso...</translation>
 <translation id="869884720829132584">Menu Applicazioni</translation>
 <translation id="869891660844655955">Data di scadenza</translation>
@@ -5254,6 +5273,7 @@
 <translation id="891365694296252935">Invia dati diagnostici e sull'utilizzo. Questo dispositivo attualmente invia a Google dati diagnostici e sull'utilizzo delle app e del dispositivo. Non verranno utilizzati per identificare tuo figlio e contribuiranno alla stabilità di app e sistema, nonché ad altri miglioramenti. Alcuni dati aggregati saranno utili anche alle app e ai partner di Google, ad esempio agli sviluppatori Android. Questa impostazione è applicata dal proprietario. Se l'impostazione Attività web e app aggiuntiva è attiva per tuo figlio, queste informazioni potrebbero essere salvate nel suo Account Google. <ph name="BEGIN_LINK1" />Ulteriori informazioni<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Caricamento suggerimento</translation>
 <translation id="8916476537757519021">Frame secondario modalità di navigazione in incognito: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - è autorizzato a leggere una cartella sul tuo dispositivo</translation>
 <translation id="8919275547519617350">Accedi e attiva la sincronizzazione per trovare tutte le tue password su tutti i dispositivi.</translation>
 <translation id="8921366488406707015">Verifica del token di sicurezza…</translation>
 <translation id="8922013791253848639">Consenti sempre gli annunci su questo sito</translation>
@@ -5283,7 +5303,6 @@
 <translation id="8965037249707889821">Inserisci vecchia password</translation>
 <translation id="8966870118594285808">Riapri una scheda chiusa accidentalmente</translation>
 <translation id="8967866634928501045">Premi ALT + MAIUSC + A per mostrare</translation>
-<translation id="8970203673128054105">Visualizza l'elenco della modalità di trasmissione</translation>
 <translation id="89720367119469899">Esc</translation>
 <translation id="8972513834460200407">Rivolgiti al tuo amministratore di rete per verificare che il firewall non blocchi i download dai server di Google.</translation>
 <translation id="8973557916016709913">Rimuovi livello di zoom</translation>
@@ -5432,6 +5451,7 @@
 <translation id="9214520840402538427">Spiacenti. L'inizializzazione degli attributi installation-time è scaduta. Contatta il tuo rappresentante dell'assistenza.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" aggiunta</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> potrà salvare le modifiche apportate direttamente sul file seguente. Questo sito può salvare le modifiche soltanto mentre la scheda è aperta.</translation>
 <translation id="9218430445555521422">Imposta come predefinito</translation>
 <translation id="9219103736887031265">Immagini</translation>
 <translation id="9220525904950070496">Rimuovi account</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index f342ea8..3817081 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">קרתה שגיאה בהפעלת המכונה הווירטואלית. יש לנסות שוב.</translation>
 <translation id="1089439967362294234">שינוי סיסמה</translation>
 <translation id="1090126737595388931">אין יישומים פועלים ברקע</translation>
+<translation id="1090290614672149983">לשמור את השינויים בקובץ מקורי?</translation>
 <translation id="1090918500949388876">‏גישה ל-Assistant בכל פעם שאומרים "Ok Google" כשהמסך מופעל</translation>
 <translation id="1091767800771861448">‏הקש ESCAPE כדי לדלג (גרסאות לא רשמיות בלבד).</translation>
 <translation id="1093457606523402488">רשתות גלויות:</translation>
 <translation id="1094607894174825014">פעולת קריאה או כתיבה התבקשה עם היסט לא חוקי במכשיר: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">לפני הכניסה לחשבון, היכנס כאורח כדי להפעיל את הרשת <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">לכרטיסייה זו יש הרשאה לשמור בקבצים מקוריים.</translation>
 <translation id="1103523840287552314">ברצוני לקבל תרגום מ<ph name="LANGUAGE" /> תמיד</translation>
 <translation id="1108600514891325577">&amp;הפסק</translation>
 <translation id="1110155001042129815">המתן</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">משקפי שמש</translation>
 <translation id="1151917987301063366">לאפשר תמיד ל-<ph name="HOST" /> לגשת אל חיישנים</translation>
 <translation id="1153356358378277386">מכשירים מותאמים</translation>
-<translation id="1156488781945104845">שעה נוכחית</translation>
 <translation id="1161575384898972166">היכנס אל <ph name="TOKEN_NAME" /> כדי לייצא את אישור הלקוח.</translation>
 <translation id="1163931534039071049">&amp;צפה במקור המסגרת</translation>
 <translation id="1164674268730883318">‏האם לכבות את Smart Lock ב-<ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">‏הגדרות אחסון של Adobe Flash Player</translation>
 <translation id="1274997165432133392">‏קובצי Cookie ונתוני אתר נוספים</translation>
 <translation id="127668050356036882">סגור את כל החלונות</translation>
-<translation id="1277908057200820621">הצג את רשימת המכשירים</translation>
 <translation id="1280820357415527819">מחפש רשתות סלולריות</translation>
 <translation id="1285320974508926690">איני רוצה לקבל תרגום של אתר זה</translation>
 <translation id="1285484354230578868">‏אחסן נתונים בחשבון Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">רשת ביתית, לא בנדידה</translation>
 <translation id="1316136264406804862">מחפש...</translation>
 <translation id="1316495628809031177">הסינכרון הושהה</translation>
+<translation id="1317637799698924700">‏תחנת העגינה תעבוד במצב התואם ל-USB-C.</translation>
 <translation id="1322046419516468189">הצגה וניהול של סיסמאות שמורות במסגרת <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">‏כדי לקבל את הכרטיסיות מהמכשירים האחרים שלך, יש להיכנס ל-Chrome.</translation>
 <translation id="1327074568633507428">‏מדפסת ב-Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />הדפדפן שלך מנוהל<ph name="END_LINK" /> על ידי <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">‏הפעלת כלים, עורכים וסביבות פיתוח משולבות (IDE) של Linux ב-<ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;מידע נוסף&lt;/a&gt;</translation>
 <translation id="1367951781824006909">בחר קובץ</translation>
+<translation id="1370749010280229230">יש בעיה בצג המחובר אל אביזר העגינה</translation>
 <translation id="1371301976177520732">הסימניות, הסיסמאות, ההיסטוריה ונתונים נוספים שלך - בכל המכשירים שברשותך</translation>
 <translation id="1372841398847029212">סנכרון עם החשבון שלך</translation>
 <translation id="1374844444528092021">האישור הנדרש על ידי הרשת "<ph name="NETWORK_NAME" />" אינו מותקן או שכבר אינו חוקי. קבל אישור חדש ונסה להתחבר שוב.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">דף אינטרנט, קובץ אחד</translation>
 <translation id="1451917004835509682">הוספת משתמש בפיקוח</translation>
 <translation id="1454223536435069390">צלם מסך</translation>
+<translation id="1458243790901188746">{0,plural, =1{תיקייה: <ph name="DIRECTORIES" />}two{תיקיות: <ph name="DIRECTORIES" />}many{תיקיות: <ph name="DIRECTORIES" />}other{תיקיות: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">התוספים הוסיפו מנועי חיפוש</translation>
 <translation id="146000042969587795">מסגרת זו נחסמה משום שהיא מכילה תוכן לא בטוח.</translation>
 <translation id="146219525117638703">‏מצב ONC</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">הצג אפשרויות קלט</translation>
 <translation id="1651008383952180276">עליך להזין אותו ביטוי סיסמה פעמיים</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{‏הוסף את המדפסת אל Google Cloud Print כך שתוכל להדפיס מכל מקום.}two{‏הוסף # מדפסות אל Google Cloud Print כך שתוכל להדפיס מכל מקום.}many{‏הוסף # מדפסות אל Google Cloud Print כך שתוכל להדפיס מכל מקום.}other{‏הוסף # מדפסות אל Google Cloud Print כך שתוכל להדפיס מכל מקום.}}</translation>
+<translation id="1656528038316521561">שקיפות רקע</translation>
 <translation id="1657406563541664238">‏עזור להפוך את <ph name="PRODUCT_NAME" /> לטוב יותר, על ידי שליחה אוטומטית של נתוני שימוש ודוחות קריסה אל Google</translation>
 <translation id="1658424621194652532">דף זה ניגש למיקרופון שלך.</translation>
 <translation id="1660204651932907780">מתן הרשאה לאתרים להשמיע צלילים (מומלץ)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546">האתר <ph name="URL" /> מבקש לראות את היצרן והדגם של מפתח האבטחה שלך</translation>
 <translation id="1679068421605151609">כלים עבור מפתחים</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">לצאת?</translation>
 <translation id="167983332380191032">‏שירות הניהול שלח שגיאת HTTP.</translation>
 <translation id="1680849702532889074">‏קרתה שגיאה במהלך ההתקנה של אפליקציית Linux.</translation>
 <translation id="16815041330799488">אין להתיר לאתרים לגשת לטקסט ותמונות שהועתקו ללוח</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">מזהה מדיה מוגנת</translation>
 <translation id="175196451752279553">פ&amp;תח מחדש את הכרטיסייה הסגורה</translation>
 <translation id="1753905327828125965">עם המבקרים הרבים ביותר</translation>
+<translation id="1755601632425835748">גודל טקסט</translation>
 <translation id="1756681705074952506">שיטת קלט</translation>
 <translation id="1757301747492736405">הסרת ההתקנה נמצאת במצב המתנה</translation>
 <translation id="175772926354468439">הפעל עיצוב</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">&amp;קטן יותר</translation>
 <translation id="1919345977826869612">מודעות</translation>
 <translation id="1919814239594435008">פלאגין ללא ארגז חול הותר</translation>
+<translation id="1920390473494685033">אנשי קשר</translation>
 <translation id="1921050530041573580">‏התאמת הטלפון ל-Messages</translation>
 <translation id="1921584744613111023">‏dpi‏ <ph name="DPI" /></translation>
 <translation id="1924559387127953748">‏ליהנות מהיכולות החכמות של Google ב-<ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">כרטיסיית גלישה בסתר: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> ב-<ph name="PEPPER_PLUGIN_DOMAIN" /> רוצה גישה למחשב שלך</translation>
 <translation id="2178614541317717477">‏רשות האישורים (CA) בסכנה</translation>
+<translation id="2179849162388791084">איסוף נתוני כניסה ממפתח האבטחה שלך נכשל.</translation>
 <translation id="218070003709087997">ציין את מספר העותקים שיש להדפיס (1 עד 999).</translation>
 <translation id="2184515124301515068">‏Chrome יקבע מתי אתרים יכולים להפעיל צלילים (מומלץ)</translation>
 <translation id="2187895286714876935">שגיאת ייבוא של אישור שרת</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">‏כל קובצי ה-Cookie ונתוני האתר</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{פריט אחד הועתק}two{# פריטים הועתקו}many{# פריטים הועתקו}other{# פריטים הועתקו}}</translation>
 <translation id="2278562042389100163">פתח חלון דפדפן</translation>
-<translation id="2279874276457403668">אפשר ליצור הפעלה אחת בלבד בכל פעם.</translation>
 <translation id="2280486287150724112">שוליים ימניים</translation>
 <translation id="2282146716419988068">‏תהליך GPU</translation>
 <translation id="2282155092769082568">כתובת אתר של תצורה אוטומטית:</translation>
@@ -872,7 +879,7 @@
 <translation id="2294358108254308676">האם ברצונך להתקין את <ph name="PRODUCT_NAME" />?</translation>
 <translation id="2297705863329999812">חפש מדפסות</translation>
 <translation id="2300383962156589922">התאמה אישית ושליטה ב-<ph name="APP_NAME" /></translation>
-<translation id="2300800387751317588">‏הסנכרון מושהה כי קובצי ה-cookie נמחקים בעת ההפעלה. יש לשנות את <ph name="COOKIE_SETTINGS_LINK" /> כדי להמשיך לסנכרן.</translation>
+<translation id="2300800387751317588">‏הסנכרון מושהה כי קובצי ה-cookie נמחקים בהפעלה. יש לשנות את <ph name="COOKIE_SETTINGS_LINK" /> כדי להמשיך לסנכרן.</translation>
 <translation id="2301382460326681002">ספריית הבסיס של ההרחבה אינה חוקית.</translation>
 <translation id="23030561267973084">"<ph name="EXTENSION_NAME" />" ביקש אישורים נוספים.</translation>
 <translation id="2307462900900812319">הגדר את הרשת</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">הערות שנכתבות כשמסך הנעילה פועל נשמרות באופן אוטומטי ב-<ph name="LOCK_SCREEN_APP_NAME" />. ההערה האחרונה שכתבת תמשיך להופיע במסך הנעילה.</translation>
 <translation id="2353297238722298836">ניתן להשתמש בדף זה במצלמה ובמיקרופון</translation>
 <translation id="2356070529366658676">שאל</translation>
-<translation id="2357949918965361754">‏אפשר להשתמש בתכונה זו להצגת תוכן מ-Chrome בטלוויזיה או במכשירים אחרים.</translation>
 <translation id="2359345697448000899">נהל את התוספים שלך באמצעות לחיצה על 'תוספים' בתפריט כלים.</translation>
 <translation id="2359808026110333948">המשך</translation>
 <translation id="236117173274098341">אופטימיזציה</translation>
@@ -962,6 +968,7 @@
 <translation id="2436720498717686157">הארגון שלך דורש לעדכן את המכשיר הזה מיד</translation>
 <translation id="2439545803278355377">יש להזין את קוד האימות החדש. קוד אימות חייב להיות באורך ארבעה תווים לפחות, ויכול לכלול אותיות, מספרים ותווים אחרים.</translation>
 <translation id="2440604414813129000">צפה &amp;במקור</translation>
+<translation id="2442916515643169563">צללית טקסט</translation>
 <translation id="2444119669991608829">הדף לא ב<ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">ספריית הבסיס של ההרחבה נחוצה.</translation>
 <translation id="2445484935443597917">יצירת פרופיל חדש</translation>
@@ -1177,6 +1184,7 @@
 <translation id="2738771556149464852">לא אחרי</translation>
 <translation id="2739191690716947896">ניפוי באגים</translation>
 <translation id="2739240477418971307">שינוי הגדרות הנגישות שלך</translation>
+<translation id="274029851662193272">שקוע</translation>
 <translation id="2740393541869613458">סקירת אתרים שהמשתמש המבוקר ביקר בהם, וכן</translation>
 <translation id="2741912629735277980">הצגת ממשק המשתמש במסך ההתחברות</translation>
 <translation id="274290345632688601">‏שחזור קבצים ואפליקציות של Linux</translation>
@@ -1225,6 +1233,7 @@
 <translation id="2806891468525657116">קיצור הדרך כבר קיים</translation>
 <translation id="2807517655263062534">קבצים שתוריד יופיעו כאן</translation>
 <translation id="2809586584051668049">ועוד <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">‏Thunderbolt אינו נתמך</translation>
 <translation id="2812944337881233323">נסה לצאת ולהיכנס שוב</translation>
 <translation id="2812989263793994277">אל תציג אף תמונה</translation>
 <translation id="281390819046738856">לא ניתן לחתום על הבקשה.</translation>
@@ -1247,7 +1256,6 @@
 <translation id="2841837950101800123">ספק</translation>
 <translation id="2844169650293029770">‏מכשיר עם יציאת USB-C (יציאה שמאלית-קדמית)</translation>
 <translation id="2845382757467349449">הצג תמיד את סרגל הסימניות</translation>
-<translation id="2847759467426165163">העברה אל</translation>
 <translation id="284805635805850872">להסיר את התוכנה המזיקה?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">הניקוי נכשל</translation>
@@ -1294,6 +1302,7 @@
 הודעת שרת: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">הוספת גלריית מדיה לפי ספריה</translation>
 <translation id="2910318910161511225">יש להתחבר לרשת ולנסות שוב</translation>
+<translation id="2910518940971897750">שמירה בקובץ מקורי</translation>
 <translation id="2913331724188855103">‏אתרים יוכלו לשמור ולקרוא נתונים של קובצי Cookie (מומלץ)</translation>
 <translation id="2915102088417824677">הצגת יומן הפעילות</translation>
 <translation id="2915873080513663243">סריקה אוטומטית</translation>
@@ -1358,12 +1367,14 @@
 <translation id="3013291976881901233">‏התקני MIDI</translation>
 <translation id="3015639418649705390">הפעלה מחדש עכשיו</translation>
 <translation id="3016329696181678353">לא ניתן להגדיר את <ph name="PRINTER_NAME" /> באופן אוטומטי. יש לקבוע את ההגדרות המתקדמות של המדפסת.</translation>
+<translation id="3016381065346027039">אין רשומות ביומן</translation>
 <translation id="3016641847947582299">הרכיב עודכן</translation>
 <translation id="3016780570757425217">לדעת מה המיקום שלך</translation>
 <translation id="3017079585324758401">רקע</translation>
 <translation id="3020183492814296499">קיצורים</translation>
 <translation id="3020990233660977256">מספר סידורי: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">פרפר</translation>
+<translation id="3021408157810018664">לשמור שינויים בקבצים מקוריים?</translation>
 <translation id="3021426244864538700">גישה לנתוני האתר הזה</translation>
 <translation id="3021678814754966447">&amp;הצג את מקור המסגרת</translation>
 <translation id="3022978424994383087">ההודעה שלך לא ברורה.</translation>
@@ -1456,6 +1467,7 @@
 <translation id="3170072451822350649">ניתן גם לדלג על הכניסה ו<ph name="LINK_START" />לגלוש כאורח<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">אתר ניגש אל קלט וידאו</translation>
 <translation id="3177909033752230686">שפת הדף:</translation>
+<translation id="3179982752812949580">גופן הטקסט</translation>
 <translation id="3181954750937456830">גלישה בטוחה (מגנה עליך ועל המכשיר מפני אתרים מסוכנים)</translation>
 <translation id="3182749001423093222">בדיקת איות</translation>
 <translation id="3183139917765991655">מייבא פרופילים</translation>
@@ -1508,7 +1520,6 @@
 <translation id="3275778913554317645">פתח כחלון</translation>
 <translation id="3278001907972365362">‏כדאי לבדוק אם צריך לבצע פעולה כלשהי בחשבונות Google שלך</translation>
 <translation id="3279230909244266691">הפעולה עשויה להימשך מספר דקות. מתבצעת הפעלה של המכונה הווירטואלית.</translation>
-<translation id="3279741024917655738">הצגת סרטונים במסך מלא פועלת</translation>
 <translation id="3280237271814976245">שמור &amp;בשם...</translation>
 <translation id="3280243678470289153">‏להישאר ב-Chrome</translation>
 <translation id="3281892622610078515">קבצים ותוכנות שיש להעביר להסגר:</translation>
@@ -1530,7 +1541,7 @@
 <translation id="3303855915957856445">לא נמצאו תוצאות חיפוש</translation>
 <translation id="3305389145870741612">תהליך הפרמוט עשוי להימשך מספר שניות. אנא המתן.</translation>
 <translation id="3305661444342691068">‏פתח PDF בתצוגה מקדימה</translation>
-<translation id="3306684685104080068">‏הפעלת העברה לשירותים מבוססי ענן כמו Google Hangouts.</translation>
+<translation id="3307871847038842490">דף זה מורשה לשמור בקבצים מקוריים.</translation>
 <translation id="3308006649705061278">‏יחידה ארגונית (OU)</translation>
 <translation id="3308116878371095290">‏לא ניתן להגדיר קובצי Cookie לדף זה.</translation>
 <translation id="3308134619352333507">לחצן 'הסתר'</translation>
@@ -1636,7 +1647,6 @@
 <translation id="3462413494201477527">האם לבטל את הגדרת החשבון?</translation>
 <translation id="3464012987031883895">אתר ניגש אל קלט אודיו</translation>
 <translation id="346431825526753">זהו חשבון לילדים, המנוהל על-ידי <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">העברת קובץ וידאו או אודיו בסטרימינג</translation>
 <translation id="3468999815377931311">‏טלפון Android</translation>
 <translation id="3470442499439619530">הסר משתמש זה</translation>
 <translation id="3473479545200714844">מגדיל התצוגה</translation>
@@ -1659,6 +1669,7 @@
 <translation id="3496213124478423963">התרחק</translation>
 <translation id="3497560059572256875">שיתוף הדודל</translation>
 <translation id="3505030558724226696">בטל גישה למכשירים</translation>
+<translation id="3505635633742443645">‏אי אפשר להשתמש ביציאת ה-HDMI של אביזר העגינה כשנעשה שימוש ביציאת USB-C לפלט וידאו. יש לחבר את אחד מהצגים אל יציאה שונה.</translation>
 <translation id="3507421388498836150">הרשאות נוכחיות של "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">‏סריקה חוזרת לאיתור מכשירי Bluetooth</translation>
 <translation id="3508920295779105875">בחר תיקייה אחרת...</translation>
@@ -1711,6 +1722,7 @@
 <translation id="3576324189521867626">הותקן בהצלחה</translation>
 <translation id="3578594933904494462">התוכן בכרטיסייה הזו משותף.</translation>
 <translation id="357886715122934472">‏&lt;strong&gt;‏<ph name="SENDER" />&lt;/strong&gt; רוצה לשתף את המדפסת &lt;strong&gt;‏<ph name="PRINTER_NAME" />&lt;/strong&gt; עם קבוצה בבעלותך: &lt;strong&gt;‏<ph name="GROUP_NAME" />&lt;/strong&gt;. אם תסכים, כל חברי הקבוצה יוכלו להדפיס במדפסת זו.</translation>
+<translation id="357889014807611375">‏Wi-Fi עם חיוב לפי שימוש בנתונים</translation>
 <translation id="3584169441612580296">לקרוא ולשנות קובצי תמונות, מוזיקה ומדיה מסוגים נוספים מהמחשב שלך</translation>
 <translation id="3587482841069643663">הכל</translation>
 <translation id="358796204584394954">הקלד את הקוד הזה ב-"<ph name="DEVICE_NAME" />" כדי לבצע התאמה:</translation>
@@ -1721,6 +1733,7 @@
 <translation id="359283478042092570">הזן</translation>
 <translation id="3593965109698325041">מגבלות שם אישור </translation>
 <translation id="3596235046596950091">הפעלת שירותי ענן</translation>
+<translation id="3599221874935822507">בולט</translation>
 <translation id="3599863153486145794">‏ניקוי ההיסטוריה מכל המכשירים שבהם המשתמש נכנס לחשבון. ייתכן שלחשבון Google שלך יהיו צורות אחרות של היסטוריית גלישה בכתובת <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">פרטי בקשת אינטרנט</translation>
 <translation id="3600792891314830896">השתקת אתרים שמשמיעים צלילים</translation>
@@ -1735,6 +1748,7 @@
 <translation id="3612673635130633812">‏ההורדה בוצעה באמצעות &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">הצג את <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;פתח בכרטיסייה חדשה</translation>
+<translation id="3615073365085224194">יש לגעת עם האצבע בחיישן טביעת האצבע</translation>
 <translation id="3616113530831147358">אודיו</translation>
 <translation id="3616741288025931835">&amp;נקה נתוני גלישה...</translation>
 <translation id="3617891479562106823">רקעים אינם זמינים. צריך לנסות שוב מאוחר יותר.</translation>
@@ -1816,7 +1830,6 @@
 <translation id="3719826155360621982">דף הבית</translation>
 <translation id="3720996970802414353">אני רוצה לעבור בכל זאת</translation>
 <translation id="3722108462506185496">קרתה שגיאה בהפעלת שירות המכונה הווירטואלית. צריך לנסות שוב.</translation>
-<translation id="3723158278575423087">‏ברוכים הבאים לחוויה של העברה ב-Chromium.</translation>
 <translation id="3725367690636977613">דפים</translation>
 <translation id="3726137731714254362">הסרת תיקיות מכאן תגרום להפסקת השיתוף, אבל לא למחיקה של קבצים.</translation>
 <translation id="3727148787322499904">שינוי של הגדרה זו ישפיע על כל הרשתות המשותפות</translation>
@@ -1851,7 +1864,6 @@
 <translation id="3764314093345384080">מידע מפורט על הגרסה</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{‏תקשורת עם מכשיר USB אחד}two{‏תקשורת עם # מכשירי USB}many{‏תקשורת עם # מכשירי USB}other{‏תקשורת עם # מכשירי USB}}</translation>
 <translation id="3765246971671567135">לא ניתן לקרוא מדיניות של מצב הדגמה לא מקוון.</translation>
-<translation id="3766223500670287046">מסך מרוחק</translation>
 <translation id="3768037234834996183">מסנכרן את ההעדפות שלך...</translation>
 <translation id="377050016711188788">גלידה</translation>
 <translation id="3771294271822695279">קובצי וידאו</translation>
@@ -1924,7 +1936,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">להרים ולגעת בחיישן שוב</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: הסינכרון הושהה</translation>
-<translation id="3862134173397075045">‏ברוכים הבאים לחוויה של העברה ב-Chrome!</translation>
 <translation id="3862693525629180217">אימות באמצעות חיישן מובנה</translation>
 <translation id="3862788408946266506">‏במצב קיוסק של Chrome OS, יש להתקין אפליקציות עם מאפיין המניפסט 'kiosk_only'</translation>
 <translation id="3865414814144988605">רזולוציה</translation>
@@ -1973,6 +1984,7 @@
 <translation id="3926002189479431949">‏הטלפון המשמש ל-Smart Lock הוחלף</translation>
 <translation id="3927932062596804919">דחה</translation>
 <translation id="3930737994424905957">חיפוש מכשירים</translation>
+<translation id="3930968231047618417">צבע רקע</translation>
 <translation id="3933283459331715412">שחזור הסיסמה של <ph name="USERNAME" /> שנמחקה</translation>
 <translation id="3936390757709632190">&amp;פתח שמע בכרטיסייה חדשה</translation>
 <translation id="3936925983113350642">הסיסמה שבחרת תידרש כדי לשחזר את האישור הזה מאוחר יותר. תעד אותה במקום בטוח.</translation>
@@ -1992,6 +2004,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">‏מיובא מ-IE</translation>
 <translation id="3950820424414687140">כניסה</translation>
+<translation id="3950828138786918475">לכרטיסייה הזו יש הרשאה לקרוא תיקייה במכשיר שלך.</translation>
 <translation id="3954354850384043518">מתבצע</translation>
 <translation id="3954469006674843813">‏<ph name="HEIGHT" />x<ph name="WIDTH" /> (<ph name="REFRESH_RATE" /> הרץ)</translation>
 <translation id="3954953195017194676">‏אין לך יומנים של אירועי WebRTC שתועדו לאחרונה.</translation>
@@ -2010,6 +2023,7 @@
 <translation id="397105322502079400">מחשב...</translation>
 <translation id="3975565978598857337">יצירת הקשר עם השרת של התחום נכשלה</translation>
 <translation id="397703832102027365">מסיים...</translation>
+<translation id="3977886311744775419">הורדה של עדכונים אוטומטיים לא יכולה להתבצע בסוג הרשת הזה, אבל אפשר לבדוק ידנית אם יש עדכונים.</translation>
 <translation id="3979395879372752341">תוסף חדש נוסף (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">הפעל את <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">הוזן סוג שמירה לא חוקי.</translation>
@@ -2130,7 +2144,7 @@
 <translation id="4147911968024186208">אפשר לנסות שוב. אם השגיאה הזאת ממשיכה להופיע, ניתן לפנות לנציג התמיכה.</translation>
 <translation id="4150125039112138020">|</translation>
 <translation id="4150201353443180367">תצוגה</translation>
-<translation id="4150234330364554482">‏כדי לעבוד עם התכונה הזו ב-Chromebook יש להשתמש באביזר עגינה של ה-OEM (יצרן הציוד המקורי).</translation>
+<translation id="4150234330364554482">‏כדי לעבוד עם התכונה הזו ב-Chromebook יש להשתמש בתחנת עגינה של ה-OEM (יצרן הציוד המקורי).</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{כרטיסייה אחת}two{# כרטיסיות}many{# כרטיסיות}other{# כרטיסיות}}</translation>
 <translation id="4154664944169082762">טביעות אצבע</translation>
 <translation id="4157869833395312646">Microsoft Server Gated Cryptography</translation>
@@ -2149,6 +2163,7 @@
 <translation id="4194570336751258953">הפעלת האפשרות 'נגיעה קלה'</translation>
 <translation id="4195643157523330669">פתיחה בכרטיסייה חדשה</translation>
 <translation id="4195814663415092787">המשך מהמקום שבו הפסקת</translation>
+<translation id="4197940474316761015">ל-<ph name="ORIGIN" /> יש הרשאה לשמור את השינויים שלך ישירות בקבצים הבאים. האתר הזה יכול לשמור שינויים רק כשהכרטיסייה הזו פתוחה.</translation>
 <translation id="4198146608511578238">‏כדי לדבר אל Google Assistant, לחץ לחיצה ארוכה על הסמל של מרכז האפליקציות.</translation>
 <translation id="4200689466366162458">מילים מותאמות אישית</translation>
 <translation id="4200983522494130825">&amp;כרטיסייה חדשה</translation>
@@ -2196,7 +2211,6 @@
 <translation id="4267953847983678297">התחברות אוטומטית אל רשת סלולרית</translation>
 <translation id="4268025649754414643">קידוד מפתח</translation>
 <translation id="4270393598798225102">גרסה <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">אין התאמות</translation>
 <translation id="4275663329226226506">מדיה</translation>
 <translation id="4275830172053184480">הפעלת המכשיר מחדש</translation>
 <translation id="4278101229438943600">‏ה-Assistant מוכן</translation>
@@ -2345,6 +2359,7 @@
 <translation id="4533985347672295764">‏זמן CPU (יחידת עיבוד מרכזית)</translation>
 <translation id="4534661889221639075">יש לנסות שוב.</translation>
 <translation id="4535127706710932914">פרופיל ברירת מחדל</translation>
+<translation id="4535767533210902251">חיישן טביעת האצבע נמצא במקש הימני העליון במקלדת. יש לגעת בו בעדינות באחת האצבעות.</translation>
 <translation id="4538684596480161368">חסום תמיד יישומי פלאגין ללא ארגז חול ב-<ph name="HOST" /></translation>
 <translation id="4538792345715658285">מותקן לפי מדיניות של ארגון.</translation>
 <translation id="4542520061254486227">קריאת הנתונים שלך באתרים <ph name="WEBSITE_1" /> ו-<ph name="WEBSITE_2" /></translation>
@@ -2378,6 +2393,7 @@
 <translation id="457386861538956877">עוד...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">‏התאמת מכשיר Bluetooth</translation>
+<translation id="4578012756826807359">פרטי הכניסה שלך נמחקו בהצלחה.</translation>
 <translation id="4579581181964204535">לא ניתן להעביר את <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">‏שגיאה בזמן השחזור של Linux</translation>
 <translation id="4582563038311694664">אפס את כל ההגדרות</translation>
@@ -2495,7 +2511,6 @@
 <translation id="4763830802490665879">‏קובצי Cookie מאתרים מרובים יימחקו בעת היציאה.</translation>
 <translation id="4765582662863429759">‏מאפשר ל-Android Messages להעביר הודעות טקסט מהטלפון אל ה-Chromebook</translation>
 <translation id="4768332406694066911">יש לך אישורים מארגונים אלה שמזהים אותך</translation>
-<translation id="4772404146526168240">שני המסכים</translation>
 <translation id="4776146737004271126">‏פתיחת הגדרות Android</translation>
 <translation id="4776917500594043016">סיסמה עבור <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">‏חנות Play</translation>
@@ -2603,7 +2618,6 @@
 <translation id="4927846293686536410">‏יש להיכנס כדי לקבל גישה לסימניות, להיסטוריה, לסיסמאות ולהגדרות נוספות בכל המכשירים שברשותך. בנוסף, תהיה לך גישה אוטומטית לשירותי Google.</translation>
 <translation id="4929386379796360314">יעדי הדפסה</translation>
 <translation id="4930714375720679147">הפעלה</translation>
-<translation id="4931132176527519925">יש להשתמש תמיד בשיקוף</translation>
 <translation id="4932733599132424254">תאריך</translation>
 <translation id="4933484234309072027">מוטבע ב-<ph name="URL" /></translation>
 <translation id="493571969993549666">הוסף משתמש בפיקוח</translation>
@@ -2643,6 +2657,7 @@
 <translation id="4992066212339426712">בטל השתקה</translation>
 <translation id="4992458225095111526">‏אשר פעולת Powerwash</translation>
 <translation id="4992473555164495036">מנהל המערכת הגביל את שיטות הקלט הזמינות.</translation>
+<translation id="4992866843815555470">יש לבדוק את אביזר העגינה. ללא מאוורר תקין, אביזר העגינה יכבה.</translation>
 <translation id="4992926179187649719">‏הפעלת 'Ok Google'</translation>
 <translation id="4994474651455208930">אפשר לאתרים לבקש להפוך למטפלי ברירת המחדל עבור פרוטוקולים</translation>
 <translation id="4994754230098574403">בתהליך הגדרה</translation>
@@ -2781,7 +2796,6 @@
 <translation id="5233231016133573565">זיהוי תהליך</translation>
 <translation id="5233638681132016545">כרטיסייה חדשה</translation>
 <translation id="5233736638227740678">&amp;הדבק</translation>
-<translation id="5234764350956374838">סגור</translation>
 <translation id="5235050375939235066">להסיר את התקנת האפליקציה?</translation>
 <translation id="5235750401727657667">החלפת הדף שמוצג בפתיחה של כרטיסייה חדשה</translation>
 <translation id="5238278114306905396">היישום "<ph name="EXTENSION_NAME" />" הוסר באופן אוטומטי.</translation>
@@ -2846,6 +2860,7 @@
 <translation id="5319359161174645648">‏Google ממליצה על Chrome</translation>
 <translation id="532247166573571973">ייתכן שהשרת אינו נגיש. נסה שוב מאוחר יותר.</translation>
 <translation id="5324780743567488672">היעזר במיקום להגדרה אוטומטית של אזור הזמן</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> — מורשה לשמור בקבצים מקוריים</translation>
 <translation id="5327248766486351172">שם</translation>
 <translation id="5327570636534774768">המכשיר הזה מסומן כמנוהל על ידי דומיין אחר. צריך לבטל את ניהול התצורה שלו מהדומיין הזה לפני ההגדרה של מצב ההדגמה.</translation>
 <translation id="532943162177641444">הקש על ההודעה בטלפון <ph name="PHONE_NAME" /> כדי להגדיר את הנקודה לשיתוף אינטרנט בנייד שבה המכשיר הזה יכול להשתמש.</translation>
@@ -2962,7 +2977,7 @@
 <translation id="5496587651328244253">ארגון</translation>
 <translation id="549673810209994709">לא ניתן היה לתרגם את הדף הזה.</translation>
 <translation id="5499313591153584299">קובץ זה עלול להסב נזק למחשב שלך.</translation>
-<translation id="5500345327355928305">‏כדי להימנע מבעיות בטעינה ובביצועים, יש להשתמש במתאם מתח מסוג USB C של ה-OEM (יצרן הציוד המקורי).</translation>
+<translation id="5500345327355928305">‏כדי להימנע מבעיות בטעינה ובביצועים, יש להשתמש במתאם מתח תואם של ה-OEM (יצרן הציוד המקורי), או מסוג USB-C.</translation>
 <translation id="5502500733115278303">‏מיובא מ-Firefox</translation>
 <translation id="5507756662695126555">אי התכחשות</translation>
 <translation id="5509693895992845810">שמור &amp;כ...</translation>
@@ -2988,7 +3003,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> מבקש</translation>
 <translation id="5534304873398226603">מחיקת תמונה או סרטון</translation>
 <translation id="5535941515421698170">הסר גם את הנתונים הקיימים שלך ממכשיר זה</translation>
-<translation id="5537725057119320332">העברה</translation>
 <translation id="5539221284352502426">השרת דחה את הסיסמה שהזנת. סיבות אפשריות לכך: הסיסמה קצרה מדי; הסיסמה חייבת לכלול ספרות או סמלים; הסיסמה לא יכולה להיות זהה לסיסמה שכבר השתמשת בה בעבר.</translation>
 <translation id="5541687815721799001">להשתמש באפליקציה</translation>
 <translation id="5542132724887566711">פרופיל</translation>
@@ -3297,7 +3311,6 @@
 <translation id="5997337190805127100">מידע נוסף על גישה לאתרים</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> תוצאות בשביל '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="6002458620803359783">קולות מועדפים</translation>
-<translation id="6005695835120147974">נתב מדיה</translation>
 <translation id="6006484371116297560">קלאסי</translation>
 <translation id="6007240208646052708">לא ניתן לבצע חיפוש קולי בשפה שלך.</translation>
 <translation id="6009781704028455063">חיישן מובנה</translation>
@@ -3497,7 +3510,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{מדפסת חדשה ברשת שלך}two{מדפסות חדשות ברשת שלך}many{מדפסות חדשות ברשת שלך}other{מדפסות חדשות ברשת שלך}}</translation>
 <translation id="6286708577777130801">פרטי סיסמה שמורה</translation>
 <translation id="6289452883081499048">‏שירותי Google מותאמים אישית, כמו Play</translation>
-<translation id="6290556621549272952">‏ניתן להשתמש בתכונה זו להצגת תוכן מ-Chromium בטלוויזיה או במכשירים אחרים.</translation>
 <translation id="6291949900244949761">‏צריך לבקש ממני אישור כשאתר רוצה לגשת למכשירי USB (מומלץ)</translation>
 <translation id="6291953229176937411">‏&amp;הצג ב-Finder</translation>
 <translation id="6295158916970320988">כל האתרים</translation>
@@ -3561,6 +3573,7 @@
 <translation id="6395423953133416962">שלח <ph name="BEGIN_LINK1" />פרטי מערכת<ph name="END_LINK1" /> ו<ph name="BEGIN_LINK2" />ערכים<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">חסימת הגישה של אתרים אל חיישני תנועה</translation>
 <translation id="6397094776139756010">אפשרויות סינכרון והתאמה אישית</translation>
+<translation id="6397449385184089588">ל-<ph name="ORIGIN" /> תהיה אפשרות לשמור את השינויים שלך ישירות בקבצים שבתיקייה הבאה. האתר הזה יכול לשמור שינויים רק כשהכרטיסייה הזו פתוחה.</translation>
 <translation id="6398715114293939307">‏הסרה של חנות Google Play</translation>
 <translation id="6398765197997659313">צא ממסך מלא</translation>
 <translation id="6399774419735315745">מרגלת</translation>
@@ -3605,11 +3618,13 @@
 <translation id="6455264371803474013">באתרים ספציפיים</translation>
 <translation id="6455894534188563617">&amp;תיקייה חדשה</translation>
 <translation id="6456394469623773452">טוב</translation>
+<translation id="6456955391422100996">המודעה הוסרה.</translation>
 <translation id="645705751491738698">‏המשך לחסום JavaScript</translation>
 <translation id="6458701200018867744">ההעלאה נכשלה (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">השתמש בבחירה כדי לחפש</translation>
 <translation id="6459799433792303855">החלון הפעיל הועבר אל צג אחר.</translation>
 <translation id="6460601847208524483">חפש את הבא</translation>
+<translation id="6461170143930046705">המכשיר מחפש רשתות...</translation>
 <translation id="6463795194797719782">&amp;ערוך</translation>
 <translation id="6466988389784393586">&amp;פתח את כל הסימניות</translation>
 <translation id="6467304607960172345">אופטימיזציה של סרטונים במסך מלא</translation>
@@ -3648,6 +3663,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">התחברת אל רשת <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">שיתוף</translation>
 <translation id="6528513914570774834">אפשר למשתמשים האחרים במכשיר הזה להשתמש ברשת הזו</translation>
 <translation id="652948702951888897">‏היסטוריה של Chrome</translation>
@@ -3744,7 +3760,6 @@
 <translation id="6680650203439190394">קצב</translation>
 <translation id="6681668084120808868">צלם תמונה</translation>
 <translation id="6681964764822470072">ההתקנה של "<ph name="APP_NAME" />" תוסר.</translation>
-<translation id="6685083257944113180">הפסקה, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">‏פתח את Google Play</translation>
 <translation id="6686490380836145850">סגור את הכרטיסיות משמאל</translation>
 <translation id="6686817083349815241">שמור את הסיסמה שלך</translation>
@@ -3852,6 +3867,7 @@
 <translation id="6845038076637626672">פתח בגודל מרבי</translation>
 <translation id="6845325883481699275">‏עזרה בשיפור האבטחה של Chrome</translation>
 <translation id="6848388270925200958">נכון לעכשיו, יש לך כרטיסים שאפשר להשתמש בהם רק במכשיר הזה.</translation>
+<translation id="6850286078059909152">צבע טקסט</translation>
 <translation id="6851497530878285708">האפליקציה הופעלה</translation>
 <translation id="6853388645642883916">המעדכן במצב שינה</translation>
 <translation id="68541483639528434">סגור כרטיסיות אחרות</translation>
@@ -3901,7 +3917,6 @@
 <translation id="6923132443355966645">גלילה / לחיצה</translation>
 <translation id="6923633482430812883">‏קרתה שגיאה בטעינת התקן הרשת לשיתוף קבצים. יש לוודא ששרת הקבצים שאליו ניסית להתחבר תומך ב-SMBv2 ואילך.</translation>
 <translation id="6930036377490597025">מפתח אבטחה חיצוני או חיישן מובנה</translation>
-<translation id="6930242544192836755">משך החיבור</translation>
 <translation id="693807610556624488">פעולת הכתיבה חורגת מהאורך המרבי של התכונה במכשיר: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">יש להיכנס אל <ph name="TOKEN_NAME" /> כדי לבצע אימות בפני <ph name="HOST_NAME" /> באמצעות האישור שלך.</translation>
 <translation id="6943176775188458830">בטל הדפסה</translation>
@@ -3915,6 +3930,7 @@
 <translation id="6951153907720526401">‏מעבדי handler לתשלומים</translation>
 <translation id="6951663584153258142">הארגון שלך מבקש ממך לעדכן את המכשיר הזה</translation>
 <translation id="6953878494808481632">מידע קשור</translation>
+<translation id="6953916367503892689">{0,plural, =1{קובץ: <ph name="FILES" />}two{קבצים: <ph name="FILES" />}many{קבצים: <ph name="FILES" />}other{קבצים: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">בדוק חלון מוקפץ</translation>
 <translation id="6957044667612803194">מפתח האבטחה הזה לא תומך בקודי אימות</translation>
 <translation id="6957231940976260713">שם שירות</translation>
@@ -4127,7 +4143,6 @@
 <translation id="7254554697254365959">לא ניתן לתרגם את הדף הזה.</translation>
 <translation id="7254951428499890870">האם אתה בטוח שברצונך להפעיל את "<ph name="APP_NAME" />" במצב אבחון?</translation>
 <translation id="7255002516883565667">יש לך כרגע כרטיס אחד שאפשר להשתמש בו רק במכשיר הזה</translation>
-<translation id="7255220508626648026">מעביר: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">יש לגעת במפתח האבטחה פעם נוספת כדי לאשר את האתחול. כל המידע שמאוחסן במפתח האבטחה יימחק, כולל קוד האימות.</translation>
 <translation id="7255935316994522020">החל</translation>
 <translation id="7256069762010468647">האתר משתמש במצלמה</translation>
@@ -4261,6 +4276,7 @@
 <translation id="7456142309650173560">מפתח</translation>
 <translation id="7456847797759667638">פתח מיקום...</translation>
 <translation id="7458168200501453431">‏נעשה שימוש בבדיקת האיות של חיפוש Google. הטקסט המוקלד בדפדפן נשלח אל Google.</translation>
+<translation id="7460045493116006516">העיצוב המותקן כעת</translation>
 <translation id="7461924472993315131">הצמד</translation>
 <translation id="746216226901520237">‏בפעם הבאה, הטלפון יבטל את הנעילה של <ph name="DEVICE_TYPE" />. אפשר להשבית את Smart Lock דרך ההגדרות.</translation>
 <translation id="7463006580194749499">הוספת משתמש</translation>
@@ -4320,6 +4336,7 @@
 <translation id="7554791636758816595">כרטיסייה חדשה</translation>
 <translation id="7556033326131260574">‏מערכת Smart Lock לא הצליחה לאמת את חשבונך. כדי להיכנס, הזן את הסיסמה.</translation>
 <translation id="7556242789364317684">‏לצערנו, <ph name="SHORT_PRODUCT_NAME" /> לא יכול לשחזר את ההגדרות שלך. כדי לתקן את השגיאה, <ph name="SHORT_PRODUCT_NAME" /> צריך לאפס את המכשיר שלך באמצעות Powerwash.</translation>
+<translation id="7559444627302317199">יש לבדוק את החיבור לרשת ולנסות שוב.</translation>
 <translation id="7559719679815339381">המתן....מתבצע עדכון של אפליקצית הקיוסק. אל תסיר את הדיסק און קי.</translation>
 <translation id="7561196759112975576">תמיד</translation>
 <translation id="7563991800558061108">‏כדי להתאושש משגיאה זו, עליך להיכנס לחשבון Google שלך ממסך הכניסה. לאחר מכן תוכל לצאת מחשבון Google שלך ולנסות ליצור שוב משתמש בפיקוח.</translation>
@@ -4559,7 +4576,6 @@
 <translation id="7887334752153342268">שכפול</translation>
 <translation id="7887864092952184874">‏עכבר Bluetooth מחובר</translation>
 <translation id="7889565820482017512">גודל התצוגה</translation>
-<translation id="7889966925761734854">חפש</translation>
 <translation id="7893008570150657497">לגשת לתמונות, מוזיקה ומדיה נוספת מהמחשב שלך</translation>
 <translation id="7893153962594818789">‏Bluetooth מושבת ב-<ph name="DEVICE_TYPE" /> זה. עליך להזין את הסיסמה שלך כדי להפעיל את Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (ברירת מחדל)</translation>
@@ -4567,7 +4583,6 @@
 <translation id="7898627924844766532">השאר בסרגל הכלים</translation>
 <translation id="7898725031477653577">ברצוני לקבל תרגום תמיד</translation>
 <translation id="790040513076446191">לשנות הגדרות הקשורות לפרטיות</translation>
-<translation id="7902874111237641165">‏Smooth Motion [ביטא]</translation>
 <translation id="7903345046358933331">הדף אינו מגיב. תוכל להמתין עד שיגיב או לסגור אותו.</translation>
 <translation id="7903742244674067440">יש לך אישורים בקובץ המזהים רשויות אישורים אלה</translation>
 <translation id="7903925330883316394">תכנית שירות: <ph name="UTILITY_TYPE" /></translation>
@@ -4679,6 +4694,7 @@
 <translation id="8037117027592400564">קריאת כל הטקסט הנאמר באמצעות דיבור מסונתז</translation>
 <translation id="8037357227543935929">שאל (ברירת מחדל)</translation>
 <translation id="803771048473350947">קובץ</translation>
+<translation id="8042142357103597104">שקיפות טקסט</translation>
 <translation id="8044899503464538266">אטי</translation>
 <translation id="8045253504249021590">‏הסינכרון הושבת באמצעות מרכז השליטה של Google.</translation>
 <translation id="8045923671629973368">הזנה של מזהה יישום או כתובת אתר של חנות אינטרנט</translation>
@@ -4717,7 +4733,6 @@
     <ph name="BEGIN_PARAGRAPH5" />אפשר לכבות את השירות הזה ב'הגדרות'.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">‏מספרי ה-PIN אינם תואמים</translation>
 <translation id="809792523045608178">‏<ph name="IDS_SHORT_PRODUCT_NAME" /> משתמש בהגדרות שרת proxy שנקבעו על-ידי תוסף</translation>
-<translation id="8099495042588009598">הרשאות נוספות</translation>
 <translation id="8101987792947961127">‏יש לבצע Powerwash באתחול הבא</translation>
 <translation id="8102159139658438129">כדי לראות אפשרויות לגבי הטלפון המחובר, אפשר לעבור אל <ph name="LINK_BEGIN" />הגדרות<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">‏בצע פעולת Powerwash במכשיר <ph name="IDS_SHORT_PRODUCT_NAME" /> שלך וחזור לגרסה הקודמת.</translation>
@@ -4769,8 +4784,10 @@
     לדעתי לא צריך לחסום את האתר הזה.</translation>
 <translation id="8184288427634747179">עבור אל <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">מידע נוסף</translation>
+<translation id="8184472985242519288">אחיד</translation>
 <translation id="8185331656081929126">הצג הודעות כאשר מזוהות מדפסות חדשות ברשת</translation>
 <translation id="8186609076106987817">השרת לא הצליח למצוא את הקובץ.</translation>
+<translation id="8187950680397073878">ל-<ph name="ORIGIN" /> יש הרשאה לקרוא את כל הקבצים בתיקייה הבאה. האתר הזה יכול לראות שינויים בתיקייה רק כשהכרטיסייה הזו פתוחה.</translation>
 <translation id="8188389033983459049">יש לבדוק את הגדרות המכשיר ולהפעיל אותו כדי להמשיך</translation>
 <translation id="8190193592390505034">מתחבר אל <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">לנהל את היישומים, התוספים והעיצובים שלך</translation>
@@ -4874,7 +4891,6 @@
 <translation id="833986336429795709">צריך לבחור אפליקציה כדי לפתוח את הקישור הזה</translation>
 <translation id="8342861492835240085">בחירת אוסף</translation>
 <translation id="834290227245955730">קוד האימות לא חוקי. מספר הניסיונות החוזרים שנותרו: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">כדי ליהנות מסרטונים ואנימציה באיכות הגבוהה ביותר, יש להשתמש ברוחב פס גדול. ייתכן שאנשים אחרים עם חיבור איטי לא יראו את התוכן שלך.</translation>
 <translation id="8351419472474436977">‏תוסף זה השתלט על הגדרות שרת ה-Proxy שלך. משמעות הדבר היא שהוא יכול לשנות, לקטוע או לצותת לכל פעולה שתבצע באינטרנט. אם אינך יודע בוודאות מדוע שינוי זה התרחש, סביר להניח שזהו שינוי לא רצוי.</translation>
 <translation id="8351630282875799764">הסוללה לא נטענת</translation>
 <translation id="835238322900896202">אירעה שגיאה במהלך הסרת ההתקנה. יש להסיר את ההתקנה באמצעות המסוף.</translation>
@@ -4907,9 +4923,11 @@
 <translation id="839736845446313156">הירשם</translation>
 <translation id="8398877366907290961">המשך בכל זאת</translation>
 <translation id="8400146488506985033">נהל אנשים</translation>
+<translation id="8400444932218572097">ל-<ph name="ORIGIN" /> יש הרשאה לשמור את השינויים שלך ישירות בקבצים שבתיקייה הבאה. האתר הזה יכול לשמור שינויים רק כשהכרטיסייה הזו פתוחה.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">שאל תחילה (מומלץ)</translation>
 <translation id="8418445294933751433">&amp;הצג ככרטיסייה</translation>
+<translation id="8418905021510211421">לדף זה יש הרשאה לקרוא תיקייה במכשיר שלך.</translation>
 <translation id="8419098111404128271">תוצאות לחיפוש "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">ה-<ph name="DEVICE_TYPE" /> שלך מוכן להגדרה.</translation>
 <translation id="8425213833346101688">שנה</translation>
@@ -4929,6 +4947,7 @@
 <translation id="8438566539970814960">שיפור החיפושים והגלישה</translation>
 <translation id="8439506636278576865">הצעות לתרגום דפים שנכתבו בשפה זו</translation>
 <translation id="8440630305826533614">‏אפליקציות Linux</translation>
+<translation id="844241640324986723">מחיקת פרטי הכניסה שלך נכשלה.</translation>
 <translation id="8443338615972234259">יש ליצור עכשיו חשבון חדש בשביל המשתמש בפיקוח.</translation>
 <translation id="8446884382197647889">למידע נוסף</translation>
 <translation id="8447409163267621480">‏יש לכלול את Ctrl או Alt</translation>
@@ -4944,8 +4963,6 @@
 <translation id="8461914792118322307">‏שרת proxy</translation>
 <translation id="8463215747450521436">ייתכן שמשתמש בפיקוח זה נמחק או הושבת על ידי המנהל. פנה למנהל אם ברצונך להמשיך להיכנס בתור משתמש זה.</translation>
 <translation id="846374874681391779">סרגל ההורדות</translation>
-<translation id="8463807869745732775">"&gt;
-    נתוני הכניסה המאוחסנים במפתח האבטחה</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> מושבת.</translation>
 <translation id="8464132254133862871">חשבון משתמש זה אינו זכאי לקבלת השירות.</translation>
 <translation id="8465252176946159372">לא חוקי</translation>
@@ -5011,6 +5028,7 @@
 <translation id="8569002732135253578">המסמך <ph name="DOCUMENT_NAME" /> מודפס עכשיו</translation>
 <translation id="8569682776816196752">לא נמצאו יעדים</translation>
 <translation id="8571213806525832805">מארבעת השבועות האחרונים</translation>
+<translation id="8573403125070227391">‏המודעה הזו משתמשת במספר משאבים גדול מדי בשביל המכשיר שלך, ולכן היא הוסרה על-ידי Chrome.</translation>
 <translation id="8574990355410201600">יש להתיר תמיד השמעת צלילים ב-<ph name="HOST" /></translation>
 <translation id="8575286410928791436">כדי לצאת, צריך ללחוץ לחיצה ארוכה על <ph name="KEY_EQUIVALENT" />.</translation>
 <translation id="8578639784464423491">המגבלה היא 99 אותיות</translation>
@@ -5034,13 +5052,13 @@
 <translation id="8609465669617005112">הזז למעלה</translation>
 <translation id="8610103157987623234">פורמט לא נכון, צריך לנסות שוב</translation>
 <translation id="8615618338313291042">יישום גלישה בסתר: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">הטלת צללית</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">סטטוס נדידה</translation>
 <translation id="8620765578342452535">הגדרת חיבורי רשת</translation>
 <translation id="8621866727807194849">‏יש במחשב שלך תוכנה מזיקה. Chrome מסיר אותה, משחזר את ההגדרות ומשבית תוספים. לאחר מכן הדפדפן יחזור לפעולה רגילה.</translation>
 <translation id="8621979332865976405">שיתוף המסך כולו</translation>
 <translation id="862542460444371744">&amp;תוספים</translation>
-<translation id="8627151598708688654">בחירת מקור</translation>
 <translation id="862727964348362408">מושעה</translation>
 <translation id="862750493060684461">‏מטמון של CSS</translation>
 <translation id="8627795981664801467">התחברויות בטוחות בלבד</translation>
@@ -5094,6 +5112,7 @@
 <translation id="8688579245973331962">לא רואה את השם שלך?</translation>
 <translation id="8688591111840995413">סיסמה שגויה</translation>
 <translation id="8688672835843460752">פנוי</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">פתח &amp;מיקום...</translation>
 <translation id="869884720829132584">תפריט יישומים</translation>
 <translation id="869891660844655955">תאריך תפוגה</translation>
@@ -5257,6 +5276,7 @@
 <translation id="891365694296252935">‏שליחה של נתוני אבחון ונתונים על השימוש. המכשיר הזה שולח עכשיו אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה לא ישמשו כדי לזהות את הילד/ה שלך, והם יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. ההגדרה הזו נאכפת על-ידי הבעלים. אם הופעלה בשביל הילד/ה שלך האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלו/ה. <ph name="BEGIN_LINK1" />מידע נוסף<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">טוען הצעה...</translation>
 <translation id="8916476537757519021">תת-מסגרת לגלישה בסתר: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> — מורשה לקרוא תיקייה במכשיר שלך</translation>
 <translation id="8919275547519617350">כדי שכל הסיסמאות שלך יהיו זמינות בכל המכשירים, צריך להיכנס ולהפעיל את הסינכרון.</translation>
 <translation id="8921366488406707015">המערכת מאמתת את מפתח האבטחה...</translation>
 <translation id="8922013791253848639">התר תמיד מודעות באתר הזה</translation>
@@ -5286,7 +5306,6 @@
 <translation id="8965037249707889821">הזן את הסיסמה הישנה</translation>
 <translation id="8966870118594285808">ניתן לפתוח כרטיסייה מחדש אם סגרת אותה בטעות</translation>
 <translation id="8967866634928501045">‏כדי להציג, יש להקיש על Alt+Shift+A</translation>
-<translation id="8970203673128054105">הצגת רשימה של מצבי העברה</translation>
 <translation id="89720367119469899">Esc</translation>
 <translation id="8972513834460200407">‏פנה אל מנהל המערכת של הרשת שלך כדי לוודא שחומת האש אינה חוסמת הורדות משרתי Google.</translation>
 <translation id="8973557916016709913">הסר את רמת המרחק מהתצוגה</translation>
@@ -5435,6 +5454,7 @@
 <translation id="9214520840402538427">אופס!  תם הזמן הקצוב לאתחול של מאפייני זמן ההתקנה. פנה אל נציג התמיכה שלך.</translation>
 <translation id="9214695392875603905">קאפקייק</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" נוסף</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> יוכל לשמור את השינויים שלך ישירות בקובץ הבא. האתר הזה יכול לשמור שינויים רק כשהכרטיסייה הזו פתוחה.</translation>
 <translation id="9218430445555521422">הגדר כברירת מחדל</translation>
 <translation id="9219103736887031265">תמונות</translation>
 <translation id="9220525904950070496">הסר חשבון</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index 7cf144e..92e89d7 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">仮想マシンの起動中にエラーが発生しました。もう一度お試しください。</translation>
 <translation id="1089439967362294234">パスワードを変更</translation>
 <translation id="1090126737595388931">実行中のバックグラウンド アプリはありません</translation>
+<translation id="1090290614672149983">元のファイルに変更を保存しますか?</translation>
 <translation id="1090918500949388876">画面がオンの状態で「OK Google」と話すといつでもアシスタントにアクセスできます</translation>
 <translation id="1091767800771861448">Esc キーを押すとスキップできます(非公式のビルドのみ)。</translation>
 <translation id="1093457606523402488">検出されたネットワーク:</translation>
 <translation id="1094607894174825014">「<ph name="DEVICE_NAME" />」で、無効なオフセットでの読み取りまたは書き込み操作がリクエストされました。</translation>
 <translation id="1097658378307015415">ログインする前に、ゲスト セッションを開始して <ph name="NETWORK_ID" /> ネットワークを有効にしてください</translation>
+<translation id="110029732810301672">このタブは元のファイルへの保存が許可されています。</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" />を常に翻訳</translation>
 <translation id="1108600514891325577">停止(&amp;S)</translation>
 <translation id="1110155001042129815">待機</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">サングラス</translation>
 <translation id="1151917987301063366"><ph name="HOST" /> によるセンサーへのアクセスを常に許可する</translation>
 <translation id="1153356358378277386">ペア設定されたデバイス</translation>
-<translation id="1156488781945104845">現在の時刻</translation>
 <translation id="1161575384898972166">クライアント証明書をエクスポートするには <ph name="TOKEN_NAME" /> にログインしてください。</translation>
 <translation id="1163931534039071049">フレームのソースを表示(&amp;V)</translation>
 <translation id="1164674268730883318">Smart Lock for <ph name="DEVICE_TYPE" /> を無効にしますか?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player のストレージ設定</translation>
 <translation id="1274997165432133392">Cookie と他のサイト データ</translation>
 <translation id="127668050356036882">すべてのウィンドウを閉じる</translation>
-<translation id="1277908057200820621">デバイスリストを表示</translation>
 <translation id="1280820357415527819">モバイル ネットワークを検索しています</translation>
 <translation id="1285320974508926690">このサイトは翻訳しない</translation>
 <translation id="1285484354230578868">Google ドライブ アカウントでのデータの保存</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">ホーム ネットワーク、ローミングなし</translation>
 <translation id="1316136264406804862">検索しています...</translation>
 <translation id="1316495628809031177">同期は一時停止中です</translation>
+<translation id="1317637799698924700">ドッキング ステーションは USB Type-C 互換モードで動作します。</translation>
 <translation id="1322046419516468189"><ph name="SAVED_PASSWORDS_STORE" /> での保存パスワードの表示と管理</translation>
 <translation id="1326317727527857210">他のデバイスと同じタブを使用するには、Chrome にログインします。</translation>
 <translation id="1327074568633507428">Google クラウド プリント上のプリンタ</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">ご使用の<ph name="BEGIN_LINK" />ブラウザは <ph name="ENROLLMENT_DOMAIN" /> によって管理されています<ph name="END_LINK" /></translation>
 <translation id="1366177842110999534">ご使用の <ph name="DEVICE_TYPE" /> で Linux のツール、エディタ、IDE を実行します。&lt;a target="_blank" href="<ph name="URL" />"&gt;詳細&lt;/a&gt;</translation>
 <translation id="1367951781824006909">ファイルを選択</translation>
+<translation id="1370749010280229230">ドッキング ステーションに接続されているディスプレイに問題があります</translation>
 <translation id="1371301976177520732">すべてのデバイスで同じブックマーク、パスワード、その他の設定を使用できます</translation>
 <translation id="1372841398847029212">アカウントに同期</translation>
 <translation id="1374844444528092021">ネットワーク「<ph name="NETWORK_NAME" />」が要求する証明書がインストールされていないか、証明書の有効期限が切れています。新しい証明書を取得して、もう一度接続してみてください。</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">ウェブページ、1 つのファイル</translation>
 <translation id="1451917004835509682">監視対象ユーザーを追加</translation>
 <translation id="1454223536435069390">スクリーンショットを撮る(&amp;A)</translation>
+<translation id="1458243790901188746">{0,plural, =1{フォルダ: <ph name="DIRECTORIES" />}other{フォルダ: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">拡張機能によって追加された検索エンジン</translation>
 <translation id="146000042969587795">このフレームにはセキュリティで保護されていないコンテンツが含まれているためブロックされました。</translation>
 <translation id="146219525117638703">ONC 状態</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">入力オプションを表示</translation>
 <translation id="1651008383952180276">同じパスフレーズを 2 回入力する必要があります</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{プリンタを Google クラウド プリントに追加してください。登録したプリンタにはどこからでも印刷できます。}other{# 件のプリンタを Google クラウド プリントに追加してください。登録したプリンタにはどこからでも印刷できます。}}</translation>
+<translation id="1656528038316521561">背景の透明度</translation>
 <translation id="1657406563541664238">使用統計データや障害レポートを Google に自動送信して <ph name="PRODUCT_NAME" /> の機能向上に役立てる</translation>
 <translation id="1658424621194652532">このページはマイクにアクセスしています。</translation>
 <translation id="1660204651932907780">音声の再生をサイトに許可する(推奨)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> よりセキュリティ キーのメーカーとモデルの読み取り許可を求められています</translation>
 <translation id="1679068421605151609">デベロッパー ツール</translation>
 <translation id="1679806121152819234">プラグイン VM</translation>
+<translation id="1679810534535368772">終了してもよろしいですか?</translation>
 <translation id="167983332380191032">管理サービスから HTTP エラーが送信されました。</translation>
 <translation id="1680849702532889074">Linux アプリケーションのインストール中にエラーが発生しました。</translation>
 <translation id="16815041330799488">クリップボードにコピーされているテキストや画像へのアクセスをサイトに許可しない</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">保護されているメディア識別子</translation>
 <translation id="175196451752279553">閉じたタブを開く(&amp;R)</translation>
 <translation id="1753905327828125965">よくアクセスするページ</translation>
+<translation id="1755601632425835748">テキストのサイズ</translation>
 <translation id="1756681705074952506">入力方法</translation>
 <translation id="1757301747492736405">アンインストールは保留中です</translation>
 <translation id="175772926354468439">テーマを有効にする</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">縮小(&amp;S)</translation>
 <translation id="1919345977826869612">広告</translation>
 <translation id="1919814239594435008">サンドボックスの無効化プラグインが許可されました</translation>
+<translation id="1920390473494685033">連絡先</translation>
 <translation id="1921050530041573580">スマートフォンとメッセージのペア設定</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" /> で Google の最先端技術を活用</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">シークレット タブ: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> の <ph name="PEPPER_PLUGIN_NAME" /> プラグインから、パソコンへのアクセス許可を求められています</translation>
 <translation id="2178614541317717477">認証局が侵害された</translation>
+<translation id="2179849162388791084">セキュリティ キーからログインデータを収集できませんでした。</translation>
 <translation id="218070003709087997">印刷部数を数値(1~999)で指定してください。</translation>
 <translation id="2184515124301515068">サイトで音声が再生される可能性がある場合、Chrome で自動的に許可またはブロックする(推奨)</translation>
 <translation id="2187895286714876935">サーバー証明書インポート エラー</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">すべての Cookie とサイトデータ</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 個のアイテムがコピーされました}other{# 個のアイテムがコピーされました}}</translation>
 <translation id="2278562042389100163">ブラウザ ウィンドウを開く</translation>
-<translation id="2279874276457403668">一度に作成できるセッションは 1 つのみです</translation>
 <translation id="2280486287150724112">右余白</translation>
 <translation id="2282146716419988068">GPU プロセス</translation>
 <translation id="2282155092769082568">自動設定 URL:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">ロック画面のメモは<ph name="LOCK_SCREEN_APP_NAME" />に自動的に保存されます。最新のメモはロック画面に表示されます。</translation>
 <translation id="2353297238722298836">カメラとマイクを使用できます</translation>
 <translation id="2356070529366658676">確認する</translation>
-<translation id="2357949918965361754">この機能を使用すると、テレビや他のデバイスに Chrome のコンテンツを表示できます。</translation>
 <translation id="2359345697448000899">[ツール] メニューの [拡張機能] をクリックして拡張機能を管理できます。</translation>
 <translation id="2359808026110333948">続行</translation>
 <translation id="236117173274098341">最適化</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">あなたの組織がこのデバイスを今すぐ更新するよう求めています</translation>
 <translation id="2439545803278355377">新しい PIN を入力してください。PIN は 4 文字以上の長さにする必要があり、文字や数字などを含めることができます。</translation>
 <translation id="2440604414813129000">ソースを表示(&amp;O)</translation>
+<translation id="2442916515643169563">テキストの影</translation>
 <translation id="2444119669991608829"><ph name="LANGUAGE" />のページではない場合</translation>
 <translation id="2445081178310039857">拡張機能のルート ディレクトリを指定してください。</translation>
 <translation id="2445484935443597917">新しいプロフィールを作成</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">終了時刻</translation>
 <translation id="2739191690716947896">デバッグ</translation>
 <translation id="2739240477418971307">ユーザー補助設定の変更</translation>
+<translation id="274029851662193272">沈み彫り</translation>
 <translation id="2740393541869613458">監視対象ユーザーがどのウェブサイトにアクセスしたかを確認する</translation>
 <translation id="2741912629735277980">ログイン画面に UI を表示する</translation>
 <translation id="274290345632688601">Linux のアプリとファイルを復元しています</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">ショートカットがすでに存在します</translation>
 <translation id="2807517655263062534">ダウンロードしたファイルがここに表示されます</translation>
 <translation id="2809586584051668049">、他 <ph name="NUMBER_ADDITIONAL_DISABLED" /> 件</translation>
+<translation id="2812049959647166806">Thunderbolt はサポートされていません</translation>
 <translation id="2812944337881233323">ログアウトして再度ログインしてみてください</translation>
 <translation id="2812989263793994277">すべての画像を表示しない</translation>
 <translation id="281390819046738856">リクエストに署名できませんでした。</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">提供元</translation>
 <translation id="2844169650293029770">USB-C デバイス(左手前のポート)</translation>
 <translation id="2845382757467349449">ブックマーク バーを常に表示</translation>
-<translation id="2847759467426165163">キャストするデバイス:</translation>
 <translation id="284805635805850872">有害なソフトウェアを削除しますか?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" />(<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">クリーンアップできませんでした</translation>
@@ -1297,6 +1305,7 @@
     サーバー メッセージ: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">メディア ギャラリーをディレクトリ単位で追加</translation>
 <translation id="2910318910161511225">ネットワークに接続してから、もう一度お試しください</translation>
+<translation id="2910518940971897750">元のファイルに保存</translation>
 <translation id="2913331724188855103">サイトに Cookie データの保存と読み取りを許可する(推奨)</translation>
 <translation id="2915102088417824677">アクティビティ ログを表示</translation>
 <translation id="2915873080513663243">自動スキャン</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI デバイス</translation>
 <translation id="3015639418649705390">今すぐ再起動</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> を自動的に設定できませんでした。プリンタの詳細設定を指定してください。</translation>
+<translation id="3016381065346027039">ログエントリはありません</translation>
 <translation id="3016641847947582299">コンポーネント更新完了</translation>
 <translation id="3016780570757425217">ユーザーの現在地の認識</translation>
 <translation id="3017079585324758401">背景</translation>
 <translation id="3020183492814296499">ショートカット</translation>
 <translation id="3020990233660977256">シリアル番号: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">蝶</translation>
+<translation id="3021408157810018664">元のファイルに変更を保存しますか?</translation>
 <translation id="3021426244864538700">このサイトのデータにアクセスしています</translation>
 <translation id="3021678814754966447">フレームのソースを表示(&amp;V)</translation>
 <translation id="3022978424994383087">聞き取れませんでした。</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">ログインせずに<ph name="LINK_START" />ゲストとしてブラウジング<ph name="LINK_END" />することもできます。</translation>
 <translation id="3172045848207518317">サイトがビデオ入力にアクセスしています</translation>
 <translation id="3177909033752230686">ページの言語:</translation>
+<translation id="3179982752812949580">テキストのフォント</translation>
 <translation id="3181954750937456830">セーフ ブラウジング(危険なサイトからユーザーとデバイスを保護します)</translation>
 <translation id="3182749001423093222">スペルチェック</translation>
 <translation id="3183139917765991655">プロフィール インポーター</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">ウィンドウとして開く</translation>
 <translation id="3278001907972365362">お使いの Google アカウントは対応が必要です</translation>
 <translation id="3279230909244266691">この処理には数分かかることがあります。仮想マシンを起動します。</translation>
-<translation id="3279741024917655738">動画の全画面表示:</translation>
 <translation id="3280237271814976245">名前を付けて保存(&amp;A)...</translation>
 <translation id="3280243678470289153">Chrome に留まる</translation>
 <translation id="3281892622610078515">隔離対象のファイルとプログラム:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">一致する結果は見つかりませんでした</translation>
 <translation id="3305389145870741612">フォーマット処理には数秒かかることがあります。しばらくお待ちください。</translation>
 <translation id="3305661444342691068">PDF をプレビュー</translation>
-<translation id="3306684685104080068">Google ハングアウトなどクラウドベースのサービスのキャストを有効にします。</translation>
+<translation id="3307871847038842490">このページは元のファイルへの保存が許可されています。</translation>
 <translation id="3308006649705061278">組織単位(OU)</translation>
 <translation id="3308116878371095290">このページの Cookie は設定されませんでした。</translation>
 <translation id="3308134619352333507">ボタンを非表示にする</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">アカウントの設定をキャンセルしますか?</translation>
 <translation id="3464012987031883895">サイトが音声入力にアクセスしています</translation>
 <translation id="346431825526753">これは <ph name="CUSTODIAN_EMAIL" /> によって管理されている子供向けのアカウントです。</translation>
-<translation id="3468275649641751422">動画または音声ファイルのストリーミング</translation>
 <translation id="3468999815377931311">Android スマートフォン</translation>
 <translation id="3470442499439619530">このユーザーを削除</translation>
 <translation id="3473479545200714844">画面拡大鏡</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">縮小</translation>
 <translation id="3497560059572256875">Doodle を共有</translation>
 <translation id="3505030558724226696">デバイスのアクセスを取り消す</translation>
+<translation id="3505635633742443645">ドッキング ステーションの HDMI ポートは、USB Type-C ポートがディスプレイ出力に使われている場合は使用できません。ディスプレイ用の他のポートを使用してください。</translation>
 <translation id="3507421388498836150">「<ph name="EXTENSION_NAME" />」の現在の権限</translation>
 <translation id="3507888235492474624">Bluetooth デバイスを再スキャン</translation>
 <translation id="3508920295779105875">別のフォルダを選択...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">インストールが完了しました</translation>
 <translation id="3578594933904494462">このタブのコンテンツは共有されています。</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; さんがあなたのグループ &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt; と &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; プリンタを共有することを希望しています。共有を許可すると、グループのメンバー全員がこのプリンタに印刷できるようになります。</translation>
+<translation id="357889014807611375">従量制 Wi-Fi</translation>
 <translation id="3584169441612580296">パソコンからの写真、音楽、その他のメディアの読み取りと変更</translation>
 <translation id="3587482841069643663">すべて</translation>
 <translation id="358796204584394954">ペア設定するには「<ph name="DEVICE_NAME" />」で次のコードを入力してください:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">ログイン</translation>
 <translation id="3593965109698325041">証明書名の制約</translation>
 <translation id="3596235046596950091">クラウド サービスを有効にする</translation>
+<translation id="3599221874935822507">浮き彫り</translation>
 <translation id="3599863153486145794">ログインしているすべてのデバイスの履歴を削除します。お使いの Google アカウントの <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> に、他の形式の閲覧履歴が記録されている場合があります。</translation>
 <translation id="3600051066689725006">ウェブ リクエスト情報</translation>
 <translation id="3600792891314830896">音声が再生されるサイトをミュートする</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; によりダウンロードされました</translation>
 <translation id="3613134908380545408">「<ph name="FOLDER_NAME" />」を表示</translation>
 <translation id="3613422051106148727">新しいタブで開く(&amp;O)</translation>
+<translation id="3615073365085224194">指紋認証センサーに指を置いてください</translation>
 <translation id="3616113530831147358">音声</translation>
 <translation id="3616741288025931835">閲覧履歴を消去(&amp;C)...</translation>
 <translation id="3617891479562106823">背景を利用できません。しばらくしてからもう一度お試しください。</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">トップページ</translation>
 <translation id="3720996970802414353">切り替える</translation>
 <translation id="3722108462506185496">仮想マシンサービスの起動中にエラーが発生しました。もう一度お試しください。</translation>
-<translation id="3723158278575423087">Chromium のキャスト エクスペリエンスへようこそ</translation>
 <translation id="3725367690636977613">ページ</translation>
 <translation id="3726137731714254362">ここからフォルダを削除した場合、共有は停止されますがファイルは削除されません。</translation>
 <translation id="3727148787322499904">この設定を変更すると、共有しているすべてのネットワークに影響します</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">ビルド情報の詳細</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{1 台の USB デバイスと通信します}other{# 台の USB デバイスと通信します}}</translation>
 <translation id="3765246971671567135">オフライン デモモード ポリシーを読み取ることができませんでした。</translation>
-<translation id="3766223500670287046">リモートの画面</translation>
 <translation id="3768037234834996183">設定を同期しています...</translation>
 <translation id="377050016711188788">アイスクリーム</translation>
 <translation id="3771294271822695279">動画ファイル</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">指を放して、もう一度タッチ</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: 同期が一時停止されています</translation>
-<translation id="3862134173397075045">Chrome のキャスト エクスペリエンスへようこそ</translation>
 <translation id="3862693525629180217">内蔵センサーを使って確認</translation>
 <translation id="3862788408946266506">「kiosk_only」のマニフェスト属性が指定されているアプリは、Chrome OS キオスクモードでインストールする必要があります。</translation>
 <translation id="3865414814144988605">解像度</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smart Lock 用のスマートフォンが変更されました</translation>
 <translation id="3927932062596804919">拒否</translation>
 <translation id="3930737994424905957">デバイスを検索しています</translation>
+<translation id="3930968231047618417">背景の色</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> の削除済みパスワードを復元します</translation>
 <translation id="3936390757709632190">オーディオを新しいタブで開く(&amp;O)</translation>
 <translation id="3936925983113350642">選択したパスワードは、この証明書を後で復元するときに必要です。安全な場所に記録しておいてください。</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" />(<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE ブックマーク</translation>
 <translation id="3950820424414687140">ログイン</translation>
+<translation id="3950828138786918475">このタブはデバイスのフォルダの読み取りが許可されています。</translation>
 <translation id="3954354850384043518">ダウンロード中</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" />(<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">最近記録された WebRTC イベントログはありません。</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">計算しています...</translation>
 <translation id="3975565978598857337">レルムのサーバーに接続できませんでした</translation>
 <translation id="397703832102027365">最終処理中...</translation>
+<translation id="3977886311744775419">このネットワーク タイプでは自動更新はダウンロードされませんが、手動で更新を確認できます。</translation>
 <translation id="3979395879372752341">新しい拡張機能が追加されました(<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> を有効にする</translation>
 <translation id="3981760180856053153">入力された保存形式が無効です。</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">タップによるクリックを有効にする</translation>
 <translation id="4195643157523330669">新しいタブで開く</translation>
 <translation id="4195814663415092787">前回開いていたページを開く</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> は次のファイルに変更を直接保存できます。このサイトは、このタブが開いている間のみ変更を保存できます。</translation>
 <translation id="4198146608511578238">Google アシスタントと話すにはランチャー アイコンを押したままにします。</translation>
 <translation id="4200689466366162458">カスタムの単語</translation>
 <translation id="4200983522494130825">新しいタブ(&amp;T)</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">モバイル ネットワークに自動接続する</translation>
 <translation id="4268025649754414643">キーの暗号化</translation>
 <translation id="4270393598798225102">バージョン <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">一致する結果は見つかりませんでした</translation>
 <translation id="4275663329226226506">メディア</translation>
 <translation id="4275830172053184480">デバイスの再起動</translation>
 <translation id="4278101229438943600">アシスタントの設定完了</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">CPU 時間</translation>
 <translation id="4534661889221639075">もう一度お試しください。</translation>
 <translation id="4535127706710932914">デフォルトのプロフィール</translation>
+<translation id="4535767533210902251">指紋認証センサーはキーボードの右上のキーに搭載されています。いずれかの指で軽く触れてください。</translation>
 <translation id="4538684596480161368"><ph name="HOST" /> でサンドボックスの無効化プラグインを常にブロックする</translation>
 <translation id="4538792345715658285">会社のポリシーによってインストール済み。</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" /> と <ph name="WEBSITE_2" /> でのユーザーデータの読み取り</translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">その他...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Bluetooth デバイスのペア設定</translation>
+<translation id="4578012756826807359">ログインデータを削除しました。</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> をキャストできません。</translation>
 <translation id="4581774856936278355">Linux の復元中にエラーが発生しました</translation>
 <translation id="4582563038311694664">すべての設定をリセット</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">終了時に複数のサイトからの Cookie が消去されます。</translation>
 <translation id="4765582662863429759">スマートフォンから Chromebook へのテキストの伝達を Android メッセージに許可します</translation>
 <translation id="4768332406694066911">次の機関から発行された、あなたを識別する証明書があります</translation>
-<translation id="4772404146526168240">両方の画面</translation>
 <translation id="4776146737004271126">Android の設定を開く</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> のパスワード</translation>
 <translation id="4777825441726637019">Play ストア</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">ブックマーク、履歴、パスワードなどの設定をすべてのデバイスで使用するにはログインしてください。ログインすると、利用している Google サービスにも自動的にログインすることになります。</translation>
 <translation id="4929386379796360314">印刷先</translation>
 <translation id="4930714375720679147">ON にする</translation>
-<translation id="4931132176527519925">常にミラーリングを使用する</translation>
 <translation id="4932733599132424254">日付</translation>
 <translation id="4933484234309072027"><ph name="URL" /> に埋め込まれたページ</translation>
 <translation id="493571969993549666">監視対象ユーザーを追加</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">ミュートを解除</translation>
 <translation id="4992458225095111526">Powerwash の実行を確認</translation>
 <translation id="4992473555164495036">使用できる入力方法が管理者によって制限されています。</translation>
+<translation id="4992866843815555470">お使いのドッキング ステーションは修理する必要があります。ファンが正常に動作しない場合、ドッキング ステーションがシャットダウンします。</translation>
 <translation id="4992926179187649719">「OK Google」を有効にする</translation>
 <translation id="4994474651455208930">プロトコルのデフォルト ハンドラへのサイトの登録要求を許可する</translation>
 <translation id="4994754230098574403">設定しています</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">プロセス ID</translation>
 <translation id="5233638681132016545">新しいタブ</translation>
 <translation id="5233736638227740678">貼り付け(&amp;P)</translation>
-<translation id="5234764350956374838">閉じる</translation>
 <translation id="5235050375939235066">アプリをアンインストールしますか?</translation>
 <translation id="5235750401727657667">新しいタブを開いたときの表示ページを変更する</translation>
 <translation id="5238278114306905396">アプリ「<ph name="EXTENSION_NAME" />」は自動的に削除されました。</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google は Chrome を推奨しています</translation>
 <translation id="532247166573571973">サーバーへのアクセスに問題が起こっている可能性があります。しばらくしてからもう一度お試しください。</translation>
 <translation id="5324780743567488672">ユーザーの現在地情報を使用して自動的にタイムゾーンを設定する</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> は元のファイルへの保存が許可されています</translation>
 <translation id="5327248766486351172">名前</translation>
 <translation id="5327570636534774768">このデバイスは別のドメインの管理対象として指定されています。デモモードを設定する前にそのドメインのプロビジョニングを解除してください。</translation>
 <translation id="532943162177641444">「<ph name="PHONE_NAME" />」で通知をタップして、このデバイスで使用できるモバイル アクセス ポイントを設定してください。</translation>
@@ -2965,7 +2980,7 @@
 <translation id="5496587651328244253">管理</translation>
 <translation id="549673810209994709">このページを翻訳できませんでした。</translation>
 <translation id="5499313591153584299">このファイルはパソコンに危害を加える可能性があります。</translation>
-<translation id="5500345327355928305">充電やパフォーマンスに関する問題を回避するには、対応する OEM または USB の Type-C 電源アダプターを使用してください。</translation>
+<translation id="5500345327355928305">充電やパフォーマンスに関する問題を回避するには、対応する OEM または USB Type-C の電源アダプターを使用してください。</translation>
 <translation id="5502500733115278303">Firefox ブックマーク</translation>
 <translation id="5507756662695126555">否認防止</translation>
 <translation id="5509693895992845810">別名で保存(&amp;A)...</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> が次の許可を求めています</translation>
 <translation id="5534304873398226603">写真または動画を破棄</translation>
 <translation id="5535941515421698170">このデバイスから既存のデータも削除する</translation>
-<translation id="5537725057119320332">キャスト</translation>
 <translation id="5539221284352502426">入力したパスワードはサーバーによって拒否されました。考えられる原因は次のとおりです。パスワードが短すぎる。パスワードに数字または記号が含まれていない。以前と同じパスワードを指定した。</translation>
 <translation id="5541687815721799001">アプリを使用</translation>
 <translation id="5542132724887566711">プロフィール</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">サイトアクセスの詳細</translation>
 <translation id="6000758707621254961">「<ph name="SEARCH_TEXT" />」に対する <ph name="RESULT_COUNT" /> 件の検索結果</translation>
 <translation id="6002458620803359783">使用する音声</translation>
-<translation id="6005695835120147974">メディア ルーター</translation>
 <translation id="6006484371116297560">クラシック</translation>
 <translation id="6007240208646052708">お使いの言語では音声検索はご利用いただけません。</translation>
 <translation id="6009781704028455063">内蔵センサー</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{ネットワーク上の新しいプリンタ}other{ネットワーク上の新しいプリンタ}}</translation>
 <translation id="6286708577777130801">保存パスワードの詳細</translation>
 <translation id="6289452883081499048">Play などの Google サービスがカスタマイズされます</translation>
-<translation id="6290556621549272952">この機能を使用すると、テレビや他のデバイスに Chromium のコンテンツを表示できます。</translation>
 <translation id="6291949900244949761">サイトから USB デバイスへのアクセス許可を求められたときに確認する(推奨)</translation>
 <translation id="6291953229176937411">Finder で表示(&amp;S)</translation>
 <translation id="6295158916970320988">すべてのサイト</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />システム情報<ph name="END_LINK1" />と<ph name="BEGIN_LINK2" />指標データ<ph name="END_LINK2" />を送信する</translation>
 <translation id="6396988158856674517">サイトでのモーション センサーの使用をブロックする</translation>
 <translation id="6397094776139756010">同期とカスタマイズのオプション</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> は次のフォルダのファイルに変更を直接保存できるようになります。このサイトは、このタブが開いている間のみ変更を保存できます。</translation>
 <translation id="6398715114293939307">Google Play ストアを削除</translation>
 <translation id="6398765197997659313">全画面表示を終了</translation>
 <translation id="6399774419735315745">スパイ</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">特定のサイト</translation>
 <translation id="6455894534188563617">新しいフォルダ(&amp;N)</translation>
 <translation id="6456394469623773452">中程度</translation>
+<translation id="6456955391422100996">広告を削除しました。</translation>
 <translation id="645705751491738698">Javascript を引き続きブロックする</translation>
 <translation id="6458701200018867744">アップロードできませんでした(<ph name="WEBRTC_LOG_UPLOAD_TIME" />)。</translation>
 <translation id="6459488832681039634">選択部分を検索に使用</translation>
 <translation id="6459799433792303855">アクティブなウィンドウが別のディスプレイに移動しました。</translation>
 <translation id="6460601847208524483">次を検索</translation>
+<translation id="6461170143930046705">ネットワークの検索中...</translation>
 <translation id="6463795194797719782">編集(&amp;E)</translation>
 <translation id="6466988389784393586">すべてのブックマークを開く(&amp;O)</translation>
 <translation id="6467304607960172345">動画の全画面表示を最適化</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641"><ph name="NETWORK_TYPE" /> ネットワークに接続しています。</translation>
 <translation id="6527303717912515753">共有</translation>
 <translation id="6528513914570774834">このデバイスの他のユーザーにこのネットワークの使用を許可する</translation>
 <translation id="652948702951888897">Chrome 履歴</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">速度</translation>
 <translation id="6681668084120808868">写真を撮る</translation>
 <translation id="6681964764822470072">「<ph name="APP_NAME" />」をアンインストールします。</translation>
-<translation id="6685083257944113180"><ph name="SINK_NAME" /> による <ph name="SINK_STATUS" /> を停止します</translation>
 <translation id="668599234725812620">Google Play を開く</translation>
 <translation id="6686490380836145850">右側のタブを閉じる</translation>
 <translation id="6686817083349815241">パスワードを保存</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">最大化して開く</translation>
 <translation id="6845325883481699275">Chrome のセキュリティ改善に協力する</translation>
 <translation id="6848388270925200958">現在、このデバイスでのみ使用できるカードがいくつかあります</translation>
+<translation id="6850286078059909152">テキストの色</translation>
 <translation id="6851497530878285708">アプリは有効です</translation>
 <translation id="6853388645642883916">アップデータのスリープ中</translation>
 <translation id="68541483639528434">他のタブをすべて閉じる</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">スクロール / クリック</translation>
 <translation id="6923633482430812883">共有フォルダのマウントエラー。接続先のファイル サーバーが SMBv2 以降に対応しているか確認してください。</translation>
 <translation id="6930036377490597025">外部セキュリティ キーまたは内蔵センサー</translation>
-<translation id="6930242544192836755">接続時間</translation>
 <translation id="693807610556624488">「<ph name="DEVICE_NAME" />」での書き込み操作で属性の長さが上限を超えています。</translation>
 <translation id="6941937518557314510">証明書で <ph name="HOST_NAME" /> の認証を受けるには <ph name="TOKEN_NAME" /> にログインしてください。</translation>
 <translation id="6943176775188458830">印刷をキャンセル</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">支払いハンドラ</translation>
 <translation id="6951663584153258142">あなたの組織がこのデバイスの更新を求めています</translation>
 <translation id="6953878494808481632">関連情報</translation>
+<translation id="6953916367503892689">{0,plural, =1{ファイル: <ph name="FILES" />}other{ファイル: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">ポップアップを検証</translation>
 <translation id="6957044667612803194">このセキュリティ キーでは PIN がサポートされていません</translation>
 <translation id="6957231940976260713">サービス名</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">このページを翻訳できませんでした。</translation>
 <translation id="7254951428499890870">「<ph name="APP_NAME" />」を診断モードで起動してもよろしいですか?</translation>
 <translation id="7255002516883565667">現在、このデバイスでのみ使用できるカードが 1 つあります</translation>
-<translation id="7255220508626648026"><ph name="ROUTETITLE" /> をキャスト中</translation>
 <translation id="7255916308560539517">リセットを確定するには、セキュリティ キーをもう一度タップしてください。セキュリティ キーに保存されているすべての情報(PIN を含む)が消去されます。</translation>
 <translation id="7255935316994522020">適用</translation>
 <translation id="7256069762010468647">サイトでカメラが使用されています</translation>
@@ -4265,6 +4280,7 @@
 <translation id="7456142309650173560">Dev</translation>
 <translation id="7456847797759667638">場所を開く...</translation>
 <translation id="7458168200501453431">Google 検索と同じスペルチェックを使用します。ブラウザに入力したテキストは Google に送信されます。</translation>
+<translation id="7460045493116006516">インストールした現在のテーマ</translation>
 <translation id="7461924472993315131">固定</translation>
 <translation id="746216226901520237">次回から、スマートフォンで <ph name="DEVICE_TYPE" /> のロックを解除できます。Smart Lock を無効にするには [設定] をご利用ください。</translation>
 <translation id="7463006580194749499">ユーザーを追加</translation>
@@ -4324,6 +4340,7 @@
 <translation id="7554791636758816595">新しいタブ</translation>
 <translation id="7556033326131260574">Smart Lock でアカウントを確認できませんでした。ログインするにはパスワードを入力してください。</translation>
 <translation id="7556242789364317684"><ph name="SHORT_PRODUCT_NAME" /> ではユーザーの設定を回復することができません。エラーを修正するには、<ph name="SHORT_PRODUCT_NAME" /> が Powerwash でデバイスをリセットする必要があります。</translation>
+<translation id="7559444627302317199">ネットワーク接続を確認してからもう一度お試しください。</translation>
 <translation id="7559719679815339381">しばらくお待ちください....キオスクアプリを更新しています。USB スティックを取り外さないでください。</translation>
 <translation id="7561196759112975576">常に使用</translation>
 <translation id="7563991800558061108">このエラーから回復するには、ログイン画面から Google アカウントにログインする
@@ -4566,7 +4583,6 @@
 <translation id="7887334752153342268">タブを複製</translation>
 <translation id="7887864092952184874">Bluetooth マウスがペア設定されました</translation>
 <translation id="7889565820482017512">ディスプレイ サイズ</translation>
-<translation id="7889966925761734854">シーク再生</translation>
 <translation id="7893008570150657497">パソコンから画像、音楽、その他のメディアにアクセスする</translation>
 <translation id="7893153962594818789">この <ph name="DEVICE_TYPE" /> では Bluetooth がオフになっています。パスワードを入力し、Bluetooth をオンにしてください。</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (既定)</translation>
@@ -4574,7 +4590,6 @@
 <translation id="7898627924844766532">ツールバーに残す</translation>
 <translation id="7898725031477653577">常に翻訳する</translation>
 <translation id="790040513076446191">プライバシー関連設定を操作する</translation>
-<translation id="7902874111237641165">スムース モーション(ベータ版)</translation>
 <translation id="7903345046358933331">ページが応答していません。応答があるまで待つか、終了することができます。</translation>
 <translation id="7903742244674067440">これらの認証局を識別する証明書がファイルに格納されています</translation>
 <translation id="7903925330883316394">ユーティリティ: <ph name="UTILITY_TYPE" /></translation>
@@ -4686,6 +4701,7 @@
 <translation id="8037117027592400564">合成音声で読み上げたすべてのテキストの読み取り</translation>
 <translation id="8037357227543935929">確認(デフォルト)</translation>
 <translation id="803771048473350947">ファイル</translation>
+<translation id="8042142357103597104">テキストの透明度</translation>
 <translation id="8044899503464538266">遅い</translation>
 <translation id="8045253504249021590">同期は Google ダッシュボードで停止されています。</translation>
 <translation id="8045923671629973368">アプリケーション ID またはウェブストアの URL を入力します</translation>
@@ -4722,7 +4738,6 @@
     <ph name="BEGIN_PARAGRAPH5" />このサービスは [設定] でオフにできます。<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN が一致しません</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> は拡張機能のプロキシ設定を使用しています</translation>
-<translation id="8099495042588009598">その他の権限</translation>
 <translation id="8101987792947961127">次回の再起動時に Powerwash が必要</translation>
 <translation id="8102159139658438129">接続しているスマートフォン用のオプションを表示するには [<ph name="LINK_BEGIN" />設定<ph name="LINK_END" />] に移動してください</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> デバイスで Powerwash を実行し、以前のバージョンに戻します。</translation>
@@ -4774,8 +4789,10 @@
     このサイトはブロック不要です。</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" /> に切り替える</translation>
 <translation id="8184318863960255706">詳細</translation>
+<translation id="8184472985242519288">均一</translation>
 <translation id="8185331656081929126">ネットワーク上で新しいプリンタが検出されたときに通知を表示する</translation>
 <translation id="8186609076106987817">お探しのファイルはサーバーにはありません。</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> は次のフォルダのすべてのファイルを読み取ることができます。このサイトは、このタブが開いている間のみフォルダへの変更にアクセスできます。</translation>
 <translation id="8188389033983459049">続行するには、デバイスの設定で Bluetooth をオンにしてください</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> に接続中</translation>
 <translation id="8191230140820435481">アプリ、拡張機能、テーマを管理する</translation>
@@ -4879,9 +4896,8 @@
 <translation id="833986336429795709">このリンクを開くにはアプリを選択します</translation>
 <translation id="8342861492835240085">コレクションを選択</translation>
 <translation id="834290227245955730">無効な PIN です。入力できるのはあと <ph name="RETRIES" /> 回です。</translation>
-<translation id="8343956361364550006">動画やアニメーションを快適に表示するため、高帯域幅を使用します。接続速度が遅い他のユーザーにはコンテンツが表示されない場合があります。</translation>
 <translation id="8351419472474436977">この拡張機能によってプロキシ設定が制御されています。オンラインで行う操作は、この拡張機能によって変更、遮断、傍受される可能性があります。この変更が行われた理由に心当たりがない場合、これは不正な変更と考えられます。</translation>
-<translation id="8351630282875799764">電池の充電は行われていません</translation>
+<translation id="8351630282875799764">充電は行われていません</translation>
 <translation id="835238322900896202">アンインストール中にエラーが発生しました。ターミナルからアンインストールしてください。</translation>
 <translation id="8352772353338965963">マルチ ログインにアカウントを追加します。ログインしているすべてのアカウントにパスワードなしでアクセスできるようになるため、この機能は信頼できるアカウントでのみ使用してください。</translation>
 <translation id="8353683614194668312">次の権限にアクセス可能:</translation>
@@ -4912,9 +4928,11 @@
 <translation id="839736845446313156">登録</translation>
 <translation id="8398877366907290961">このまま続行</translation>
 <translation id="8400146488506985033">ユーザーを管理</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> は次のフォルダのファイルに変更を直接保存できます。このサイトは、このタブが開いている間のみ変更を保存できます。</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">最初に確認する(推奨)</translation>
 <translation id="8418445294933751433">タブで表示(&amp;S)</translation>
+<translation id="8418905021510211421">このページはデバイスのフォルダの読み取りが許可されています。</translation>
 <translation id="8419098111404128271">「<ph name="SEARCH_TEXT" />」の検索結果</translation>
 <translation id="8419368276599091549"><ph name="DEVICE_TYPE" /> へようこそ</translation>
 <translation id="8425213833346101688">変更</translation>
@@ -4934,6 +4952,7 @@
 <translation id="8438566539970814960">検索とブラウジングを改善する</translation>
 <translation id="8439506636278576865">この言語のページで翻訳ツールを表示する</translation>
 <translation id="8440630305826533614">Linux アプリ</translation>
+<translation id="844241640324986723">ログインデータを削除できませんでした。</translation>
 <translation id="8443338615972234259">監視対象ユーザー用の新しいアカウントを今すぐ作成してください。</translation>
 <translation id="8446884382197647889">詳細</translation>
 <translation id="8447409163267621480">Ctrl キーまたは Alt キーが必要です</translation>
@@ -4949,8 +4968,6 @@
 <translation id="8461914792118322307">プロキシ</translation>
 <translation id="8463215747450521436">この監視対象ユーザーは管理者によって削除されたか無効にされた可能性があります。引き続きこのユーザーとしてログインする場合は、管理者にお問い合わせください。</translation>
 <translation id="846374874681391779">ダウンロード バー</translation>
-<translation id="8463807869745732775">"&gt;
-    セキュリティ キーに保存済みのログインデータ</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> が無効になっています。</translation>
 <translation id="8464132254133862871">このユーザー アカウントはサービスを利用できません。</translation>
 <translation id="8465252176946159372">無効です</translation>
@@ -5016,6 +5033,7 @@
 <translation id="8569002732135253578">「<ph name="DOCUMENT_NAME" />」の印刷中</translation>
 <translation id="8569682776816196752">送信先が見つかりません</translation>
 <translation id="8571213806525832805">過去 4 週間</translation>
+<translation id="8573403125070227391">この広告は、デバイスのリソース消費が多すぎるため、Chorme によって削除されました。</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> の音声を常に許可する</translation>
 <translation id="8575286410928791436">終了するには <ph name="KEY_EQUIVALENT" /> キーを押します</translation>
 <translation id="8578639784464423491">99 文字までで指定してください</translation>
@@ -5039,13 +5057,13 @@
 <translation id="8609465669617005112">上に移動</translation>
 <translation id="8610103157987623234">無効な形式です。もう一度お試しください</translation>
 <translation id="8615618338313291042">シークレット モード アプリ: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">ドロップ シャドウ</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">ローミング状態</translation>
 <translation id="8620765578342452535">ネットワーク接続の設定</translation>
 <translation id="8621866727807194849">お使いのパソコンに有害なソフトウェアが見つかりました。現在 Chrome でこのソフトウェアの削除、設定の復元、拡張機能の無効化を行っています。処理が完了すると、ブラウザは正常に動作するようになります。</translation>
 <translation id="8621979332865976405">画面全体の共有</translation>
 <translation id="862542460444371744">拡張機能(&amp;E)</translation>
-<translation id="8627151598708688654">ソースを選択</translation>
 <translation id="862727964348362408">停止中</translation>
 <translation id="862750493060684461">CSS キャッシュ</translation>
 <translation id="8627795981664801467">セキュリティで保護された接続のみ</translation>
@@ -5099,6 +5117,7 @@
 <translation id="8688579245973331962">名前が見つからない場合</translation>
 <translation id="8688591111840995413">不正なパスワード</translation>
 <translation id="8688672835843460752">使用可能</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">場所を開く(&amp;L)...</translation>
 <translation id="869884720829132584">アプリケーション メニュー</translation>
 <translation id="869891660844655955">有効期限</translation>
@@ -5262,6 +5281,7 @@
 <translation id="891365694296252935">使用状況データや診断データを送信します。このデバイスは現在、診断データやデバイスとアプリの使用状況データを Google に自動送信するように設定されています。この情報を使ってお子様個人が特定されることはありません。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。この設定は所有者によって管理されています。お子様の [その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータはお子様の Google アカウントに保存されます。<ph name="BEGIN_LINK1" />詳細<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">候補を読み込んでいます</translation>
 <translation id="8916476537757519021">シークレット サブフレーム: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> はデバイスのフォルダの読み取りが許可されています</translation>
 <translation id="8919275547519617350">お使いのどのデバイスでも同じパスワードを使用するには、ログインして同期を有効にします。</translation>
 <translation id="8921366488406707015">セキュリティ キーの確認中...</translation>
 <translation id="8922013791253848639">このサイトで常に広告を許可します</translation>
@@ -5291,7 +5311,6 @@
 <translation id="8965037249707889821">古いパスワードを入力</translation>
 <translation id="8966870118594285808">間違って閉じたタブをもう一度開きます</translation>
 <translation id="8967866634928501045">Alt+Shift+A キーで表示します</translation>
-<translation id="8970203673128054105">キャストモード リストを表示</translation>
 <translation id="89720367119469899">エスケープ</translation>
 <translation id="8972513834460200407">ファイアウォールが Google のサーバーからのダウンロードをブロックしていないかどうかをネットワーク管理者に確認してください。</translation>
 <translation id="8973557916016709913">拡大縮小値の指定を削除</translation>
@@ -5440,6 +5459,7 @@
 <translation id="9214520840402538427">installation-time 属性の初期化がタイムアウトしました。サポート担当者にお問い合わせください。</translation>
 <translation id="9214695392875603905">カップケーキ</translation>
 <translation id="9215293857209265904">「<ph name="EXTENSION_NAME" />」が追加されました</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> は次のファイルに変更を直接保存できるようになります。このサイトは、このタブが開いている間のみ変更を保存できます。</translation>
 <translation id="9218430445555521422">デフォルトとして設定</translation>
 <translation id="9219103736887031265">画像</translation>
 <translation id="9220525904950070496">アカウントを削除</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index ae7c7b1f..a3a1a771 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ಪ್ರಾರಂಭಿಸುವಲ್ಲಿ ದೋಷ ಕಂಡುಬಂದಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="1089439967362294234">ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಿ</translation>
 <translation id="1090126737595388931">ಯಾವುದೇ ಹಿನ್ನೆಲೆ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಚಾಲನೆಯಲ್ಲಿಲ್ಲ</translation>
+<translation id="1090290614672149983">ಬದಲಾವಣೆಗಳನ್ನು ಮೂಲ ಫೈಲ್‌ನಲ್ಲಿ ಉಳಿಸಬೇಕೇ?</translation>
 <translation id="1090918500949388876">ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಆನ್ ಆಗಿರುವಾಗ, ಯಾವಾಗ ಬೇಕಾದರೂ "Ok Google" ಎಂದು ಹೇಳುವ ಮೂಲಕ ನಿಮ್ಮ ಅಸಿಸ್ಟೆಂಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ</translation>
 <translation id="1091767800771861448">ಸ್ಕಿಪ್‌ ಮಾಡಲು ESCAPE ಅನ್ನು ಒತ್ತಿರಿ (ಅಧಿಕೃತವಲ್ಲದ ಬಿಲ್ಡ್‌ಗಳಿಗೆ ಮಾತ್ರ).</translation>
 <translation id="1093457606523402488">ಗೋಚರಿಸುವ ನೆಟ್‌ವರ್ಕ್‌ಗಳು:</translation>
 <translation id="1094607894174825014">ಇದರಲ್ಲಿ ಅಮಾನ್ಯವಾದ ಆಫ್‌ಸೆಟ್ ಜೊತೆಗೆ ಓದುವ ಅಥವಾ ಬರೆಯುವ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ವಿನಂತಿಸಲಾಗಿದೆ: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">ಸೈನ್ ಇನ್ ಮಾಡುವ ಮುನ್ನ, <ph name="NETWORK_ID" /> ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಅತಿಥಿಯಾಗಿ ಪ್ರವೇಶಿಸಿ</translation>
+<translation id="110029732810301672">ಮೂಲ ಫೈಲ್‌ಗಳನ್ನು ಉಳಿಸಲು ಈ ಟ್ಯಾಬ್‌ಗೆ ಅನುಮತಿಯಿದೆ.</translation>
 <translation id="1103523840287552314">ಯಾವಾಗಲೂ ಅನುವಾದಿಸಿ <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;ನಿಲ್ಲಿಸು</translation>
 <translation id="1110155001042129815">ಕಾಯಿರಿ</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">ಸನ್‌ಗ್ಲಾಸ್‌ಗಳು</translation>
 <translation id="1151917987301063366">ಸೆನ್ಸರ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು <ph name="HOST" /> ಗೆ ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ</translation>
 <translation id="1153356358378277386">ಜೋಡಿ ಮಾಡಲಾದ ಸಾಧನಗಳು</translation>
-<translation id="1156488781945104845">ಪ್ರಸ್ತುತ ಸಮಯ</translation>
 <translation id="1161575384898972166">ಕ್ಲೈಂಟ್ ಪ್ರಮಾಣಪತ್ರವನ್ನು ರಫ್ತು ಮಾಡಲು <ph name="TOKEN_NAME" /> ಗೆ ದಯವಿಟ್ಟು ಸೈನ್ ಇನ್ ಆಗಿರಿ.</translation>
 <translation id="1163931534039071049">ಫ್ರೇಮ್ ಮೂಲವನ್ನು &amp;ವೀಕ್ಷಿಸಿ</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" /> ಗೆ Smart Lock ಆಫ್ ಮಾಡುವುದೇ?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player ಸಂಗ್ರಹಣೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="1274997165432133392">ಕುಕೀಗಳು ಮತ್ತು ಇತರ ಡೇಟಾ</translation>
 <translation id="127668050356036882">ನಿಮ್ಮ ಎಲ್ಲಾ ವಿಂಡೋಗಳನ್ನು ಮುಚ್ಚಿ</translation>
-<translation id="1277908057200820621">ಸಾಧನ ಪಟ್ಟಿಯನ್ನು ವೀಕ್ಷಿಸಿ</translation>
 <translation id="1280820357415527819">ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ</translation>
 <translation id="1285320974508926690">ಈ ಸೈಟ್ ಅನ್ನು ಎಂದಿಗೂ ಭಾಷಾಂತರಿಸದಿರಿ</translation>
 <translation id="1285484354230578868">ಡೇಟಾವನ್ನು ನಿಮ್ಮ Google ಡ್ರೈವ್ ಖಾತೆಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">ಮುಖಪುಟ ನೆಟ್‌ವರ್ಕ್, ರೋಮಿಂಗ್ ಇಲ್ಲ</translation>
 <translation id="1316136264406804862">ಹುಡುಕಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="1316495628809031177">ಸಿಂಕ್ ಅನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ</translation>
+<translation id="1317637799698924700">USB ಟೈಪ್-C ಗೆ ಹೊಂದಾಣಿಕೆಯಾಗುವ ಮೋಡ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಡಾಕಿಂಗ್ ಸ್ಟೇಶನ್ ಕೆಲಸ ಮಾಡುತ್ತದೆ.</translation>
 <translation id="1322046419516468189">ಉಳಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು <ph name="SAVED_PASSWORDS_STORE" /> ನಲ್ಲಿ ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="1326317727527857210">ನಿಮ್ಮ ಇತರ ಸಾಧನಗಳಿಂದ ನಿಮ್ಮ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು, Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
 <translation id="1327074568633507428">Google ಮೇಘ ಮುದ್ರಣದಲ್ಲಿ ಮುದ್ರಕ</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">ನಿಮ್ಮ <ph name="BEGIN_LINK" />ಬ್ರೌಸರ್ ಅನ್ನು<ph name="END_LINK" /> <ph name="ENROLLMENT_DOMAIN" /> ನಿರ್ವಹಿಸುತ್ತಿದೆ</translation>
 <translation id="1366177842110999534">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ Linux ಪರಿಕರಗಳು, ಎಡಿಟರ್‌ಗಳು ಮತ್ತು IDE ಗಳನ್ನು ರನ್ ಮಾಡಿ. &lt;a target="_blank" href="<ph name="URL" />"&gt;ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ&lt;/a&gt;</translation>
 <translation id="1367951781824006909">ಫೈಲ್‌ವೊಂದನ್ನು ಆರಿಸಿ</translation>
+<translation id="1370749010280229230">ಡಾಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿರುವ ಡಿಸ್‌ಪ್ಲೇಯಲ್ಲಿ ಸಮಸ್ಯೆಯಿದೆ</translation>
 <translation id="1371301976177520732">ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲೂ ಇರುವ ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌‌ಗಳು, ಇತಿಹಾಸ ಹಾಗೂ ಇನ್ನೂ ಹೆಚ್ಚಿನವುಗಳು</translation>
 <translation id="1372841398847029212">ನಿಮ್ಮ ಖಾತೆಗೆ ಸಿಂಕ್ ಮಾಡಿ</translation>
 <translation id="1374844444528092021">ಸ್ಥಾಪಿಸಲಾಗಿಲ್ಲದ ಇಲ್ಲವೇ ಎಂದಿಗೂ ಮಾನ್ಯತೆ ಪಡೆದಿರದ "<ph name="NETWORK_NAME" />" ನೆಟ್‌ವರ್ಕ್‌ನಿಂದ ಪ್ರಮಾಣಪತ್ರವು ಅಗತ್ಯವಾಗಿದೆ. ದಯವಿಟ್ಟು ಹೊಸ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಪಡೆಯಿರಿ ಮತ್ತು ಪುನಃ ಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸಿ.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">ವೆಬ್‌ಪುಟ, ಒಂದೇ ಫೈಲ್</translation>
 <translation id="1451917004835509682">ಮೇಲ್ವಿಚಾರಣೆ ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="1454223536435069390">ಸ್ಕ್ರೀ&amp;ನ್‌ಶಾಟ್‌ ತೆಗೆದುಕೊಳ್ಳಿ</translation>
+<translation id="1458243790901188746">{0,plural, =1{ಫೋಲ್ಡರ್: <ph name="DIRECTORIES" />}one{ಫೋಲ್ಡರ್‌ಗಳು: <ph name="DIRECTORIES" />}other{ಫೋಲ್ಡರ್‌ಗಳು: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">ವಿಸ್ತರಣೆಗಳಿಂದ ಸೇರಿಸಲಾದ ಎಂಜಿನ್‌ಗಳನ್ನು ಹುಡುಕಿರಿ</translation>
 <translation id="146000042969587795">ಈ ಫ್ರೇಮ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ ಏಕೆಂದರೆ ಅದು ಕೆಲವು ಅಸುರಕ್ಷಿತ ವಿಷಯವನ್ನು ಒಳಗೊಂಡಿದೆ</translation>
 <translation id="146219525117638703">ONC ಸ್ಥಿತಿ</translation>
@@ -445,6 +448,7 @@
 <translation id="1650371550981945235">ಇನ್‌ಪುಟ್‌ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸು</translation>
 <translation id="1651008383952180276">ನೀವು ಒಂದೇ ಪಾಸ್‌ಫ್ರೇಸ್ ಅನ್ನು ಎರಡು ಬಾರಿ ನಮೂದಿಸಬೇಕು</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{ಪ್ರಿಂಟರ್ ಅನ್ನು Google ಮೇಘ ಪ್ರಿಂಟ್‌ಗೆ ಸೇರಿಸಿ, ಈ ಮೂಲಕ ನೀವು ಎಲ್ಲಿಂದಲಾದರೂ ಪ್ರಿಂಟ್ ಮಾಡಬಹುದು.}one{# ಪ್ರಿಂಟರ್‌ಗಳನ್ನು Google ಮೇಘ ಪ್ರಿಂಟ್‌ಗೆ ಸೇರಿಸಿ, ಈ ಮೂಲಕ ನೀವು ಎಲ್ಲಿಂದಲಾದರೂ ಪ್ರಿಂಟ್ ಮಾಡಬಹುದು.}other{# ಪ್ರಿಂಟರ್‌ಗಳನ್ನು Google ಮೇಘ ಪ್ರಿಂಟ್‌ಗೆ ಸೇರಿಸಿ, ಈ ಮೂಲಕ ನೀವು ಎಲ್ಲಿಂದಲಾದರೂ ಪ್ರಿಂಟ್ ಮಾಡಬಹುದು.}}</translation>
+<translation id="1656528038316521561">ಹಿನ್ನೆಲೆ ಅಪಾರದರ್ಶಕತೆ</translation>
 <translation id="1657406563541664238">Google ಗೆ ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳು ಮತ್ತು ಕ್ರ್ಯಾಶ್ ವರದಿಯನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುವ ಮೂಲಕ <ph name="PRODUCT_NAME" /> ಅನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡಿ</translation>
 <translation id="1658424621194652532">ಈ ಪುಟವು ನಿಮ್ಮ ಮೈಕ್ರೋಫೋನ್ ಪ್ರವೇಶಿಸುತ್ತಿದೆ.</translation>
 <translation id="1660204651932907780">ಧ್ವನಿಯನ್ನು ಪ್ಲೇ ಮಾಡಲು ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
@@ -460,6 +464,7 @@
 <translation id="1673137583248014546">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಯ ತಯಾರಕರ ಬ್ರಾಂಡ್ ಹೆಸರು  ಮತ್ತು ಮಾದರಿಯನ್ನು <ph name="URL" /> ನೋಡಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="1679068421605151609">ಡೆವಲಪರ್ ಟೂಲ್ಸ್</translation>
 <translation id="1679806121152819234">VM ಅನ್ನು ಪ್ಲಗ್‌ಇನ್ ಮಾಡಿ</translation>
+<translation id="1679810534535368772">ನೀವು ಖಚಿತವಾಗಿಯೂ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?</translation>
 <translation id="167983332380191032">ನಿರ್ವಹಣಾ ಸೇವೆಯು HTTP ದೋಷ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಿದೆ.</translation>
 <translation id="1680849702532889074">ನಿಮ್ಮ Linux ಅಪ್ಲಿಕೇಶನ್‌ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವಾಗ ದೋಷವೊಂದು ಸಂಭವಿಸಿದೆ.</translation>
 <translation id="16815041330799488">ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ನಕಲಿಸಿರುವ ಪಠ್ಯ ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ನೋಡಲು ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿ ನೀಡಬೇಡಿ</translation>
@@ -511,6 +516,7 @@
 <translation id="1746402432151920942">ಸಂರಕ್ಷಿಸಿದ ಮೀಡಿಯಾ ಗುರುತಿಸುವಿಕೆ</translation>
 <translation id="175196451752279553">ಮುಚ್ಚಿದ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮತ್ತೆ ತೆರೆಯಿರಿ</translation>
 <translation id="1753905327828125965">ಅತಿಹೆಚ್ಚು ಬಾರಿ ಸಂದರ್ಶಿಸಿರುವುದು</translation>
+<translation id="1755601632425835748">ಪಠ್ಯದ ಗಾತ್ರ</translation>
 <translation id="1756681705074952506">ಇನ್‌ಪುಟ್ ವಿಧಾನ</translation>
 <translation id="1757301747492736405">ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವುದು ಬಾಕಿಯಿದೆ</translation>
 <translation id="175772926354468439">ಥೀಮ್ ಸಕ್ರಿಯಗೊಳಿಸು</translation>
@@ -630,6 +636,7 @@
 <translation id="1918141783557917887">&amp;ಚಿಕ್ಕದು</translation>
 <translation id="1919345977826869612">ಜಾಹೀರಾತುಗಳು</translation>
 <translation id="1919814239594435008">ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ರದ್ದುಗೊಳಿಸಲಾಗಿರುವ ಪ್ಲಗ್ ಇನ್‌ಗೆ ಅನುಮತಿಯಿದೆ</translation>
+<translation id="1920390473494685033">ಸಂಪರ್ಕಗಳು</translation>
 <translation id="1921050530041573580">ಸಂದೇಶಗಳ ಜೊತೆಗೆ ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಜೋಡಿಸಿ</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" /> ನಲ್ಲಿ Google ಸ್ಮಾರ್ಟ್ಸ್ ಪಡೆಯಿರಿ</translation>
@@ -786,6 +793,7 @@
 <translation id="2177950615300672361">ಅದೃಶ್ಯ ಟ್ಯಾಬ್: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> ನಲ್ಲಿ ಇರುವ <ph name="PEPPER_PLUGIN_DOMAIN" />, ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ಗೆ ಪ್ರವೇಶಿಸಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="2178614541317717477">CA ಹೊಂದಾಣಿಕೆ</translation>
+<translation id="2179849162388791084">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಯಿಂದ ಸೈನ್-ಇನ್ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ವಿಫಲವಾಗಿದೆ.</translation>
 <translation id="218070003709087997">ಎಷ್ಟು ಪ್ರತಿಗಳನ್ನು ಮುದ್ರಿಸಬೇಕೆಂದು (1 ರಿಂದ 999) ಸೂಚಿಸಲು ಸಂಖ್ಯೆಯನ್ನು ಬಳಸಿ.</translation>
 <translation id="2184515124301515068">ಯಾವ ಸೈಟ್‌ಗಳು ಧ್ವನಿಯನ್ನು ಪ್ಲೇ ಮಾಡಬೇಕು ಎಂಬುದನ್ನು Chrome ಆಯ್ಕೆ ಮಾಡಲಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="2187895286714876935">ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರದ ಆಮದು ದೋಷ</translation>
@@ -864,7 +872,6 @@
 <translation id="2277255602909579701">ಎಲ್ಲ ಕುಕೀಗಳು ಮತ್ತು ಸೈಟ್ ಡೇಟಾ</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 ಐಟಂ ನಕಲಿಸಲಾಗಿದೆ}one{# ಐಟಂಗಳನ್ನು ನಕಲಿಸಲಾಗಿದೆ}other{# ಐಟಂಗಳನ್ನು ನಕಲಿಸಲಾಗಿದೆ}}</translation>
 <translation id="2278562042389100163">ಬ್ರೌಸರ್ ವಿಂಡೋವನ್ನು ತೆರೆಯಿರಿ</translation>
-<translation id="2279874276457403668">ಒಂದೇ ಬಾರಿಗೆ ಕೇವಲ ಒಂದು ಸೆಷನ್ ಮಾತ್ರ ರಚಿಸಲು ಸಾಧ್ಯ.</translation>
 <translation id="2280486287150724112">ಬಲ ಅಂಚು</translation>
 <translation id="2282146716419988068">GPU ಪ್ರಕ್ರಿಯೆ</translation>
 <translation id="2282155092769082568">ಸ್ವಯಂ ಕಾನ್ಫಿಗರೇಶನ್ URL:</translation>
@@ -917,7 +924,6 @@
 <translation id="2352810082280059586">ಲಾಕ್ ಪರದೆ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ <ph name="LOCK_SCREEN_APP_NAME" /> ನಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಇತ್ತೀಚಿನ ಟಿಪ್ಪಣಿಯು ಲಾಕ್ ಪರದೆಯಲ್ಲಿರುತ್ತದೆ.</translation>
 <translation id="2353297238722298836">ಕ್ಯಾಮೆರಾ ಮತ್ತು ಮೈಕ್ರೊಫೋನ್ ಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ</translation>
 <translation id="2356070529366658676">ಕೇಳಿ</translation>
-<translation id="2357949918965361754">ನಿಮ್ಮ ಟಿವಿ ಅಥವಾ ಇತರ ಸಾಧನಗಳಲ್ಲಿ Chromium ನಿಂದ ವಿಷಯವನ್ನು ಪ್ರದರ್ಶಿಸಲು ನೀವು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಬಹುದು,</translation>
 <translation id="2359345697448000899">ಪರಿಕರಗಳ ಮೆನುವಿನಲ್ಲಿರುವ ‘ವಿಸ್ತರಣೆಗಳು’ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ನಿಮ್ಮ ವಿಸ್ತರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ.</translation>
 <translation id="2359808026110333948">ಮುಂದುವರೆಸಿ</translation>
 <translation id="236117173274098341">ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿ</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">ನಿಮ್ಮ ಸಂಸ್ಥೆಗೆ ಈ ಸಾಧನವನ್ನು ಈಗಲೇ ಅಪ್‌ಡೇಟ್ ಮಾಡುವ ಅಗತ್ಯವಿರುತ್ತದೆ</translation>
 <translation id="2439545803278355377">ನಿಮ್ಮ ಹೊಸ ಪಿನ್ ನಮೂದಿಸಿ ಪಿನ್‌ನಲ್ಲಿ ಕನಿಷ್ಠ ನಾಲ್ಕು ಕ್ಯಾರೆಕ್ಟರ್‌ಗಳಿರಬೇಕು ಮತ್ತು ಅದರಲ್ಲಿ ಅಕ್ಷರಗಳು, ಅಂಕಿಗಳು ಹಾಗೂ ಇತರ ಕ್ಯಾರೆಕ್ಟರ್‌ಗಳು ಇರಬಹುದು.</translation>
 <translation id="2440604414813129000">ಮೂ&amp;ಲವನ್ನು ವೀಕ್ಷಿಸಿ</translation>
+<translation id="2442916515643169563">ಪಠ್ಯದ ನೆರಳು</translation>
 <translation id="2444119669991608829">ಪುಟವು <ph name="LANGUAGE" /> ಭಾಷೆಯಲ್ಲಿಲ್ಲವೇ ?</translation>
 <translation id="2445081178310039857">ವಿಸ್ತರಣೆ ಮೂಲ ಡೈರೆಕ್ಟರಿ ಅಗತ್ಯವಿದೆ.</translation>
 <translation id="2445484935443597917">ಹೊಸ ಪ್ರೊಫೈಲ್ ರಚಿಸಿ</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">ನಂತರ ಅಲ್ಲ</translation>
 <translation id="2739191690716947896">ಡೀಬಗ್</translation>
 <translation id="2739240477418971307">ನಿಮ್ಮ ಪ್ರವೇಶಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ</translation>
+<translation id="274029851662193272">ಕುಗ್ಗಿಸಲಾಗಿದೆ</translation>
 <translation id="2740393541869613458">ಮೇಲ್ವಿಚಾರಣೆಯ ಬಳಕೆದಾರರು ಭೇಟಿ ನೀಡಿರುವ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಮತ್ತು</translation>
 <translation id="2741912629735277980">UI ಅನ್ನು ಲಾಗಿನ್ ಪರದೆಯಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿ</translation>
 <translation id="274290345632688601">Linux ಆ್ಯಪ್‌ಗಳು &amp; ಫೈಲ್‌ಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">ಶಾರ್ಟ್‌ಕಟ್ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ</translation>
 <translation id="2807517655263062534">ನೀವು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್‌ಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ</translation>
 <translation id="2809586584051668049">ಮತ್ತು <ph name="NUMBER_ADDITIONAL_DISABLED" /> ಇನ್ನಷ್ಟು</translation>
+<translation id="2812049959647166806">ಥಂಡರ್‌ಬೋಲ್ಟ್‌ಗೆ ಬೆಂಬಲವಿಲ್ಲ</translation>
 <translation id="2812944337881233323">ಸೈನ್ ಔಟ್ ಮಾಡಲು ಹಾಗೂ ಮರಳಿ ಸೈನ್ ಇನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="2812989263793994277">ಯಾವುದೇ ಚಿತ್ರಗಳನ್ನು ತೋರಿಸದಿರಿ</translation>
 <translation id="281390819046738856">ವಿನಂತಿಗೆ ಸಹಿ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">ಪೂರೈಕೆದಾರರು</translation>
 <translation id="2844169650293029770">USB-C ಸಾಧನ (ಎಡ ಭಾಗದ ಮುಂದಿನ ಪೋರ್ಟ್‌)</translation>
 <translation id="2845382757467349449">ಯಾವಾಗಲೂ ಬುಕ್‌ಮಾರ್ಕ್‌ ಪಟ್ಟಿ ತೋರಿಸು</translation>
-<translation id="2847759467426165163">ಗೆ ಬಿತ್ತರಿಸಿ</translation>
 <translation id="284805635805850872">ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು ತೆಗೆದುಹಾಕುವಿರಾ?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">ಕ್ಲೀನಪ್ ವಿಫಲವಾಗಿದೆ</translation>
@@ -1297,6 +1305,7 @@
     ಸರ್ವರ್ ಸಂದೇಶ: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">ಡೈರೆಕ್ಟರಿಯ ಮೂಲಕ ಮಾಧ್ಯಮ ಗ್ಯಾಲರಿ ಸೇರಿಸಿ</translation>
 <translation id="2910318910161511225">ನೆಟ್‍ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation>
+<translation id="2910518940971897750">ಮೂಲ ಫೈಲ್‌ನಲ್ಲಿ ಉಳಿಸಿ</translation>
 <translation id="2913331724188855103">ಕುಕೀ ಡೇಟಾವನ್ನು ಉಳಿಸಲು ಮತ್ತು ರೀಡ್ ಮಾಡಲು ಸೈಟ್‌ಗಳನ್ನು ಅನುಮತಿಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="2915102088417824677">ಚಟುವಟಿಕೆ ಲಾಗ್ ಅನ್ನು ವೀಕ್ಷಿಸಿ</translation>
 <translation id="2915873080513663243">ಸ್ವಯಂ-ಸ್ಕ್ಯಾನ್</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI ಸಾಧನಗಳು</translation>
 <translation id="3015639418649705390">ಇದೀಗ ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಸುಧಾರಿತ ಪ್ರಿಂಟರ್ ವಿವರಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ.</translation>
+<translation id="3016381065346027039">ಲಾಗ್ ನಮೂದುಗಳಿಲ್ಲ</translation>
 <translation id="3016641847947582299">ಕಾಂಪೊನೆಂಟ್ ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="3016780570757425217">ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ತಿಳಿದುಕೊಳ್ಳಿ</translation>
 <translation id="3017079585324758401">ಹಿನ್ನೆಲೆ</translation>
 <translation id="3020183492814296499">ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು</translation>
 <translation id="3020990233660977256">ಕ್ರಮ ಸಂಖ್ಯೆ: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">ಚಿಟ್ಟೆ</translation>
+<translation id="3021408157810018664">ಬದಲಾವಣೆಗಳನ್ನು ಮೂಲ ಫೈಲ್‌ಗಳಲ್ಲಿ ಉಳಿಸಬೇಕೇ?</translation>
 <translation id="3021426244864538700">ಈ ಸೈಟ್‌ನ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="3021678814754966447">ಫ್ರೇಮ್ ಮೂಲವನ್ನು &amp;ವೀಕ್ಷಿಸಿ</translation>
 <translation id="3022978424994383087">ಅದು ಅರ್ಥವಾಗಲಿಲ್ಲ.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">ನೀವು ಸೈನ್ ಇನ್ ಮಾಡುವುದನ್ನು ಸ್ಕಿಪ್‌ ಮಾಡಬಹುದು ಹಾಗೂ <ph name="LINK_START" />ಅತಿಥಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡಬಹುದು<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">ವೀಡಿಯೊ ಇನ್‌ಪುಟ್ ಅನ್ನು ಒಂದು ಸೈಟ್ ಪ್ರವೇಶಿಸುತ್ತಿದೆ</translation>
 <translation id="3177909033752230686">ಪುಟದ ಭಾಷೆ:</translation>
+<translation id="3179982752812949580">ಪಠ್ಯದ ಫಾಂಟ್</translation>
 <translation id="3181954750937456830">ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ (ಅಪಾಯಕಾರಿ ಸೈಟ್‌ಗಳಿಂದ ನಿಮ್ಮನ್ನು ಮತ್ತು ನಿಮ್ಮ ಸಾಧನವನ್ನು ರಕ್ಷಿಸುತ್ತದೆ)</translation>
 <translation id="3182749001423093222">ಕಾಗುಣಿತ ಪರಿಶೀಲನೆ</translation>
 <translation id="3183139917765991655">ಪ್ರೊಫೈಲ್ ಆಮದುದಾರ</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">ವಿಂಡೊ ಅಂತೆ ತೆರೆಯಿರಿ</translation>
 <translation id="3278001907972365362">ನಿಮ್ಮ Google ಖಾತೆಗಳ ಮೇಲೆ ಗಮನಹರಿಸಬೇಕಿದೆ</translation>
 <translation id="3279230909244266691">ಈ ಪ್ರಕ್ರಿಯೆಯು ಕೆಲವು ನಿಮಿಷಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ.</translation>
-<translation id="3279741024917655738">ಇದರಲ್ಲಿ ಪೂರ್ಣಪರದೆಯ ವೀಡಿಯೊಗಳನ್ನು ತೋರಿಸಿ</translation>
 <translation id="3280237271814976245">&amp;ಇದರಂತೆ ಉಳಿಸು</translation>
 <translation id="3280243678470289153">Chrome ನಲ್ಲೇ ಮುಂದುವರಿಯಿರಿ</translation>
 <translation id="3281892622610078515">ಕ್ವಾರಂಟೈನ್ ಫೋಲ್ಡರ್‌ಗೆ ಸರಿಸಲಾಗುವ ಫೈಲ್‍ಗಳು ಮತ್ತು ಪ್ರೋಗ್ರಾಂಗಳು:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">ಯಾವುದೇ ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳು ಕಂಡುಬಂದಿಲ್ಲ</translation>
 <translation id="3305389145870741612">ಸ್ವರೂಪಣೆಯ ಪ್ರಕ್ರಿಯೆಯು ಕೆಲವು ಸೆಕೆಂಡ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ.</translation>
 <translation id="3305661444342691068">PDF ಅನ್ನು ಪೂರ್ವವೀಕ್ಷಣೆಯಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
-<translation id="3306684685104080068">Google Hangouts ನಂತಹ ಕ್ಲೌಡ್ ಆಧಾರಿತ ಸೇವೆಗಳಿಗೆ ಬಿತ್ತರಿಸುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation>
+<translation id="3307871847038842490">ಮೂಲ ಫೈಲ್‌ಗಳನ್ನು ಉಳಿಸಲು ಈ ಪುಟವು ಅನುಮತಿಯನ್ನು ಹೊಂದಿದೆ.</translation>
 <translation id="3308006649705061278">ಸಂಸ್ಥೆ ಘಟಕ (OU)</translation>
 <translation id="3308116878371095290">ಕುಕ್ಕಿಗಳನ್ನು ಹೊಂದಿಸದಂತೆ ಈ ಪುಟವನ್ನು ತಡೆಗಟ್ಟಲಾಗಿದೆ.</translation>
 <translation id="3308134619352333507">ಬಟನ್ ಅನ್ನು ಮರೆಮಾಡು</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">ಖಾತೆ ಸೆಟಪ್ ರದ್ದುಗೊಳಿಸುವುದೇ?</translation>
 <translation id="3464012987031883895">ಆಡಿಯೋ ಇನ್‌ಪುಟ್ ಅನ್ನು ಒಂದು ಸೈಟ್ ಪ್ರವೇಶಿಸುತ್ತಿದೆ</translation>
 <translation id="346431825526753"><ph name="CUSTODIAN_EMAIL" /> ಅವರು ನಿರ್ವಹಿಸುವ ಮಕ್ಕಳಿಗೆ ಖಾತೆಯಾಗಿದೆ.</translation>
-<translation id="3468275649641751422">ವೀಡಿಯೊ ಅಥವಾ ಆಡಿಯೋ ಸ್ಟ್ರೀಮ್ ಫೈಲ್</translation>
 <translation id="3468999815377931311">Android ಫೋನ್</translation>
 <translation id="3470442499439619530">ಈ ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="3473479545200714844">ಪರದೆ ವರ್ಧಕ</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">ಝೂಮ್ ಔಟ್</translation>
 <translation id="3497560059572256875">ಡೂಡಲ್ ಹಂಚಿಕೊಳ್ಳಿ</translation>
 <translation id="3505030558724226696">ಸಾಧನ ಪ್ರವೇಶವನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ</translation>
+<translation id="3505635633742443645">ವೀಡಿಯೊ ಔಟ್‌ಪುಟ್‌ಗಾಗಿ USB ಟೈಪ್-C ಪೋರ್ಟ್ ಅನ್ನು ಬಳಸುವಾಗ ನಿಮ್ಮ ಡಾಕ್‌ನ HDMI ಪೋರ್ಟ್ ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಡಿಸ್‌ಪ್ಲೇಗಾಗಿ ಬೇರೆ ಪೋರ್ಟ್ ಅನ್ನು ಬಳಸಿ.</translation>
 <translation id="3507421388498836150">"<ph name="EXTENSION_NAME" />" ಗೆ ಪ್ರಸ್ತುತ ಅನುಮತಿಗಳು</translation>
 <translation id="3507888235492474624">ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ಮರು-ಸ್ಕ್ಯಾನ್ ಮಾಡಿ</translation>
 <translation id="3508920295779105875">ಮತ್ತೊಂದು ಫೋಲ್ಡರ್ ಆಯ್ಕೆ ಮಾಡಿ...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">ಯಶಸ್ವಿಯಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ</translation>
 <translation id="3578594933904494462">ಈ ಟ್ಯಾಬ್ ವಿಷಯವನ್ನು ಹಂಚಲಾಗುತ್ತಿದೆ.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; ಅವರು ನೀವು ಹೊಂದಿರುವ ಸಮೂಹದ ಜೊತೆ &lt;strong&gt; <ph name="PRINTER_NAME" />&lt;/strong&gt; ಪ್ರಿಂಟರ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಬಯಸುತ್ತಾರೆ: &lt;strong&gt; <ph name="GROUP_NAME" />&lt;/strong&gt;. ನೀವು ಅಂಗೀಕರಿಸಿದಲ್ಲಿ, ಗುಂಪಿನ ಎಲ್ಲಾ ಸದಸ್ಯರಿಗೂ ಪ್ರಿಂಟರ್‌ಗೆ ಮುದ್ರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.</translation>
+<translation id="357889014807611375">ಮಾಪನ ಮಾಡಿದ ವೈ-ಫೈ</translation>
 <translation id="3584169441612580296">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಿಂದ ಫೋಟೋಗಳು, ಸಂಗೀತ, ಮತ್ತು ಇತರ ಮಾಧ್ಯಮವನ್ನು ಓದಿ ಮತ್ತು ಬದಲಿಸಿ</translation>
 <translation id="3587482841069643663">ಎಲ್ಲ</translation>
 <translation id="358796204584394954">"<ph name="DEVICE_NAME" />" ಗೆ ಜೋಡಿ ಮಾಡಲು ಈ ಕೋಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Enter</translation>
 <translation id="3593965109698325041">ಪ್ರಮಾಣಪತ್ರ ಹೆಸರು ನಿರ್ಬಂಧಗಳು</translation>
 <translation id="3596235046596950091">ಮೇಘ ಸೇವೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
+<translation id="3599221874935822507">ಎತ್ತರಿಸಲಾಗಿದೆ</translation>
 <translation id="3599863153486145794">ಸೈನ್-ಇನ್ ಮಾಡಿರುವ ಎಲ್ಲ ಸಾಧನಗಳಿಂದ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ. ನಿಮ್ಮ Google ಖಾತೆಯು <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ನಲ್ಲಿ ಇತರ ವಿಧಗಳ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿರಬಹುದು.</translation>
 <translation id="3600051066689725006">ವೆಬ್ ಕೋರಿಕೆ ಮಾಹಿತಿ</translation>
 <translation id="3600792891314830896">ಕೆಲವು ಸೈಟ್‌ಗಳಲ್ಲಿ ಧ್ವನಿ ಪ್ಲೇ ಆಗುವುದನ್ನು ಮ್ಯೂಟ್ ಮಾಡಿ</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; ನಿಂದ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> ತೋರಿಸು</translation>
 <translation id="3613422051106148727">ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ &amp;ತೆರೆಯಿರಿ</translation>
+<translation id="3615073365085224194">ನಿಮ್ಮ ಬೆರಳಿನ ಮೂಲಕ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ</translation>
 <translation id="3616113530831147358">ಆಡಿಯೋ</translation>
 <translation id="3616741288025931835">ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು &amp;ತೆರವುಗೊಳಿಸಿ...</translation>
 <translation id="3617891479562106823">ಹಿನ್ನೆಲೆಗಳ ಕಸ್ಟಮೈಸೇಶನ್‌ ಲಭ್ಯವಿಲ್ಲ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">ಮುಖಪುಟ</translation>
 <translation id="3720996970802414353">ಪರವಾಗಿಲ್ಲ, ಬದಲಾಯಿಸಿ</translation>
 <translation id="3722108462506185496">ವರ್ಚುವಲ್ ಯಂತ್ರದ ಸೇವೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವಲ್ಲಿ ದೋಷ ಕಂಡುಬಂದಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
-<translation id="3723158278575423087">Chromium ನಲ್ಲಿನ ಬಿತ್ತರಿಸು ಅನುಭವಕ್ಕೆ ಸುಸ್ವಾಗತ!</translation>
 <translation id="3725367690636977613">ಪುಟಗಳು</translation>
 <translation id="3726137731714254362">ಇಲ್ಲಿಂದ ಫೋಲ್ಡರ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಿದರೆ, ಹಂಚಿಕೊಳ್ಳುವುದನ್ನು ನಿಲ್ಲಿಸಲಾಗುತ್ತದೆ ಆದರೆ ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="3727148787322499904">ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬದಲಾಯಿಸುವುದರಿಂದ ಎಲ್ಲಾ ಹಂಚಿತ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">ವಿವರವಾದ ಬಿಲ್ಡ್ ಮಾಹಿತಿ</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{USB ಸಾಧನದೊಂದಿಗೆ ಸಂವಹನ ಮಾಡಿ}one{# USB ಸಾಧನಗಳೊಂದಿಗೆ ಸಂವಹನ ಮಾಡಿ}other{# USB ಸಾಧನಗಳೊಂದಿಗೆ ಸಂವಹನ ಮಾಡಿ}}</translation>
 <translation id="3765246971671567135">ಆಫ್‌ಲೈನ್ ಡೆಮೊ ಮೋಡ್ ಕಾರ್ಯನೀತಿಯನ್ನು ಓದಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation>
-<translation id="3766223500670287046">ರಿಮೋಟ್ ಪರದೆ</translation>
 <translation id="3768037234834996183">ನಿಮ್ಮ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="377050016711188788">ಐಸ್ ಕ್ರೀಂ</translation>
 <translation id="3771294271822695279">ವೀಡಿಯೊ ಫೈಲ್‌ಗಳು</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">ಎತ್ತಿರಿ, ನಂತರ ಪುನಃ ಸ್ಪರ್ಶಿಸಿ</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: ಸಿಂಕ್ ಮಾಡುವುದನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ</translation>
-<translation id="3862134173397075045">Chrome ನಲ್ಲಿನ ಬಿತ್ತರಿಸು ಅನುಭವಕ್ಕೆ ಸುಸ್ವಾಗತ!</translation>
 <translation id="3862693525629180217">ಅಂತರ್ನಿರ್ಮಿತ ಸೆನ್ಸರ್‌ಗಳ ಮೂಲಕ ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="3862788408946266506">ChromeOS ಕಿಯೋಸ್ಕ್ ಮೋಡ್‌ನಲ್ಲಿ 'kiosk_only' ಮ್ಯಾನಿಫೆಸ್ಟ್‌ ಲಕ್ಷಣವನ್ನು ಹೊಂದಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ ಅನ್ನು ಇನ್‍ಸ್ಟಾಲ್ ಮಾಡಿರಬೇಕು</translation>
 <translation id="3865414814144988605">ರೆಸಲ್ಯೂಶನ್</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smart Lock ಫೋನ್ ಬದಲಾಯಿಸಲಾಗಿದೆ</translation>
 <translation id="3927932062596804919">ನಿರಾಕರಿಸಿ</translation>
 <translation id="3930737994424905957">ಸಾಧನಗಳನ್ನು ಹುಡುಕಲಾಗುತ್ತಿದೆ</translation>
+<translation id="3930968231047618417">ಹಿನ್ನೆಲೆ ಬಣ್ಣ</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> ಗಾಗಿ ಅಳಿಸಲಾದ  ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಿ</translation>
 <translation id="3936390757709632190">&amp;ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ಆಡಿಯೋ ತೆರೆಯಿರಿ</translation>
 <translation id="3936925983113350642">ನಂತರ ಈ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ನೀವು ಆಯ್ಕೆಮಾಡಿದ ಪಾಸ್‌ವರ್ಡ್ ಅಗತ್ಯವಿರುತ್ತದೆ. ದಯವಿಟ್ಟು ಸುರಕ್ಷಿತ ಸ್ಥಳದಲ್ಲಿ ಅದನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿ.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE ಯಿಂದ ಆಮದುಗೊಂಡಿದೆ</translation>
 <translation id="3950820424414687140">ಸೈನ್ ಇನ್</translation>
+<translation id="3950828138786918475">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿರುವ ಫೋಲ್ಡರ್ ಅನ್ನು ಓದಲು ಈ ಟ್ಯಾಬ್‌ಗೆ ಅನುಮತಿಯಿದೆ.</translation>
 <translation id="3954354850384043518">ಪ್ರಗತಿಯಲ್ಲಿದೆ</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> ಹರ್ಟ್ಜ್‌)</translation>
 <translation id="3954953195017194676">ನಿಮ್ಮಲ್ಲಿ ಇತ್ತೀಚೆಗೆ ಕ್ಯಾಪ್ಚರ್‌ ಆಗಿರುವ WebRTC ಈವೆಂಟ್‌ ಲಾಗ್‌ಗಳು ಇಲ್ಲ.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">ಎಣಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="3975565978598857337">ಕ್ಷೇತ್ರಕ್ಕಾಗಿ ಸರ್ವರ್ ಸಂಪರ್ಕಿಸುವುದು ವಿಫಲವಾಗಿದೆ</translation>
 <translation id="397703832102027365">ಅಂತಿಮಗೊಳಿಸಲಾಗುತ್ತಿದೆ...</translation>
+<translation id="3977886311744775419">ಈ ಪ್ರಕಾರದ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತ ಅಪ್‌ಡೇಟ್‌ಗಳು ಡೌನ್‌ಲೋಡ್ ಆಗುವುದಿಲ್ಲ, ಆದರೆ ಅಪ್‌ಡೇಟ್‌ಗಳಿವೆಯೇ ಎಂದು ನೀವು ಹಸ್ತಚಾಲಿತವಾಗಿ ಪರಿಶೀಲಿಸಬಹುದು.</translation>
 <translation id="3979395879372752341">ಹೊಸ ವಿಸ್ತರಣೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> ಸಕ್ರಿಯಗೊಳಿಸು</translation>
 <translation id="3981760180856053153">ಅಮಾನ್ಯವಾದ ಉಳಿಸು ಪ್ರಕಾರವನ್ನು ನಮೂದಿಸಲಾಗಿದೆ.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">ಕ್ಲಿಕ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="4195643157523330669">ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="4195814663415092787">ಎಲ್ಲಿ ಬಿಡಲಾಗಿದೆಯೋ ಅಲ್ಲಿಂದಲೇ ಮುಂದುವರೆ</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" />, ನೀವು ಮಾಡುವ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಕೆಳಗಿನ ಫೈಲ್‌ಗಳಲ್ಲಿ ನೇರವಾಗಿ ಉಳಿಸಬಹುದು. ಈ ಟ್ಯಾಬ್ ತೆರೆದಿರುವಾಗ ಮಾತ್ರ ಈ ಸೈಟ್, ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಬಹುದು.</translation>
 <translation id="4198146608511578238">ನಿಮ್ಮ Google ಸಹಾಯಕದೊಂದಿಗೆ ಮಾತನಾಡಲು ಲಾಂಚರ್‌ ಐಕಾನ್‌ ಅನ್ನು ಇರಿಸಿಕೊಳ್ಳಿ</translation>
 <translation id="4200689466366162458">ಕಸ್ಟಮ್ ಪದಗಳು</translation>
 <translation id="4200983522494130825">ಹೊಸ &amp;ಟ್ಯಾಬ್</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೆಲ್ಯುಲರ್ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ</translation>
 <translation id="4268025649754414643">ಕೀ ಎನ್ಸಿಫರ್ಮೆಂಟ್</translation>
 <translation id="4270393598798225102">ಆವೃತ್ತಿ <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">ಯಾವುದೇ ಹೊಂದಾಣಿಕೆಗಳಿಲ್ಲ</translation>
 <translation id="4275663329226226506">ಮಾದ್ಯಮ</translation>
 <translation id="4275830172053184480">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="4278101229438943600">ನಿಮ್ಮ ಅಸಿಸ್ಟೆಂಟ್ ಸಿದ್ಧವಾಗಿದೆ</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">CPU ಸಮಯ</translation>
 <translation id="4534661889221639075">ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="4535127706710932914">ಡಿಫಾಲ್ಟ್ ಪ್ರೊಫೈಲ್</translation>
+<translation id="4535767533210902251">ನಿಮ್ಮ ಕೀಬೋರ್ಡ್‌ನಲ್ಲಿ ಮೇಲೆ ಬಲತುದಿಯಲ್ಲಿರುವ ಕೀ, ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಆಗಿದೆ. ಯಾವುದೇ ಬೆರಳಿನ ಮೂಲಕ ಅದನ್ನು ಮೆಲ್ಲಗೆ ಸ್ಪರ್ಶಿಸಿ.</translation>
 <translation id="4538684596480161368"><ph name="HOST" /> ನಲ್ಲಿ ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ರದ್ದುಗೊಳಿಸಲಾಗಿರುವ ಪ್ಲಗ್-ಇನ್‌ಗಳನ್ನು ಯಾವಾಗಲೂ ನಿರ್ಬಂಧಿಸು</translation>
 <translation id="4538792345715658285">ಎಂಟರ್‌ಪ್ರೈಸ್ ನೀತಿಯಿಂದ ಸ್ಥಾಪಿಸಲಾಗಿದೆ.</translation>
 <translation id="4542520061254486227">ನಿಮ್ಮ ಡೇಟಾವನ್ನು <ph name="WEBSITE_1" /> ಮತ್ತು <ph name="WEBSITE_2" /> ನಲ್ಲಿ ಓದಿ</translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">ಇನ್ನಷ್ಟು...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">ಬ್ಲೂಟೂತ್‌ ಸಾಧನವನ್ನು ಜೋಡಿ ಮಾಡಿ</translation>
+<translation id="4578012756826807359">ನಿಮ್ಮ ಸೈನ್ ಇನ್ ಡೇಟಾವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> ಬಿತ್ತರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation>
 <translation id="4581774856936278355">Linux ಮರುಸ್ಥಾಪಿಸುತ್ತಿರುವಾಗ ದೋಷ ಸಂಭವಿಸಿದೆ</translation>
 <translation id="4582563038311694664">ಎಲ್ಲ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸಿ</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">ನಿರ್ಗಮನದಲ್ಲಿ ಬಹು ಸೈಟ್‌ಗಳಿಂದ ಕುಕೀಸ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="4765582662863429759">ನಿಮ್ಮ ಫೋನ್‌ನಿಂದ ನಿಮ್ಮ Chromebook ಗೆ ಪಠ್ಯ ಸಂದೇಶಗಳನ್ನು ರಿಲೇ ಮಾಡಲು, Android ಸಂದೇಶಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ</translation>
 <translation id="4768332406694066911">ನಿಮ್ಮನ್ನು ಗುರುತಿಸುವ ಈ ಸಂಸ್ಥೆಗಳ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ನೀವು ಹೊಂದಿರುವಿರಿ</translation>
-<translation id="4772404146526168240">ಎರಡೂ ಪರದೆಗಳು</translation>
 <translation id="4776146737004271126">Android ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> ಗಾಗಿ ಪಾಸ್‌ವರ್ಡ್</translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2607,7 +2622,6 @@
 <translation id="4927846293686536410">ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಇತಿಹಾಸ ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ಸೈನ್‌ ಇನ್‌ ಮಾಡಿ. ನಿಮ್ಮ Google ಸೇವೆಗಳಿಗೆ ಸಹ ನಿಮ್ಮನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗುತ್ತದೆ.</translation>
 <translation id="4929386379796360314">ಪ್ರಿಂಟ್‌ ತಲುಪುವ ಸ್ಥಳಗಳು</translation>
 <translation id="4930714375720679147">ಆನ್ ಮಾಡಿ</translation>
-<translation id="4931132176527519925">ಯಾವಾಗಲೂ ಪ್ರತಿಬಿಂಬಿಸುವಿಕೆಯನ್ನು ಬಳಸಿ</translation>
 <translation id="4932733599132424254">ದಿನಾಂಕ</translation>
 <translation id="4933484234309072027"><ph name="URL" /> ನಲ್ಲಿ ಎಂಬೆಡ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="493571969993549666">ಮೇಲ್ವಿಚಾರಣೆಯ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ</translation>
@@ -2647,6 +2661,7 @@
 <translation id="4992066212339426712">ಅನ್‌ಮ್ಯೂಟ್</translation>
 <translation id="4992458225095111526">ಪವರ್‌ವಾಶ್‌ ಅನ್ನು ಖಚಿತಪಡಿಸಿ</translation>
 <translation id="4992473555164495036">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಲಭ್ಯವಿರುವ ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಸೀಮಿತಗೊಳಿಸಿದ್ದಾರೆ.</translation>
+<translation id="4992866843815555470">ನಿಮ್ಮ ಡಾಕ್ ಅನ್ನು ಸರ್ವೀಸ್ ಮಾಡಬೇಕಾಗಿದೆ. ಫ್ಯಾನ್ ಕೆಲಸ ಮಾಡದಿದ್ದರೆ ನಿಮ್ಮ ಡಾಕ್ ಸ್ಥಗಿತವಾಗುತ್ತದೆ.</translation>
 <translation id="4992926179187649719">'ಓಕೆ Google' ಆನ್ ಮಾಡಿ</translation>
 <translation id="4994474651455208930">ಪ್ರೊಟೋಕಾಲ್‌ಗಳಿಗಾಗಿ ಡಿಫಾಲ್ಟ್ ಹ್ಯಾಂಡ್ಲರ್‌‌ಗಳಾಗಲು ಸೈಟ್‌ಗಳನ್ನು ಅನುಮತಿಸಿ</translation>
 <translation id="4994754230098574403">ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ</translation>
@@ -2785,7 +2800,6 @@
 <translation id="5233231016133573565">ಪ್ರಗತಿ ID</translation>
 <translation id="5233638681132016545">ಹೊಸ ಟ್ಯಾಬ್</translation>
 <translation id="5233736638227740678">&amp;ಅಂಟಿಸಿ</translation>
-<translation id="5234764350956374838">ವಜಾಗೊಳಿಸಿ</translation>
 <translation id="5235050375939235066">ಆ್ಯಪ್ ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವುದೇ?</translation>
 <translation id="5235750401727657667">ಹೊಸ ಟ್ಯಾಬ್ ತೆರೆದಿರುವಾಗ ಬದಲಾಯಿಸಿದ ಪುಟವನ್ನು ನೀವು ನೋಡಿ</translation>
 <translation id="5238278114306905396">ಅಪ್ಲಿಕೇಶನ್ "<ph name="EXTENSION_NAME" />" ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗಿದೆ.</translation>
@@ -2850,6 +2864,7 @@
 <translation id="5319359161174645648">Chrome ಅನ್ನು Google ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ</translation>
 <translation id="532247166573571973">ಸರ್ವರ್ ತಲುಪಲಾಗದೇ ಇರಬಹುದು. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="5324780743567488672">ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಬಳಸುವ ಮೂಲಕ ಸಮಯ ವಲಯವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹೊಂದಿಸಿ</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - ಮೂಲ ಫೈಲ್‌ಗಳನ್ನು ಉಳಿಸಲು ಅನುಮತಿ ಹೊಂದಿದೆ</translation>
 <translation id="5327248766486351172">ಹೆಸರು</translation>
 <translation id="5327570636534774768">ಈ ಸಾಧನವನ್ನು ಬೇರೊಂದು ಡೋಮೇನ್ ಮೂಲಕ ನಿರ್ವಹಿಸಲು ಗುರುತಿಸಲಾಗಿದೆ. ಡೆಮೊ ಮೋಡ್ ಸೆಟಪ್ ಮಾಡುವ ಮೊದಲು ಅದನ್ನು ಆ ಡೊಮೇನ್‌ನಿಂದ ಒದಗಿಸುವುದನ್ನು ರದ್ದುಗೊಳಿಸಿ.</translation>
 <translation id="532943162177641444">ಈ ಸಾಧನದಲ್ಲಿ ಬಳಸಬಹುದಾದ ಮೊಬೈಲ್ ಹಾಟ್‌ಸ್ಪಾಟ್ ಹೊಂದಿಸಲು ನಿಮ್ಮ <ph name="PHONE_NAME" /> ನಲ್ಲಿ ಅಧಿಸೂಚನೆಯನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
@@ -2992,7 +3007,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> ಹೀಗೆ ಬಯಸುತ್ತದೆ</translation>
 <translation id="5534304873398226603">ಫೋಟೋ ಅಥವಾ ವೀಡಿಯೊವನ್ನು ತ್ಯಜಿಸಿ</translation>
 <translation id="5535941515421698170">ಹಾಗೆಯೇ ಈ ಸಾಧನದಿಂದ ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಡೇಟಾವನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
-<translation id="5537725057119320332">ಪಾತ್ರವರ್ಗ</translation>
 <translation id="5539221284352502426">ನೀವು ನಮೂದಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಸರ್ವರ್ ನಿಂದ ತಿರಸ್ಕರಿಸಲಾಗಿದೆ. ಸಂಭವನೀಯ ಕಾರಣಗಳು ಇವುಗಳನ್ನು ಒಳಗೊಂಡಿವೆ: ಪಾಸ್‌ವರ್ಡ್‌ ತುಂಬಾ ಚಿಕ್ಕದಾಗಿದೆ. ಪಾಸ್‌ವರ್ಡ್‌ ಸಂಖ್ಯೆಗಳು ಅಥವಾ ಸಂಕೇತಗಳನ್ನು ಒಳಗೊಂಡಿರಬೇಕು. ಹಿಂದಿನ ಪಾಸ್‌ವರ್ಡ್‌ಗಿಂತ ಈ ಪಾಸ್‌ವರ್ಡ್‌ ವಿಭಿನ್ನವಾಗಿರಬೇಕು.</translation>
 <translation id="5541687815721799001">ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಿ</translation>
 <translation id="5542132724887566711">ಪ್ರೊಫೈಲ್</translation>
@@ -3302,7 +3316,6 @@
 <translation id="5997337190805127100">ಸೈಟ್ ಪ್ರವೇಶದ ಕುರಿತು ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' ಗಾಗಿ <ph name="RESULT_COUNT" /> ಫಲಿತಾಂಶಗಳು</translation>
 <translation id="6002458620803359783">ಆದ್ಯತೆಯ ಧ್ವನಿಗಳು</translation>
-<translation id="6005695835120147974">ಮಾಧ್ಯಮ ರೂಟರ್</translation>
 <translation id="6006484371116297560">ಕ್ಲಾಸಿಕ್</translation>
 <translation id="6007240208646052708">ನಿಮ್ಮ ಭಾಷೆಯಲ್ಲಿ ಧ್ವನಿ ಹುಡುಕಾಟ ಲಭ್ಯವಿಲ್ಲ.</translation>
 <translation id="6009781704028455063">ಅಂತರ್ನಿರ್ಮಿತ ಸೆನ್ಸರ್</translation>
@@ -3502,7 +3515,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಹೊಸ ಪ್ರಿಂಟರ್}one{ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಹೊಸ ಪ್ರಿಂಟರ್‌ಗಳು}other{ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಹೊಸ ಪ್ರಿಂಟರ್‌ಗಳು}}</translation>
 <translation id="6286708577777130801">ಉಳಿಸಿದ ಪಾಸ್‌ವರ್ಡ್ ವಿವರಗಳು</translation>
 <translation id="6289452883081499048">Play ನಂತಹ ವೈಯಕ್ತೀಕರಿಸಿದ Google ಸೇವೆಗಳು</translation>
-<translation id="6290556621549272952">ನಿಮ್ಮ ಟಿವಿ ಅಥವಾ ಇತರ ಸಾಧನಗಳಲ್ಲಿ Chromium ನಿಂದ ವಿಷಯವನ್ನು ಪ್ರದರ್ಶಿಸಲು ನೀವು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಬಹುದು.</translation>
 <translation id="6291949900244949761">ಒಂದು ಸೈಟ್ USB ಸಾಧನಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಬಯಸಿದಾಗ ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿರುವುದು)</translation>
 <translation id="6291953229176937411">ಫೈಂಡರ್‌ನಲ್ಲಿ &amp;ತೋರಿಸಿ</translation>
 <translation id="6295158916970320988">ಎಲ್ಲಾ ಸೈಟ್‌ಗಳು</translation>
@@ -3566,6 +3578,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />ಸಿಸ್ಟಂ‌ ಮಾಹಿತಿ<ph name="END_LINK1" /> ಮತ್ತು <ph name="BEGIN_LINK2" />ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು<ph name="END_LINK2" /> ಕಳುಹಿಸಿ</translation>
 <translation id="6396988158856674517">ಚಲನಾ ಸೆನ್ಸರ್‌ಗಳನ್ನು ಬಳಸದಂತೆ ಸೈಟ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation>
 <translation id="6397094776139756010">ಸಿಂಕ್ ಮತ್ತು ವೈಯಕ್ತೀಕರಣ ಆಯ್ಕೆಗಳು</translation>
+<translation id="6397449385184089588">ನೀವು ಮಾಡಿದ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಕೆಳಗಿನ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ನೇರವಾಗಿ ಉಳಿಸಲು <ph name="ORIGIN" /> ಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಈ ಟ್ಯಾಬ್ ತೆರೆದಿರುವಾಗ ಮಾತ್ರ ಈ ಸೈಟ್, ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಬಹುದು.</translation>
 <translation id="6398715114293939307">Google Play ಸ್ಟೋರ್ ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="6398765197997659313">ಪೂರ್ಣಪರದೆಯಿಂದ ನಿರ್ಗಮಿಸಿ</translation>
 <translation id="6399774419735315745">ಸ್ಪೈ</translation>
@@ -3610,11 +3623,13 @@
 <translation id="6455264371803474013">ನಿರ್ದಿಷ್ಟ ಸೈಟ್‌ಗಳಲ್ಲಿ</translation>
 <translation id="6455894534188563617">&amp;ಹೊಸ ಫೋಲ್ಡರ್</translation>
 <translation id="6456394469623773452">ಉತ್ಕೃಷ್ಟ</translation>
+<translation id="6456955391422100996">ಜಾಹೀರಾತನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ.</translation>
 <translation id="645705751491738698">JavaScript ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ಮುಂದುವರಿಸಿ</translation>
 <translation id="6458701200018867744">ಅಪ್‌ಲೋಡ್‌ ವಿಫಲವಾಗಿದೆ (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">ಹುಡುಕಲು ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ</translation>
 <translation id="6459799433792303855">ಮತ್ತೊಂದು ಡಿಸ್‌ಪ್ಲೇಗೆ ಸಕ್ರಿಯ ವಿಂಡೋವನ್ನು ಸರಿಸಲಾಗಿದೆ.</translation>
 <translation id="6460601847208524483">ಮುಂದಿನದು ಕಂಡುಹಿಡಿಯಿರಿ</translation>
+<translation id="6461170143930046705">ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಹುಡುಕಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="6463795194797719782">&amp;ಸಂಪಾದಿಸು</translation>
 <translation id="6466988389784393586">ಎಲ್ಲ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳನ್ನು &amp;ತೆರೆಯಿರಿ</translation>
 <translation id="6467304607960172345">ಫುಲ್‌ಸ್ಕ್ರೀನ್ ವೀಡಿಯೊಗಳನ್ನು ಆಪ್ಟಿಮೈಸ್‌ ಮಾಡಿ</translation>
@@ -3653,6 +3668,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">ನೀವು <ph name="NETWORK_TYPE" /> ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿದ್ದೀರಿ.</translation>
 <translation id="6527303717912515753">ಹಂಚಿಕೊಳ್ಳು</translation>
 <translation id="6528513914570774834">ಈ ನೆಟ್‌ವರ್ಕ್ ಬಳಸಲು, ಈ ಸಾಧನದ ಇತರ ಬಳಕೆದಾರರಿಗೆ ಅವಕಾಶ ನೀಡಿ</translation>
 <translation id="652948702951888897">Chrome ಇತಿಹಾಸ</translation>
@@ -3749,7 +3765,6 @@
 <translation id="6680650203439190394">ದರ</translation>
 <translation id="6681668084120808868">ಫೋಟೋ ತೆಗೆಯಿರಿ</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" ಅಸ್ಥಾಪಿಸಲಾಗುವುದು.</translation>
-<translation id="6685083257944113180">ನಿಲ್ಲಿಸಿ, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Google Play ತೆರೆಯಿರಿ</translation>
 <translation id="6686490380836145850">ಬಲಗಡೆಗೆ ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿರಿ</translation>
 <translation id="6686817083349815241">ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ಉಳಿಸಿ</translation>
@@ -3858,6 +3873,7 @@
 <translation id="6845038076637626672">ಗರಿಷ್ಠಗೊಳಿಸುವಿಕೆಯಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="6845325883481699275">Chrome ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಿ</translation>
 <translation id="6848388270925200958">ಸದ್ಯಕ್ಕೆ, ಈ ಸಾಧನದಲ್ಲಿ ಮಾತ್ರವೇ ಬಳಸಬಹುದಾದ ಕೆಲವು ಕಾರ್ಡ್‌ಗಳನ್ನು ನೀವು ಹೊಂದಿದ್ದೀರಿ</translation>
+<translation id="6850286078059909152">ಪಠ್ಯದ ಬಣ್ಣ</translation>
 <translation id="6851497530878285708">ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="6853388645642883916">ನವೀಕರಣವು ನಿದ್ರೆಯಲ್ಲಿದೆ</translation>
 <translation id="68541483639528434">ಇತರ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿ</translation>
@@ -3907,7 +3923,6 @@
 <translation id="6923132443355966645">ಸ್ಕ್ರಾಲ್ / ಕ್ಲಿಕ್</translation>
 <translation id="6923633482430812883">ಹಂಚಿಕೆಯನ್ನು ಮೌಂಟ್ ಮಾಡುವಾಗ ದೋಷ ಕಂಡುಬಂದಿದೆ. ನೀವು ಸಂಪರ್ಕಿಸುತ್ತಿರುವ ಫೈಲ್ ಸರ್ವರ್, SMBv2 ಅಥವಾ ನಂತರದ ಆವೃತ್ತಿಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆಯೇ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಪರಿಶೀಲಿಸಿ.</translation>
 <translation id="6930036377490597025">ಬಾಹ್ಯ ಸುರಕ್ಷತೆ ಕೀ ಅಥವಾ ಅಂತರ್ನಿರ್ಮಿತ ಸೆನ್ಸರ್</translation>
-<translation id="6930242544192836755">ಅವಧಿ</translation>
 <translation id="693807610556624488">ಬರೆಯುವಿಕೆ ಕಾರ್ಯಾಚರಣೆಯು ಈ ಸಾಧನಕ್ಕೆ ಗುಣಲಕ್ಷಣದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ಮೀರುತ್ತದೆ: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">ನಿಮ್ಮ ಪ್ರಮಾಣಪತ್ರದೊಂದಿಗೆ  <ph name="HOST_NAME" /> ಅನ್ನು ದೃಢೀಕರಿಸಲು ದಯವಿಟ್ಟು <ph name="TOKEN_NAME" /> ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
 <translation id="6943176775188458830">ಮುದ್ರಿಸುವಿಕೆಯನ್ನು ರದ್ದುಮಾಡಿ</translation>
@@ -3921,6 +3936,7 @@
 <translation id="6951153907720526401">ಪಾವತಿ ಹ್ಯಾಂಡ್‌ಲರ್‌ಗಳು</translation>
 <translation id="6951663584153258142">ನೀವು ಈ ಸಾಧನವನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಬೇಕೆಂದು ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ಕೇಳುತ್ತದೆ</translation>
 <translation id="6953878494808481632">ಸಂಬಂಧಿತ ಮಾಹಿತಿ</translation>
+<translation id="6953916367503892689">{0,plural, =1{ಫೈಲ್: <ph name="FILES" />}one{ಫೈಲ್‌ಗಳು: <ph name="FILES" />}other{ಫೈಲ್‌ಗಳು: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">ಪಾಪ್‌ಅಪ್ ಪರೀಕ್ಷಿಸಿ</translation>
 <translation id="6957044667612803194">ಈ ಭದ್ರತೆ ಕೀ, ಪಿನ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ</translation>
 <translation id="6957231940976260713">ಸೇವೆಯ ಹೆಸರು</translation>
@@ -4134,7 +4150,6 @@
 <translation id="7254554697254365959">ಈ ಪುಟವನ್ನು ಅನುವಾದಿಸಲಾಗಲಿಲ್ಲ.</translation>
 <translation id="7254951428499890870">ಖಚಿತವಾಗಿ ಡೈಯೋಗ್ನೋಸ್ಟಿಕ್ ಮೋಡ್‍‍ನಲ್ಲಿ "<ph name="APP_NAME" />" ಲಾಂಚ್ ಮಾಡಲು ನೀವು ಬಯಸುವಿರಾ?</translation>
 <translation id="7255002516883565667">ಸದ್ಯಕ್ಕೆ, ಈ ಸಾಧನದಲ್ಲಿ ಬಳಸಬಹುದಾದ ಒಂದು ಕಾರ್ಡ್‌ ಅನ್ನು ಮಾತ್ರವೇ ನೀವು ಹೊಂದಿದ್ದೀರಿ</translation>
-<translation id="7255220508626648026">ಬಿತ್ತರಿಸಲಾಗುತ್ತಿದೆ: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">ಮರುಹೊಂದಿಸುವಿಕೆಯನ್ನು ಖಚಿತಪಡಿಸಲು, ನಿಮ್ಮ ಭದ್ರತೆ ಕೀ ಅನ್ನು ಮತ್ತೊಮ್ಮೆ ಸ್ಪರ್ಶಿಸಿ. ಭದ್ರತೆ ಕೀಯಲ್ಲಿ ಸಂಗ್ರಹಣೆ ಮಾಡಿರುವ ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ಮತ್ತು ಅದರ ಪಿನ್ ಅನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="7255935316994522020">ಅನ್ವಯಿಸು</translation>
 <translation id="7256069762010468647">ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಸೈಟ್‌ ಬಳಸುತ್ತಿದೆ</translation>
@@ -4268,6 +4283,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">ಸ್ಥಳವನ್ನು ತೆರೆ...</translation>
 <translation id="7458168200501453431">Google ಹುಡುಕಾಟದಲ್ಲಿ ಬಳಸುವ ಕಾಗುಣಿತ ಪರೀಕ್ಷಕವನ್ನೇ ಬಳಸಿ. ನೀವು ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಟೈಪ್ ಮಾಡುವ ಪಠ್ಯವನ್ನು Google ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ.</translation>
+<translation id="7460045493116006516">ನೀವು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವ ಪ್ರಸ್ತುತ ಥೀಮ್</translation>
 <translation id="7461924472993315131">ಪಿನ್</translation>
 <translation id="746216226901520237">ಮುಂದಿನ ಬಾರಿ, ನಿಮ್ಮ ಫೋನ್ ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡುತ್ತದೆ. ನೀವು ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ Smart Lock ಅನ್ನು ಆಫ್ ಮಾಡಬಹುದು.</translation>
 <translation id="7463006580194749499">ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸು</translation>
@@ -4327,6 +4343,7 @@
 <translation id="7554791636758816595">ಹೊಸ ಟ್ಯಾಬ್</translation>
 <translation id="7556033326131260574">Smart Lock ಗೆ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪ್ರವೇಶಿಸಲು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ.</translation>
 <translation id="7556242789364317684">ದುರದೃಷ್ಟವಶಾತ್, <ph name="SHORT_PRODUCT_NAME" /> ಗೆ ನಿಮ್ಮ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಪಡೆದುಕೊಳ್ಳಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ದೋಷವನ್ನು ಸರಿಪಡಿಸಲು, ನಿಮ್ಮ ಸಾಧನವನ್ನು ಪವರ್‌ವಾಷ್‌ನೊಂದಿಗೆ <ph name="SHORT_PRODUCT_NAME" /> ಮರುಹೊಂದಿಸಬೇಕು.</translation>
+<translation id="7559444627302317199">ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ, ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="7559719679815339381">ದಯವಿಟ್ಟು ಕಾಯಿರಿ....ಕಿಯೋಸ್ಕ್ ಅಪ್ಲಿಕೇಶನ್ ನವೀಕರಣದ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿದೆ. USB ಸ್ಟಿಕ್ ಅನ್ನು ತೆಗೆದುಹಾಕಬೇಡಿ.</translation>
 <translation id="7561196759112975576">ಯಾವಾಗಲೂ</translation>
 <translation id="7563991800558061108">ಈ ದೋಷದಿಂದ ಚೇತರಿಸಿಕೊಳ್ಳಲು, ನೀವು ಸೈನ್-ಇನ್ ಪರದೆಯಿಂದ ನಿಮ್ಮ Google ಖಾತೆಗೆ
@@ -4568,7 +4585,6 @@
 <translation id="7887334752153342268">ನಕಲು</translation>
 <translation id="7887864092952184874">ಬ್ಲೂಟೂತ್‌ ಮೌಸ್ ಜೋಡಿಯಾಗಿದೆ</translation>
 <translation id="7889565820482017512">ಡಿಸ್‌ಪ್ಲೇ ಗಾತ್ರ</translation>
-<translation id="7889966925761734854">ಸೀಕ್</translation>
 <translation id="7893008570150657497">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಿಂದ ಫೋಟೋಗಳು, ಸಂಗೀತ ಮತ್ತು ಇತರೆ ಮಾಧ್ಯಮ ಪ್ರವೇಶಿಸಿ</translation>
 <translation id="7893153962594818789">ಈ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ ಬ್ಲೂಟೂತ್‌ ಆಫ್‌ ಆಗಿದೆ. ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ನಮೂದಿಸಿ ಮತ್ತು ಬ್ಲೂಟೂತ್‌ ಆನ್‌ ಮಾಡಿ.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (ಡಿಫಾಲ್ಟ್)</translation>
@@ -4576,7 +4592,6 @@
 <translation id="7898627924844766532">ಪರಿಕರಪಟ್ಟಿಯಲ್ಲಿ ಇರಿಸು</translation>
 <translation id="7898725031477653577">ಯಾವಾಗಲೂ ಅನುವಾದಿಸು</translation>
 <translation id="790040513076446191">ಗೌಪ್ಯತೆಗೆ- ಸಂಬಂಧಿಸಿದ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಸ್ವಾಧೀನಪಡಿಸಿಕೊಳ್ಳಿ</translation>
-<translation id="7902874111237641165">ನಯವಾದ ಚಲನೆ [ಬೀಟಾ]</translation>
 <translation id="7903345046358933331">ಪುಟವು ಸ್ಪಂದಿಸುತ್ತಿಲ್ಲ. ಅದು ಸ್ಪಂದಿಸುವ ತನಕ ನೀವು ಕಾಯಬಹುದು ಅಥವಾ ಅದನ್ನು ಮುಚ್ಚಬಹುದು.</translation>
 <translation id="7903742244674067440">ಈ ಪ್ರಮಾಣಪತ್ರದ ಪ್ರಾಧಿಕಾರಗಳ ಗುರುತಿಸುವ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ನೀವು ಫೈಲ್‌ನಲ್ಲಿ ಹೊಂದಿದ್ದೀರಿ</translation>
 <translation id="7903925330883316394">ಉಪಯುಕ್ತತೆ: <ph name="UTILITY_TYPE" /></translation>
@@ -4686,6 +4701,7 @@
 <translation id="8037117027592400564">ಸಂಯೋಜನೆ ಗೊಳಿಸಿದ ಧ್ವನಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಮಾತನಾಡುವ ಎಲ್ಲಾ ಪಠ್ಯವನ್ನು ಓದಿ</translation>
 <translation id="8037357227543935929">ಕೇಳು (ಡಿಫಾಲ್ಟ್)</translation>
 <translation id="803771048473350947">ಫೈಲ್</translation>
+<translation id="8042142357103597104">ಪಠ್ಯ ಅಪಾರದರ್ಶಕತೆ</translation>
 <translation id="8044899503464538266">ನಿಧಾನ</translation>
 <translation id="8045253504249021590">Google ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಮೂಲಕ ಸಿಂಕ್ ಅನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ.</translation>
 <translation id="8045923671629973368">ಅಪ್ಲಿಕೇಶನ್ ಐಡಿ ಅಥವಾ ವೆಬ್‌ಅಂಗಡಿ URL ನಮೂದಿಸಿ</translation>
@@ -4722,7 +4738,6 @@
     <ph name="BEGIN_PARAGRAPH5" />ನೀವು ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಈ ಸೇವೆಯನ್ನು ಆಫ್ ಮಾಡಬಹುದು.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">ಪಿನ್‌ಗಳು ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ</translation>
 <translation id="809792523045608178">ವಿಸ್ತರಣೆಯೊಂದರಿಂದ <ph name="IDS_SHORT_PRODUCT_NAME" />, ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬಳಸುತ್ತಿದೆ</translation>
-<translation id="8099495042588009598">ಇನ್ನಷ್ಟು ಅನುಮತಿಗಳು</translation>
 <translation id="8101987792947961127">ಮುಂದಿನ ರೀಬೂಟ್‌ನಲ್ಲಿ ಪವರ್‌ವಾಷ್ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="8102159139658438129">ನಿಮ್ಮ ಸಂಪರ್ಕಿತ ಫೋನ್‌ಗಾಗಿ ಆಯ್ಕೆಗಳನ್ನು ನೋಡಲು, <ph name="LINK_BEGIN" />ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ<ph name="LINK_END" /> ಹೋಗಿ</translation>
 <translation id="8104696615244072556">ನಿಮ್ಮ <ph name="IDS_SHORT_PRODUCT_NAME" /> ಸಾಧನವನ್ನು ಪವರ್‌ವಾಶ್ ಮಾಡಿ ಮತ್ತು ಹಿಂದಿನ ಆವೃತ್ತಿಗೆ ಹಿಂತಿರುಗಿ.</translation>
@@ -4774,8 +4789,10 @@
     ನನ್ನ ಪ್ರಕಾರ ಈ ಸೈಟ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಬೇಕಾಗಿಲ್ಲ!</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" /> ಗೆ ಬದಲಿಸಿ</translation>
 <translation id="8184318863960255706">ಹೆಚ್ಚಿನ ಮಾಹಿತಿ</translation>
+<translation id="8184472985242519288">ಏಕರೂಪ</translation>
 <translation id="8185331656081929126">ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿರುವ ಹೊಸ ಪ್ರಿಂಟರ್‌ಗಳನ್ನು ಪತ್ತೆ ಮಾಡಿದಾಗ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸು</translation>
 <translation id="8186609076106987817">ಸರ್ವರ್‌ಗೆ ಫೈಲ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" />, ಕೆಳಗಿನ ಫೋಲ್ಡರ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಫೈಲ್‌ಗಳನ್ನು ಓದಬಹುದು. ಈ ಟ್ಯಾಬ್ ತೆರೆದಿರುವಾಗ ಮಾತ್ರ ಈ ಸೈಟ್, ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಮಾಡಿರುವ ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಬಹುದು.</translation>
 <translation id="8188389033983459049">ನಿಮ್ಮ ಸಾಧನದ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಮುಂದುವರಿಸಲು ಬ್ಲೂಟೂತ್ ಆನ್ ಮಾಡಿ</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> ಗೆ ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="8191230140820435481">ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು, ವಿಸ್ತರಣೆಗಳು, ಮತ್ತು ಥೀಮ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
@@ -4879,8 +4896,6 @@
 <translation id="833986336429795709">ಈ ಲಿಂಕ್ ತೆರೆಯಲು, ಅಪ್ಲಿಕೇಶನ್ ಆಯ್ಕೆ ಮಾಡಿ</translation>
 <translation id="8342861492835240085">ಸಂಗ್ರಹವನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="834290227245955730">ಅಮಾನ್ಯ ಪಿನ್. ಬಾಕಿಯಿರುವ ಮರುಪ್ರಯತ್ನಗಳು: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">ಅತ್ಯುತ್ತಮ ವೀಡಿಯೊ ಅಥವಾ ಅನಿಮೇಶನ್‍ಗಾಗಿ ಅಧಿಕ ಬ್ಯಾಂಡ್‌ವಿಡ್ತ್‌ ಅನ್ನು ಬಳಸಿ.
-ನಿಧಾನಗತಿಯ ಸಂಪರ್ಕಗಳನ್ನು ಹೊಂದಿರುವ ಇತರ ಜನರಿಗೆ ನಿಮ್ಮ ಕಂಟೆಂಟ್ ಅನ್ನು ನೋಡಲು ಸಾಧ್ಯವಾಗದಿರಬಹುದು.</translation>
 <translation id="8351419472474436977">ನಿಮ್ಮ ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಈ ವಿಸ್ತರಣೆಯು ನಿಯಂತ್ರಣಕ್ಕೆ ತೆಗೆದುಕೊಂಡಿದೆ. ಅಂದರೆ, ನೀವು ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಮಾಡುವ ಯಾವುದೇ ಕಾರ್ಯವನ್ನು ಇದು ಬದಲಾಯಿಸಬಹುದು, ಒಳನುಸುಳಬಹುದು ಅಥವಾ ಕದ್ದಾಲಿಸಬಹುದು ಎಂದರ್ಥ. ಇದು ಹೇಗೆ ಸಂಭವಿಸಿದೆ ಎಂಬುದೇ ನಿಮಗೆ ಖಚಿತವಿಲ್ಲದಿದ್ದರೆ, ನಿಮಗೆ ಬಹುಶಃ ಇದು ಬೇಕಾಗಿಲ್ಲ.</translation>
 <translation id="8351630282875799764">ಬ್ಯಾಟರಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿಲ್ಲ</translation>
 <translation id="835238322900896202">ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವಾಗ ದೋಷ ಸಂಭವಿಸಿದೆ. ಟರ್ಮಿನಲ್ ಮೂಲಕ ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ.</translation>
@@ -4913,9 +4928,11 @@
 <translation id="839736845446313156">ನೋಂದಾಯಿಸಿ</translation>
 <translation id="8398877366907290961">ಏನಾಗಲಿ ಮುಂದುವರೆಯಿರಿ</translation>
 <translation id="8400146488506985033">ಜನರನ್ನು ನಿರ್ವಹಿಸು</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" />, ನೀವು ಮಾಡುವ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಕೆಳಗಿನ ಫೋಲ್ಡರ್‌ನಲ್ಲಿರುವ ಫೈಲ್‌ಗಳಲ್ಲಿ ನೇರವಾಗಿ ಉಳಿಸಬಹುದು. ಈ ಟ್ಯಾಬ್ ತೆರೆದಿರುವಾಗ ಮಾತ್ರ ಈ ಸೈಟ್, ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಬಹುದು.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ಮೊದಲು ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="8418445294933751433">ಟ್ಯಾಬ್‌ನಂತೆ &amp;ತೋರಿಸಿ</translation>
+<translation id="8418905021510211421">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿರುವ ಫೋಲ್ಡರ್ ಅನ್ನು ಓದಲು ಈ ಪುಟಕ್ಕೆ ಅನುಮತಿಯಿದೆ.</translation>
 <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' ಕುರಿತ ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳು</translation>
 <translation id="8419368276599091549">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಸಾಧನಕ್ಕೆ ಸ್ವಾಗತ!</translation>
 <translation id="8425213833346101688">ಬದಲಿಸಿ</translation>
@@ -4935,6 +4952,7 @@
 <translation id="8438566539970814960">ಹುಡುಕಾಟಗಳನ್ನು ಮತ್ತು ಬ್ರೌಸಿಂಗ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸುವಂತೆ ಮಾಡಿ</translation>
 <translation id="8439506636278576865">ಪುಟಗಳನ್ನು ಈ ಭಾಷೆಯಲ್ಲಿ ಅನುವಾದ ಮಾಡಲು ಅವಕಾಶ</translation>
 <translation id="8440630305826533614">Linux ಆ್ಯಪ್‌ಗಳು</translation>
+<translation id="844241640324986723">ನಿಮ್ಮ ಸೈನ್ ಇನ್ ಡೇಟಾವನ್ನು ಅಳಿಸಲು ವಿಫಲವಾಗಿದೆ.</translation>
 <translation id="8443338615972234259">ನಿಮ್ಮ ಮೇಲ್ವಿಚಾರಣೆಯ ಬಳಕೆದಾರರಿಗಾಗಿ ಈಗಲೇ ಒಂದು ಹೊಸ ಖಾತೆಯನ್ನು ರಚಿಸಿ.</translation>
 <translation id="8446884382197647889">ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation>
 <translation id="8447409163267621480">Ctrl ಅಥವಾ Alt ಅನ್ನು ಒಳಗೊಂಡಿದೆ</translation>
@@ -4952,8 +4970,6 @@
 <translation id="8461914792118322307">ಪ್ರಾಕ್ಸಿ</translation>
 <translation id="8463215747450521436">ಈ ಮೇಲ್ವಿಚಾರಣೆ ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಾಹಕರು ಅಳಿಸಿಹಾಕಿರಬಹುದು ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿರಬಹುದು. ಈ ಬಳಕೆದಾರರಂತೆ ಸೈನ್‌ ಇನ್‌ ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸಲು ನೀವು ಬಯಸಿದಲ್ಲಿ ದಯವಿಟ್ಟು ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="846374874681391779">ಡೌನ್‌ಲೋಡ್‌ಗಳ ಪಟ್ಟಿ</translation>
-<translation id="8463807869745732775">"&gt;
-    ಸಂಗ್ರಹಿಸಿದ ಭದ್ರತೆ ಕೀ ಸೈನ್-ಇನ್ ಡೇಟಾ</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.</translation>
 <translation id="8464132254133862871">ಸೇವೆಗಾಗಿ ಈ ಬಳಕೆದಾರರ ಖಾತೆಯು ಅರ್ಹವಲ್ಲ.</translation>
 <translation id="8465252176946159372">ಮಾನ್ಯವಾಗಿಲ್ಲ</translation>
@@ -5019,6 +5035,7 @@
 <translation id="8569002732135253578">ಇದೀಗ <ph name="DOCUMENT_NAME" /> ಅನ್ನು ಮುದ್ರಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="8569682776816196752">ಯಾವುದೇ ಗಮ್ಯಸ್ಥಾನಗಳು ಕಂಡುಬಂದಿಲ್ಲ</translation>
 <translation id="8571213806525832805">ಕಳೆದ 4 ವಾರಗಳು</translation>
+<translation id="8573403125070227391">ಈ ಜಾಹೀರಾತು, ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ತೀರಾ ಹೆಚ್ಚು ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಆದ್ದರಿಂದ, Chrome ಇದನ್ನು ತೆಗೆದುಹಾಕಿದೆ.</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> ನಲ್ಲಿ ಧ್ವನಿಗೆ ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ</translation>
 <translation id="8575286410928791436">ನಿರ್ಗಮಿಸಲು <ph name="KEY_EQUIVALENT" /> ಅನ್ನು ಒತ್ತಿಹಿಡಿಯಿರಿ</translation>
 <translation id="8578639784464423491">99 ಅಕ್ಷರಗಳನ್ನು ಮೀರಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
@@ -5042,13 +5059,13 @@
 <translation id="8609465669617005112">ಮೇಲೆ ಸರಿಸು</translation>
 <translation id="8610103157987623234">ತಪ್ಪಾದ ಸ್ವರೂಪ, ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="8615618338313291042">ಅದೃಶ್ಯ ಅಪ್ಲಿಕೇಶನ್: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">ಡ್ರಾಪ್ ನೆರಳು</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">ರೋಮಿಂಗ್ ಸ್ಥಿತಿ</translation>
 <translation id="8620765578342452535">ನೆಟ್‌ವರ್ಕ್ ಸಂಪರ್ಕಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ</translation>
 <translation id="8621866727807194849">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್‌ವೇರ್ ಕಂಡುಬಂದಿದೆ. Chrome ಅದನ್ನು ತೆಗೆದುಹಾಕಿ, ನಿಮ್ಮ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸುತ್ತಿದೆ ಹಾಗೆಯೇ ಅದರ ವಿಸ್ತರಣೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತಿದೆ. ಇದರಿಂದಾಗಿ ನಿಮ್ಮ ಬ್ರೌಸರ್ ಅನ್ನು ಪುನಃ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವಂತೆ ಮಾಡುತ್ತದೆ.</translation>
 <translation id="8621979332865976405">ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಪರದೆಯನ್ನು ಹಂಚಿಕೊಳ್ಳಿ</translation>
 <translation id="862542460444371744">&amp;ವಿಸ್ತರಣೆಗಳು</translation>
-<translation id="8627151598708688654">ಮೂಲವನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="862727964348362408">ತಡೆಹಿಡಿಯಲಾಗಿದೆ</translation>
 <translation id="862750493060684461">CSS ಸಂಗ್ರಹ</translation>
 <translation id="8627795981664801467">ಸುರಕ್ಷಿತ ಸಂಪರ್ಕಗಳು ಮಾತ್ರ</translation>
@@ -5102,6 +5119,7 @@
 <translation id="8688579245973331962">ನಿಮ್ಮ ಹೆಸರು ಕಾಣಲಿಲ್ಲವೇ?</translation>
 <translation id="8688591111840995413">ತಪ್ಪಾದ ಪಾಸ್‍ವರ್ಡ್</translation>
 <translation id="8688672835843460752">ಲಭ್ಯವಿದೆ</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;ಸ್ಥಾನವನ್ನು ತೆರೆಯಿರಿ...</translation>
 <translation id="869884720829132584">ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಮೆನು</translation>
 <translation id="869891660844655955">ಅವಧಿ ಮುಗಿಯುವ ದಿನಾಂಕ</translation>
@@ -5265,6 +5283,7 @@
 <translation id="891365694296252935">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಪ್ರಸ್ತುತ ಈ ಸಾಧನವು ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಮತ್ತು ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುತ್ತಿದೆ. ಈ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಮಗುವನ್ನು ಗುರುತಿಸುವುದಕ್ಕೆ ಬಳಸುವುದಿಲ್ಲ, ಹಾಗೂ ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್‌ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್‌ಗಳು. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಮಾಲೀಕರೇ ಜಾರಿಗೊಳಿಸುತ್ತಾರೆ. ನಿಮ್ಮ ಮಗುವಿಗಾಗಿ ಹೆಚ್ಚುವರಿ ವೆಬ್‌ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಆನ್‌ ಮಾಡಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ಅವರ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">ಸಲಹೆಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="8916476537757519021">ಅದೃಶ್ಯ ಉಪಫ್ರೇಮ್: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿರುವ ಫೋಲ್ಡರ್ ಅನ್ನು ಓದಲು ಅನುಮತಿ ಹೊಂದಿದೆ</translation>
 <translation id="8919275547519617350">ನಿಮ್ಮ ಎಲ್ಲಾ ಪಾಸ್‌ವರ್ಡ್‌ಗಳಲ್ಲಿ ನಿಮ್ಮ ಎಲ್ಲಾ ವಿಸ್ತರಣೆಗಳನ್ನು ಪಡೆಯಲು, ಸೈನ್ ಇನ್ ಮಾಡಿ ಮತ್ತು ಸಿಂಕ್ ಆನ್ ಮಾಡಿ.</translation>
 <translation id="8921366488406707015">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="8922013791253848639">ಈ ಸೈಟ್‌ನಲ್ಲಿ ಯಾವಾಗಲೂ ಜಾಹೀರಾತುಗಳನ್ನು ಅನುಮತಿಸಿ</translation>
@@ -5294,7 +5313,6 @@
 <translation id="8965037249707889821">ಹಳೆಯ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ</translation>
 <translation id="8966870118594285808">ನೀವು ಆಕಸ್ಮಿಕವಾಗಿ ಒಂದು ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿದ್ದರೆ ಅದನ್ನು ಪುನಃ ತೆರೆಯಿರಿ</translation>
 <translation id="8967866634928501045">ತೋರಿಸಲು Alt Shift A ಒತ್ತಿರಿ</translation>
-<translation id="8970203673128054105">ಬಿತ್ತರಿಸು ಮೋಡ್ ಪಟ್ಟಿ ವೀಕ್ಷಿಸಿ</translation>
 <translation id="89720367119469899">ಎಸ್ಕೇಪ್</translation>
 <translation id="8972513834460200407">Google ಸರ್ವರ್‌ಗಳಿಂದ ಮಾಡಲಾಗುವ ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ಫೈರ್‌‌ವಾಲ್‌ ನಿರ್ಬಂಧಿಸುತ್ತಿಲ್ಲ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ದಯವಿಟ್ಟು ನೀವು ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್ ನಿರ್ವಾಹಕರೊಂದಿಗೆ ಚರ್ಚಿಸಿ.</translation>
 <translation id="8973557916016709913">ಝೂಮ್‌ ಮಟ್ಟವನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
@@ -5444,6 +5462,7 @@
 <translation id="9214520840402538427">ಓಹ್! ಸ್ಥಾಪನೆ-ಸಮಯದ ಲಕ್ಷಣಗಳ ಸ್ಥಾಪನೆಯ ಅವಧಿ ಮುಗಿದಿದೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಬೆಂಬಲ ಪ್ರತಿನಿಧಿಯನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" ಸೇರಿಸಲಾಗಿದೆ</translation>
+<translation id="9216712190298404438">ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಕೆಳಗಿನ ಫೈಲ್‌ನಲ್ಲಿ ನೇರವಾಗಿ ಉಳಿಸಲು <ph name="ORIGIN" /> ಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಈ ಟ್ಯಾಬ್ ತೆರೆದಿರುವಾಗ ಮಾತ್ರ ಈ ಸೈಟ್, ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಬಹುದು.</translation>
 <translation id="9218430445555521422">ಡಿಫಾಲ್ಟ್ ಆಗಿ ಹೊಂದಿಸಿ</translation>
 <translation id="9219103736887031265">ಚಿತ್ರಗಳು</translation>
 <translation id="9220525904950070496">ಖಾತೆಯನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 949bad4..38c2c5db 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">가상 머신을 시작하는 동안 문제가 발생했습니다. 다시 시도해 주세요.</translation>
 <translation id="1089439967362294234">비밀번호 변경</translation>
 <translation id="1090126737595388931">실행 중인 백그라운드 앱 없음</translation>
+<translation id="1090290614672149983">원본 파일에 변경사항을 저장하시겠습니까?</translation>
 <translation id="1090918500949388876">화면이 켜져 있을 때 "Ok Google"이라고 말하면 어시스턴트를 사용할 수 있습니다.</translation>
 <translation id="1091767800771861448">건너뛰려면 Esc 키를 누르세요(비공식 빌드만 해당).</translation>
 <translation id="1093457606523402488">표시된 네트워크:</translation>
 <translation id="1094607894174825014">기기(<ph name="DEVICE_NAME" />)에서 잘못된 오프셋으로 읽기 또는 쓰기 작업을 요청했습니다.</translation>
 <translation id="1097658378307015415">로그인하기 전에 게스트로 로그인하여 <ph name="NETWORK_ID" /> 네트워크를 활성화하세요.</translation>
+<translation id="110029732810301672">이 탭은 원본 파일에 저장할 수 있습니다.</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> 항상 번역</translation>
 <translation id="1108600514891325577">중지(&amp;S)</translation>
 <translation id="1110155001042129815">대기</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">선글라스</translation>
 <translation id="1151917987301063366"><ph name="HOST" />에서 센서에 액세스하도록 항상 허용</translation>
 <translation id="1153356358378277386">페어링된 기기</translation>
-<translation id="1156488781945104845">현재 시간</translation>
 <translation id="1161575384898972166"><ph name="TOKEN_NAME" />에 로그인하여 클라이언트 인증서를 내보내세요.</translation>
 <translation id="1163931534039071049">프레임 소스 보기(&amp;V)</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" />에서 Smart Lock을 사용 중지하시겠습니까?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player 저장용량 설정</translation>
 <translation id="1274997165432133392">쿠키 및 기타 사이트 데이터</translation>
 <translation id="127668050356036882">모든 창 닫기</translation>
-<translation id="1277908057200820621">기기 목록 보기</translation>
 <translation id="1280820357415527819">모바일 네트워크 검색 중</translation>
 <translation id="1285320974508926690">이 사이트 번역 안함</translation>
 <translation id="1285484354230578868">Google 드라이브 계정에 데이터 저장</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">홈 네트워크 로밍 안함</translation>
 <translation id="1316136264406804862">검색 중...</translation>
 <translation id="1316495628809031177">동기화 일시중지됨</translation>
+<translation id="1317637799698924700">현재 도킹 스테이션은 USB 타입-C 호환 모드에서 작동합니다.</translation>
 <translation id="1322046419516468189"><ph name="SAVED_PASSWORDS_STORE" />에 저장된 비밀번호 보기 및 관리</translation>
 <translation id="1326317727527857210">다른 기기에서 탭을 가져오려면 Chrome에 로그인하세요.</translation>
 <translation id="1327074568633507428">Google 클라우드 프린트의 프린터</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="ENROLLMENT_DOMAIN" />에서 <ph name="BEGIN_LINK" />관리하는 브라우저<ph name="END_LINK" />입니다.</translation>
 <translation id="1366177842110999534"><ph name="DEVICE_TYPE" />에서 Linux 도구, 편집기, IDE를 실행하세요. &lt;a target="_blank" href="<ph name="URL" />"&gt;자세히 알아보기&lt;/a&gt;</translation>
 <translation id="1367951781824006909">파일 선택</translation>
+<translation id="1370749010280229230">도크와 연결된 디스플레이에 문제 발생</translation>
 <translation id="1371301976177520732">북마크, 비밀번호, 방문 기록 등을 모든 기기에 동기화</translation>
 <translation id="1372841398847029212">내 계정에 동기화</translation>
 <translation id="1374844444528092021">네트워크 '<ph name="NETWORK_NAME" />'에 필요한 인증서가 설치되지 않았거나 더 이상 유효하지 않습니다. 새로운 인증서를 받아 다시 연결하세요.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">웹페이지, 단일 파일</translation>
 <translation id="1451917004835509682">관리 대상 사용자 추가</translation>
 <translation id="1454223536435069390">스크린샷 캡쳐하기(&amp;A)</translation>
+<translation id="1458243790901188746">{0,plural, =1{폴더: <ph name="DIRECTORIES" />}other{폴더: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">확장 프로그램에 의해 추가된 검색엔진</translation>
 <translation id="146000042969587795">안전하지 않은 콘텐츠가 포함되어 이 프레임을 차단했습니다.</translation>
 <translation id="146219525117638703">ONC 상태</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">입력 옵션 표시</translation>
 <translation id="1651008383952180276">동일한 암호를 두 번 입력해야 합니다.</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Google 클라우드 프린트에 프린터를 추가하여 어디서나 인쇄하세요.}other{Google 클라우드 프린트에 프린터 #개를 추가하여 어디서나 인쇄하세요.}}</translation>
+<translation id="1656528038316521561">배경 불투명도</translation>
 <translation id="1657406563541664238">사용 통계 및 비정상 종료 보고서가 Google로 자동 전송되게 하여 <ph name="PRODUCT_NAME" /> 개선에 도움 주기</translation>
 <translation id="1658424621194652532">마이크에 액세스하는 페이지입니다.</translation>
 <translation id="1660204651932907780">사이트에서 소리를 재생하도록 허용(권장)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" />에서 보안 키 제조업체와 모델을 확인하려고 합니다.</translation>
 <translation id="1679068421605151609">개발자 도구</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">종료하시겠습니까?</translation>
 <translation id="167983332380191032">관리 서비스에서 HTTP 오류를 전송했습니다.</translation>
 <translation id="1680849702532889074">Linux 애플리케이션을 설치하는 중에 오류가 발생했습니다.</translation>
 <translation id="16815041330799488">사이트에서 클립보드에 복사된 텍스트 및 이미지를 확인하도록 허용하지 않음</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">보호된 미디어 식별자</translation>
 <translation id="175196451752279553">닫은 탭 다시 열기(&amp;E)</translation>
 <translation id="1753905327828125965">자주 방문한 페이지</translation>
+<translation id="1755601632425835748">텍스트 크기</translation>
 <translation id="1756681705074952506">입력 방법</translation>
 <translation id="1757301747492736405">제거 대기 중</translation>
 <translation id="175772926354468439">테마 사용</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">작게(&amp;S)</translation>
 <translation id="1919345977826869612">광고</translation>
 <translation id="1919814239594435008">샌드박스 처리되지 않은 플러그인이 허용됨</translation>
+<translation id="1920390473494685033">연락처</translation>
 <translation id="1921050530041573580">메시지와 휴대전화 페어링</translation>
 <translation id="1921584744613111023"><ph name="DPI" />dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" />에서 더 스마트하게 Google 사용하기</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">시크릿 탭: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" />의 <ph name="PEPPER_PLUGIN_NAME" />에서 내 컴퓨터에 액세스하려고 합니다</translation>
 <translation id="2178614541317717477">CA 손상</translation>
+<translation id="2179849162388791084">보안 키에서 로그인 데이터를 수집할 수 없습니다.</translation>
 <translation id="218070003709087997">숫자로 인쇄 부수를 표시하세요(1부터 999까지).</translation>
 <translation id="2184515124301515068">사이트의 소리 재생 여부를 Chrome이 결정(권장)</translation>
 <translation id="2187895286714876935">서버 인증서 가져오기 오류</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">모든 쿠키 및 사이트 데이터</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{항목 1개가 복사됨}other{항목 #개가 복사됨}}</translation>
 <translation id="2278562042389100163">브라우저 창 열기</translation>
-<translation id="2279874276457403668">한 번에 하나의 세션만 만들 수 있습니다.</translation>
 <translation id="2280486287150724112">오른쪽 여백</translation>
 <translation id="2282146716419988068">GPU 프로세스</translation>
 <translation id="2282155092769082568">자동설정 URL:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">잠금 화면 메모는 자동으로 <ph name="LOCK_SCREEN_APP_NAME" />에 저장됩니다. 가장 최근 메모는 잠금 화면에 계속 표시됩니다.</translation>
 <translation id="2353297238722298836">카메라 및 마이크 허용됨</translation>
 <translation id="2356070529366658676">확인</translation>
-<translation id="2357949918965361754">이 기능을 사용하면 TV 또는 다른 기기에 Chrome의 콘텐츠를 표시할 수 있습니다.</translation>
 <translation id="2359345697448000899">도구 메뉴에서 확장 프로그램을 클릭하여 확장 프로그램을 관리할 수 있습니다.</translation>
 <translation id="2359808026110333948">계속</translation>
 <translation id="236117173274098341">최적화</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">조직에서 기기를 즉시 업데이트할 것을 요구합니다.</translation>
 <translation id="2439545803278355377">새 PIN을 입력하세요. PIN은 4자 이상이어야 하며 문자, 숫자, 기타 문자를 포함할 수 있습니다.</translation>
 <translation id="2440604414813129000">소스 보기(&amp;O)</translation>
+<translation id="2442916515643169563">텍스트 음영</translation>
 <translation id="2444119669991608829">페이지가 <ph name="LANGUAGE" />로 표시되지 않나요?</translation>
 <translation id="2445081178310039857">확장 프로그램 루트 디렉터리가 필요합니다.</translation>
 <translation id="2445484935443597917">새 프로필 만들기</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">만료:</translation>
 <translation id="2739191690716947896">디버그</translation>
 <translation id="2739240477418971307">접근성 설정 변경</translation>
+<translation id="274029851662193272">음각</translation>
 <translation id="2740393541869613458">관리 대상 사용자가 방문한 웹사이트 검토 등</translation>
 <translation id="2741912629735277980">로그인 화면에 UI 표시</translation>
 <translation id="274290345632688601">Linux 앱 및 파일 복원 중</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">바로가기가 이미 존재합니다.</translation>
 <translation id="2807517655263062534">다운로드한 파일이 여기에 표시됩니다.</translation>
 <translation id="2809586584051668049">외 <ph name="NUMBER_ADDITIONAL_DISABLED" />개</translation>
+<translation id="2812049959647166806">Thunderbolt가 지원되지 않음</translation>
 <translation id="2812944337881233323">로그아웃한 후 다시 로그인하세요.</translation>
 <translation id="2812989263793994277">이미지 표시 안함</translation>
 <translation id="281390819046738856">요청을 서명할 수 없습니다.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">발급기관</translation>
 <translation id="2844169650293029770">USB-C 기기(좌측 전면 포트)</translation>
 <translation id="2845382757467349449">북마크바 항상 표시</translation>
-<translation id="2847759467426165163">전송할 기기</translation>
 <translation id="284805635805850872">유해한 소프트웨어를 삭제하시겠습니까?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" />(<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">정리하지 못했습니다.</translation>
@@ -1297,6 +1305,7 @@
     서버 메시지: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">디렉터리별 미디어 갤러리 추가</translation>
 <translation id="2910318910161511225">네트워크에 연결하고 다시 시도해 주세요</translation>
+<translation id="2910518940971897750">원본 파일에 저장</translation>
 <translation id="2913331724188855103">사이트에서 쿠키 데이터를 저장하고 읽도록 허용(권장)</translation>
 <translation id="2915102088417824677">활동 로그 보기</translation>
 <translation id="2915873080513663243">자동 스캔</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI 기기</translation>
 <translation id="3015639418649705390">지금 다시 시작</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" />을(를) 자동으로 설정할 수 없습니다. 고급 프린터 세부정보를 지정해 주세요.</translation>
+<translation id="3016381065346027039">로그 항목 없음</translation>
 <translation id="3016641847947582299">구성요소가 업데이트됨</translation>
 <translation id="3016780570757425217">내 위치 확인</translation>
 <translation id="3017079585324758401">배경</translation>
 <translation id="3020183492814296499">바로가기</translation>
 <translation id="3020990233660977256">일련번호: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">나비</translation>
+<translation id="3021408157810018664">변경사항을 원본 파일에 저장하시겠습니까?</translation>
 <translation id="3021426244864538700">사이트 데이터에 액세스하는 중</translation>
 <translation id="3021678814754966447">프레임 소스 보기(&amp;V)</translation>
 <translation id="3022978424994383087">인식하지 못했습니다.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">로그인을 건너뛰고 <ph name="LINK_START" />게스트로 로그인<ph name="LINK_END" />할 수도 있습니다.</translation>
 <translation id="3172045848207518317">사이트에서 동영상 입력을 공유하는 중입니다.</translation>
 <translation id="3177909033752230686">페이지 언어:</translation>
+<translation id="3179982752812949580">텍스트 글꼴</translation>
 <translation id="3181954750937456830">세이프 브라우징(사용자와 사용자의 기기를 위험한 사이트로부터 보호)</translation>
 <translation id="3182749001423093222">맞춤법 검사</translation>
 <translation id="3183139917765991655">프로필 가져오기 도구</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">창으로 열기</translation>
 <translation id="3278001907972365362">Google 계정에 주의가 필요합니다.</translation>
 <translation id="3279230909244266691">이 과정은 몇 분 정도 소요될 수 있습니다. 가상 머신을 시작합니다.</translation>
-<translation id="3279741024917655738">다음에서 동영상을 전체화면으로 표시</translation>
 <translation id="3280237271814976245">다른 이름으로 저장(&amp;A)...</translation>
 <translation id="3280243678470289153">Chrome 사용 계속하기</translation>
 <translation id="3281892622610078515">스팸 격리 저장소에 보관할 파일 및 프로그램:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">검색결과 없음</translation>
 <translation id="3305389145870741612">포맷하는 데 몇 초 정도 걸립니다. 잠시 기다려 주세요.</translation>
 <translation id="3305661444342691068">미리보기에서 PDF 열기</translation>
-<translation id="3306684685104080068">Google 행아웃과 같은 클라우드 기반 서비스로 전송하도록 허용합니다.</translation>
+<translation id="3307871847038842490">이 페이지는 원본 파일에 저장할 수 있습니다.</translation>
 <translation id="3308006649705061278">조직 구성 단위(OU)</translation>
 <translation id="3308116878371095290">이 페이지에서 쿠키를 설정할 수 없습니다.</translation>
 <translation id="3308134619352333507">버튼 숨기기</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">계정 설정을 취소하시겠습니까?</translation>
 <translation id="3464012987031883895">사이트에서 오디오 입력을 공유하는 중입니다.</translation>
 <translation id="346431825526753"><ph name="CUSTODIAN_EMAIL" />님이 관리하는 어린이용 계정입니다.</translation>
-<translation id="3468275649641751422">동영상 또는 오디오 파일 스트림</translation>
 <translation id="3468999815377931311">Android 휴대전화</translation>
 <translation id="3470442499439619530">이 사용자 삭제</translation>
 <translation id="3473479545200714844">화면 돋보기</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">축소</translation>
 <translation id="3497560059572256875">기념일 로고 공유</translation>
 <translation id="3505030558724226696">기기 액세스 취소</translation>
+<translation id="3505635633742443645">동영상 출력에 USB 타입-C 포트가 사용되는 경우 도크의 HDMI 포트를 사용할 수 없습니다. 디스플레이 중 하나에 다른 포트를 사용하세요.</translation>
 <translation id="3507421388498836150">'<ph name="EXTENSION_NAME" />'의 현재 권한</translation>
 <translation id="3507888235492474624">블루투스 기기 다시 검색</translation>
 <translation id="3508920295779105875">다른 폴더 선택...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">설치되었습니다.</translation>
 <translation id="3578594933904494462">이 탭의 콘텐츠를 공유 중입니다.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt;님이 내가 소유한 그룹(&lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;)과의 프린터(&lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt;) 공유를 요청했습니다. 동의하면 모든 그룹 회원이 해당 프린터로 인쇄할 수 있게 됩니다.</translation>
+<translation id="357889014807611375">전송량 제한이 있는 Wi-Fi</translation>
 <translation id="3584169441612580296">컴퓨터에서 사진, 음악, 기타 미디어 조회 및 변경</translation>
 <translation id="3587482841069643663">전체</translation>
 <translation id="358796204584394954">'<ph name="DEVICE_NAME" />'에서 이 코드를 입력하여 다음을 페어링:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">로그인</translation>
 <translation id="3593965109698325041">인증서 이름 제약조건</translation>
 <translation id="3596235046596950091">클라우드 서비스 사용</translation>
+<translation id="3599221874935822507">양각</translation>
 <translation id="3599863153486145794">로그인된 모든 기기에서 방문 기록을 지웁니다. Google 계정의 내 활동(<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />)에는 인터넷 사용 기록이 다른 형식으로 남아 있을 수도 있습니다.</translation>
 <translation id="3600051066689725006">웹 요청 정보</translation>
 <translation id="3600792891314830896">소리를 재생하는 사이트 음소거</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;에서 다운로드함</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> 표시</translation>
 <translation id="3613422051106148727">새 탭에서 열기(&amp;O)</translation>
+<translation id="3615073365085224194">손가락으로 지문 센서를 터치하세요.</translation>
 <translation id="3616113530831147358">오디오</translation>
 <translation id="3616741288025931835">인터넷 사용 기록 삭제(&amp;C)...</translation>
 <translation id="3617891479562106823">배경을 사용할 수 없습니다. 나중에 다시 시도하세요.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">홈페이지</translation>
 <translation id="3720996970802414353">무시하고 전환</translation>
 <translation id="3722108462506185496">가상 머신 서비스를 시작하지 못했습니다. 다시 시도해 주세요.</translation>
-<translation id="3723158278575423087">Chromium의 전송 환경에 오신 것을 환영합니다!</translation>
 <translation id="3725367690636977613">쪽</translation>
 <translation id="3726137731714254362">여기에서 폴더를 삭제하면 공유가 중지되지만 파일이 삭제되지는 않습니다.</translation>
 <translation id="3727148787322499904">이 설정을 변경하면 공유한 모든 네트워크에 영향을 줍니다.</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">자세한 빌드 정보</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{USB 기기 1개와 통신}other{USB 기기 #개와 통신}}</translation>
 <translation id="3765246971671567135">오프라인 데모 모드 정책을 읽을 수 없습니다.</translation>
-<translation id="3766223500670287046">원격 화면</translation>
 <translation id="3768037234834996183">환경설정 동기화 중...</translation>
 <translation id="377050016711188788">아이스크림</translation>
 <translation id="3771294271822695279">동영상 파일</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">손가락을 뗀 후 다시 터치</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: 동기화 중지됨</translation>
-<translation id="3862134173397075045">Chrome의 전송 환경에 오신 것을 환영합니다.</translation>
 <translation id="3862693525629180217">내장 센서를 통해 인증</translation>
 <translation id="3862788408946266506">'kiosk_only' 매니페스트 속성을 사용하는 앱은 Chrome OS 키오스크 모드에 설치해야 합니다</translation>
 <translation id="3865414814144988605">해상도</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smart Lock 휴대전화가 변경됨</translation>
 <translation id="3927932062596804919">거부</translation>
 <translation id="3930737994424905957">기기 검색 중</translation>
+<translation id="3930968231047618417">배경 색상</translation>
 <translation id="3933283459331715412">삭제된 <ph name="USERNAME" />님의 비밀번호 복원</translation>
 <translation id="3936390757709632190">새 탭에서 오디오 열기(&amp;O)</translation>
 <translation id="3936925983113350642">선택한 비밀번호는 나중에 이 인증서를 복원할 때 필요하므로 안전한 위치에 기록해 두세요.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" />(<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE에서 가져온 북마크</translation>
 <translation id="3950820424414687140">로그인</translation>
+<translation id="3950828138786918475">이 탭은 기기에 있는 폴더를 읽을 수 있습니다.</translation>
 <translation id="3954354850384043518">진행 중</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" />x<ph name="HEIGHT" />(<ph name="REFRESH_RATE" />Hz)</translation>
 <translation id="3954953195017194676">최근 캡처한 WebRTC 이벤트 로그가 없습니다.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">계산 중...</translation>
 <translation id="3975565978598857337">영역 서버에 연락을 취하지 못했습니다.</translation>
 <translation id="397703832102027365">완료 중...</translation>
+<translation id="3977886311744775419">이러한 네트워크 유형에서는 자동 업데이트가 다운로드되지 않지만 수동으로 업데이트를 확인할 수 있습니다.</translation>
 <translation id="3979395879372752341">새 확장 프로그램이 추가됨(<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> 사용</translation>
 <translation id="3981760180856053153">잘못된 저장 유형을 입력했습니다.</translation>
@@ -2150,6 +2164,7 @@
 <translation id="4194570336751258953">두드려서 클릭</translation>
 <translation id="4195643157523330669">새 탭에서 열기</translation>
 <translation id="4195814663415092787">중단한 위치에서 계속하기</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" />은(는) 변경사항을 다음 파일에 직접 저장할 수 있습니다. 이 사이트는 이 탭이 열려 있을 때만 변경사항을 저장할 수 있습니다.</translation>
 <translation id="4198146608511578238">Google 어시스턴트와 대화하려면 런처 아이콘을 길게 누르세요.</translation>
 <translation id="4200689466366162458">맞춤 단어</translation>
 <translation id="4200983522494130825">새 탭(&amp;T)</translation>
@@ -2197,7 +2212,6 @@
 <translation id="4267953847983678297">자동으로 이동통신망에 연결</translation>
 <translation id="4268025649754414643">키 암호화</translation>
 <translation id="4270393598798225102">버전 <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">일치하는 항목이 없습니다.</translation>
 <translation id="4275663329226226506">미디어</translation>
 <translation id="4275830172053184480">기기 다시 시작</translation>
 <translation id="4278101229438943600">어시스턴트 이용 가능</translation>
@@ -2346,6 +2360,7 @@
 <translation id="4533985347672295764">CPU 시간</translation>
 <translation id="4534661889221639075">다시 시도하세요.</translation>
 <translation id="4535127706710932914">기본 프로필</translation>
+<translation id="4535767533210902251">지문 센서는 키보드 오른쪽 상단의 키에 있습니다. 손가락으로 가볍게 터치하세요.</translation>
 <translation id="4538684596480161368"><ph name="HOST" />에서 샌드박스 처리되지 않은 플러그인을 항상 차단</translation>
 <translation id="4538792345715658285">엔터프라이즈 정책에 의해 설치됨</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" /> 및 <ph name="WEBSITE_2" />에서 데이터 읽기</translation>
@@ -2379,6 +2394,7 @@
 <translation id="457386861538956877">더보기...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">블루투스 기기 페어링</translation>
+<translation id="4578012756826807359">로그인 데이터 삭제 완료</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" />을(를) 전송할 수 없습니다.</translation>
 <translation id="4581774856936278355">Linux 복원 중 오류 발생</translation>
 <translation id="4582563038311694664">모든 설정 초기화</translation>
@@ -2496,7 +2512,6 @@
 <translation id="4763830802490665879">여러 사이트의 쿠키가 종료 시 삭제됩니다.</translation>
 <translation id="4765582662863429759">Android 메시지가 휴대전화의 문자 메시지를 Chromebook으로 전달하도록 허용합니다.</translation>
 <translation id="4768332406694066911">다음 기관에 사용자의 신원을 확인하는 인증서가 있습니다.</translation>
-<translation id="4772404146526168240">두 화면 다</translation>
 <translation id="4776146737004271126">Android 설정 열기</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" />의 비밀번호</translation>
 <translation id="4777825441726637019">Play 스토어</translation>
@@ -2604,7 +2619,6 @@
 <translation id="4927846293686536410">로그인하면 모든 기기에서 북마크, 방문 기록, 비밀번호, 기타 설정이 동기화되며 Google 서비스에도 자동으로 로그인됩니다.</translation>
 <translation id="4929386379796360314">인쇄 대상</translation>
 <translation id="4930714375720679147">사용 설정</translation>
-<translation id="4931132176527519925">항상 미러링 사용</translation>
 <translation id="4932733599132424254">날짜</translation>
 <translation id="4933484234309072027"><ph name="URL" />에 삽입</translation>
 <translation id="493571969993549666">관리 대상 사용자 추가</translation>
@@ -2644,6 +2658,7 @@
 <translation id="4992066212339426712">음소거 해제</translation>
 <translation id="4992458225095111526">Powerwash 확인</translation>
 <translation id="4992473555164495036">관리자가 사용 가능한 입력 방법을 제한했습니다.</translation>
+<translation id="4992866843815555470">도크에 문제가 있어 수리해야 합니다. 팬이 작동하지 않으면 도크가 고장날 수 있습니다.</translation>
 <translation id="4992926179187649719">'Ok Google' 사용 설정</translation>
 <translation id="4994474651455208930">사이트에서 프로토콜에 대한 기본 핸들러가 될지 여부를 묻도록 허용</translation>
 <translation id="4994754230098574403">설정 중입니다.</translation>
@@ -2782,7 +2797,6 @@
 <translation id="5233231016133573565">프로세스 ID</translation>
 <translation id="5233638681132016545">새 탭</translation>
 <translation id="5233736638227740678">붙여넣기(&amp;P)</translation>
-<translation id="5234764350956374838">숨기기</translation>
 <translation id="5235050375939235066">앱을 제거하시겠습니까?</translation>
 <translation id="5235750401727657667">새 탭을 열 때 표시되는 페이지 변경</translation>
 <translation id="5238278114306905396">'<ph name="EXTENSION_NAME" />' 앱이 자동으로 삭제되었습니다.</translation>
@@ -2847,6 +2861,7 @@
 <translation id="5319359161174645648">Google에서 추천하는 Chrome</translation>
 <translation id="532247166573571973">서버 접속이 불가능할 수 있습니다. 나중에 다시 시도해 주세요.</translation>
 <translation id="5324780743567488672">사용자 위치를 사용하여 자동으로 시간대 설정</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - 원본 파일에 저장할 수 있음</translation>
 <translation id="5327248766486351172">이름</translation>
 <translation id="5327570636534774768">이 기기는 다른 도메인에서 관리하는 것으로 표시되어 있습니다. 데모 모드를 설정하기 전에 관련 도메인에서 기기의 프로비저닝을 해제하세요.</translation>
 <translation id="532943162177641444">이 기기에서 사용할 수 있는 모바일 핫스팟을 설정하려면 <ph name="PHONE_NAME" />에서 알림을 탭하세요.</translation>
@@ -2989,7 +3004,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" />에서 다음 권한을 요청합니다.</translation>
 <translation id="5534304873398226603">사진 또는 동영상 삭제</translation>
 <translation id="5535941515421698170">기기에서 기존 데이터도 삭제</translation>
-<translation id="5537725057119320332">전송</translation>
 <translation id="5539221284352502426">입력한 비밀번호가 서버에 의해 거부되었습니다. 가능한 이유는 다음과 같습니다. 비밀번호가 너무 짧습니다. 비밀번호에 숫자 또는 기호가 포함되어야 합니다. 이전 비밀번호와 달라야 합니다.</translation>
 <translation id="5541687815721799001">앱 사용</translation>
 <translation id="5542132724887566711">프로필</translation>
@@ -3298,7 +3312,6 @@
 <translation id="5997337190805127100">사이트 액세스 권한 자세히 알아보기</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' 검색결과 <ph name="RESULT_COUNT" />개</translation>
 <translation id="6002458620803359783">선호하는 음성</translation>
-<translation id="6005695835120147974">미디어 라우터</translation>
 <translation id="6006484371116297560">기본</translation>
 <translation id="6007240208646052708">사용자의 언어로 음성 검색을 이용할 수 없습니다.</translation>
 <translation id="6009781704028455063">내장 센서</translation>
@@ -3498,7 +3511,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{네트워크에 새로운 프린터 있음}other{네트워크에 새로운 프린터 있음}}</translation>
 <translation id="6286708577777130801">저장된 암호 세부정보</translation>
 <translation id="6289452883081499048">Play 등 Google 서비스 맞춤설정</translation>
-<translation id="6290556621549272952">이 기능을 사용하면 TV 또는 다른 기기에 Chromium의 콘텐츠를 표시할 수 있습니다.</translation>
 <translation id="6291949900244949761">사이트에서 USB 기기에 액세스하려고 할 때 확인(권장)</translation>
 <translation id="6291953229176937411">Finder에서 보기(&amp;S)</translation>
 <translation id="6295158916970320988">모든 사이트</translation>
@@ -3562,6 +3574,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />시스템 정보<ph name="END_LINK1" /> 및 <ph name="BEGIN_LINK2" />통계<ph name="END_LINK2" /> 전송</translation>
 <translation id="6396988158856674517">사이트에서 움직임 감지 센서를 사용하지 못하도록 차단</translation>
 <translation id="6397094776139756010">동기화 및 맞춤설정 옵션</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" />은(는) 변경사항을 다음 폴더에 있는 파일에 직접 저장할 수 있습니다. 이 사이트는 이 탭이 열려 있을 때만 변경사항을 저장할 수 있습니다.</translation>
 <translation id="6398715114293939307">Google Play 스토어 삭제</translation>
 <translation id="6398765197997659313">전체화면 닫기</translation>
 <translation id="6399774419735315745">스파이</translation>
@@ -3606,11 +3619,13 @@
 <translation id="6455264371803474013">특정 사이트에서</translation>
 <translation id="6455894534188563617">새 폴더(&amp;N)</translation>
 <translation id="6456394469623773452">좋음</translation>
+<translation id="6456955391422100996">광고가 삭제되었습니다.</translation>
 <translation id="645705751491738698">자바스크립트 계속 차단</translation>
 <translation id="6458701200018867744">업로드 실패(<ph name="WEBRTC_LOG_UPLOAD_TIME" />)</translation>
 <translation id="6459488832681039634">선택 부분으로 찾기</translation>
 <translation id="6459799433792303855">활성 창이 다른 디스플레이로 이동했습니다.</translation>
 <translation id="6460601847208524483">다음 찾기</translation>
+<translation id="6461170143930046705">네트워크 검색 중...</translation>
 <translation id="6463795194797719782">편집(&amp;E)</translation>
 <translation id="6466988389784393586">모든 북마크 열기(&amp;O)</translation>
 <translation id="6467304607960172345">전체 화면 동영상 최적화</translation>
@@ -3649,6 +3664,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641"><ph name="NETWORK_TYPE" /> 네트워크에 연결되어 있습니다.</translation>
 <translation id="6527303717912515753">공유</translation>
 <translation id="6528513914570774834">이 기기의 다른 사용자가 이 네트워크를 사용하도록 허용</translation>
 <translation id="652948702951888897">Chrome 방문 기록</translation>
@@ -3745,7 +3761,6 @@
 <translation id="6680650203439190394">평가</translation>
 <translation id="6681668084120808868">사진 찍기</translation>
 <translation id="6681964764822470072">'<ph name="APP_NAME" />'이(가) 제거됩니다.</translation>
-<translation id="6685083257944113180">중지, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Google Play 열기</translation>
 <translation id="6686490380836145850">우측 탭 닫기</translation>
 <translation id="6686817083349815241">비밀번호 저장</translation>
@@ -3853,6 +3868,7 @@
 <translation id="6845038076637626672">최대화 상태로 열기</translation>
 <translation id="6845325883481699275">Chrome 보안 강화 개선에 참여하기</translation>
 <translation id="6848388270925200958">현재 이 기기에서만 사용할 수 있는 카드가 있습니다.</translation>
+<translation id="6850286078059909152">텍스트 색상</translation>
 <translation id="6851497530878285708">앱 사용 설정됨</translation>
 <translation id="6853388645642883916">업데이터 절전 모드</translation>
 <translation id="68541483639528434">다른 탭 닫기</translation>
@@ -3902,7 +3918,6 @@
 <translation id="6923132443355966645">스크롤/클릭</translation>
 <translation id="6923633482430812883">공유를 마운트하는 중 오류가 발생했습니다. 연결하려는 파일 서버가 SMBv2 이상을 지원하는지 확인하세요.</translation>
 <translation id="6930036377490597025">외장 보안 키 또는 내장 센서</translation>
-<translation id="6930242544192836755">기간</translation>
 <translation id="693807610556624488">기기(<ph name="DEVICE_NAME" />)의 쓰기 작업이 최대 속성 길이를 초과합니다.</translation>
 <translation id="6941937518557314510"><ph name="TOKEN_NAME" />에 로그인하여 인증서로 <ph name="HOST_NAME" />에서 인증을 받으세요.</translation>
 <translation id="6943176775188458830">인쇄 취소</translation>
@@ -3916,6 +3931,7 @@
 <translation id="6951153907720526401">결제 핸들러</translation>
 <translation id="6951663584153258142">조직에서 기기 업데이트를 요청합니다.</translation>
 <translation id="6953878494808481632">관련 정보</translation>
+<translation id="6953916367503892689">{0,plural, =1{파일: <ph name="FILES" />}other{파일: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">팝업 검사</translation>
 <translation id="6957044667612803194">PIN을 지원하지 않는 보안 키입니다.</translation>
 <translation id="6957231940976260713">서비스 이름</translation>
@@ -4128,7 +4144,6 @@
 <translation id="7254554697254365959">페이지를 번역할 수 없습니다.</translation>
 <translation id="7254951428499890870">'<ph name="APP_NAME" />'을(를) 진단 모드로 실행하시겠습니까?</translation>
 <translation id="7255002516883565667">현재 이 기기에서만 사용할 수 있는 카드가 1장 있습니다.</translation>
-<translation id="7255220508626648026">전송: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">보안 키를 다시 터치하여 초기화 여부를 확인하세요. PIN을 비롯하여 보안 키에 저장된 모든 정보가 삭제됩니다.</translation>
 <translation id="7255935316994522020">적용</translation>
 <translation id="7256069762010468647">사이트에서 카메라를 사용하고 있습니다.</translation>
@@ -4262,6 +4277,7 @@
 <translation id="7456142309650173560">개발자</translation>
 <translation id="7456847797759667638">위치 열기...</translation>
 <translation id="7458168200501453431">Google 검색에서 사용되는 것과 동일한 맞춤법 검사기를 사용하세요. 브라우저에 입력하는 텍스트는 Google로 전송됩니다.</translation>
+<translation id="7460045493116006516">내가 설치한 현재 테마입니다.</translation>
 <translation id="7461924472993315131">고정</translation>
 <translation id="746216226901520237">다음번에는 휴대전화를 통해 <ph name="DEVICE_TYPE" />이(가) 잠금 해제됩니다. 설정에서 Smart Lock을 사용 중지할 수 있습니다.</translation>
 <translation id="7463006580194749499">사용자 추가</translation>
@@ -4321,6 +4337,7 @@
 <translation id="7554791636758816595">새 탭</translation>
 <translation id="7556033326131260574">Smart Lock이 계정을 인증하지 못했습니다. 잠금 해제하려면 비밀번호를 입력하세요.</translation>
 <translation id="7556242789364317684">안타깝게도 <ph name="SHORT_PRODUCT_NAME" />에서 설정을 복구할 수 없습니다. 오류를 해결하려면 <ph name="SHORT_PRODUCT_NAME" />에서 Powerwash를 사용하여 기기를 재설정해야 합니다.</translation>
+<translation id="7559444627302317199">네트워크 연결을 확인한 다음 다시 시도하세요.</translation>
 <translation id="7559719679815339381">잠시 기다려주세요. Kiosk 앱을 업데이트하는 중입니다. USB 메모리를 제거하지 마세요.</translation>
 <translation id="7561196759112975576">항상</translation>
 <translation id="7563991800558061108">이 오류에서 복구하려면 로그인 화면에서 Google 계정에
@@ -4563,7 +4580,6 @@
 <translation id="7887334752153342268">새 탭에서 보기</translation>
 <translation id="7887864092952184874">블루투스 마우스 페어링됨</translation>
 <translation id="7889565820482017512">디스플레이 크기</translation>
-<translation id="7889966925761734854">찾기</translation>
 <translation id="7893008570150657497">컴퓨터에서 사진, 음악, 기타 미디어에 액세스</translation>
 <translation id="7893153962594818789">이 <ph name="DEVICE_TYPE" />에서 블루투스가 사용 중지되어 있습니다. 비밀번호를 입력하고 블루투스를 사용 설정하세요.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" />(기본)</translation>
@@ -4571,7 +4587,6 @@
 <translation id="7898627924844766532">툴바에 보관</translation>
 <translation id="7898725031477653577">항상 번역</translation>
 <translation id="790040513076446191">개인정보 보호 관련 설정 조정</translation>
-<translation id="7902874111237641165">부드러운 동작 [베타]</translation>
 <translation id="7903345046358933331">페이지에서 응답이 없습니다. 페이지가 응답할 때까지 기다리거나 페이지를 닫으세요.</translation>
 <translation id="7903742244674067440">다음 인증기관을 식별하는 인증서가 등록되어 있습니다.</translation>
 <translation id="7903925330883316394">유틸리티: <ph name="UTILITY_TYPE" /></translation>
@@ -4683,6 +4698,7 @@
 <translation id="8037117027592400564">음성 출력 기능을 사용한 모든 음성 텍스트 조회</translation>
 <translation id="8037357227543935929">요청(기본값)</translation>
 <translation id="803771048473350947">파일</translation>
+<translation id="8042142357103597104">텍스트 불투명도</translation>
 <translation id="8044899503464538266">느리게</translation>
 <translation id="8045253504249021590">Google 대시보드를 통해 동기화가 중지되었습니다.</translation>
 <translation id="8045923671629973368">애플리케이션 ID 또는 웹 스토어 URL 입력</translation>
@@ -4719,7 +4735,6 @@
     <ph name="BEGIN_PARAGRAPH5" />설정에서 이 서비스를 사용 중지할 수 있습니다.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN이 일치하지 않습니다.</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" />이(가) 확장 프로그램의 프록시 설정을 사용 중입니다.</translation>
-<translation id="8099495042588009598">권한 더보기</translation>
 <translation id="8101987792947961127">다음에 재부팅할 때 Powerwash 필요</translation>
 <translation id="8102159139658438129"><ph name="LINK_BEGIN" />설정<ph name="LINK_END" />으로 이동해 연결된 휴대전화의 옵션을 확인하세요.</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> 기기를 Powerwash한 다음 이전 버전으로 돌아가세요.</translation>
@@ -4771,8 +4786,10 @@
     차단되면 안 되는 사이트입니다.</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" />(으)로 전환</translation>
 <translation id="8184318863960255706">추가 정보</translation>
+<translation id="8184472985242519288">균일</translation>
 <translation id="8185331656081929126">네트워크에 새 프린터가 감지되면 알림 표시</translation>
 <translation id="8186609076106987817">서버에서 파일을 찾을 수 없습니다.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" />은(는) 다음 폴더에 있는 모든 파일을 읽을 수 있습니다. 이 사이트는 이 탭이 열려 있을 때에만 변경사항을 확인할 수 있습니다.</translation>
 <translation id="8188389033983459049">계속하려면 기기 설정을 확인하고 사용 설정하세요.</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" />에 연결 중</translation>
 <translation id="8191230140820435481">앱, 확장 프로그램 및 테마 관리</translation>
@@ -4876,7 +4893,6 @@
 <translation id="833986336429795709">이 링크를 열려면 앱을 선택하세요.</translation>
 <translation id="8342861492835240085">컬렉션 선택</translation>
 <translation id="834290227245955730">잘못된 PIN입니다. 남은 재시도 횟수는 <ph name="RETRIES" />회입니다.</translation>
-<translation id="8343956361364550006">최고의 동영상 또는 애니메이션 품질을 위해 높은 대역폭을 사용합니다. 인터넷 연결 속도가 느린 사용자는 콘텐츠를 보지 못할 수 있습니다.</translation>
 <translation id="8351419472474436977">이 확장 프로그램이 프록시 설정을 제어할 수 있게 되었으며, 따라서 사용자가 온라인에서 수행하는 모든 작업을 변경 및 중단하고 엿볼 수 있게 되었음을 의미합니다. 이와 같이 변경된 이유가 확실하지 않다면 이 설정을 사용하지 않는 것이 좋습니다.</translation>
 <translation id="8351630282875799764">배터리가 충전되고 있지 않음</translation>
 <translation id="835238322900896202">제거 중 오류가 발생했습니다. 터미널을 통해 제거해 주세요.</translation>
@@ -4909,9 +4925,11 @@
 <translation id="839736845446313156">등록</translation>
 <translation id="8398877366907290961">무시하고 계속하기</translation>
 <translation id="8400146488506985033">사용자 관리</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" />은(는) 변경사항을 다음 폴더에 있는 파일에 직접 저장할 수 있습니다. 이 사이트는 이 탭이 열려 있을 때만 변경사항을 저장할 수 있습니다.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">우선 확인(권장)</translation>
 <translation id="8418445294933751433">탭으로 표시(&amp;S)</translation>
+<translation id="8418905021510211421">이 페이지는 기기에 있는 폴더를 읽을 수 있습니다.</translation>
 <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />'에 대한 검색결과</translation>
 <translation id="8419368276599091549"><ph name="DEVICE_TYPE" /> 시작하기</translation>
 <translation id="8425213833346101688">변경</translation>
@@ -4931,6 +4949,7 @@
 <translation id="8438566539970814960">검색 및 탐색 기능 개선</translation>
 <translation id="8439506636278576865">이 언어로 된 페이지에 대한 번역 옵션 제공</translation>
 <translation id="8440630305826533614">Linux 앱</translation>
+<translation id="844241640324986723">로그인 데이터를 삭제하지 못했습니다.</translation>
 <translation id="8443338615972234259">지금 관리 대상 사용자용 계정을 새로 만드세요.</translation>
 <translation id="8446884382197647889">자세히 알아보기</translation>
 <translation id="8447409163267621480">Ctrl 또는 Alt 중 하나를 포함해야 합니다</translation>
@@ -4946,8 +4965,6 @@
 <translation id="8461914792118322307">프록시</translation>
 <translation id="8463215747450521436">이 관리 대상 사용자가 삭제되었거나 사용 중지되었습니다. 이 사용자로 계속 로그인하려면 관리자에게 문의하세요.</translation>
 <translation id="846374874681391779">다운로드바</translation>
-<translation id="8463807869745732775">‘&gt;
-    저장된 보안 키 로그인 데이터</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" />은(는) 사용 중지되었습니다.</translation>
 <translation id="8464132254133862871">서비스를 받을 수 없는 사용자 계정입니다.</translation>
 <translation id="8465252176946159372">잘못된 값입니다.</translation>
@@ -5013,6 +5030,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" />을(를) 인쇄 중</translation>
 <translation id="8569682776816196752">목적지를 찾을 수 없음</translation>
 <translation id="8571213806525832805">지난 4주</translation>
+<translation id="8573403125070227391">이 광고는 기기에서 너무 많은 리소스를 사용하기 때문에 Chrome에서 삭제되었습니다.</translation>
 <translation id="8574990355410201600"><ph name="HOST" />에서 소리 항상 허용</translation>
 <translation id="8575286410928791436">종료하려면 <ph name="KEY_EQUIVALENT" /> 키를 길게 누르세요.</translation>
 <translation id="8578639784464423491">99자를 초과할 수 없습니다.</translation>
@@ -5036,13 +5054,13 @@
 <translation id="8609465669617005112">위로 이동</translation>
 <translation id="8610103157987623234">잘못된 형식입니다. 다시 시도하세요.</translation>
 <translation id="8615618338313291042">시크릿 모드 애플리케이션:<ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">그림자</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">로밍 상태</translation>
 <translation id="8620765578342452535">네트워크 연결 구성</translation>
 <translation id="8621866727807194849">컴퓨터에 유해한 소프트웨어가 있습니다. Chrome이 유해한 소프트웨어를 삭제하고, 설정을 복원하고, 확장 프로그램을 사용 중지하는 중입니다. 이 작업이 끝나면 브라우저가 다시 정상적으로 작동합니다.</translation>
 <translation id="8621979332865976405">전체 화면 공유</translation>
 <translation id="862542460444371744">확장 프로그램(&amp;E)</translation>
-<translation id="8627151598708688654">소스 선택</translation>
 <translation id="862727964348362408">일시중지됨</translation>
 <translation id="862750493060684461">CSS 캐시</translation>
 <translation id="8627795981664801467">보안 연결만</translation>
@@ -5096,6 +5114,7 @@
 <translation id="8688579245973331962">이름이 표시되지 않습니까?</translation>
 <translation id="8688591111840995413">비밀번호가 잘못됨</translation>
 <translation id="8688672835843460752">사용 가능</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">위치 열기(&amp;L)...</translation>
 <translation id="869884720829132584">애플리케이션 메뉴</translation>
 <translation id="869891660844655955">유효기간</translation>
@@ -5259,6 +5278,7 @@
 <translation id="891365694296252935">사용 및 진단 데이터를 보냅니다. 이 기기는 현재 진단, 기기 및 앱 사용 데이터를 Google에 자동으로 보내고 있습니다. 이 데이터는 자녀를 식별하는 용도로 사용되지 않으며, 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 이 설정은 소유자가 지정합니다. 자녀의 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 자녀의 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">추천 단어 로드 중...</translation>
 <translation id="8916476537757519021">시크릿 모드 서브프레임: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - 기기에 있는 폴더를 읽을 수 있음</translation>
 <translation id="8919275547519617350">저장된 비밀번호를 어느 기기에서나 사용하려면 로그인하여 동기화를 사용 설정하세요.</translation>
 <translation id="8921366488406707015">보안 키 인증 중...</translation>
 <translation id="8922013791253848639">이 사이트의 광고 항상 허용</translation>
@@ -5288,7 +5308,6 @@
 <translation id="8965037249707889821">이전 비밀번호 입력</translation>
 <translation id="8966870118594285808">실수로 탭을 닫은 경우 탭 다시 열기</translation>
 <translation id="8967866634928501045">표시하려면 Alt Shift A를 누르세요</translation>
-<translation id="8970203673128054105">전송 모드 목록 보기</translation>
 <translation id="89720367119469899">Esc</translation>
 <translation id="8972513834460200407">네트워크 관리자에게 문의하여 방화벽이 Google 서버에서 다운로드를 차단하지 않는지 확인하시기 바랍니다.</translation>
 <translation id="8973557916016709913">확대/축소 레벨 삭제</translation>
@@ -5437,6 +5456,7 @@
 <translation id="9214520840402538427">설치 시간 속성의 시작 시간이 초과되었습니다. 지원 담당자에게 문의하시기 바랍니다.</translation>
 <translation id="9214695392875603905">컵케이크</translation>
 <translation id="9215293857209265904">'<ph name="EXTENSION_NAME" />'이(가) 추가됨</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" />은(는) 변경사항을 다음 파일에 직접 저장할 수 있습니다. 이 사이트는 이 탭이 열려 있을 때만 변경사항을 저장할 수 있습니다.</translation>
 <translation id="9218430445555521422">기본 브라우저로 설정</translation>
 <translation id="9219103736887031265">이미지</translation>
 <translation id="9220525904950070496">계정 삭제</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 923d0a9..8336e262 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Paleidžiant virtualų įrenginį įvyko klaida. Bandykite dar kartą.</translation>
 <translation id="1089439967362294234">Slaptažodžio keitimas</translation>
 <translation id="1090126737595388931">Nėra vykdomų fono programų</translation>
+<translation id="1090290614672149983">Išsaugoti pakeitimus pradiniame faile?</translation>
 <translation id="1090918500949388876">Pasiekite Padėjėją bet kuriuo metu pasakę „Ok Google“, kai ekranas įjungtas.</translation>
 <translation id="1091767800771861448">Jei norite praleisti, paspauskite ESCAPE (galioja tik neoficialioms versijoms).</translation>
 <translation id="1093457606523402488">Matomi tinklai:</translation>
 <translation id="1094607894174825014">Buvo pateikta skaitymo arba rašymo operacijos užklausa su netinkamu poslinkiu įrenginyje „<ph name="DEVICE_NAME" />“.</translation>
 <translation id="1097658378307015415">Prieš prisijungdami įeikite kaip svečias, kad suaktyvintumėte tinklą <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Šį skirtuką leidžiama išsaugoti pradiniuose failuose.</translation>
 <translation id="1103523840287552314">Visada versti <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Sustabdyti</translation>
 <translation id="1110155001042129815">Palaukti</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Akiniai nuo saulės</translation>
 <translation id="1151917987301063366">Visada leisti <ph name="HOST" /> pasiekti jutiklius</translation>
 <translation id="1153356358378277386">Susieti įrenginiai</translation>
-<translation id="1156488781945104845">Dabartinis laikas</translation>
 <translation id="1161575384898972166">Jei norite eksportuoti programos sertifikatą, prisijunkite prie „<ph name="TOKEN_NAME" />“.</translation>
 <translation id="1163931534039071049">&amp;Rodyti rėmelio šaltinį</translation>
 <translation id="1164674268730883318">Išjungti „Smart Lock“, skirtą „<ph name="DEVICE_TYPE" />“?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">„Adobe Flash Player“ saugyklos nustatymai</translation>
 <translation id="1274997165432133392">Slapukai ir kiti svetainių duomenys</translation>
 <translation id="127668050356036882">Uždaryti visus langus</translation>
-<translation id="1277908057200820621">Žiūrėti įrenginių sąrašą</translation>
 <translation id="1280820357415527819">Ieškoma mobiliojo ryšio tinklų</translation>
 <translation id="1285320974508926690">Niekada neversti šios svetainės</translation>
 <translation id="1285484354230578868">Saugoti duomenis „Google“ disko paskyroje</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Namų tinklas, ne tarptinklinis ryšys</translation>
 <translation id="1316136264406804862">Ieškoma...</translation>
 <translation id="1316495628809031177">Sinchronizavimas pristabdytas</translation>
+<translation id="1317637799698924700">Jūsų doko stotis veiks su „Type-C“ USB suderinamu režimu.</translation>
 <translation id="1322046419516468189">Peržiūrėkite ir tvarkykite išsaugotus slaptažodžius <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Prisijunkite prie „Chrome“, kad pasiektumėte skirtukus iš kitų įrenginių.</translation>
 <translation id="1327074568633507428">„Google“ spausdinimo iš debesies spausdintuvas</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Jūsų <ph name="BEGIN_LINK" />naršyklę tvarko<ph name="END_LINK" /> <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Paleiskite „Linux“ įrankius, redagavimo priemones ir IDE savo „<ph name="DEVICE_TYPE" />“. &lt;a target="_blank" href="<ph name="URL" />"&gt;Sužinokite daugiau&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Pasirinkti failą</translation>
+<translation id="1370749010280229230">Kilo prie doko prijungto ekrano problema</translation>
 <translation id="1371301976177520732">Žymės, slaptažodžiai, istorija ir daugiau visuose jūsų įrenginiuose</translation>
 <translation id="1372841398847029212">Sinchronizuoti paskyroje</translation>
 <translation id="1374844444528092021">Sertifikatas, kurio reikalauja „<ph name="NETWORK_NAME" />“ tinklas, neįdiegtas arba nebegalioja. Gaukite naują sertifikatą ir pabandykite prisijungti dar kartą.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Tinklalapis, vienas failas</translation>
 <translation id="1451917004835509682">Pridėti prižiūrimą asmenį</translation>
 <translation id="1454223536435069390">S&amp;ukurti ekrano kopiją</translation>
+<translation id="1458243790901188746">{0,plural, =1{Aplankas: „<ph name="DIRECTORIES" />“}one{Aplankai: „<ph name="DIRECTORIES" />“}few{Aplankai: „<ph name="DIRECTORIES" />“}many{Aplankai: „<ph name="DIRECTORIES" />“}other{Aplankai: „<ph name="DIRECTORIES" />“}}</translation>
 <translation id="1459967076783105826">Paieškos varikliai, kuriuos pridėjo plėtiniai</translation>
 <translation id="146000042969587795">Šis rėmelis užblokuotas, nes jame yra nesaugaus turinio.</translation>
 <translation id="146219525117638703">ONC būsena</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Rodyti įvesties parinktis</translation>
 <translation id="1651008383952180276">Reikia dukart įvesti tą pačią slaptafrazę</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Pridėkite spausdintuvą prie „Google“ spausdinimo iš debesies, kad galėtumėte spausdinti iš bet kurios vietos.}one{Pridėkite # spausdintuvą prie „Google“ spausdinimo iš debesies, kad galėtumėte spausdinti iš bet kurios vietos.}few{Pridėkite # spausdintuvus prie „Google“ spausdinimo iš debesies, kad galėtumėte spausdinti iš bet kurios vietos.}many{Pridėkite # spausdintuvo prie „Google“ spausdinimo iš debesies, kad galėtumėte spausdinti iš bet kurios vietos.}other{Pridėkite # spausdintuvų prie „Google“ spausdinimo iš debesies, kad galėtumėte spausdinti iš bet kurios vietos.}}</translation>
+<translation id="1656528038316521561">Fono nepermatomumas</translation>
 <translation id="1657406563541664238">Padėkite tobulinti „<ph name="PRODUCT_NAME" />“ automatiškai siųsdami „Google“ naudojimo statistiką ir trikčių ataskaitas</translation>
 <translation id="1658424621194652532">Šis puslapis pasiekia jūsų mikrofoną.</translation>
 <translation id="1660204651932907780">Leisti svetainėms leisti garsą (rekomenduojama)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> nori sužinoti jūsų saugos rakto tipą ir modelį</translation>
 <translation id="1679068421605151609">Kūrėjo įrankiai</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Ar tikrai norite išeiti?</translation>
 <translation id="167983332380191032">Tvarkymo paslauga išsiuntė HTTP klaidą.</translation>
 <translation id="1680849702532889074">Įdiegiant „Linux“ programą įvyko klaida.</translation>
 <translation id="16815041330799488">Neleisti svetainėms peržiūrėti teksto ir vaizdų, nukopijuotų į iškarpinę</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Apsaugotos medijos identifikatorius</translation>
 <translation id="175196451752279553">I&amp;š naujo atidaryti uždarytą skirtuką</translation>
 <translation id="1753905327828125965">Dažniausiai lankomi</translation>
+<translation id="1755601632425835748">Teksto dydis</translation>
 <translation id="1756681705074952506">Įvesties metodas</translation>
 <translation id="1757301747492736405">Laukiama, kol bus pašalinta</translation>
 <translation id="175772926354468439">Įgalinti temą</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Mažesnis</translation>
 <translation id="1919345977826869612">Skelbimai</translation>
 <translation id="1919814239594435008">Ne „smėlio dėžės“ papildinys leidžiamas</translation>
+<translation id="1920390473494685033">Kontaktai</translation>
 <translation id="1921050530041573580">Telefono susiejimas su programa „Messages“</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Naudokite „Google“ išmaniąsias funkcijas sistemoje „<ph name="IDS_SHORT_PRODUCT_NAME" />“</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Inkognito skirtukas: „<ph name="TAB_NAME" />“</translation>
 <translation id="2178098616815594724">Adresu <ph name="PEPPER_PLUGIN_DOMAIN" /> esantis papildinys „<ph name="PEPPER_PLUGIN_NAME" />“ nori pasiekti kompiuterį</translation>
 <translation id="2178614541317717477">CA pažeidimo galimybė</translation>
+<translation id="2179849162388791084">Nepavyko gauti prisijungimo duomenų iš saugos rakto.</translation>
 <translation id="218070003709087997">Skaičiumi nurodykite, kiek kopijų spausdinti (nuo 1 iki 999).</translation>
 <translation id="2184515124301515068">Leisti „Chrome“ pasirinkti, kada svetainės gali leisti garsą (rekomenduojama)</translation>
 <translation id="2187895286714876935">Serverio sertifikato importavimo klaida</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Visi slapukai ir svetainės duomenys</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Nukopijuotas 1 elementas}one{Nukopijuotas # elementas}few{Nukopijuoti # elementai}many{Nukopijuota # elemento}other{Nukopijuota # elementų}}</translation>
 <translation id="2278562042389100163">Atidaryti naršyklės langą</translation>
-<translation id="2279874276457403668">Vienu metu galima sukurti tik vieną sesiją.</translation>
 <translation id="2280486287150724112">Dešinioji paraštė</translation>
 <translation id="2282146716419988068">GPU procesas</translation>
 <translation id="2282155092769082568">Automatinės konfigūracijos URL:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Užrakinimo ekrano pastabos automatiškai išsaugomos „<ph name="LOCK_SCREEN_APP_NAME" />“. Naujausia pastaba liks užrakinimo ekrane.</translation>
 <translation id="2353297238722298836">Fotoaparatas ir mikrofonas leidžiami</translation>
 <translation id="2356070529366658676">Paklausti</translation>
-<translation id="2357949918965361754">Šią funkciją galite naudoti, jei TV arba kituose įrenginiuose norite pateikti turinį iš „Chrome“.</translation>
 <translation id="2359345697448000899">„Įrankių“ meniu spustelėję „Plėtiniai“, tvarkykite plėtinius.</translation>
 <translation id="2359808026110333948">Tęskite</translation>
 <translation id="236117173274098341">Optimizuoti</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Jūsų organizacija reikalauja iškart atnaujinti šį įrenginį</translation>
 <translation id="2439545803278355377">Įveskite naują PIN kodą. PIN kodą turi sudaryti bent keturi simboliai ir jame turi būti raidžių, skaitmenų bei kitų simbolių.</translation>
 <translation id="2440604414813129000">Rodyti š&amp;altinį</translation>
+<translation id="2442916515643169563">Teksto šešėlis</translation>
 <translation id="2444119669991608829">Puslapis rodomas ne <ph name="LANGUAGE" /> kalba?</translation>
 <translation id="2445081178310039857">Reikalingas plėtinio šakninis katalogas.</translation>
 <translation id="2445484935443597917">Kurti naują profilį</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Iki</translation>
 <translation id="2739191690716947896">Derinti</translation>
 <translation id="2739240477418971307">Keisti pasiekiamumo nustatymus</translation>
+<translation id="274029851662193272">Įdubęs</translation>
 <translation id="2740393541869613458">peržiūrėti prižiūrimo naudotojo aplankytas svetaines ir</translation>
 <translation id="2741912629735277980">Rodyti NS prisijungimo ekrane</translation>
 <translation id="274290345632688601">Atkuriami „Linux“ failai ir programos</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Spartusis klavišas jau yra</translation>
 <translation id="2807517655263062534">Atsisiųsti failai rodomi čia</translation>
 <translation id="2809586584051668049">ir dar <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">„Thunderbolt“ nepalaikoma</translation>
 <translation id="2812944337881233323">Bandykite atsijungti ir vėl prisijungti</translation>
 <translation id="2812989263793994277">Nerodyti jokių vaizdų</translation>
 <translation id="281390819046738856">Nepavyko pasirašyti užklausos.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Teikėjas</translation>
 <translation id="2844169650293029770">USB-C įrenginys (prievadas kairėje, priekinėje dalyje)</translation>
 <translation id="2845382757467349449">Visada rodyti žymių juostą</translation>
-<translation id="2847759467426165163">Perduoti į</translation>
 <translation id="284805635805850872">Pašalinti žalingą programinę įrangą?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Nepavyko išvalyti</translation>
@@ -1297,6 +1305,7 @@
     Serverio pranešimas: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Pridėti medijos galeriją pagal katalogą</translation>
 <translation id="2910318910161511225">Prisijunkite prie tinklo ir bandykite dar kartą</translation>
+<translation id="2910518940971897750">Išsaugoti pradiniame faile</translation>
 <translation id="2913331724188855103">Leisti svetainėms išsaugoti ir nuskaityti slapukų duomenis (rekomenduojama)</translation>
 <translation id="2915102088417824677">Žr. veiklos žurnalą</translation>
 <translation id="2915873080513663243">Automatinis nuskaitymas</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI įrenginiai</translation>
 <translation id="3015639418649705390">Paleisti iš naujo dabar</translation>
 <translation id="3016329696181678353">„<ph name="PRINTER_NAME" />“ nepavyko sukonfigūruoti automatiškai. Nurodykite išplėstinius spausdintuvo duomenis.</translation>
+<translation id="3016381065346027039">Nėra žurnalo įrašų</translation>
 <translation id="3016641847947582299">Komponentas atnaujintas</translation>
 <translation id="3016780570757425217">Žinoti jūsų vietovę</translation>
 <translation id="3017079585324758401">Fonas</translation>
 <translation id="3020183492814296499">Spartieji klavišai</translation>
 <translation id="3020990233660977256">Serijos numeris: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Drugelis</translation>
+<translation id="3021408157810018664">Išsaugoti pakeitimus pradiniuose failuose?</translation>
 <translation id="3021426244864538700">Prieiga prie šios svetainės duomenų</translation>
 <translation id="3021678814754966447">&amp;Žiūrėti rėmelio šaltinį</translation>
 <translation id="3022978424994383087">Nepavyko suprasti.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Be to, galite praleisti prisijungimo veiksmą ir <ph name="LINK_START" />naršyti kaip svečias<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Svetainė pasiekia vaizdo įvestį</translation>
 <translation id="3177909033752230686">Puslapio kalba:</translation>
+<translation id="3179982752812949580">Teksto šriftas</translation>
 <translation id="3181954750937456830">Saugus naršymas (apsaugo jus ir jūsų įrenginį nuo pavojingų svetainių)</translation>
 <translation id="3182749001423093222">Rašybos tikrinimas</translation>
 <translation id="3183139917765991655">Profilio importavimo priemonė</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Atidaryti kaip langą</translation>
 <translation id="3278001907972365362">Reikia atkreipti dėmesį į „Google“ paskyrą (-as)</translation>
 <translation id="3279230909244266691">Šis procesas gali užtrukti kelias minutes. Paleidžiamas virtualus įrenginys.</translation>
-<translation id="3279741024917655738">Nustatymas „Rodyti vaizdo įrašus viso ekrano režimu“ įjungtas</translation>
 <translation id="3280237271814976245">Išsaugoti &amp;kaip...</translation>
 <translation id="3280243678470289153">Toliau naršyti „Chrome“</translation>
 <translation id="3281892622610078515">Failas ir programos, kurie bus izoliuoti:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Nerasta jokių paieškos rezultatų</translation>
 <translation id="3305389145870741612">Formatavimas gali užtrukti kelias sekundes. Palaukite.</translation>
 <translation id="3305661444342691068">Atidaryti PDF peržiūros režimu</translation>
-<translation id="3306684685104080068">Įgalinti perdavimą debesyje veikiančioms paslaugoms, pvz., „Google Hangout“.</translation>
+<translation id="3307871847038842490">Šį puslapį leidžiama išsaugoti pradiniuose failuose.</translation>
 <translation id="3308006649705061278">Organizacinis vienetas (angl. „Organizational Unit“) (OU)</translation>
 <translation id="3308116878371095290">Šiame puslapyje neleidžiama nustatyti slapukų.</translation>
 <translation id="3308134619352333507">Paslėpti mygtuką</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Atšaukti paskyros sąranką?</translation>
 <translation id="3464012987031883895">Svetainė pasiekia garso įvestį</translation>
 <translation id="346431825526753">Tai yra vaikų paskyra, kurią tvarko <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Vaizdo arba garso įrašo failo srautinis perdavimas</translation>
 <translation id="3468999815377931311">„Android“ telefonas</translation>
 <translation id="3470442499439619530">Pašalinti šį naudotoją</translation>
 <translation id="3473479545200714844">Ekrano didintuvas</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Tolinti</translation>
 <translation id="3497560059572256875">Bendrinti papuoštą logotipą</translation>
 <translation id="3505030558724226696">Panaikinti įrenginio prieigą</translation>
+<translation id="3505635633742443645">Negalima naudoti doko HDMI prievado, kai vaizdo įrašų išvesčiai naudojamas „Type-C“ USB prievadas. Vienai iš pateikčių naudokite kitą prievadą.</translation>
 <translation id="3507421388498836150">Dabartiniai „<ph name="EXTENSION_NAME" />“ leidimai</translation>
 <translation id="3507888235492474624">Pakartotinai nuskaityti ieškant „Bluetooth“ įrenginių</translation>
 <translation id="3508920295779105875">Pasirinkti kitą aplanką...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Sėkmingai įdiegta</translation>
 <translation id="3578594933904494462">Šio skirtuko lapo turinys bendrinamas.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; nori bendrinti spausdintuvą &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; su jums priklausančia grupe &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Jei sutiksite, visi grupės nariai galės spausdinti naudodami šį spausdintuvą.</translation>
+<translation id="357889014807611375">matuojamas „Wi-Fi“ tinklas</translation>
 <translation id="3584169441612580296">Skaityti ir keisti nuotraukas, muziką ir kitą mediją iš kompiuterio</translation>
 <translation id="3587482841069643663">Visi</translation>
 <translation id="358796204584394954">Įveskite šį kodą įrenginyje „<ph name="DEVICE_NAME" />“, kad jį susietumėte:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Įvesti</translation>
 <translation id="3593965109698325041">Sertifikato pavadinimo apribojimai</translation>
 <translation id="3596235046596950091">Įgalinti debesies paslaugas</translation>
+<translation id="3599221874935822507">Iškilęs</translation>
 <translation id="3599863153486145794">Išvaloma visų įrenginių, prie kurių prisijungta, istorija. „Google“ paskyroje gali būti kito tipo naršymo istorijos, kuri pasiekiama adresu <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Žiniatinklio užklausos informacija</translation>
 <translation id="3600792891314830896">Nutildyti svetaines, kurios leidžia garsą</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Atsisiuntė &lt;a href="<ph name="URL" />"&gt;„<ph name="EXTENSION" />“&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Rodyti „<ph name="FOLDER_NAME" />“</translation>
 <translation id="3613422051106148727">&amp;Atidaryti naujo skirtuko lape</translation>
+<translation id="3615073365085224194">Palieskite kontrolinio kodo jutiklį pirštu</translation>
 <translation id="3616113530831147358">Garsas</translation>
 <translation id="3616741288025931835">&amp;Išvalyti naršymo duomenis...</translation>
 <translation id="3617891479562106823">Fonai nepasiekiami. Vėliau bandykite dar kartą.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Pagrindinis puslapis</translation>
 <translation id="3720996970802414353">Vis tiek perjungti</translation>
 <translation id="3722108462506185496">Paleidžiant virtualaus įrenginio paslaugą įvyko klaida. Bandykite dar kartą.</translation>
-<translation id="3723158278575423087">Sveiki, tai – „Cast“ funkcijos naršyklėje „Chromium“!</translation>
 <translation id="3725367690636977613">psl.</translation>
 <translation id="3726137731714254362">Pašalinus aplankus iš čia bus sustabdytas bendrinimas, bet failai nebus ištrinti.</translation>
 <translation id="3727148787322499904">Šio nustatymo pakeitimas turės įtakos visiems bendrinamiems tinklams</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Išsami versijos informacija</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Užmegzti ryšį su USB įrenginiu}one{Užmegzti ryšį su # USB įrenginiu}few{Užmegzti ryšį su # USB įrenginiais}many{Užmegzti ryšį su # USB įrenginio}other{Užmegzti ryšį su # USB įrenginių}}</translation>
 <translation id="3765246971671567135">Nepavyko nuskaityti neprisijungus pasiekiamos demonstracinio režimo politikos.</translation>
-<translation id="3766223500670287046">Nuotolinio valdymo ekranas</translation>
 <translation id="3768037234834996183">Sinchronizuojamos nuostatos...</translation>
 <translation id="377050016711188788">Ledai</translation>
 <translation id="3771294271822695279">Vaizdo įrašų failai</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Patraukite ir vėl prilieskite</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinchronizavimas pristabdytas</translation>
-<translation id="3862134173397075045">Sveiki! Tai – „Cast“ funkcijos naršyklėje „Chrome“!</translation>
 <translation id="3862693525629180217">Patvirtinti per įtaisytą jutiklį</translation>
 <translation id="3862788408946266506">Programa su aprašo atributu „kiosk_only“ turi būti įdiegta „Chrome“ OS viešojo terminalo režimu</translation>
 <translation id="3865414814144988605">Skyra</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Telefonas, kuriame naudojama „Smart Lock“, pasikeitė</translation>
 <translation id="3927932062596804919">Uždrausti</translation>
 <translation id="3930737994424905957">Ieškoma įrenginių</translation>
+<translation id="3930968231047618417">Fono spalva</translation>
 <translation id="3933283459331715412">Atkurti ištrintą <ph name="USERNAME" /> slaptažodį</translation>
 <translation id="3936390757709632190">&amp;Atidaryti garso įrašą naujame skirtuke</translation>
 <translation id="3936925983113350642">Pasirinkto slaptažodžio vėliau reikės atkuriant šį sertifikatą. Užsirašykite jį saugioje vietoje.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333">„<ph name="DEVICE_NAME" />“ (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importuota iš „IE“</translation>
 <translation id="3950820424414687140">Prisijungti</translation>
+<translation id="3950828138786918475">Šiam skirtukui leidžiama nuskaityti aplanką jūsų įrenginyje.</translation>
 <translation id="3954354850384043518">Vykdoma</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">Neturite neseniai užfiksuotų „WebRTC“ įvykių žurnalų.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Skaičiuojama...</translation>
 <translation id="3975565978598857337">Nepavyko susisiekti su serveriu dėl srities</translation>
 <translation id="397703832102027365">Užbaigiama...</translation>
+<translation id="3977886311744775419">Automatiniai naujiniai iš šio tipo tinklo neatsisiunčiami, bet galite ieškoti naujinių patys.</translation>
 <translation id="3979395879372752341">Pridėtas naujas plėtinys (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Įgalinti <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Įvestas neteisingas išsaugojimo tipas.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Įgalinti paspaudimą palietus</translation>
 <translation id="4195643157523330669">Atidaryti naujame skirtuke</translation>
 <translation id="4195814663415092787">Tęskite ten, kur baigėte</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> gali išsaugoti pakeitimus tiesiai nurodytuose failuose. Ši svetainė gali išsaugoti pakeitimus tik kol atidarytas šis skirtukas.</translation>
 <translation id="4198146608511578238">Tiesiog palaikykite Paleidimo priemonės piktogramą, kad galėtumėte kalbėti su „Google“ padėjėju.</translation>
 <translation id="4200689466366162458">Tinkinti žodžiai</translation>
 <translation id="4200983522494130825">Naujas &amp;skirtukas</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Automatiškai prisijungti prie korinio ryšio tinklo</translation>
 <translation id="4268025649754414643">Rakto kodavimas</translation>
 <translation id="4270393598798225102"><ph name="NUMBER" /> versija</translation>
-<translation id="4271396100647220620">Nėra atitikčių</translation>
 <translation id="4275663329226226506">Medija</translation>
 <translation id="4275830172053184480">Iš naujo paleisti įrenginį</translation>
 <translation id="4278101229438943600">Padėjėjas pasiruošęs</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Centrinio procesoriaus laikas</translation>
 <translation id="4534661889221639075">Bandykite dar kartą.</translation>
 <translation id="4535127706710932914">Numatytasis profilis</translation>
+<translation id="4535767533210902251">Kontrolinio kodo jutiklis yra ant jūsų klaviatūros viršutinio dešiniojo klavišo. Lengvai jį palieskite bet kuriuo pirštu.</translation>
 <translation id="4538684596480161368">Visada blokuoti į smėlio dėžę neįtrauktus papildinius, esančius <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Įdiegta pagal įmonės politiką.</translation>
 <translation id="4542520061254486227">Skaityti duomenis svetainėse <ph name="WEBSITE_1" /> ir <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Daugiau...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">„Bluetooth“ įrenginio susiejimas</translation>
+<translation id="4578012756826807359">Prisijungimo duomenys ištrinti sėkmingai.</translation>
 <translation id="4579581181964204535">Nepavyko perduoti <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Atkuriant „Linux“ įvyko klaida</translation>
 <translation id="4582563038311694664">Nustatyti visus nustatymus iš naujo</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Kelių svetainių slapukai išeinant bus išvalyti.</translation>
 <translation id="4765582662863429759">Leidžiama „Android Messages“ perduoti tekstus iš telefono į „Chromebook“</translation>
 <translation id="4768332406694066911">Turite jus identifikuojančius sertifikatus iš šių organizacijų</translation>
-<translation id="4772404146526168240">Abu ekranai</translation>
 <translation id="4776146737004271126">Atidaryti „Android“ nustatymus</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> slaptažodis</translation>
 <translation id="4777825441726637019">„Play“ parduotuvė</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Prisijunkite, kad žymes, istoriją, slaptažodžius ir kitus nustatymus galėtumėte naudoti visuose įrenginiuose. Be to, būsite automatiškai prijungti prie „Google“ paslaugų.</translation>
 <translation id="4929386379796360314">Spausdinimo vietos</translation>
 <translation id="4930714375720679147">Įjungti</translation>
-<translation id="4931132176527519925">Visada naudoti ekrano vaizdo bendrinimą</translation>
 <translation id="4932733599132424254">Data</translation>
 <translation id="4933484234309072027">įdėtas į <ph name="URL" /></translation>
 <translation id="493571969993549666">Pridėti prižiūrimą naudotoją</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Įjungti garsą</translation>
 <translation id="4992458225095111526">Patvirtinti „Powerwash“</translation>
 <translation id="4992473555164495036">Administratorius apribojo pasiekiamus įvesties metodus.</translation>
+<translation id="4992866843815555470">Dokui reikia techninės priežiūros. Be veikiančio ventiliatoriaus dokas išsijungs.</translation>
 <translation id="4992926179187649719">Įjungti „Ok Google“</translation>
 <translation id="4994474651455208930">Leisti svetainėms pateikti pranešimus, kuriuose prašoma leisti tapti numatytosiomis protokolų apdorojimo programomis</translation>
 <translation id="4994754230098574403">Nustatoma</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">Apdoroti ID</translation>
 <translation id="5233638681132016545">Naujas skirtukas</translation>
 <translation id="5233736638227740678">&amp;Įklijuoti</translation>
-<translation id="5234764350956374838">Atsisakyti</translation>
 <translation id="5235050375939235066">Pašalinti programą?</translation>
 <translation id="5235750401727657667">Pakeisti puslapį, kuris rodomas atidarant naują skirtuką</translation>
 <translation id="5238278114306905396">Programa „<ph name="EXTENSION_NAME" />“ automatiškai pašalinta.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">„Google“ rekomenduoja „Chrome“</translation>
 <translation id="532247166573571973">Serveris gali būti nepasiekiamas. Vėliau bandykite dar kartą.</translation>
 <translation id="5324780743567488672">Automatiškai nustatyti laiko juostą pagal jūsų vietovę</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – leidžiama išsaugoti pradiniuose failuose</translation>
 <translation id="5327248766486351172">Pavadinimas</translation>
 <translation id="5327570636534774768">Šis įrenginys pažymėtas kaip tvarkomas kito domeno. Prieš nustatydami demonstracinį režimą pašalinkite įrenginį iš to domeno.</translation>
 <translation id="532943162177641444">Palieskite pranešimą „<ph name="PHONE_NAME" />“ įrenginyje, kad nustatytumėte mobiliojo ryšio viešosios interneto prieigos tašką, kurį galima naudoti šiame įrenginyje.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> nori</translation>
 <translation id="5534304873398226603">Atmesti nuotrauką arba vaizdo įrašą</translation>
 <translation id="5535941515421698170">Taip pat pašalinkite esamus duomenis iš šio įrenginio</translation>
-<translation id="5537725057119320332">Perduoti</translation>
 <translation id="5539221284352502426">Serveris atmetė įvestą slaptažodį. Taip galėjo nutikti dėl toliau išvardytų priežasčių. Slaptažodis yra per trumpas. Slaptažodį turi sudaryti ir skaičiai arba simboliai. Slaptažodis turi skirtis nuo ankstesnių slaptažodžių.</translation>
 <translation id="5541687815721799001">Naudoti programą</translation>
 <translation id="5542132724887566711">Profilis</translation>
@@ -3301,7 +3315,6 @@
 <translation id="5997337190805127100">Sužinokite daugiau apie prieigą prie svetainės</translation>
 <translation id="6000758707621254961">Rezultatų pagal užklausą „<ph name="SEARCH_TEXT" />“: <ph name="RESULT_COUNT" /></translation>
 <translation id="6002458620803359783">Pageidaujami balsai</translation>
-<translation id="6005695835120147974">Medijos maršruto parinktuvas</translation>
 <translation id="6006484371116297560">Klasikinė</translation>
 <translation id="6007240208646052708">Paieška balsu jūsų kalba nepasiekiama.</translation>
 <translation id="6009781704028455063">Įtaisytas jutiklis</translation>
@@ -3501,7 +3514,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Naujas spausdintuvas tinkle}one{Nauji spausdintuvai tinkle}few{Nauji spausdintuvai tinkle}many{Nauji spausdintuvai tinkle}other{Nauji spausdintuvai tinkle}}</translation>
 <translation id="6286708577777130801">Išsaugota išsami slaptažodžių informacija</translation>
 <translation id="6289452883081499048">Suasmenintos „Google“ paslaugos, pvz., „Play“</translation>
-<translation id="6290556621549272952">Šią funkciją galite naudoti, jei savo TV arba kituose įrenginiuose norite pateikti turinį iš „Chromium“.</translation>
 <translation id="6291949900244949761">Paklausti, kai svetainė nori pasiekti USB įrenginius (rekomenduojama)</translation>
 <translation id="6291953229176937411">&amp;Rodyti ieškojimo priemonėje</translation>
 <translation id="6295158916970320988">Visos svetainės</translation>
@@ -3565,6 +3577,7 @@
 <translation id="6395423953133416962">Siųsti <ph name="BEGIN_LINK1" />sistemos informaciją<ph name="END_LINK1" /> ir <ph name="BEGIN_LINK2" />metriką<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Užblokuoti svetaines, kad nenaudotų judesio jutiklių</translation>
 <translation id="6397094776139756010">Sinchronizavimo ir suasmeninimo parinktys</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> galės išsaugoti pakeitimus tiesiai nurodyto aplanko failuose. Ši svetainė gali išsaugoti pakeitimus tik kol atidarytas šis skirtukas.</translation>
 <translation id="6398715114293939307">Pašalinti „Google Play“ parduotuvę</translation>
 <translation id="6398765197997659313">Išeiti iš viso ekrano režimo</translation>
 <translation id="6399774419735315745">Slaptoji agentė</translation>
@@ -3609,11 +3622,13 @@
 <translation id="6455264371803474013">Konkrečiose svetainėse</translation>
 <translation id="6455894534188563617">&amp;Naujas aplankas</translation>
 <translation id="6456394469623773452">Geras</translation>
+<translation id="6456955391422100996">Skelbimas pašalintas.</translation>
 <translation id="645705751491738698">Tęsti „JavaScript“ blokavimą</translation>
 <translation id="6458701200018867744">Nepavyko įkelti (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Paieškai naudoti pasirinkimą</translation>
 <translation id="6459799433792303855">Aktyvus langas perkeltas į kitą ekraną.</translation>
 <translation id="6460601847208524483">Rasti kitą</translation>
+<translation id="6461170143930046705">Ieškoma tinklų…</translation>
 <translation id="6463795194797719782">&amp;Redaguoti</translation>
 <translation id="6466988389784393586">&amp;Atidaryti visas žymes</translation>
 <translation id="6467304607960172345">Viso ekrano režimu rodomų vaizdo įrašų optimizavimas</translation>
@@ -3652,6 +3667,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Esate prisijungę prie šio tinklo: <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Bendrinti</translation>
 <translation id="6528513914570774834">Leisti kitiems šio įrenginio naudotojams naudoti šį tinklą</translation>
 <translation id="652948702951888897">„Chrome“ istorija</translation>
@@ -3748,7 +3764,6 @@
 <translation id="6680650203439190394">Sparta</translation>
 <translation id="6681668084120808868">Fotografuoti</translation>
 <translation id="6681964764822470072">„<ph name="APP_NAME" />“ bus pašalinta.</translation>
-<translation id="6685083257944113180">Stabdyti, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Atidaryti „Google Play“</translation>
 <translation id="6686490380836145850">Uždaryti dešinėje esančius skirtukus</translation>
 <translation id="6686817083349815241">Išsaugokite slaptažodį</translation>
@@ -3856,6 +3871,7 @@
 <translation id="6845038076637626672">Atidaryti padidintą</translation>
 <translation id="6845325883481699275">Padėkite tobulinti „Chrome“ saugą</translation>
 <translation id="6848388270925200958">Šiuo metu turite kelias korteles, kurias galima naudoti tik šiuo įrenginiu</translation>
+<translation id="6850286078059909152">Teksto spalva</translation>
 <translation id="6851497530878285708">Programa įgalinta</translation>
 <translation id="6853388645642883916">Atnaujinimo priemonė yra miego būsenos</translation>
 <translation id="68541483639528434">Uždaryti kitus skirtukus</translation>
@@ -3905,7 +3921,6 @@
 <translation id="6923132443355966645">Slinkti / spustelėti</translation>
 <translation id="6923633482430812883">Klaida įdedant bendrinamą objektą. Patikrinkite, ar failo serveris, prie kurio prisijungiate, palaiko SMBv2 arba naujesnę versiją.</translation>
 <translation id="6930036377490597025">Išorinis saugos raktas arba integruotas jutiklis</translation>
-<translation id="6930242544192836755">Trukmė</translation>
 <translation id="693807610556624488">Rašymo operacija viršija didžiausią įrenginiui „<ph name="DEVICE_NAME" />“ leistiną atributo simbolių skaičių.</translation>
 <translation id="6941937518557314510">Kad „<ph name="HOST_NAME" />“ patvirtintumėte tapatybę, naudodami sertifikatą, prisijunkite prie „<ph name="TOKEN_NAME" />“.</translation>
 <translation id="6943176775188458830">Atšaukti spausdinimą</translation>
@@ -3919,6 +3934,7 @@
 <translation id="6951153907720526401">Mokėjimų doroklės</translation>
 <translation id="6951663584153258142">Jūsų organizacija prašo atnaujinti šį įrenginį</translation>
 <translation id="6953878494808481632">Susijusi informacija</translation>
+<translation id="6953916367503892689">{0,plural, =1{Failas: <ph name="FILES" />}one{Failai: <ph name="FILES" />}few{Failai: <ph name="FILES" />}many{Failai: <ph name="FILES" />}other{Failai: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Tikrinti iššokantįjį langą</translation>
 <translation id="6957044667612803194">Šis saugos raktas nepalaiko PIN kodų</translation>
 <translation id="6957231940976260713">Paslaugos pavadinimas</translation>
@@ -4131,7 +4147,6 @@
 <translation id="7254554697254365959">Nepavyko išversti šio puslapio.</translation>
 <translation id="7254951428499890870">Ar tikrai norite paleisti „<ph name="APP_NAME" />“ diagnostikos režimu?</translation>
 <translation id="7255002516883565667">Šiuo metu turite vieną kortelę, kurią galima naudoti tik šiuo įrenginiu</translation>
-<translation id="7255220508626648026">Perduodama: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Palieskite saugos raktą dar kartą patvirtindami nustatymą iš naujo. Visa saugos rakte saugoma informacija, įskaitant jo PIN kodą, bus ištrinta.</translation>
 <translation id="7255935316994522020">Taikyti</translation>
 <translation id="7256069762010468647">Svetainė naudoja jūsų fotoaparatą</translation>
@@ -4265,6 +4280,7 @@
 <translation id="7456142309650173560">įreng.</translation>
 <translation id="7456847797759667638">Atidaryti vietą...</translation>
 <translation id="7458168200501453431">Naudojamas tas pats rašybos tikrinimas kaip ir „Google“ paieškoje. Tekstas, kurį įvedate naršyklėje, nusiunčiamas „Google“.</translation>
+<translation id="7460045493116006516">Dabartinė jūsų įdiegta tema</translation>
 <translation id="7461924472993315131">Prisegti</translation>
 <translation id="746216226901520237">Kitą kartą telefonu galėsite atrakinti „<ph name="DEVICE_TYPE" />“. Funkciją „Smart Lock“ galite išjungti „Nustatymų“ skiltyje.</translation>
 <translation id="7463006580194749499">Pridėti asmenį</translation>
@@ -4324,6 +4340,7 @@
 <translation id="7554791636758816595">Naujas skirtukas</translation>
 <translation id="7556033326131260574">„Smart Lock“ negalėjo patvirtinti paskyros. Įveskite slaptažodį ir prisijunkite.</translation>
 <translation id="7556242789364317684">Deja, „<ph name="SHORT_PRODUCT_NAME" />“ nepavyksta atkurti jūsų nustatymų. Kad būtų galima ištaisyti klaidą, „<ph name="SHORT_PRODUCT_NAME" />“ turi iš naujo nustatyti jūsų įrenginį per „Powerwash“.</translation>
+<translation id="7559444627302317199">Patikrinkite tinklo ryšį ir bandykite dar kartą.</translation>
 <translation id="7559719679815339381">Palaukite... Viešojo terminalo programa atnaujinama. Neatjunkite USB atmintuko.</translation>
 <translation id="7561196759112975576">Visada</translation>
 <translation id="7563991800558061108">Kad pašalintumėte šią klaidą, reikės prisijungimo ekrane prisijungti prie „Google“
@@ -4566,7 +4583,6 @@
 <translation id="7887334752153342268">Dubliuoti</translation>
 <translation id="7887864092952184874">„Bluetooth“ pelė susieta</translation>
 <translation id="7889565820482017512">Ekrano dydis</translation>
-<translation id="7889966925761734854">Ieškoti</translation>
 <translation id="7893008570150657497">Pasiekti nuotraukas, muziką ir kitą mediją iš kompiuterio</translation>
 <translation id="7893153962594818789">Šiame „<ph name="DEVICE_TYPE" />“ išjungtas „Bluetooth“. Įveskite slaptažodį ir įjunkite „Bluetooth“.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Numatytasis)</translation>
@@ -4574,7 +4590,6 @@
 <translation id="7898627924844766532">Laikyti įrankių juostoje</translation>
 <translation id="7898725031477653577">Visada versti</translation>
 <translation id="790040513076446191">Keisti privatumo nustatymus</translation>
-<translation id="7902874111237641165">„Smooth Motion“ [beta]</translation>
 <translation id="7903345046358933331">Puslapis neatsako. Galite palaukti, kol atsakys, arba uždaryti.</translation>
 <translation id="7903742244674067440">Turite pateiktų sertifikatų, identifikuojančių šias sertifikatą išdavusias institucijas</translation>
 <translation id="7903925330883316394">Paslaugų programa: <ph name="UTILITY_TYPE" /></translation>
@@ -4686,6 +4701,7 @@
 <translation id="8037117027592400564">Skaityti visą tekstą sintezuota kalba</translation>
 <translation id="8037357227543935929">Klausti (numatytoji parinktis)</translation>
 <translation id="803771048473350947">Failas</translation>
+<translation id="8042142357103597104">Teksto nepermatomumas</translation>
 <translation id="8044899503464538266">Lėtas</translation>
 <translation id="8045253504249021590">Sinchronizavimas sustabdytas naudojant „Google“ informacijos suvestinę.</translation>
 <translation id="8045923671629973368">Įveskite programos ID arba žiniatinklio parduotuvės URL</translation>
@@ -4722,7 +4738,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Šią paslaugą galite išjungti skiltyje „Nustatymai“.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN kodai nesutampa</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> naudoja plėtinio tarpinio serverio nustatymus</translation>
-<translation id="8099495042588009598">Daugiau leidimų</translation>
 <translation id="8101987792947961127">Kitą kartą įkeliant operacinę sistemą iš naujo būtina paleisti „Powerwash“</translation>
 <translation id="8102159139658438129">Eikite į skiltį <ph name="LINK_BEGIN" />„Nustatymai“<ph name="LINK_END" /> ir peržiūrėkite susieto telefono parinktis</translation>
 <translation id="8104696615244072556">Naudokite funkciją „Powerwash“ „<ph name="IDS_SHORT_PRODUCT_NAME" />“ įrenginyje ir grąžinkite ankstesnę versiją.</translation>
@@ -4774,8 +4789,10 @@
     Nemanau, kad ši svetainė turėtų būti užblokuota!</translation>
 <translation id="8184288427634747179">Perjungti į <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Daugiau informacijos</translation>
+<translation id="8184472985242519288">Vienodas</translation>
 <translation id="8185331656081929126">Rodyti pranešimus, kai nauji spausdintuvai aptinkami tinkle</translation>
 <translation id="8186609076106987817">Serveriui nepavyko rasti failo.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> gali nuskaityti visus nurodyto aplanko failus. Ši svetainė gali peržiūrėti aplanko pakeitimus tik kol atidarytas šis skirtukas.</translation>
 <translation id="8188389033983459049">Patikrinkite įrenginio nustatymus ir įjunkite jį, kad galėtumėte tęsti</translation>
 <translation id="8190193592390505034">Jungiamasi prie „<ph name="PROVIDER_NAME" />“</translation>
 <translation id="8191230140820435481">Valdyti programas, plėtinius ir temas</translation>
@@ -4879,7 +4896,6 @@
 <translation id="833986336429795709">Kad atidarytumėte šią nuorodą, pasirinkite programą</translation>
 <translation id="8342861492835240085">Pasirinkti kolekciją</translation>
 <translation id="834290227245955730">Netinkamas PIN kodas. Liko bandymų: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Naudokite didelio pralaidumo ryšį, kad galėtumėte žiūrėti geriausios kokybės vaizdo įrašus ar animaciją. Kiti žmonės, kurių ryšys bus lėtas, gali nematyti jūsų turinio.</translation>
 <translation id="8351419472474436977">Šis plėtinys perėmė tarpinio serverio valdymą. Tai reiškia, kad jis gali keisti, nutraukti ar stebėti visus prisijungus atliekamus veiksmus. Jei nesate tikri, kodėl įvyko šis pakeitimas, tikriausiai jūs jo nenorite.</translation>
 <translation id="8351630282875799764">Akumuliatorius neįkraunamas</translation>
 <translation id="835238322900896202">Pašalinant įvyko klaida. Pašalinkite per terminalą.</translation>
@@ -4912,9 +4928,11 @@
 <translation id="839736845446313156">Registruotis</translation>
 <translation id="8398877366907290961">Vis tiek tęsti</translation>
 <translation id="8400146488506985033">Tvarkyti žmones</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> gali išsaugoti pakeitimus tiesiai nurodyto aplanko failuose. Ši svetainė gali išsaugoti pakeitimus tik kol atidarytas šis skirtukas.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Pirmiausia paklausti (rekomenduojama)</translation>
 <translation id="8418445294933751433">&amp;Rodyti kaip skirtuką</translation>
+<translation id="8418905021510211421">Šiam puslapiui leidžiama nuskaityti aplanką jūsų įrenginyje.</translation>
 <translation id="8419098111404128271">Paieškos rezultatai pagal užklausą „<ph name="SEARCH_TEXT" />“</translation>
 <translation id="8419368276599091549">Sveiki, tai – „<ph name="DEVICE_TYPE" />“!</translation>
 <translation id="8425213833346101688">Keisti</translation>
@@ -4934,6 +4952,7 @@
 <translation id="8438566539970814960">Tobulinti paieškas ir naršymą</translation>
 <translation id="8439506636278576865">Siūlyti versti puslapius šia kalba</translation>
 <translation id="8440630305826533614">„Linux“ programos</translation>
+<translation id="844241640324986723">Prisijungimo duomenų ištrinti nepavyko.</translation>
 <translation id="8443338615972234259">Dabar sukurkite naują prižiūrimo naudotojo paskyrą.</translation>
 <translation id="8446884382197647889">Sužinokite daugiau</translation>
 <translation id="8447409163267621480">Naudokite „Ctrl“ arba „Alt“</translation>
@@ -4949,8 +4968,6 @@
 <translation id="8461914792118322307">Tarpinis serveris</translation>
 <translation id="8463215747450521436">Valdytojas tikriausiai ištrynė šį prižiūrimą naudotoją arba jo neleido. Jei norite toliau prisijungti šio naudotojo vardu, susisiekite su valdytoju.</translation>
 <translation id="846374874681391779">Atsisiuntimų juosta</translation>
-<translation id="8463807869745732775">"&gt;
-    Saugomi saugos rakto prisijungimo duomenys</translation>
 <translation id="8463955938112983119">Papildinys „<ph name="PLUGIN_NAME" />“ išjungtas.</translation>
 <translation id="8464132254133862871">Šioje naudotojo paskyroje negalima naudoti paslaugos.</translation>
 <translation id="8465252176946159372">Negalioja</translation>
@@ -5016,6 +5033,7 @@
 <translation id="8569002732135253578">Dabar spausdinamas <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Nerasta paskirties vietų.</translation>
 <translation id="8571213806525832805">Pastarosios 4 savaitės</translation>
+<translation id="8573403125070227391">Šis skelbimas naudoja per daug įrenginio išteklių, tad „Chrome“ jį pašalino.</translation>
 <translation id="8574990355410201600">Visada leisti garsą svetainėje <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Palaikykite paspaudę „<ph name="KEY_EQUIVALENT" />“, kad išeitumėte</translation>
 <translation id="8578639784464423491">Negali būti daugiau nei 99 raidės</translation>
@@ -5039,13 +5057,13 @@
 <translation id="8609465669617005112">Perkelti į viršų</translation>
 <translation id="8610103157987623234">Netinkamas formatas, bandykite dar kartą</translation>
 <translation id="8615618338313291042">Inkognito programa: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Krintantis šešėlis</translation>
 <translation id="8619892228487928601">„<ph name="CERTIFICATE_NAME" />“: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Tarptinklinio ryšio būsena</translation>
 <translation id="8620765578342452535">Konfigūruoti tinklo ryšius</translation>
 <translation id="8621866727807194849">Kompiuteryje yra kenkėjiškos programinės įrangos. „Chrome“ ją pašalina, atkuria nustatymus ir išjungia plėtinius. Tai leis naršyklei vėl įprastai veikti.</translation>
 <translation id="8621979332865976405">Viso ekrano bendrinimas</translation>
 <translation id="862542460444371744">&amp;Plėtiniai</translation>
-<translation id="8627151598708688654">Šaltinio pasirinkimas</translation>
 <translation id="862727964348362408">Laikinai sustabdyta</translation>
 <translation id="862750493060684461">CSS talpykla</translation>
 <translation id="8627795981664801467">Tik saugus ryšys</translation>
@@ -5099,6 +5117,7 @@
 <translation id="8688579245973331962">Nematote savo vardo?</translation>
 <translation id="8688591111840995413">Netinkamas slaptažodis</translation>
 <translation id="8688672835843460752">Galima</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Atidaryti &amp;vietą...</translation>
 <translation id="869884720829132584">Programų meniu</translation>
 <translation id="869891660844655955">Galiojimo data</translation>
@@ -5262,6 +5281,7 @@
 <translation id="891365694296252935">Siųskite naudojimo ir diagnostikos duomenis. Šiuo metu šis įrenginys automatiškai siunčia „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai nebus naudojama siekiant nustatyti jūsų vaiko tapatybę ir padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Šį nustatymą taiko savininkas. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas vaiko įrenginyje, šie duomenys gali būti išsaugoti vaiko „Google“ paskyroje. <ph name="BEGIN_LINK1" />Sužinokite daugiau<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Įkeliamas pasiūlymas</translation>
 <translation id="8916476537757519021">Inkognito antrinis kadras: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> leidžiama nuskaityti aplanką jūsų įrenginyje</translation>
 <translation id="8919275547519617350">Jei norite pasiekti visus slaptažodžius visuose įrenginiuose, prisijunkite ir įjunkite sinchronizavimą.</translation>
 <translation id="8921366488406707015">Patvirtinamas saugos raktas...</translation>
 <translation id="8922013791253848639">Visada leisti skelbimus šioje svetainėje</translation>
@@ -5291,7 +5311,6 @@
 <translation id="8965037249707889821">Įveskite seną slaptažodį</translation>
 <translation id="8966870118594285808">Atidaryti netyčia uždarytą skirtuką</translation>
 <translation id="8967866634928501045">Kad būtų parodyta, paspauskite „Alt“ + „Shift“ + A</translation>
-<translation id="8970203673128054105">Peržiūrėti perdavimo režimo sąrašą</translation>
 <translation id="89720367119469899">Grįžimo klavišas</translation>
 <translation id="8972513834460200407">Paklauskite tinklo administratoriaus, kad įsitikintumėte, jog užkarda neblokuoja atsisiuntimų iš „Google“ serverių.</translation>
 <translation id="8973557916016709913">Pašalinti mastelio keitimo lygį</translation>
@@ -5440,6 +5459,7 @@
 <translation id="9214520840402538427">Oi! Diegimo trukmės atributų iniciacijos laikas baigėsi. Susisiekite su palaikymo komandos atstovu.</translation>
 <translation id="9214695392875603905">Keksinis pyragaitis</translation>
 <translation id="9215293857209265904">Pridėtas „<ph name="EXTENSION_NAME" />“</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> galės išsaugoti pakeitimus tiesiai nurodytame faile. Ši svetainė gali išsaugoti pakeitimus tik kol atidarytas šis skirtukas.</translation>
 <translation id="9218430445555521422">Nustatyti kaip numatytąją</translation>
 <translation id="9219103736887031265">Vaizdai</translation>
 <translation id="9220525904950070496">Pašalinti paskyrą</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index 887a89b5..f826db4 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Startējot virtuālo mašīnu, radās kļūda. Lūdzu, mēģiniet vēlreiz.</translation>
 <translation id="1089439967362294234">Nomainīt paroli</translation>
 <translation id="1090126737595388931">Nedarbojas neviena fona lietotne</translation>
+<translation id="1090290614672149983">Vai saglabāt izmaiņas oriģinālajā failā?</translation>
 <translation id="1090918500949388876">Piekļūstiet savam Asistentam jebkurā brīdī, sakot frāzi “Ok Google”, kad ekrāns ir ieslēgts.</translation>
 <translation id="1091767800771861448">Nospiediet ESCAPE, lai izlaistu (tikai neoficiāli būvējumi).</translation>
 <translation id="1093457606523402488">Redzamie tīkli:</translation>
 <translation id="1094607894174825014">Tālāk minētajā ierīcē tika pieprasīta lasīšanas vai rakstīšanas darbība ar nederīgu nobīdi: “<ph name="DEVICE_NAME" />”.</translation>
 <translation id="1097658378307015415">Pirms pierakstāties, uzsāciet viesa sesiju, lai aktivizētu tīklu <ph name="NETWORK_ID" />.</translation>
+<translation id="110029732810301672">Šī cilne var saglabāt izmaiņas oriģinālajos failos.</translation>
 <translation id="1103523840287552314">Vienmēr tulkot <ph name="LANGUAGE" /> valodas saturu</translation>
 <translation id="1108600514891325577">&amp;Apturēt</translation>
 <translation id="1110155001042129815">Uzgaidiet</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Saulesbrilles</translation>
 <translation id="1151917987301063366">Vienmēr atļaut <ph name="HOST" /> piekļuvi sensoriem</translation>
 <translation id="1153356358378277386">Pārī savienotās ierīces</translation>
-<translation id="1156488781945104845">Pašreizējais laiks</translation>
 <translation id="1161575384898972166">Pierakstieties ierīcē <ph name="TOKEN_NAME" />, lai eksportētu klienta sertifikātu.</translation>
 <translation id="1163931534039071049">Skatīt rāmja avotu</translation>
 <translation id="1164674268730883318">Vai izslēgt Smart Lock ierīcei <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player krātuves iestatījumi</translation>
 <translation id="1274997165432133392">Sīkfaili un citi vietņu dati</translation>
 <translation id="127668050356036882">Aizvērt visus manus logus</translation>
-<translation id="1277908057200820621">Skatīt ierīču sarakstu</translation>
 <translation id="1280820357415527819">Notiek mobilo tīklu meklēšana</translation>
 <translation id="1285320974508926690">Nekad netulkot šo vietni</translation>
 <translation id="1285484354230578868">Saglabāt datus jūsu Google diska kontā</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Mājas tīkls bez viesabonēšanas</translation>
 <translation id="1316136264406804862">Notiek meklēšana...</translation>
 <translation id="1316495628809031177">Sinhronizācija ir apturēta</translation>
+<translation id="1317637799698924700">Jūsu dokstacija darbosies ar USB Type-C saderīgā režīmā.</translation>
 <translation id="1322046419516468189">Saglabātās paroles varat skatīt un pārvaldīt šeit: <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Pierakstieties pārlūkā Chrome, lai būtu pieejamas cilnes no citām jūsu ierīcēm.</translation>
 <translation id="1327074568633507428">Printeris Google mākoņdrukā</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Jūsu <ph name="BEGIN_LINK" />pārlūkprogrammu pārvalda<ph name="END_LINK" /> <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Palaidiet Linux rīkus, redaktorus un IDE savā <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Uzziniet vairāk&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Izvēlēties failu</translation>
+<translation id="1370749010280229230">Dokam pievienotajā displejā radās problēma</translation>
 <translation id="1371301976177520732">Jūsu grāmatzīmes, paroles, vēsture un cits saturs visās jūsu ierīcēs</translation>
 <translation id="1372841398847029212">Sinhronizēt ar jūsu kontu</translation>
 <translation id="1374844444528092021">Sertifikāts, kas tiek pieprasīts tīklā <ph name="NETWORK_NAME" />, nav instalēts vai vairs nav derīgs. Lūdzu, iegūstiet jaunu sertifikātu un mēģiniet izveidot savienojumu vēlreiz.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Tīmekļa lapa, viens fails</translation>
 <translation id="1451917004835509682">Pievienot uzraudzītu personu</translation>
 <translation id="1454223536435069390">I&amp;egūt ekrānuzņēmumu</translation>
+<translation id="1458243790901188746">{0,plural, =1{Mape: <ph name="DIRECTORIES" />}zero{Mapes: <ph name="DIRECTORIES" />}one{Mapes: <ph name="DIRECTORIES" />}other{Mapes: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Paplašinājumu pievienotās meklētājprogrammas</translation>
 <translation id="146000042969587795">Šis rāmis tika bloķēts, jo tas satur dažus nedrošus elementus.</translation>
 <translation id="146219525117638703">ONC statuss</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Rādīt ievades iespējas</translation>
 <translation id="1651008383952180276">Jums divreiz jāievada viena un tā pati ieejas frāze.</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Pievienojiet printeri pakalpojumam Google mākoņdruka, lai varētu drukāt, atrodoties jebkurā vietā.}zero{Pievienojiet # printerus pakalpojumam Google mākoņdruka, lai varētu drukāt, atrodoties jebkurā vietā.}one{Pievienojiet # printeri pakalpojumam Google mākoņdruka, lai varētu drukāt, atrodoties jebkurā vietā.}other{Pievienojiet # printerus pakalpojumam Google mākoņdruka, lai varētu drukāt, atrodoties jebkurā vietā.}}</translation>
+<translation id="1656528038316521561">Fona necaurredzamība</translation>
 <translation id="1657406563541664238">Palīdziet uzlabot programmu <ph name="PRODUCT_NAME" />, automātiski nosūtot lietošanas statistiku un avārijas pārskatus uzņēmumam Google</translation>
 <translation id="1658424621194652532">Šī lapa piekļūst jūsu mikrofonam.</translation>
 <translation id="1660204651932907780">Atļaut vietnēm atskaņot skaņu (ieteicams)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546">Vietne <ph name="URL" /> vēlas skatīt jūsu drošības atslēgas ražotāju un modeli.</translation>
 <translation id="1679068421605151609">Izstrādātāja rīki</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Vai tiešām vēlaties iziet?</translation>
 <translation id="167983332380191032">No pārvaldības pakalpojuma tika nosūtīts kļūdains HTTP kods.</translation>
 <translation id="1680849702532889074">Linux lietojumprogrammas instalēšanas laikā radās kļūda.</translation>
 <translation id="16815041330799488">Neļaut vietnēm skatīt starpliktuvē kopēto tekstu un attēlus</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Aizsargāta multivides satura identifikators</translation>
 <translation id="175196451752279553">Vēlr&amp;eiz atvērt aizvērto cilni</translation>
 <translation id="1753905327828125965">Visapmeklētākais</translation>
+<translation id="1755601632425835748">Teksta lielums</translation>
 <translation id="1756681705074952506">Ievades metode</translation>
 <translation id="1757301747492736405">Tiek gaidīta atinstalēšana</translation>
 <translation id="175772926354468439">Iespējot motīvu</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">Mazāks</translation>
 <translation id="1919345977826869612">Reklāmas</translation>
 <translation id="1919814239594435008">Ir atļauts spraudnis, kas nav ievietots smilškastē</translation>
+<translation id="1920390473494685033">Kontaktpersonas</translation>
 <translation id="1921050530041573580">Savienojiet tālruni pārī ar lietotni Ziņojumi</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> punkti collā</translation>
 <translation id="1924559387127953748">Google viedo tehnoloģiju iegūšana šeit: <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Inkognito režīma cilne: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Spraudnim <ph name="PEPPER_PLUGIN_NAME" /> domēnā <ph name="PEPPER_PLUGIN_DOMAIN" /> ir nepieciešama piekļuve jūsu datoram.</translation>
 <translation id="2178614541317717477">CA drošības politikas apdraudējums</translation>
+<translation id="2179849162388791084">Neizdevās iegūt pierakstīšanās datus no jūsu drošības atslēgas.</translation>
 <translation id="218070003709087997">Izmantojiet skaitli, lai norādītu, cik eksemplāri jādrukā (1–999).</translation>
 <translation id="2184515124301515068">Atļaut pārlūkam Chrome izvēlēties, kad vietnēs var atskaņot skaņu (ieteicams)</translation>
 <translation id="2187895286714876935">Servera sertifikāta importēšanas kļūda</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Visi sīkfaili un vietņu dati</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Nokopēts 1 vienums}zero{Nokopēti # vienumi}one{Nokopēts # vienums}other{Nokopēti # vienumi}}</translation>
 <translation id="2278562042389100163">Atvērt pārlūka logu</translation>
-<translation id="2279874276457403668">Vienlaikus var izveidot tikai vienu sesiju.</translation>
 <translation id="2280486287150724112">Labā piemale</translation>
 <translation id="2282146716419988068">GPU process</translation>
 <translation id="2282155092769082568">Automātiskās konfigurācijas vietrādis URL</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Bloķēšanas ekrāna piezīmes tiek automātiski saglabātas lietotnē <ph name="LOCK_SCREEN_APP_NAME" />. Jūsu jaunākās piezīmes paliks bloķēšanas ekrānā.</translation>
 <translation id="2353297238722298836">Kameras un mikrofona lietošana ir atļauta</translation>
 <translation id="2356070529366658676">Vaicāt</translation>
-<translation id="2357949918965361754">Varat izmantot šo funkciju, lai rādītu Chrome saturu televizorā vai citās ierīcēs.</translation>
 <translation id="2359345697448000899">Pārvaldiet savus paplašinājumus, izvēlnē Rīki noklikšķinot uz Paplašinājumi.</translation>
 <translation id="2359808026110333948">Turpināt</translation>
 <translation id="236117173274098341">Optimizēt</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Saskaņā ar jūsu organizācijas prasībām šī ierīce ir nekavējoties jāatjaunina</translation>
 <translation id="2439545803278355377">Ievadiet jauno PIN kodu. PIN kodā ir jābūt ietvertām vismaz četrām rakstzīmēm (tie var būt burti, cipari un citas rakstzīmes).</translation>
 <translation id="2440604414813129000">Skatīt avotu</translation>
+<translation id="2442916515643169563">Teksta ēna</translation>
 <translation id="2444119669991608829">Vai lapa nav šādā valodā: <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Nepieciešams paplašinājuma saknes direktorijs.</translation>
 <translation id="2445484935443597917">Izveidot jaunu profilu</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Nevis pēc</translation>
 <translation id="2739191690716947896">Atkļūdot</translation>
 <translation id="2739240477418971307">Mainītu jūsu pieejamības iestatījumus</translation>
+<translation id="274029851662193272">Pazemināta</translation>
 <translation id="2740393541869613458">pārskatīt vietnes, kuras apmeklējis uzraudzītais lietotājs;</translation>
 <translation id="2741912629735277980">Attēlot lietotāja saskarni pieteikšanās ekrānā</translation>
 <translation id="274290345632688601">Linux lietotņu un failu atjaunošana</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Saīsne jau pastāv</translation>
 <translation id="2807517655263062534">Šeit ir redzami lejupielādētie faili.</translation>
 <translation id="2809586584051668049">un vēl <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt savienojums netiek atbalstīts</translation>
 <translation id="2812944337881233323">Izrakstieties un atkārtoti pierakstieties.</translation>
 <translation id="2812989263793994277">Nerādīt nevienu attēlu</translation>
 <translation id="281390819046738856">Neizdevās parakstīt pieprasījumu.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Nodrošinātājs</translation>
 <translation id="2844169650293029770">USB-C ierīce (pieslēgvieta kreisajā pusē priekšā)</translation>
 <translation id="2845382757467349449">Vienmēr rādīt grāmatzīmju joslu</translation>
-<translation id="2847759467426165163">Cast ierīces izvēle</translation>
 <translation id="284805635805850872">Vai noņemt kaitīgo programmatūru?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Tīrīšana neizdevās</translation>
@@ -1297,6 +1305,7 @@
 Servera ziņojums: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Multivides galerijas pievienošana pēc direktorija</translation>
 <translation id="2910318910161511225">Izveidojiet savienojumu ar tīklu un mēģiniet vēlreiz.</translation>
+<translation id="2910518940971897750">Saglabāt oriģinālajā failā</translation>
 <translation id="2913331724188855103">Atļaut vietnēm saglabāt un lasīt sīkfailu datus (ieteicams)</translation>
 <translation id="2915102088417824677">Skatīt darbību žurnālu</translation>
 <translation id="2915873080513663243">Automātiska meklēšana</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI ierīces</translation>
 <translation id="3015639418649705390">Restartēt tūlīt</translation>
 <translation id="3016329696181678353">Printeri (<ph name="PRINTER_NAME" />) neizdevās konfigurēt automātiski. Lūdzu, norādiet detalizētu informāciju par printeri.</translation>
+<translation id="3016381065346027039">Nav neviena žurnāla ieraksta</translation>
 <translation id="3016641847947582299">Komponents atjaunināts</translation>
 <translation id="3016780570757425217">uzzināt jūsu atrašanās vietu</translation>
 <translation id="3017079585324758401">Fons</translation>
 <translation id="3020183492814296499">Īsinājumtaustiņi</translation>
 <translation id="3020990233660977256">Sērijas numurs: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Tauriņš</translation>
+<translation id="3021408157810018664">Vai saglabāt izmaiņas oriģinālajos failos?</translation>
 <translation id="3021426244864538700">Piekļūšana šīs vietnes datiem</translation>
 <translation id="3021678814754966447">Skatīt rāmja a&amp;votu</translation>
 <translation id="3022978424994383087">Nesapratu.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Varat arī izlaist pierakstīšanos un <ph name="LINK_START" />veikt pārlūkošanu kā viesis<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Vietne piekļūst jūsu video ievadei</translation>
 <translation id="3177909033752230686">Lapas valoda:</translation>
+<translation id="3179982752812949580">Teksta fonts</translation>
 <translation id="3181954750937456830">Droša pārlūkošana (aizsargā jūs un ierīci pret bīstamām vietnēm)</translation>
 <translation id="3182749001423093222">Pareizrakstības pārbaude</translation>
 <translation id="3183139917765991655">Profilu importētājs</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Atvērt kā logu</translation>
 <translation id="3278001907972365362">Pievērsiet uzmanību savam(-iem) Google kontam(-iem).</translation>
 <translation id="3279230909244266691">Šis process var ilgt dažas minūtes. Notiek virtuālās mašīnas startēšana.</translation>
-<translation id="3279741024917655738">Ieslēgta pilnekrāna videoklipu rādīšana</translation>
 <translation id="3280237271814976245">Saglabāt kā...</translation>
 <translation id="3280243678470289153">Turpināt pārlūkā Chrome</translation>
 <translation id="3281892622610078515">Faili un programmas, kas jāievieto karantīnā:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Netika atrasts neviens meklēšanas rezultāts.</translation>
 <translation id="3305389145870741612">Formatēšanas process var ilgt pāris sekundes. Lūdzu, uzgaidiet.</translation>
 <translation id="3305661444342691068">Atvērt PDF priekšskatījumu</translation>
-<translation id="3306684685104080068">Iespējot apraidi mākonī izvietotos pakalpojumos, piemēram, Google Hangouts.</translation>
+<translation id="3307871847038842490">Šī lapa var saglabāt izmaiņas oriģinālajos failos.</translation>
 <translation id="3308006649705061278">Organizacionālā vienība (OU)</translation>
 <translation id="3308116878371095290">Šai lapai netika atļauts saglabāt sīkfailus.</translation>
 <translation id="3308134619352333507">Slēpt pogu</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Vai atcelt konta iestatīšanu?</translation>
 <translation id="3464012987031883895">Vietne piekļūst jūsu audio ievadei</translation>
 <translation id="346431825526753">Šis ir bērniem paredzēts konts, ko pārvalda <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Straumējiet video vai audio failu</translation>
 <translation id="3468999815377931311">Android tālrunis</translation>
 <translation id="3470442499439619530">Noņemt šo lietotāju</translation>
 <translation id="3473479545200714844">Ekrāna lupa</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Tālināt</translation>
 <translation id="3497560059572256875">Kopīgot svētku logotipu</translation>
 <translation id="3505030558724226696">Atsaukt piekļuvi ierīcei</translation>
+<translation id="3505635633742443645">Doka HDMI pieslēgvietu nevar izmantot, kamēr USB Type-C pieslēgvieta tiek izmantota video izvadei. Lūdzu, vienam no displejiem izmantojiet citu pieslēgvietu.</translation>
 <translation id="3507421388498836150">“<ph name="EXTENSION_NAME" />” pašreizējās atļaujas</translation>
 <translation id="3507888235492474624">Atkārtoti meklēt Bluetooth ierīces</translation>
 <translation id="3508920295779105875">Izvēlēties citu mapi...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Veiksmīgi instalēta</translation>
 <translation id="3578594933904494462">Šīs cilnes saturs tiek kopīgots.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; vēlas koplietot printeri &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; ar jums piederošo grupu: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Ja pieņemsiet uzaicinājumu, šo printeri varēs izmantot visi grupas dalībnieki.</translation>
+<translation id="357889014807611375">Maksas Wi-Fi tīkls</translation>
 <translation id="3584169441612580296">Lasīt fotoattēus, mūziku un citu datorā esošu multivides saturu un mainīt to</translation>
 <translation id="3587482841069643663">Visi</translation>
 <translation id="358796204584394954">Lai izveidotu savienojumu pārī, ierīcē “<ph name="DEVICE_NAME" />” ievadiet šo kodu:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Ievadīt</translation>
 <translation id="3593965109698325041">Sertifikāta nosaukuma ierobežojumi</translation>
 <translation id="3596235046596950091">Iespējot mākoņa pakalpojumus</translation>
+<translation id="3599221874935822507">Paaugstināta</translation>
 <translation id="3599863153486145794">Notīra vēsturi no visām ierīcēm, kurās esat pierakstījies. Jūsu Google kontam vietnē <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> var būt citu veidu pārlūkošanas vēstures dati.</translation>
 <translation id="3600051066689725006">Tīmekļa pieprasījuma informācija</translation>
 <translation id="3600792891314830896">Izslēgt skaņu vietnēm, kurās tiek atskaņota skaņa</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Lejupielādēja paplašinājums &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Mapes “<ph name="FOLDER_NAME" />” rādīšana</translation>
 <translation id="3613422051106148727">&amp;Atvērt jaunā cilnē</translation>
+<translation id="3615073365085224194">Ar pirkstu pieskarieties pirkstu nospiedumu sensoram</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Dzēst pārlūkošanas datus...</translation>
 <translation id="3617891479562106823">Fona attēli nav pieejami. Vēlāk mēģiniet vēlreiz.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Sākumlapa</translation>
 <translation id="3720996970802414353">Pārslēgt jebkurā gadījumā</translation>
 <translation id="3722108462506185496">Startējot virtuālās mašīnas pakalpojumu, radās kļūda. Lūdzu, mēģiniet vēlreiz.</translation>
-<translation id="3723158278575423087">Iepazīstiet Cast iespējas pārlūkā Chromium!</translation>
 <translation id="3725367690636977613">lapas</translation>
 <translation id="3726137731714254362">Noņemot no šejienes mapes, tiks pārtraukta to koplietošana, taču netiks dzēsti faili.</translation>
 <translation id="3727148787322499904">Nomainot šo iestatījumu, tiks ietekmēti visi koplietotie tīkli.</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Detalizēta informācija par versiju</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Saziņa ar USB ierīci}zero{Saziņa ar # USB ierīcēm}one{Saziņa ar # USB ierīci}other{Saziņa ar # USB ierīcēm}}</translation>
 <translation id="3765246971671567135">Neizdevās nolasīt bezsaistes demonstrācijas režīma politiku.</translation>
-<translation id="3766223500670287046">Attālais ekrāns</translation>
 <translation id="3768037234834996183">Notiek jūsu preferenču sinhronizēšana...</translation>
 <translation id="377050016711188788">Saldējums</translation>
 <translation id="3771294271822695279">Video faili</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Paceliet un pieskarieties vēlreiz</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinhronizācija ir apturēta</translation>
-<translation id="3862134173397075045">Iepazīstiet Cast iespējas pārlūkā Chrome!</translation>
 <translation id="3862693525629180217">Apstiprināt, izmantojot iebūvētu sensoru</translation>
 <translation id="3862788408946266506">Lai instalētu lietotni ar manifesta atribūtu kiosk_only, ir jāizmanto Chrome OS kioska režīms.</translation>
 <translation id="3865414814144988605">Izšķirtspēja</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Ir mainījies ar Smart Lock saistītais tālrunis</translation>
 <translation id="3927932062596804919">Neatļaut</translation>
 <translation id="3930737994424905957">Notiek ierīču meklēšana</translation>
+<translation id="3930968231047618417">Fona krāsa</translation>
 <translation id="3933283459331715412">Atjaunot izdzēsto lietotāja <ph name="USERNAME" /> paroli</translation>
 <translation id="3936390757709632190">Atvērt audi&amp;o jaunā cilnē</translation>
 <translation id="3936925983113350642">Izvēlētā parole būs nepieciešama šī sertifikāta atjaunošanai nākotnē. Lūdzu, saglabājiet to drošā vietā.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importēts no IE</translation>
 <translation id="3950820424414687140">Pierakstīties</translation>
+<translation id="3950828138786918475">Šī cilne var lasīt mapi jūsu ierīcē.</translation>
 <translation id="3954354850384043518">Notiek lejupielāde</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> herci)</translation>
 <translation id="3954953195017194676">Jums nav nesen ierakstītu WebRTC notikumu žurnālu.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Aprēķina...</translation>
 <translation id="3975565978598857337">Sazināšanās ar serveri nozarojumam neizdevās</translation>
 <translation id="397703832102027365">Notiek pabeigšana...</translation>
+<translation id="3977886311744775419">Kad izveidots savienojums ar šāda veida tīklu, atjauninājumi netiek lejupielādēti automātiski, taču varat manuāli pārbaudīt, vai tie ir pieejami.</translation>
 <translation id="3979395879372752341">Ir pievienots jauns paplašinājums (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Iespējot <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Ievadīts nederīgs saglabāšanas tips.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Iespējot funkciju "pieskarties, lai noklikšķinātu"</translation>
 <translation id="4195643157523330669">Atvērt jaunā cilnē</translation>
 <translation id="4195814663415092787">Atsākt darbu no vietas, kur to beidzu</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> var tieši saglabāt jūsu veiktās izmaiņas tālāk norādītajos failos. Vietne var saglabāt izmaiņas tikai tad, kad šī cilne ir atvērta.</translation>
 <translation id="4198146608511578238">Vienkārši turiet palaišanas programmas ikonu, lai runātu ar savu Google asistentu.</translation>
 <translation id="4200689466366162458">Pielāgotie vārdi</translation>
 <translation id="4200983522494130825">Jauna cilne</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Automātiski pievienoties mobilajam tīklam</translation>
 <translation id="4268025649754414643">Atslēgas šifrēšana</translation>
 <translation id="4270393598798225102"><ph name="NUMBER" /> versija</translation>
-<translation id="4271396100647220620">Nav atbilstību</translation>
 <translation id="4275663329226226506">Multivide</translation>
 <translation id="4275830172053184480">Ierīces restartēšana</translation>
 <translation id="4278101229438943600">Asistents ir gatavs</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Centrālā procesora laiks</translation>
 <translation id="4534661889221639075">Mēģiniet vēlreiz.</translation>
 <translation id="4535127706710932914">Noklusējuma profils</translation>
+<translation id="4535767533210902251">Pirkstu nospiedumu sensors atrodas tastatūras augšējā labajā stūrī. Viegli pieskarieties tam ar jebkuru pirkstu.</translation>
 <translation id="4538684596480161368">Vienmēr bloķēt smilškastē neievietotos spraudņus vietnē <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Instalēts atbilstoši uzņēmuma politikai.</translation>
 <translation id="4542520061254486227">Lasīt jūsu datus vietnēs <ph name="WEBSITE_1" /> un <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Vēl...</translation>
 <translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Bluetooth ierīces savienošana pārī</translation>
+<translation id="4578012756826807359">Jūsu pierakstīšanās dati tika sekmīgi izdzēsti.</translation>
 <translation id="4579581181964204535">Nevar apraidīt <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Linux atjaunošanas kļūda</translation>
 <translation id="4582563038311694664">Atiestatīt visus iestatījumus</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Sīkfaili no vairākām vietnēm tiks dzēsti, aizverot vietnes.</translation>
 <translation id="4765582662863429759">Ļauj lietotnei Android ziņojumi pārraidīt īsziņas no jūsu tālruņa uz Chromebook datoru</translation>
 <translation id="4768332406694066911">Jums ir sertifikāti no šīm organizācijām, kas jūs identificē</translation>
-<translation id="4772404146526168240">Abi ekrāni</translation>
 <translation id="4776146737004271126">Atvērt Android iestatījumus</translation>
 <translation id="4776917500594043016">Parole e-pasta adresei <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play veikals</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Pierakstieties, lai lietotu savas grāmatzīmes, vēsturi, paroles un citus iestatījumus visās savās ierīcēs. Turklāt jūs tiksiet automātiski pierakstīts izmantotajos Google pakalpojumos.</translation>
 <translation id="4929386379796360314">Drukāšanas vietas</translation>
 <translation id="4930714375720679147">Ieslēgt</translation>
-<translation id="4931132176527519925">Vienmēr izmantot spoguļošanu</translation>
 <translation id="4932733599132424254">Datums</translation>
 <translation id="4933484234309072027">iegults vietnē <ph name="URL" /></translation>
 <translation id="493571969993549666">Pievienot uzraudzītu lietotāju</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Ieslēgt skaņu</translation>
 <translation id="4992458225095111526">Powerwash apstiprināšana</translation>
 <translation id="4992473555164495036">Administrators ir ierobežojis pieejamās ievades metodes.</translation>
+<translation id="4992866843815555470">Dokam ir nepieciešama apkope. Ja doks nebūs aprīkots ar strādājošu ventilatoru, tas izslēgsies.</translation>
 <translation id="4992926179187649719">Ieslēdziet funkciju "Ok Google"</translation>
 <translation id="4994474651455208930">Ļaut vietnēm lūgt kļūt par protokolu noklusējuma apdarinātājiem</translation>
 <translation id="4994754230098574403">Notiek iestatīšana</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">Procesa ID</translation>
 <translation id="5233638681132016545">Jauna cilne</translation>
 <translation id="5233736638227740678">&amp;Ielīmēt</translation>
-<translation id="5234764350956374838">Noraidīt</translation>
 <translation id="5235050375939235066">Vai atinstalēt lietotni?</translation>
 <translation id="5235750401727657667">Aizstāt lapu, kas tiek parādīta jaunā cilnē</translation>
 <translation id="5238278114306905396">Lietotne <ph name="EXTENSION_NAME" /> tika automātiski noņemta.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google iesaka pārlūku Chrome</translation>
 <translation id="532247166573571973">Iespējams, serveris nav sasniedzams. Vēlāk mēģiniet vēlreiz.</translation>
 <translation id="5324780743567488672">Automātiski iestatīt laika joslu, izmantojot atrašanās vietu</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> — var saglabāt izmaiņas oriģinālajos failos</translation>
 <translation id="5327248766486351172">Nosaukums</translation>
 <translation id="5327570636534774768">Šī ierīce ir atzīmēta pārvaldībai citā domēnā. Pirms demonstrācijas režīma iestatīšanas atsauciet ierīces nodrošinājumu attiecīgajā domēnā.</translation>
 <translation id="532943162177641444">Lai iestatītu mobilo tīklāju, ko izmantot šajā ierīcē, pieskarieties paziņojumam savā tālrunī <ph name="PHONE_NAME" />.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985">Vietne <ph name="SITE_NAME" /> vēlas:</translation>
 <translation id="5534304873398226603">Atmest fotoattēlu vai video</translation>
 <translation id="5535941515421698170">Noņemt no šīs ierīces arī jūsu esošos datus</translation>
-<translation id="5537725057119320332">Apraidīt</translation>
 <translation id="5539221284352502426">Ievadīto paroli noraidīja serveris. Iespējamie iemesli: parole ir pārāk īsa; parolē ir jābūt ietvertiem cipariem vai simboliem; parolei ir jāatšķiras no iepriekšējām parolēm.</translation>
 <translation id="5541687815721799001">Izmantot lietotni</translation>
 <translation id="5542132724887566711">Profils</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Plašāka informācija par vietnes piekļuvi</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> rezultāti vaicājumam “<ph name="SEARCH_TEXT" />”</translation>
 <translation id="6002458620803359783">Vēlamās balsis</translation>
-<translation id="6005695835120147974">Multivides maršrutētājs</translation>
 <translation id="6006484371116297560">Klasiskais motīvs</translation>
 <translation id="6007240208646052708">Meklēšana ar balsi jūsu valodā nav pieejama.</translation>
 <translation id="6009781704028455063">Iebūvēts sensors</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Jauns printeris jūsu tīklā}zero{Jauni printeri jūsu tīklā}one{Jauni printeri jūsu tīklā}other{Jauni printeri jūsu tīklā}}</translation>
 <translation id="6286708577777130801">Informācija par saglabāto paroli</translation>
 <translation id="6289452883081499048">Personalizēti Google pakalpojumi, piemēram, Play</translation>
-<translation id="6290556621549272952">Varat izmantot šo funkciju, lai rādītu Chromium saturu televizorā vai citās ierīcēs.</translation>
 <translation id="6291949900244949761">Vaicāt, ja vietne vēlas piekļūt USB ierīcēm (ieteicams)</translation>
 <translation id="6291953229176937411">Rādīt lietojumprogrammā &amp;Finder</translation>
 <translation id="6295158916970320988">Visas vietnes</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Sūtīt <ph name="BEGIN_LINK1" />sistēmas informāciju<ph name="END_LINK1" /> un <ph name="BEGIN_LINK2" />datus<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Bloķēt kustību sensoru izmantošanu vietnēs</translation>
 <translation id="6397094776139756010">Sinhronizēšanas un personalizēšanas opcijas</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> varēs tieši saglabāt jūsu veiktās izmaiņas tālāk norādītajā mapē. Vietne var saglabāt izmaiņas tikai tad, kad šī cilne ir atvērta.</translation>
 <translation id="6398715114293939307">Noņemt Google Play veikalu</translation>
 <translation id="6398765197997659313">Iziet no pilnekrāna režīma</translation>
 <translation id="6399774419735315745">Spiedze</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">Konkrētās vietnēs</translation>
 <translation id="6455894534188563617">&amp;Jauna mape</translation>
 <translation id="6456394469623773452">Apmierinošs</translation>
+<translation id="6456955391422100996">Reklāma ir noņemta.</translation>
 <translation id="645705751491738698">Turpināt bloķēt JavaScript</translation>
 <translation id="6458701200018867744">Augšupielāde neizdevās (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Izmantot atlasīto meklēšanai</translation>
 <translation id="6459799433792303855">Aktīvais logs ir pārvietots uz citu attēlojumu.</translation>
 <translation id="6460601847208524483">Atrast nākamo</translation>
+<translation id="6461170143930046705">Notiek tīklu meklēšana…</translation>
 <translation id="6463795194797719782">Rediģēt</translation>
 <translation id="6466988389784393586">&amp;Atvērt visas grāmatzīmes</translation>
 <translation id="6467304607960172345">Pilnekrāna videoklipu optimizēšana</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Jūs esat izveidojis savienojumu ar šāda veida tīklu: <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Kopīgot</translation>
 <translation id="6528513914570774834">Atļaut citiem lietotājiem šajā ierīcē izmantot šo tīklu</translation>
 <translation id="652948702951888897">Chrome vēsture</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Ātrums</translation>
 <translation id="6681668084120808868">Uzņemt fotoattēlu</translation>
 <translation id="6681964764822470072">Lietotne <ph name="APP_NAME" /> tiks atinstalēta.</translation>
-<translation id="6685083257944113180">Apturēt, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Atvērt pakalpojumu Google Play</translation>
 <translation id="6686490380836145850">Aizvērt cilnes pa labi</translation>
 <translation id="6686817083349815241">Saglabājiet savu paroli</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Atvērt maksimizētā logā</translation>
 <translation id="6845325883481699275">Palīdzēt uzlabot Chrome drošību</translation>
 <translation id="6848388270925200958">Pašlaik dažas no savām kartēm varat izmantot tikai šajā ierīcē</translation>
+<translation id="6850286078059909152">Teksta krāsa</translation>
 <translation id="6851497530878285708">Lietotne ir iespējota</translation>
 <translation id="6853388645642883916">Atjauninātājs darbojas miega režīmā</translation>
 <translation id="68541483639528434">Aizvērt citas cilnes</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Ritināt/klikšķināt</translation>
 <translation id="6923633482430812883">Iekļaujot kopīgošanu, radās kļūda. Pārbaudiet, vai failu serveris, ar kuru veidojat savienojumu, atbalsta failu kopīgošanu SMBv2 vai jaunāku versiju.</translation>
 <translation id="6930036377490597025">Ārējā drošības atslēga vai iebūvēts sensors</translation>
-<translation id="6930242544192836755">Ilgums</translation>
 <translation id="693807610556624488">Rakstīšanas darbība pārsniedz atribūta maksimālo garumu šajā ierīcē: “<ph name="DEVICE_NAME" />”.</translation>
 <translation id="6941937518557314510">Pierakstieties ierīcē <ph name="TOKEN_NAME" />, lai veiktu autentificēšanu vietnē <ph name="HOST_NAME" /> ar jūsu sertifikātu.</translation>
 <translation id="6943176775188458830">Atcelt drukāšanu</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Maksājumu apdarinātāji</translation>
 <translation id="6951663584153258142">Jūsu organizācija lūdz atjaunināt šo ierīci</translation>
 <translation id="6953878494808481632">Saistīta informācija</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fails: <ph name="FILES" />}zero{Faili: <ph name="FILES" />}one{Faili: <ph name="FILES" />}other{Faili: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Pārbaudīt uznirstošo elementu</translation>
 <translation id="6957044667612803194">Šī drošības atslēga neatbalsta PIN</translation>
 <translation id="6957231940976260713">Pakalpojuma nosaukums</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Šo lapu nevarēja pārtulkot.</translation>
 <translation id="7254951428499890870">Vai tiešām vēlaties palaist lietotni <ph name="APP_NAME" /> diagnostikas režīmā?</translation>
 <translation id="7255002516883565667">Pašlaik vienu no savām kartēm varat izmantot tikai šajā ierīcē</translation>
-<translation id="7255220508626648026">Apraide: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Vēlreiz pieskarieties drošības atslēgai, lai apstiprinātu atiestatīšanu. Tiks dzēsta visa drošības atslēgā saglabātā informācija, tostarp tās PIN.</translation>
 <translation id="7255935316994522020">Lietot</translation>
 <translation id="7256069762010468647">Vietne izmanto jūsu kameru.</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">izstr.</translation>
 <translation id="7456847797759667638">Atvērt atrašanās vietu...</translation>
 <translation id="7458168200501453431">Tiek izmantots tas pats pareizrakstības pārbaudītājs, kas tiek izmantots Google meklēšanā. Pārlūkā ievadītais teksts tiek nosūtīts Google serveriem.</translation>
+<translation id="7460045493116006516">Pašlaik instalētais motīvs</translation>
 <translation id="7461924472993315131">Piespraust</translation>
 <translation id="746216226901520237">Nākamajā reizē šīs ierīces <ph name="DEVICE_TYPE" /> atbloķēšanai tiks izmantots jūsu tālrunis. Iestatījumos varat izslēgt Smart Lock.</translation>
 <translation id="7463006580194749499">Pievienot personu</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Jauna cilne</translation>
 <translation id="7556033326131260574">Smart Lock nevarēja verificēt jūsu kontu. Lai ieietu, ievadiet savu paroli.</translation>
 <translation id="7556242789364317684">Diemžēl <ph name="SHORT_PRODUCT_NAME" /> nevar atkopt jūsu iestatījumus. Lai novērstu šo kļūdu, pārlūkam <ph name="SHORT_PRODUCT_NAME" /> ir jāatiestata jūsu ierīce, izmantojot funkciju Powerwash.</translation>
+<translation id="7559444627302317199">Lūdzu, pārbaudiet tīkla savienojumu un mēģiniet vēlreiz.</translation>
 <translation id="7559719679815339381">Lūdzu, uzgaidiet... Kioska lietotne tiek atjaunināta. Neizņemiet USB atmiņas karti.</translation>
 <translation id="7561196759112975576">Vienmēr</translation>
 <translation id="7563991800558061108">Lai novērstu šo kļūdu, jums jāpierakstās savā Google kontā, izmantojot
@@ -4564,7 +4581,6 @@
 <translation id="7887334752153342268">Izveidot dublikātu</translation>
 <translation id="7887864092952184874">Bluetooth pele ir savienota pārī.</translation>
 <translation id="7889565820482017512">Attēlojuma lielums</translation>
-<translation id="7889966925761734854">Meklēšana</translation>
 <translation id="7893008570150657497">Piekļūt fotoattēliem, mūzikai un citam multivides saturam no sava datora</translation>
 <translation id="7893153962594818789">Šajā ierīcē (<ph name="DEVICE_TYPE" />) Bluetooth savienojums ir izslēgts. Ievadiet paroli un ieslēdziet Bluetooth savienojumu.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Noklusējums)</translation>
@@ -4572,7 +4588,6 @@
 <translation id="7898627924844766532">Saglabāt rīkjoslā</translation>
 <translation id="7898725031477653577">Vienmēr tulkot</translation>
 <translation id="790040513076446191">Manipulēt ar konfidencialitāti saistītus iestatījumus</translation>
-<translation id="7902874111237641165">Vienmērīga kustība [beta]</translation>
 <translation id="7903345046358933331">Lapa vairs nereaģē. Varat uzgaidīt, līdz tā atsāks reaģēt, vai aizvērt to.</translation>
 <translation id="7903742244674067440">Sistēmā ir sertifikāti, kas identificē šīs sertifikātu izdevējiestādes</translation>
 <translation id="7903925330883316394">Utilīta: <ph name="UTILITY_TYPE" /></translation>
@@ -4684,6 +4699,7 @@
 <translation id="8037117027592400564">Lasīt visu tekstu, kas izrunāts, izmantojot sintezēto runu</translation>
 <translation id="8037357227543935929">Vaicāt (pēc noklusējuma)</translation>
 <translation id="803771048473350947">Fails</translation>
+<translation id="8042142357103597104">Teksta necaurredzamība</translation>
 <translation id="8044899503464538266">Lēns</translation>
 <translation id="8045253504249021590">Sinhronizācija tika pārtraukta, izmantojot Google informācijas paneli.</translation>
 <translation id="8045923671629973368">Ievadiet lietojumprogrammas ID vai interneta veikala URL</translation>
@@ -4720,7 +4736,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Šo pakalpojumu varat izslēgt sadaļā Iestatījumi.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN vērtības neatbilst.</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> izmanto paplašinājuma starpniekservera iestatījumus</translation>
-<translation id="8099495042588009598">Citas atļaujas</translation>
 <translation id="8101987792947961127">Nākamajā atkārtotas palaišanas reizē jāizpilda funkcija Powerwash</translation>
 <translation id="8102159139658438129">Dodieties uz sadaļu <ph name="LINK_BEGIN" />Iestatījumi<ph name="LINK_END" />, lai skatītu pievienotā tālruņa opcijas.</translation>
 <translation id="8104696615244072556">Aktivizējiet savā <ph name="IDS_SHORT_PRODUCT_NAME" /> ierīcē funkciju Powerwash un atjaunojiet iepriekšējo versiju.</translation>
@@ -4772,8 +4787,10 @@
     Es uzskatu, ka šai vietnei nav jābūt bloķētai.</translation>
 <translation id="8184288427634747179">Pārslēgties uz profilu <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Plašāka informācija</translation>
+<translation id="8184472985242519288">Vienota</translation>
 <translation id="8185331656081929126">Rādīt paziņojumus, kad tīklā tiek atrasti jauni printeri</translation>
 <translation id="8186609076106987817">Serveris nevarēja atrast failu.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> var lasīt visus failus tālāk norādītajā mapē. Vietne var konstatēt izmaiņas mapē tikai tad, kad šī cilne ir atvērta.</translation>
 <translation id="8188389033983459049">Lai turpinātu, pārbaudiet ierīces iestatījumus un ieslēdziet to.</translation>
 <translation id="8190193592390505034">Savienojas ar <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Pārvaldīt jūsu lietotnes, paplašinājumus un motīvus</translation>
@@ -4877,8 +4894,6 @@
 <translation id="833986336429795709">Lai atvērtu šo saiti, izvēlieties lietotni.</translation>
 <translation id="8342861492835240085">Kolekcijas atlase</translation>
 <translation id="834290227245955730">PIN nav derīgs. Atlikušo mēģinājumu skaits: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Izmantojiet lielu joslas platumu, lai iegūtu labāko video vai animācijas kvalitāti.
-Citas personas ar lēnu savienojumu, iespējams, neredzēs jūsu saturu.</translation>
 <translation id="8351419472474436977">Šis paplašinājums pārvalda jūsu starpniekservera iestatījumus. Tas nozīmē, ka tas var mainīt, pārtraukt vai izsekot visas jūsu darbības tiešsaistē. Ja neesat pārliecināts, kāpēc notika šīs izmaiņas, visticamāk, jūs tās nevēlaties.</translation>
 <translation id="8351630282875799764">Akumulators netiek uzlādēts</translation>
 <translation id="835238322900896202">Atinstalēšanas laikā radās kļūda. Lūdzu, veiciet atinstalēšanu, izmantojot programmu Terminal.</translation>
@@ -4911,9 +4926,11 @@
 <translation id="839736845446313156">Reģistrējiet</translation>
 <translation id="8398877366907290961">Turpināt jebkurā gadījumā</translation>
 <translation id="8400146488506985033">Pārvaldīt personas</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> var tieši saglabāt jūsu veiktās izmaiņas failos tālāk minētajā mapē. Vietne var saglabāt izmaiņas tikai tad, kad šī cilne ir atvērta.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Vispirms jautāt (ieteicams)</translation>
 <translation id="8418445294933751433">Rādīt kā cilni</translation>
+<translation id="8418905021510211421">Šī lapa var lasīt mapi jūsu ierīcē.</translation>
 <translation id="8419098111404128271">Vaicājuma “<ph name="SEARCH_TEXT" />” meklēšanas rezultāti</translation>
 <translation id="8419368276599091549">Laipni lūdzam jūsu <ph name="DEVICE_TYPE" /> ierīcē!</translation>
 <translation id="8425213833346101688">Mainīt</translation>
@@ -4933,6 +4950,7 @@
 <translation id="8438566539970814960">Uzlabot meklēšanu un pārlūkošanu</translation>
 <translation id="8439506636278576865">Piedāvāt tulkot lapas šajā valodā</translation>
 <translation id="8440630305826533614">Linux lietotnes</translation>
+<translation id="844241640324986723">Neizdevās izdzēst jūsu pierakstīšanās datus.</translation>
 <translation id="8443338615972234259">Lūdzu, izveidojiet jaunu kontu uzraudzītajam lietotājam tūlīt.</translation>
 <translation id="8446884382197647889">Uzziniet vairāk</translation>
 <translation id="8447409163267621480">Jāiekļauj “Ctrl” vai “Alt”</translation>
@@ -4948,8 +4966,6 @@
 <translation id="8461914792118322307">Starpniekserveris</translation>
 <translation id="8463215747450521436">Pārzinis, iespējams, ir dzēsis vai atspējojis šo uzraudzīto lietotāju. Lūdzu, sazinieties ar pārzini, ja vēlaties turpināt pierakstīties kā šis lietotājs.</translation>
 <translation id="846374874681391779">Lejupielādes josla</translation>
-<translation id="8463807869745732775">"&gt;
-    Saglabātie drošības atslēgas un pierakstīšanās dati</translation>
 <translation id="8463955938112983119">Spraudnis <ph name="PLUGIN_NAME" /> ir atspējots.</translation>
 <translation id="8464132254133862871">Šis lietotāja konts pakalpojumam nav atbilstošs.</translation>
 <translation id="8465252176946159372">Nav derīgs</translation>
@@ -5015,6 +5031,7 @@
 <translation id="8569002732135253578">Notiek dokumenta “<ph name="DOCUMENT_NAME" />” drukāšana</translation>
 <translation id="8569682776816196752">Neatrada nevienu galamērķi.</translation>
 <translation id="8571213806525832805">Pēdējās 4 nedēļas</translation>
+<translation id="8573403125070227391">Šī reklāma izmanto pārāk daudz resursu jūsu ierīcē, tādēļ Chrome to noņēma.</translation>
 <translation id="8574990355410201600">Vienmēr atļaut ieslēgt skaņu vietnē <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Turiet nospiestu <ph name="KEY_EQUIVALENT" />, lai beigtu darbu.</translation>
 <translation id="8578639784464423491">Nedrīkst būt vairāk par 99 burtiem.</translation>
@@ -5038,13 +5055,13 @@
 <translation id="8609465669617005112">Virziet uz augšu</translation>
 <translation id="8610103157987623234">Nepareizs formāts, lūdzu, mēģiniet vēlreiz.</translation>
 <translation id="8615618338313291042">Inkognito lietojumprogramma: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Krītoša ēna</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Viesabonēšanas statuss</translation>
 <translation id="8620765578342452535">Konfigurēt tīkla savienojumus</translation>
 <translation id="8621866727807194849">Jūsu datorā ir kaitīga programmatūra. Pārlūkprogramma Chrome to noņem, atjauno jūsu iestatījumus un atspējo paplašinājumus. Tādējādi jūsu pārlūkprogramma atkal normāli darbosies.</translation>
 <translation id="8621979332865976405">Visa ekrāna kopīgošana</translation>
 <translation id="862542460444371744">Paplašināju&amp;mi</translation>
-<translation id="8627151598708688654">Avota atlasīšana</translation>
 <translation id="862727964348362408">Atlikts</translation>
 <translation id="862750493060684461">CSS kešatmiņa</translation>
 <translation id="8627795981664801467">Tikai droši savienojumi</translation>
@@ -5098,6 +5115,7 @@
 <translation id="8688579245973331962">Vai neredzat savu vārdu?</translation>
 <translation id="8688591111840995413">Nepareiza parole</translation>
 <translation id="8688672835843460752">Pieejams</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Atvērt atrašanās vietu...</translation>
 <translation id="869884720829132584">Lietojumprogrammu izvēlne</translation>
 <translation id="869891660844655955">Derīguma termiņš</translation>
@@ -5261,6 +5279,7 @@
 <translation id="891365694296252935">Lietojuma un diagnostikas datu sūtīšana. Pašlaik dati par šo ierīci un ierīces diagnostikas un lietotņu lietojuma dati tiek automātiski sūtīti uzņēmumam Google. Šī informācija netiks izmantota jūsu bērna identificēšanai, un tā palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Šo iestatījumu ir noteicis īpašnieks. Ja jūsu bērnam ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti bērna Google kontā. <ph name="BEGIN_LINK1" />Uzzināt vairāk<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Notiek ieteikumu ielāde...</translation>
 <translation id="8916476537757519021">Inkognito apakšrāmis: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> — var lasīt mapi jūsu ierīcē</translation>
 <translation id="8919275547519617350">Lai paroles būtu pieejamas visās jūsu ierīcēs, pierakstieties un ieslēdziet sinhronizēšanu.</translation>
 <translation id="8921366488406707015">Notiek drošības atslēgas pārbaude...</translation>
 <translation id="8922013791253848639">Vienmēr atļaut reklāmu rādīšanu šajā vietnē</translation>
@@ -5290,7 +5309,6 @@
 <translation id="8965037249707889821">Ievadiet veco paroli</translation>
 <translation id="8966870118594285808">Ja nejauši aizvērāt cilni, atveriet to atkārtoti</translation>
 <translation id="8967866634928501045">Lai skatītu saturu, nospiediet Alt+Shift+A.</translation>
-<translation id="8970203673128054105">Skatīt apraides režīmu sarakstu</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Lūdzu, sazinieties ar savu tīkla administratoru, lai pārliecinātos, vai ugunsmūris nebloķē lejupielādes no Google serveriem.</translation>
 <translation id="8973557916016709913">Noņemt tālummaiņas līmeni</translation>
@@ -5439,6 +5457,7 @@
 <translation id="9214520840402538427">Instalācijas laika atribūtu inicializēšanā diemžēl iestājās noildze. Lūdzu, sazinieties ar savu atbalsta pārstāvi.</translation>
 <translation id="9214695392875603905">Glazūrkēkss</translation>
 <translation id="9215293857209265904">Ir pievienots paplašinājums <ph name="EXTENSION_NAME" /></translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> varēs tieši saglabāt jūsu veiktās izmaiņas tālāk norādītajā failā. Vietne var saglabāt izmaiņas tikai tad, kad šī cilne ir atvērta.</translation>
 <translation id="9218430445555521422">Iestatīt kā noklusējumu</translation>
 <translation id="9219103736887031265">Attēli</translation>
 <translation id="9220525904950070496">Konta noņemšana</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index fe626a85..83960aa 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">വെർച്വൽ മെഷീൻ പ്രവർത്തനം തുടങ്ങുന്നതിൽ പിശക്. വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="1089439967362294234">പാസ്‌വേഡ് മാറ്റുക</translation>
 <translation id="1090126737595388931">ഒരു പശ്ചാത്തല ആപ്ലിക്കേഷനുകളും പ്രവർത്തിക്കുന്നില്ല</translation>
+<translation id="1090290614672149983">മാറ്റങ്ങൾ ഒറിജിനൽ ഫയലിലേക്ക് സംരക്ഷിക്കണോ?</translation>
 <translation id="1090918500949388876">സ്ക്രീൻ ഓണായിരിക്കുമ്പോൾ, നിങ്ങൾ "Ok Google" എന്ന് പറയുന്ന ഏത് സമയത്തും അസിസ്‌റ്റന്‍റ് ആക്‌സസ് ചെയ്യുക</translation>
 <translation id="1091767800771861448">ഒഴിവാക്കുന്നതിനായി ESCAPE അമർത്തുക (അനൗദ്യോഗിക നിർമ്മിതകൾക്ക് മാത്രം).</translation>
 <translation id="1093457606523402488">ദൃശ്യമാകുന്ന നെറ്റ്‌വർക്കുകൾ:</translation>
 <translation id="1094607894174825014">അസാധുവായ ഒരു ഓഫ്‌‌സെറ്റ് ഉപയോഗിച്ചാണ് എഴുതുക അല്ലെങ്കിൽ വായിക്കുക പ്രവർത്തനം അഭ്യർത്ഥിച്ചത്: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">സൈൻ ഇൻ ചെയ്യുന്നതിന് മുമ്പ്, <ph name="NETWORK_ID" /> സജീവമാക്കാൻ അതിഥിയായി പ്രവേശിക്കുക</translation>
+<translation id="110029732810301672">ഒറിജിനൽ ഫയലുകളിലേക്ക് സംരക്ഷിക്കാൻ ഈ ടാബിനെ അനുവദിച്ചിരിക്കുന്നു.</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> എല്ലായ്പ്പോഴും വിവര്‍ത്തനം ചെയ്യുക </translation>
 <translation id="1108600514891325577">&amp;നിറുത്തുക</translation>
 <translation id="1110155001042129815">കാത്തിരിക്കുക</translation>
@@ -97,7 +99,7 @@
 <translation id="1128109161498068552">MIDI ഉപകരണങ്ങൾ ആക്‌സസ്സുചെയ്യുന്നതിന് സിസ്റ്റം എക്‌സ്‌ക്ലൂസീവ് സന്ദേശങ്ങൾ ഉപയോഗിക്കുന്നതിന് ഒരു സൈറ്റിനെയും അനുവദിക്കരുത്.</translation>
 <translation id="1128128132059598906">EAP-TTLS</translation>
 <translation id="1128591060186966949">തിരയൽ യന്ത്രം എഡിറ്റ് ചെയ്യുക</translation>
-<translation id="113124294734065964">ഡോക്കിന് ഒരു പ്രശ്‌നമുണ്ട്.</translation>
+<translation id="113124294734065964">ഡോക്കിന് ഒരു പ്രശ്‌നമുണ്ട്</translation>
 <translation id="1134009406053225289">അദൃശ്യ വിന്‍ഡോയില്‍ തുറക്കുക</translation>
 <translation id="1136712381129578788">തെറ്റായ പിൻ നിരവധി തവണ നൽകിയതിനാൽ സുരക്ഷാ കീ ലോക്ക് ചെയ്‌തിരിക്കുന്നു. ഇത് അൺലോക്ക് ചെയ്യാൻ, നീക്കം ചെയ്‌ത് വീണ്ടും ബന്ധിപ്പിക്കുക.</translation>
 <translation id="1137673463384776352"><ph name="APP" /> ആപ്പില്‍ ലിങ്ക് തുറക്കുക</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">സൺഗ്ലാസുകൾ</translation>
 <translation id="1151917987301063366">സെൻസറുകൾ ആക്‌സസ് ചെയ്യാൻ എപ്പോഴും <ph name="HOST" />-നെ അനുവദിക്കുക</translation>
 <translation id="1153356358378277386">ജോടിയാക്കിയ ഉപകരണങ്ങൾ</translation>
-<translation id="1156488781945104845">നിലവിലെ സമയം</translation>
 <translation id="1161575384898972166">ക്ലയന്‍റ് സര്‍ട്ടിഫിക്കറ്റ് എക്‌സ്പോർട്ട് ചെയ്യുന്നതിന് ദയവായി <ph name="TOKEN_NAME" /> എന്നതിലേക്ക് പ്രവേശിക്കുക.</translation>
 <translation id="1163931534039071049">ഫ്രെയിം ഉറവിടം &amp;കാണുക</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" /> ഉപകരണത്തിന്റെ Smart Lock ഓഫാക്കണോ?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player സ്റ്റോറേജ് ക്രമീകരണം</translation>
 <translation id="1274997165432133392">കുക്കികളും മറ്റ് സൈറ്റ് ഡാറ്റയും</translation>
 <translation id="127668050356036882">എല്ലാ വിൻഡോകളും അടയ്‌ക്കുക</translation>
-<translation id="1277908057200820621">ഉപകരണ ലിസ്‌റ്റ് കാണുക</translation>
 <translation id="1280820357415527819">മൊബൈൽ നെറ്റ്‌വർക്കുകൾ തിരയുന്നു</translation>
 <translation id="1285320974508926690">ഈ സൈറ്റ് ഒരിക്കലും വിവര്‍‌ത്തനം ചെയ്യരുത്</translation>
 <translation id="1285484354230578868">നിങ്ങളുടെ Google ഡ്രൈവ് അക്കൗണ്ടിൽ ഡാറ്റ സംഭരിക്കുക</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">ഹോം നെറ്റ്‍വര്‍ക്ക്, റോമിംഗ് അല്ല</translation>
 <translation id="1316136264406804862">തിരയുന്നു...</translation>
 <translation id="1316495628809031177">സമന്വയം താൽക്കാലികമായി നിർത്തി</translation>
+<translation id="1317637799698924700">USB Type-C അനുയോജ്യതാ മോഡിൽ നിങ്ങളുടെ ഡോക്കിംഗ് സ്‌റ്റേഷൻ പ്രവർത്തിക്കും.</translation>
 <translation id="1322046419516468189">നിങ്ങളുടെ <ph name="SAVED_PASSWORDS_STORE" /> എന്നതിൽ സംരക്ഷിച്ച പാസ്‌വേഡുകൾ കാണുക, മാനേജ് ചെയ്യുക</translation>
 <translation id="1326317727527857210">നിങ്ങളുടെ മറ്റ് ഉപകരണങ്ങളിൽ നിന്നുള്ള ടാബുകൾ ലഭിക്കാൻ, Chrome-ൽ സൈൻ ഇൻ ചെയ്യുക.</translation>
 <translation id="1327074568633507428">Google ക്ലൗഡ് പ്രിന്റിലെ പ്രിന്റർ</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">നിങ്ങളുടെ <ph name="BEGIN_LINK" />ബ്രൗസർ മാനേജ് ചെയ്യുന്നത്<ph name="END_LINK" /><ph name="ENROLLMENT_DOMAIN" /> ആണ്</translation>
 <translation id="1366177842110999534">നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> എന്ന ഉപകരണത്തിലെ Linux ടൂളുകൾ, എഡിറ്ററുകൾ, IDE-കൾ എന്നിവ റൺ ചെയ്യുക. &lt;a target="_blank" href="<ph name="URL" />"&gt;കൂടുതലറിയുക&lt;/a&gt;</translation>
 <translation id="1367951781824006909">ഒരു ഫയല്‍ തിരഞ്ഞെടുക്കുക</translation>
+<translation id="1370749010280229230">ഡോക്കിലേക്ക് കണക്‌റ്റ് ചെയ്‌തിരിക്കുന്ന ഡിസ്‌പ്ലേയ്‌ക്ക് ഒരു പ്രശ്‌നമുണ്ട്</translation>
 <translation id="1371301976177520732">ബുക്ക്‌മാർക്കുകളും പാസ്‌വേഡുകളും ചരിത്രവും മറ്റും നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിലും</translation>
 <translation id="1372841398847029212">നിങ്ങളുടെ അക്കൗണ്ടിലേക്ക് സമന്വയിപ്പിക്കുക</translation>
 <translation id="1374844444528092021">"<ph name="NETWORK_NAME" />" എന്ന നെറ്റ്‌വർക്കിന് ആവശ്യമായ സർട്ടിഫിക്കറ്റ്  ഇൻസ്റ്റാൾ ചെയ്‌തിട്ടില്ല അല്ലെങ്കിൽ ഇനി സാധുവായിരിക്കില്ല. പുതിയ സർട്ടിഫിക്കറ്റ് ലഭ്യമാക്കിയതിനുശേഷം വീണ്ടും കണക്റ്റ് ചെയ്യാൻ ശ്രമിക്കുക.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">വെബ്‌പേജ്, ഒരൊറ്റ ഫയൽ</translation>
 <translation id="1451917004835509682">സൂപ്പർവൈസ് ചെയ്‌ത വ്യക്തിയെ ചേർക്കുക</translation>
 <translation id="1454223536435069390">സ്ക്രീൻഷോട്ടെടുക്കുക</translation>
+<translation id="1458243790901188746">{0,plural, =1{ഫോൾഡർ: <ph name="DIRECTORIES" />}other{ഫോൾഡറുകൾ: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">വിപുലീകരണങ്ങൾ ചേർത്ത തിരയൽ യന്ത്രങ്ങൾ</translation>
 <translation id="146000042969587795">ഈ ഫ്രെയിം തടഞ്ഞു കാരണം ഇതില്‍ ചില സുരക്ഷിതമല്ലാത്ത ഉള്ളടക്കം അടങ്ങിയിരിക്കുന്നു.</translation>
 <translation id="146219525117638703">ONC സ്റ്റേറ്റ്</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">ഇൻപുട്ട് ഓപ്‌ഷനുകൾ കാണിക്കുക</translation>
 <translation id="1651008383952180276">ഒരേ പാസ്ഫ്രെയ്‌സ് തന്നെ നിങ്ങള്‍ രണ്ടുതവണ നല്‍കേണ്ടതുണ്ട്</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{പ്രിന്റർ, Google ക്ലൗഡ് പ്രിന്ററിൽ ചേർത്താൽ നിങ്ങൾക്ക് എവിടെ നിന്നും പ്രിന്റ് ചെയ്യാനാകും.}other{# പ്രിന്ററുകൾ, Google ക്ലൗഡ് പ്രിന്ററിൽ ചേർത്താൽ നിങ്ങൾക്ക് എവിടെ നിന്നും പ്രിന്റ് ചെയ്യാനാകും.}}</translation>
+<translation id="1656528038316521561">പശ്ചാത്തല അതാര്യത</translation>
 <translation id="1657406563541664238">Google ലേക്ക് ഉപയോഗ സ്ഥിതിവിവരകണക്കുകളും ക്രാഷ് റിപ്പോര്‍ട്ടുകളും സ്വപ്രേരിതമായി അയച്ചുകൊണ്ട് <ph name="PRODUCT_NAME" /> മെച്ചപ്പെട്ട രീതിയില്‍ നിര്‍മ്മിക്കാന്‍ സഹായിക്കുക</translation>
 <translation id="1658424621194652532">ഈ പേജ് നിങ്ങളുടെ മൈക്രോഫോൺ ആക്‌സസ്സുചെയ്യുന്നു.</translation>
 <translation id="1660204651932907780">ശബ്‌ദം പ്ലേ ചെയ്യാൻ സൈറ്റുകളെ അനുവദിക്കുക (ശുപാർശ ചെയ്യുന്നു)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546">നിങ്ങളുടെ സുരക്ഷാ കീയുടെ മെയ്‌ക്കും മോഡലും കാണാൻ <ph name="URL" /> ആഗ്രഹിക്കുന്നു</translation>
 <translation id="1679068421605151609">ഡെവലപ്പർ ഉപകരണങ്ങൾ</translation>
 <translation id="1679806121152819234">പ്ലഗിൻ VM</translation>
+<translation id="1679810534535368772">നിങ്ങൾക്ക് പുറത്തുകടക്കണമെന്ന് തീർച്ചയാണോ?</translation>
 <translation id="167983332380191032">മാനേജ്‌മെന്റ് സേവനം, HTTP പിശക് അയച്ചു.</translation>
 <translation id="1680849702532889074">നിങ്ങളുടെ Linux ആപ്ലിക്കേഷൻ ഇൻസ്‌റ്റാൾ ചെയ്യുമ്പോൾ ഒരു പിശക് സംഭവിച്ചു.</translation>
 <translation id="16815041330799488">ക്ലിപ്പ്‌ബോർഡിലേക്ക് പകർത്തിയിട്ടുള്ള ടെക്‌സ്‌റ്റുകളും ചിത്രങ്ങളും കാണാൻ സൈറ്റുകളെ അനുവദിക്കരുത്</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">പരിരക്ഷിത മീഡിയ ഐഡൻ്റിഫയർ</translation>
 <translation id="175196451752279553">അടച്ച ടാബ് വീ&amp;ണ്ടും തുറക്കുക</translation>
 <translation id="1753905327828125965">കൂടുതൽ‍ സന്ദര്‍ശിച്ചത്</translation>
+<translation id="1755601632425835748">ടെക്‌സ്‌റ്റ് വലുപ്പം</translation>
 <translation id="1756681705074952506">ഇന്‍‌പുട്ട് രീതി</translation>
 <translation id="1757301747492736405">അൺ ഇൻസ്‌റ്റാൾ ചെയ്യൽ തീർച്ചപ്പെടുത്തിയിട്ടില്ല</translation>
 <translation id="175772926354468439">തീം പ്രവർത്തനക്ഷമമാക്കുക</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">&amp;വളരെ ചെറുത്</translation>
 <translation id="1919345977826869612">പരസ്യങ്ങള്‍</translation>
 <translation id="1919814239594435008">അൺസാൻഡ്‌ബോക്‌സ് ചെയ്‌ത പ്ലഗിൻ അനുവദിച്ചിരിക്കുന്നു</translation>
+<translation id="1920390473494685033">കോണ്‍ടാക്റ്റുകള്‍</translation>
 <translation id="1921050530041573580">മെസേജുമായി നിങ്ങളുടെ ഫോൺ ജോടിയാക്കുക</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" />-ൽ Google സ്‌മാർട്ട് നേടുക</translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">അദൃശ്യ ടാബ്: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">നിങ്ങളുടെ കമ്പ്യൂട്ടർ ആക്‌സസ് ചെയ്യാൻ <ph name="PEPPER_PLUGIN_DOMAIN" /> എന്നതിലെ <ph name="PEPPER_PLUGIN_NAME" /> ആഗ്രഹിക്കുന്നു</translation>
 <translation id="2178614541317717477">CA കോംപ്രമൈസ്</translation>
+<translation id="2179849162388791084">നിങ്ങളുടെ സുരക്ഷാ കീയിൽ നിന്ന് സൈൻ ഇൻ ഡാറ്റ ശേഖരിക്കാനായില്ല.</translation>
 <translation id="218070003709087997">എത്ര പകർപ്പുകൾ പ്രിന്‍റ് ചെയ്യണമെന്ന് സൂചിപ്പിക്കാൻ ഒരു നമ്പര്‍ ഉപയോഗിക്കുക (1 മുതൽ 999 വരെ).</translation>
 <translation id="2184515124301515068">സൈറ്റുകൾക്ക് എപ്പോൾ ശബ്‌ദം പ്ലേ ചെയ്യാനാവും എന്നത് (ശുപാർശ ചെയ്‌തത്) തിരഞ്ഞെടുക്കാൻ Chrome-നെ അനുവദിക്കുക</translation>
 <translation id="2187895286714876935">സെര്‍വര്‍ സാക്ഷ്യപത്ര ഇറക്കുമതി പിശക്</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">എല്ലാ കുക്കികളും സൈറ്റ് വിവരങ്ങളും</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{ഒരു ഇനം പകർത്തി}other{# ഇനങ്ങൾ പകർത്തി}}</translation>
 <translation id="2278562042389100163">ബ്രൌസര്‍ വിന്‍ഡോ തുറക്കുക</translation>
-<translation id="2279874276457403668">ഒരേ സമയം ഒരു സെഷൻ മാത്രമേ സൃഷ്‌ടിക്കാനാവൂ.</translation>
 <translation id="2280486287150724112">വലത് മാര്‍‌ജിന്‍‌</translation>
 <translation id="2282146716419988068">GPU പ്രോസസ്</translation>
 <translation id="2282155092769082568">സ്വയമേവ കോൺഫിഗറേഷൻ URL:</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">ലോക്ക് സ്‌ക്രീൻ കുറിപ്പുകൾ <ph name="LOCK_SCREEN_APP_NAME" /> എന്നതിലേക്ക് സ്വമേധയാ സംരക്ഷിക്കപ്പെടുന്നു. നിങ്ങൾ ഏറ്റവും സമീപകാലത്ത് എഴുതിയ കുറിപ്പ് ലോക്ക് സ്‌ക്രീനിൽ നിലനിൽക്കും.</translation>
 <translation id="2353297238722298836">ക്യാമറയും മൈക്രോഫോണും അനുവദനീയം</translation>
 <translation id="2356070529366658676">ചോദിക്കുക</translation>
-<translation id="2357949918965361754">ടിവിയിലോ മറ്റ് ഉപകരണങ്ങളിലോ Chrome-ൽ നിന്നുള്ള ഉള്ളടക്കം കാണിക്കാൻ നിങ്ങൾക്ക് ഈ ഫീച്ചർ ഉപയോഗിക്കാം.</translation>
 <translation id="2359345697448000899">ഉപകരണങ്ങൾ മെനുവിലെ വിപുലീകരണങ്ങളിൽ ക്ലിക്ക് ചെയ്യുന്നതിലൂടെ നിങ്ങളുടെ വിപുലീകരണങ്ങൾ നിയന്ത്രിക്കുക.</translation>
 <translation id="2359808026110333948">തുടരുക</translation>
 <translation id="236117173274098341">ഓപ്‌റ്റിമൈസ് ചെയ്യുക</translation>
@@ -962,6 +968,7 @@
 <translation id="2436720498717686157">നിങ്ങളുടെ ഓർഗനൈസേഷൻ ഇപ്പോൾ ഈ ഉപകരണത്തിൽ ഒരു അപ്‌ഡേറ്റ് നടത്താൻ ആവശ്യപ്പെടുന്നു</translation>
 <translation id="2439545803278355377">നിങ്ങളുടെ പുതിയ പിൻ നൽകുക. കുറഞ്ഞത് നാല് പ്രതീകങ്ങൾ ദൈർഘ്യമുള്ളതായിരിക്കണം പിൻ, അക്ഷരങ്ങളും അക്കങ്ങളും മറ്റ് പ്രതീകങ്ങളും ഇതിൽ ഉൾപ്പെടാം.</translation>
 <translation id="2440604414813129000">ഉറവിടം കാണുക</translation>
+<translation id="2442916515643169563">ടെക്‌സ്‌റ്റ് ഷാഡോ</translation>
 <translation id="2444119669991608829"><ph name="LANGUAGE" /> ഭാഷയിൽ പേജ് ലഭ്യമല്ലേ ?</translation>
 <translation id="2445081178310039857">വിപുലീകരണ റൂട്ട് ഡയറക്‌ടറി ആവശ്യമാണ്.</translation>
 <translation id="2445484935443597917">പുതിയ പ്രൊഫൈൽ സൃഷ്‌ടിക്കുക</translation>
@@ -1177,6 +1184,7 @@
 <translation id="2738771556149464852">അതിനുശേഷമല്ല</translation>
 <translation id="2739191690716947896">ഡീബഗ് ചെയ്യുക</translation>
 <translation id="2739240477418971307">നിങ്ങളുടെ ഉപയോഗസഹായി ക്രമീകരണങ്ങൾ മാറ്റുക</translation>
+<translation id="274029851662193272">താഴ്ന്ന് നിൽക്കുന്നത്</translation>
 <translation id="2740393541869613458">മേൽനോട്ടത്തിലുള്ള ഉപയോക്താവ് സന്ദർശിച്ച വെബ്‌സൈറ്റുകളും ഒപ്പം ഇനിപ്പറയുന്നതും അവലോകനം ചെയ്യുക</translation>
 <translation id="2741912629735277980">ലോഗിൻ സ്‌ക്രീനിൽ UI പ്രദർശിപ്പിക്കുക</translation>
 <translation id="274290345632688601">Linux ആപ്പുകളും ഫയലുകളും പുനഃസ്ഥാപിക്കുന്നു</translation>
@@ -1225,6 +1233,7 @@
 <translation id="2806891468525657116">കുറുക്കുവഴി മുമ്പേ നിലവിലുണ്ട്</translation>
 <translation id="2807517655263062534">നിങ്ങൾ ഡൗൺലോഡ് ചെയ്യുന്ന ഫയലുകൾ ഇവിടെ ദൃശ്യമാകും</translation>
 <translation id="2809586584051668049">ഒപ്പം <ph name="NUMBER_ADDITIONAL_DISABLED" /> എണ്ണം കൂടി</translation>
+<translation id="2812049959647166806">Thunderbolt-ന് പിന്തുണയില്ല</translation>
 <translation id="2812944337881233323">സൈൻ ഔട്ട് ചെയ്‌ത്, വീണ്ടും ആരംഭിക്കുന്നത് പരീക്ഷിക്കുക</translation>
 <translation id="2812989263793994277">ചിത്രങ്ങളൊന്നും കാണിക്കരുത്</translation>
 <translation id="281390819046738856">അഭ്യർത്ഥന സൈൻ ചെയ്യാനായില്ല.</translation>
@@ -1247,7 +1256,6 @@
 <translation id="2841837950101800123">ദാതാവ്</translation>
 <translation id="2844169650293029770">USB-C ഉപകരണം (ഇടത് വശത്ത് മുൻഭാഗത്തെ പോർട്ട്)</translation>
 <translation id="2845382757467349449">ബുക്ക്‌മാർക്ക് ബാർ എപ്പോഴും കാണിക്കുക</translation>
-<translation id="2847759467426165163">ഇതിലേക്ക് കാസ്‌റ്റ് ചെയ്യുക</translation>
 <translation id="284805635805850872">ദോഷകരമായ സോഫ്‌റ്റ്‌വെയർ നീക്കംചെയ്യണോ?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">ക്ലീനപ്പ് പരാജയപ്പെട്ടു</translation>
@@ -1294,6 +1302,7 @@
     സെർവർ സന്ദേശം: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">ഡയറക്‌റ്ററി പ്രകാരം മീഡിയ ഗാലറി ചേർക്കുക</translation>
 <translation id="2910318910161511225">ഒരു നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റ് ചെയ്‌ത ശേഷം വീണ്ടും ശ്രമിക്കുക</translation>
+<translation id="2910518940971897750">ഒറിജിനൽ ഫയലിലേക്ക് സംരക്ഷിക്കൂ</translation>
 <translation id="2913331724188855103">കുക്കി ഡാറ്റ സംരക്ഷിക്കുന്നതിനും വായിക്കുന്നതിനും സൈറ്റുകളെ അനുവദിക്കുക (ശുപാർശചെയ്‌തത്)</translation>
 <translation id="2915102088417824677">ആക്റ്റിവിറ്റി ലോഗ് കാണുക</translation>
 <translation id="2915873080513663243">സ്വയമേവയുള്ള സ്‌കാൻ</translation>
@@ -1358,12 +1367,14 @@
 <translation id="3013291976881901233">MIDI ഉപകരണങ്ങൾ</translation>
 <translation id="3015639418649705390">ഇപ്പോള്‍ വീണ്ടും സമാരംഭിക്കുക</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> സ്വയമേവ കോൺഫിഗർ ചെയ്യാനായില്ല. വിപുലമായ പ്രിൻ്റർ വിശദാംശങ്ങൾ വ്യക്തമാക്കുക.</translation>
+<translation id="3016381065346027039">ലോഗ് എൻട്രികളൊന്നുമില്ല</translation>
 <translation id="3016641847947582299">ഘടകഭാഗം അപ്‌ഡേറ്റുചെയ്‌തു</translation>
 <translation id="3016780570757425217">നിങ്ങളുടെ ലൊക്കേഷൻ അറിയുക</translation>
 <translation id="3017079585324758401">പശ്ചാത്തലം</translation>
 <translation id="3020183492814296499">കുറുക്കുവഴികൾ</translation>
 <translation id="3020990233660977256">സീരിയല്‍‌ നമ്പര്‍‌: ‍‌<ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">ചിത്രശലഭം</translation>
+<translation id="3021408157810018664">മാറ്റങ്ങൾ ഒറിജിനൽ ഫയലുകളിലേക്ക് സംരക്ഷിക്കണോ?</translation>
 <translation id="3021426244864538700">ഈ സൈറ്റിൻ്റെ ഡാറ്റ ആക്‌സസ് ചെയ്യുന്നു</translation>
 <translation id="3021678814754966447">ഫ്രെയിം ഉറവിടം &amp;കാണുക</translation>
 <translation id="3022978424994383087">അത് മനസ്സിലായില്ല.</translation>
@@ -1456,6 +1467,7 @@
 <translation id="3170072451822350649">നിങ്ങൾക്ക് സൈൻ ഇൻ ചെയ്യുന്നത് ഒഴിവാക്കി <ph name="LINK_START" />അതിഥിയായി ബ്രൗസ് ചെയ്യാനുമാകും<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">ഒരു സൈറ്റ് വീഡിയോ ഇൻപുട്ട് ആക്‌സസ് ചെയ്യുന്നു</translation>
 <translation id="3177909033752230686">പേജ് ഭാഷ:</translation>
+<translation id="3179982752812949580">ടെക്‌സ്‌റ്റ് ഫോണ്ട്</translation>
 <translation id="3181954750937456830">സുരക്ഷിത ബ്രൗസിംഗ് (അപകടകരമായ സൈറ്റുകളിൽ നിന്ന് നിങ്ങളെയും ഉപകരണത്തെയും പരിരക്ഷിക്കുന്നു)</translation>
 <translation id="3182749001423093222">അക്ഷരത്തെറ്റ് പരിശോധന</translation>
 <translation id="3183139917765991655">പ്രൊഫൈൽ ഇംപോർട്ടർ</translation>
@@ -1508,7 +1520,6 @@
 <translation id="3275778913554317645">വിന്‍ഡോ ആയി തുറക്കുക</translation>
 <translation id="3278001907972365362">നിങ്ങളുടെ Google അക്കൗണ്ടിന്(കൾക്ക്) ശ്രദ്ധ ആവശ്യമാണ്</translation>
 <translation id="3279230909244266691">ഈ പ്രക്രിയയ്ക്ക് കുറച്ച് സമയമെടുത്തേക്കാം. വെർച്വൽ മെഷീൻ പ്രവർത്തനം ആരംഭിക്കുന്നു.</translation>
-<translation id="3279741024917655738">പൂർണ്ണ സ്ക്രീൻ വീഡിയോകൾ കാണിക്കുക</translation>
 <translation id="3280237271814976245">&amp;ഇതായി സംരക്ഷിക്കുക...</translation>
 <translation id="3280243678470289153">Chrome-ൽ തുടരുക</translation>
 <translation id="3281892622610078515">ഫയലുകളും പ്രോഗ്രാമുകളും യഥാർത്ഥ ലൊക്കേഷനിൽ നിന്ന് നീക്കി ക്വാരന്‍റൈൻ ഫോൾഡറിൽ ആർക്കൈവ് ചെയ്യേണ്ടതാണ്:</translation>
@@ -1530,7 +1541,7 @@
 <translation id="3303855915957856445">തിരയൽ ഫലങ്ങളൊന്നും കണ്ടെത്തിയില്ല</translation>
 <translation id="3305389145870741612">ഫോർമാറ്റിംഗ് പ്രക്രിയയ്ക്ക് കുറച്ച് നിമിഷങ്ങളെടുക്കും. ദയവായി കാത്തിരിക്കുക.</translation>
 <translation id="3305661444342691068">PDF പ്രിവ്യുവിൽ തുറക്കുക</translation>
-<translation id="3306684685104080068">Google Hangouts പോലുള്ള ക്ലൗഡ് അധിഷ്‌ഠിത സേവനങ്ങളിലേക്ക് കാസ്‌റ്റ് ചെയ്യുന്നത് പ്രവർത്തനക്ഷമമാക്കുക.</translation>
+<translation id="3307871847038842490">ഒറിജിനൽ ഫയലുകളിലേക്ക് സംരക്ഷിക്കാൻ ഈ പേജിനെ അനുവദിച്ചിരിക്കുന്നു.</translation>
 <translation id="3308006649705061278">ഓര്‍‌ഗനൈസേഷണല്‍‌ യൂണിറ്റ് (OU)</translation>
 <translation id="3308116878371095290">കുക്കികള്‍‌ ക്രമീകരിക്കുന്നതില്‍‌ നിന്നും ഈ പേജിനെ തടഞ്ഞു.</translation>
 <translation id="3308134619352333507">മറയ്‌ക്കല്‍ ബട്ടണ്‍</translation>
@@ -1636,7 +1647,6 @@
 <translation id="3462413494201477527">അക്കൗണ്ട് സജ്ജീകരണം ഇല്ലാതാക്കണോ?</translation>
 <translation id="3464012987031883895">ഒരു സൈറ്റ് ഓഡിയോ ഇൻപുട്ട് ആക്‌സസ് ചെയ്യുന്നു</translation>
 <translation id="346431825526753">ഇത് <ph name="CUSTODIAN_EMAIL" /> എന്നയാൾ നിയന്ത്രിക്കുന്ന കുട്ടികൾക്കുള്ള അക്കൗണ്ടാണ്.</translation>
-<translation id="3468275649641751422">ഒരു വീഡിയോ അല്ലെങ്കിൽ ഓഡിയോ ഫയൽ സ്‌ട്രീം ചെയ്യുക</translation>
 <translation id="3468999815377931311">Android ഫോൺ</translation>
 <translation id="3470442499439619530">ഈ ഉപയോക്താവിനെ നീക്കംചെയ്യുക</translation>
 <translation id="3473479545200714844">സ്‌ക്രീൻ മാഗ്‌നിഫയർ</translation>
@@ -1659,6 +1669,7 @@
 <translation id="3496213124478423963">സൂം ഔട്ട്</translation>
 <translation id="3497560059572256875">ഡൂഡ്ല്‍ പങ്കിടുക</translation>
 <translation id="3505030558724226696">ഉപകരണ ആക്‌സസ് റദ്ദാക്കുക</translation>
+<translation id="3505635633742443645">വീഡിയോ ഔട്ട്‌പുട്ടിന് USB Type-C പോർട്ട് ഉപയോഗിക്കുമ്പോൾ നിങ്ങളുടെ ഡോക്കിന്റെ HDMI പോർട്ട് ഉപയോഗിക്കാനാവില്ല. ഡിസ്‌പ്ലേകളിൽ ഒന്നിനായി മറ്റൊരു പോർട്ട് ഉപയോഗിക്കുക.</translation>
 <translation id="3507421388498836150">"<ph name="EXTENSION_NAME" />" എന്നതിനായുള്ള നിലവിലെ അനുമതികൾ</translation>
 <translation id="3507888235492474624">Bluetooth ഉപകരണങ്ങൾ വീണ്ടും സ്‌കാൻ ചെയ്യുക</translation>
 <translation id="3508920295779105875">മറ്റൊരു ഫോള്‍‌ഡര്‍‌ തിരഞ്ഞെടുക്കുക...</translation>
@@ -1711,6 +1722,7 @@
 <translation id="3576324189521867626">ഇൻസ്‌റ്റാൾ ചെയ്‌തു</translation>
 <translation id="3578594933904494462">ഈ ടാബിന്റെ ഉള്ളടക്കം പങ്കിടുന്നു.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt;, നിങ്ങൾക്ക് സ്വന്തമായ ഒരു ഗ്രൂപ്പുമായി ഒരു പ്രിന്റർ &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; പങ്കിടാൻ താൽപ്പര്യപ്പെടുന്നു: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. നിങ്ങൾ അംഗീകരിക്കുകയാണെങ്കിൽ, ഗ്രൂപ്പിലെ എല്ലാ അംഗങ്ങൾക്കും പ്രിന്ററിൽ പ്രിന്റുചെയ്യാനാവും.</translation>
+<translation id="357889014807611375">മീറ്റർ ചെയ്‌ത വൈഫൈ</translation>
 <translation id="3584169441612580296">നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ നിന്ന് ഫോട്ടോകൾ, സംഗീതം, മറ്റ് മീഡിയ എന്നിവ റീഡ് ചെയ്യുക, മാറ്റുക</translation>
 <translation id="3587482841069643663">എല്ലാം</translation>
 <translation id="358796204584394954">ജോടിയാക്കുന്നതിന് "<ph name="DEVICE_NAME" />" എന്നതിൽ ഈ കോഡ് ടൈപ്പ് ചെയ്യുക:</translation>
@@ -1721,6 +1733,7 @@
 <translation id="359283478042092570">നൽകുക</translation>
 <translation id="3593965109698325041">സര്‍‌ട്ടിഫിക്കറ്റ് നാമ നിയന്ത്രണങ്ങള്‍‌</translation>
 <translation id="3596235046596950091">ക്ലൗഡ് സേവനങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക</translation>
+<translation id="3599221874935822507">ഉയർന്ന് നിൽക്കുന്നത്</translation>
 <translation id="3599863153486145794">സൈൻ ഇൻ ചെയ്‌ത എല്ലാ ഉപകരണങ്ങളിൽ നിന്നും ചരിത്രം മായ്ക്കുന്നു. നിങ്ങളുടെ Google അക്കൗണ്ടിന് <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> എന്നതിൽ മറ്റ് തരത്തിലുള്ള ബ്രൗസിംഗ് ചരിത്രങ്ങളുണ്ടായിരിക്കാം.</translation>
 <translation id="3600051066689725006">വെബ് അഭ്യർത്ഥനാ വിവരങ്ങൾ</translation>
 <translation id="3600792891314830896">ശബ്‌ദം പ്ലേ ചെയ്യുന്ന സൈറ്റുകളെ മ്യൂട്ട് ചെയ്യുക</translation>
@@ -1735,6 +1748,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;, ഡൗൺലോഡുചെയ്‌തു</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> എന്നത് കാണിക്കുക</translation>
 <translation id="3613422051106148727">പുതിയ ടാബിൽ &amp;തുറക്കുക</translation>
+<translation id="3615073365085224194">വിരലടയാള സെൻസറിൽ സ്‌പർശിക്കുക</translation>
 <translation id="3616113530831147358">ഓഡിയോ</translation>
 <translation id="3616741288025931835">&amp;ബ്രൌസിംഗ് ഡാറ്റ ഇല്ലാതാക്കുക...</translation>
 <translation id="3617891479562106823">പശ്ചാത്തലങ്ങൾ ലഭ്യമല്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation>
@@ -1816,7 +1830,6 @@
 <translation id="3719826155360621982">ഹോംപേജ്</translation>
 <translation id="3720996970802414353">ഏതുവിധേനയും മാറുക</translation>
 <translation id="3722108462506185496">വെർച്വൽ മെഷീൻ സേവനം പ്രവർത്തനം തുടങ്ങുന്നതിൽ പിശക്. വീണ്ടും ശ്രമിക്കുക.</translation>
-<translation id="3723158278575423087">Chromium-ലെ കാസ്റ്റ് അനുഭവത്തിലേക്ക് സ്വാഗതം!</translation>
 <translation id="3725367690636977613">പേജുകള്‍</translation>
 <translation id="3726137731714254362">ഇവിടെ നിന്ന് ഫോൾഡറുകൾ നീക്കം ചെയ്യുന്നത് പങ്കിടൽ നിർത്തും, എന്നാൽ ഫയലുകൾ ഇല്ലാതാക്കില്ല.</translation>
 <translation id="3727148787322499904">ഈ ക്രമീകരണം മാറ്റുന്നത് എല്ലാ പങ്കിട്ട നെറ്റ്‌വർക്കുകളെയും ബാധിക്കാനിടയാക്കും</translation>
@@ -1851,7 +1864,6 @@
 <translation id="3764314093345384080">വിശദമായ ബിൽഡ് വിവരം</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{USB ഉപകരണവുമായി ആശയവിനിമയം നടത്തുക}other{C # USBഉപകരണങ്ങളുമായി ആശയവിനിമയം നടത്തുക}}</translation>
 <translation id="3765246971671567135">ഓഫ്‌ലൈൻ ഡെമോ മോഡ് നയം വായിക്കാനായില്ല.</translation>
-<translation id="3766223500670287046">റിമോട്ട് സ്ക്രീൻ</translation>
 <translation id="3768037234834996183">നിങ്ങളുടെ മുൻഗണനകൾ സമന്വയിപ്പിക്കുന്നു...</translation>
 <translation id="377050016711188788">ഐസ്ക്രീം</translation>
 <translation id="3771294271822695279">വീഡിയോ ഫയലുകള്‍</translation>
@@ -1924,7 +1936,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">വിരൽ ഉയർത്തി, വീണ്ടും സ്‌പർശിക്കുക</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: സമന്വയം താൽക്കാലികമായി നിർത്തി</translation>
-<translation id="3862134173397075045">Chrome-ലെ കാസ്റ്റ് അനുഭവത്തിലേക്ക് സ്വാഗതം!</translation>
 <translation id="3862693525629180217">കമ്പ്യൂട്ടറിൽ അടങ്ങിയ സെൻസർ വഴി പരിശോധിച്ചുറപ്പിക്കുക</translation>
 <translation id="3862788408946266506">Chrome OS കിയോസ്‌ക് മോഡിൽ, 'kiosk_only' മാനിഫെസ്റ്റ് ആട്രിബ്യൂട്ട് ഉള്ള ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യണം</translation>
 <translation id="3865414814144988605">റെസല്യൂഷൻ</translation>
@@ -1973,6 +1984,7 @@
 <translation id="3926002189479431949">Smart Lock ഫോൺ മാറി</translation>
 <translation id="3927932062596804919">നിരസിക്കൂ</translation>
 <translation id="3930737994424905957">ഉപകരണങ്ങൾക്കായി തിരയുന്നു</translation>
+<translation id="3930968231047618417">പശ്ചാത്തല വര്‍ണം</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> എന്നതിന്‍റെ ഇല്ലാതാക്കിയ പാസ്‌വേഡ് പുനഃസ്ഥാപിക്കുക</translation>
 <translation id="3936390757709632190">പുതിയ ടാബിൽ ഓഡിയോ &amp;തുറക്കുക</translation>
 <translation id="3936925983113350642">ഈ സർട്ടിഫിക്കറ്റ് പിന്നീട് പുനഃസ്ഥാപിക്കുന്നതിന്, നിങ്ങള്‍ തിരഞ്ഞെടുത്ത പാസ്‌വേഡ് ആവശ്യമായിവരും. അത് സുരക്ഷിതമായ സ്ഥലത്ത് രേഖപ്പെടുത്തുക.</translation>
@@ -1991,6 +2003,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE ല്‍ നിന്ന് ഇറക്കുമതി ചെയ്തവ</translation>
 <translation id="3950820424414687140">സൈൻ ഇൻ</translation>
+<translation id="3950828138786918475">നിങ്ങളുടെ ഉപകരണത്തിലെ ഒരു ഫോൾഡർ വായിക്കാൻ ഈ ടാബിനെ അനുവദിച്ചിരിക്കുന്നു.</translation>
 <translation id="3954354850384043518">പുരോഗതിയിലാണ്</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> ഹേർട്‌സ്)</translation>
 <translation id="3954953195017194676">നിങ്ങൾക്ക്, അടുത്തിടെ രേഖപ്പെടുത്തിയ WebRTC ഇവന്റ് ലോഗുകളൊന്നുമില്ല.</translation>
@@ -2009,6 +2022,7 @@
 <translation id="397105322502079400">കണക്കാക്കുന്നു...</translation>
 <translation id="3975565978598857337">മേഖലയ്ക്കുള്ള സെർവറുമായി ബന്ധപ്പെടുന്നത് പരാജയപ്പെട്ടു</translation>
 <translation id="397703832102027365">തീര്‍ച്ചപ്പെടുത്തുന്നു...</translation>
+<translation id="3977886311744775419">ഈ നെറ്റ്‌വർക്ക് തരത്തിൽ സ്വയമേവയുള്ള അപ്‌ഡേറ്റുകൾ ഡൗൺലോഡ് ആകില്ല, എന്നാൽ നേരിട്ടുള്ള അപ്‌ഡേറ്റുകൾക്കായി നിങ്ങൾക്ക് പരിശോധിക്കാവുന്നതാണ്.</translation>
 <translation id="3979395879372752341">പുതിയ വിപുലീകരണം ചേർത്തു (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="3981760180856053153">അസാധുവായ സംരക്ഷിക്കല്‍ തരം നല്‍കി.</translation>
@@ -2148,6 +2162,7 @@
 <translation id="4194570336751258953">ക്ലിക്ക് ചെയ്യുന്നതിനായി ടാപ്പ് പ്രാപ്‌തമാക്കുക</translation>
 <translation id="4195643157523330669">പുതിയ ടാബില്‍ തുറക്കുക</translation>
 <translation id="4195814663415092787">നിങ്ങൾ അവസാനിപ്പിച്ചയിടത്ത് നിന്ന് തുടരുക</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> എന്നതിന് ഇനിപ്പറയുന്ന ഫയലുകളിലേക്ക് നിങ്ങളുടെ മാറ്റങ്ങൾ നേരിട്ട് സംരക്ഷിക്കാനാവും. ഈ ടാബ് തുറന്നിരിക്കുമ്പോൾ മാത്രമേ ഈ സൈറ്റിന് മാറ്റങ്ങൾ സംരക്ഷിക്കാനാവൂ.</translation>
 <translation id="4198146608511578238">നിങ്ങളുടെ Google അസിസ്‌റ്റന്‍റുമായി സംസാരിക്കാൻ 'ലോഞ്ചർ' ചിഹ്നം അമര്‍ത്തിപ്പിടിക്കുക.</translation>
 <translation id="4200689466366162458">ഇഷ്‌ടാനുസൃത പദങ്ങൾ</translation>
 <translation id="4200983522494130825">പുതിയ &amp;ടാബ്</translation>
@@ -2195,7 +2210,6 @@
 <translation id="4267953847983678297">സെല്ലുലാർ നെറ്റ്‌വർക്കിലേക്ക് സ്വയമേവ കണക്‌റ്റ് ചെയ്യുക</translation>
 <translation id="4268025649754414643">കീ എന്‍‌സിഫെര്‍‌മെന്‍റ്</translation>
 <translation id="4270393598798225102"><ph name="NUMBER" /> പതിപ്പ്</translation>
-<translation id="4271396100647220620">ഒന്നും യോജിക്കുന്നില്ല</translation>
 <translation id="4275663329226226506">മീഡിയ</translation>
 <translation id="4275830172053184480">നിങ്ങളുടെ ഉപകരണം പുനരാരംഭിക്കുക</translation>
 <translation id="4278101229438943600">നിങ്ങളുടെ അസിസ്‌റ്റന്റ് തയ്യാറാണ്</translation>
@@ -2344,6 +2358,7 @@
 <translation id="4533985347672295764">CPU സമയം</translation>
 <translation id="4534661889221639075">വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="4535127706710932914">ഡിഫോൾട്ട്  പ്രൊഫൈൽ</translation>
+<translation id="4535767533210902251">വിരലടയാള സെൻസർ നിങ്ങളുടെ കീബോർഡിൽ മുകളിലെ വലതുഭാഗത്തെ കീയാണ്. ഏതെങ്കിലും വിരലുകൊണ്ട് അതിൽ മൃദുവായി സ്‌പർശിക്കുക.</translation>
 <translation id="4538684596480161368"><ph name="HOST" /> എന്നതില്‍ എല്ലായ്‌പ്പോഴും ഈ അൺസാൻഡ്‌ബോക്‌സ് ചെയ്‌ത പ്ലഗിന്നുകളെ തടയുക</translation>
 <translation id="4538792345715658285">എന്റർപ്രൈസ് നയത്തിനാൽ ഇൻസ്റ്റാൾ ചെയ്യപ്പെട്ടത്</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> എന്നിവയിലെ നിങ്ങളുടെ വിവരം വായിക്കുക</translation>
@@ -2377,6 +2392,7 @@
 <translation id="457386861538956877">കൂടുതൽ‍‌...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Bluetooth ഉപകരണം ജോടിയാക്കുക</translation>
+<translation id="4578012756826807359">നിങ്ങളുടെ സൈൻ ഇൻ ഡാറ്റ വിജയകരമായി ഇല്ലാതാക്കി.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> കാസ്‌റ്റ് ചെയ്യാനാവുന്നില്ല.</translation>
 <translation id="4581774856936278355">Linux പുനഃസ്ഥാപിക്കുന്നതിൽ പിശക്</translation>
 <translation id="4582563038311694664">എല്ലാ ക്രമീകരണങ്ങളും പുനഃസജ്ജമാക്കുക</translation>
@@ -2494,7 +2510,6 @@
 <translation id="4763830802490665879">ഒന്നിലധികം സൈറ്റുകളിൽ നിന്നുള്ള കുക്കികൾ പുറത്തുകടക്കുമ്പോൾ മായ്‌ക്കപ്പെടും.</translation>
 <translation id="4765582662863429759">ഫോണിൽ നിന്ന് Chromebook-ലേക്ക് ടെക്‌സ്‌റ്റുകൾ കൈമാറാൻ Android മെസേജിനെ അനുവദിക്കുന്നു</translation>
 <translation id="4768332406694066911">നിങ്ങള്‍‌ക്ക് ഈ ഓര്‍‌ഗനൈസേഷനുകളില്‍‌ നിന്ന് നിങ്ങളെ തിരിച്ചറിയുന്ന സര്‍‌ട്ടിഫിക്കറ്റുകളുണ്ട്</translation>
-<translation id="4772404146526168240">ഇരു സ്‌ക്രീനുകളും</translation>
 <translation id="4776146737004271126">Android ക്രമീകരണം തുറക്കുക</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> എന്നതിനായുള്ള പാസ്‌വേഡ്</translation>
 <translation id="4777825441726637019">Play സ്‌റ്റോർ</translation>
@@ -2602,7 +2617,6 @@
 <translation id="4927846293686536410">നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിലും ബുക്ക്‌മാർക്കുകൾ, ചരിത്രം, പാസ്‌വേഡുകൾ, മറ്റ് ക്രമീകരണം എന്നിവ ലഭിക്കാൻ സൈൻ ഇൻ ചെയ്യുക. Google സേവനങ്ങളിലേക്ക് സ്വയമേവ നിങ്ങൾ സൈൻ ഇൻ ആകുകയും ചെയ്യും.</translation>
 <translation id="4929386379796360314">അച്ചടി ലക്ഷ്യസ്ഥാനങ്ങൾ</translation>
 <translation id="4930714375720679147">ഓണാക്കുക</translation>
-<translation id="4931132176527519925">എല്ലായ്‌പ്പോഴും മിററിംഗ് ഉപയോഗിക്കുക</translation>
 <translation id="4932733599132424254">തീയതി</translation>
 <translation id="4933484234309072027"><ph name="URL" /> ല്‍ ഉള്‍‌ച്ചേര്‍‌ത്തു</translation>
 <translation id="493571969993549666">മേൽനോട്ടത്തിലുള്ള ഉപയോക്താവിനെ ചേർക്കുക</translation>
@@ -2642,6 +2656,7 @@
 <translation id="4992066212339426712">അൺമ്യൂട്ടുചെയ്യുക</translation>
 <translation id="4992458225095111526">പവർവാഷ് സ്ഥിരീകരിക്കുക</translation>
 <translation id="4992473555164495036">ലഭ്യമായ ഇൻപുട്ട് രീതികളെ നിങ്ങളുടെ അഡ്‌മിൻ പരിമിതപ്പെടുത്തി.</translation>
+<translation id="4992866843815555470">നിങ്ങളുടെ ഡോക്ക് സർവീസ് ചെയ്യേണ്ടിയിരിക്കുന്നു. ഫാൻ പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ ഡോക്ക് ഷട്ട് ഡൗൺ ആകും.</translation>
 <translation id="4992926179187649719">'Ok Google' ഓണാക്കുക</translation>
 <translation id="4994474651455208930">പ്രോട്ടോകോളുകളുടെ ഡിഫോൾട്ടായ കൈകാര്യം ചെയ്യുന്ന സംവിധാനമായി മാറാനുള്ള അനുവാദം ചോദിക്കാൻ സൈറ്റുകളെ അനുവദിക്കുന്നു</translation>
 <translation id="4994754230098574403">സജ്ജീകരിക്കുന്നു</translation>
@@ -2780,7 +2795,6 @@
 <translation id="5233231016133573565">പ്രോസസ് ID</translation>
 <translation id="5233638681132016545">പുതിയ ടാബ്</translation>
 <translation id="5233736638227740678">&amp;ഒട്ടിക്കുക</translation>
-<translation id="5234764350956374838">ബഹിഷ്‌ക്കരിക്കുക</translation>
 <translation id="5235050375939235066">ആപ്പ് അൺഇൻസ്റ്റാൾ ചെയ്യണോ?</translation>
 <translation id="5235750401727657667">പുതിയ ടാബ് തുറക്കുമ്പോൾ കാണിക്കേണ്ട പേജ് മാറ്റുക</translation>
 <translation id="5238278114306905396">"<ph name="EXTENSION_NAME" />" ആപ്പ് യാന്ത്രികമായി നീക്കംചെയ്‌തു.</translation>
@@ -2845,6 +2859,7 @@
 <translation id="5319359161174645648">Google ശുപാർശചെയ്യുന്നത് Chrome ആണ്</translation>
 <translation id="532247166573571973">സെർവർ ലഭ്യമല്ലായിരിക്കാം. പിന്നീട് വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="5324780743567488672">നിങ്ങളുടെ ലൊക്കേഷൻ ഉപയോഗിച്ച് സമയ മേഖല സ്വയമേവ സജ്ജമാക്കുക</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - എന്നതിനെ ഒറിജിനൽ ഫയലുകളിലേക്ക് സംരക്ഷിക്കാൻ അനുവദിച്ചിരിക്കുന്നു</translation>
 <translation id="5327248766486351172">പേര്</translation>
 <translation id="5327570636534774768">ഈ ഉപകരണം, മറ്റൊരു ഡൊമെയ്‌ൻ ഉപയോഗിച്ച് മാനേജ് ചെയ്യാനായി മാർക്ക് ചെയ്‌തിരിക്കുന്നു. ഡെമോ മോഡ് സജ്ജീകരിക്കുന്നതിന് മുമ്പ് അതിനെ ആ ഡൊമെയ്‌നിൽ നിന്ന് ഡീപ്രൊവിഷൻ ചെയ്യുക.</translation>
 <translation id="532943162177641444">ഈ ഉപകരണത്തിന് ഉപയോഗിക്കാൻ കഴിയുന്ന മൊബൈൽ ഹോട്ട്‌സ്പോട്ട് സജ്ജമാക്കുന്നതിന് നിങ്ങളുടെ <ph name="PHONE_NAME" /> ഫോണിലെ അറിയിപ്പിൽ ടാപ്പ് ചെയ്യുക.</translation>
@@ -2961,7 +2976,7 @@
 <translation id="5496587651328244253">ഓര്‍ഗനൈസുചെയ്യുക</translation>
 <translation id="549673810209994709">ഈ പേജ് വിവർത്തനം ചെയ്യാനായില്ല.</translation>
 <translation id="5499313591153584299">ഈ ഫയൽ നിങ്ങളുടെ കമ്പ്യൂട്ടറിന് ഹാനികരമായേക്കാം.</translation>
-<translation id="5500345327355928305">ചാർജ് ചെയ്യുന്നതും പ്രകടന പ്രശ്‌നങ്ങളും ഒഴിവാക്കാൻ അനുയോജ്യമായ OEM-ഓ USB Type-C പവർ അഡാപ്‌റ്ററോ ഉപയോഗിക്കുക.</translation>
+<translation id="5500345327355928305">ചാർജ് ചെയ്യുന്നതും പ്രകടന പ്രശ്‌നങ്ങളും ഒഴിവാക്കാൻ അനുയോജ്യമായ OEM അല്ലെങ്കിൽ USB Type-C പവർ അഡാപ്‌റ്റർ ഉപയോഗിക്കുക.</translation>
 <translation id="5502500733115278303">Firefoxല്‍ നിന്ന് ഇറക്കുമതി ചെയ്തവ</translation>
 <translation id="5507756662695126555">നിരസിക്കാത്തത്</translation>
 <translation id="5509693895992845810">ഇതായി &amp;സംരക്ഷിക്കുക...</translation>
@@ -2987,7 +3002,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> ഇത് ചെയ്യാൻ താൽപ്പര്യപ്പെടുന്നു</translation>
 <translation id="5534304873398226603">ഫോട്ടോയോ വീഡിയോയോ തള്ളിക്കളയുക</translation>
 <translation id="5535941515421698170">ഈ ഉപകരണത്തിൽ നിന്ന് നിലവിലുള്ള വിവരങ്ങളും നീക്കംചെയ്യുക</translation>
-<translation id="5537725057119320332">കാസ്‌റ്റ് ചെയ്യുക</translation>
 <translation id="5539221284352502426">നിങ്ങൾ നൽകിയ പാസ്‍വേഡ് സെർവർ നിരസിച്ചു. സാധ്യമായ കാരണങ്ങൾ ഇവയാണ്: പാസ്‍വേഡ് വളരെ ചെറുതാണ്. പാസ്‍വേഡിൽ അക്കങ്ങളും ചിഹ്നങ്ങളും അടങ്ങിയിരിക്കണം. പുതിയ പാസ്‌വേഡ്, മുമ്പ് ഉപയോഗിച്ചിട്ടുള്ള പാസ്‍വേഡുകളിൽ നിന്ന് വ്യത്യസ്തമായിരിക്കണം.</translation>
 <translation id="5541687815721799001">ആപ്പ് ഉപയോഗിക്കുക</translation>
 <translation id="5542132724887566711">പ്രൊഫൈൽ</translation>
@@ -3297,14 +3311,13 @@
 <translation id="5997337190805127100">സൈറ്റ് ആക്‌സസിനെക്കുറിച്ച് കൂടുതലറിയുക</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' എന്നതിനായി <ph name="RESULT_COUNT" /> ഫലങ്ങള്‍</translation>
 <translation id="6002458620803359783">തിരഞ്ഞെടുത്ത ശബ്ദങ്ങൾ</translation>
-<translation id="6005695835120147974">മീഡിയ റൂട്ടർ</translation>
 <translation id="6006484371116297560">ക്ലാസിക്</translation>
 <translation id="6007240208646052708">നിങ്ങളുടെ ഭാഷയിൽ ശബ്‌ദ തിരയൽ ലഭ്യമല്ല.</translation>
 <translation id="6009781704028455063">കമ്പ്യൂട്ടറിൽ അടങ്ങിയ സെൻസർ</translation>
 <translation id="6010869025736512584">വീഡിയോ ഇൻപുട്ട് ആക്‌സസ് ചെയ്യുന്നു</translation>
 <translation id="6011193465932186973">ഫിംഗർപ്രിന്റ്</translation>
 <translation id="6011449291337289699">സൈറ്റ് ഡാറ്റ മായ്‌ക്കുക</translation>
-<translation id="6015266928248016057">PUK അസാധുവാണ് ശേഷിക്കുന്ന ശ്രമങ്ങൾ: <ph name="RETRIES" />.</translation>
+<translation id="6015266928248016057">PUK അസാധുവാണ്. ശേഷിക്കുന്ന ശ്രമങ്ങൾ: <ph name="RETRIES" />.</translation>
 <translation id="6015796118275082299">വര്‍ഷം</translation>
 <translation id="6016551720757758985">മുൻ പതിപ്പിലേക്ക് പോകുന്നതിലൂടെ പവർവാഷ് സ്ഥിരീകരിക്കുക</translation>
 <translation id="6016972670657536680">ഭാഷയും കീബോർഡും ബട്ടൺ തിരഞ്ഞെടുക്കുക. നിലവിൽ തിരഞ്ഞെടുത്ത ഭാഷ <ph name="LANGUAGE" /> ആണ്.</translation>
@@ -3383,7 +3396,7 @@
 <translation id="6112294629795967147">വലുപ്പം മാറ്റാൻ സ്പർശിക്കുക</translation>
 <translation id="6112931163620622315">നിങ്ങളുടെ ഫോൺ പരിശോധിക്കുക</translation>
 <translation id="6112952769866305444"><ph name="USERNAME" /> എന്നയാളിന്റെ <ph name="PROFILE_NAME" /> പ്രൊഫൈൽ എഡിറ്റുചെയ്യുക</translation>
-<translation id="6113942107547980621">Smart Lock ഉപയോഗിക്കാൻ നിങ്ങളുടെ ഫോണിലെ പ്രാഥമിക ഉപയോക്തൃ പ്രൊഫൈലിലേക്ക് സ്വിച്ച് ചെയ്യുക.</translation>
+<translation id="6113942107547980621">Smart Lock ഉപയോഗിക്കാൻ നിങ്ങളുടെ ഫോണിലെ പ്രാഥമിക ഉപയോക്തൃ പ്രൊഫൈലിലേക്ക് സ്വിച്ച് ചെയ്യുക</translation>
 <translation id="6116338172782435947">ക്ലിപ്പ്‌ബോർഡിലേക്ക് പകർത്തിയിട്ടുള്ള ടെക്‌സ്റ്റും ചിത്രങ്ങളും കാണുക</translation>
 <translation id="6116921718742659598">ഭാഷയും ഇൻപുട്ട് ക്രമീകരണങ്ങളും മാറ്റുക</translation>
 <translation id="6120205520491252677">ഈ പേജ് ആരംഭ സ്‌ക്രീനിലേക്ക് പിൻ ചെയ്യുക...</translation>
@@ -3498,7 +3511,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{നിങ്ങളുടെ നെറ്റ്‌വർക്കിലെ പുതിയ പ്രിന്റർ}other{നിങ്ങളുടെ നെറ്റ്‌വർക്കിലെ പുതിയ പ്രിന്ററുകൾ}}</translation>
 <translation id="6286708577777130801">സംരക്ഷിച്ച പാസ്‌വേഡ് വിശദാംശങ്ങൾ</translation>
 <translation id="6289452883081499048">Play പോലുള്ള വ്യക്തിഗതമാക്കിയ Google സേവനങ്ങൾ</translation>
-<translation id="6290556621549272952">ടിവിയിലും മറ്റ് ഉപകരണങ്ങളിലും Chromium-ത്തിൽ നിന്നുള്ള ഉള്ളടക്കം കാണിക്കാൻ ഈ ഫീച്ചർ ഉപയോഗിക്കാം.</translation>
 <translation id="6291949900244949761">USB ഉപകരണങ്ങൾ ആക്‌സസ് ചെയ്യാൻ ഒരു സൈറ്റ് താൽപ്പര്യപ്പെടുമ്പോൾ ചോദിക്കുക (ശുപാർശ ചെയ്‌തത്)</translation>
 <translation id="6291953229176937411">&amp;ഫൈന്‍‌ഡറില്‍ കാണിക്കുക</translation>
 <translation id="6295158916970320988">എല്ലാ സൈറ്റുകളും</translation>
@@ -3562,6 +3574,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />സിസ്റ്റം വിവരങ്ങളും<ph name="END_LINK1" /> <ph name="BEGIN_LINK2" />മെട്രിക്‌സും<ph name="END_LINK2" /> അയയ്‌ക്കുക</translation>
 <translation id="6396988158856674517">ചലന സെൻസറുകൾ ഉപയോഗിക്കുന്നതിൽ നിന്ന് സൈറ്റുകളെ ബ്ലോക്ക് ചെയ്യുക</translation>
 <translation id="6397094776139756010">സമന്വയവും വ്യക്തിപരമാക്കലും ഓപ്‌ഷനുകൾ</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> എന്നതിന് ചുവടെയുള്ള ഫോൾഡറിലെ ഫയലുകളിലേക്ക് നിങ്ങളുടെ മാറ്റങ്ങൾ നേരിട്ട് സംരക്ഷിക്കാനാവും. ഈ ടാബ് തുറന്നിരിക്കുമ്പോൾ മാത്രമേ ഈ സൈറ്റിന് മാറ്റങ്ങൾ സംരക്ഷിക്കാനാവൂ.</translation>
 <translation id="6398715114293939307">Google Play സ്‌റ്റോർ നീക്കംചെയ്യുക</translation>
 <translation id="6398765197997659313">പൂര്‍ണ്ണ സ്ക്രീനില്‍ നിന്ന് പുറത്തുകടക്കുക</translation>
 <translation id="6399774419735315745">ചാരവനിത</translation>
@@ -3606,11 +3619,13 @@
 <translation id="6455264371803474013">നിർദിഷ്‌ട സൈറ്റുകളിൽ</translation>
 <translation id="6455894534188563617">&amp;പുതിയ ഫോള്‍ഡര്‍</translation>
 <translation id="6456394469623773452">മിഴിവുള്ളതാക്കുക</translation>
+<translation id="6456955391422100996">പരസ്യം നീക്കം ചെയ്‌തു.</translation>
 <translation id="645705751491738698">JavaScript തടയുന്നത് തുടരുക</translation>
 <translation id="6458701200018867744">അപ്‌ലോഡ് ചെയ്യാനായില്ല (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">കണ്ടെത്തുന്നതിനായി തിരഞ്ഞെടുപ്പ് ഉപയോഗിക്കുക</translation>
 <translation id="6459799433792303855">സജീവ വിൻഡോ മറ്റൊരു ഡിസ്‌പ്ലേയിലേക്ക് നീക്കി.</translation>
 <translation id="6460601847208524483">അടുത്തത് കണ്ടെത്തുക</translation>
+<translation id="6461170143930046705">നെറ്റ്‌വർക്കുകൾക്കായി തിരയുന്നു...</translation>
 <translation id="6463795194797719782">&amp;എഡിറ്റ്‌ചെയ്യൂ</translation>
 <translation id="6466988389784393586">&amp;എല്ലാ ബുക്ക്‍മാര്‍ക്കുകളും തുറക്കുക</translation>
 <translation id="6467304607960172345">പൂർണ്ണ സ്ക്രീൻ വീഡിയോകൾ ഒപ്‌റ്റിമൈസ് ചെയ്യുക</translation>
@@ -3649,6 +3664,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">നിങ്ങൾ <ph name="NETWORK_TYPE" /> നെറ്റ്‌വർക്കിലേക്ക് കണക്‌റ്റ് ചെയ്‌തിരിക്കുന്നു.</translation>
 <translation id="6527303717912515753">പങ്കിടുക</translation>
 <translation id="6528513914570774834">ഈ നെറ്റ്‌വർക്ക് ഉപയോഗിക്കാൻ ഉപകരണത്തിലെ മറ്റ് ഉപയോക്താക്കളെ അനുവദിക്കുക</translation>
 <translation id="652948702951888897">Chrome ചരിത്രം</translation>
@@ -3745,7 +3761,6 @@
 <translation id="6680650203439190394">റേറ്റ് ചെയ്യുക</translation>
 <translation id="6681668084120808868">ഫോട്ടോ എടുക്കുക</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" അൺഇൻസ്‌റ്റാൾ ചെയ്യുന്നതാണ്.</translation>
-<translation id="6685083257944113180"><ph name="SINK_NAME" />, <ph name="SINK_STATUS" /> എന്നിവ നിര്‍ത്തുക</translation>
 <translation id="668599234725812620">Google Play തുറക്കുക</translation>
 <translation id="6686490380836145850">വലത്തേക്കുള്ള ടാബുകള്‍ അടയ്ക്കുക</translation>
 <translation id="6686817083349815241">നിങ്ങളുടെ പാസ്‌വേഡ് സംരക്ഷിക്കുക</translation>
@@ -3853,6 +3868,7 @@
 <translation id="6845038076637626672">ചെറുതാക്കി തുറക്കുക</translation>
 <translation id="6845325883481699275">Chrome സുരക്ഷ മെച്ചപ്പെടുത്താൻ സഹായിക്കുക</translation>
 <translation id="6848388270925200958">ഇപ്പോൾ, ഈ ഉപകരണത്തിൽ മാത്രം ഉപയോഗിക്കാനാവുന്ന ചില കാർഡുകൾ നിങ്ങൾക്കുണ്ട്</translation>
+<translation id="6850286078059909152">ടെക്‌സ്‌റ്റ് വർണ്ണം</translation>
 <translation id="6851497530878285708">ആപ്പ് പ്രവർത്തനക്ഷമമാക്കി</translation>
 <translation id="6853388645642883916">അപ്‌ഡേറ്റർ പ്രവർത്തിക്കുന്നില്ല</translation>
 <translation id="68541483639528434">മറ്റ് ടാബുകള്‍ അടയ്ക്കുക</translation>
@@ -3902,7 +3918,6 @@
 <translation id="6923132443355966645">സ്ക്രോൾ ചെയ്യുക / ക്ലിക്ക് ചെയ്യുക</translation>
 <translation id="6923633482430812883">പങ്കിടൽ മൗണ്ട് ചെയ്യുന്നതിൽ പിശക്. നിങ്ങൾ കണക്‌റ്റ് ചെയ്യുന്ന ഫയൽ സെർവർ SMBv2 അല്ലെങ്കിൽ അതിന് ശേഷമുള്ളത് പിന്തുണയ്‌ക്കുന്നു എന്ന് പരിശോധിക്കുക.</translation>
 <translation id="6930036377490597025">ബാഹ്യ സുരക്ഷാ കീ അല്ലെങ്കിൽ അന്തർനിർ‌മ്മിത സെൻസർ</translation>
-<translation id="6930242544192836755">സമയ ദൈർഘ്യം</translation>
 <translation id="693807610556624488">എഴുതൽ പ്രവർത്തനം ഇനി പറയുന്നതിലേക്കുള്ള ആട്രിബ്യൂട്ടിന്‍റെ പരമാവധി ദൈർഘ്യം കവിയുന്നു : "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">നിങ്ങളുടെ സര്‍ട്ടിഫിക്കറ്റ് ഉപയോഗിച്ച് <ph name="HOST_NAME" /> എന്നതിലേക്ക് പ്രാമാണീകരിക്കുന്നതിന് ദയവായി <ph name="TOKEN_NAME" /> എന്നതില്‍ പ്രവേശിക്കുക.</translation>
 <translation id="6943176775188458830">പ്രിന്റിംഗ്‌ റദ്ദാക്കുക</translation>
@@ -3916,6 +3931,7 @@
 <translation id="6951153907720526401">പേയ്‌മെന്റ് ഹാൻഡ്‌ലറുകൾ</translation>
 <translation id="6951663584153258142">ഈ ഉപകരണം അപ്‌ഡേറ്റ് ചെയ്യാൻ നിങ്ങളുടെ ഓർഗനൈസേഷൻ ആവശ്യപ്പെടുന്നു</translation>
 <translation id="6953878494808481632">അനുബന്ധ വിവരം</translation>
+<translation id="6953916367503892689">{0,plural, =1{ഫയൽ: <ph name="FILES" />}other{ഫയലുകൾ: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">പോപ്പ്‌അപ്പ് പരിശോധിക്കുക</translation>
 <translation id="6957044667612803194">പിൻ നമ്പറുകളെ ഈ സുരക്ഷാ കീ പിന്തുണയ്ക്കുന്നില്ല</translation>
 <translation id="6957231940976260713">സേവനത്തിന്‍റെ പേര്</translation>
@@ -4128,7 +4144,6 @@
 <translation id="7254554697254365959">ഈ പേജ് വിവർത്തനം ചെയ്യാനായില്ല.</translation>
 <translation id="7254951428499890870">നിങ്ങൾക്ക് "<ph name="APP_NAME" />" ഡയഗണോസ്റ്റിക്‌ മോഡിൽ ലോഞ്ച് ചെയ്യണമെന്ന് തീർച്ചയാണോ?</translation>
 <translation id="7255002516883565667">ഇപ്പോൾ, ഈ ഉപകരണത്തിൽ മാത്രം ഉപയോഗിക്കാനാവുന്ന കാർഡ് നിങ്ങൾക്കുണ്ട്</translation>
-<translation id="7255220508626648026">കാസ്റ്റുചെയ്യുന്നു: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">റീസെറ്റ് സ്ഥിരീകരിക്കാൻ വീണ്ടും നിങ്ങളുടെ സുരക്ഷാ കീ സ്‌പർശിക്കുക. പിൻ ഉൾപ്പെടെ സുരക്ഷാ കീയിൽ സംഭരിച്ചിരിക്കുന്ന എല്ലാ വിവരങ്ങളും മായ്‌ക്കപ്പെടും.</translation>
 <translation id="7255935316994522020">ബാധകമാക്കുക</translation>
 <translation id="7256069762010468647">സൈറ്റ് നിങ്ങളുടെ ക്യാമറ ഉപയോഗിക്കുന്നു</translation>
@@ -4262,6 +4277,7 @@
 <translation id="7456142309650173560">ഡെവലപ്പർ</translation>
 <translation id="7456847797759667638">സ്ഥാനം തുറക്കുക...</translation>
 <translation id="7458168200501453431">Google തിരയലിൽ ഉപയോഗിക്കുന്ന അതേ സ്‌പെൽ ചെക്കർ ഉപയോഗിക്കുന്നു. നിങ്ങൾ ബ്രൗസറിൽ ടൈപ്പ് ചെയ്യുന്ന ടെക്‌സ്‌റ്റ് Google-ന് അയയ്ക്കുന്നു.</translation>
+<translation id="7460045493116006516">നിങ്ങൾ നിലവിൽ ഇൻസ്‌റ്റാൾ ചെയ്‌തിരിക്കുന്ന തീം</translation>
 <translation id="7461924472993315131">പിൻ ചെയ്യുക</translation>
 <translation id="746216226901520237">അടുത്ത തവണ നിങ്ങളുടെ ഫോൺ <ph name="DEVICE_TYPE" /> അൺലോക്ക് ചെയ്യും. Smart Lock ക്രമീകരണത്തിൽ ഓഫാക്കാം.</translation>
 <translation id="7463006580194749499">വ്യക്തിയെ ചേർക്കുക</translation>
@@ -4321,6 +4337,7 @@
 <translation id="7554791636758816595">പുതിയ ടാബ്</translation>
 <translation id="7556033326131260574">Smart Lock-ന് നിങ്ങളുടെ അക്കൗണ്ട് പരിശോധിച്ചുറപ്പിക്കാനായില്ല. പ്രവേശിക്കുന്നതിന് പാസ്‌വേഡ് നൽകുക.</translation>
 <translation id="7556242789364317684">നിർഭാഗ്യവശാൽ, <ph name="SHORT_PRODUCT_NAME" />-ന് നിങ്ങളുടെ ക്രമീകരണങ്ങൾ വീണ്ടെടുക്കാനായില്ല. പിശക് പരിഹരിക്കാൻ, പവർവാഷ് ഉപയോഗിച്ച് <ph name="SHORT_PRODUCT_NAME" /> നിങ്ങളുടെ ഉപകരണം റീസെറ്റ് ചെയ്യണം.</translation>
+<translation id="7559444627302317199">നിങ്ങളുടെ നെറ്റ്‌വർക്ക് കണക്ഷൻ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="7559719679815339381">കാത്തിരിക്കുക...കിയോസ്‌ക് അപ്ലിക്കേഷൻ അപ്‌ഡേറ്റ് ചെയ്യുന്ന പ്രോസസിലാണ്. USB സ്‌റ്റിക്ക് നീക്കംചെയ്യരുത്.</translation>
 <translation id="7561196759112975576">എല്ലായ്പ്പോഴും</translation>
 <translation id="7563991800558061108">ഈ പിശകിൽ നിന്നും വീണ്ടെടുക്കുന്നതിന്, നിങ്ങൾക്ക് സൈൻ-ഇൻ സ്‌ക്രീനിൽ നിന്ന് Google അക്കൗണ്ടിൽ
@@ -4563,7 +4580,6 @@
 <translation id="7887334752153342268">തനിപ്പകര്‍പ്പ്</translation>
 <translation id="7887864092952184874">Bluetooth മൗസ് ജോടിയാക്കി</translation>
 <translation id="7889565820482017512">ഡിസ്പ്ലേ വലുപ്പം</translation>
-<translation id="7889966925761734854">സീക്ക്</translation>
 <translation id="7893008570150657497">നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ നിന്നും ഫോട്ടോകൾ, സംഗീതം, മറ്റ് മീഡിയകൾ എന്നിവ ആക്‌സസ് ചെയ്യുക</translation>
 <translation id="7893153962594818789"><ph name="DEVICE_TYPE" /> ഉപകരണത്തിൽ Bluetooth ഓഫാണ്. നിങ്ങളുടെ പാസ്‌വേഡ് നൽകുക, ശേഷം Bluetooth ഓണാക്കുക.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (സ്ഥിരസ്ഥിതി)</translation>
@@ -4571,7 +4587,6 @@
 <translation id="7898627924844766532">ടൂൾബാറിൽ സൂക്ഷിക്കുക</translation>
 <translation id="7898725031477653577">എല്ലായ്പ്പോഴും വിവർത്തനം ചെയ്യുക</translation>
 <translation id="790040513076446191">സ്വകാര്യത സംബന്ധിയായ ക്രമീകരണങ്ങൾ കൈകാര്യം ചെയ്യുക</translation>
-<translation id="7902874111237641165">സുഗമമായ മോഷൻ [ബീറ്റ]</translation>
 <translation id="7903345046358933331">പേജ് പ്രതികരിക്കുന്നില്ല. അത് പ്രതികരിക്കുന്നതുവരെ നിങ്ങൾക്ക് കാത്തിരിക്കാം അല്ലെങ്കിൽ അത് അടയ്‌ക്കുക.</translation>
 <translation id="7903742244674067440">ഈ സര്‍‌ട്ടിഫിക്കറ്റ് അതോറിറ്റികളെ തിരിച്ചറിയുന്ന സര്‍‌ട്ടിഫിക്കറ്റുകള്‍‌ നിങ്ങളുടെ ഫയലിലുണ്ട്</translation>
 <translation id="7903925330883316394">ഉപയുക്തത: <ph name="UTILITY_TYPE" /></translation>
@@ -4683,6 +4698,7 @@
 <translation id="8037117027592400564">സംശ്ലേഷിച്ച സംഭാഷണം ഉപയോഗിക്കുന്ന എല്ലാ ടെക്സ്റ്റ് സംഭാഷണവും റീഡുചെയ്യുക</translation>
 <translation id="8037357227543935929">ചോദിക്കുക (ഡിഫോൾട്ട്)</translation>
 <translation id="803771048473350947">ഫയല്‍</translation>
+<translation id="8042142357103597104">ടെക്‌സ്‌റ്റ് അതാര്യത</translation>
 <translation id="8044899503464538266">പതുക്കെ</translation>
 <translation id="8045253504249021590">Google ഡാഷ്‌ബോർഡ് വഴിയുള്ള സമന്വയിപ്പിക്കൽ നിർത്തി.</translation>
 <translation id="8045923671629973368">അപ്ലിക്കേഷൻ ഐഡി അല്ലെങ്കിൽ വെബ്സ്റ്റോർ URL നൽകുക</translation>
@@ -4719,7 +4735,6 @@
     <ph name="BEGIN_PARAGRAPH5" />നിങ്ങൾക്ക് ഈ സേവനം ക്രമീകരണത്തിൽ ഓഫാക്കാം.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">പിൻ നമ്പറുകൾ യോജിക്കുന്നില്ല</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> ഒരു വിപുലീകരണത്തിൽ നിന്നുള്ള പ്രോക്‌സി ക്രമീകരണം ഉപയോഗിക്കുന്നു</translation>
-<translation id="8099495042588009598">കൂടുതൽ അനുമതികൾ</translation>
 <translation id="8101987792947961127">അടുത്ത റീബൂട്ടിൽ പവർവാഷ് ആവശ്യമാണ്</translation>
 <translation id="8102159139658438129">കണക്‌റ്റ് ചെയ്‌തിരിക്കുന്ന ഫോണിനായുള്ള ഓപ്ഷനുകൾ കാണാൻ <ph name="LINK_BEGIN" />ക്രമീകരണം<ph name="LINK_END" /> എന്നതിലേക്ക് പോവുക</translation>
 <translation id="8104696615244072556">നിങ്ങളുടെ <ph name="IDS_SHORT_PRODUCT_NAME" /> ഉപകരണം പവർവാഷ് ചെയ്‌തശേഷം മുൻ പതിപ്പിലേക്ക് മടങ്ങുക.</translation>
@@ -4771,8 +4786,10 @@
     ഈ സൈറ്റ് ബ്ലോക്ക് ചെയ്യണമെന്ന് ഞാൻ കരുതുന്നില്ല!</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" /> അവതാറിലേക്ക് മാറുക</translation>
 <translation id="8184318863960255706">കൂടുതൽ‍ വിവരങ്ങള്‍</translation>
+<translation id="8184472985242519288">ഏകരൂപം</translation>
 <translation id="8185331656081929126">നെറ്റ്‌വർക്കിൽ പുതിയ പ്രിന്ററുകൾ കണ്ടെത്തുമ്പോൾ അറിയിപ്പുകൾ ദൃശ്യമാക്കുക</translation>
 <translation id="8186609076106987817">സെർവറിന് ഫയൽ കണ്ടെത്താൻ കഴിഞ്ഞില്ല.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> എന്നതിന് ചുവടെയുള്ള ഫോൾഡറിലെ എല്ലാ ഫയലുകളും വായിക്കാനാവും. ഈ ടാബ് തുറന്നിരിക്കുമ്പോൾ മാത്രമേ ഈ സൈറ്റിന് ഫോൾഡറിലെ മാറ്റങ്ങൾ കാണാനാവൂ.</translation>
 <translation id="8188389033983459049">നിങ്ങളുടെ ഉപകരണ ക്രമീകരണം പരിശോധിച്ച്, തുടരാനായി അത് ഓണാക്കുക</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> ലേക്ക് ബന്ധിപ്പിക്കുന്നു</translation>
 <translation id="8191230140820435481">നിങ്ങളുടെ അപ്ലിക്കേഷനുകൾ, വിപുലീകരണങ്ങൾ, തീമുകൾ എന്നിവ നിയന്ത്രിക്കുക</translation>
@@ -4876,7 +4893,6 @@
 <translation id="833986336429795709">ഈ ലിങ്ക് തുറക്കാൻ ഒരു ആപ്പ് തിരഞ്ഞെടുക്കുക</translation>
 <translation id="8342861492835240085">ഒരു ശേഖരം തിരഞ്ഞെടുക്കുക</translation>
 <translation id="834290227245955730">പിൻ അസാധുവാണ്. ശേഷിക്കുന്ന ശ്രമങ്ങൾ: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">മികച്ച വീഡിയോയോ ആനിമേഷനോ ലഭിക്കാൻ ഉയർന്ന ബാൻഡ്‌വിഡ്‌ത്ത് ഉപയോഗിക്കുക. വേഗത കുറഞ്ഞ കണക്ഷനുകൾ ഉപയോഗിക്കുന്ന മറ്റ് ആളുകൾക്ക് നിങ്ങളുടെ ഉള്ളടക്കം കാണാനായേക്കില്ല.</translation>
 <translation id="8351419472474436977">ഈ വിപുലീകരണം നിങ്ങളുടെ ക്രമീകരണങ്ങളെ നിയന്ത്രിക്കുന്നുണ്ട്, എന്നുവെച്ചാൽ നിങ്ങൾ ഓൺലൈനിൽ ചെയ്യുന്ന എല്ലാ പ്രവർത്തിയിലും മാറ്റം വരുത്താനും തകർക്കാനും രഹസ്യങ്ങൾ ചോർത്താനും കഴിയും. എന്തുകൊണ്ട് ഈ മാറ്റം സംഭവിച്ചത് എന്നതിനെക്കുറിച്ച് നിങ്ങൾക്കുറപ്പില്ലെങ്കിൽ, അത് നിങ്ങൾക്ക് ആവശ്യമില്ലാത്ത കാര്യമായിരിക്കാം.</translation>
 <translation id="8351630282875799764">ബാറ്ററി ചാർജ് ചെയ്യുന്നില്ല</translation>
 <translation id="835238322900896202">അൺ ഇൻസ്‌റ്റാൾ ചെയ്യുമ്പോൾ ഒരു പിശക് സംഭവിച്ചു. ടെർമിനൽ മുഖേന അൺ ഇൻസ്‌റ്റാൾ ചെയ്യുക.</translation>
@@ -4909,9 +4925,11 @@
 <translation id="839736845446313156">രജിസ്റ്റര്‍</translation>
 <translation id="8398877366907290961">എങ്ങനെയാണെങ്കിലും മുന്നോട്ട് പോകുക</translation>
 <translation id="8400146488506985033">ആളുകളെ മാനേജുചെയ്യുക</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> എന്നതിന് ഇനിപ്പറയുന്ന ഫോൾഡറിലെ ഫയലുകളിലേക്ക് നിങ്ങളുടെ മാറ്റങ്ങൾ നേരിട്ട് സംരക്ഷിക്കാനാവും. ഈ ടാബ് തുറന്നിരിക്കുമ്പോൾ മാത്രമേ ഈ സൈറ്റിന് മാറ്റങ്ങൾ സംരക്ഷിക്കാനാവൂ.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ആദ്യം ചോദിക്കുക (ശുപാർശ ചെയ്‌തത്)</translation>
 <translation id="8418445294933751433">&amp;ടാബായി കാണിക്കുക</translation>
+<translation id="8418905021510211421">നിങ്ങളുടെ ഉപകരണത്തിലെ ഒരു ഫോൾഡർ വായിക്കാൻ ഈ പേജിനെ അനുവദിച്ചിരിക്കുന്നു.</translation>
 <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' എന്നതിനുള്ള തിരയൽ ഫലം</translation>
 <translation id="8419368276599091549">നിങ്ങളുടെ <ph name="DEVICE_TYPE" />-ലേക്ക് സ്വാഗതം!</translation>
 <translation id="8425213833346101688">മാറ്റുക</translation>
@@ -4931,6 +4949,7 @@
 <translation id="8438566539970814960">തിരയലുകളും ബ്രൗസിംഗും മികച്ചതാക്കുക</translation>
 <translation id="8439506636278576865">പേജുകൾ ഈ ഭാഷയിലേക്ക് വിവർത്തനം ചെയ്യാനുള്ള ഓഫർ</translation>
 <translation id="8440630305826533614">Linux ആപ്പുകൾ</translation>
+<translation id="844241640324986723">നിങ്ങളുടെ സൈൻ ഇൻ ഡാറ്റ ഇല്ലാതാക്കാനായില്ല.</translation>
 <translation id="8443338615972234259">ഇപ്പോൾ നിങ്ങളുടെ മേൽനോട്ടത്തിലുള്ള ഉപയോക്താവിനായി പുതിയൊരു അക്കൗണ്ട് സൃഷ്ടിക്കുക.</translation>
 <translation id="8446884382197647889">കൂടുതലറിയുക</translation>
 <translation id="8447409163267621480">ഒന്നുകിൽ Ctrl അല്ലെങ്കിൽ, Alt ഉൾപ്പെടുത്തുക</translation>
@@ -4946,8 +4965,6 @@
 <translation id="8461914792118322307">പ്രോക്സി</translation>
 <translation id="8463215747450521436">ഈ മേൽനോട്ടത്തിലുള്ള ഉപയോക്താവിനെ മാനേജർ ഇല്ലാതാക്കുകയോ പ്രവർത്തനക്ഷരഹിതമാക്കുകയോ ചെയ്‌തിട്ടുണ്ടാവാം. ഈ ഉപയോക്താവായി സൈൻ ഇൻ ചെയ്യുന്നത് തുടരാൻ താത്പര്യപ്പെടുന്നുണ്ടെങ്കിൽ മാനേജറെ ബന്ധപ്പെടുക.</translation>
 <translation id="846374874681391779">ഡൗണ്‍ലോഡ് വിവരങ്ങളുടെ ബാര്‍</translation>
-<translation id="8463807869745732775">"&gt;
-    സൂക്ഷിച്ചിരിക്കുന്ന സുരക്ഷാ കീ സൈൻ ഇൻ ഡാറ്റ</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> പ്രവർത്തനരഹിതമാക്കി.</translation>
 <translation id="8464132254133862871">സേവനത്തിനായി ഈ ഉപയോക്തൃ അക്കൗണ്ട് യോഗ്യമല്ല.</translation>
 <translation id="8465252176946159372">അസാധുവാണ്</translation>
@@ -5013,6 +5030,7 @@
 <translation id="8569002732135253578">ഇപ്പോൾ <ph name="DOCUMENT_NAME" /> അച്ചടിക്കുന്നു</translation>
 <translation id="8569682776816196752">ലക്ഷ്യസ്ഥാനങ്ങൾ ഒന്നും കണ്ടെത്തിയില്ല</translation>
 <translation id="8571213806525832805">കഴിഞ്ഞ 4 ആഴ്ച</translation>
+<translation id="8573403125070227391">ഈ പരസ്യം നിങ്ങളുടെ ഉപകരണത്തിനായി വളരെയധികം ഉറവിടങ്ങൾ ഉപയോഗിക്കുന്നതിനാൽ Chrome അത് നീക്കം ചെയ്‌തു.</translation>
 <translation id="8574990355410201600">എല്ലായ്‌പ്പോഴും <ph name="HOST" /> എന്നതിൽ ‌ശബ്ദം അനുവദിക്കുക</translation>
 <translation id="8575286410928791436">പുറത്തുകടക്കുന്നതിന് <ph name="KEY_EQUIVALENT" /> അമര്‍ത്തിപ്പിടിക്കുക</translation>
 <translation id="8578639784464423491">99 അക്ഷരങ്ങളേക്കാൾ അധികമാവരുത്</translation>
@@ -5036,13 +5054,13 @@
 <translation id="8609465669617005112">മുകളിലേക്ക് നീക്കുക</translation>
 <translation id="8610103157987623234">തെറ്റായ ഫോർമാറ്റ്, വീണ്ടും ശ്രമിക്കുക</translation>
 <translation id="8615618338313291042">ആള്‍മാറാട്ട ആപ്പ്: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">ഡ്രോപ്പ് ഷാഡോ</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">റോമിംഗ് നില</translation>
 <translation id="8620765578342452535">നെറ്റ്‌വർക്ക് കണക്ഷനുകൾ കോൺഫിഗർ ചെയ്യുക</translation>
 <translation id="8621866727807194849">നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ദോഷകരമായ സോഫ്‌റ്റ്‌വെയറുണ്ട്. Chrome, അത് നീക്കം ചെയ്യുകയും ക്രമീകരണം പുനഃസ്ഥാപിക്കുകയും വിപുലീകരണങ്ങൾ പ്രവർത്തനരഹിതമാക്കുകയും ചെയ്യുന്നു. നിങ്ങളുടെ ബ്രൗസറിനെ ഇത് വീണ്ടും സാധാരണ പ്രവർത്തന രീതിയിലാക്കും.</translation>
 <translation id="8621979332865976405">നിങ്ങളുടെ സ്‌ക്രീൻ പൂർണ്ണമായും പങ്കിടുക</translation>
 <translation id="862542460444371744">&amp;വിപുലീകരണങ്ങള്‍</translation>
-<translation id="8627151598708688654">ഉറവിടം തിരഞ്ഞെടുക്കുക</translation>
 <translation id="862727964348362408">താൽക്കാലികമായി നിർത്തി</translation>
 <translation id="862750493060684461">CSS കാഷേ</translation>
 <translation id="8627795981664801467">കണക്ഷനുകള്‍ മാത്രം സുരക്ഷിതമാക്കുക</translation>
@@ -5096,6 +5114,7 @@
 <translation id="8688579245973331962">നിങ്ങളുടെ പേര് കണ്ടില്ലേ?</translation>
 <translation id="8688591111840995413">പാസ്‌വേഡ് മോശമാണ്</translation>
 <translation id="8688672835843460752">ലഭ്യമാണ്</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;സ്ഥാനം തുറക്കുക...</translation>
 <translation id="869884720829132584">അപ്ലിക്കേഷനുക‌ള്‍‌ മെനു</translation>
 <translation id="869891660844655955">കാലഹരണപ്പെടല്‍‌ തീയതി</translation>
@@ -5258,6 +5277,7 @@
 <translation id="891365694296252935">ഉപയോഗവും പ്രശ്‌നനിർണ്ണയവുമായി ബന്ധപ്പെട്ട ഡാറ്റ അയയ്ക്കുക. പ്രശ്‌നനിർണ്ണയം, ഉപകരണം, ആപ്പ് ഉപയോഗം എന്നിവയുമായി ബന്ധപ്പെട്ട ഡാറ്റ, ഈ ഉപകരണം നിലവിൽ സ്വയമേവ Google-ന് അയയ്ക്കുന്നുണ്ട്. നിങ്ങളുടെ കുട്ടിയെ തിരിച്ചറിയാൻ ഇത് ഉപയോഗിക്കില്ല, സിസ്‌റ്റം, ആപ്പ് സ്ഥിരത, മറ്റ് മെച്ചപ്പെടുത്തൽ എന്നിവയ്ക്ക് സഹായിക്കുകയും ചെയ്യും. ചില സംഗ്രഹ ഡാറ്റ, Google ആപ്പുകളെയും Android ഡെവലപ്പർമാരെപ്പോലുള്ള പങ്കാളികളെയും സഹായിക്കുകയും ചെയ്യും. ഈ ക്രമീകരണം നടപ്പിലാക്കുന്നത് ഉടമയാണ്. കുട്ടിയുടെ അധിക വെബ്, ആപ്പ് ആക്‌റ്റിവിറ്റി ഓണാക്കിയിട്ടുണ്ടെങ്കിൽ, ഈ ഡാറ്റ അവരുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കപ്പെട്ടേക്കാം. <ph name="BEGIN_LINK1" />കൂടുതലറിയുക<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">നിർദ്ദേശം ലോഡുചെയ്യുന്നു</translation>
 <translation id="8916476537757519021">ആൾമാറാട്ട സബ്‌ഫ്രെയിം: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - എന്നതിനെ നിങ്ങളുടെ ഉപകരണത്തിലെ ഒരു ഫോൾഡർ വായിക്കാൻ അനുവദിച്ചിരിക്കുന്നു</translation>
 <translation id="8919275547519617350">നിങ്ങളുടെ എല്ലാ പാസ്‌വേഡുകളും മുഴുവൻ ഉപകരണങ്ങളിലും ലഭിക്കാൻ സൈൻ ഇൻ ചെയ്ത് സമന്വയിപ്പിക്കൽ ഓണാക്കുക.</translation>
 <translation id="8921366488406707015">നിങ്ങളുടെ സുരക്ഷാ കീ പരിശോധിച്ചുറപ്പിക്കുന്നു...</translation>
 <translation id="8922013791253848639">ഈ സൈറ്റിൽ എല്ലായ്‌പ്പോഴും പരസ്യങ്ങൾ അനുവദിക്കുക</translation>
@@ -5287,7 +5307,6 @@
 <translation id="8965037249707889821">പഴയ പാസ്‌വേഡ് നൽകുക</translation>
 <translation id="8966870118594285808">നിങ്ങൾ അബദ്ധത്തിൽ ഒരു ടാബ് അടച്ചിട്ടുണ്ടെങ്കിൽ അത് വീണ്ടും തുറക്കുക</translation>
 <translation id="8967866634928501045">കാണിക്കാനായി Alt Shift A അമർത്തുക</translation>
-<translation id="8970203673128054105">കാസ്‌റ്റ് മോഡ് ലിസ്‌റ്റ് കാണുക</translation>
 <translation id="89720367119469899">എസ്‌കേപ്പ്</translation>
 <translation id="8972513834460200407">ഫയർവാൾ Google സെർവറുകളിൽ നിന്ന് ഡൗൺലോഡുകൾ തടയുന്നില്ലെന്ന് ഉറപ്പുവരുത്താൻ, നിങ്ങളുടെ നെറ്റ്‌വർക്ക് അഡ്‌മിനിസ്‌ട്രേറ്ററുടെ സഹായം തേടുക.</translation>
 <translation id="8973557916016709913">സൂം ലെവൽ നീക്കംചെയ്യുക</translation>
@@ -5436,6 +5455,7 @@
 <translation id="9214520840402538427">ക്ഷമിക്കണം!  ഇൻസ്റ്റലേഷൻ സമയ-ആട്രിബ്യൂട്ടുകളുടെ സമാരംഭിക്കൽ കാലഹരണപ്പെട്ടു.  നിങ്ങളുടെ പിന്തുണാ പ്രതിനിധിയെ ബന്ധപ്പെടുക.</translation>
 <translation id="9214695392875603905">കപ്പ്‌കേക്ക്</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" ചേർത്തു</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> എന്നതിന് ഇനിപ്പറയുന്ന ഫയലിലേക്ക് നിങ്ങളുടെ മാറ്റങ്ങൾ നേരിട്ട് സംരക്ഷിക്കാനാവും. ഈ ടാബ് തുറന്നിരിക്കുമ്പോൾ മാത്രമേ ഈ സൈറ്റിന് മാറ്റങ്ങൾ സംരക്ഷിക്കാനാവൂ.</translation>
 <translation id="9218430445555521422">ഡിഫോൾട്ട് ആയി സജ്ജീകരിക്കുക</translation>
 <translation id="9219103736887031265">ചിത്രങ്ങൾ‌</translation>
 <translation id="9220525904950070496">അക്കൗണ്ട് നീക്കംചെയ്യൽ</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 9b3fe8b..dc87bb4b 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">व्हर्च्युअल मशीन सुरू करताना एरर आली. कृपया पुन्हा प्रयत्न करा.</translation>
 <translation id="1089439967362294234">पासवर्ड बदला</translation>
 <translation id="1090126737595388931">कोणतेही पार्श्वभूमी ॲप्लिकेशन चालत नाहीत</translation>
+<translation id="1090290614672149983">केलेले बदल मूळ फाइलमध्ये सेव्ह करायचे आहेत का?</translation>
 <translation id="1090918500949388876">तुमची स्क्रीन सुरू असताना कधीही "Ok Google" म्हणून तुमचा असिस्टंट ॲक्सेस करा</translation>
 <translation id="1091767800771861448">वगळण्यासाठी ESCAPE दाबा (केवळ अनधिकृत नसलेल्या बिल्डसाठी).</translation>
 <translation id="1093457606523402488">दृश्यमान नेटवर्क:</translation>
 <translation id="1094607894174825014">चुकीच्या ऑफसेटसह वाचा किंवा लिहा ऑपरेशनची यावर विनंती केली: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">साइन इन करण्‍यापूर्वी, <ph name="NETWORK_ID" /> नेटवर्क सक्रिय करण्‍यासाठी कृपया अतिथी म्हणून प्रवेश करा.</translation>
+<translation id="110029732810301672">या टॅबला मूळ फायली सेव्ह करण्याची अनुमती आहे.</translation>
 <translation id="1103523840287552314">नेहमी भाषांतर करा <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;थांबा</translation>
 <translation id="1110155001042129815">प्रतीक्षा करा</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">सनग्लासेस</translation>
 <translation id="1151917987301063366"><ph name="HOST" /> ला नेहमी सेन्सर ॲक्सेस करू द्या</translation>
 <translation id="1153356358378277386">जोडलेली डिव्हाइस</translation>
-<translation id="1156488781945104845">वर्तमान वेळ</translation>
 <translation id="1161575384898972166">कृपया क्लायंट प्रमाणपत्र एक्सपोर्ट करण्यासाठी <ph name="TOKEN_NAME" /> मध्ये साइन इन करा.</translation>
 <translation id="1163931534039071049">फ्रेम स्रोत &amp;पहा</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" /> साठी Smart Lock बंंद करायचे?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player स्टोरेज सेटिंग्ज</translation>
 <translation id="1274997165432133392">कुकीज आणि इतर साइट डेटा</translation>
 <translation id="127668050356036882">आपल्या सर्व विंडो बंद करा</translation>
-<translation id="1277908057200820621">डिव्हाइस सूची पहा</translation>
 <translation id="1280820357415527819">मोबाइल नेटवर्क शोधत आहे</translation>
 <translation id="1285320974508926690">या साइटचा कधीही भाषांतर करु नका</translation>
 <translation id="1285484354230578868">आपल्या Google ड्राइव्ह खात्यामध्ये डेटा संचयित करा</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">घरगुती नेटवर्क, रोमिंग नाही</translation>
 <translation id="1316136264406804862">शोधत आहे...</translation>
 <translation id="1316495628809031177">सिंक थांबवले आहे</translation>
+<translation id="1317637799698924700">तुमचे डॉकिंग स्टेशन हे USB केबल कंपॅटिबिल मोडमध्ये काम करेल.</translation>
 <translation id="1322046419516468189">सेव्ह केलेले पासवर्ड तुमच्या <ph name="SAVED_PASSWORDS_STORE" /> मध्ये पाहा आणि व्यवस्थापित करा</translation>
 <translation id="1326317727527857210">आपल्या इतर डिव्हाइसेसवरील तुमचे टॅब प्राप्त करण्यासाठी, Chrome मध्ये साइन इन करा.</translation>
 <translation id="1327074568633507428">Google क्लाउड प्रिंट वरील प्रिंटर</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="ENROLLMENT_DOMAIN" />ने तुमचा <ph name="BEGIN_LINK" />ब्राउझर व्यवस्थापित केला आहे<ph name="END_LINK" /></translation>
 <translation id="1366177842110999534">तुमच्या <ph name="DEVICE_TYPE" /> वर Linux टूल, संपादक आणि IDE रन करा. &lt;a target="_blank" href="<ph name="URL" />"&gt;अधिक जाणून घ्या&lt;/a&gt;</translation>
 <translation id="1367951781824006909">फाइल निवडा</translation>
+<translation id="1370749010280229230">डॉकशी कनेक्ट केलेल्या डिस्प्लेमध्ये समस्या आहे</translation>
 <translation id="1371301976177520732">तुमच्या सर्व डिव्हाइसवर तुमचे बुकमार्क, पासवर्ड, इतिहास आणि बरेच काही</translation>
 <translation id="1372841398847029212">तुमच्या खात्याशी सिंक करा</translation>
 <translation id="1374844444528092021">नेटवर्क "<ph name="NETWORK_NAME" />" द्वारे आवश्यक सर्टिफिकेट एकतर स्थापित झाले नाही किंवा यापुढे वैध नाही. कृपया एक नवीन सर्टिफिकेट मिळवा आणि पुन्हा कनेक्ट करण्याचा प्रयत्न करा.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">वेबपेज, एकल फाइल</translation>
 <translation id="1451917004835509682">पर्यवेक्षी व्यक्ती जोडा</translation>
 <translation id="1454223536435069390">स्क्रीनशॉट घ्या</translation>
+<translation id="1458243790901188746">{0,plural, =1{फोल्डर: <ph name="DIRECTORIES" />}other{फोल्डर: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">विस्तारांद्वारे जोडलेली शोध इंजिने</translation>
 <translation id="146000042969587795">ही फ्रेम अवरोधित केली होती कारण यात काही असुरक्षित आशय आहे.</translation>
 <translation id="146219525117638703">ONC स्थिती</translation>
@@ -443,6 +446,7 @@
 <translation id="1650371550981945235">इनपुट पर्याय दर्शवा</translation>
 <translation id="1651008383952180276">समान सांकेतिक पासफ्रेझ दोनदा एंटर करणे आवश्यक आहे</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Google क्लाउड प्रिंट वर प्रिंटर जोडा जेणेकरून तुम्ही कुठूनही प्रिंट करू शकता.}other{Google क्लाउड प्रिंट वर # प्रिंटर जोडा जेणेकरून तुम्ही कुठूनही प्रिंट करू शकता.}}</translation>
+<translation id="1656528038316521561">बॅकग्राउंडची अपारदर्शकता</translation>
 <translation id="1657406563541664238">वापर आकडेवारी आणि क्रॅश अहवाल आपोआप Google कडे पाठवून <ph name="PRODUCT_NAME" /> ला अधिक चांगले करण्यास मदत करा</translation>
 <translation id="1658424621194652532">हे पृष्ठ आपल्या मायक्रोफोनवर प्रवेश करत आहे.</translation>
 <translation id="1660204651932907780">साइटना ध्वनी प्ले करण्याची परवानगी द्या (शिफारस केलेले)</translation>
@@ -458,6 +462,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> ला तुमच्या सिक्युरिटी कीची निर्मिती आणि मॉडेल पहायचा आहे</translation>
 <translation id="1679068421605151609">डेव्हलपर टूल</translation>
 <translation id="1679806121152819234">VM प्लग-इन</translation>
+<translation id="1679810534535368772">तुम्हाला नक्की बाहेर पडायचे आहे का?</translation>
 <translation id="167983332380191032">व्यवस्थापन सेवेने HTTP एरर पाठवली.</translation>
 <translation id="1680849702532889074">तुमच्या Linux ॲप्लिकेशनच्या इंस्टॉलेशन दरम्यान एरर आली.</translation>
 <translation id="16815041330799488">क्लिपबोर्डवर कॉपी केलेला मजकूर आणि इमेज पाहण्याची अनुमती साइटना देऊ नका</translation>
@@ -509,6 +514,7 @@
 <translation id="1746402432151920942">संरक्षित मीडिया आयडेंटिफायर</translation>
 <translation id="175196451752279553">पु&amp;न्हा बंद टॅब उघडा</translation>
 <translation id="1753905327828125965">सर्वाधिक भेट दिलेले</translation>
+<translation id="1755601632425835748">मजकुराचा आकार</translation>
 <translation id="1756681705074952506">इनपुट पद्धत</translation>
 <translation id="1757301747492736405">अनइंस्टॉल बाकी</translation>
 <translation id="175772926354468439">थीम सुरू करा</translation>
@@ -628,6 +634,7 @@
 <translation id="1918141783557917887">&amp;जरा लहान</translation>
 <translation id="1919345977826869612">जाहिराती</translation>
 <translation id="1919814239594435008">सॅंडबॉक्स न केलेल्या प्लग-इनला अनुमती आहे</translation>
+<translation id="1920390473494685033">संपर्क</translation>
 <translation id="1921050530041573580">तुमचा फोन Messages शी पेअर करा</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" /> मध्ये Google स्‍मार्ट मिळवा</translation>
@@ -784,6 +791,7 @@
 <translation id="2177950615300672361">गुप्त टॅब: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> वरील <ph name="PEPPER_PLUGIN_NAME" /> ला तुमचा काँप्युटर अ‍ॅक्सेस करायचा आहे</translation>
 <translation id="2178614541317717477">CA तडजोड</translation>
+<translation id="2179849162388791084">तुमच्या सिक्युरिटी कीमधून साइन इन डेटा गोळा करता आला नाही.</translation>
 <translation id="218070003709087997">किती प्रती प्रिंट करायच्या ते सूचित करण्यासाठी संख्या वापरा (1 ते 999).</translation>
 <translation id="2184515124301515068">जेव्हा साइट आवाज प्ले करेल तेव्हा Chrome ला निवड करू दे (शिफारस केलेले)</translation>
 <translation id="2187895286714876935">सर्व्हर सर्टिफिकेट आयात एरर</translation>
@@ -862,7 +870,6 @@
 <translation id="2277255602909579701">सर्व कुकीज आणि साइट डेटा</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 आयटम कॉपी केला}other{# आयटम कॉपी केले}}</translation>
 <translation id="2278562042389100163">ब्राउझर विंडो उघडा</translation>
-<translation id="2279874276457403668">एका वेळी केवळ एक सेशन तयार केले जाऊ शकते.</translation>
 <translation id="2280486287150724112">उजवा समास</translation>
 <translation id="2282146716419988068">GPU प्रक्रिया</translation>
 <translation id="2282155092769082568">स्वयंकॉन्फिगरेशन URL:</translation>
@@ -915,7 +922,6 @@
 <translation id="2352810082280059586">लॉक स्‍क्रीन नोट <ph name="LOCK_SCREEN_APP_NAME" /> वर आपोआप सेव्ह केल्या जातात. तुमची सर्वात अलीकडील नोट लॉक स्‍क्रीनवर राहील.</translation>
 <translation id="2353297238722298836">कॅमेरा आणि मायक्रोफोनला अनुमती आहे</translation>
 <translation id="2356070529366658676">विचारा</translation>
-<translation id="2357949918965361754">तुम्ही या वैशिष्ट्याचा वापर Chrome वरील आशय तुमच्या टीव्ही वर किंवा इतर डिव्हाइसेसवर डिस्प्ले करण्यासाठी करू शकता.</translation>
 <translation id="2359345697448000899">टूल मेनूमध्‍ये विस्तारांवर क्लिक करुन तुमचे विस्तार व्यवस्थापित करा.</translation>
 <translation id="2359808026110333948">सुरू ठेवा</translation>
 <translation id="236117173274098341">ऑप्टिमाइझ करा</translation>
@@ -964,6 +970,7 @@
 <translation id="2436720498717686157">तुमच्या संस्थेला या डिव्हाइसवर लगेच अपडेट करण्याची आवश्यकता आहे</translation>
 <translation id="2439545803278355377">तुमचा नवीन पिन एंटर करा. पिन किमान चार वर्णांचा असणे आवश्यक आहे आणि त्यामध्ये अक्षरे, अंक आणि इतर वर्ण असू शकतात.</translation>
 <translation id="2440604414813129000">स्त्रो&amp;त पाहा</translation>
+<translation id="2442916515643169563">मजकुराची शॅडो</translation>
 <translation id="2444119669991608829">पेज <ph name="LANGUAGE" /> मध्ये नाही का ?</translation>
 <translation id="2445081178310039857">एक्स्टेंशन मूळ डिरेक्टरी आवश्यक आहे.</translation>
 <translation id="2445484935443597917">नवीन प्रोफाइल तयार करा</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">नंतर नाही</translation>
 <translation id="2739191690716947896">डीबग</translation>
 <translation id="2739240477418971307">तुमच्या अॅक्सेसिबिलिटी सेटिंग्ज बदला</translation>
+<translation id="274029851662193272">डिप्रेस्ड</translation>
 <translation id="2740393541869613458">पर्यवेक्षित वापरकर्त्याने भेट दिलेल्या वेबसाइटचे पुनरावलोकन करा आणि</translation>
 <translation id="2741912629735277980">लॉग इन स्क्रीनवर UI प्रदर्शित करा</translation>
 <translation id="274290345632688601">Linux अ‍ॅप्स आणि फायली रिस्टोअर करत आहे</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">शॉर्टकट आधीच अस्तित्वात आहे</translation>
 <translation id="2807517655263062534">तुम्ही डाउनलोड केलेल्या फायली येथे दिसतात</translation>
 <translation id="2809586584051668049">आणि <ph name="NUMBER_ADDITIONAL_DISABLED" /> अधिक</translation>
+<translation id="2812049959647166806">थंडरबोल्टला सपोर्ट करत नाही</translation>
 <translation id="2812944337881233323">साइन आउट केल्यानंतर पुन्हा साइन इन करून पहा.</translation>
 <translation id="2812989263793994277">कोणत्याही इमेज दर्शवू नका</translation>
 <translation id="281390819046738856">विनंतीवर साइन करता आले नाही.</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">प्रदाता</translation>
 <translation id="2844169650293029770">USB-C डिव्‍हाइस (डाव्‍या बाजूचे पुढील पोर्ट)</translation>
 <translation id="2845382757467349449">नेहमी बुकमार्क बार दर्शवा</translation>
-<translation id="2847759467426165163">यावर कास्ट करा</translation>
 <translation id="284805635805850872">धोकादायक सॉफ्टवेअर काढून टाकायचे का?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">साफ करता आले नाही</translation>
@@ -1296,6 +1304,7 @@
     सर्व्हर संदेश: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">डिरेक्टरीनुसार मीडिया गॅलरी जोडा</translation>
 <translation id="2910318910161511225">नेटवर्कशी कनेक्ट करा आणि पुन्हा प्रयत्न करा</translation>
+<translation id="2910518940971897750">मूळ फाइलमध्ये सेव्ह करा</translation>
 <translation id="2913331724188855103">कुकी डेटा सेव्ह करणे आणि वाचण्यासाठी साइटना अनुमती द्या (शिफारस केलेले)</translation>
 <translation id="2915102088417824677">ॲक्टिव्हिटी लॉग पहा</translation>
 <translation id="2915873080513663243">ऑटो-स्कॅन</translation>
@@ -1360,12 +1369,14 @@
 <translation id="3013291976881901233">MIDI डिव्हाइस</translation>
 <translation id="3015639418649705390">आता पुन्हा लाँच करा</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> आपोआप कॉन्फिगर होऊ शकत नाही. कृपया प्रगत प्रिंटर तपशील नमूद करा.</translation>
+<translation id="3016381065346027039">कोणत्याही लॉग नोंदी नाहीत</translation>
 <translation id="3016641847947582299">घटक अपडेट केला</translation>
 <translation id="3016780570757425217">तुमचे स्थान जाणून घ्या</translation>
 <translation id="3017079585324758401">बॅकग्राउंड</translation>
 <translation id="3020183492814296499">शॉर्टकट</translation>
 <translation id="3020990233660977256">सिरिअल नंबर: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">फुलपाखरू</translation>
+<translation id="3021408157810018664">केलेले बदल मूळ फायलींमध्ये सेव्ह करायचे आहेत का?</translation>
 <translation id="3021426244864538700">या साइटचा डेटा ॲक्सेस करत आहे</translation>
 <translation id="3021678814754966447">फ्रेम स्रोत &amp;पहा</translation>
 <translation id="3022978424994383087">ते समजू शकले नाही.</translation>
@@ -1458,6 +1469,7 @@
 <translation id="3170072451822350649">तुम्ही साइन इन वगळुन <ph name="LINK_START" />अतिथी म्हणून ब्राउझ<ph name="LINK_END" /> देखील करू शकता.</translation>
 <translation id="3172045848207518317">साइट व्हिडिओ इनपुट ॲक्सेस करत आहे</translation>
 <translation id="3177909033752230686">पृष्ठ भाषा:</translation>
+<translation id="3179982752812949580">मजकुराचा फाँट</translation>
 <translation id="3181954750937456830">सुरक्षित ब्राउझिंग (तुम्हाला आणि तुमच्या डिव्हाइसना धोकादायक साइटपासून सुरक्षित ठेवते)</translation>
 <translation id="3182749001423093222">स्पेल चेक</translation>
 <translation id="3183139917765991655">प्रोफाईल आयातकर्ता</translation>
@@ -1510,7 +1522,6 @@
 <translation id="3275778913554317645">विंडो म्हणून उघडा</translation>
 <translation id="3278001907972365362">तुमच्या Google खात्या(त्यां)कडे लक्ष देण्याची आवश्यकता आहे</translation>
 <translation id="3279230909244266691">या प्रक्रियेला काही मिनिटे लागू शकतात. व्हर्च्युअल मशीन सुरू करत आहे.</translation>
-<translation id="3279741024917655738">क्षेत्रे व्हिडिओ दाखवा</translation>
 <translation id="3280237271814976245">या फॉरमॅटमध्ये सेव्ह करा...</translation>
 <translation id="3280243678470289153">Chrome मध्ये रहा</translation>
 <translation id="3281892622610078515">क्वारंटाइन करण्यासाठी फाइल आणि प्रोग्राम:</translation>
@@ -1532,7 +1543,7 @@
 <translation id="3303855915957856445">कोणतेही शोध परिणाम आढळले नाहीत</translation>
 <translation id="3305389145870741612">स्वरूपन प्रक्रियेस दोन सेकंद लागू शकतात. कृपया प्रतीक्षा करा.</translation>
 <translation id="3305661444342691068">पूर्वावलोकनात पीडीएफ उघडा</translation>
-<translation id="3306684685104080068">Google Hangouts सारख्या क्लाउड-आधारित सेवांवर कास्ट करणे सक्षम करा.</translation>
+<translation id="3307871847038842490">या पेजला मूळ फायली सेव्ह करण्याची अनुमती आहे.</translation>
 <translation id="3308006649705061278">संस्थात्मक एकक (OU)</translation>
 <translation id="3308116878371095290">हे पृष्ठ कुकीज सेट करण्यापासून प्रतिबंधित केलेले होते.</translation>
 <translation id="3308134619352333507">बटण लपवा</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">खाते सेटअप रद्द करायचा?</translation>
 <translation id="3464012987031883895">साइट ऑडिओ इनपुट ॲक्सेस करत आहे</translation>
 <translation id="346431825526753">हे मुलांसाठी असलेले खाते <ph name="CUSTODIAN_EMAIL" /> द्वारे व्‍यवस्‍थापित केले.</translation>
-<translation id="3468275649641751422">व्हिडिओ किंवा ऑडिओ फाइल स्ट्रीम करा</translation>
 <translation id="3468999815377931311">Android फोन</translation>
 <translation id="3470442499439619530">हा वापरकर्ता काढून टाका</translation>
 <translation id="3473479545200714844">स्क्रीन भिंग</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">झूम कमी करा</translation>
 <translation id="3497560059572256875">डूडल शेअर करा</translation>
 <translation id="3505030558724226696">डिव्‍हाइस अॅक्सेस रद्द करा</translation>
+<translation id="3505635633742443645">USB केबल व्हिडिओ आउटपुटसाठी वापरली जात असेल तेव्हा तुमच्या डॉकचा HDMI पोर्ट वापरला जाऊ शकत नाही. कृपया डिस्प्लेपैकी एका डिस्प्लेसाठी वेगळा पोर्ट वापरा.</translation>
 <translation id="3507421388498836150">"<ph name="EXTENSION_NAME" />" साठी वर्तमान परवानग्या</translation>
 <translation id="3507888235492474624">ब्ल्यूटूथ डिव्हाइस पुन्हा स्कॅन करा</translation>
 <translation id="3508920295779105875">अन्य फोल्डर निवडा...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">यशस्वीरित्या इंस्टॉल केला</translation>
 <translation id="3578594933904494462">या टॅबचा आशय शेअर केली जात आहे.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; आपल्‍या मालकीच्या गटासह &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; प्रिंटर शेअर करू इच्‍छितो: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. तुम्ही स्‍वीकार केल्यास, सर्व गट सदस्य प्रिंटरवर प्रिंट करण्‍यास सक्षम असतील.</translation>
+<translation id="357889014807611375">मर्यादित वाय-फाय</translation>
 <translation id="3584169441612580296">तुमच्या कॉंप्युटरवरील फोटो, संगीत आणि अन्य मीडिया वाचा आणि बदला</translation>
 <translation id="3587482841069643663">सर्व</translation>
 <translation id="358796204584394954">जोडण्यासाठी "<ph name="DEVICE_NAME" />" वर हा कोड टाइप करा:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">एंटर करा</translation>
 <translation id="3593965109698325041">सर्टिफिकेट नाव प्रतिबंध</translation>
 <translation id="3596235046596950091">क्लाउड सेवा सुरू करा</translation>
+<translation id="3599221874935822507">रेझ्ड</translation>
 <translation id="3599863153486145794">साइन-इन केलेल्या सर्व डिव्हाइसमधून इतिहास साफ करते. तुमच्या Google खात्यामध्ये <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> वर कदाचित ब्राउझिंगचे इतर फॉर्म असतील.</translation>
 <translation id="3600051066689725006">वेब विनंती माहिती</translation>
 <translation id="3600792891314830896">ध्वनी प्ले करणाऱ्या साइट म्यूट करा</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; द्वारे डाउनलोड केले</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> दर्शवा</translation>
 <translation id="3613422051106148727">&amp;नवीन टॅबमध्ये उघडा</translation>
+<translation id="3615073365085224194">तुमच्या बोटाने फिंगरप्रिंट सेन्सरला स्पर्श करा</translation>
 <translation id="3616113530831147358">ऑडिओ</translation>
 <translation id="3616741288025931835">ब्राउझिंग डेटा &amp;साफ करा...</translation>
 <translation id="3617891479562106823">बॅकग्राउंड अनुपलब्ध आहेत. नंतर पुन्हा प्रयत्न करा.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">होम पेज</translation>
 <translation id="3720996970802414353">तरीही स्विच करा</translation>
 <translation id="3722108462506185496">व्हर्च्युअल मशीन सेवा सुरू करताना एरर आली. कृपया पुन्हा प्रयत्न करा.</translation>
-<translation id="3723158278575423087">Chromium मधील कास्ट अनुभवावर तुमचे स्वागत आहे!</translation>
 <translation id="3725367690636977613">पेज</translation>
 <translation id="3726137731714254362">=येथून फोल्डर हलवल्याने शेअरिंग थांबेल परंतु फायली हटवल्या जाणार नाहीत.</translation>
 <translation id="3727148787322499904">हे सेटिंग बदलल्याने सर्व शेअर केलेले नेटवर्क प्रभावित होतील</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">तपशीलवार बिल्ड माहिती</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{एका USB डिव्हाइससह संवाद प्रस्थापित करा}other{# USB डिव्हाइसेससह संवाद प्रस्थापित करा}}</translation>
 <translation id="3765246971671567135">ऑफलाइन डेमो मोड धोरण रीड करता आले नाही.</translation>
-<translation id="3766223500670287046">रिमोट स्क्रीन</translation>
 <translation id="3768037234834996183">तुमची प्राधान्ये संकालित करत आहे...</translation>
 <translation id="377050016711188788">आईस्क्रीम</translation>
 <translation id="3771294271822695279">व्हिडिओ फायली</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">उचला, नंतर पुन्हा स्पर्श करा</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: सिंक करणे थांबवले</translation>
-<translation id="3862134173397075045">Chrome मधील कास्ट अनुभवावर तुमचे स्वागत आहे!</translation>
 <translation id="3862693525629180217">बिल्ट-इन सेन्सर वापरून पडताळणी करा</translation>
 <translation id="3862788408946266506">'kiosk_only' मॅनिफेस्ट विशेषता असलेले अ‍ॅप Chrome OS कियोस्क मोडमध्ये इंस्टॉल केले जाणे आवश्यक आहे</translation>
 <translation id="3865414814144988605">रिझोल्युशन</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smart Lock फोन बदलला</translation>
 <translation id="3927932062596804919">नकार द्या</translation>
 <translation id="3930737994424905957">डिव्हाइस शोधत आहे</translation>
+<translation id="3930968231047618417">बॅकग्राउंडचा रंग</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> चा हटवलेला पासवर्ड रिस्‍टोअर करा</translation>
 <translation id="3936390757709632190">नवीन टॅबमध्ये ऑडिओ &amp;उघडा</translation>
 <translation id="3936925983113350642">तुम्ही निवडता तो पासवर्ड नंतर हे सर्टिफिकेट रिस्टोअर करण्यासाठी आवश्यक आहे. कृपया एखाद्या सुरक्षित स्थानावर त्याची नोंद ठेवा.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE मधून आयातित</translation>
 <translation id="3950820424414687140">साइन इन करा</translation>
+<translation id="3950828138786918475">या टॅबला तुमच्या डिव्हाइसवरील फोल्डर वाचण्याची अनुमती आहे.</translation>
 <translation id="3954354850384043518">प्रगतीपथावर</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">तुमच्याकडे नुकत्याच कॅप्चर केलेल्या कोणत्याही WebRTC कार्यक्रम नोंदी नाहीत.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">गणना करत आहे...</translation>
 <translation id="3975565978598857337">क्षेत्रासाठी सर्व्हरशी कनेक्ट करता आले नाही</translation>
 <translation id="397703832102027365">पूर्ण करीत आहे...</translation>
+<translation id="3977886311744775419">या नेटवर्क प्रकारावर आपोआप अपडेट डाउनलोड होत नाहीत पण तुम्ही मॅन्युअली अपडेट पाहू शकता.</translation>
 <translation id="3979395879372752341">नवीन एक्स्टेंशन जोडले (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> सुरू करा</translation>
 <translation id="3981760180856053153">अवैध सेव्ह प्रकार एंटर केले.</translation>
@@ -2151,6 +2165,7 @@
 <translation id="4194570336751258953">टॅप-टू-क्लिक सुरू करा</translation>
 <translation id="4195643157523330669">नवीन टॅबमध्ये उघडा</translation>
 <translation id="4195814663415092787">तुम्ही सोडले होते तिथून पुढे सुरु करा</translation>
+<translation id="4197940474316761015">तुम्ही केलेले बदल <ph name="ORIGIN" /> थेट खालील फायलींमध्ये सेव्ह करू शकते. फक्त हा टॅब उघडा असेल तेव्हा ही साइट बदल सेव्ह करू शकते.</translation>
 <translation id="4198146608511578238">तुमच्या Google असिस्टंटशी बोलण्यासाठी फक्त लाँचर आयकन दाबून ठेवा.</translation>
 <translation id="4200689466366162458">कस्टम शब्द</translation>
 <translation id="4200983522494130825">नवीन &amp;टॅब</translation>
@@ -2198,7 +2213,6 @@
 <translation id="4267953847983678297">मोबाइल नेटवर्कशी आपोआप कनेक्ट करा</translation>
 <translation id="4268025649754414643">की एनसिफरमेन्ट</translation>
 <translation id="4270393598798225102">आवृत्ती <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">कोणत्याही जुळण्या नाहीत</translation>
 <translation id="4275663329226226506">माध्यम</translation>
 <translation id="4275830172053184480">तुमचा डिव्हाइस रीस्टार्ट करा</translation>
 <translation id="4278101229438943600">तुमचा असिस्टंट तयार आहे</translation>
@@ -2347,6 +2361,7 @@
 <translation id="4533985347672295764">सीपीयू वेळ</translation>
 <translation id="4534661889221639075">पुन्हा प्रयत्न करा.</translation>
 <translation id="4535127706710932914">डीफॉल्ट प्रोफाइल</translation>
+<translation id="4535767533210902251">तुमच्या कीबोर्डवर सर्वात वर उजवीकडे फिंगरप्रिंट सेन्सर आहे. कोणत्याही बोटाने त्याला हळुवार स्पर्श करा.</translation>
 <translation id="4538684596480161368">नेहमी सॅन्डबॉक्स नसलेल्या प्लगिन <ph name="HOST" /> वर अवरोधित करा</translation>
 <translation id="4538792345715658285">एंटरप्राइज धोरणाद्वारे इंस्टॉल केले.</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" /> आणि <ph name="WEBSITE_2" /> वर तुमचा डेटा वाचा</translation>
@@ -2380,6 +2395,7 @@
 <translation id="457386861538956877">अधिक...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">ब्लूटूथ डिव्हाइस जोडा</translation>
+<translation id="4578012756826807359">तुमचा साइन इन डेटा यशस्वीरीत्या हटवण्यात आला आहे.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> कास्ट करण्यात अक्षम.</translation>
 <translation id="4581774856936278355">Linux रिस्टोअर करताना एरर आली</translation>
 <translation id="4582563038311694664">सर्व सेटिंग्ज रीसेट करा</translation>
@@ -2497,7 +2513,6 @@
 <translation id="4763830802490665879">बाहेर पडताना एकाधिक साइट्सवरील कुकीज साफ केल्या जातील.</translation>
 <translation id="4765582662863429759">Android Messages ला तुमच्या फोनवरून तुमच्या Chromebook मध्ये एसएमएस रीले करण्याची अनुमती देते</translation>
 <translation id="4768332406694066911">आपल्‍याकडे या संस्थांकडील प्रमाणपत्रे आहेत जी आपल्‍याला ओळखतात</translation>
-<translation id="4772404146526168240">दोन्ही स्क्रीन</translation>
 <translation id="4776146737004271126">Android सेटिंग्ज उघडा</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> साठी पासवर्ड</translation>
 <translation id="4777825441726637019">Play स्टोअर</translation>
@@ -2605,7 +2620,6 @@
 <translation id="4927846293686536410">आपल्या सर्व डिव्हाइसवर तुमचे बुकमार्क, इतिहास, पासवर्ड आणि इतर सेटिंग्ज मिळविण्‍यासाठी साइन इन करा. तुम्ही स्वयंचलितपणे आपल्‍या Google सेवांवर देखील साइन इन कराल.</translation>
 <translation id="4929386379796360314">गंतव्यस्थाने प्रिंट करा</translation>
 <translation id="4930714375720679147">सुरू करा</translation>
-<translation id="4931132176527519925">नेहमी मिररिंग वापरा</translation>
 <translation id="4932733599132424254">तारीख</translation>
 <translation id="4933484234309072027"><ph name="URL" /> वर एम्बेड केलेले</translation>
 <translation id="493571969993549666">पर्यवेक्षित वापरकर्ता जोडा</translation>
@@ -2645,6 +2659,7 @@
 <translation id="4992066212339426712">सशब्द करा</translation>
 <translation id="4992458225095111526">Powerwash ची पुष्टी करा</translation>
 <translation id="4992473555164495036">तुमच्या ॲडमिनिस्ट्रेटरने उपलब्ध इनपुट पद्धती मर्यादित केल्या आहेत.</translation>
+<translation id="4992866843815555470">तुमच्या डॉकमध्ये काही सुधारणा करण्याची आवश्यकता आहे. पंखा सुरू नसल्यास, तुमचे डॉक बंद होईल.</translation>
 <translation id="4992926179187649719">'Ok Google' सुरू करा</translation>
 <translation id="4994474651455208930">प्रोटोकॉलसाठी डीफॉल्ट हँडलर होण्यासाठी साइटना विचारण्याची परवानगी द्या</translation>
 <translation id="4994754230098574403">सेट अप करीत आहे</translation>
@@ -2692,7 +2707,7 @@
 <translation id="5072836811783999860">व्यवस्थापित बुकमार्क दर्शवा</translation>
 <translation id="5074318175948309511">नवीन सेटिंग्ज प्रभावी होण्यापूर्वी या पृष्ठास रीलोड करण्याची आवश्यकता असू शकते.</translation>
 <translation id="5075131525758602494">सिम पिन एंटर करा</translation>
-<translation id="507514548843781244">तुमच्या सिक्युरिटी की वर स्टोअर केला पाहा आणि मिटवा</translation>
+<translation id="507514548843781244">तुमच्या सिक्युरिटी कीवर स्टोअर केलेला साइन इन डेटा पाहा आणि मिटवा</translation>
 <translation id="5078638979202084724">सर्व टॅब बुकमार्क करा</translation>
 <translation id="5078796286268621944">चुकीचा पिन</translation>
 <translation id="5079950360618752063">सुचवलेला पासवर्ड वापरा</translation>
@@ -2783,7 +2798,6 @@
 <translation id="5233231016133573565">प्रक्रिया आयडी</translation>
 <translation id="5233638681132016545">नवीन टॅब</translation>
 <translation id="5233736638227740678">&amp;पेस्ट करा</translation>
-<translation id="5234764350956374838">डिसमिस करा</translation>
 <translation id="5235050375939235066">अॅप अनइंस्टॉल करायचे?</translation>
 <translation id="5235750401727657667">एखादा नवीन टॅब उघडताना दिसत असलेले पेज बदला</translation>
 <translation id="5238278114306905396">अ‍ॅप "<ph name="EXTENSION_NAME" />" स्वयंचलितपणे काढण्यात आला.</translation>
@@ -2848,6 +2862,7 @@
 <translation id="5319359161174645648">Google Chrome ची शिफारस करते</translation>
 <translation id="532247166573571973">सर्व्हर कदाचित आवाक्याबाहेर असू शकते. नंतर पुन्हा प्रयत्न करा.</translation>
 <translation id="5324780743567488672">तुमचे स्थान वापरून स्वयंचलितपणे टाइम झोन सेट करा</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> ला मूळ फायली सेव्ह करण्याची अनुमती आहे</translation>
 <translation id="5327248766486351172">नाव</translation>
 <translation id="5327570636534774768">हे डिव्हाइस वेगळ्या डोमेनकडून व्यवस्थापनासाठी मार्क केले गेले आहे. डेमो मोड सेट करण्याआधी त्या डोमेनवरून त्याचे अधिकार काढून घ्या.</translation>
 <translation id="532943162177641444">तुम्ही या डिव्हाइसने वापरू शकत असलेले मोबाइल हॉटस्पॉट सेट अप करण्यासाठी तुमच्या <ph name="PHONE_NAME" />वरील सूचनेवर टॅप करा.</translation>
@@ -2990,7 +3005,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> हे करू इच्छिते</translation>
 <translation id="5534304873398226603">फोटो किंवा व्हिडिओ टाकून द्या</translation>
 <translation id="5535941515421698170">या डिव्हाइस मधून तुमचा विद्यमान डेटा देखील हटवा</translation>
-<translation id="5537725057119320332">कास्ट करा</translation>
 <translation id="5539221284352502426">तुम्ही टाकलेला पासवर्ड सर्व्हरने नाकारला होता. संभाव्य कारणांमध्ये याचा समावेश आहे: पासवर्ड खूप लहान आहे. पासवर्डमध्ये संख्या किंवा आयकन असणे आवश्यक आहे. पासवर्ड आधीच्या पासवर्डपेक्षा वेगळा असणे आवश्यक आहे.</translation>
 <translation id="5541687815721799001">अ‍ॅप वापरा</translation>
 <translation id="5542132724887566711">प्रोफाइल</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">साइट ॲक्सेसबद्दल अधिक जाणून घ्या</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' साठी <ph name="RESULT_COUNT" /> परिणाम</translation>
 <translation id="6002458620803359783">प्राधान्य दिलेली व्हॉइस</translation>
-<translation id="6005695835120147974">मीडिया राउटर</translation>
 <translation id="6006484371116297560">क्लासिक</translation>
 <translation id="6007240208646052708">तुमच्या भाषेमध्ये व्हॉइस शोध उपलब्ध नाही.</translation>
 <translation id="6009781704028455063">बिल्ट-इन सेन्सर</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{आपल्या नेटवर्कवरील नवीन प्रिंटर}other{आपल्या नेटवर्कवरील नवीन प्रिंटर}}</translation>
 <translation id="6286708577777130801">सेव्ह केलेले पासवर्ड तपशील</translation>
 <translation id="6289452883081499048">Play सारख्या पर्सनलाइझ Google सेवा</translation>
-<translation id="6290556621549272952">तुम्ही या वैशिष्ट्याचा वापर Chromium वरील आशय तुमच्या टीव्ही वर किंवा इतर डिव्‍हाइसवर डिस्प्ले करण्यासाठी करू शकता.</translation>
 <translation id="6291949900244949761">साइटला केव्हा USB डिव्हाइस अॅक्सेस करायचे आहेत हे विचारा (शिफारस केलेले)</translation>
 <translation id="6291953229176937411">फाइंडर मध्ये &amp;दर्शवा</translation>
 <translation id="6295158916970320988">सर्व साइट</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />सिस्टम माहिती<ph name="END_LINK1" /> आणि <ph name="BEGIN_LINK2" />मेट्रिक्स<ph name="END_LINK2" /> पाठवा</translation>
 <translation id="6396988158856674517">मोशन सेन्सर वापरण्यापासून साइटना ब्लॉक करा</translation>
 <translation id="6397094776139756010">सिंक आणि पर्सनलायझेशन पर्याय</translation>
+<translation id="6397449385184089588">तुम्ही केलेले बदल <ph name="ORIGIN" /> थेट खालील फोल्डरमध्ये असलेल्या फायलींमध्ये सेव्ह करू शकेल. फक्त हा टॅब उघडा असेल तेव्हा ही साइट बदल सेव्ह करू शकते.</translation>
 <translation id="6398715114293939307">Google Play स्टोअर काढून टाका</translation>
 <translation id="6398765197997659313">पूर्ण स्क्रीनमधून निर्गमन करा</translation>
 <translation id="6399774419735315745">गुप्तचर</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">विशिष्ट साइटवर</translation>
 <translation id="6455894534188563617">नवीन फोल्‍डर</translation>
 <translation id="6456394469623773452">फाइन</translation>
+<translation id="6456955391422100996">जाहिरात काढून टाकली आहे.</translation>
 <translation id="645705751491738698">JavaScript अवरोधित करणे सुरू ठेवा</translation>
 <translation id="6458701200018867744">अपलोड करता आले नाही (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">शोधण्यासाठी निवड वापरा</translation>
 <translation id="6459799433792303855">ॲक्टिव्ह विंडो दुसऱ्या डिस्प्लेवर हलवली आहे.</translation>
 <translation id="6460601847208524483">पुढील शोधा</translation>
+<translation id="6461170143930046705">नेटवर्क शोधत आहे...</translation>
 <translation id="6463795194797719782">&amp;संपादन</translation>
 <translation id="6466988389784393586">सर्व बुकमार्क &amp;उघडा</translation>
 <translation id="6467304607960172345">फुलस्क्रीन व्हिडिओ ऑप्टिमाइझ करा</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">तुम्ही <ph name="NETWORK_TYPE" /> नेटवर्कशी कनेक्ट केले आहे.</translation>
 <translation id="6527303717912515753">शेअर करा</translation>
 <translation id="6528513914570774834">या डिव्हाइसच्या इतर वापरकर्त्यांना हे नेटवर्क वापरण्याची परवानगी द्या</translation>
 <translation id="652948702951888897">Chrome इतिहास</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">रेट करा</translation>
 <translation id="6681668084120808868">फोटो घ्या</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" अनइंस्टॉल केला जाईल.</translation>
-<translation id="6685083257944113180"><ph name="SINK_NAME" />, <ph name="SINK_STATUS" /> थांबवा</translation>
 <translation id="668599234725812620">Google Play उघडा</translation>
 <translation id="6686490380836145850">उजवीकडील टॅब बंद करा</translation>
 <translation id="6686817083349815241">तुमचा पासवर्ड सेव्ह करा</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">वाढवलेले उघडा</translation>
 <translation id="6845325883481699275">Chrome सुरक्षेमध्ये सुधारणा करण्यात मदत करा</translation>
 <translation id="6848388270925200958">सध्या तुमच्याकडे काही कार्डे आहेत जी फक्त या डिव्हाइसवर वापरली जाऊ शकतात</translation>
+<translation id="6850286078059909152">मजकुराचा रंग</translation>
 <translation id="6851497530878285708">ॲप सक्रीय केले</translation>
 <translation id="6853388645642883916">अद्यतनकर्ता निष्क्रिय आहे</translation>
 <translation id="68541483639528434">अन्य टॅब बंद करा</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">स्क्रोल करा / क्लिक करा</translation>
 <translation id="6923633482430812883">शेअर माउंट करताना एरर आली. कृपया तुम्ही कनेक्ट करत असलेला फाइल सर्व्हर SMBv2 किंवा त्यानंतरच्या आवृत्तीला सपोर्ट करतो की नाही हे तपासा.</translation>
 <translation id="6930036377490597025">बाह्य सिक्युरिटी की किंवा बिल्ट-इन सेन्सर</translation>
-<translation id="6930242544192836755">कालावधी</translation>
 <translation id="693807610556624488">लिहा ऑपरेशन यावर विशेषतांची कमाल लांबी ओलांडते: " <ph name="DEVICE_NAME" /> ".</translation>
 <translation id="6941937518557314510">कृपया तुमच्या सर्टिफिकेटसह <ph name="HOST_NAME" /> चे अॉथेंटिकेशन करण्यासाठी <ph name="TOKEN_NAME" /> मध्ये साइन इन करा.</translation>
 <translation id="6943176775188458830">प्रिंट रद्द करा</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">पेमेंट हँडलर</translation>
 <translation id="6951663584153258142">तुमची संस्था तुम्हाला हे डिव्हाइस अपडेट करण्यास सांगते</translation>
 <translation id="6953878494808481632">संबंधित माहिती</translation>
+<translation id="6953916367503892689">{0,plural, =1{फाइल: <ph name="FILES" />}other{फायली: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">पॉपअपची तपासणी करा</translation>
 <translation id="6957044667612803194">ही सिक्युरिटी की पिन ला सपोर्ट करत नाही</translation>
 <translation id="6957231940976260713">सेवेचे नाव</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">हे पृष्‍ठ भाषांतरित केले जाऊ शकले नाही.</translation>
 <translation id="7254951428499890870">तुम्ही निदान मोडमध्ये "<ph name="APP_NAME" />" लाँच करू इच्छिता याची तुम्हाला खात्री आहे?</translation>
 <translation id="7255002516883565667">सध्या तुमच्याकडे एक कार्ड आहे जे फक्त या डिव्हाइसवर वापरले जाऊ शकते</translation>
-<translation id="7255220508626648026">कास्ट करीत आहे: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">रीसेटची खात्री करण्यासाठी तुमच्या सिक्युरिटी कीला पुन्हा स्पर्श करा. सिक्युरिटी कीवर स्टोअर केलेली सर्व माहिती, त्याच्या पिनच्या समावेशासह मिटवली जाईल.</translation>
 <translation id="7255935316994522020">लागू करा</translation>
 <translation id="7256069762010468647">साइट तुमचा कॅमेरा वापरत आहे</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">स्थान उघडा...</translation>
 <translation id="7458168200501453431">Google शोध मध्ये वापरत असेलेले स्पेल चेकर वापरले जाते. तुम्ही ब्राउझरमध्ये टाइप करत असलेला मजकूर Google कडे पाठवला जातो.</translation>
+<translation id="7460045493116006516">तुम्ही इंस्टॉल केलेली सध्याची थीम</translation>
 <translation id="7461924472993315131">पिन</translation>
 <translation id="746216226901520237">पुढील वेळेस तुमचा फोन तुमचे <ph name="DEVICE_TYPE" /> अनलॉक करेल. तुम्ही सेटिंग्जमधून Smart Lock बंद करू शकता.</translation>
 <translation id="7463006580194749499">व्यक्ती जोडा</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">नवीन टॅब</translation>
 <translation id="7556033326131260574">Smart Lock तुमचे खाते पडताळणी करू शकले नाही. एंटर करण्यासाठी तुमचा पासवर्ड टाइप करा.</translation>
 <translation id="7556242789364317684">दुर्दैवाने, <ph name="SHORT_PRODUCT_NAME" /> तुमच्या सेटिंग्ज रिकव्हर करणे बंद आहे. एरर निश्चित करण्यासाठी, <ph name="SHORT_PRODUCT_NAME" /> ने Powerwash सह तुमचे डिव्हाइस रीसेट करणे आवश्यक आहे.</translation>
+<translation id="7559444627302317199">कृपया तुमचे नेटवर्क कनेक्शन तपासा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="7559719679815339381">कृपया प्रतीक्षा करा...कियोस्क ॲप अपडेट होण्याच्या प्रक्रियेत आहे. USB स्टिक काढू नका.</translation>
 <translation id="7561196759112975576">नेहमी</translation>
 <translation id="7563991800558061108">या त्रुटीमधून पुनर्प्राप्त करण्यासाठी, तुम्हाला साइन इन स्क्रीनवरून तुमच्या Google खात्यावर
@@ -4563,7 +4580,6 @@
 <translation id="7887334752153342268">डुप्लिकेट</translation>
 <translation id="7887864092952184874">ब्लूटूथ माउस जोडला</translation>
 <translation id="7889565820482017512">डिस्प्ले आकार</translation>
-<translation id="7889966925761734854">शोधा</translation>
 <translation id="7893008570150657497">तुमच्या कॉंप्युटरवरील फोटो, संगीत आणि इतर माध्यमांमध्ये अॅक्सेस करा</translation>
 <translation id="7893153962594818789">या <ph name="DEVICE_TYPE" /> वर ब्लूटूथ बंद आहे. तुमचा पासवर्ड टाका आणि ब्लूटूथ सुरू करा.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (डीफॉल्ट)</translation>
@@ -4571,7 +4587,6 @@
 <translation id="7898627924844766532">टूलबारमध्ये ठेवा</translation>
 <translation id="7898725031477653577">नेहमी भाषांतर करा</translation>
 <translation id="790040513076446191">गोपनीयतेशी-संबद्ध सेटिंग्ज कुशलतेने हाताळा</translation>
-<translation id="7902874111237641165">अडथळा नसलेली हालचाल [बीटा]</translation>
 <translation id="7903345046358933331">पृष्ठ असंवादी झाले आहे. तुम्ही ते संवादी होईपर्यंत प्रतीक्षा करू शकता किंवा ते बंद करू शकता.</translation>
 <translation id="7903742244674067440">तुमच्याकडे फाइलवर अशी सर्टिफिकेट आहेत जी या सर्टिफिकेट अधिकार्‍यांची ओळख पटवतात</translation>
 <translation id="7903925330883316394">उयुक्तता: <ph name="UTILITY_TYPE" /></translation>
@@ -4683,6 +4698,7 @@
 <translation id="8037117027592400564">संकालित भाषण वापरून बोललेला सर्व मजकूर वाचा</translation>
 <translation id="8037357227543935929">विचारा (डीफॉल्ट)</translation>
 <translation id="803771048473350947">फाइल</translation>
+<translation id="8042142357103597104">मजकुराची अपारदर्शकता</translation>
 <translation id="8044899503464538266">धीमी</translation>
 <translation id="8045253504249021590">Google डॅशबोर्ड द्वारे संकालन थांबविले गेले आहे.</translation>
 <translation id="8045923671629973368">ॲप्लिकेशन आयडी किंवा वेबस्टोअर URL टाका</translation>
@@ -4719,7 +4735,6 @@
     <ph name="BEGIN_PARAGRAPH5" />तुम्ही सेटिंग्जमध्ये ही सेवा बंद करू शकता.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">पिन जुळत नाहीत</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> हे एक्स्टेंशनमधून प्रॉक्सी सेटिंग्ज वापरत आहे</translation>
-<translation id="8099495042588009598">अधिक परवानग्या</translation>
 <translation id="8101987792947961127">पुढील रीबूटवर Powerwash आवश्यक</translation>
 <translation id="8102159139658438129">तुमच्या कनेक्ट केलेल्या फोनसाठी पर्याय पाहण्याकरिता <ph name="LINK_BEGIN" />सेटिंग्ज<ph name="LINK_END" /> वर जा</translation>
 <translation id="8104696615244072556">तुमचे <ph name="IDS_SHORT_PRODUCT_NAME" /> डिव्हाइस Powerwash करा आणि मागील आवृत्तीकडे परत या.</translation>
@@ -4771,8 +4786,10 @@
     ही साइट ब्लॉक केली जावी असे मला वाटत नाही!</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" /> वर स्विच करा</translation>
 <translation id="8184318863960255706">अधिक माहिती</translation>
+<translation id="8184472985242519288">एकसमान</translation>
 <translation id="8185331656081929126">नेटवर्कवर नवीन प्रिंटर आढळतात तेव्हा सूचना दर्शवा</translation>
 <translation id="8186609076106987817">सर्व्हर फाइल शोधू शकले नाही.</translation>
+<translation id="8187950680397073878">खालील फोल्डरमधील सर्व फायली <ph name="ORIGIN" /> वाचू शकते. फक्त हा टॅब उघडा असेल तेव्हा ही साइट फोल्डरमध्ये केलेले बदल पाहू शकते.</translation>
 <translation id="8188389033983459049">तुमची डिव्हाइस सेटिंग्ज तपासा आणि सुरू ठेवण्यासाठी ती सुरू करा</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> सह कनेक्ट करत आहे</translation>
 <translation id="8191230140820435481">तुमचे ॲप्लिकेशन, विस्तार आणि थीम व्यवस्थापित करा</translation>
@@ -4876,7 +4893,6 @@
 <translation id="833986336429795709">ही लिंक उघडण्यासाठी, अॅप निवडा</translation>
 <translation id="8342861492835240085">संकलन निवडा</translation>
 <translation id="834290227245955730">चुकीचे पिन. बाकी असलेले प्रयत्न: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">सर्वोत्तम व्हिडिओ किंवा अॅनिमेशनसाठी उच्च बँडविड्थ वापरा. मंद कनेक्शन असलेल्या इतर लोकांना कदाचित तुमचा आशय दिसणार नाही.</translation>
 <translation id="8351419472474436977">या एक्स्टेंशनने तुमच्या प्रॉक्सी सेटिंग्जचे नियंत्रण घेतले आहे, याचा अर्थ ही बदलू शकते, खंडित होवू शकते किंवा तुम्ही ऑनलाइन करता ती कोणतीही गोष्ट चोरून एकू शकतो. हा बदल का झाला, याबद्दल तुम्ही निश्चित नसल्यास, तुम्हाला कदाचित ते नको आहे.</translation>
 <translation id="8351630282875799764">बॅटरी चार्ज होत नाही</translation>
 <translation id="835238322900896202">अनइंस्टॉलेशन करताना एरर आली. कृपया टर्मिनलमधून अनइंस्टॉल करा.</translation>
@@ -4909,9 +4925,11 @@
 <translation id="839736845446313156">नोंदणी</translation>
 <translation id="8398877366907290961">तरीही पुढे चला</translation>
 <translation id="8400146488506985033">लोकांना व्यवस्थापित करा</translation>
+<translation id="8400444932218572097">तुम्ही केलेले बदल <ph name="ORIGIN" /> थेट खालील फोल्डरमध्ये असलेल्या फायलींमध्ये सेव्ह करू शकते. फक्त हा टॅब उघडा असेल तेव्हा ही साइट बदल सेव्ह करू शकते.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">प्रथम विचारा (शिफारस केलेले)</translation>
 <translation id="8418445294933751433">टॅब म्हणून &amp;दर्शवा</translation>
+<translation id="8418905021510211421">या पेजला तुमच्या डिव्हाइसवरील फोल्डर वाचण्याची अनुमती आहे.</translation>
 <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' साठी शोध परिणाम</translation>
 <translation id="8419368276599091549">तुमच्या <ph name="DEVICE_TYPE" /> वर स्वागत आहे!</translation>
 <translation id="8425213833346101688">बदल करा</translation>
@@ -4931,6 +4949,7 @@
 <translation id="8438566539970814960">शोध आणि ब्राउझ करणे चांगले करा</translation>
 <translation id="8439506636278576865">या भाषेमध्ये पेज भाषांतरीत करण्यासाठी ऑफर</translation>
 <translation id="8440630305826533614">Linux ॲप्स</translation>
+<translation id="844241640324986723">तुमचा साइन इन डेटा हटवू शकलो नाही.</translation>
 <translation id="8443338615972234259">आता तुमच्या व्यवस्थापित वापरकर्त्यासाठी नवीन खाते तयार करा.</translation>
 <translation id="8446884382197647889">अधिक जाणून घ्या</translation>
 <translation id="8447409163267621480">एकतर Ctrl किंवा Alt समाविष्‍ट करा</translation>
@@ -4946,8 +4965,6 @@
 <translation id="8461914792118322307">प्रॉक्सी</translation>
 <translation id="8463215747450521436">हा पर्यवेक्षित वापरकर्ता व्यवस्थापकाद्वारे हटवला किंवा अक्षम केलेला असू शकतो. कृपया हा वापरकर्ता म्हणून साइन इन करणे तुम्ही सुरू ठेवू इच्छित असल्यास व्यवस्थापकाशी संपर्क साधा.</translation>
 <translation id="846374874681391779">डाउनलोड बार</translation>
-<translation id="8463807869745732775">"&gt;
-    स्टोअर केलेला सिक्युरिटी की साइन इन डेटा</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> अक्षम केले.</translation>
 <translation id="8464132254133862871">हे वापरकर्ता खाते सेवेसाठी आदेय नाही.</translation>
 <translation id="8465252176946159372">वैध नाही</translation>
@@ -5013,6 +5030,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" /> प्रिंट करत आहे</translation>
 <translation id="8569682776816196752">कोणतीही गंतव्ये आढळली नाहीत</translation>
 <translation id="8571213806525832805">मागील 4 आठवड्यांमधील</translation>
+<translation id="8573403125070227391">ही जाहिरात तुमच्या डिव्हाइससाठी खूप स्‍त्रोत वापरते, त्यामुळे Chrome ने ती काढून टाकली आहे.</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> वर आवाज नेहमी चालू ठेवा</translation>
 <translation id="8575286410928791436">बाहेर पडण्यासाठी <ph name="KEY_EQUIVALENT" /> धरून ठेवा</translation>
 <translation id="8578639784464423491">९९ पेक्षा जास्‍त अक्षरे असू शकत नाहीत</translation>
@@ -5036,13 +5054,13 @@
 <translation id="8609465669617005112">वर हलवा</translation>
 <translation id="8610103157987623234">चुकीचा फॉरमॅट, कृपया पुन्हा प्रयत्न करा</translation>
 <translation id="8615618338313291042">गुप्त ॲप्लिकेशन: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">ड्रॉप शॅडो</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">रोमिंग स्थिती</translation>
 <translation id="8620765578342452535">नेटवर्क कनेक्‍शन कॉन्फिगर करा</translation>
 <translation id="8621866727807194849">तुमच्या काँप्युटरवर हानिकारक सॉफ्टवेअर आहे. Chrome ते काढून टाकत आहे, तुमची सेटिंग्ज रिस्टोअर करत आहे आणि एक्स्टेंशन बंद करत आहे. यामुळे तुमचा ब्राउझर पुन्हा नीट काम करेल.</translation>
 <translation id="8621979332865976405">तुमची संपूर्ण स्क्रीन शेअर करा</translation>
 <translation id="862542460444371744">&amp;विस्तार</translation>
-<translation id="8627151598708688654">स्रोत निवडा</translation>
 <translation id="862727964348362408">निलंबित</translation>
 <translation id="862750493060684461">CSS कॅशे</translation>
 <translation id="8627795981664801467">केवळ सुरक्षित कनेक्शन</translation>
@@ -5096,6 +5114,7 @@
 <translation id="8688579245973331962">तुमचे नाव दिसत नाही?</translation>
 <translation id="8688591111840995413">चुकीचा पासवर्ड</translation>
 <translation id="8688672835843460752">उपलब्ध</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;स्थान उघडा...</translation>
 <translation id="869884720829132584">ॲप्लिकेशन मेनू</translation>
 <translation id="869891660844655955">कालावधी समाप्ती तारीख</translation>
@@ -5260,6 +5279,7 @@
 <translation id="891365694296252935">वापर आणि निदान डेटा पाठवा. हे डिव्हाइस सध्या Google ला आपोआप निदान, डिव्हाइस आणि अ‍ॅप वापर डेटा पाठवत आहे. हे तुमच्या लहान मुलाला ओळखण्यासाठी वापरले जाणार नाही आणि सिस्ट्म आणि अ‍ॅप स्थिरता आणि इतर सुधारणा करण्यात मदत करेल. काही एकत्रित केलेला डेटा Google अ‍ॅप्स आणि Android डेव्हलपर सारख्या भागीदारांना देखील मदत करेल. या सेटिंगची मालकाद्वारे अंमलबजावणी केली जाते. तुमच्या लहान मुलासाठी अतिरिक्त वेब आणि अ‍ॅप अ‍ॅक्टिव्हिटी सुरू केलेली असल्यास, हा डेटा त्याच्या Google खात्यामध्ये स्टोअर केला जाऊ शकतो. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">सूचना लोड करीत आहे</translation>
 <translation id="8916476537757519021">गुप्त सबफ्रेम: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> ला तुमच्या डिव्हाइसवरील फोल्डर वाचण्याची अनुमती आहे</translation>
 <translation id="8919275547519617350">तुमच्या सर्व डिव्हाइसवर तुमचे सर्व पासवर्ड मिळवण्यासाठी, साइन इन करा आणि सिंंक करायला सुरुवात करा.</translation>
 <translation id="8921366488406707015">तुमच्या सिक्युरिटी की ची पडताळणी करत आहे...</translation>
 <translation id="8922013791253848639">या साइटवर कायम जाहिरातींना परवानगी द्या</translation>
@@ -5289,7 +5309,6 @@
 <translation id="8965037249707889821">जुना पासवर्ड एंटर करा</translation>
 <translation id="8966870118594285808">तुम्ही एखादा टॅब चुकून बंद केल्यास, तो पुन्हा उघडा</translation>
 <translation id="8967866634928501045">दाखवण्यासाठी Alt Shift A दाबा</translation>
-<translation id="8970203673128054105">कास्ट मोड सूची पहा</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">कृपया फायरवॉल Google सर्व्हरवरून डाउनलोड ब्लॉक करत नसल्याची खात्री करण्यासाठी तुमच्या नेटवर्क अॅडमिनिस्ट्रेटरच्या साहाय्याने तपासा.</translation>
 <translation id="8973557916016709913">झूम स्तर काढून टाका</translation>
@@ -5438,6 +5457,7 @@
 <translation id="9214520840402538427">अरेरे! स्थापना-वेळ विशेषतांचे इंस्टॉलेशन कालबाह्य झाले. कृपया तुमच्या सपोर्ट प्रतिनिधीशी संपर्क साधा.</translation>
 <translation id="9214695392875603905">कपकेक</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" जोडले</translation>
+<translation id="9216712190298404438">तुम्ही केलेले बदल <ph name="ORIGIN" /> थेट खालील फाइलमध्ये सेव्ह करू शकेल. फक्त हा टॅब उघडा असेल तेव्हा ही साइट बदल सेव्ह करू शकते.</translation>
 <translation id="9218430445555521422">डीफॉल्ट म्हणून सेट करा</translation>
 <translation id="9219103736887031265">इमेज</translation>
 <translation id="9220525904950070496">खाते काढून टाका</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index ac78c11..34de0ad 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Ralat semasa memulakan mesin maya. Sila cuba lagi.</translation>
 <translation id="1089439967362294234">Tukar Kata Laluan</translation>
 <translation id="1090126737595388931">Tiada Apl Latar Belakang Dijalankan</translation>
+<translation id="1090290614672149983">Simpan perubahan pada fail asal?</translation>
 <translation id="1090918500949388876">Akses Assistant pada bila-bila masa anda menyebut "Ok Google" semasa skrin anda dihidupkan</translation>
 <translation id="1091767800771861448">Tekan ESCAPE untuk melangkau (Binaan tidak rasmi sahaja).</translation>
 <translation id="1093457606523402488">Rangkaian Kelihatan:</translation>
 <translation id="1094607894174825014">Pengendalian baca atau tulis diminta dengan ofset tidak sah pada: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Sebelum log masuk, sila masuk sebagai Tetamu untuk mengaktifkan rangkaian <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Tab ini dibenarkan untuk menyimpan ke fail asal.</translation>
 <translation id="1103523840287552314">Sentiasa terjemahkan <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Berhenti</translation>
 <translation id="1110155001042129815">Tunggu</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Cermin mata hitam</translation>
 <translation id="1151917987301063366">Sentiasa benarkan <ph name="HOST" /> mengakses penderia</translation>
 <translation id="1153356358378277386">Peranti digandingkan</translation>
-<translation id="1156488781945104845">Masa semasa</translation>
 <translation id="1161575384898972166">Sila log masuk ke <ph name="TOKEN_NAME" /> untuk mengeksport sijil klien.</translation>
 <translation id="1163931534039071049">&amp;Lihat sumber bingkai</translation>
 <translation id="1164674268730883318">Matikan Smart Lock untuk <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Tetapan Storan Adobe Flash Player</translation>
 <translation id="1274997165432133392">Kuki dan data tapak yang lain</translation>
 <translation id="127668050356036882">Tutup semua tetingkap anda</translation>
-<translation id="1277908057200820621">Lihat senarai peranti</translation>
 <translation id="1280820357415527819">Mencari rangkaian mudah alih</translation>
 <translation id="1285320974508926690">Jangan sekali-kali menterjemahkan tapak ini</translation>
 <translation id="1285484354230578868">Simpan data dalam akaun Google Drive anda</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Rangkaian utama, bukan perayauan</translation>
 <translation id="1316136264406804862">Mencari...</translation>
 <translation id="1316495628809031177">Penyegerakan dijeda</translation>
+<translation id="1317637799698924700">Stesen dok anda akan beroperasi dalam mod serasi USB Jenis-C.</translation>
 <translation id="1322046419516468189">Lihat dan urus kata laluan yang disimpan dalam <ph name="SAVED_PASSWORDS_STORE" /> anda</translation>
 <translation id="1326317727527857210">Log masuk ke Chrome untuk mendapatkan tab daripada peranti anda yang lain.</translation>
 <translation id="1327074568633507428">Pencetak di Cetakan Awan Google</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Penyemak imbas anda diurus<ph name="END_LINK" /> oleh <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Jalankan alatan, editor dan IDE Linux pada <ph name="DEVICE_TYPE" /> anda. &lt;a target="_blank" href="<ph name="URL" />"&gt;Ketahui lebih lanjut&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Pilih fail</translation>
+<translation id="1370749010280229230">Paparan yang disambungkan ke dok mempunyai masalah</translation>
 <translation id="1371301976177520732">Penanda halaman, kata laluan, sejarah dan pelbagai lagi item anda pada semua peranti anda</translation>
 <translation id="1372841398847029212">Segerakkan ke akaun anda</translation>
 <translation id="1374844444528092021">Sijil yang diperlukan oleh rangkaian "<ph name="NETWORK_NAME" />" sama ada tidak dipasang atau tidak lagi sah.  Sila dapatkan sijil baharu dan cuba menyambung semula.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Laman Web, Fail Tunggal</translation>
 <translation id="1451917004835509682">Tambahkan Orang di Bawah Seliaan</translation>
 <translation id="1454223536435069390">A&amp;mbil tangkapan skrin</translation>
+<translation id="1458243790901188746">{0,plural, =1{Folder: <ph name="DIRECTORIES" />}other{Folder: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Enjin carian ditambah oleh sambungan</translation>
 <translation id="146000042969587795">Bingkai ini disekat kerana ia mengandungi beberapa kandungan selamat.</translation>
 <translation id="146219525117638703">Keadaan ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Tunjukkan pilihan input</translation>
 <translation id="1651008383952180276">Anda mesti memasukkan ungkapan laluan yang sama dua kali</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Tambahkan pencetak kepada Pencetak Awan Google supaya anda dapat mencetak dari mana-mana sahaja.}other{Tambahkan # pencetak kepada Pencetak Awan Google supaya anda dapat mencetak dari mana-mana sahaja.}}</translation>
+<translation id="1656528038316521561">Kelegapan latar</translation>
 <translation id="1657406563541664238">Bantu jadikan <ph name="PRODUCT_NAME" /> lebih baik dengan menghantar statistik dan laporan nahas secara automatik kepada Google</translation>
 <translation id="1658424621194652532">Halaman ini mengakses mikrofon anda.</translation>
 <translation id="1660204651932907780">Benarkan tapak untuk memainkan bunyi (disyorkan)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> ingin melihat jenama dan model Kunci Keselamatan anda</translation>
 <translation id="1679068421605151609">Alat Pembangun</translation>
 <translation id="1679806121152819234">PluginVm</translation>
+<translation id="1679810534535368772">Adakah anda pasti mahu keluar?</translation>
 <translation id="167983332380191032">Perkhidmatan pengurusan menghantar ralat HTTP.</translation>
 <translation id="1680849702532889074">Ralat telah berlaku semasa pemasangan aplikasi Linux anda.</translation>
 <translation id="16815041330799488">Jangan benarkan tapak melihat teks dan imej yang disalin ke papan keratan</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Pengecam Media Dilindungi</translation>
 <translation id="175196451752279553">B&amp;uka semula tab yang ditutup</translation>
 <translation id="1753905327828125965">Paling Kerap Dilawati</translation>
+<translation id="1755601632425835748">Saiz teks</translation>
 <translation id="1756681705074952506">Kaedah input</translation>
 <translation id="1757301747492736405">Penyahpasangan belum selesai</translation>
 <translation id="175772926354468439">Dayakan tema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Lebih kecil</translation>
 <translation id="1919345977826869612">Iklan</translation>
 <translation id="1919814239594435008">Pemalam tanpa kotak pasir dibenarkan</translation>
+<translation id="1920390473494685033">Kenalan</translation>
 <translation id="1921050530041573580">Gandingkan telefon anda dengan Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Dapatkan Google pintar dalam <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Tab Inkognito: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Pemalam <ph name="PEPPER_PLUGIN_NAME" /> di <ph name="PEPPER_PLUGIN_DOMAIN" /> ingin mengakses komputer anda</translation>
 <translation id="2178614541317717477">Tolak ansur CA</translation>
+<translation id="2179849162388791084">Gagal mengumpulkan data log masuk daripada kunci keselamatan anda.</translation>
 <translation id="218070003709087997">Gunakan nombor untuk menunjukkan bilangan salinan untuk dicetak (1 hingga 999).</translation>
 <translation id="2184515124301515068">Benarkan Chrome memilih masa tapak boleh memainkan bunyi (disyorkan)</translation>
 <translation id="2187895286714876935">Ralat Import Sijil Pelayan</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Semua kuki dan data tapak</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 item disalin}other{# item disalin}}</translation>
 <translation id="2278562042389100163">Buka tetingkap penyemak imbas</translation>
-<translation id="2279874276457403668">Hanya satu sesi boleh dibuat pada satu masa.</translation>
 <translation id="2280486287150724112">Jidar kanan</translation>
 <translation id="2282146716419988068">Proses GPU</translation>
 <translation id="2282155092769082568">URL autokonfigurasi:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Nota kunci skrin disimpan secara automatik ke <ph name="LOCK_SCREEN_APP_NAME" />. Nota terbaharu anda akan kekal pada kunci skrin.</translation>
 <translation id="2353297238722298836">Kamera dan mikrofon dibenarkan</translation>
 <translation id="2356070529366658676">Tanya</translation>
-<translation id="2357949918965361754">Anda boleh menggunakan ciri ini untuk memaparkan kandungan daripada Chrome pada TV atau peranti anda yang lain.</translation>
 <translation id="2359345697448000899">Uruskan sambungan anda dengan mengklik Sambungan dalam menu Alat.</translation>
 <translation id="2359808026110333948">Teruskan</translation>
 <translation id="236117173274098341">Optimumkan</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Organisasi anda menghendaki peranti ini dikemas kini sekarang juga</translation>
 <translation id="2439545803278355377">Masukkan PIN baharu anda. Panjang PIN mesti sekurang-kurangnya empat aksara dan boleh mengandungi huruf, nombor dan aksara lain.</translation>
 <translation id="2440604414813129000">Lihat s&amp;umber</translation>
+<translation id="2442916515643169563">Bayangan teks</translation>
 <translation id="2444119669991608829">Halaman Bukan Dalam <ph name="LANGUAGE" /> ?</translation>
 <translation id="2445081178310039857">Direktori akar sambungan adalah diperlukan.</translation>
 <translation id="2445484935443597917">Buat Profil Baharu</translation>
@@ -1181,6 +1188,7 @@
 <translation id="2738771556149464852">Bukan Selepas</translation>
 <translation id="2739191690716947896">Nyahpepijat</translation>
 <translation id="2739240477418971307">Ubah tetapan kebolehaksesan anda</translation>
+<translation id="274029851662193272">Direndahkan</translation>
 <translation id="2740393541869613458">semak tapak web yang telah dilawati oleh pengguna diselia dan</translation>
 <translation id="2741912629735277980">Paparkan UI pada skrin log masuk</translation>
 <translation id="274290345632688601">Memulihkan apl &amp; fail Linux</translation>
@@ -1229,6 +1237,7 @@
 <translation id="2806891468525657116">Pintasan sudah wujud</translation>
 <translation id="2807517655263062534">Fail yang anda muat turun dipaparkan di sini</translation>
 <translation id="2809586584051668049">dan <ph name="NUMBER_ADDITIONAL_DISABLED" /> lagi</translation>
+<translation id="2812049959647166806">Thunderbolt tidak disokong</translation>
 <translation id="2812944337881233323">Cuba log keluar dan log masuk semula</translation>
 <translation id="2812989263793994277">Jangan paparkan sebarang imej</translation>
 <translation id="281390819046738856">Permintaan tidak dapat ditandatangani.</translation>
@@ -1251,7 +1260,6 @@
 <translation id="2841837950101800123">Penyedia</translation>
 <translation id="2844169650293029770">Peranti USB-C (port depan sebelah kiri)</translation>
 <translation id="2845382757467349449">Sentiasa Paparkan Bar Penanda Halaman</translation>
-<translation id="2847759467426165163">Hantar ke</translation>
 <translation id="284805635805850872">Alih keluar perisian berbahaya?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Pembersihan gagal</translation>
@@ -1298,6 +1306,7 @@
     Mesej pelayan: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Tambah Galeri Media mengikut Direktori</translation>
 <translation id="2910318910161511225">Sambung ke rangkaian dan cuba lagi</translation>
+<translation id="2910518940971897750">Simpan ke fail asal</translation>
 <translation id="2913331724188855103">Benarkan tapak untuk menyimpan dan membaca data kuki (disyorkan)</translation>
 <translation id="2915102088417824677">Lihat log aktiviti</translation>
 <translation id="2915873080513663243">Autoimbas</translation>
@@ -1362,12 +1371,14 @@
 <translation id="3013291976881901233">Peranti MIDI</translation>
 <translation id="3015639418649705390">Lancarkan semula sekarang</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> tidak dapat dikonfigurasi secara automatik. Sila nyatakan butiran terperinci pencetak.</translation>
+<translation id="3016381065346027039">Tiada masukan log</translation>
 <translation id="3016641847947582299">Komponen dikemaskini</translation>
 <translation id="3016780570757425217">Ketahui lokasi anda</translation>
 <translation id="3017079585324758401">Latar belakang</translation>
 <translation id="3020183492814296499">Pintasan</translation>
 <translation id="3020990233660977256">Nombor Siri: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Rama-rama</translation>
+<translation id="3021408157810018664">Simpan perubahan pada fail asal?</translation>
 <translation id="3021426244864538700">Mengakses data tapak ini</translation>
 <translation id="3021678814754966447">&amp;Lihat Sumber Bingkai</translation>
 <translation id="3022978424994383087">Tidak faham.</translation>
@@ -1460,6 +1471,7 @@
 <translation id="3170072451822350649">Anda juga boleh melangkau log masuk dan <ph name="LINK_START" />menyemak imbas sebagai tetamu<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Satu tapak sedang mengakses input video</translation>
 <translation id="3177909033752230686">Bahasa Halaman:</translation>
+<translation id="3179982752812949580">Fon teks</translation>
 <translation id="3181954750937456830">Penyemakan Imbas Selamat (melindungi anda dan peranti anda daripada tapak yang berbahaya)</translation>
 <translation id="3182749001423093222">Semakan ejaan</translation>
 <translation id="3183139917765991655">Pengimport Profil</translation>
@@ -1512,7 +1524,6 @@
 <translation id="3275778913554317645">Buka sebagai tetingkap</translation>
 <translation id="3278001907972365362">Akaun Google anda memerlukan perhatian</translation>
 <translation id="3279230909244266691">Proses ini mungkin mengambil masa beberapa minit. Memulakan mesin maya.</translation>
-<translation id="3279741024917655738">Tunjukkan video skrin penuh pada</translation>
 <translation id="3280237271814976245">Simpan &amp;sebagai...</translation>
 <translation id="3280243678470289153">Kekal dalam Chrome</translation>
 <translation id="3281892622610078515">Fail dan program yang akan dikuarantin:</translation>
@@ -1534,7 +1545,7 @@
 <translation id="3303855915957856445">Tiada hasil carian ditemui</translation>
 <translation id="3305389145870741612">Proses memformat boleh mengambil masa beberapa saat. Sila tunggu.</translation>
 <translation id="3305661444342691068">Buka PDF dalam Pratonton</translation>
-<translation id="3306684685104080068">Dayakan penghantaran ke perkhidmatan berasaskan awan seperti Google Hangouts.</translation>
+<translation id="3307871847038842490">Halaman ini dibenarkan untuk menyimpan ke fail asal.</translation>
 <translation id="3308006649705061278">Unit Organisasi (OU)</translation>
 <translation id="3308116878371095290">Halaman ini dihalang daripada menetapkan kuki.</translation>
 <translation id="3308134619352333507">Sembunyikan Butang</translation>
@@ -1640,7 +1651,6 @@
 <translation id="3462413494201477527">Batalkan penetapan akaun?</translation>
 <translation id="3464012987031883895">Satu tapak sedang mengakses input audio</translation>
 <translation id="346431825526753">Ini ialah akaun untuk kanak-kanak yang diurus oleh <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Strim fail video atau audio</translation>
 <translation id="3468999815377931311">Telefon Android</translation>
 <translation id="3470442499439619530">Alih Keluar Pengguna Ini</translation>
 <translation id="3473479545200714844">Penggadang skrin</translation>
@@ -1663,6 +1673,7 @@
 <translation id="3496213124478423963">Zum Keluar</translation>
 <translation id="3497560059572256875">Kongsi Coretan</translation>
 <translation id="3505030558724226696">Batalkan akses peranti</translation>
+<translation id="3505635633742443645">Port HDMI dok anda tidak boleh digunakan apabila port USB Jenis-C digunakan untuk output video. Sila gunakan port yang berbeza untuk salah satu paparan.</translation>
 <translation id="3507421388498836150">Kebenaran Semasa untuk "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Imbas semula peranti Bluetooth</translation>
 <translation id="3508920295779105875">Pilih Folder yang lain...</translation>
@@ -1715,6 +1726,7 @@
 <translation id="3576324189521867626">Berjaya dipasang</translation>
 <translation id="3578594933904494462">Kandungan tab ini sedang dikongsi.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; ingin berkongsi pencetak &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; dengan kumpulan yang anda miliki: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Jika anda terima, semua ahli kumpulan boleh menggunakan pencetak tersebut.</translation>
+<translation id="357889014807611375">Wi-Fi bermeter</translation>
 <translation id="3584169441612580296">Baca dan ubah foto, muzik dan media lain daripada komputer anda</translation>
 <translation id="3587482841069643663">Semua</translation>
 <translation id="358796204584394954">Taip kod ini pada "<ph name="DEVICE_NAME" />" untuk digandingkan:</translation>
@@ -1725,6 +1737,7 @@
 <translation id="359283478042092570">Masuk</translation>
 <translation id="3593965109698325041">Kekangan Nama Sijil</translation>
 <translation id="3596235046596950091">Dayakan perkhidmatan awan</translation>
+<translation id="3599221874935822507">Ditinggikan</translation>
 <translation id="3599863153486145794">Mengosongkan sejarah daripada semua peranti yang dilog masuk. Akaun Google anda mungkin mempunyai sejarah penyemakan imbas dalam bentuk lain di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Maklumat permintaan web</translation>
 <translation id="3600792891314830896">Redam tapak yang memainkan bunyi</translation>
@@ -1739,6 +1752,7 @@
 <translation id="3612673635130633812">Dimuat turun oleh &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Tunjukkan <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Buka dalam tab baharu</translation>
+<translation id="3615073365085224194">Sentuh penderia cap jari menggunakan jari anda</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Kosongkan Data Menyemak Imbas...</translation>
 <translation id="3617891479562106823">Latar belakang tidak tersedia. Cuba lagi nanti.</translation>
@@ -1820,7 +1834,6 @@
 <translation id="3719826155360621982">Halaman utama</translation>
 <translation id="3720996970802414353">Teruskan menukar</translation>
 <translation id="3722108462506185496">Ralat semasa memulakan perkhidmatan mesin maya. Sila cuba lagi.</translation>
-<translation id="3723158278575423087">Selamat datang ke pengalaman Cast dalam Chromium!</translation>
 <translation id="3725367690636977613">halaman</translation>
 <translation id="3726137731714254362">Tindakan mengalih keluar folder dari sini akan menghentikan perkongsian tetapi tidak akan memadamkan fail.</translation>
 <translation id="3727148787322499904">Tindakan menukar tetapan ini akan menjejaskan semua rangkaian yang dikongsi</translation>
@@ -1855,7 +1868,6 @@
 <translation id="3764314093345384080">Maklumat binaan terperinci</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Berkomunikasi dengan peranti USB}other{Berkomunikasi dengan # peranti USB}}</translation>
 <translation id="3765246971671567135">Tidak dapat membaca dasar mod tunjuk cara luar talian.</translation>
-<translation id="3766223500670287046">Skrin jauh</translation>
 <translation id="3768037234834996183">Menyegerakkan pilihan anda...</translation>
 <translation id="377050016711188788">Aiskrim</translation>
 <translation id="3771294271822695279">Fail Video</translation>
@@ -1928,7 +1940,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elir.</translation>
 <translation id="3857807444929313943">Angkat jari, kemudian sentuh lagi</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Penyegerakan dijeda</translation>
-<translation id="3862134173397075045">Selamat datang ke pengalaman Cast dalam Chrome!</translation>
 <translation id="3862693525629180217">Sahkan melalui penderia terbina dalam</translation>
 <translation id="3862788408946266506">Apl dengan atribut manifes 'kiosk_only' mesti dipasang dalam mod kios OS Chrome OS</translation>
 <translation id="3865414814144988605">Peleraian</translation>
@@ -1977,6 +1988,7 @@
 <translation id="3926002189479431949">Telefon Smart Lock telah berubah</translation>
 <translation id="3927932062596804919">Nafikan</translation>
 <translation id="3930737994424905957">Mencari peranti</translation>
+<translation id="3930968231047618417">Warna latar</translation>
 <translation id="3933283459331715412">Pulihkan kata laluan yang dipadamkan untuk <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Buka audio di tab baharu</translation>
 <translation id="3936925983113350642">Kata laluan yang anda pilih akan diperlukan untuk memulihkan sijil ini kemudian. Sila catatnya di lokasi selamat.</translation>
@@ -1996,6 +2008,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Diimport Daripada IE</translation>
 <translation id="3950820424414687140">Log masuk</translation>
+<translation id="3950828138786918475">Tab ini dibenarkan untuk membaca folder pada peranti anda.</translation>
 <translation id="3954354850384043518">Sedang berlangsung</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">Anda tiada log acara WebRTC yang dirakam baru-baru ini.</translation>
@@ -2014,6 +2027,7 @@
 <translation id="397105322502079400">Mengira...</translation>
 <translation id="3975565978598857337">Gagal menghubungi pelayan untuk realma</translation>
 <translation id="397703832102027365">Menyelesaikan...</translation>
+<translation id="3977886311744775419">Kemas kini automatik tidak memuat turun pada jenis rangkaian ini, tetapi anda boleh menyemak kemas kini secara manual.</translation>
 <translation id="3979395879372752341">Sambungan baharu ditambah (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Dayakan <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Jenis menyimpan yang dimasukkan tidak sah.</translation>
@@ -2134,7 +2148,7 @@
 <translation id="4147911968024186208">Sila cuba semula. Jika ralat ini dipaparkan sekali lagi, sila hubungi wakil sokongan anda.</translation>
 <translation id="4150125039112138020">|</translation>
 <translation id="4150201353443180367">Paparan</translation>
-<translation id="4150234330364554482">Gunakan stesen dok OEM yang direka untuk berfungsi dengan Chromebook ini.</translation>
+<translation id="4150234330364554482">Gunakan stesen dok OEM yang direka khusus untuk Chromebook ini.</translation>
 <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}other{# tab}}</translation>
 <translation id="4154664944169082762">Cap jari</translation>
 <translation id="4157869833395312646">Kriptografi Berpintu Pelayan Microsoft</translation>
@@ -2153,6 +2167,7 @@
 <translation id="4194570336751258953">Dayakan ketik untuk klik</translation>
 <translation id="4195643157523330669">Buka dalam tab baharu</translation>
 <translation id="4195814663415092787">Sambung semula dari tempat anda berhenti</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> boleh menyimpan perubahan anda terus pada fail berikut. Tapak ini boleh menyimpan perubahan hanya semasa tab ini terbuka.</translation>
 <translation id="4198146608511578238">Cuma tahan ikon Pelancar untuk bercakap dengan Google Assistant anda.</translation>
 <translation id="4200689466366162458">Perkataan tersuai</translation>
 <translation id="4200983522494130825">Tab &amp;baharu</translation>
@@ -2200,7 +2215,6 @@
 <translation id="4267953847983678297">Sambung ke rangkaian selular secara automatik</translation>
 <translation id="4268025649754414643">Encipherment Penting</translation>
 <translation id="4270393598798225102">Versi <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Tiada padanan</translation>
 <translation id="4275663329226226506">Media</translation>
 <translation id="4275830172053184480">Mulakan semula peranti anda</translation>
 <translation id="4278101229438943600">Assistant anda bersedia</translation>
@@ -2349,6 +2363,7 @@
 <translation id="4533985347672295764">Masa CPU</translation>
 <translation id="4534661889221639075">Cuba lagi.</translation>
 <translation id="4535127706710932914">Profil Lalai</translation>
+<translation id="4535767533210902251">Penderia cap jari ialah kekunci sebelah kanan bahagian atas pada papan kekunci anda. Sentuh dengan lembut menggunakan mana-mana jari.</translation>
 <translation id="4538684596480161368">Sentiasa sekat pemalam tanpa kotak pasir pada <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Dipasang oleh dasar perusahaan.</translation>
 <translation id="4542520061254486227">Baca data anda di <ph name="WEBSITE_1" /> dan <ph name="WEBSITE_2" /></translation>
@@ -2382,6 +2397,7 @@
 <translation id="457386861538956877">Lagi...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Gandingkan peranti Bluetooth</translation>
+<translation id="4578012756826807359">Data log masuk anda berjaya dipadamkan.</translation>
 <translation id="4579581181964204535">Tidak dapat menghantar <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Ralat semasa memulihkan Linux</translation>
 <translation id="4582563038311694664">Tetapkan semula semua tetapan</translation>
@@ -2499,7 +2515,6 @@
 <translation id="4763830802490665879">Kuki dari beberapa tapak akan dikosongkan semasa keluar.</translation>
 <translation id="4765582662863429759">Membenarkan Android Messages menyampaikan teks daripada telefon ke Chromebook anda</translation>
 <translation id="4768332406694066911">Anda mempunyai sijil daripada organisasi ini yang mengenal pasti anda</translation>
-<translation id="4772404146526168240">Kedua-dua skrin</translation>
 <translation id="4776146737004271126">Buka tetapan Android</translation>
 <translation id="4776917500594043016">Kata laluan untuk <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Gedung Play</translation>
@@ -2607,7 +2622,6 @@
 <translation id="4927846293686536410">Log masuk untuk mendapatkan penanda halaman, sejarah, kata laluan dan tetapan anda yang lain pada semua peranti anda. Anda turut akan dilog masuk secara automatik ke perkhidmatan Google.</translation>
 <translation id="4929386379796360314">Destinasi Cetak</translation>
 <translation id="4930714375720679147">Hidupkan</translation>
-<translation id="4931132176527519925">Sentiasa gunakan pencerminan</translation>
 <translation id="4932733599132424254">Tarikh</translation>
 <translation id="4933484234309072027">terbenam pada <ph name="URL" /></translation>
 <translation id="493571969993549666">Tambahkan pengguna di bawah seliaan</translation>
@@ -2647,6 +2661,7 @@
 <translation id="4992066212339426712">Nyahredam</translation>
 <translation id="4992458225095111526">Sahkan Powerwash</translation>
 <translation id="4992473555164495036">Pentadbir anda telah mengehadkan kaedah input yang tersedia.</translation>
+<translation id="4992866843815555470">Dok anda perlu diservis. Tanpa kipas yang boleh berfungsi dengan baik, dok anda akan tertutup.</translation>
 <translation id="4992926179187649719">Hidupkan 'Ok Google'</translation>
 <translation id="4994474651455208930">Membenarkan tapak untuk meminta menjadi pengendali lalai untuk protokol</translation>
 <translation id="4994754230098574403">Menyediakan</translation>
@@ -2785,7 +2800,6 @@
 <translation id="5233231016133573565">ID Proses</translation>
 <translation id="5233638681132016545">Tab baharu</translation>
 <translation id="5233736638227740678">&amp;Tampal</translation>
-<translation id="5234764350956374838">Singkirkan</translation>
 <translation id="5235050375939235066">Nyahpasang apl?</translation>
 <translation id="5235750401727657667">Gantikan halaman yang anda lihat semasa membuka tab baharu</translation>
 <translation id="5238278114306905396">Apl "<ph name="EXTENSION_NAME" />" telah dialih keluar secara automatik.</translation>
@@ -2850,6 +2864,7 @@
 <translation id="5319359161174645648">Google mengesyorkan Chrome</translation>
 <translation id="532247166573571973">Pelayan mungkin tidak dapat dihubungi. Cuba sebentar lagi.</translation>
 <translation id="5324780743567488672">Tetapkan zon waktu secara automatik menggunakan lokasi anda</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - dibenarkan menyimpan ke fail asal</translation>
 <translation id="5327248766486351172">Nama</translation>
 <translation id="5327570636534774768">Peranti ini ditandai untuk pengurusan oleh domain lain. Lucutkan peruntukan peranti ini daripada domain itu sebelum menyediakan mod tunjuk cara.</translation>
 <translation id="532943162177641444">Ketik pemberitahuan pada <ph name="PHONE_NAME" /> anda untuk menyediakan tempat liputan mudah alih yang boleh digunakan oleh peranti ini.</translation>
@@ -2992,7 +3007,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> ingin</translation>
 <translation id="5534304873398226603">Buang foto atau video</translation>
 <translation id="5535941515421698170">Turut mengalih keluar data sedia ada anda daripada peranti ini</translation>
-<translation id="5537725057119320332">Cast</translation>
 <translation id="5539221284352502426">Kata laluan yang anda masukkan telah ditolak oleh pelayan. Sebab yang mungkin termasuk: Kata laluan terlalu pendek. Kata laluan mesti merangkumi nombor atau simbol. Kata laluan mesti berbeza daripada kata laluan yang sebelumnya.</translation>
 <translation id="5541687815721799001">Gunakan apl</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3301,7 +3315,6 @@
 <translation id="5997337190805127100">Ketahui Lebih Lanjut Tentang Akses Tapak</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> hasil carian untuk '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="6002458620803359783">Suara Pilihan</translation>
-<translation id="6005695835120147974">Penghala Media</translation>
 <translation id="6006484371116297560">Klasik</translation>
 <translation id="6007240208646052708">Carian suara dalam bahasa anda tidak tersedia.</translation>
 <translation id="6009781704028455063">Penderia terbina dalam</translation>
@@ -3386,7 +3399,7 @@
 <translation id="6112294629795967147">Sentuh untuk mengubah saiz</translation>
 <translation id="6112931163620622315">Semak telefon anda</translation>
 <translation id="6112952769866305444">Edit orang, <ph name="PROFILE_NAME" />, <ph name="USERNAME" /></translation>
-<translation id="6113942107547980621">Untuk menggunakan Smart Lock, sila bertukar kepada profil pengguna utama pada telefon anda</translation>
+<translation id="6113942107547980621">Untuk menggunakan Smart Lock, beralih kepada profil pengguna utama pada telefon anda</translation>
 <translation id="6116338172782435947">Lihat teks dan imej yang disalin ke papan keratan</translation>
 <translation id="6116921718742659598">Tukar tetapan bahasa dan input</translation>
 <translation id="6120205520491252677">Pin halaman ini pada skrin Mula...</translation>
@@ -3501,7 +3514,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Pencetak baharu pada rangkaian anda}other{Pencetak baharu pada rangkaian anda}}</translation>
 <translation id="6286708577777130801">Butiran kata laluan yang disimpan</translation>
 <translation id="6289452883081499048">Perkhidmatan Google yang diperibadikan seperti Play</translation>
-<translation id="6290556621549272952">Anda boleh menggunakan ciri ini untuk memaparkan kandungan daripada Chromium pada TV atau peranti anda yang lain.</translation>
 <translation id="6291949900244949761">Tanya apabila tapak mahu mengakses peranti USB (disyorkan)</translation>
 <translation id="6291953229176937411">&amp;Paparkan dalam Pencari</translation>
 <translation id="6295158916970320988">Semua tapak</translation>
@@ -3565,6 +3577,7 @@
 <translation id="6395423953133416962">Hantar <ph name="BEGIN_LINK1" />maklumat sistem<ph name="END_LINK1" /> dan <ph name="BEGIN_LINK2" />metrik<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Sekat tapak daripada menggunakan penderia gerakan</translation>
 <translation id="6397094776139756010">Pilihan penyegerakan dan pemperibadian</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> akan dapat menyimpan perubahan anda terus pada fail dalam folder berikut. Tapak ini boleh menyimpan perubahan hanya semasa tab ini terbuka.</translation>
 <translation id="6398715114293939307">Alih keluar Gedung Google Play</translation>
 <translation id="6398765197997659313">Keluar daripada skrin penuh</translation>
 <translation id="6399774419735315745">Perisik</translation>
@@ -3609,11 +3622,13 @@
 <translation id="6455264371803474013">Di tapak web tertentu</translation>
 <translation id="6455894534188563617">&amp;Folder Baharu</translation>
 <translation id="6456394469623773452">Halus</translation>
+<translation id="6456955391422100996">Iklan dialih keluar.</translation>
 <translation id="645705751491738698">Terus menyekat JavaScript</translation>
 <translation id="6458701200018867744">Muat naik gagal (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Use Selection for Find</translation>
 <translation id="6459799433792303855">Tetingkap aktif dialihkan ke paparan lain.</translation>
 <translation id="6460601847208524483">Cari Seterusnya</translation>
+<translation id="6461170143930046705">Mencari rangkaian...</translation>
 <translation id="6463795194797719782">&amp;Edit</translation>
 <translation id="6466988389784393586">&amp;Buka Semua Penanda Halaman</translation>
 <translation id="6467304607960172345">Optimumkan video skrin penuh</translation>
@@ -3652,6 +3667,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Anda bersambung ke rangkaian <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Kongsi</translation>
 <translation id="6528513914570774834">Benarkan pengguna lain peranti ini untuk menggunakan rangkaian ini</translation>
 <translation id="652948702951888897">Sejarah Chrome</translation>
@@ -3748,7 +3764,6 @@
 <translation id="6680650203439190394">Kadar</translation>
 <translation id="6681668084120808868">Ambil foto</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" akan dinyahpasang.</translation>
-<translation id="6685083257944113180">Hentikan, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Buka Google Play</translation>
 <translation id="6686490380836145850">Tutup tab di sebelah kanan</translation>
 <translation id="6686817083349815241">Simpan kata laluan anda</translation>
@@ -3856,6 +3871,7 @@
 <translation id="6845038076637626672">Buka dimaksimumkan</translation>
 <translation id="6845325883481699275">Bantu tingkatkan keselamatan Chrome</translation>
 <translation id="6848388270925200958">Sekarang, anda mempunyai beberapa kad yang boleh digunakan pada peranti ini sahaja</translation>
+<translation id="6850286078059909152">Warna teks</translation>
 <translation id="6851497530878285708">Apl Didayakan</translation>
 <translation id="6853388645642883916">Pengemaskinian tidur</translation>
 <translation id="68541483639528434">Tutup tab lain</translation>
@@ -3905,7 +3921,6 @@
 <translation id="6923132443355966645">Tatal / Klik</translation>
 <translation id="6923633482430812883">Ralat semasa melekapkan kongsi. Sila pastikan bahawa pelayan fail yang bersambung dengan anda itu menyokong SMBv2 atau yang lebih baharu.</translation>
 <translation id="6930036377490597025">Kunci keselamatan luaran atau penderia terbina dalam</translation>
-<translation id="6930242544192836755">Tempoh</translation>
 <translation id="693807610556624488">Pengendalian tulis melebihi panjang maksimum atribut pada: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Sila log masuk ke <ph name="TOKEN_NAME" /> untuk mengesahkan <ph name="HOST_NAME" /> dengan sijil anda.</translation>
 <translation id="6943176775188458830">Batalkan pencetakan</translation>
@@ -3919,6 +3934,7 @@
 <translation id="6951153907720526401">Pengendali Pembayaran</translation>
 <translation id="6951663584153258142">Organisasi anda meminta anda mengemas kini peranti ini</translation>
 <translation id="6953878494808481632">Maklumat yang berkaitan</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fail: <ph name="FILES" />}other{Fail: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Semak Pop Timbul</translation>
 <translation id="6957044667612803194">Kunci keselamatan ini tidak menyokong PIN</translation>
 <translation id="6957231940976260713">Nama perkhidmatan</translation>
@@ -4131,7 +4147,6 @@
 <translation id="7254554697254365959">Halaman Ini Tidak Dapat Diterjemahkan.</translation>
 <translation id="7254951428499890870">Adakah anda pasti anda mahu melancarkan "<ph name="APP_NAME" />" dalam mod diagnostik?</translation>
 <translation id="7255002516883565667">Sekarang, anda mempunyai satu kad yang boleh digunakan pada peranti ini sahaja</translation>
-<translation id="7255220508626648026">Menghantar: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Sentuh kunci keselamatan anda sekali lagi untuk mengesahkan penetapan semula. Semua maklumat yang disimpan pada kunci keselamatan, termasuk PINnya, akan dipadamkan.</translation>
 <translation id="7255935316994522020">Guna</translation>
 <translation id="7256069762010468647">Tapak sedang menggunakan kamera anda</translation>
@@ -4265,6 +4280,7 @@
 <translation id="7456142309650173560">Pembangunan</translation>
 <translation id="7456847797759667638">Buka Lokasi...</translation>
 <translation id="7458168200501453431">Menggunakan penyemak ejaan yang sama seperti yang digunakan dalam Carian Google. Teks yang anda taip dalam penyemak imbas akan dihantar kepada Google.</translation>
+<translation id="7460045493116006516">Tema semasa yang telah dipasang</translation>
 <translation id="7461924472993315131">Pin</translation>
 <translation id="746216226901520237">Selepas ini, telefon anda akan membuka kunci <ph name="DEVICE_TYPE" /> anda. Anda boleh mematikan Smart Lock dalam Tetapan.</translation>
 <translation id="7463006580194749499">Tambah orang</translation>
@@ -4324,6 +4340,7 @@
 <translation id="7554791636758816595">Tab Baharu</translation>
 <translation id="7556033326131260574">Smart Lock tidak dapat mengesahkan akaun anda. Taip kata laluan anda untuk masuk.</translation>
 <translation id="7556242789364317684">Malangnya, <ph name="SHORT_PRODUCT_NAME" /> tidak dapat memulihkan tetapan anda. <ph name="SHORT_PRODUCT_NAME" /> mesti menetapkan semula peranti anda menggunakan Powerwash untuk membetulkan ralat.</translation>
+<translation id="7559444627302317199">Sila periksa sambungan rangkaian dan cuba semula.</translation>
 <translation id="7559719679815339381">Sila tunggu....apl Kiosk sedang dalam proses untuk dikemas kini. Jangan alih keluar batang USB.</translation>
 <translation id="7561196759112975576">Sentiasa</translation>
 <translation id="7563991800558061108">Untuk pulih daripada ralat ini, anda perlu log masuk ke dalam Akaun Google
@@ -4566,7 +4583,6 @@
 <translation id="7887334752153342268">Pendua</translation>
 <translation id="7887864092952184874">Tetikus Bluetooth digandingkan</translation>
 <translation id="7889565820482017512">Saiz Paparan</translation>
-<translation id="7889966925761734854">Cari</translation>
 <translation id="7893008570150657497">Akses foto, muzik dan media lain dari komputer anda</translation>
 <translation id="7893153962594818789">Bluetooth dimatikan pada <ph name="DEVICE_TYPE" /> ini. Masukkan kata laluan anda dan hidupkan Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Lalai)</translation>
@@ -4574,7 +4590,6 @@
 <translation id="7898627924844766532">Simpan dalam bar alat</translation>
 <translation id="7898725031477653577">Sentiasa terjemahkan</translation>
 <translation id="790040513076446191">Manipulasi tetapan yang berkaitan privasi</translation>
-<translation id="7902874111237641165">Gerakan Lancar [beta]</translation>
 <translation id="7903345046358933331">Halaman tersebut menjadi tidak responsif. Anda boleh menunggu halaman menjadi responsif atau tutup halaman.</translation>
 <translation id="7903742244674067440">Anda mempunyai sijil pada fail yang mengenal pasti pihak berkuasa sijil ini</translation>
 <translation id="7903925330883316394">Utiliti: <ph name="UTILITY_TYPE" /></translation>
@@ -4686,6 +4701,7 @@
 <translation id="8037117027592400564">Baca semua teks yang dituturkan menggunakan pertuturan disintesiskan</translation>
 <translation id="8037357227543935929">Tanya (lalai)</translation>
 <translation id="803771048473350947">Fail</translation>
+<translation id="8042142357103597104">Kelegapan teks</translation>
 <translation id="8044899503464538266">Perlahan</translation>
 <translation id="8045253504249021590">Penyegerakan telah dihentikan melalui Papan Pemuka Google.</translation>
 <translation id="8045923671629973368">Masukkan ID aplikasi atau URL gedung web</translation>
@@ -4722,7 +4738,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Anda boleh mematikan perkhidmatan ini dalam Tetapan.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN tidak sepadan</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> sedang menggunakan tetapan proksi daripada sambungan</translation>
-<translation id="8099495042588009598">Lagi kebenaran</translation>
 <translation id="8101987792947961127">Powerwash diperlukan pada but semula seterusnya</translation>
 <translation id="8102159139658438129">Pergi ke <ph name="LINK_BEGIN" />Tetapan<ph name="LINK_END" /> untuk melihat pilihan bagi telefon anda yang disambungkan</translation>
 <translation id="8104696615244072556">Powerwash peranti <ph name="IDS_SHORT_PRODUCT_NAME" /> anda dan kembali ke versi terdahulu.</translation>
@@ -4774,8 +4789,10 @@
     Pada pendapat saya, tapak ini tidak perlu disekat!</translation>
 <translation id="8184288427634747179">Beralih kepada <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Maklumat lanjut</translation>
+<translation id="8184472985242519288">Seragam</translation>
 <translation id="8185331656081929126">Paparkan pemberitahuan apabila pencetak baharu dikesan pada rangkaian</translation>
 <translation id="8186609076106987817">Pelayan tidak dapat mencari fail.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> boleh membaca semua fail dalam folder berikut. Tapak ini boleh melihat perubahan pada folder hanya semasa tab ini terbuka.</translation>
 <translation id="8188389033983459049">Semak tetapan peranti anda dan hidupkannya untuk meneruskan</translation>
 <translation id="8190193592390505034">Disambungkan ke <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Uruskan apl, sambungan dan tema anda</translation>
@@ -4879,7 +4896,6 @@
 <translation id="833986336429795709">Untuk membuka pautan ini, pilih apl</translation>
 <translation id="8342861492835240085">Pilih koleksi</translation>
 <translation id="834290227245955730">PIN tidak sah. Baki cubaan semula: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Gunakan lebar jalur tinggi untuk mendapatkan video dan animasi yang terbaik. Orang lain yang menggunakan sambungan perlahan mungkin tidak dapat melihat kandungan anda.</translation>
 <translation id="8351419472474436977">Pelanjutan telah mengambil alih kawalan tetapan proksi anda, yang bermakna pelanjutan ini boleh mengubah, menghentikan atau mendengar secara senyap terhadap apa sahaja yang anda lakukan dalam talian. Jika anda tidak pasti mengapa 
 perubahan ini berlaku, anda mungkin tidak mahukannya.</translation>
 <translation id="8351630282875799764">Bateri tidak dicas</translation>
@@ -4913,9 +4929,11 @@
 <translation id="839736845446313156">Daftar</translation>
 <translation id="8398877366907290961">Teruskan juga</translation>
 <translation id="8400146488506985033">Urus orang</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> boleh menyimpan perubahan anda terus pada fail dalam folder berikut. Tapak ini boleh menyimpan perubahan hanya semasa tab ini terbuka.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Tanya dahulu (disyorkan)</translation>
 <translation id="8418445294933751433">&amp;Paparkan sebagai tab</translation>
+<translation id="8418905021510211421">Halaman ini dibenarkan untuk membaca folder pada peranti anda.</translation>
 <translation id="8419098111404128271">Hasil carian untuk '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="8419368276599091549">Selamat datang ke <ph name="DEVICE_TYPE" /> anda!</translation>
 <translation id="8425213833346101688">Tukar</translation>
@@ -4935,6 +4953,7 @@
 <translation id="8438566539970814960">Mempertingkatkan carian dan penyemakan imbas</translation>
 <translation id="8439506636278576865">Tawaran untuk menterjemahkan halaman dalam bahasa ini</translation>
 <translation id="8440630305826533614">Apl Linux</translation>
+<translation id="844241640324986723">Gagal memadamkan data log masuk anda.</translation>
 <translation id="8443338615972234259">Sila buat akaun baharu untuk pengguna di bawah seliaan anda sekarang.</translation>
 <translation id="8446884382197647889">Ketahui Lebih Lanjut</translation>
 <translation id="8447409163267621480">Termasuk sama ada Ctrl atau Alt</translation>
@@ -4950,8 +4969,6 @@
 <translation id="8461914792118322307">Proksi</translation>
 <translation id="8463215747450521436">Pengguna diselia ini mungkin telah dipadamkan atau dilumpuhkan oleh pengurus. Sila hubungi pengurus jika anda ingin meneruskan log masuk sebagai pengguna ini.</translation>
 <translation id="846374874681391779">Bar muat turun</translation>
-<translation id="8463807869745732775">"&gt;
-    Data log masuk kunci keselamatan yang disimpan</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> dilumpuhkan.</translation>
 <translation id="8464132254133862871">Akaun pengguna ini tidak layak untuk mendapatkan perkhidmatan.</translation>
 <translation id="8465252176946159372">Tidak sah</translation>
@@ -5017,6 +5034,7 @@
 <translation id="8569002732135253578">Sekarang mencetak <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Tiada destinasi dijumpai</translation>
 <translation id="8571213806525832805">4 minggu terakhir</translation>
+<translation id="8573403125070227391">Iklan ini menggunakan terlalu banyak sumber untuk peranti anda, maka Chrome mengalihkannya keluar.</translation>
 <translation id="8574990355410201600">Sentiasa benarkan bunyi pada <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Tekan dan tahan <ph name="KEY_EQUIVALENT" /> untuk Berhenti</translation>
 <translation id="8578639784464423491">Tidak boleh melebihi 99 huruf</translation>
@@ -5040,13 +5058,13 @@
 <translation id="8609465669617005112">Alihkan ke atas</translation>
 <translation id="8610103157987623234">Format salah, sila cuba lagi</translation>
 <translation id="8615618338313291042">Apl Inkognito: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Letak bayang</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Status perayauan</translation>
 <translation id="8620765578342452535">Konfigurasikan sambungan rangkaian</translation>
 <translation id="8621866727807194849">Terdapat perisian yang berbahaya pada komputer anda. Chrome sedang mengalih keluar perisian tersebut, memulihkan tetapan anda dan melumpuhkan sambungan. Tindakan ini akan menjadikan penyemak imbas anda berfungsi seperti biasa semula.</translation>
 <translation id="8621979332865976405">Kongsi seluruh skrin anda</translation>
 <translation id="862542460444371744">&amp;Sambungan</translation>
-<translation id="8627151598708688654">Pilih sumber</translation>
 <translation id="862727964348362408">Digantung</translation>
 <translation id="862750493060684461">Cache CSS</translation>
 <translation id="8627795981664801467">Sambungan selamat sahaja</translation>
@@ -5100,6 +5118,7 @@
 <translation id="8688579245973331962">Tidak melihat nama anda?</translation>
 <translation id="8688591111840995413">Kata laluan salah</translation>
 <translation id="8688672835843460752">Tersedia</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Buka &amp;Lokasi...</translation>
 <translation id="869884720829132584">Menu aplikasi</translation>
 <translation id="869891660844655955">Tarikh tamat tempoh</translation>
@@ -5263,6 +5282,7 @@
 <translation id="891365694296252935">Hantar data penggunaan dan diagnostik. Pada masa ini, peranti ini menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini tidak akan digunakan untuk mengenal pasti anak anda dan akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Tetapan ini dikuatkuasakan oleh pemilik. Jika Aktiviti Web &amp; Apl tambahan dihidupkan untuk anak anda, data ini mungkin disimpan ke Akaun Googlenya. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Memuatkan cadangan</translation>
 <translation id="8916476537757519021">Subbingkai Inkognito: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - dibenarkan membaca folder pada peranti anda</translation>
 <translation id="8919275547519617350">Log masuk dan hidupkan penyegerakan untuk mendapatkan semua kata laluan anda pada semua peranti anda.</translation>
 <translation id="8921366488406707015">Mengesahkan kunci keselamatan anda...</translation>
 <translation id="8922013791253848639">Sentiasa benarkan iklan di tapak ini</translation>
@@ -5292,7 +5312,6 @@
 <translation id="8965037249707889821">Masukkan kata laluan lama</translation>
 <translation id="8966870118594285808">Buka semula tab jika anda menutup tab itu secara tidak sengaja</translation>
 <translation id="8967866634928501045">Tekan Alt Shift A untuk memaparkan</translation>
-<translation id="8970203673128054105">Lihat senarai mod hantar</translation>
 <translation id="89720367119469899">Lepas</translation>
 <translation id="8972513834460200407">Sila semak dengan pentadbir rangkaian anda bagi memastikan bahawa tembok api tidak menyekat muat turun dari pelayan Google.</translation>
 <translation id="8973557916016709913">Alih keluar tahap zum</translation>
@@ -5441,6 +5460,7 @@
 <translation id="9214520840402538427">Alamak! Pemulaan sifat masa pemasangan telah tamat masa. Sila hubungi wakil sokongan anda.</translation>
 <translation id="9214695392875603905">Kek cawan</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" ditambah</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> akan dapat menyimpan perubahan anda terus pada fail berikut. Tapak ini boleh menyimpan perubahan hanya semasa tab ini terbuka.</translation>
 <translation id="9218430445555521422">Tetapkan sebagai lalai</translation>
 <translation id="9219103736887031265">Imej</translation>
 <translation id="9220525904950070496">Alih keluar akaun</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index ce7366e..1c76cd2 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Fout bij starten van virtuele machine. Probeer het opnieuw.</translation>
 <translation id="1089439967362294234">Wachtwoord wijzigen</translation>
 <translation id="1090126737595388931">Geen actieve achtergrondapps</translation>
+<translation id="1090290614672149983">Wijzigingen opslaan in oorspronkelijk bestand?</translation>
 <translation id="1090918500949388876">Open de Assistent wanneer je scherm is ingeschakeld door 'Oké Google' te zeggen</translation>
 <translation id="1091767800771861448">Druk op ESCAPE om over te slaan (alleen voor niet-officiële builds).</translation>
 <translation id="1093457606523402488">Zichtbare netwerken:</translation>
 <translation id="1094607894174825014">Lees- of schrijfbewerking is aangevraagd met een ongeldige verschuiving op: <ph name="DEVICE_NAME" />.</translation>
 <translation id="1097658378307015415">Voordat je inlogt, log je eerst in als gast om het netwerk <ph name="NETWORK_ID" /> te activeren.</translation>
+<translation id="110029732810301672">Dit tabblad mag opslaan in oorspronkelijke bestanden.</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> altijd vertalen</translation>
 <translation id="1108600514891325577">&amp;Stop</translation>
 <translation id="1110155001042129815">Wachten</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Zonnebril</translation>
 <translation id="1151917987301063366"><ph name="HOST" /> altijd toegang tot sensoren geven</translation>
 <translation id="1153356358378277386">Gekoppelde apparaten</translation>
-<translation id="1156488781945104845">Huidige tijd</translation>
 <translation id="1161575384898972166">Log in bij <ph name="TOKEN_NAME" /> om het klantcertificaat te exporteren.</translation>
 <translation id="1163931534039071049">&amp;Framebron weergeven</translation>
 <translation id="1164674268730883318">Smart Lock voor <ph name="DEVICE_TYPE" /> uitschakelen?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Opslaginstellingen voor Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies en andere sitegegevens</translation>
 <translation id="127668050356036882">Al je vensters sluiten</translation>
-<translation id="1277908057200820621">Apparaatlijst weergeven</translation>
 <translation id="1280820357415527819">Mobiele netwerken zoeken</translation>
 <translation id="1285320974508926690">Deze site nooit vertalen</translation>
 <translation id="1285484354230578868">Gegevens opslaan in je Google Drive-account</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Thuisnetwerk zonder roaming</translation>
 <translation id="1316136264406804862">Zoeken...</translation>
 <translation id="1316495628809031177">Synchronisatie is onderbroken</translation>
+<translation id="1317637799698924700">Je dockingstation werkt in de voor USB Type-C-geschikte modus.</translation>
 <translation id="1322046419516468189">Bekijk en beheer opgeslagen wachtwoorden in je <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Log in bij Chrome om de tabbladen van je andere apparaten te bekijken.</translation>
 <translation id="1327074568633507428">Printer op Google Cloudprinter</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Je <ph name="BEGIN_LINK" />browser wordt beheerd<ph name="END_LINK" /> door <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Gebruik Linux-tools, editors en IDE's op je <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Meer informatie&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Een bestand selecteren</translation>
+<translation id="1370749010280229230">Er is een probleem met het scherm dat is aangesloten op het dock</translation>
 <translation id="1371301976177520732">Je bladwijzers, wachtwoorden, geschiedenis en meer op al je apparaten</translation>
 <translation id="1372841398847029212">Synchroniseren met je account</translation>
 <translation id="1374844444528092021">Het certificaat dat wordt vereist door het netwerk '<ph name="NETWORK_NAME" />', is niet geïnstalleerd of is niet meer geldig. Haal een nieuw certificaat op en probeer opnieuw verbinding te maken.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Webpagina, één bestand</translation>
 <translation id="1451917004835509682">Persoon met beperkte rechten toevoegen</translation>
 <translation id="1454223536435069390">&amp;Screenshot maken</translation>
+<translation id="1458243790901188746">{0,plural, =1{Map: <ph name="DIRECTORIES" />}other{Mappen: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Zoekmachines toegevoegd door extensies</translation>
 <translation id="146000042969587795">Dit frame is geblokkeerd omdat het onbeveiligde content bevat.</translation>
 <translation id="146219525117638703">ONC-status</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Invoeropties weergeven</translation>
 <translation id="1651008383952180276">Je moet twee keer dezelfde wachtwoordzin opgeven</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Voeg de printer toe aan Google Cloudprinter zodat je overal kunt afdrukken.}other{Voeg # printers toe aan Google Cloudprinter zodat je overal kunt afdrukken.}}</translation>
+<translation id="1656528038316521561">Ondoorzichtigheid van achtergrond</translation>
 <translation id="1657406563541664238">Help <ph name="PRODUCT_NAME" /> beter te maken door automatisch gebruiksstatistieken en crashmeldingen naar Google te verzenden</translation>
 <translation id="1658424621194652532">Deze pagina heeft toegang tot je microfoon.</translation>
 <translation id="1660204651932907780">Toestaan dat sites geluid afspelen (aanbevolen)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> wil het merk en het model van je beveiligingssleutel bekijken</translation>
 <translation id="1679068421605151609">Ontwikkelaarstools</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Weet je zeker dat je het scherm wilt afsluiten?</translation>
 <translation id="167983332380191032">Beheerservice heeft HTTP-fout verzonden.</translation>
 <translation id="1680849702532889074">Er is een fout opgetreden tijdens de installatie van je Linux-app.</translation>
 <translation id="16815041330799488">Niet toestaan dat sites tekst en afbeeldingen kunnen zien die naar het klembord zijn gekopieerd</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">ID voor beschermde media</translation>
 <translation id="175196451752279553">Gesloten tabblad opni&amp;euw openen</translation>
 <translation id="1753905327828125965">Meest bezocht</translation>
+<translation id="1755601632425835748">Tekstgrootte</translation>
 <translation id="1756681705074952506">Invoermethode</translation>
 <translation id="1757301747492736405">Verwijderen in behandeling</translation>
 <translation id="175772926354468439">Thema inschakelen</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Kleiner</translation>
 <translation id="1919345977826869612">Advertenties</translation>
 <translation id="1919814239594435008">Plug-in zonder sandbox toegestaan</translation>
+<translation id="1920390473494685033">Contacten</translation>
 <translation id="1921050530041573580">Je telefoon koppelen aan Berichten</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Slimme Google-functies gebruiken in <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Incognitotabblad: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> op <ph name="PEPPER_PLUGIN_DOMAIN" /> vraagt om toegang tot je computer</translation>
 <translation id="2178614541317717477">Inbreuk op CA</translation>
+<translation id="2179849162388791084">Kan geen inloggegevens ophalen uit je beveiligingssleutel.</translation>
 <translation id="218070003709087997">Gebruik een cijfer om aan te geven hoeveel exemplaren er moeten worden afgedrukt (1-999).</translation>
 <translation id="2184515124301515068">Chrome laten kiezen wanneer sites geluid mogen afspelen (aanbevolen)</translation>
 <translation id="2187895286714876935">Fout bij importeren van servercertificaat</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Alle cookies en sitegegevens</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 item gekopieerd}other{# items gekopieerd}}</translation>
 <translation id="2278562042389100163">Browservenster openen</translation>
-<translation id="2279874276457403668">Er kan slechts één sessie tegelijkertijd worden gemaakt.</translation>
 <translation id="2280486287150724112">Marge rechts</translation>
 <translation id="2282146716419988068">GPU-proces</translation>
 <translation id="2282155092769082568">URL voor autoconfiguratie</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Notities op het vergrendelingsscherm worden automatisch opgeslagen in <ph name="LOCK_SCREEN_APP_NAME" />. Je laatste notitie blijft op het vergrendelingsscherm staan.</translation>
 <translation id="2353297238722298836">Camera en microfoon toegestaan</translation>
 <translation id="2356070529366658676">Vragen</translation>
-<translation id="2357949918965361754">Je kunt deze functie gebruiken om content van Chrome weer te geven op je tv of andere apparaten.</translation>
 <translation id="2359345697448000899">Je kunt je extensies beheren door in het gereedschapsmenu te klikken op 'Extensies'.</translation>
 <translation id="2359808026110333948">Doorgaan</translation>
 <translation id="236117173274098341">Optimaliseren</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Je organisatie vereist een onmiddellijke update voor dit apparaat</translation>
 <translation id="2439545803278355377">Geef je nieuwe pincode op. Een pincode moet uit minstens vier tekens bestaan en mag bestaan uit letters, cijfers en andere tekens.</translation>
 <translation id="2440604414813129000">Br&amp;on weergeven</translation>
+<translation id="2442916515643169563">Tekstschaduw</translation>
 <translation id="2444119669991608829">Is deze pagina niet in het <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Hoofddirectory van extensie is vereist.</translation>
 <translation id="2445484935443597917">Een nieuw profiel maken</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Niet na</translation>
 <translation id="2739191690716947896">Foutopsporing</translation>
 <translation id="2739240477418971307">Je toegankelijkheidsinstellingen wijzigen</translation>
+<translation id="274029851662193272">Verlaagd</translation>
 <translation id="2740393541869613458">door de gebruiker met beperkte rechten bezochte websites controleren, en</translation>
 <translation id="2741912629735277980">UI weergeven op inlogscherm</translation>
 <translation id="274290345632688601">Linux-apps en -bestanden herstellen</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Snelkoppeling bestaat al</translation>
 <translation id="2807517655263062534">Bestanden die je downloadt, worden hier weergegeven</translation>
 <translation id="2809586584051668049">en <ph name="NUMBER_ADDITIONAL_DISABLED" /> meer</translation>
+<translation id="2812049959647166806">Thunderbolt wordt niet ondersteund</translation>
 <translation id="2812944337881233323">Probeer uit en weer in te loggen</translation>
 <translation id="2812989263793994277">Geen afbeeldingen weergeven</translation>
 <translation id="281390819046738856">Verzoek kan niet worden ondertekend.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Provider</translation>
 <translation id="2844169650293029770">USB-C-apparaat (poort links aan de voorkant)</translation>
 <translation id="2845382757467349449">Bladwijzerbalk altijd weergeven</translation>
-<translation id="2847759467426165163">Casten naar</translation>
 <translation id="284805635805850872">Schadelijke software verwijderen?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Opschonen is mislukt</translation>
@@ -1297,6 +1305,7 @@
     Melding van de server: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Mediagalerij toevoegen op directory</translation>
 <translation id="2910318910161511225">Maak verbinding met een netwerk en probeer het opnieuw</translation>
+<translation id="2910518940971897750">Opslaan in oorspronkelijk bestand</translation>
 <translation id="2913331724188855103">Sites toestaan cookiegegevens op te slaan en te lezen (aanbevolen)</translation>
 <translation id="2915102088417824677">Activiteitenlogboek bekijken</translation>
 <translation id="2915873080513663243">Automatisch scannen</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI-apparaten</translation>
 <translation id="3015639418649705390">Nu opnieuw starten</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> kan niet automatisch worden geconfigureerd. Geef geavanceerde printergegevens op.</translation>
+<translation id="3016381065346027039">Geen logboekitems</translation>
 <translation id="3016641847947582299">Component bijgewerkt</translation>
 <translation id="3016780570757425217">Je locatie weten</translation>
 <translation id="3017079585324758401">Achtergrond</translation>
 <translation id="3020183492814296499">Snelkoppelingen</translation>
 <translation id="3020990233660977256">Serienummer: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Vlinder</translation>
+<translation id="3021408157810018664">Wijzigingen opslaan in oorspronkelijke bestanden?</translation>
 <translation id="3021426244864538700">De gegevens van deze site openen</translation>
 <translation id="3021678814754966447">&amp;Framebron weergeven</translation>
 <translation id="3022978424994383087">Dat heb ik niet verstaan.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Je kunt het inloggen ook overslaan en <ph name="LINK_START" />browsen als gast<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Een site heeft toegang tot video-invoer</translation>
 <translation id="3177909033752230686">Brontaal:</translation>
+<translation id="3179982752812949580">Lettertype</translation>
 <translation id="3181954750937456830">Safe Browsing (hiermee worden jij en je apparaat beschermd tegen gevaarlijke sites)</translation>
 <translation id="3182749001423093222">Spellingcontrole</translation>
 <translation id="3183139917765991655">Profile Importer</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Openen als venster</translation>
 <translation id="3278001907972365362">Je Google-accounts vereisen aandacht</translation>
 <translation id="3279230909244266691">Dit proces kan enkele minuten duren. De virtuele machine wordt gestart.</translation>
-<translation id="3279741024917655738">Video's op volledig scherm weergeven op</translation>
 <translation id="3280237271814976245">Opslaan &amp;als...</translation>
 <translation id="3280243678470289153">In Chrome blijven</translation>
 <translation id="3281892622610078515">Bestanden en programma's die in quarantaine worden gezet:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Geen zoekresultaten gevonden</translation>
 <translation id="3305389145870741612">Het formatteren kan enkele seconden duren. Een ogenblik geduld.</translation>
 <translation id="3305661444342691068">Pdf openen in voorbeeldweergave</translation>
-<translation id="3306684685104080068">Casten naar cloud-gebaseerde services zoals Google Hangouts inschakelen.</translation>
+<translation id="3307871847038842490">Deze pagina mag opslaan in oorspronkelijke bestanden.</translation>
 <translation id="3308006649705061278">Organisatie-eenheid (OU)</translation>
 <translation id="3308116878371095290">Het instellen van cookies door deze pagina is geblokkeerd.</translation>
 <translation id="3308134619352333507">Knop verbergen</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Accountconfiguratie annuleren?</translation>
 <translation id="3464012987031883895">Een site heeft toegang tot audio-invoer</translation>
 <translation id="346431825526753">Dit is een account voor kinderen dat wordt beheerd door <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Een video- of audiobestand streamen</translation>
 <translation id="3468999815377931311">Android-telefoon</translation>
 <translation id="3470442499439619530">Deze gebruiker verwijderen</translation>
 <translation id="3473479545200714844">Vergrootglas</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Kleiner</translation>
 <translation id="3497560059572256875">Doodle delen</translation>
 <translation id="3505030558724226696">Apparaattoegang intrekken</translation>
+<translation id="3505635633742443645">De HDMI-poort van je dock kan niet worden gebruikt wanneer de USB Type-C-poort wordt gebruikt voor video-uitvoer. Gebruik een andere poort voor een van de schermen.</translation>
 <translation id="3507421388498836150">Huidige rechten voor '<ph name="EXTENSION_NAME" />'</translation>
 <translation id="3507888235492474624">Opnieuw scannen naar Bluetooth-apparaten</translation>
 <translation id="3508920295779105875">Een andere map kiezen...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Installatie geslaagd</translation>
 <translation id="3578594933904494462">De content van dit tabblad wordt gedeeld.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; wil een printer delen &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; met een van je groepen: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Als je akkoord gaat, kunnen alle groepsleden de printer gebruiken voor afdrukken.</translation>
+<translation id="357889014807611375">wifi met datalimiet</translation>
 <translation id="3584169441612580296">Foto's, muziek en andere media van je computer lezen en wijzigen</translation>
 <translation id="3587482841069643663">Alles</translation>
 <translation id="358796204584394954">Typ deze code op '<ph name="DEVICE_NAME" />' om te koppelen:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Invoeren</translation>
 <translation id="3593965109698325041">Naambeperkingen voor certificaten</translation>
 <translation id="3596235046596950091">Cloudservices inschakelen</translation>
+<translation id="3599221874935822507">Verhoogd</translation>
 <translation id="3599863153486145794">Hiermee wordt de geschiedenis van alle ingelogde apparaten gewist. Er kunnen andere vormen van browsegeschiedenis zijn opgeslagen voor je Google-account op <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Informatie over webverzoek</translation>
 <translation id="3600792891314830896">Sites dempen die geluid afspelen</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Gedownload door &lt;a href='<ph name="URL" />'&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> weergeven</translation>
 <translation id="3613422051106148727">&amp;Openen op nieuw tabblad</translation>
+<translation id="3615073365085224194">Raak de vingerafdruksensor aan met je vinger</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Browsegegevens wissen</translation>
 <translation id="3617891479562106823">Achtergronden zijn niet beschikbaar. Probeer het later opnieuw.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Homepage</translation>
 <translation id="3720996970802414353">Toch overschakelen</translation>
 <translation id="3722108462506185496">Fout bij starten van service voor virtuele machines. Probeer het opnieuw.</translation>
-<translation id="3723158278575423087">Welkom bij de Cast-functie in Chromium!</translation>
 <translation id="3725367690636977613">pagina's</translation>
 <translation id="3726137731714254362">Als je hier mappen verwijdert, worden de bestanden niet meer gedeeld maar worden ze niet verwijderd.</translation>
 <translation id="3727148787322499904">Het wijzigen van deze instelling is van invloed op alle gedeelde netwerken</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Gedetailleerde build-gegevens</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Communiceren met een USB-apparaat}other{Communiceren met # USB-apparaten}}</translation>
 <translation id="3765246971671567135">Kan beleid voor offline demomodus niet lezen.</translation>
-<translation id="3766223500670287046">Extern scherm</translation>
 <translation id="3768037234834996183">Je voorkeuren worden gesynchroniseerd…</translation>
 <translation id="377050016711188788">IJs</translation>
 <translation id="3771294271822695279">Videobestanden</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Til je vinger op en plaats deze opnieuw op de sensor</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: synchronisatie gepauzeerd</translation>
-<translation id="3862134173397075045">Welkom bij de Cast-functie in Chrome!</translation>
 <translation id="3862693525629180217">Verifiëren via ingebouwde sensor</translation>
 <translation id="3862788408946266506">Een app met het manifestkenmerk 'kiosk_only' moet worden geïnstalleerd in de Chrome OS-kioskmodus</translation>
 <translation id="3865414814144988605">Resolutie</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smart Lock-telefoon gewijzigd</translation>
 <translation id="3927932062596804919">Weigeren</translation>
 <translation id="3930737994424905957">Apparaten zoeken</translation>
+<translation id="3930968231047618417">Achtergrondkleur</translation>
 <translation id="3933283459331715412">Verwijderd wachtwoord voor <ph name="USERNAME" /> herstellen</translation>
 <translation id="3936390757709632190">Audio &amp;openen op nieuw tabblad</translation>
 <translation id="3936925983113350642">Het wachtwoord dat je kiest, is later vereist voor het herstellen van dit certificaat. Sla het wachtwoord op een veilige locatie op.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Geïmporteerd uit Internet Explorer</translation>
 <translation id="3950820424414687140">Inloggen</translation>
+<translation id="3950828138786918475">Dit tabblad mag een map op je apparaat lezen.</translation>
 <translation id="3954354850384043518">In behandeling</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> hertz)</translation>
 <translation id="3954953195017194676">Je hebt geen onlangs vastgelegde WebRTC-gebeurtenislogboeken.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Berekenen...</translation>
 <translation id="3975565978598857337">Verbinding maken met server voor domein mislukt</translation>
 <translation id="397703832102027365">Wordt voltooid...</translation>
+<translation id="3977886311744775419">Automatische updates worden niet gedownload op dit type netwerk, maar je kunt handmatig op updates controleren.</translation>
 <translation id="3979395879372752341">Nieuwe extensie toegevoegd (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> inschakelen</translation>
 <translation id="3981760180856053153">Ongeldig opslagtype opgegeven.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Tikken-voor-klikken inschakelen</translation>
 <translation id="4195643157523330669">Openen op nieuw tabblad</translation>
 <translation id="4195814663415092787">Doorgaan waar je gebleven was</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> kan je wijzigingen rechtstreeks opslaan in de volgende bestanden. Deze site kan wijzigingen alleen opslaan als dit tabblad is geopend.</translation>
 <translation id="4198146608511578238">Houd het Launcher-pictogram vast om met de Google Assistent te praten.</translation>
 <translation id="4200689466366162458">Aangepaste woorden</translation>
 <translation id="4200983522494130825">Nieuw &amp;tabblad</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Automatisch verbinding maken met mobiel netwerk</translation>
 <translation id="4268025649754414643">Sleutelcodering</translation>
 <translation id="4270393598798225102">Versie <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Geen overeenkomsten</translation>
 <translation id="4275663329226226506">Media</translation>
 <translation id="4275830172053184480">Je apparaat opnieuw opstarten</translation>
 <translation id="4278101229438943600">De Assistent staat klaar</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">CPU-tijd</translation>
 <translation id="4534661889221639075">Probeer het opnieuw.</translation>
 <translation id="4535127706710932914">Standaardprofiel</translation>
+<translation id="4535767533210902251">De vingerafdruksensor is de toets rechtsboven op je toetsenbord. Raak deze kort aan met een vinger.</translation>
 <translation id="4538684596480161368">Plug-ins zonder sandbox op <ph name="HOST" /> altijd blokkeren</translation>
 <translation id="4538792345715658285">Geïnstalleerd door bedrijfsbeleid.</translation>
 <translation id="4542520061254486227">Je gegevens voor <ph name="WEBSITE_1" /> en <ph name="WEBSITE_2" /> lezen</translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Meer...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Bluetooth-apparaat koppelen</translation>
+<translation id="4578012756826807359">Je inloggegevens zijn verwijderd.</translation>
 <translation id="4579581181964204535">Kan <ph name="HOST_NAME" /> niet casten.</translation>
 <translation id="4581774856936278355">Fout bij het herstellen van Linux</translation>
 <translation id="4582563038311694664">Alle instellingen opnieuw instellen</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Cookies van meerdere sites worden gewist bij het afsluiten.</translation>
 <translation id="4765582662863429759">Hiermee kan Android Berichten sms'jes van je telefoon naar je Chromebook doorsturen</translation>
 <translation id="4768332406694066911">Je hebt certificaten van deze organisaties waarmee je wordt geïdentificeerd</translation>
-<translation id="4772404146526168240">Beide schermen</translation>
 <translation id="4776146737004271126">Android-instellingen openen</translation>
 <translation id="4776917500594043016">Wachtwoord voor <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Log in om je bladwijzers, geschiedenis, wachtwoorden en andere instellingen op te halen op al je apparaten. Je wordt ook automatisch ingelogd bij je Google-services.</translation>
 <translation id="4929386379796360314">Afdrukbestemmingen</translation>
 <translation id="4930714375720679147">Inschakelen</translation>
-<translation id="4931132176527519925">Mirroring altijd gebruiken</translation>
 <translation id="4932733599132424254">Datum</translation>
 <translation id="4933484234309072027">ingesloten in <ph name="URL" /></translation>
 <translation id="493571969993549666">Gebruiker met beperkte rechten toevoegen</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Dempen opheffen</translation>
 <translation id="4992458225095111526">Powerwash bevestigen</translation>
 <translation id="4992473555164495036">Je beheerder heeft de beschikbare invoermethoden beperkt.</translation>
+<translation id="4992866843815555470">Je dock heeft een onderhoudsbeurt nodig. Als de ventilator niet werkt, wordt je dock uitgeschakeld.</translation>
 <translation id="4992926179187649719">'Oké Google' inschakelen</translation>
 <translation id="4994474651455208930">Websites laten vragen of je ze als de standaardhandler voor protocollen wilt instellen.</translation>
 <translation id="4994754230098574403">Instellen</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">Proces-ID</translation>
 <translation id="5233638681132016545">Nieuw tabblad</translation>
 <translation id="5233736638227740678">&amp;Plakken</translation>
-<translation id="5234764350956374838">Sluiten</translation>
 <translation id="5235050375939235066">App verwijderen?</translation>
 <translation id="5235750401727657667">De pagina vervangen die wordt weergegeven wanneer je een nieuw tabblad opent</translation>
 <translation id="5238278114306905396">De app '<ph name="EXTENSION_NAME" />' is automatisch verwijderd.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google beveelt Chrome aan</translation>
 <translation id="532247166573571973">De server is mogelijk niet bereikbaar. Probeer het later opnieuw.</translation>
 <translation id="5324780743567488672">Tijdzone automatisch instellen op basis van je locatie</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> mag opslaan in oorspronkelijke bestanden</translation>
 <translation id="5327248766486351172">Naam</translation>
 <translation id="5327570636534774768">Dit apparaat is gemarkeerd voor beheer door een ander domein. Schrijf het apparaat uit dit domein uit voordat je de demomodus instelt.</translation>
 <translation id="532943162177641444">Tik op de melding op je <ph name="PHONE_NAME" /> om de mobiele hotspot in te stellen die door dit apparaat kan worden gebruikt.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> wil het volgende</translation>
 <translation id="5534304873398226603">Foto of video verwijderen</translation>
 <translation id="5535941515421698170">Ook je bestaande gegevens verwijderen van dit apparaat</translation>
-<translation id="5537725057119320332">Cast</translation>
 <translation id="5539221284352502426">Het wachtwoord dat je hebt opgegeven, is afgewezen door de server. Mogelijke redenen zijn: Het wachtwoord is te kort. Het wachtwoord moet cijfers of symbolen bevatten. Het wachtwoord moet verschillen van eerdere wachtwoorden.</translation>
 <translation id="5541687815721799001">App gebruiken</translation>
 <translation id="5542132724887566711">Profiel</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Meer informatie over sitetoegang</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultaten voor '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="6002458620803359783">Voorkeursstemmen</translation>
-<translation id="6005695835120147974">Mediarouter</translation>
 <translation id="6006484371116297560">Klassiek</translation>
 <translation id="6007240208646052708">Gesproken zoekopdracht is niet beschikbaar in jouw taal.</translation>
 <translation id="6009781704028455063">Ingebouwde sensor</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nieuwe printer in je netwerk}other{Nieuwe printers in je netwerk}}</translation>
 <translation id="6286708577777130801">Details van opgeslagen wachtwoorden</translation>
 <translation id="6289452883081499048">Gepersonaliseerde Google-services zoals Play</translation>
-<translation id="6290556621549272952">Je kunt deze functie gebruiken om content van Chromium weer te geven op je tv of andere apparaten.</translation>
 <translation id="6291949900244949761">Goedkeuring vragen wanneer een site toegang wil hebben tot USB-apparaten (aanbevolen)</translation>
 <translation id="6291953229176937411">&amp;Toon in Finder</translation>
 <translation id="6295158916970320988">Alle sites</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />Systeeminformatie<ph name="END_LINK1" /> en <ph name="BEGIN_LINK2" />statistische gegevens<ph name="END_LINK2" /> verzenden</translation>
 <translation id="6396988158856674517">Niet toestaan dat sites bewegingssensoren gebruiken</translation>
 <translation id="6397094776139756010">Synchronisatie- en personalisatieopties</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> kan je wijzigingen rechtstreeks opslaan in de bestanden in de volgende map. Deze site kan wijzigingen alleen opslaan als dit tabblad is geopend.</translation>
 <translation id="6398715114293939307">Google Play Store verwijderen</translation>
 <translation id="6398765197997659313">Volledig scherm sluiten</translation>
 <translation id="6399774419735315745">Spionne</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">Op specifieke sites</translation>
 <translation id="6455894534188563617">&amp;Nieuwe map</translation>
 <translation id="6456394469623773452">Goed</translation>
+<translation id="6456955391422100996">Advertentie verwijderd.</translation>
 <translation id="645705751491738698">JavaScript blijven blokkeren</translation>
 <translation id="6458701200018867744">Upload mislukt (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Gebruik selectie voor zoekactie</translation>
 <translation id="6459799433792303855">Het actieve venster is verplaatst naar een ander scherm.</translation>
 <translation id="6460601847208524483">Zoek volgende</translation>
+<translation id="6461170143930046705">Zoeken naar netwerken...</translation>
 <translation id="6463795194797719782">B&amp;ewerken</translation>
 <translation id="6466988389784393586">Alle bladwijzers &amp;openen</translation>
 <translation id="6467304607960172345">Video's op volledig scherm optimaliseren</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Je hebt verbinding met een <ph name="NETWORK_TYPE" /> netwerk.</translation>
 <translation id="6527303717912515753">Delen</translation>
 <translation id="6528513914570774834">Andere gebruikers van dit apparaat toestaan om dit netwerk te gebruiken</translation>
 <translation id="652948702951888897">Chrome-geschiedenis</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Snelheid</translation>
 <translation id="6681668084120808868">Foto nemen</translation>
 <translation id="6681964764822470072"><ph name="APP_NAME" /> wordt verwijderd</translation>
-<translation id="6685083257944113180"><ph name="SINK_NAME" />, <ph name="SINK_STATUS" /> stoppen</translation>
 <translation id="668599234725812620">Google Play openen</translation>
 <translation id="6686490380836145850">Tabbladen aan de rechterkant sluiten</translation>
 <translation id="6686817083349815241">Je wachtwoord opslaan</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Gemaximaliseerd openen</translation>
 <translation id="6845325883481699275">Help de beveiliging van Chrome te verbeteren</translation>
 <translation id="6848388270925200958">Je hebt momenteel enkele passen die alleen op dit apparaat kunnen worden gebruikt</translation>
+<translation id="6850286078059909152">Tekstkleur</translation>
 <translation id="6851497530878285708">App ingeschakeld</translation>
 <translation id="6853388645642883916">Updater in slaapstand</translation>
 <translation id="68541483639528434">Andere tabbladen sluiten</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Scroll/klik</translation>
 <translation id="6923633482430812883">Fout bij het activeren van de fileshare. Controleer of de bestandsserver waarmee je verbinding maakt, SMBv2 of hoger ondersteunt.</translation>
 <translation id="6930036377490597025">Externe beveiligingssleutel of ingebouwde sensor</translation>
-<translation id="6930242544192836755">Duur</translation>
 <translation id="693807610556624488">Schrijfbewerking overschrijdt de maximumlengte van het kenmerk voor: <ph name="DEVICE_NAME" />.</translation>
 <translation id="6941937518557314510">Log in bij <ph name="TOKEN_NAME" /> om uzelf bij <ph name="HOST_NAME" /> te verifiëren met je certificaat.</translation>
 <translation id="6943176775188458830">Afdrukken annuleren</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Betalingshandlers</translation>
 <translation id="6951663584153258142">Je organisatie vraagt je dit apparaat te updaten</translation>
 <translation id="6953878494808481632">Gerelateerde informatie</translation>
+<translation id="6953916367503892689">{0,plural, =1{Bestand: <ph name="FILES" />}other{Bestanden: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Pop-up controleren</translation>
 <translation id="6957044667612803194">Deze beveiligingssleutel ondersteunt geen pincodes</translation>
 <translation id="6957231940976260713">Servicenaam</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Deze pagina kan niet worden vertaald.</translation>
 <translation id="7254951428499890870">Weet je zeker dat je '<ph name="APP_NAME" />' in diagnostische modus wilt starten?</translation>
 <translation id="7255002516883565667">Je hebt momenteel één pas die alleen op dit apparaat kan worden gebruikt</translation>
-<translation id="7255220508626648026">Casten: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Tik opnieuw op de beveiligingssleutel om het resetten te bevestigen. Alle informatie die is opgeslagen op de beveiligingssleutel, inclusief de pincode, wordt gewist.</translation>
 <translation id="7255935316994522020">Toepassen</translation>
 <translation id="7256069762010468647">Site gebruikt je camera</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Open locatie...</translation>
 <translation id="7458168200501453431">Gebruikt dezelfde spellingcontrole als voor Google Zoeken. In de browser ingevoerde tekst wordt naar Google gestuurd.</translation>
+<translation id="7460045493116006516">Huidig thema dat je hebt geïnstalleerd</translation>
 <translation id="7461924472993315131">Vastzetten</translation>
 <translation id="746216226901520237">De volgende keer wordt <ph name="DEVICE_TYPE" /> ontgrendeld met je telefoon. Je kunt Smart Lock uitschakelen in Instellingen.</translation>
 <translation id="7463006580194749499">Persoon toevoegen</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Nieuw tabblad</translation>
 <translation id="7556033326131260574">Smart Lock kan je account niet verifiëren. Typ je wachtwoord om in te loggen.</translation>
 <translation id="7556242789364317684"><ph name="SHORT_PRODUCT_NAME" /> kan je instellingen niet herstellen. <ph name="SHORT_PRODUCT_NAME" /> moet je apparaat opnieuw instellen met Powerwash om de fout op te lossen.</translation>
+<translation id="7559444627302317199">Controleer de netwerkverbinding en probeer het opnieuw.</translation>
 <translation id="7559719679815339381">Een ogenblik geduld. De Kiosk-app wordt geüpdatet. Verwijder de USB-stick niet.</translation>
 <translation id="7561196759112975576">Altijd</translation>
 <translation id="7563991800558061108">Om deze fout te herstellen, moet je inloggen op je Google-account
@@ -4564,7 +4581,6 @@
 <translation id="7887334752153342268">Dupliceren</translation>
 <translation id="7887864092952184874">Bluetooth-muis gekoppeld</translation>
 <translation id="7889565820482017512">Schermgrootte</translation>
-<translation id="7889966925761734854">Zoeken</translation>
 <translation id="7893008570150657497">Foto's, muziek en andere media van je computer openen</translation>
 <translation id="7893153962594818789">Bluetooth is uitgeschakeld op deze <ph name="DEVICE_TYPE" />. Geef je wachtwoord op en schakel Bluetooth in.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (standaard)</translation>
@@ -4572,7 +4588,6 @@
 <translation id="7898627924844766532">In werkbalk houden</translation>
 <translation id="7898725031477653577">Altijd vertalen</translation>
 <translation id="790040513076446191">Privacygerelateerde instellingen manipuleren</translation>
-<translation id="7902874111237641165">Vloeiende beweging [bèta]</translation>
 <translation id="7903345046358933331">De pagina reageert niet meer. Je kunt wachten tot de pagina reageert of de pagina sluiten.</translation>
 <translation id="7903742244674067440">Je hebt certificaten waarmee deze certificeringsinstanties worden geïdentificeerd</translation>
 <translation id="7903925330883316394">Hulpprogramma: <ph name="UTILITY_TYPE" /></translation>
@@ -4684,6 +4699,7 @@
 <translation id="8037117027592400564">Alle tekst lezen die wordt gesproken met gesynthetiseerde spraak</translation>
 <translation id="8037357227543935929">Vragen (standaard)</translation>
 <translation id="803771048473350947">Archief</translation>
+<translation id="8042142357103597104">Ondoorzichtigheid van tekst</translation>
 <translation id="8044899503464538266">Langzaam</translation>
 <translation id="8045253504249021590">Synchronisatie is gestopt via het Google Dashboard.</translation>
 <translation id="8045923671629973368">Geef de app-ID of URL voor Web Store op</translation>
@@ -4720,7 +4736,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Je kunt deze service uitschakelen via Instellingen.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">De pincodes komen niet overeen</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> gebruikt proxyinstellingen van een extensie</translation>
-<translation id="8099495042588009598">Meer rechten</translation>
 <translation id="8101987792947961127">Powerwash vereist bij volgende keer opnieuw opstarten</translation>
 <translation id="8102159139658438129">Ga naar <ph name="LINK_BEGIN" />Instellingen <ph name="LINK_END" /> om opties voor je gekoppelde telefoon te bekijken</translation>
 <translation id="8104696615244072556">Powerwash je <ph name="IDS_SHORT_PRODUCT_NAME" />-apparaat en zet de vorige versie terug.</translation>
@@ -4772,8 +4787,10 @@
     Ik denk niet dat deze site moet worden geblokkeerd.</translation>
 <translation id="8184288427634747179">Overschakelen naar <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Meer informatie</translation>
+<translation id="8184472985242519288">Uniform</translation>
 <translation id="8185331656081929126">Meldingen weergeven wanneer er nieuwe printers in het netwerk worden gedetecteerd</translation>
 <translation id="8186609076106987817">De server kan het bestand niet vinden.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> kan alle bestanden in de volgende map lezen. Deze site kan wijzigingen in de map alleen bekijken als dit tabblad is geopend.</translation>
 <translation id="8188389033983459049">Controleer de instellingen van je apparaat en schakel je apparaat in om door te gaan</translation>
 <translation id="8190193592390505034">Verbinding maken met <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Je apps, extensies en thema's beheren</translation>
@@ -4877,7 +4894,6 @@
 <translation id="833986336429795709">Kies een app om deze link te openen</translation>
 <translation id="8342861492835240085">Een verzameling selecteren</translation>
 <translation id="834290227245955730">Ongeldige pincode. Resterende pogingen: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Gebruik een hoge bandbreedte voor de beste video of animatie. Mensen met een trage verbinding kunnen je content misschien niet bekijken.</translation>
 <translation id="8351419472474436977">Deze extensie heeft het beheer van je proxyinstellingen overgenomen. Dit betekent dat de extensie alles wat je online doet, kan wijzigen, beschadigen of bekijken. Als je niet zeker weet waarom deze wijziging heeft plaatsgevonden, is het waarschijnlijk een ongewenste wijziging.</translation>
 <translation id="8351630282875799764">Batterij wordt niet opgeladen</translation>
 <translation id="835238322900896202">Er is een fout opgetreden tijdens de verwijdering. Verwijder het programma via de Terminal.</translation>
@@ -4910,9 +4926,11 @@
 <translation id="839736845446313156">Registreren</translation>
 <translation id="8398877366907290961">Toch doorgaan</translation>
 <translation id="8400146488506985033">Mensen beheren</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> kan je wijzigingen rechtstreeks opslaan in de bestanden in de volgende map. Deze site kan wijzigingen alleen opslaan als dit tabblad is geopend.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Eerst vragen (aanbevolen)</translation>
 <translation id="8418445294933751433">Weergeven al&amp;s tabblad</translation>
+<translation id="8418905021510211421">Deze pagina mag een map op je apparaat lezen.</translation>
 <translation id="8419098111404128271">Zoekresultaten voor '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="8419368276599091549">Welkom bij je <ph name="DEVICE_TYPE" /></translation>
 <translation id="8425213833346101688">Wijzigen</translation>
@@ -4932,6 +4950,7 @@
 <translation id="8438566539970814960">Zoekopdrachten en browsefunctionaliteit verbeteren</translation>
 <translation id="8439506636278576865">Aanbieden pagina's te vertalen in deze taal</translation>
 <translation id="8440630305826533614">Linux-apps</translation>
+<translation id="844241640324986723">Kan je inloggegevens niet verwijderen.</translation>
 <translation id="8443338615972234259">Maak nu een nieuw account voor je gebruiker met beperkte rechten.</translation>
 <translation id="8446884382197647889">Meer informatie</translation>
 <translation id="8447409163267621480">Neem Ctrl of Alt op</translation>
@@ -4947,8 +4966,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Deze gebruiker met beperkte rechten kan zijn verwijderd of uitgeschakeld door de beheerder. Neem contact op met de beheerder als je wilt blijven inloggen als deze gebruiker.</translation>
 <translation id="846374874681391779">Downloadbalk</translation>
-<translation id="8463807869745732775">"&gt;
-    Opgeslagen inloggegevens van beveiligingssleutel</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> uitgeschakeld.</translation>
 <translation id="8464132254133862871">Dit gebruikersaccount kan deze service niet gebruiken.</translation>
 <translation id="8465252176946159372">Ongeldig</translation>
@@ -5014,6 +5031,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" /> wordt nu afgedrukt</translation>
 <translation id="8569682776816196752">Geen bestemmingen gevonden</translation>
 <translation id="8571213806525832805">Afgelopen 4 weken</translation>
+<translation id="8573403125070227391">Deze advertentie gebruikt te veel bronnen voor je apparaat, dus Chrome heeft de advertentie verwijderd.</translation>
 <translation id="8574990355410201600">Geluid altijd toegestaan op <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Houd <ph name="KEY_EQUIVALENT" /> ingedrukt om te stoppen</translation>
 <translation id="8578639784464423491">Mag niet langer zijn dan 99 letters</translation>
@@ -5037,13 +5055,13 @@
 <translation id="8609465669617005112">Omhoog</translation>
 <translation id="8610103157987623234">Onjuiste indeling. Probeer het opnieuw.</translation>
 <translation id="8615618338313291042">Incognitotoepassing: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Slagschaduw</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Roamingstatus</translation>
 <translation id="8620765578342452535">Netwerkverbindingen configureren</translation>
 <translation id="8621866727807194849">Er staat schadelijke software op je computer. Chrome is bezig deze te verwijderen, je instellingen te herstellen en extensies uit te schakelen. Hierdoor werkt je browser straks weer normaal.</translation>
 <translation id="8621979332865976405">Je volledige scherm delen</translation>
 <translation id="862542460444371744">&amp;Extensies</translation>
-<translation id="8627151598708688654">Bron selecteren</translation>
 <translation id="862727964348362408">Opgeschort</translation>
 <translation id="862750493060684461">CSS-cachegeheugen</translation>
 <translation id="8627795981664801467">Alleen beveiligde verbindingen</translation>
@@ -5097,6 +5115,7 @@
 <translation id="8688579245973331962">Staat je naam er niet bij?</translation>
 <translation id="8688591111840995413">Slecht wachtwoord</translation>
 <translation id="8688672835843460752">Beschikbaar</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">&amp;Locatie openen...</translation>
 <translation id="869884720829132584">Menu 'Applicaties'</translation>
 <translation id="869891660844655955">Vervaldatum</translation>
@@ -5261,6 +5280,7 @@
 <translation id="891365694296252935">Verzend gebruiks- en diagnostische gegevens. Dit apparaat verzendt momenteel automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google. Deze gegevens worden niet gebruikt om je kind te identificeren en helpen bij het verbeteren van de systeem- en app-stabiliteit en andere optimalisaties. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Deze instelling wordt afgedwongen door de eigenaar. Als je de instelling voor aanvullende Web- en app-activiteit hebt ingeschakeld voor je kind, kunnen deze gegevens worden opgeslagen in het Google-account van je kind. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Suggestie wordt geladen</translation>
 <translation id="8916476537757519021">Incognito-subframe: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> mag een map op je apparaat lezen</translation>
 <translation id="8919275547519617350">Log in en schakel synchronisatie in om al je wachtwoorden op al je apparaten beschikbaar te maken.</translation>
 <translation id="8921366488406707015">Je beveiligingssleutel verifiëren…</translation>
 <translation id="8922013791253848639">Altijd advertenties op deze site toestaan</translation>
@@ -5290,7 +5310,6 @@
 <translation id="8965037249707889821">Oud wachtwoord opgeven</translation>
 <translation id="8966870118594285808">Een tabblad opnieuw openen wanneer je dit per ongeluk hebt gesloten</translation>
 <translation id="8967866634928501045">Druk op Alt+Shift+A om weer te geven</translation>
-<translation id="8970203673128054105">Lijst voor Cast-modus bekijken</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Neem contact op met je netwerkbeheerder om ervoor te zorgen dat downloads van Google-servers niet door de firewall worden geblokkeerd.</translation>
 <translation id="8973557916016709913">Zoomniveau verwijderen</translation>
@@ -5439,6 +5458,7 @@
 <translation id="9214520840402538427">De initialisatie van de kenmerken van de installatietijd is verlopen. Neem contact op met je ondersteuningsmedewerker.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">'<ph name="EXTENSION_NAME" />' toegevoegd</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> kan je wijzigingen rechtstreeks opslaan in het volgende bestand. Deze site kan wijzigingen alleen opslaan als dit tabblad is geopend.</translation>
 <translation id="9218430445555521422">Instellen als standaard</translation>
 <translation id="9219103736887031265">Afbeeldingen</translation>
 <translation id="9220525904950070496">Rekening verwijderen</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index ae49c85..01eab2e 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Feil ved oppstart av den virtuelle maskinen. Prøv på nytt.</translation>
 <translation id="1089439967362294234">Endre passord</translation>
 <translation id="1090126737595388931">Ingen bakgrunnsprogrammer kjører</translation>
+<translation id="1090290614672149983">Vil du lagre endringer i den opprinnelige filen?</translation>
 <translation id="1090918500949388876">Få tilgang til assistenten ved å si «Ok Google» når skjermen er på</translation>
 <translation id="1091767800771861448">Trykk på ESC for å hoppe over denne (bare uoffisielle delversjoner).</translation>
 <translation id="1093457606523402488">Synlige nettverk:</translation>
 <translation id="1094607894174825014">Det ble bedt om en lese- eller skriveoperasjon med en ugyldig forskyvning på: «<ph name="DEVICE_NAME" />».</translation>
 <translation id="1097658378307015415">Gå inn som gjest for å aktivere nettverket <ph name="NETWORK_ID" /> før du logger deg på.</translation>
+<translation id="110029732810301672">Denne fanen har lov til å lagre til opprinnelige filer.</translation>
 <translation id="1103523840287552314">Oversett alltid <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Stopp</translation>
 <translation id="1110155001042129815">Vent</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Solbriller</translation>
 <translation id="1151917987301063366">Tillat alltid <ph name="HOST" /> å bruke sensorene</translation>
 <translation id="1153356358378277386">Tilkoblede enheter</translation>
-<translation id="1156488781945104845">Klokkeslettet nå</translation>
 <translation id="1161575384898972166">Logg på <ph name="TOKEN_NAME" /> for å eksportere klientsertifikatet.</translation>
 <translation id="1163931534039071049">&amp;Vis rammekilde</translation>
 <translation id="1164674268730883318">Vis du slå av Smart Lock for <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Lagringsinnstillinger for Adobe Flash Player</translation>
 <translation id="1274997165432133392">Informasjonskapsler og andre nettstedsdata</translation>
 <translation id="127668050356036882">Lukk alle vinduene dine</translation>
-<translation id="1277908057200820621">Se enhetslisten</translation>
 <translation id="1280820357415527819">Søker etter mobilnettverk</translation>
 <translation id="1285320974508926690">Oversett aldri dette nettstedet</translation>
 <translation id="1285484354230578868">lagre data i Google Disk-kontoen din</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Hjemmenettverk, datastreifing ikke aktivert</translation>
 <translation id="1316136264406804862">Søker …</translation>
 <translation id="1316495628809031177">Synkroniseringen er satt på pause</translation>
+<translation id="1317637799698924700">Dokkingstasjonen kjører i USB-C-kompatibel modus.</translation>
 <translation id="1322046419516468189">Se og administrer lagrede passord i <ph name="SAVED_PASSWORDS_STORE" /> din</translation>
 <translation id="1326317727527857210">For å få fanene dine fra de andre enhetene du bruker, logg på Chrome.</translation>
 <translation id="1327074568633507428">Skriver på Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Nettleseren administreres<ph name="END_LINK" /> av <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Kjør Linux-verktøy, redigeringsverktøy og IDE-er på <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Finn ut mer&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Velg en fil</translation>
+<translation id="1370749010280229230">Det er problemer med skjermen som er koblet til dokken</translation>
 <translation id="1371301976177520732">Bokmerkene dine, loggen din med mer på alle enhetene dine.</translation>
 <translation id="1372841398847029212">Synkroniser til kontoen din</translation>
 <translation id="1374844444528092021">Sertifikatet som kreves av nettverket «<ph name="NETWORK_NAME" />» mangler eller er ikke gyldig lenger. Hent et nytt sertifikat og prøv å koble til på nytt.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Nettside – enkeltfil</translation>
 <translation id="1451917004835509682">Legg til en administrert person</translation>
 <translation id="1454223536435069390">Ta en skjermdump</translation>
+<translation id="1458243790901188746">{0,plural, =1{Mappe: <ph name="DIRECTORIES" />}other{Mapper: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Søkemotorer lagt til av utvidelser</translation>
 <translation id="146000042969587795">Denne rammen ble blokkert fordi den inneholder usikkert innhold.</translation>
 <translation id="146219525117638703">ONC-status</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">Vis inndataalternativer</translation>
 <translation id="1651008383952180276">Du må skrive inn den samme passordfrasen to ganger</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Legg til skriveren i Google Cloud Print, slik at du kan skrive ut fra hvor som helst.}other{Legg til # skrivere i Google Cloud Print, slik at du kan skrive ut fra hvor som helst.}}</translation>
+<translation id="1656528038316521561">Bakgrunnsopasitet</translation>
 <translation id="1657406563541664238">Bidra til å gjøre <ph name="PRODUCT_NAME" /> bedre ved å sende brukerstatistikk og programstopprapporter til Google automatisk</translation>
 <translation id="1658424621194652532">Denne siden bruker mikrofonen din.</translation>
 <translation id="1660204651932907780">Tillat nettsteder å spille av lyd (anbefalt)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> ber om å se merket og modellen til sikkerhetsnøkkelen din</translation>
 <translation id="1679068421605151609">Utviklerverktøy</translation>
 <translation id="1679806121152819234">VM for programtillegg</translation>
+<translation id="1679810534535368772">Er du sikker på at du vil avslutte?</translation>
 <translation id="167983332380191032">Administrasjonstjenesten sendte en HTTP-feil.</translation>
 <translation id="1680849702532889074">Det oppsto en feil under installasjon av Linux-programmet ditt.</translation>
 <translation id="16815041330799488">Ikke la nettsteder se tekst og bilder som er kopiert til utklippstavlen</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">Beskyttet medieidentifikator</translation>
 <translation id="175196451752279553">Gj&amp;enåpne den lukkede fanen</translation>
 <translation id="1753905327828125965">Mest besøkt</translation>
+<translation id="1755601632425835748">Tekststørrelse</translation>
 <translation id="1756681705074952506">Inndatametode</translation>
 <translation id="1757301747492736405">Avinstalleringen er på vent</translation>
 <translation id="175772926354468439">Aktiver temaet</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">&amp;Mindre</translation>
 <translation id="1919345977826869612">Annonser</translation>
 <translation id="1919814239594435008">Programtillegg uten prosessisolering er tillatt</translation>
+<translation id="1920390473494685033">Kontakter</translation>
 <translation id="1921050530041573580">Koble telefonen til Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> ppt</translation>
 <translation id="1924559387127953748">Få Googles smarte funksjoner i <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">Inkognitofane: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> på <ph name="PEPPER_PLUGIN_DOMAIN" /> ber om tilgang til datamaskinen din</translation>
 <translation id="2178614541317717477">Sertifiseringsinstans-kompromiss</translation>
+<translation id="2179849162388791084">Kunne ikke hente påloggingsdata fra sikkerhetsnøkkelen.</translation>
 <translation id="218070003709087997">Bruk et tall for å angi hvor mange eksemplarer som skal skrives ut (1–999).</translation>
 <translation id="2184515124301515068">La Chrome velge når nettsteder kan spille av lyd (anbefalt)</translation>
 <translation id="2187895286714876935">Feil ved import av tjenersertifikat</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">Alle informasjonskapsler og nettstedsdata</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 element er kopiert}other{# elementer er kopiert}}</translation>
 <translation id="2278562042389100163">Åpne nettleservindu</translation>
-<translation id="2279874276457403668">Bare én økt kan opprettes av gangen.</translation>
 <translation id="2280486287150724112">Høyremarg</translation>
 <translation id="2282146716419988068">GPU-prosess</translation>
 <translation id="2282155092769082568">Nettadresse for automatisk konfigurering:</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">Notater på låseskjermen lagres automatisk i <ph name="LOCK_SCREEN_APP_NAME" />. Det nyeste notatet ditt forblir på låseskjermen.</translation>
 <translation id="2353297238722298836">Kameraet og mikrofonen er tillatt</translation>
 <translation id="2356070529366658676">Spør</translation>
-<translation id="2357949918965361754">Du kan bruke denne funksjonen for å vise innhold fra Chrome på TV-en eller andre enheter.</translation>
 <translation id="2359345697448000899">Du kan administrere utvidelsene dine ved å klikke på Utvidelser i verktøymenyen.</translation>
 <translation id="2359808026110333948">Fortsett</translation>
 <translation id="236117173274098341">Optimaliser</translation>
@@ -962,6 +968,7 @@
 <translation id="2436720498717686157">Organisasjonen din krever at denne enheten oppdateres med det samme</translation>
 <translation id="2439545803278355377">Skriv inn den nye PIN-koden. En PIN-kode må ha minst fire tegn og kan bestå av bokstaver, tall og andre tegn.</translation>
 <translation id="2440604414813129000">Vis &amp;kilde</translation>
+<translation id="2442916515643169563">Tekstskygge</translation>
 <translation id="2444119669991608829">Er ikke siden på <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Det kreves en rotkatalog for utvidelsen</translation>
 <translation id="2445484935443597917">Opprett en ny profil</translation>
@@ -1176,6 +1183,7 @@
 <translation id="2738771556149464852">Ikke etter</translation>
 <translation id="2739191690716947896">Feilsøk</translation>
 <translation id="2739240477418971307">endre innstillingene for tilgjengelighet</translation>
+<translation id="274029851662193272">Preget</translation>
 <translation id="2740393541869613458">gjennomgå nettstedene den administrerte brukeren har besøkt, og</translation>
 <translation id="2741912629735277980">Vis UI på påloggingsskjermen</translation>
 <translation id="274290345632688601">Gjenoppretter Linux-apper og -filer</translation>
@@ -1224,6 +1232,7 @@
 <translation id="2806891468525657116">Snarveien finnes allerede</translation>
 <translation id="2807517655263062534">Filer du laster ned, vises her</translation>
 <translation id="2809586584051668049">og <ph name="NUMBER_ADDITIONAL_DISABLED" /> til</translation>
+<translation id="2812049959647166806">Thunderbolt støttes ikke</translation>
 <translation id="2812944337881233323">Prøv å logge av og på igjen</translation>
 <translation id="2812989263793994277">Ikke vis bilder</translation>
 <translation id="281390819046738856">Forespørselen kunne ikke signeres.</translation>
@@ -1246,7 +1255,6 @@
 <translation id="2841837950101800123">Leverandør</translation>
 <translation id="2844169650293029770">USB-C-enhet (porten foran på venstre side)</translation>
 <translation id="2845382757467349449">Vis alltid bokmerkerad</translation>
-<translation id="2847759467426165163">Cast til</translation>
 <translation id="284805635805850872">Vil du fjerne den skadelige programvaren?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Opprydningen mislyktes</translation>
@@ -1293,6 +1301,7 @@
     Tjenermelding: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Legg til mediegalleri etter katalog</translation>
 <translation id="2910318910161511225">Koble til et nettverk og prøv igjen</translation>
+<translation id="2910518940971897750">Lagre til den opprinnelige filen</translation>
 <translation id="2913331724188855103">Tillat at nettsteder lagrer og leser data i informasjonskapsler (anbefales).</translation>
 <translation id="2915102088417824677">Se aktivitetsloggen</translation>
 <translation id="2915873080513663243">Automatisk skanning</translation>
@@ -1357,12 +1366,14 @@
 <translation id="3013291976881901233">MIDI-enheter</translation>
 <translation id="3015639418649705390">Start på nytt nå</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> kunne ikke konfigureres automatisk. Angi avanserte detaljer om skriveren.</translation>
+<translation id="3016381065346027039">Ingen loggoppføringer</translation>
 <translation id="3016641847947582299">Komponenten er oppdatert</translation>
 <translation id="3016780570757425217">vite hvor du er</translation>
 <translation id="3017079585324758401">Bakgrunn</translation>
 <translation id="3020183492814296499">Snarveier</translation>
 <translation id="3020990233660977256">Serienummer: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Sommerfugl</translation>
+<translation id="3021408157810018664">Vil du lagre endringer i opprinnelige filer?</translation>
 <translation id="3021426244864538700">Leser dataene på dette nettstedet</translation>
 <translation id="3021678814754966447">&amp;Vis rammekilde</translation>
 <translation id="3022978424994383087">Det skjønte jeg ikke.</translation>
@@ -1455,6 +1466,7 @@
 <translation id="3170072451822350649">Du kan også hoppe over påloggingen og <ph name="LINK_START" />surfe som gjest<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Et nettsted har tilgang til videoinndata</translation>
 <translation id="3177909033752230686">Språket siden er på:</translation>
+<translation id="3179982752812949580">Skrifttype</translation>
 <translation id="3181954750937456830">Safe Browsing (beskytter deg og enheten din mot farlige nettsteder)</translation>
 <translation id="3182749001423093222">Stavekontroll</translation>
 <translation id="3183139917765991655">Profile Importer</translation>
@@ -1507,7 +1519,6 @@
 <translation id="3275778913554317645">Åpne som vindu</translation>
 <translation id="3278001907972365362">Sjekk Google-kontoen(e) din(e)</translation>
 <translation id="3279230909244266691">Denne prosessen kan ta noen minutter. Starter den virtuelle maskinen.</translation>
-<translation id="3279741024917655738">Vis videoer i full skjerm på</translation>
 <translation id="3280237271814976245">L&amp;agre som...</translation>
 <translation id="3280243678470289153">Bli værende i Chrome</translation>
 <translation id="3281892622610078515">Filer og programmer som blir satt i karantene:</translation>
@@ -1529,7 +1540,7 @@
 <translation id="3303855915957856445">Søket ga ingen treff</translation>
 <translation id="3305389145870741612">Formateringsprosessen kan ta et par sekunder. Vent litt.</translation>
 <translation id="3305661444342691068">Åpne forhåndsvisning av PDF-en</translation>
-<translation id="3306684685104080068">Slå på casting til nettskybaserte tjenester som Google Hangouts.</translation>
+<translation id="3307871847038842490">Denne siden har lov til å lagre til opprinnelige filer.</translation>
 <translation id="3308006649705061278">Organisasjonsenhet (OU)</translation>
 <translation id="3308116878371095290">Informasjonskapsler fra denne siden ble blokkert.</translation>
 <translation id="3308134619352333507">Skjul knappen</translation>
@@ -1634,7 +1645,6 @@
 <translation id="3462413494201477527">Vil du avbryte kontokonfigurasjonen?</translation>
 <translation id="3464012987031883895">Et nettsted har tilgang til lydinndata</translation>
 <translation id="346431825526753">Dette er en konto for barn, som administreres av <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Strøm video- eller lydfiler</translation>
 <translation id="3468999815377931311">Android-telefon</translation>
 <translation id="3470442499439619530">Fjern denne brukeren</translation>
 <translation id="3473479545200714844">Skjermforstørrer</translation>
@@ -1657,6 +1667,7 @@
 <translation id="3496213124478423963">Zoom ut</translation>
 <translation id="3497560059572256875">Del doodlen</translation>
 <translation id="3505030558724226696">Opphev enhetstilgangen</translation>
+<translation id="3505635633742443645">HDMI-porten på dokken kan ikke brukes når USB-C-porten brukes som utenhet for video. Bruk en annen port til en av skjermene.</translation>
 <translation id="3507421388498836150">Nåværende tillatelser for «<ph name="EXTENSION_NAME" />»</translation>
 <translation id="3507888235492474624">Skann etter Bluetooth-enheter på nytt</translation>
 <translation id="3508920295779105875">Velg en annen mappe</translation>
@@ -1709,6 +1720,7 @@
 <translation id="3576324189521867626">Installert</translation>
 <translation id="3578594933904494462">Innholdet i denne fanen blir delt.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; vil dele skriveren &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; med en gruppe du eier: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Hvis du godtar, kan alle gruppemedlemmene skrive ut til skriveren.</translation>
+<translation id="357889014807611375">Wi-Fi med datamåling</translation>
 <translation id="3584169441612580296">lese og endre bilder, musikk og andre medier fra datamaskinen din</translation>
 <translation id="3587482841069643663">Alle</translation>
 <translation id="358796204584394954">Skriv inn denne koden på «<ph name="DEVICE_NAME" />» for å koble til:</translation>
@@ -1719,6 +1731,7 @@
 <translation id="359283478042092570">Angi</translation>
 <translation id="3593965109698325041">Begrensninger for sertifikatnavn</translation>
 <translation id="3596235046596950091">Slå på skytjenester</translation>
+<translation id="3599221874935822507">Hevet</translation>
 <translation id="3599863153486145794">Tømmer loggen på alle påloggede enheter. Det kan hende Google-kontoen din har andre typer nettleserlogger på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Informasjon om nettforespørsel</translation>
 <translation id="3600792891314830896">Kutt lyden for nettsteder som spiller av lyd</translation>
@@ -1733,6 +1746,7 @@
 <translation id="3612673635130633812">Lastet ned via &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Vis <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Åpne i ny fane</translation>
+<translation id="3615073365085224194">Trykk på fingeravtrykkssensoren med fingeren</translation>
 <translation id="3616113530831147358">Lyd</translation>
 <translation id="3616741288025931835">&amp;Fjern nettlesingsdata</translation>
 <translation id="3617891479562106823">Bakgrunner er utilgjengelig. Prøv på nytt senere.</translation>
@@ -1814,7 +1828,6 @@
 <translation id="3719826155360621982">Startside</translation>
 <translation id="3720996970802414353">Bytt uansett</translation>
 <translation id="3722108462506185496">Feil ved oppstart av den virtuelle maskinen. Prøv på nytt.</translation>
-<translation id="3723158278575423087">Velkommen til casting i Chromium!</translation>
 <translation id="3725367690636977613">sider</translation>
 <translation id="3726137731714254362">Hvis du fjerner mapper herfra, deles de ikke lenger, men filene blir ikke slettet.</translation>
 <translation id="3727148787322499904">Endringer i denne innstillingen påvirker alle delte nettverk</translation>
@@ -1849,7 +1862,6 @@
 <translation id="3764314093345384080">Detaljert delversjonsinformasjon</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{kommunisere med én USB-enhet}other{kommunisere med # USB-enheter}}</translation>
 <translation id="3765246971671567135">Kunne ikke lese regelen for demomodus uten nett.</translation>
-<translation id="3766223500670287046">Ekstern skjerm</translation>
 <translation id="3768037234834996183">Synkroniserer innstillingene dine ...</translation>
 <translation id="377050016711188788">Iskrem</translation>
 <translation id="3771294271822695279">Videofiler</translation>
@@ -1922,7 +1934,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Løft fingeren og berør igjen</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Synkronisering er satt på pause</translation>
-<translation id="3862134173397075045">Velkommen til casting i Chrome!</translation>
 <translation id="3862693525629180217">Bekreft via innebygd sensor</translation>
 <translation id="3862788408946266506">Apper med manifest-attributtet «kiosk_only» må være installert i Chrome OS-kioskmodus</translation>
 <translation id="3865414814144988605">Oppløsning</translation>
@@ -1971,6 +1982,7 @@
 <translation id="3926002189479431949">Smart Lock-telefon endret</translation>
 <translation id="3927932062596804919">Ikke tillat</translation>
 <translation id="3930737994424905957">Leter etter enheter</translation>
+<translation id="3930968231047618417">Bakgrunnsfarge</translation>
 <translation id="3933283459331715412">Gjenopprett slettet passord for <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Åpne lyd i ny fane</translation>
 <translation id="3936925983113350642">Passordet du velger, er nødvendig for å gjenopprette dette sertifikatet på et senere tidspunkt. Oppbevar det på et sikkert sted.</translation>
@@ -1988,6 +2000,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importert fra Internet Explorer</translation>
 <translation id="3950820424414687140">Logg på</translation>
+<translation id="3950828138786918475">Denne fanen har lov til å lese mapper på enheten din.</translation>
 <translation id="3954354850384043518">Pågår</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> hertz)</translation>
 <translation id="3954953195017194676">Du har ingen nylig lagrede WebRTC-aktivitetslogger.</translation>
@@ -2006,6 +2019,7 @@
 <translation id="397105322502079400">Beregner …</translation>
 <translation id="3975565978598857337">Kunne ikke kontakte tjeneren for området</translation>
 <translation id="397703832102027365">Fullfører …</translation>
+<translation id="3977886311744775419">Automatiske oppdateringer lastes ikke ned på denne nettverkstypen, men du kan se etter oppdateringer manuelt.</translation>
 <translation id="3979395879372752341">Ny utvidelse lagt til (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Slå på <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Ugyldig lagringstype angitt.</translation>
@@ -2145,6 +2159,7 @@
 <translation id="4194570336751258953">Aktiver berøringsklikk</translation>
 <translation id="4195643157523330669">Åpne i ny fane</translation>
 <translation id="4195814663415092787">Fortsett der du slapp</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> kan lagre endringer direkte til disse filene. Nettstedet kan bare lagre endringer så lenge denne fanen er åpen.</translation>
 <translation id="4198146608511578238">Bare hold på appvelgerikonet for å snakke med Google-assistenten</translation>
 <translation id="4200689466366162458">Egendefinerte ord</translation>
 <translation id="4200983522494130825">&amp;Ny fane</translation>
@@ -2192,7 +2207,6 @@
 <translation id="4267953847983678297">Koble til mobilnettverk automatisk</translation>
 <translation id="4268025649754414643">Nøkkelchiffrering</translation>
 <translation id="4270393598798225102">Versjon <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Ingen treff</translation>
 <translation id="4275663329226226506">Medier</translation>
 <translation id="4275830172053184480">Start enheten din på nytt</translation>
 <translation id="4278101229438943600">Assistenten din er klar</translation>
@@ -2341,6 +2355,7 @@
 <translation id="4533985347672295764">CPU-tid</translation>
 <translation id="4534661889221639075">Prøv på nytt.</translation>
 <translation id="4535127706710932914">Standardprofil</translation>
+<translation id="4535767533210902251">Fingeravtrykkssensoren er knappen øverst til høyre på tastaturet. Trykk på den forsiktig med hvilken som helst finger.</translation>
 <translation id="4538684596480161368">Blokkér alltid programtillegg som ikke er prosessisolert, på <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Installert av bedriftsinnstillingen.</translation>
 <translation id="4542520061254486227">Les dataene dine på <ph name="WEBSITE_1" /> og <ph name="WEBSITE_2" /></translation>
@@ -2374,6 +2389,7 @@
 <translation id="457386861538956877">Mer</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Koble til Bluetooth-enhet</translation>
+<translation id="4578012756826807359">Påloggingsdataene ble slettet.</translation>
 <translation id="4579581181964204535">Kunne ikke caste <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Feil under gjenoppretting av Linux</translation>
 <translation id="4582563038311694664">Tilbakestill alle innstillingene</translation>
@@ -2491,7 +2507,6 @@
 <translation id="4763830802490665879">Informasjonskapsler fra flere nettsteder blir slettet ved avslutning.</translation>
 <translation id="4765582662863429759">Tillater at Android Messages videresender tekstmeldinger fra telefonen din til Chromebook</translation>
 <translation id="4768332406694066911">Du har sertifikater som identifiserer deg, fra disse organisasjonene</translation>
-<translation id="4772404146526168240">Begge skjermene</translation>
 <translation id="4776146737004271126">Åpne Android-innstillingene</translation>
 <translation id="4776917500594043016">Passord for <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Butikk</translation>
@@ -2599,7 +2614,6 @@
 <translation id="4927846293686536410">Logg på for å hente bokmerkene dine, loggen din, passordene dine og andre innstillinger på alle enhetene du bruker. Du blir automatisk logget på Google-tjenestene dine.</translation>
 <translation id="4929386379796360314">Destinasjoner for utskrift</translation>
 <translation id="4930714375720679147">Slå på</translation>
-<translation id="4931132176527519925">Bruk alltid speiling</translation>
 <translation id="4932733599132424254">Dato</translation>
 <translation id="4933484234309072027">lagt til på <ph name="URL" /></translation>
 <translation id="493571969993549666">Legg til en administrert bruker</translation>
@@ -2639,6 +2653,7 @@
 <translation id="4992066212339426712">Slå på lyden</translation>
 <translation id="4992458225095111526">Bekreft Powerwash</translation>
 <translation id="4992473555164495036">Administratoren har begrenset de tilgjengelige inndatametodene.</translation>
+<translation id="4992866843815555470">Dokken må på service. Uten noen fungerende vifte kommer dokken til å slå seg av.</translation>
 <translation id="4992926179187649719">Slå på «Ok Google»</translation>
 <translation id="4994474651455208930">Tillat at nettsteder kan be om å bli standard behandlere for protokoller</translation>
 <translation id="4994754230098574403">Konfigurerer</translation>
@@ -2777,7 +2792,6 @@
 <translation id="5233231016133573565">Prosess-ID</translation>
 <translation id="5233638681132016545">Ny fane</translation>
 <translation id="5233736638227740678">&amp;Lim inn</translation>
-<translation id="5234764350956374838">Lukk</translation>
 <translation id="5235050375939235066">Vil du avinstallere appen?</translation>
 <translation id="5235750401727657667">Erstatt siden du ser når du åpner nye faner</translation>
 <translation id="5238278114306905396">Programmet «<ph name="EXTENSION_NAME" />» ble automatisk fjernet.</translation>
@@ -2842,6 +2856,7 @@
 <translation id="5319359161174645648">Google anbefaler Chrome</translation>
 <translation id="532247166573571973">Det kan hende tjeneren ikke er tilgjengelig. Prøv igjen senere.</translation>
 <translation id="5324780743567488672">Angi tidssonen automatisk ved hjelp av posisjonen din</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – har lov til å lagre til opprinnelige filer</translation>
 <translation id="5327248766486351172">Navn</translation>
 <translation id="5327570636534774768">Denne enheten er merket for administrering av et annet domene. Fjern tilgangen og ressursene fra det domenet før du konfigurerer demomodus.</translation>
 <translation id="532943162177641444">Trykk på varselet på <ph name="PHONE_NAME" />-enheten din for å konfigurere en mobil Wi-Fi-sone denne enheten kan bruke.</translation>
@@ -2984,7 +2999,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> vil</translation>
 <translation id="5534304873398226603">Forkast bilde eller video</translation>
 <translation id="5535941515421698170">Fjern også de eksisterende dataene dine fra denne enheten</translation>
-<translation id="5537725057119320332">Cast</translation>
 <translation id="5539221284352502426">Passordet du skrev inn, ble avvist av tjeneren. Mulige grunner kan være: Passordet er for kort. Passordet må inneholde tall eller symboler. Passordet må være forskjellig fra tidligere passord.</translation>
 <translation id="5541687815721799001">Bruk appen</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3293,7 +3307,6 @@
 <translation id="5997337190805127100">Finn ut mer om nettstedstilgang</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultater for «<ph name="SEARCH_TEXT" />»</translation>
 <translation id="6002458620803359783">Foretrukne stemmer</translation>
-<translation id="6005695835120147974">Medieruter</translation>
 <translation id="6006484371116297560">Klassisk</translation>
 <translation id="6007240208646052708">Talesøk er ikke tilgjengelig på språket ditt.</translation>
 <translation id="6009781704028455063">Innebygd sensor</translation>
@@ -3493,7 +3506,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Ny skriver på nettverket}other{Nye skrivere på nettverket}}</translation>
 <translation id="6286708577777130801">Lagrede passorddetaljer</translation>
 <translation id="6289452883081499048">Google-tjenester med et personlig preg, som for eksempel Play</translation>
-<translation id="6290556621549272952">Du kan bruke denne funksjonen for å vise innhold fra Chromium på TV-en eller andre enheter.</translation>
 <translation id="6291949900244949761">Spør når et nettsted vil ha tilgang til USB-enheter (anbefales)</translation>
 <translation id="6291953229176937411">&amp;Vis i Finder</translation>
 <translation id="6295158916970320988">Alle nettsteder</translation>
@@ -3557,6 +3569,7 @@
 <translation id="6395423953133416962">Send <ph name="BEGIN_LINK1" />systeminformasjon<ph name="END_LINK1" /> og <ph name="BEGIN_LINK2" />-målinger<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Blokkér nettsteder fra å bruke bevegelsessensorer</translation>
 <translation id="6397094776139756010">Alternativer for synkronisering og personlig tilpasning</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> kan lagre endringer direkte til filene i denne mappen. Nettstedet kan bare lagre endringer så lenge denne fanen er åpen.</translation>
 <translation id="6398715114293939307">Fjern Google Play-butikken</translation>
 <translation id="6398765197997659313">Avslutt fullskjerm</translation>
 <translation id="6399774419735315745">Spion</translation>
@@ -3601,11 +3614,13 @@
 <translation id="6455264371803474013">På bestemte nettsteder</translation>
 <translation id="6455894534188563617">&amp;Ny mappe</translation>
 <translation id="6456394469623773452">Grei</translation>
+<translation id="6456955391422100996">Annonsen er fjernet.</translation>
 <translation id="645705751491738698">Fortsett blokkering av JavaScript</translation>
 <translation id="6458701200018867744">Opplastingen mislyktes (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Bruk markering for Finn</translation>
 <translation id="6459799433792303855">Det aktive vinduet er flyttet til en annen skjerm.</translation>
 <translation id="6460601847208524483">Finn neste</translation>
+<translation id="6461170143930046705">Søker etter nettverk …</translation>
 <translation id="6463795194797719782">R&amp;ediger</translation>
 <translation id="6466988389784393586">&amp;Åpne alle bokmerker</translation>
 <translation id="6467304607960172345">Optimaliser fullskjermvideoer</translation>
@@ -3644,6 +3659,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Du er koblet til et <ph name="NETWORK_TYPE" />-nettverk.</translation>
 <translation id="6527303717912515753">Del</translation>
 <translation id="6528513914570774834">La andre brukere av denne enheten bruke dette nettverket</translation>
 <translation id="652948702951888897">Chrome-logg</translation>
@@ -3740,7 +3756,6 @@
 <translation id="6680650203439190394">Vurder</translation>
 <translation id="6681668084120808868">Ta et bilde</translation>
 <translation id="6681964764822470072">«<ph name="APP_NAME" />» blir avinstallert.</translation>
-<translation id="6685083257944113180">Stopp, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Åpne Google Play.</translation>
 <translation id="6686490380836145850">Lukk fanene til høyre</translation>
 <translation id="6686817083349815241">Lagre passordet ditt</translation>
@@ -3848,6 +3863,7 @@
 <translation id="6845038076637626672">Maksimer ved åpning</translation>
 <translation id="6845325883481699275">Bidra til å gjøre Chrome sikrere</translation>
 <translation id="6848388270925200958">Akkurat nå har du noen kort som bare kan brukes på denne enheten</translation>
+<translation id="6850286078059909152">Tekstfarge</translation>
 <translation id="6851497530878285708">Appen er slått på</translation>
 <translation id="6853388645642883916">Oppdatereringsprogrammet er i hvilemodus</translation>
 <translation id="68541483639528434">Lukk andre faner</translation>
@@ -3897,7 +3913,6 @@
 <translation id="6923132443355966645">Rull/klikk</translation>
 <translation id="6923633482430812883">Feil ved aktivering av deling. Sjekk at filtjeneren du er koblet til, støtter SMBv2 eller nyere.</translation>
 <translation id="6930036377490597025">Ekstern sikkerhetsnøkkel eller innebygd sensor</translation>
-<translation id="6930242544192836755">Varighet</translation>
 <translation id="693807610556624488">Skriveoperasjonen til den følgende enheten overskrider den maksimale attributtlengden: «<ph name="DEVICE_NAME" />».</translation>
 <translation id="6941937518557314510">Logg på <ph name="TOKEN_NAME" /> for å godkjenne <ph name="HOST_NAME" /> med sertifikatet ditt.</translation>
 <translation id="6943176775188458830">Avbryt utskriften</translation>
@@ -3911,6 +3926,7 @@
 <translation id="6951153907720526401">Betalingsbehandlere</translation>
 <translation id="6951663584153258142">Organisasjonen din ber deg om å oppdatere denne enheten</translation>
 <translation id="6953878494808481632">Relatert informasjon</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fil: <ph name="FILES" />}other{Filer: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Undersøk forgrunnsvindu</translation>
 <translation id="6957044667612803194">Denne sikkerhetsnøkkelen støtter ikke PIN-koder</translation>
 <translation id="6957231940976260713">Tjenestenavn</translation>
@@ -4123,7 +4139,6 @@
 <translation id="7254554697254365959">Siden kunne ikke oversettes.</translation>
 <translation id="7254951428499890870">Er du sikker på at du ønsker å starte <ph name="APP_NAME" /> i diagnostikkmodus?</translation>
 <translation id="7255002516883565667">Akkurat nå har du ett kort som bare kan brukes på denne enheten</translation>
-<translation id="7255220508626648026">Caster <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Berør sikkerhetsnøkkelen en gang til for å bekrefte tilbakestillingen. All informasjon som er lagret på sikkerhetsnøkkelen, inkludert PIN-koden, blir slettet.</translation>
 <translation id="7255935316994522020">Bruk</translation>
 <translation id="7256069762010468647">Nettstedet bruker kameraet ditt</translation>
@@ -4257,6 +4272,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Åpne sted</translation>
 <translation id="7458168200501453431">Bruker samme stavekontroll som i Google Søk. Tekst du skriver inn i nettleseren, sendes til Google.</translation>
+<translation id="7460045493116006516">Tema som er installert akkurat nå</translation>
 <translation id="7461924472993315131">Fest</translation>
 <translation id="746216226901520237">Neste gang låser telefonen opp <ph name="DEVICE_TYPE" />-enheten din. Du kan slå av Smart Lock i innstillingene.</translation>
 <translation id="7463006580194749499">Legg til person</translation>
@@ -4316,6 +4332,7 @@
 <translation id="7554791636758816595">Ny fane</translation>
 <translation id="7556033326131260574">Smart Lock kunne ikke bekrefte kontoen din. Skriv inn passordet for å få tilgang.</translation>
 <translation id="7556242789364317684">Dessverre kan ikke <ph name="SHORT_PRODUCT_NAME" /> gjenopprette innstillingene dine. For å reparere feilen må <ph name="SHORT_PRODUCT_NAME" /> tilbakestille enheten med Powerwash.</translation>
+<translation id="7559444627302317199">Kontrollér nettverksforbindelsen og prøv på nytt.</translation>
 <translation id="7559719679815339381">Vent litt … Kiosk-appen blir nå oppdatert. USB-pinnen må ikke tas ut.</translation>
 <translation id="7561196759112975576">Alltid</translation>
 <translation id="7563991800558061108">For å rette opp i denne feilen må du logge på Google-kontoen din fra påloggingssiden. Deretter kan du logge av Google-kontoen, og prøve å opprette en administrert bruker på nytt.</translation>
@@ -4556,7 +4573,6 @@
 <translation id="7887334752153342268">Dupliser</translation>
 <translation id="7887864092952184874">En Bluetooth-mus er tilkoblet</translation>
 <translation id="7889565820482017512">Visningsstørrelse</translation>
-<translation id="7889966925761734854">Let etter</translation>
 <translation id="7893008570150657497">Åpne bilder, musikk og andre mediefiler fra datamaskinen din</translation>
 <translation id="7893153962594818789">Bluetooth er slått av på denne <ph name="DEVICE_TYPE" />-enheten. Skriv inn passordet ditt, og slå på Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Standard)</translation>
@@ -4564,7 +4580,6 @@
 <translation id="7898627924844766532">Behold i verktøyraden</translation>
 <translation id="7898725031477653577">Oversett alltid</translation>
 <translation id="790040513076446191">manipulere personvernrelaterte innstillinger</translation>
-<translation id="7902874111237641165">Jevn bevegelse [beta]</translation>
 <translation id="7903345046358933331">Siden svarer ikke. Du kan vente til den svarer eller lukke den.</translation>
 <translation id="7903742244674067440">Du har registrerte sertifikater som identifiserer disse sertifikatinstansene</translation>
 <translation id="7903925330883316394">Verktøy: <ph name="UTILITY_TYPE" /></translation>
@@ -4676,6 +4691,7 @@
 <translation id="8037117027592400564">lese hele teksten med syntetisert tale</translation>
 <translation id="8037357227543935929">Spør (standard)</translation>
 <translation id="803771048473350947">Fil</translation>
+<translation id="8042142357103597104">Tekstopasitet</translation>
 <translation id="8044899503464538266">Lav</translation>
 <translation id="8045253504249021590">Synkronisering er stoppet via Google-oversikten.</translation>
 <translation id="8045923671629973368">Skriv inn app-ID-en eller nettadressen til nettbutikken</translation>
@@ -4712,7 +4728,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Du kan slå av denne tjenesten i Innstillinger.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN-kodene samsvarer ikke</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> bruker proxy-tjenerinnstillinger fra en utvidelse</translation>
-<translation id="8099495042588009598">Flere tillatelser</translation>
 <translation id="8101987792947961127">Powerwash kreves ved neste omstart</translation>
 <translation id="8102159139658438129">Gå til <ph name="LINK_BEGIN" />Innstillinger<ph name="LINK_END" /> for å se alternativer for den tilkoblede telefonen</translation>
 <translation id="8104696615244072556">Kjør Powerwash på <ph name="IDS_SHORT_PRODUCT_NAME" />-enheten din og gå tilbake til forrige versjon.</translation>
@@ -4764,8 +4779,10 @@
 Jeg tror ikke det er nødvendig å blokkere dette nettstedet.</translation>
 <translation id="8184288427634747179">Bytt til <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Mer informasjon</translation>
+<translation id="8184472985242519288">Helhetlig</translation>
 <translation id="8185331656081929126">Vis varsler når nye skrivere oppdages på nettverket</translation>
 <translation id="8186609076106987817">Tjeneren fant ikke filen.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> kan lese alle filene i denne mappen. Nettstedet kan bare se endringer i mappen så lenge denne fanen er åpen.</translation>
 <translation id="8188389033983459049">Sjekk enhetsinnstillingene dine og slå det på for å fortsette</translation>
 <translation id="8190193592390505034">Kobler til <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Administrering av programmer, utvidelser og temaer</translation>
@@ -4869,7 +4886,6 @@
 <translation id="833986336429795709">For å åpne denne linken, velg en app</translation>
 <translation id="8342861492835240085">Velg en samling</translation>
 <translation id="834290227245955730">Ugyldig PIN-kode. Gjenværende forsøk: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Bruk høy båndbredde for å få best mulig video eller animasjon. Det kan hende folk med treg tilkobling ikke kan se innholdet ditt.</translation>
 <translation id="8351419472474436977">Denne utvidelsen har tatt kontrollen over proxy-tjenerinnstillingene dine, noe som betyr at den kan endre, ødelegge eller spionere på alt du foretar deg på nettet. Hvis du ikke er sikker på hvorfor denne endringen fant sted, vil du mest sannsynlig ikke ha den.</translation>
 <translation id="8351630282875799764">Batteriet lades ikke</translation>
 <translation id="835238322900896202">Det oppsto en feil ved avinstalleringen. Du må avinstallere via terminalen.</translation>
@@ -4902,9 +4918,11 @@
 <translation id="839736845446313156">Registrer</translation>
 <translation id="8398877366907290961">Fortsett likevel</translation>
 <translation id="8400146488506985033">Administrer personer</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> kan lagre endringer direkte til filene i denne mappen. Nettstedet kan bare lagre endringer så lenge denne fanen er åpen.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Spør først (anbefales)</translation>
 <translation id="8418445294933751433">Vi&amp;s som fane</translation>
+<translation id="8418905021510211421">Denne siden har lov til å lese mapper på enheten din.</translation>
 <translation id="8419098111404128271">Søkeresultater for «<ph name="SEARCH_TEXT" />»</translation>
 <translation id="8419368276599091549">Velkommen til <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Endre</translation>
@@ -4924,6 +4942,7 @@
 <translation id="8438566539970814960">Gjør søking og surfing bedre</translation>
 <translation id="8439506636278576865">Tilby å oversette nettsider på dette språket</translation>
 <translation id="8440630305826533614">Linux-apper</translation>
+<translation id="844241640324986723">Kunne ikke slette påloggingsdataene dine.</translation>
 <translation id="8443338615972234259">Opprett en ny konto for den administrerte brukeren din nå.</translation>
 <translation id="8446884382197647889">Les mer</translation>
 <translation id="8447409163267621480">Inkluder enten Ctrl eller Alt</translation>
@@ -4939,8 +4958,6 @@
 <translation id="8461914792118322307">Proxy-tjener</translation>
 <translation id="8463215747450521436">Denne administrerte brukeren kan ha blitt slettet eller deaktivert av administratoren. Ta kontakt med administratoren hvis du vil fortsette å logge på som denne brukeren.</translation>
 <translation id="846374874681391779">Nedlastingsraden</translation>
-<translation id="8463807869745732775">"&gt;
-    Påloggingsdata som er lagret på sikkerhetsnøkkelen</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> er slått av.</translation>
 <translation id="8464132254133862871">Brukerkontoen er ikke kvalifisert for denne tjenesten.</translation>
 <translation id="8465252176946159372">Ikke gyldig</translation>
@@ -5006,6 +5023,7 @@
 <translation id="8569002732135253578">Skriver ut <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Ingen destinasjoner ble funnet</translation>
 <translation id="8571213806525832805">Siste 4 uker</translation>
+<translation id="8573403125070227391">Denne annonsen bruker for mange ressurser for enheten din, så Chrome har fjernet den.</translation>
 <translation id="8574990355410201600">Tillat alltid lyd på <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Hold inne <ph name="KEY_EQUIVALENT" /> for å avslutte.</translation>
 <translation id="8578639784464423491">Kan ikke overstige 99 bokstaver</translation>
@@ -5029,13 +5047,13 @@
 <translation id="8609465669617005112">Flytt opp</translation>
 <translation id="8610103157987623234">Feil format. Prøv på nytt</translation>
 <translation id="8615618338313291042">Inkognitoprogram: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Bakgrunnsskygge</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Status for roaming</translation>
 <translation id="8620765578342452535">Konfigurering av nettverkstilkoblinger</translation>
 <translation id="8621866727807194849">Det finnes skadelig programvare på datamaskinen din. Chrome fjerner den, gjenoppretter innstillingene dine og deaktiverer utvidelser. Dette gjør at nettleseren fungerer som normalt igjen.</translation>
 <translation id="8621979332865976405">Del hele skjermen</translation>
 <translation id="862542460444371744">&amp;Utvidelser</translation>
-<translation id="8627151598708688654">Velg kilde</translation>
 <translation id="862727964348362408">Stanset</translation>
 <translation id="862750493060684461">CSS-buffer</translation>
 <translation id="8627795981664801467">Bare sikre tilkoblinger</translation>
@@ -5089,6 +5107,7 @@
 <translation id="8688579245973331962">Ser du ikke navnet ditt?</translation>
 <translation id="8688591111840995413">Feil passord</translation>
 <translation id="8688672835843460752">Tilgjengelig</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Åpne p&amp;lassering ...</translation>
 <translation id="869884720829132584">Programmeny</translation>
 <translation id="869891660844655955">Utløpsdato</translation>
@@ -5252,6 +5271,7 @@
 <translation id="891365694296252935">Send bruks- og diagnostikkdata. Denne enheten sender for øyeblikket diagnostikk-, enhets- og appbruksdata til Google automatisk. Disse dataene brukes ikke til å identifisere barnet ditt, men bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Denne innstillingen håndheves av eieren. Hvis du har slått på annen nett- og appaktivitet for barnet ditt, kan disse dataene bli lagret i barnets Google-konto. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Laster inn forslag …</translation>
 <translation id="8916476537757519021">Inkognito-underramme: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – har lov til å lese mapper på enheten</translation>
 <translation id="8919275547519617350">For å få alle passordene dine på alle enhetene du bruker, logg på og slå på synkronisering.</translation>
 <translation id="8921366488406707015">Bekrefter sikkerhetsnøkkelen din …</translation>
 <translation id="8922013791253848639">Tillat alltid annonser på dette nettstedet</translation>
@@ -5281,7 +5301,6 @@
 <translation id="8965037249707889821">Skriv inn det gamle passordet</translation>
 <translation id="8966870118594285808">Åpne faner på nytt hvis du lukket dem ved et uhell</translation>
 <translation id="8967866634928501045">Trykk på Alt + Shift + A for å vise</translation>
-<translation id="8970203673128054105">Vis listen over castemoduser</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Kontakt nettverksadministratoren din for å sjekke at brannmuren ikke blokkerer nedlastinger fra Google-tjenere.</translation>
 <translation id="8973557916016709913">Fjern zoomnivået</translation>
@@ -5430,6 +5449,7 @@
 <translation id="9214520840402538427">Beklager. Oppstarten av attributtene for installasjonstid er tidsavbrutt. Ta kontakt med brukerstøtterepresentanten din.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">«<ph name="EXTENSION_NAME" />» ble lagt til</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> kan lagre endringer direkte til denne filen. Nettstedet kan bare lagre endringer så lenge denne fanen er åpen.</translation>
 <translation id="9218430445555521422">Bruk som standard</translation>
 <translation id="9219103736887031265">Bilder</translation>
 <translation id="9220525904950070496">Fjern konto</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index 4c7b75e..883a4667 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Błąd podczas uruchamiania maszyny wirtualnej. Spróbuj ponownie.</translation>
 <translation id="1089439967362294234">Zmień hasło</translation>
 <translation id="1090126737595388931">Brak aplikacji uruchomionych w tle</translation>
+<translation id="1090290614672149983">Zapisać zmiany w oryginalnym pliku?</translation>
 <translation id="1090918500949388876">Uruchamiaj Asystenta, mówiąc „OK Google”, gdy ekran jest włączony</translation>
 <translation id="1091767800771861448">Naciśnij ESCAPE, aby pominąć aktualizację (tylko nieoficjalne kompilacje).</translation>
 <translation id="1093457606523402488">Widoczne sieci:</translation>
 <translation id="1094607894174825014">Zażądano operacji odczytu lub zapisu z nieprawidłowym offsetem w: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="1097658378307015415">Zanim się zalogujesz, wybierz tryb gościa, aby aktywować sieć <ph name="NETWORK_ID" />.</translation>
+<translation id="110029732810301672">Ta karta ma uprawnienia do zapisywania zmian w oryginalnych plikach.</translation>
 <translation id="1103523840287552314">Zawsze tłumacz z języka: <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Zatrzymaj</translation>
 <translation id="1110155001042129815">Zaczekaj</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Okulary przeciwsłoneczne</translation>
 <translation id="1151917987301063366">Zawsze zezwalaj witrynie <ph name="HOST" /> na dostęp do czujników</translation>
 <translation id="1153356358378277386">Sparowane urządzenia</translation>
-<translation id="1156488781945104845">Bieżąca godzina</translation>
 <translation id="1161575384898972166">Zaloguj się do urządzenia <ph name="TOKEN_NAME" />, aby wyeksportować certyfikat klienta.</translation>
 <translation id="1163931534039071049">&amp;Wyświetl źródło ramki</translation>
 <translation id="1164674268730883318">Wyłączyć Smart Lock na urządzenie <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Ustawienia pamięci Adobe Flash Playera</translation>
 <translation id="1274997165432133392">Pliki cookie i inne dane witryn</translation>
 <translation id="127668050356036882">Zamknij wszystkie okna</translation>
-<translation id="1277908057200820621">Pokaż listę urządzeń</translation>
 <translation id="1280820357415527819">Szukam sieci komórkowych</translation>
 <translation id="1285320974508926690">Nigdy nie tłumacz tej witryny</translation>
 <translation id="1285484354230578868">Przechowywanie danych na koncie Dysku Google</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Sieć macierzysta, nie w roamingu</translation>
 <translation id="1316136264406804862">Trwa wyszukiwanie...</translation>
 <translation id="1316495628809031177">Synchronizacja została wstrzymana</translation>
+<translation id="1317637799698924700">Stacja dokująca będzie działać w trybie zgodności z USB typu C.</translation>
 <translation id="1322046419516468189">Swoje zapisane hasła znajdziesz tutaj: <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Aby korzystać z kart ze swoich innych urządzeń, zaloguj się w Chrome.</translation>
 <translation id="1327074568633507428">Drukarka w Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Twoją <ph name="BEGIN_LINK" />przeglądarką zarządza<ph name="END_LINK" /> domena <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Używaj na urządzeniu <ph name="DEVICE_TYPE" /> narzędzi, edytorów i IDE na Linuksa. &lt;a target="_blank" href="<ph name="URL" />"&gt;Więcej informacji&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Wybierz plik</translation>
+<translation id="1370749010280229230">Wystąpił problem z wyświetlaczem podłączonym do stacji dokującej</translation>
 <translation id="1371301976177520732">Twoje zakładki, hasła, historia i inne dane na wszystkich Twoich urządzeniach</translation>
 <translation id="1372841398847029212">Zsynchronizuj ze swoim kontem</translation>
 <translation id="1374844444528092021">Certyfikat wymagany przez sieć „<ph name="NETWORK_NAME" />” nie jest zainstalowany lub utracił ważność. Pobierz nowy certyfikat i spróbuj ponownie się połączyć.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Strona internetowa, pojedynczy plik</translation>
 <translation id="1451917004835509682">Dodaj nadzorowaną osobę</translation>
 <translation id="1454223536435069390">Wykon&amp;aj zrzut ekranu</translation>
+<translation id="1458243790901188746">{0,plural, =1{Folder: <ph name="DIRECTORIES" />}few{Foldery: <ph name="DIRECTORIES" />}many{Foldery: <ph name="DIRECTORIES" />}other{Foldery: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Wyszukiwarki dodane przez rozszerzenia</translation>
 <translation id="146000042969587795">Ramka została zablokowana, ponieważ zawiera kilka niezabezpieczonych elementów.</translation>
 <translation id="146219525117638703">Stan konfiguracji ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Pokaż opcje wprowadzania tekstu</translation>
 <translation id="1651008383952180276">Musisz dwukrotnie wpisać to samo hasło</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Dodaj drukarkę do Google Cloud Print, by móc drukować z dowolnego miejsca.}few{Dodaj # drukarki do Google Cloud Print, by móc drukować z dowolnego miejsca.}many{Dodaj # drukarek do Google Cloud Print, by móc drukować z dowolnego miejsca.}other{Dodaj # drukarki do Google Cloud Print, by móc drukować z dowolnego miejsca.}}</translation>
+<translation id="1656528038316521561">Przezroczystość tła</translation>
 <translation id="1657406563541664238">Pomóż ulepszyć <ph name="PRODUCT_NAME" />, przesyłając do Google statystyki użytkowania i raporty o awariach</translation>
 <translation id="1658424621194652532">Ta strona ma dostęp do mikrofonu.</translation>
 <translation id="1660204651932907780">Zezwalaj na odtwarzanie dźwięku na stronach internetowych (zalecane)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> chce odczytać markę i model Twojego klucza bezpieczeństwa</translation>
 <translation id="1679068421605151609">Narzędzia dla deweloperów</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Czy na pewno chcesz zakończyć?</translation>
 <translation id="167983332380191032">Usługa zarządzania wysłała błędny kod HTTP.</translation>
 <translation id="1680849702532889074">Podczas instalowania aplikacji na Linuksa wystąpił błąd.</translation>
 <translation id="16815041330799488">Nie zezwalaj stronom na dostęp do tekstu i obrazów skopiowanych do schowka</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identyfikator chronionych treści multimedialnych</translation>
 <translation id="175196451752279553">Prz&amp;ywróć zamkniętą kartę</translation>
 <translation id="1753905327828125965">Najczęstsze</translation>
+<translation id="1755601632425835748">Rozmiar tekstu</translation>
 <translation id="1756681705074952506">Sposób wprowadzania tekstu</translation>
 <translation id="1757301747492736405">Oczekiwanie na odinstalowanie</translation>
 <translation id="175772926354468439">Włącz motyw</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Mniejszy</translation>
 <translation id="1919345977826869612">Reklamy</translation>
 <translation id="1919814239594435008">Wtyczka spoza piaskownicy dozwolona</translation>
+<translation id="1920390473494685033">Kontakty</translation>
 <translation id="1921050530041573580">Sparuj swój telefon z Wiadomościami</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Inteligentne rozwiązania Google w <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Karta incognito: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Wtyczka <ph name="PEPPER_PLUGIN_NAME" /> na <ph name="PEPPER_PLUGIN_DOMAIN" /> chce mieć dostęp do Twojego komputera</translation>
 <translation id="2178614541317717477">Naruszenie bezpieczeństwa urzędu certyfikacji</translation>
+<translation id="2179849162388791084">Nie udało się odczytać danych logowania z klucza bezpieczeństwa.</translation>
 <translation id="218070003709087997">Wpisz wartość numeryczną, by określić liczbę kopii do wydrukowania (od 1 do 999).</translation>
 <translation id="2184515124301515068">Niech Chrome decyduje, które strony mogą odtwarzać dźwięk (zalecane)</translation>
 <translation id="2187895286714876935">Błąd importowania certyfikatu serwera</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Wszystkie pliki cookie i dane witryn</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Skopiowano 1 element}few{Skopiowano # elementy}many{Skopiowano # elementów}other{Skopiowano # elementu}}</translation>
 <translation id="2278562042389100163">Otwórz okno przeglądarki</translation>
-<translation id="2279874276457403668">Można utworzyć tylko jedną sesję na raz.</translation>
 <translation id="2280486287150724112">Prawy margines</translation>
 <translation id="2282146716419988068">Proces GPU</translation>
 <translation id="2282155092769082568">URL automatycznej konfiguracji:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Notatki na ekranie blokady są automatycznie zapisywane w aplikacji <ph name="LOCK_SCREEN_APP_NAME" />. Ostatnia notatka pozostanie na ekranie blokady.</translation>
 <translation id="2353297238722298836">Zezwolono na dostęp do kamery i mikrofonu</translation>
 <translation id="2356070529366658676">Pytaj</translation>
-<translation id="2357949918965361754">Za pomocą tej funkcji możesz wyświetlać treści z Chrome na telewizorze lub innych urządzeniach.</translation>
 <translation id="2359345697448000899">Aby zarządzać zainstalowanymi rozszerzeniami, kliknij Rozszerzenia w menu Narzędzia.</translation>
 <translation id="2359808026110333948">Dalej</translation>
 <translation id="236117173274098341">Optymalizuj</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Twoja organizacja wymaga natychmiastowego zaktualizowania tego urządzenia</translation>
 <translation id="2439545803278355377">Wpisz nowy kod PIN. Musi się on składać z co najmniej czterech znaków, którymi mogą być litery, cyfry i inne znaki.</translation>
 <translation id="2440604414813129000">Wyświetl ź&amp;ródło</translation>
+<translation id="2442916515643169563">Cień tekstu</translation>
 <translation id="2444119669991608829">Język tej strony to nie <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Wymagany jest główny katalog rozszerzenia.</translation>
 <translation id="2445484935443597917">Utwórz nowy profil</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Nie później niż</translation>
 <translation id="2739191690716947896">Debugowanie</translation>
 <translation id="2739240477418971307">Zmiana ustawień ułatwień dostępu</translation>
+<translation id="274029851662193272">Obniżony</translation>
 <translation id="2740393541869613458">sprawdzać, na jakie strony wszedł użytkownik nadzorowany, oraz</translation>
 <translation id="2741912629735277980">Wyświetlanie UI na ekranie logowania</translation>
 <translation id="274290345632688601">Przywracam aplikacje i pliki Linuksa</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Skrót już istnieje</translation>
 <translation id="2807517655263062534">Tutaj wyświetlają się pobrane pliki</translation>
 <translation id="2809586584051668049">i jeszcze <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Standard Thunderbolt nie jest obsługiwany</translation>
 <translation id="2812944337881233323">Wyloguj się i zaloguj się ponownie</translation>
 <translation id="2812989263793994277">Nie pokazuj żadnych grafik</translation>
 <translation id="281390819046738856">Nie udało się podpisać żądania.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Dostawca</translation>
 <translation id="2844169650293029770">Urządzenie USB-C (przedni port na lewym boku)</translation>
 <translation id="2845382757467349449">Zawsze pokazuj pasek zakładek</translation>
-<translation id="2847759467426165163">Przesyłaj na</translation>
 <translation id="284805635805850872">Usunąć szkodliwe oprogramowanie?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Błąd czyszczenia</translation>
@@ -1297,6 +1305,7 @@
     Komunikat serwera: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Dodaj galerię multimediów na podstawie katalogu</translation>
 <translation id="2910318910161511225">Połącz się z siecią i spróbuj ponownie</translation>
+<translation id="2910518940971897750">Zapisz w oryginalnym pliku</translation>
 <translation id="2913331724188855103">Zezwalaj witrynom na zapisywanie danych w plikach cookie i ich odczytywanie (zalecane)</translation>
 <translation id="2915102088417824677">Wyświetl historię aktywności</translation>
 <translation id="2915873080513663243">Automatyczne skanowanie</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Urządzenia MIDI</translation>
 <translation id="3015639418649705390">Uruchom ponownie teraz</translation>
 <translation id="3016329696181678353">Nie udało się automatycznie skonfigurować drukarki <ph name="PRINTER_NAME" />. Określ zaawansowane ustawienia drukarki.</translation>
+<translation id="3016381065346027039">Brak wpisów dziennika</translation>
 <translation id="3016641847947582299">Składnik został zaktualizowany</translation>
 <translation id="3016780570757425217">Sprawdzanie Twojej lokalizacji</translation>
 <translation id="3017079585324758401">Tło</translation>
 <translation id="3020183492814296499">Skróty</translation>
 <translation id="3020990233660977256">Numer seryjny: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Motyl</translation>
+<translation id="3021408157810018664">Zapisać zmiany w oryginalnych plikach?</translation>
 <translation id="3021426244864538700">Dostęp do danych tej witryny</translation>
 <translation id="3021678814754966447">&amp;Wyświetl źródło ramki</translation>
 <translation id="3022978424994383087">Nie rozumiem.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Możesz też pominąć logowanie i <ph name="LINK_START" />przeglądać internet jako gość<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Strona ma dostęp do wejścia wideo</translation>
 <translation id="3177909033752230686">Język strony:</translation>
+<translation id="3179982752812949580">Czcionka tekstu</translation>
 <translation id="3181954750937456830">Bezpieczne przeglądanie (chroni Ciebie i Twoje urządzenie przed niebezpiecznymi witrynami)</translation>
 <translation id="3182749001423093222">Sprawdzanie pisowni</translation>
 <translation id="3183139917765991655">Importer profilów</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Otwórz jako okno</translation>
 <translation id="3278001907972365362">Musisz się zająć swoimi kontami Google</translation>
 <translation id="3279230909244266691">Może to potrwać kilka minut. Uruchamiam maszynę wirtualną.</translation>
-<translation id="3279741024917655738">Wyświetlaj filmy pełnoekranowe na:</translation>
 <translation id="3280237271814976245">Zapisz &amp;jako...</translation>
 <translation id="3280243678470289153">Zostań w Chrome</translation>
 <translation id="3281892622610078515">Pliki i programy do kwarantanny:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Brak wyników wyszukiwania</translation>
 <translation id="3305389145870741612">Proces formatowania może potrwać kilka sekund. Czekaj.</translation>
 <translation id="3305661444342691068">Otwieraj podgląd plików PDF</translation>
-<translation id="3306684685104080068">Włącz przesyłanie do usług w chmurze takich jak Google Hangouts.</translation>
+<translation id="3307871847038842490">Ta strona ma uprawnienia do zapisywania zmian w oryginalnych plikach.</translation>
 <translation id="3308006649705061278">Jednostka organizacyjna (OU)</translation>
 <translation id="3308116878371095290">Umieszczanie na komputerze plików cookie z tej strony jest niedozwolone.</translation>
 <translation id="3308134619352333507">Ukryj przycisk</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Anulować konfigurowanie konta?</translation>
 <translation id="3464012987031883895">Strona ma dostęp do wejścia audio</translation>
 <translation id="346431825526753">To jest konto dla dzieci, którym zarządza <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Prześlij strumieniowo plik wideo lub audio</translation>
 <translation id="3468999815377931311">Telefon z Androidem</translation>
 <translation id="3470442499439619530">Usuń tego użytkownika</translation>
 <translation id="3473479545200714844">Lupa</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Pomniejsz</translation>
 <translation id="3497560059572256875">Udostępnij doodla</translation>
 <translation id="3505030558724226696">Anuluj dostęp do urządzeń</translation>
+<translation id="3505635633742443645">Gdy wyjściowe urządzenie wideo jest podłączone do portu USB typu C, nie można używać portu HDMI stacji dokującej. Podłącz jeden z wyświetlaczy do innego portu.</translation>
 <translation id="3507421388498836150">Obecne uprawnienia rozszerzenia „<ph name="EXTENSION_NAME" />”</translation>
 <translation id="3507888235492474624">Skanuj ponownie w poszukiwaniu urządzeń Bluetooth</translation>
 <translation id="3508920295779105875">Wybierz inny folder...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Zainstalowano</translation>
 <translation id="3578594933904494462">Treść tej karty jest udostępniana.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; chce udostępnić drukarkę &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; należącej do Ciebie grupie: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Jeśli się na to zgodzisz, wszyscy członkowie grupy będą mogli na niej drukować.</translation>
+<translation id="357889014807611375">Wi-Fi z pomiarem użycia danych</translation>
 <translation id="3584169441612580296">Odczyt i zmiana zdjęć, muzyki oraz innych multimediów na komputerze</translation>
 <translation id="3587482841069643663">Wszystkie</translation>
 <translation id="358796204584394954">Aby sparować, wpisz ten kod na urządzeniu „<ph name="DEVICE_NAME" />”:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Wpisz</translation>
 <translation id="3593965109698325041">Ograniczenia nazwy certyfikatu</translation>
 <translation id="3596235046596950091">Włącz usługi w chmurze</translation>
+<translation id="3599221874935822507">Uniesiony</translation>
 <translation id="3599863153486145794">Usuwa historię ze wszystkich urządzeń, na których jesteś zalogowany. Inne rodzaje historii przeglądania mogą być nadal dostępne na Twoim koncie Google na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Informacje o żądaniu internetowym</translation>
 <translation id="3600792891314830896">Wycisz strony, które odtwarzają dźwięk</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Pobrane przez &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Pokaż <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Otwórz w nowej karcie</translation>
+<translation id="3615073365085224194">Przyłóż palec do czytnika linii papilarnych</translation>
 <translation id="3616113530831147358">Dźwięk</translation>
 <translation id="3616741288025931835">&amp;Wyczyść dane przeglądania...</translation>
 <translation id="3617891479562106823">Tła są niedostępne. Spróbuj ponownie później.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Strona główna</translation>
 <translation id="3720996970802414353">Przełącz mimo to</translation>
 <translation id="3722108462506185496">Błąd podczas uruchamiania usługi maszyny wirtualnej. Spróbuj ponownie.</translation>
-<translation id="3723158278575423087">Witamy w Cast dla Chromium!</translation>
 <translation id="3725367690636977613">strony</translation>
 <translation id="3726137731714254362">Usunięcie stąd folderów zakończy udostępnianie, ale nie spowoduje skasowania plików.</translation>
 <translation id="3727148787322499904">Zmiana tego ustawienia wpłynie na wszystkie sieci współdzielone</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Szczegółowe informacje o kompilacji</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Komunikuje się z urządzeniem USB}few{Komunikuje się z # urządzeniami USB}many{Komunikuje się z # urządzeniami USB}other{Komunikuje się z # urządzenia USB}}</translation>
 <translation id="3765246971671567135">Nie udało się odczytać zasad trybu demonstracyjnego offline.</translation>
-<translation id="3766223500670287046">Ekran zdalny</translation>
 <translation id="3768037234834996183">Synchronizuję ustawienia...</translation>
 <translation id="377050016711188788">Lody</translation>
 <translation id="3771294271822695279">Pliki wideo</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Podnieś i przyłóż ponownie</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: synchronizacja wstrzymana</translation>
-<translation id="3862134173397075045">Witamy w Cast dla Chrome</translation>
 <translation id="3862693525629180217">Zweryfikuj za pomocą wbudowanego czujnika</translation>
 <translation id="3862788408946266506">Aplikację z atrybutem „kiosk_only” w pliku manifestu należy zainstalować w Chrome OS w trybie kiosku</translation>
 <translation id="3865414814144988605">Rozdzielczość</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Telefon z funkcją Smart Lock został zmieniony</translation>
 <translation id="3927932062596804919">Odmawiaj</translation>
 <translation id="3930737994424905957">Szukam urządzeń</translation>
+<translation id="3930968231047618417">Kolor tła</translation>
 <translation id="3933283459331715412">Przywróć usunięte hasło użytkownika <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Otwórz plik audio w nowej karcie</translation>
 <translation id="3936925983113350642">Wybrane hasło będzie wymagane później do odtworzenia tego certyfikatu. Zapisz je w bezpiecznym miejscu.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Zaimportowane z IE</translation>
 <translation id="3950820424414687140">Zaloguj się</translation>
+<translation id="3950828138786918475">Ta karta ma uprawnienia do odczytywania folderu na Twoim urządzeniu.</translation>
 <translation id="3954354850384043518">W toku</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">Nie ma zapisanych ostatnio logów zdarzeń WebRTC.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Obliczanie...</translation>
 <translation id="3975565978598857337">Nie udało się połączyć z serwerem obszaru</translation>
 <translation id="397703832102027365">Kończę...</translation>
+<translation id="3977886311744775419">W sieci tego typu aktualizacje nie są pobierane automatycznie, możesz jednak sprawdzić ręcznie, czy są dostępne.</translation>
 <translation id="3979395879372752341">Dodano nowe rozszerzenie (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Włącz: <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Wprowadzono nieprawidłowy typ zapisu.</translation>
@@ -2127,7 +2141,7 @@
 <translation id="4136203100490971508">Podświetlenie nocne wyłączy się automatycznie o wschodzie słońca</translation>
 <translation id="4138267921960073861">Pokaż nazwy użytkowników i zdjęcia na stronie logowania</translation>
 <translation id="4144218403971135344">Lepsza jakość filmów i dłuższy czas pracy na baterii. Filmy będą odtwarzane tylko na ekranie obsługującym Cast.</translation>
-<translation id="4145922204387553806">Pozwól Asystentowi podawać informacje związane z tym, co wyświetla się na Twoim ekranie</translation>
+<translation id="4145922204387553806">Pozwól Asystentowi wyświetlić więcej informacji związanych z tym, co masz na ekranie</translation>
 <translation id="4146026355784316281">Zawsze otwieraj w przeglądarce systemowej</translation>
 <translation id="4146785383423576110">Resetowanie komputera i czyszczenie danych</translation>
 <translation id="4147911968024186208">Spróbuj jeszcze raz. Jeśli ten błąd pojawi się ponownie, skontaktuj się z przedstawicielem pomocy.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Włącz kliknięcie przez dotknięcie</translation>
 <translation id="4195643157523330669">Otwórz w nowej karcie</translation>
 <translation id="4195814663415092787">Kontynuuj tam, gdzie skończyłem</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> może zapisywać zmiany bezpośrednio w poniższych plikach. Ta strona internetowa może zapisywać zmiany tylko wtedy, gdy ta karta jest otwarta.</translation>
 <translation id="4198146608511578238">Aby porozmawiać z Asystentem Google, naciśnij i przytrzymaj ikonę menu z aplikacjami.</translation>
 <translation id="4200689466366162458">Słowa niestandardowe</translation>
 <translation id="4200983522494130825">Nowa &amp;karta</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Automatycznie łącz się z siecią komórkową</translation>
 <translation id="4268025649754414643">Szyfrowanie klucza</translation>
 <translation id="4270393598798225102">Wersja <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Brak zgodnych wyników</translation>
 <translation id="4275663329226226506">Multimedia</translation>
 <translation id="4275830172053184480">Zrestartuj urządzenie</translation>
 <translation id="4278101229438943600">Twój Asystent jest gotowy</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Czas pracy procesora</translation>
 <translation id="4534661889221639075">Spróbuj ponownie.</translation>
 <translation id="4535127706710932914">Profil domyślny</translation>
+<translation id="4535767533210902251">Czytnik linii papilarnych to klawisz w prawym górnym rogu klawiatury. Dotknij go delikatnie dowolnym palcem.</translation>
 <translation id="4538684596480161368">Zawsze blokuj wtyczki poza piaskownicą na <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Zainstalowane na podstawie zasad przedsiębiorstwa.</translation>
 <translation id="4542520061254486227">Odczyt Twoich danych na stronie <ph name="WEBSITE_1" /> i <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Więcej</translation>
 <translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Sparuj urządzenie Bluetooth</translation>
+<translation id="4578012756826807359">Dane logowania zostały usunięte.</translation>
 <translation id="4579581181964204535">Nie udało się przesłać <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Błąd podczas przywracania Linuksa</translation>
 <translation id="4582563038311694664">Zresetuj wszystkie ustawienia</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Pliki cookie z wielu witryn będą czyszczone przy zamykaniu.</translation>
 <translation id="4765582662863429759">Zezwala Wiadomościom na Androida przesyłać SMS-y z telefonu na Chromebooka</translation>
 <translation id="4768332406694066911">Masz certyfikaty od tych organizacji potwierdzające Twoją tożsamość</translation>
-<translation id="4772404146526168240">Oba ekrany</translation>
 <translation id="4776146737004271126">Otwórz ustawienia Androida</translation>
 <translation id="4776917500594043016">Hasło dla <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Sklep Play</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Zaloguj się, by korzystać ze swoich zakładek, historii, haseł i innych ustawień na wszystkich urządzeniach. Będziesz też automatycznie logować się w usługach Google, których używasz.</translation>
 <translation id="4929386379796360314">Miejsca docelowe drukowania</translation>
 <translation id="4930714375720679147">Włącz</translation>
-<translation id="4931132176527519925">Zawsze używaj odbicia lustrzanego</translation>
 <translation id="4932733599132424254">Data</translation>
 <translation id="4933484234309072027">umieszczone w witrynie <ph name="URL" /></translation>
 <translation id="493571969993549666">Dodaj nadzorowanego użytkownika</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Wyłącz wyciszenie</translation>
 <translation id="4992458225095111526">Potwierdzanie Powerwash</translation>
 <translation id="4992473555164495036">Administrator ograniczył dostępne metody wprowadzania.</translation>
+<translation id="4992866843815555470">Stacja dokująca wymaga czynności serwisowych. Bez działającego wentylatora zostanie wyłączona.</translation>
 <translation id="4992926179187649719">Włącz funkcję „OK Google”</translation>
 <translation id="4994474651455208930">Zezwól, by strony prosiły użytkownika o ustawienie ich jako domyślnego modułu obsługi protokołu</translation>
 <translation id="4994754230098574403">Konfiguruję</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">ID procesu</translation>
 <translation id="5233638681132016545">Nowa karta</translation>
 <translation id="5233736638227740678">&amp;Wklej</translation>
-<translation id="5234764350956374838">Zamknij</translation>
 <translation id="5235050375939235066">Odinstalować aplikację?</translation>
 <translation id="5235750401727657667">Zmiana strony, która wyświetla się, gdy otwierasz nową kartę</translation>
 <translation id="5238278114306905396">Aplikacja „<ph name="EXTENSION_NAME" />” została automatycznie usunięta.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google zaleca Chrome</translation>
 <translation id="532247166573571973">Serwer może być niedostępny. Spróbuj ponownie później.</translation>
 <translation id="5324780743567488672">Ustaw strefę czasową automatycznie na podstawie lokalizacji</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – z uprawnieniami do zapisywania zmian w oryginalnych plikach</translation>
 <translation id="5327248766486351172">Nazwa</translation>
 <translation id="5327570636534774768">To urządzenie jest oznaczone jako zarządzane przez inną domenę. Wyrejestruj je z tamtej domeny, zanim skonfigurujesz tryb demonstracyjny.</translation>
 <translation id="532943162177641444">Kliknij powiadomienie na telefonie <ph name="PHONE_NAME" />, by skonfigurować mobilny hotspot, z którego może korzystać to urządzenie.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> prosi o pozwolenie na:</translation>
 <translation id="5534304873398226603">Odrzuć zdjęcie lub film</translation>
 <translation id="5535941515421698170">Usuń też swoje dane z tego urządzenia</translation>
-<translation id="5537725057119320332">Przesyłaj</translation>
 <translation id="5539221284352502426">Podane hasło zostało odrzucone przez serwer. Możliwe, że jest ono za krótkie, musi zawierać cyfry lub symbole albo musi się różnić od poprzednich haseł.</translation>
 <translation id="5541687815721799001">Użyj aplikacji</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Więcej informacji o uprawnieniach dostępu do stron</translation>
 <translation id="6000758707621254961">Wyniki wyszukiwania dla zapytania „<ph name="SEARCH_TEXT" />”: <ph name="RESULT_COUNT" /></translation>
 <translation id="6002458620803359783">Preferowane głosy</translation>
-<translation id="6005695835120147974">Router multimediów</translation>
 <translation id="6006484371116297560">Klasyczny</translation>
 <translation id="6007240208646052708">Wyszukiwanie głosowe jest niedostępne w Twoim języku.</translation>
 <translation id="6009781704028455063">Wbudowany czujnik</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nowa drukarka w Twojej sieci}few{Nowe drukarki w Twojej sieci}many{Nowe drukarki w Twojej sieci}other{Nowe drukarki w Twojej sieci}}</translation>
 <translation id="6286708577777130801">Szczegóły zapisanych haseł</translation>
 <translation id="6289452883081499048">Spersonalizowane usługi Google, takie jak Play</translation>
-<translation id="6290556621549272952">Za pomocą tej funkcji możesz wyświetlać treści z Chromium na telewizorze lub innych urządzeniach.</translation>
 <translation id="6291949900244949761">Pytaj, gdy strona chce uzyskać dostęp do urządzeń USB (zalecane)</translation>
 <translation id="6291953229176937411">&amp;Pokaż w Finderze</translation>
 <translation id="6295158916970320988">Wszystkie witryny</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Przesyłaj <ph name="BEGIN_LINK1" />informacje o systemie<ph name="END_LINK1" /> i <ph name="BEGIN_LINK2" />dane<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Blokuj stronom używanie czujników ruchu</translation>
 <translation id="6397094776139756010">Opcje synchronizacji i personalizacji</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> będzie mieć możliwość zapisywania zmian bezpośrednio w plikach w poniższym folderze. Ta strona internetowa może zapisywać zmiany tylko wtedy, gdy ta karta jest otwarta.</translation>
 <translation id="6398715114293939307">Usuń Sklep Google Play</translation>
 <translation id="6398765197997659313">Zamknij pełny ekran</translation>
 <translation id="6399774419735315745">Szpieg</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">Na określonych stronach</translation>
 <translation id="6455894534188563617">&amp;Nowy folder</translation>
 <translation id="6456394469623773452">Dobry</translation>
+<translation id="6456955391422100996">Reklama została usunięta.</translation>
 <translation id="645705751491738698">Nadal blokuj wykonywanie kodu JavaScript</translation>
 <translation id="6458701200018867744">Nie udało się przesłać (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Użyj zaznaczenia do funkcji Znajdź</translation>
 <translation id="6459799433792303855">Aktywne okno zostało przeniesione na inny ekran.</translation>
 <translation id="6460601847208524483">Znajdź następne</translation>
+<translation id="6461170143930046705">Szukam sieci...</translation>
 <translation id="6463795194797719782">&amp;Edycja</translation>
 <translation id="6466988389784393586">&amp;Otwórz wszystkie zakładki</translation>
 <translation id="6467304607960172345">Zoptymalizuj filmy na pełnym ekranie</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Masz połączenie z siecią <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Udostępnij</translation>
 <translation id="6528513914570774834">Zezwól innym użytkownikom tego urządzenia na używanie tej sieci</translation>
 <translation id="652948702951888897">Historia Chrome</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Szybkość</translation>
 <translation id="6681668084120808868">Zrób zdjęcie</translation>
 <translation id="6681964764822470072">Aplikacja „<ph name="APP_NAME" />” zostanie odinstalowana.</translation>
-<translation id="6685083257944113180">Zatrzymaj, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Otwórz Google Play</translation>
 <translation id="6686490380836145850">Zamknij karty po prawej</translation>
 <translation id="6686817083349815241">Zapisz hasło</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Otwórz zmaksymalizowane</translation>
 <translation id="6845325883481699275">Pomóż zwiększyć bezpieczeństwo Chrome</translation>
 <translation id="6848388270925200958">Obecnie niektórych Twoich kart można używać tylko na tym urządzeniu</translation>
+<translation id="6850286078059909152">Kolor tekstu</translation>
 <translation id="6851497530878285708">Aplikacja włączona</translation>
 <translation id="6853388645642883916">Aktualizator jest uśpiony</translation>
 <translation id="68541483639528434">Zamknij inne karty</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Przewiń/kliknij</translation>
 <translation id="6923633482430812883">Błąd podczas podłączania udziału. Sprawdź, czy serwer plików, z którym się łączysz, obsługuje SMB w wersji 2 lub nowszej.</translation>
 <translation id="6930036377490597025">Zewnętrzny klucz bezpieczeństwa lub wbudowany czujnik</translation>
-<translation id="6930242544192836755">Czas trwania</translation>
 <translation id="693807610556624488">Przekroczenie maksymalnej długości atrybutu w operacji zapisu na: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="6941937518557314510">Zaloguj się do urządzenia <ph name="TOKEN_NAME" />, aby za pomocą swojego certyfikatu wykonać uwierzytelnianie w witrynie <ph name="HOST_NAME" />.</translation>
 <translation id="6943176775188458830">Anuluj drukowanie</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Moduły do obsługi płatności</translation>
 <translation id="6951663584153258142">Twoja organizacja prosi o zaktualizowanie tego urządzenia</translation>
 <translation id="6953878494808481632">Powiązane informacje</translation>
+<translation id="6953916367503892689">{0,plural, =1{Plik: <ph name="FILES" />}few{Pliki: <ph name="FILES" />}many{Pliki: <ph name="FILES" />}other{Pliki: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Sprawdź wyskakujące okienko</translation>
 <translation id="6957044667612803194">Ten klucz bezpieczeństwa nie obsługuje kodów PIN</translation>
 <translation id="6957231940976260713">Nazwa usługi</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Nie udało się przetłumaczyć tej strony.</translation>
 <translation id="7254951428499890870">Czy na pewno chcesz uruchomić „<ph name="APP_NAME" />” w trybie diagnostycznym?</translation>
 <translation id="7255002516883565667">Obecnie masz jedną kartę, której można używać tylko na tym urządzeniu</translation>
-<translation id="7255220508626648026">Przesyłam: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Jeszcze raz dotknij klucza bezpieczeństwa, by potwierdzić resetowanie. Usunięte zostaną wszystkie informacje zapisane w kluczu, w tym jego kod PIN.</translation>
 <translation id="7255935316994522020">Zastosuj</translation>
 <translation id="7256069762010468647">Strona używa kamery</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">deweloperska</translation>
 <translation id="7456847797759667638">Otwórz lokalizację...</translation>
 <translation id="7458168200501453431">Korzysta z tego samego mechanizmu sprawdzania pisowni, który jest używany w wyszukiwarce Google. Tekst wpisywany w przeglądarce jest wysyłany do Google.</translation>
+<translation id="7460045493116006516">Zainstalowany motyw</translation>
 <translation id="7461924472993315131">Przypnij</translation>
 <translation id="746216226901520237">Następnym razem Twój telefon odblokuje urządzenie <ph name="DEVICE_TYPE" />. Smart Lock możesz wyłączyć w Ustawieniach.</translation>
 <translation id="7463006580194749499">Dodaj osobę</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Nowa karta</translation>
 <translation id="7556033326131260574">Smart Lock nie mógł zweryfikować Twojego konta. Wpisz hasło, by uzyskać dostęp do urządzenia.</translation>
 <translation id="7556242789364317684"><ph name="SHORT_PRODUCT_NAME" /> nie może niestety odzyskać Twoich ustawień. Aby naprawić ten błąd, <ph name="SHORT_PRODUCT_NAME" /> musi zresetować urządzenie za pomocą Powerwash.</translation>
+<translation id="7559444627302317199">Sprawdź połączenie sieciowe i spróbuj ponownie.</translation>
 <translation id="7559719679815339381">Zaczekaj....Aplikacja kiosku jest aktualizowana. Nie odłączaj pamięci USB.</translation>
 <translation id="7561196759112975576">Zawsze</translation>
 <translation id="7563991800558061108">Aby usunąć skutki tego błędu, musisz zalogować się na swoje konto Google
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Duplikuj</translation>
 <translation id="7887864092952184874">Sparowano mysz Bluetooth</translation>
 <translation id="7889565820482017512">Rozmiar wyświetlacza</translation>
-<translation id="7889966925761734854">Szukaj</translation>
 <translation id="7893008570150657497">Dostęp do zdjęć, muzyki i innych multimediów na komputerze</translation>
 <translation id="7893153962594818789">Bluetooth jest wyłączony na urządzeniu <ph name="DEVICE_TYPE" />. Wpisz hasło i włącz Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (domyślna)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Zachowaj na pasku narzędzi</translation>
 <translation id="7898725031477653577">Zawsze tłumacz</translation>
 <translation id="790040513076446191">Manipulować ustawieniami ochrony prywatności</translation>
-<translation id="7902874111237641165">Płynny ruch [beta]</translation>
 <translation id="7903345046358933331">Ta strona nie odpowiada. Możesz zaczekać, aż zacznie odpowiadać, lub ją zamknąć.</translation>
 <translation id="7903742244674067440">Masz zapisane certyfikaty, które umożliwiają identyfikację tych urzędów certyfikacji</translation>
 <translation id="7903925330883316394">Narzędzie: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">Odczyt całego tekstu mówionego przez syntezator mowy</translation>
 <translation id="8037357227543935929">Pytaj (domyślnie)</translation>
 <translation id="803771048473350947">Plik</translation>
+<translation id="8042142357103597104">Przezroczystość tekstu</translation>
 <translation id="8044899503464538266">Powoli</translation>
 <translation id="8045253504249021590">Synchronizacja została zatrzymana przez Panel Google.</translation>
 <translation id="8045923671629973368">Wpisz identyfikator aplikacji lub URL sklepu internetowego</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Możesz wyłączyć tę usługę w Ustawieniach.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Kody PIN są różne</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> używa ustawień serwera proxy z rozszerzenia</translation>
-<translation id="8099495042588009598">Więcej uprawnień</translation>
 <translation id="8101987792947961127">Przy następnym uruchomieniu trzeba wykonać Powerwash</translation>
 <translation id="8102159139658438129">Otwórz <ph name="LINK_BEGIN" />Ustawienia<ph name="LINK_END" />, by zobaczyć opcje połączenia z telefonem</translation>
 <translation id="8104696615244072556">Wykonaj Powerwash na urządzeniu z <ph name="IDS_SHORT_PRODUCT_NAME" /> i przywróć poprzednią wersję.</translation>
@@ -4773,8 +4788,10 @@
     Ta strona nie powinna być zablokowana.</translation>
 <translation id="8184288427634747179">Przełącz na: <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Więcej informacji</translation>
+<translation id="8184472985242519288">Jednolity</translation>
 <translation id="8185331656081929126">Pokazuj powiadomienia po wykryciu w sieci nowych drukarek</translation>
 <translation id="8186609076106987817">Serwer nie znalazł pliku.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> może odczytywać wszystkie pliki w poniższym folderze. Ta strona internetowa może wykryć zmiany w folderze tylko wtedy, gdy ta karta jest otwarta.</translation>
 <translation id="8188389033983459049">Sprawdź ustawienia urządzenia i włącz tę opcję, by kontynuować</translation>
 <translation id="8190193592390505034">Łączenie z siecią <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Zarządzanie Twoimi aplikacjami, rozszerzeniami i motywami</translation>
@@ -4878,8 +4895,6 @@
 <translation id="833986336429795709">Aby otworzyć ten link, wybierz aplikację</translation>
 <translation id="8342861492835240085">Wybierz kolekcję</translation>
 <translation id="834290227245955730">Nieprawidłowy kod PIN. Pozostała liczba prób: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Użyj dużej przepustowości, by uzyskać najwyższą jakość wideo lub animacji.
-Osoby z wolnym połączeniem mogą nie zobaczyć treści, które przesyłasz.</translation>
 <translation id="8351419472474436977">To rozszerzenie przejęło kontrolę nad ustawieniami Twojego serwera proxy, co oznacza, że może zmieniać, przerywać lub podsłuchiwać wszystko, co robisz online. Jeśli nie masz pewności, skąd się wzięła ta zmiana, prawdopodobnie jej nie chcesz.</translation>
 <translation id="8351630282875799764">Bateria nie ładuje się</translation>
 <translation id="835238322900896202">Podczas odinstalowywania wystąpił błąd. Odinstaluj za pomocą terminala.</translation>
@@ -4912,9 +4927,11 @@
 <translation id="839736845446313156">Zarejestruj</translation>
 <translation id="8398877366907290961">Kontynuuj mimo wszystko</translation>
 <translation id="8400146488506985033">Zarządzaj użytkownikami</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> może zapisywać zmiany bezpośrednio w plikach w poniższym folderze. Ta strona internetowa może zapisywać zmiany tylko wtedy, gdy ta karta jest otwarta.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Najpierw zapytaj (zalecane)</translation>
 <translation id="8418445294933751433">&amp;Pokaż jako kartę</translation>
+<translation id="8418905021510211421">Ta strona ma uprawnienia do odczytywania folderu na Twoim urządzeniu.</translation>
 <translation id="8419098111404128271">Wyniki wyszukiwania dla „<ph name="SEARCH_TEXT" />”</translation>
 <translation id="8419368276599091549">Oto Twój <ph name="DEVICE_TYPE" /></translation>
 <translation id="8425213833346101688">Zmień</translation>
@@ -4934,6 +4951,7 @@
 <translation id="8438566539970814960">Ulepsz wyszukiwanie i przeglądanie</translation>
 <translation id="8439506636278576865">Proponuj tłumaczenie stron w tym języku</translation>
 <translation id="8440630305826533614">Aplikacje na Linuksa</translation>
+<translation id="844241640324986723">Nie udało się usunąć danych logowania.</translation>
 <translation id="8443338615972234259">Utwórz teraz nowe konto dla nadzorowanego użytkownika.</translation>
 <translation id="8446884382197647889">Więcej informacji</translation>
 <translation id="8447409163267621480">Uwzględnij Ctrl lub Alt</translation>
@@ -4949,8 +4967,6 @@
 <translation id="8461914792118322307">Serwer proxy</translation>
 <translation id="8463215747450521436">Ten użytkownik nadzorowany mógł zostać usunięty lub wyłączony przez menedżera. Jeśli do logowania nadal chcesz używać tych danych, skontaktuj się z nim.</translation>
 <translation id="846374874681391779">Pasek pobranych plików</translation>
-<translation id="8463807869745732775">"&gt;
-    Dane logowania zapisane na kluczu bezpieczeństwa</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> – wyłączono</translation>
 <translation id="8464132254133862871">To konto użytkownika nie kwalifikuje się do korzystania z tej usługi.</translation>
 <translation id="8465252176946159372">Nieważne</translation>
@@ -5016,6 +5032,7 @@
 <translation id="8569002732135253578">Drukuję: <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Nie znaleziono urządzeń docelowych</translation>
 <translation id="8571213806525832805">Ostatnie 4 tygodnie</translation>
+<translation id="8573403125070227391">Ta reklama używa zbyt wiele zasobów Twojego urządzenia, dlatego została usunięta przez Chrome.</translation>
 <translation id="8574990355410201600">Zawsze zezwalaj na odtwarzanie dźwięku na stronie <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Aby zakończyć, przytrzymaj klawisz <ph name="KEY_EQUIVALENT" /></translation>
 <translation id="8578639784464423491">Nie może mieć więcej niż 99 liter</translation>
@@ -5039,13 +5056,13 @@
 <translation id="8609465669617005112">W górę</translation>
 <translation id="8610103157987623234">Nieprawidłowy format – spróbuj ponownie</translation>
 <translation id="8615618338313291042">Aplikacja w trybie incognito: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Z cieniem</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Stan roamingu</translation>
 <translation id="8620765578342452535">Konfigurowanie połączenia sieciowego</translation>
 <translation id="8621866727807194849">Masz na komputerze szkodliwe oprogramowanie. Chrome właśnie je usuwa, przywraca Twoje ustawienia i wyłącza rozszerzenia. Dzięki temu przeglądarka znowu będzie działać normalnie.</translation>
 <translation id="8621979332865976405">Udostępnij cały ekran</translation>
 <translation id="862542460444371744">&amp;Rozszerzenia</translation>
-<translation id="8627151598708688654">Wybierz źródło</translation>
 <translation id="862727964348362408">Zawieszona</translation>
 <translation id="862750493060684461">Pamięć podręczna CSS</translation>
 <translation id="8627795981664801467">Tylko bezpieczne połączenia</translation>
@@ -5099,6 +5116,7 @@
 <translation id="8688579245973331962">Nie widzisz swojej nazwy?</translation>
 <translation id="8688591111840995413">Nieprawidłowe hasło</translation>
 <translation id="8688672835843460752">Dostępne</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Otwórz &amp;lokalizację</translation>
 <translation id="869884720829132584">Menu aplikacji</translation>
 <translation id="869891660844655955">Data wygaśnięcia</translation>
@@ -5262,6 +5280,7 @@
 <translation id="891365694296252935">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Jeśli dodatkowo na koncie Google dziecka włączysz ustawienie Aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Ładuję sugestie</translation>
 <translation id="8916476537757519021">Ramka podrzędna incognito: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – z uprawnieniami do odczytywania folderu na Twoim urządzeniu</translation>
 <translation id="8919275547519617350">Aby korzystać ze wszystkich swoich haseł na innych urządzeniach, zaloguj się i włącz synchronizację.</translation>
 <translation id="8921366488406707015">Weryfikuję klucz bezpieczeństwa…</translation>
 <translation id="8922013791253848639">Zawsze zezwalaj na wyświetlanie reklam na tej stronie</translation>
@@ -5291,7 +5310,6 @@
 <translation id="8965037249707889821">Wpisz stare hasło</translation>
 <translation id="8966870118594285808">Możesz ponownie otworzyć kartę zamkniętą przez przypadek</translation>
 <translation id="8967866634928501045">Naciśnij Alt+Shift+A, by wyświetlić</translation>
-<translation id="8970203673128054105">Pokaż listę trybów przesyłania</translation>
 <translation id="89720367119469899">Ucieczka</translation>
 <translation id="8972513834460200407">Skontaktuj się z administratorem sieci, by dowiedzieć się, czy zapora sieciowa nie blokuje pobrań z serwerów Google.</translation>
 <translation id="8973557916016709913">Usuń poziom powiększenia</translation>
@@ -5440,6 +5458,7 @@
 <translation id="9214520840402538427">Upłynął limit czasu inicjowania atrybutów instalacyjnych. Skontaktuj się z przedstawicielem obsługi klienta.</translation>
 <translation id="9214695392875603905">Babeczka</translation>
 <translation id="9215293857209265904">Dodano „<ph name="EXTENSION_NAME" />”</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> będzie mieć możliwość zapisywania zmian bezpośrednio w poniższym pliku. Ta strona internetowa może zapisywać zmiany tylko wtedy, gdy ta karta jest otwarta.</translation>
 <translation id="9218430445555521422">Ustaw jako domyślną</translation>
 <translation id="9219103736887031265">Grafika</translation>
 <translation id="9220525904950070496">Usuń konto</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index c53917e..983168f 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Erro ao iniciar a máquina virtual. Tente novamente.</translation>
 <translation id="1089439967362294234">Alterar senha</translation>
 <translation id="1090126737595388931">Nenhum aplicativo de fundo sendo executado</translation>
+<translation id="1090290614672149983">Salvar alterações no arquivo original?</translation>
 <translation id="1090918500949388876">Acesse seu Assistente a qualquer momento, dizendo "Ok Google" quando a tela estiver ativada</translation>
 <translation id="1091767800771861448">Pressione ESC para pular (versões não-oficiais apenas).</translation>
 <translation id="1093457606523402488">Redes visíveis</translation>
 <translation id="1094607894174825014">A operação de leitura ou escrita foi solicitada com um deslocamento inválido em: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Antes de fazer login, entre como Visitante para ativar a rede <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Esta guia tem permissão para salvar arquivos originais.</translation>
 <translation id="1103523840287552314">Sempre traduzir do <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Parar</translation>
 <translation id="1110155001042129815">Aguarde</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Óculos de sol</translation>
 <translation id="1151917987301063366">Sempre permitir que <ph name="HOST" /> acesse os sensores</translation>
 <translation id="1153356358378277386">Dispositivos pareados</translation>
-<translation id="1156488781945104845">Hora atual</translation>
 <translation id="1161575384898972166">Faça login no <ph name="TOKEN_NAME" /> para exportar o certificado do cliente.</translation>
 <translation id="1163931534039071049">&amp;Exibir código fonte do frame</translation>
 <translation id="1164674268730883318">Desativar o Smart Lock para <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Configurações de armazenamento do Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies e outros dados do site</translation>
 <translation id="127668050356036882">Fechar todas as janelas</translation>
-<translation id="1277908057200820621">Ver lista de dispositivos</translation>
 <translation id="1280820357415527819">Pesquisando redes móveis</translation>
 <translation id="1285320974508926690">Nunca traduzir este site</translation>
 <translation id="1285484354230578868">Armazenar dados em sua conta do Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Rede doméstica, não está em roaming</translation>
 <translation id="1316136264406804862">Pesquisando...</translation>
 <translation id="1316495628809031177">A sincronização está pausada</translation>
+<translation id="1317637799698924700">Sua base de encaixe funcionará no modo de compatibilidade com USB-C.</translation>
 <translation id="1322046419516468189">Ver e gerenciar senhas salvas na sua <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Para ver as guias dos seus outros dispositivos, faça login no Chrome.</translation>
 <translation id="1327074568633507428">Impressora no Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Seu <ph name="BEGIN_LINK" />navegador é gerenciado<ph name="END_LINK" /> por <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Execute ferramentas, editores e ambientes de desenvolvimento integrado do Linux no seu <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Saiba mais&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Escolher um arquivo</translation>
+<translation id="1370749010280229230">Há um problema na tela conectada à base</translation>
 <translation id="1371301976177520732">Seus favoritos, senhas, histórico e muito mais em todos os seus dispositivos</translation>
 <translation id="1372841398847029212">Sincronizar com sua conta</translation>
 <translation id="1374844444528092021">O certificado exigido pela rede "<ph name="NETWORK_NAME" />" não está instalado ou não é mais válido. Obtenha um novo certificado e tente se conectar novamente.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Página da Web, arquivo único</translation>
 <translation id="1451917004835509682">Adicionar pessoa supervisionada</translation>
 <translation id="1454223536435069390">T&amp;irar captura de tela</translation>
+<translation id="1458243790901188746">{0,plural, =1{Pasta: <ph name="DIRECTORIES" />}one{Pasta: <ph name="DIRECTORIES" />}other{Pastas: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Ferramentas de buscas adicionadas por extensões</translation>
 <translation id="146000042969587795">Este frame foi bloqueado porque contém algum conteúdo não seguro.</translation>
 <translation id="146219525117638703">Estado ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Mostrar opções de entrada</translation>
 <translation id="1651008383952180276">Informe a mesma senha longa duas vezes</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Adicionar a impressora ao Google Cloud Print para poder imprimir de qualquer lugar.}one{Adicionar # impressoras ao Google Cloud Print para poder imprimir de qualquer lugar.}other{Adicionar # impressoras ao Google Cloud Print para poder imprimir de qualquer lugar.}}</translation>
+<translation id="1656528038316521561">Opacidade do plano de fundo</translation>
 <translation id="1657406563541664238">Ajudar a tornar o <ph name="PRODUCT_NAME" /> melhor enviando automaticamente estatísticas de uso e relatórios de problemas ao Google.</translation>
 <translation id="1658424621194652532">Esta página está acessando seu microfone.</translation>
 <translation id="1660204651932907780">Permitir o áudio dos sites (recomendado)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> quer ver a marca e o modelo da sua chave de segurança</translation>
 <translation id="1679068421605151609">Ferramentas do desenvolvedor</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Quer mesmo sair?</translation>
 <translation id="167983332380191032">O serviço de gerenciamento enviou um erro de HTTP.</translation>
 <translation id="1680849702532889074">Ocorreu um erro durante a instalação do aplicativo Linux.</translation>
 <translation id="16815041330799488">Não permitir que sites vejam textos e imagens copiados para a área de transferência</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identificador de mídia protegida</translation>
 <translation id="175196451752279553">R&amp;eabrir guia fechada</translation>
 <translation id="1753905327828125965">Mais visitados</translation>
+<translation id="1755601632425835748">Tamanho do texto</translation>
 <translation id="1756681705074952506">Método de entrada</translation>
 <translation id="1757301747492736405">Desinstalação pendente</translation>
 <translation id="175772926354468439">Ativar tema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Menor</translation>
 <translation id="1919345977826869612">Anúncios</translation>
 <translation id="1919814239594435008">Plug-in sem sandbox permitido</translation>
+<translation id="1920390473494685033">Contatos</translation>
 <translation id="1921050530041573580">Parear o smartphone com o app Mensagens</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Usar a tecnologia do Google no <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Guia anônima: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">O plug-in <ph name="PEPPER_PLUGIN_NAME" /> do domínio <ph name="PEPPER_PLUGIN_DOMAIN" /> quer acessar seu computador</translation>
 <translation id="2178614541317717477">Compromisso da autoridade de certificação</translation>
+<translation id="2179849162388791084">Falha ao coletar dados de login da sua chave de segurança.</translation>
 <translation id="218070003709087997">Use um número para indicar o número de cópias a serem impressas (1 a 999).</translation>
 <translation id="2184515124301515068">Permitir que Chrome defina quando os sites podem reproduzir sons (recomendado)</translation>
 <translation id="2187895286714876935">Erro de importação do certificado de servidor</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Todos os dados de cookies e de sites</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 item copiado}one{# item copiado}other{# itens copiados}}</translation>
 <translation id="2278562042389100163">Abrir janela do navegador</translation>
-<translation id="2279874276457403668">Apenas uma sessão pode ser criada de cada vez.</translation>
 <translation id="2280486287150724112">Margem direta</translation>
 <translation id="2282146716419988068">Processo de GPU</translation>
 <translation id="2282155092769082568">URL de configuração automática</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">As anotações na tela de bloqueio são salvas automaticamente no <ph name="LOCK_SCREEN_APP_NAME" />. Sua anotação mais recente ficará na tela de bloqueio.</translation>
 <translation id="2353297238722298836">Câmera e microfone permitidos</translation>
 <translation id="2356070529366658676">Perguntar</translation>
-<translation id="2357949918965361754">É possível usar esse recurso para exibir o conteúdo do Chrome na sua TV ou outros dispositivos.</translation>
 <translation id="2359345697448000899">Gerencie suas extensões clicando em Extensões no menu Ferramentas.</translation>
 <translation id="2359808026110333948">Continuar</translation>
 <translation id="236117173274098341">Otimizar</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Sua organização requer que este dispositivo seja atualizado imediatamente</translation>
 <translation id="2439545803278355377">Digite seu novo PIN. Um PIN precisa ter pelo menos quatro caracteres e pode conter letras, números e outros caracteres.</translation>
 <translation id="2440604414813129000">Exibir &amp;código fonte</translation>
+<translation id="2442916515643169563">Sombra do texto</translation>
 <translation id="2444119669991608829">A página não está em <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">O diretório raiz da extensão é obrigatório.</translation>
 <translation id="2445484935443597917">Criar um novo perfil</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Não depois</translation>
 <translation id="2739191690716947896">Depurar</translation>
 <translation id="2739240477418971307">Modificar suas configurações de acessibilidade</translation>
+<translation id="274029851662193272">Baixo relevo</translation>
 <translation id="2740393541869613458">analisar os websites que o usuário supervisionado visitou e</translation>
 <translation id="2741912629735277980">Exibir IU na tela de login</translation>
 <translation id="274290345632688601">Restaurando apps e arquivos do Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">O atalho já existe</translation>
 <translation id="2807517655263062534">Os arquivos transferidos por download aparecem aqui</translation>
 <translation id="2809586584051668049">e mais <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">O Thunderbolt não é compatível</translation>
 <translation id="2812944337881233323">Tente sair e fazer login novamente</translation>
 <translation id="2812989263793994277">Não mostrar nenhuma imagem</translation>
 <translation id="281390819046738856">Não foi possível assinar a solicitação.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Provedor</translation>
 <translation id="2844169650293029770">Dispositivo USB-C (porta frontal da esquerda)</translation>
 <translation id="2845382757467349449">Sempre mostrar a barra de favoritos</translation>
-<translation id="2847759467426165163">Transmitir para</translation>
 <translation id="284805635805850872">Remover software perigoso?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Falha ao limpar</translation>
@@ -1297,6 +1305,7 @@
     Mensagem do servidor: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Adicionar galeria de mídias por diretório</translation>
 <translation id="2910318910161511225">Conecte-se a uma rede e tente novamente</translation>
+<translation id="2910518940971897750">Salvar arquivo original</translation>
 <translation id="2913331724188855103">Permitir que os sites salvem e leiam os dados de arquivos "cookies" - que armazenam temporariamente o que você visitou na rede. (Recomendado)</translation>
 <translation id="2915102088417824677">Ver registro de atividades</translation>
 <translation id="2915873080513663243">Verificação automática</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Dispositivos MIDI</translation>
 <translation id="3015639418649705390">Reiniciar agora</translation>
 <translation id="3016329696181678353">Não foi possível configurar <ph name="PRINTER_NAME" /> automaticamente. Especifique as configurações avançadas da impressora.</translation>
+<translation id="3016381065346027039">Nenhuma entrada de registro</translation>
 <translation id="3016641847947582299">Componente atualizado</translation>
 <translation id="3016780570757425217">Saber sua localização</translation>
 <translation id="3017079585324758401">Plano de fundo</translation>
 <translation id="3020183492814296499">Atalhos</translation>
 <translation id="3020990233660977256">Número de série: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Borboleta</translation>
+<translation id="3021408157810018664">Salvar alterações nos arquivos originais?</translation>
 <translation id="3021426244864538700">Acessar os dados deste site</translation>
 <translation id="3021678814754966447">&amp;Exibir código fonte do frame</translation>
 <translation id="3022978424994383087">Não entendi.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Também é possível ignorar o login e <ph name="LINK_START" />navegar como visitante<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Um site está acessando a entrada de vídeo</translation>
 <translation id="3177909033752230686">Idioma da página:</translation>
+<translation id="3179982752812949580">Fonte do texto</translation>
 <translation id="3181954750937456830">Navegação segura: protege você e seu dispositivo de sites perigosos</translation>
 <translation id="3182749001423093222">Verificação ortográfica</translation>
 <translation id="3183139917765991655">Importador de perfil</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Abrir como janela</translation>
 <translation id="3278001907972365362">Suas Contas do Google requerem atenção</translation>
 <translation id="3279230909244266691">O processo pode levar alguns minutos. Iniciando a máquina virtual.</translation>
-<translation id="3279741024917655738">Mostrar vídeos em tela cheia em</translation>
 <translation id="3280237271814976245">Salvar &amp;como...</translation>
 <translation id="3280243678470289153">Ficar no Chrome</translation>
 <translation id="3281892622610078515">Arquivos e programas a serem colocados em quarentena:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Nenhum resultado de pesquisa encontrado</translation>
 <translation id="3305389145870741612">O processo de formatação pode levar alguns segundos. Aguarde.</translation>
 <translation id="3305661444342691068">Abrir visualização do PDF</translation>
-<translation id="3306684685104080068">Ativar transmissão para serviços baseados na nuvem, como o Google Hangouts.</translation>
+<translation id="3307871847038842490">Esta página tem permissão para salvar arquivos originais.</translation>
 <translation id="3308006649705061278">Unidade organizacional (OU)</translation>
 <translation id="3308116878371095290">Esta página foi impedida de configurar cookies.</translation>
 <translation id="3308134619352333507">Ocultar botão</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Cancelar a configuração da conta?</translation>
 <translation id="3464012987031883895">Um site está acessando a entrada de áudio</translation>
 <translation id="346431825526753">Esta é uma conta para as crianças gerenciada por <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Fazer streaming de um arquivo de vídeo ou áudio</translation>
 <translation id="3468999815377931311">Smartphone Android</translation>
 <translation id="3470442499439619530">Remover este usuário</translation>
 <translation id="3473479545200714844">Lupa</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Afastar</translation>
 <translation id="3497560059572256875">Compartilhar doodle</translation>
 <translation id="3505030558724226696">Revogar acesso ao dispositivo</translation>
+<translation id="3505635633742443645">Não é possível usar a porta HDMI da sua base enquanto a porta USB-C é usada para saída de vídeo. Use uma porta diferente para uma das telas.</translation>
 <translation id="3507421388498836150">Permissões atuais para "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Procurar dispositivos Bluetooth novamente</translation>
 <translation id="3508920295779105875">Escolher outra pasta...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Instalação concluída</translation>
 <translation id="3578594933904494462">O conteúdo desta guia está sendo compartilhado.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; deseja compartilhar uma impressora &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; com um grupo de sua propriedade: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Se você aceitar, todos os membros do grupo poderão imprimir pela impressora.</translation>
+<translation id="357889014807611375">Wi-Fi limitado</translation>
 <translation id="3584169441612580296">Ler e alterar fotos, músicas e outras mídias do seu computador</translation>
 <translation id="3587482841069643663">Tudo</translation>
 <translation id="358796204584394954">Digite este código no "<ph name="DEVICE_NAME" />" para o pareamento:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Entrar</translation>
 <translation id="3593965109698325041">Restrições de nome do certificado</translation>
 <translation id="3596235046596950091">Ativar serviços em nuvem</translation>
+<translation id="3599221874935822507">Em relevo</translation>
 <translation id="3599863153486145794">Limpa o histórico de todos os dispositivos conectados. Sua Conta do Google pode ter outras formas de histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Informações sobre a solicitação da Web</translation>
 <translation id="3600792891314830896">Silenciar sites com áudio</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Download feito por &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Mostrar <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Abrir em nova guia</translation>
+<translation id="3615073365085224194">Toque no sensor de impressão digital com seu dedo</translation>
 <translation id="3616113530831147358">Áudio</translation>
 <translation id="3616741288025931835">&amp;Limpar dados de navegação...</translation>
 <translation id="3617891479562106823">Os planos de fundo estão indisponíveis. Tente novamente mais tarde.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Página inicial</translation>
 <translation id="3720996970802414353">Alterar mesmo assim</translation>
 <translation id="3722108462506185496">Erro ao iniciar o serviço da máquina virtual. Tente novamente.</translation>
-<translation id="3723158278575423087">Bem-vindo à experiência de transmissão no Chromium!</translation>
 <translation id="3725367690636977613">páginas</translation>
 <translation id="3726137731714254362">A remoção de pastas deste local interromperá o compartilhamento, mas não excluirá os arquivos.</translation>
 <translation id="3727148787322499904">A alteração dessa configuração afetará todas as redes compartilhadas</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Informações detalhadas da versão</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Comunicar-se com um dispositivo USB}one{Comunicar-se com # dispositivos USB}other{Comunicar-se com # dispositivos USB}}</translation>
 <translation id="3765246971671567135">Não foi possível ler a política do modo de demonstração off-line.</translation>
-<translation id="3766223500670287046">Tela remota</translation>
 <translation id="3768037234834996183">Sincronizando suas preferências...</translation>
 <translation id="377050016711188788">Sorvete</translation>
 <translation id="3771294271822695279">Arquivos de vídeo</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Tire o dedo e toque novamente</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronização pausada</translation>
-<translation id="3862134173397075045">Bem-vindo à experiência de transmissão no Chrome!</translation>
 <translation id="3862693525629180217">Verificar pelo sensor integrado</translation>
 <translation id="3862788408946266506">O app com o atributo de manifesto "kiosk_only" precisa ser instalado no modo quiosque do Chrome OS</translation>
 <translation id="3865414814144988605">Resolução</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smartphone com Smart Lock alterado</translation>
 <translation id="3927932062596804919">Negar</translation>
 <translation id="3930737994424905957">Procurando dispositivos</translation>
+<translation id="3930968231047618417">Cor do plano de fundo</translation>
 <translation id="3933283459331715412">Restaurar senha excluída de <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Abrir áudio em uma nova guia</translation>
 <translation id="3936925983113350642">A senha escolhida será necessária para restaurar este certificado mais tarde. Guarde-a em um local seguro.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importado do IE</translation>
 <translation id="3950820424414687140">Fazer login</translation>
+<translation id="3950828138786918475">Esta guia tem permissão para ler uma pasta no seu dispositivo.</translation>
 <translation id="3954354850384043518">Em andamento</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> hertz)</translation>
 <translation id="3954953195017194676">Você não tem nenhum log de eventos WebRTC capturado recentemente.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Calculando...</translation>
 <translation id="3975565978598857337">Falha ao entrar em contato com o servidor desse domínio</translation>
 <translation id="397703832102027365">Finalizando...</translation>
+<translation id="3977886311744775419">Não é possível fazer o download das atualizações automáticas neste tipo de rede, mas você pode verificar as atualizações manualmente.</translation>
 <translation id="3979395879372752341">Nova extensão adicionada (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Ativar <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Tipo de salvamento inválido digitado.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Ativar toque para clicar</translation>
 <translation id="4195643157523330669">Abrir em uma nova guia</translation>
 <translation id="4195814663415092787">Continuar de onde você parou</translation>
+<translation id="4197940474316761015">O site <ph name="ORIGIN" /> pode salvar suas alterações diretamente nos seguintes arquivos. As alterações poderão ser salvas apenas quando esta guia estiver aberta.</translation>
 <translation id="4198146608511578238">Basta tocar no ícone de tela de início e mantê-lo pressionado para falar com seu Google Assistente.</translation>
 <translation id="4200689466366162458">Palavras personalizadas</translation>
 <translation id="4200983522494130825">Nova &amp;guia</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Conectar automaticamente à rede celular</translation>
 <translation id="4268025649754414643">Codificação de chaves</translation>
 <translation id="4270393598798225102">Versão <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Nenhuma correspondência</translation>
 <translation id="4275663329226226506">Mídia</translation>
 <translation id="4275830172053184480">Reiniciar seu dispositivo</translation>
 <translation id="4278101229438943600">O Assistente está pronto</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Tempo de CPU</translation>
 <translation id="4534661889221639075">Tente novamente.</translation>
 <translation id="4535127706710932914">Perfil padrão</translation>
+<translation id="4535767533210902251">O sensor de impressão digital fica no canto superior direito do teclado. Toque nele de leve com qualquer dedo.</translation>
 <translation id="4538684596480161368">Sempre bloquear plug-ins sem sandbox em <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Instalada pela política empresarial.</translation>
 <translation id="4542520061254486227">Leia seus dados em <ph name="WEBSITE_1" /> e <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Mais...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Parear dispositivo Bluetooth</translation>
+<translation id="4578012756826807359">Seus dados de login foram excluídos.</translation>
 <translation id="4579581181964204535">Não foi possível transmitir <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Erro ao restaurar o Linux</translation>
 <translation id="4582563038311694664">Redefinir todas as configurações</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Os cookies de vários sites serão apagados na saída.</translation>
 <translation id="4765582662863429759">Permite que o Android Mensagens transmita mensagens de texto do smartphone para o Chromebook</translation>
 <translation id="4768332406694066911">Você tem certificados das seguintes empresas que identificam você</translation>
-<translation id="4772404146526168240">Nas duas telas</translation>
 <translation id="4776146737004271126">Abrir configurações do Android</translation>
 <translation id="4776917500594043016">Senha para <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Faça login para ter acesso aos favoritos, histórico, senhas e outras configurações em todos os seus dispositivos. Você também será conectado automaticamente aos seus serviços do Google.</translation>
 <translation id="4929386379796360314">Destinos de impressão</translation>
 <translation id="4930714375720679147">Ativar</translation>
-<translation id="4931132176527519925">Sempre usar espelhamento</translation>
 <translation id="4932733599132424254">Data</translation>
 <translation id="4933484234309072027">incorporado em <ph name="URL" /></translation>
 <translation id="493571969993549666">Adicionar usuário supervisionado</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Ativar som</translation>
 <translation id="4992458225095111526">Confirmar powerwash</translation>
 <translation id="4992473555164495036">O administrador limitou os métodos de entrada disponíveis.</translation>
+<translation id="4992866843815555470">Sua base precisa de manutenção. Se a ventilação não estiver funcionando, ela será desligada.</translation>
 <translation id="4992926179187649719">Ativar "Ok Google"</translation>
 <translation id="4994474651455208930">Permitir que os sites peçam para se tornarem manipuladores padrão de protocolos</translation>
 <translation id="4994754230098574403">Configurando</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">ID de processo</translation>
 <translation id="5233638681132016545">Nova guia</translation>
 <translation id="5233736638227740678">&amp;Colar</translation>
-<translation id="5234764350956374838">Dispensar</translation>
 <translation id="5235050375939235066">Desinstalar app?</translation>
 <translation id="5235750401727657667">Substituir a página que você vê ao abrir uma nova guia</translation>
 <translation id="5238278114306905396">O aplicativo "<ph name="EXTENSION_NAME" />" foi removido automaticamente.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">O Google recomenda o Chrome</translation>
 <translation id="532247166573571973">É possível que o servidor esteja inacessível. Tente novamente mais tarde.</translation>
 <translation id="5324780743567488672">Define o fuso horário automaticamente utilizando seu local</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" />: permissão para salvar arquivos originais</translation>
 <translation id="5327248766486351172">Nome</translation>
 <translation id="5327570636534774768">Este dispositivo está marcado para ser gerenciado por um domínio diferente. Faça o desprovisionamento desse domínio antes de configurar o modo de demonstração.</translation>
 <translation id="532943162177641444">Toque na notificação no <ph name="PHONE_NAME" /> para configurar o ponto de acesso móvel que pode ser usado por este dispositivo.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> deseja</translation>
 <translation id="5534304873398226603">Descartar foto ou vídeo</translation>
 <translation id="5535941515421698170">Remover também deste dispositivo os dados já existentes</translation>
-<translation id="5537725057119320332">Transmitir</translation>
 <translation id="5539221284352502426">A senha inserida foi recusada pelo servidor. Entre os possíveis motivos estão: a senha é muito curta, não inclui números ou símbolos ou é igual a senhas anteriores.</translation>
 <translation id="5541687815721799001">Usar o app</translation>
 <translation id="5542132724887566711">Perfil</translation>
@@ -3301,7 +3315,6 @@
 <translation id="5997337190805127100">Saiba mais sobre o acesso aos sites</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultados para "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Vozes preferidas</translation>
-<translation id="6005695835120147974">Roteador de mídia</translation>
 <translation id="6006484371116297560">Clássico</translation>
 <translation id="6007240208646052708">A pesquisa por voz no seu idioma não está disponível.</translation>
 <translation id="6009781704028455063">Sensor integrado</translation>
@@ -3502,7 +3515,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nova impressora na sua rede}one{Novas impressoras na sua rede}other{Novas impressoras na sua rede}}</translation>
 <translation id="6286708577777130801">Detalhes da senha salva</translation>
 <translation id="6289452883081499048">Serviços personalizados do Google, como o Google Play</translation>
-<translation id="6290556621549272952">É possível usar esse recurso para exibir o conteúdo do Chromium na sua TV ou outros dispositivos.</translation>
 <translation id="6291949900244949761">Perguntar quando um site quiser acessar dispositivos USB (recomendado)</translation>
 <translation id="6291953229176937411">&amp;Mostrar no Finder</translation>
 <translation id="6295158916970320988">Todos os sites</translation>
@@ -3566,6 +3578,7 @@
 <translation id="6395423953133416962">Enviar <ph name="BEGIN_LINK1" />informações<ph name="END_LINK1" /> e <ph name="BEGIN_LINK2" />métricas do sistema<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Impedir que sites usem sensores de movimento</translation>
 <translation id="6397094776139756010">Opções de sincronização e personalização</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> poderá salvar suas alterações diretamente nos arquivos da seguinte pasta. As alterações poderão ser salvas apenas quando esta guia estiver aberta.</translation>
 <translation id="6398715114293939307">Remover Google Play Store</translation>
 <translation id="6398765197997659313">Sair do modo tela cheia</translation>
 <translation id="6399774419735315745">Espião</translation>
@@ -3610,11 +3623,13 @@
 <translation id="6455264371803474013">Em sites específicos</translation>
 <translation id="6455894534188563617">&amp;Nova pasta</translation>
 <translation id="6456394469623773452">Bom</translation>
+<translation id="6456955391422100996">Anúncio removido.</translation>
 <translation id="645705751491738698">Continuar bloqueando JavaScript</translation>
 <translation id="6458701200018867744">Falha no upload (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Usar seleção para buscar</translation>
 <translation id="6459799433792303855">A janela ativa foi movida para outra tela.</translation>
 <translation id="6460601847208524483">Localizar próximo</translation>
+<translation id="6461170143930046705">Procurando redes…</translation>
 <translation id="6463795194797719782">&amp;Editar</translation>
 <translation id="6466988389784393586">&amp;Abrir todos os favoritos</translation>
 <translation id="6467304607960172345">Otimizar vídeos em tela cheia</translation>
@@ -3653,6 +3668,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Você está conectado a uma rede <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Compartilhar</translation>
 <translation id="6528513914570774834">Permitir que outros usuários deste dispositivo usem esta rede</translation>
 <translation id="652948702951888897">Histórico do Chrome</translation>
@@ -3749,7 +3765,6 @@
 <translation id="6680650203439190394">Velocidade</translation>
 <translation id="6681668084120808868">Tirar foto</translation>
 <translation id="6681964764822470072">O app "<ph name="APP_NAME" />" será desinstalado.</translation>
-<translation id="6685083257944113180">Parar, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Abrir o Google Play</translation>
 <translation id="6686490380836145850">Fechar guias à direita</translation>
 <translation id="6686817083349815241">Salvar sua senha</translation>
@@ -3857,6 +3872,7 @@
 <translation id="6845038076637626672">Abrir maximizado</translation>
 <translation id="6845325883481699275">Ajudar a melhorar a segurança do Chrome</translation>
 <translation id="6848388270925200958">No momento, você tem alguns cartões que só podem ser usados neste dispositivo</translation>
+<translation id="6850286078059909152">Cor do texto</translation>
 <translation id="6851497530878285708">App ativado</translation>
 <translation id="6853388645642883916">Atualizador em modo de espera</translation>
 <translation id="68541483639528434">Fechar outras guias</translation>
@@ -3906,7 +3922,6 @@
 <translation id="6923132443355966645">Rolar / Clicar</translation>
 <translation id="6923633482430812883">Erro ao ativar o compartilhamento. Verifique se o servidor de arquivos ao qual você está se conectando tem compatibilidade com SMBv2 ou versões posteriores.</translation>
 <translation id="6930036377490597025">Chave de segurança externa ou sensor integrado</translation>
-<translation id="6930242544192836755">Duração</translation>
 <translation id="693807610556624488">A operação de escrita excede o comprimento máximo do atributo para "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Faça login no <ph name="TOKEN_NAME" /> para autenticar seu certificado no <ph name="HOST_NAME" />.</translation>
 <translation id="6943176775188458830">Cancelar impressão</translation>
@@ -3920,6 +3935,7 @@
 <translation id="6951153907720526401">Gerenciadores de pagamento</translation>
 <translation id="6951663584153258142">Sua organização está pedindo para você atualizar este dispositivo</translation>
 <translation id="6953878494808481632">Informações relacionadas</translation>
+<translation id="6953916367503892689">{0,plural, =1{Arquivo: <ph name="FILES" />}one{Arquivo: <ph name="FILES" />}other{Arquivos: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Inspecionar pop-up</translation>
 <translation id="6957044667612803194">Esta chave de segurança não é compatível com PINs</translation>
 <translation id="6957231940976260713">Nome do serviço</translation>
@@ -4132,7 +4148,6 @@
 <translation id="7254554697254365959">Não foi possível traduzir esta página.</translation>
 <translation id="7254951428499890870">Tem certeza que quer iniciar o aplicativo "<ph name="APP_NAME" />" no modo de diagnóstico?</translation>
 <translation id="7255002516883565667">No momento, você tem um cartão que só pode ser usado neste dispositivo</translation>
-<translation id="7255220508626648026">Transmitindo: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Toque na sua chave de segurança novamente para confirmar a redefinição. Todas as informações armazenadas na chave de segurança, inclusive o PIN, serão apagadas.</translation>
 <translation id="7255935316994522020">Aplicar</translation>
 <translation id="7256069762010468647">O site está usando sua câmera</translation>
@@ -4266,6 +4281,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Abrir local...</translation>
 <translation id="7458168200501453431">Usa o mesmo corretor ortográfico da Pesquisa Google. O texto que você digita no navegador é enviado para o Google.</translation>
+<translation id="7460045493116006516">Tema instalado atualmente</translation>
 <translation id="7461924472993315131">Fixar</translation>
 <translation id="746216226901520237">Na próxima vez, o smartphone desbloqueará o <ph name="DEVICE_TYPE" />. É possível desativar o Smart Lock nas configurações.</translation>
 <translation id="7463006580194749499">Adicionar pessoas</translation>
@@ -4325,6 +4341,7 @@
 <translation id="7554791636758816595">Nova guia</translation>
 <translation id="7556033326131260574">O Smart Lock não conseguiu verificar sua conta. Digite sua senha para entrar.</translation>
 <translation id="7556242789364317684">O <ph name="SHORT_PRODUCT_NAME" /> não conseguiu recuperar suas configurações. Para corrigir o erro, o <ph name="SHORT_PRODUCT_NAME" /> deve redefinir seu dispositivo com o PowerWash.</translation>
+<translation id="7559444627302317199">Verifique sua conexão de rede e tente novamente.</translation>
 <translation id="7559719679815339381">Aguarde. O aplicativo de quiosque está sendo atualizado. Não retire o pendrive.</translation>
 <translation id="7561196759112975576">Sempre</translation>
 <translation id="7563991800558061108">Para se recuperar deste erro, é necessário fazer login na sua Conta do Google
@@ -4567,7 +4584,6 @@
 <translation id="7887334752153342268">Duplicar</translation>
 <translation id="7887864092952184874">Mouse Bluetooth pareado</translation>
 <translation id="7889565820482017512">Tamanho da tela</translation>
-<translation id="7889966925761734854">Procurar</translation>
 <translation id="7893008570150657497">Acessar fotos, música e outras mídias em seu computador</translation>
 <translation id="7893153962594818789">O Bluetooth está desativado neste <ph name="DEVICE_TYPE" />. Digite sua senha e ative o Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (padrão)</translation>
@@ -4575,7 +4591,6 @@
 <translation id="7898627924844766532">Manter na barra de ferramentas</translation>
 <translation id="7898725031477653577">Sempre traduzir do</translation>
 <translation id="790040513076446191">Manipular as configurações relacionadas à privacidade</translation>
-<translation id="7902874111237641165">Movimento suave (Beta)</translation>
 <translation id="7903345046358933331">A página deixou de responder. Espere até ela voltar a responder ou feche-a.</translation>
 <translation id="7903742244674067440">Você tem certificados no arquivo que identificam estas autoridades de certificação</translation>
 <translation id="7903925330883316394">Utilitário: <ph name="UTILITY_TYPE" /></translation>
@@ -4687,6 +4702,7 @@
 <translation id="8037117027592400564">Ler todo texto falado usando voz sintetizada</translation>
 <translation id="8037357227543935929">Perguntar (padrão)</translation>
 <translation id="803771048473350947">Arquivo</translation>
+<translation id="8042142357103597104">Opacidade do texto</translation>
 <translation id="8044899503464538266">Lento</translation>
 <translation id="8045253504249021590">A sincronização foi interrompida por meio do Painel do Google.</translation>
 <translation id="8045923671629973368">Informe o ID do aplicativo ou o URL da loja on-line</translation>
@@ -4723,7 +4739,6 @@
     <ph name="BEGIN_PARAGRAPH5" />É possível desativar esse serviço nas configurações.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Os PINs não correspondem</translation>
 <translation id="809792523045608178">O <ph name="IDS_SHORT_PRODUCT_NAME" /> está usando as configurações de proxy de uma extensão</translation>
-<translation id="8099495042588009598">Mais permissões</translation>
 <translation id="8101987792947961127">Powerwash obrigatório na próxima reinicialização</translation>
 <translation id="8102159139658438129">Acesse <ph name="LINK_BEGIN" />Configurações<ph name="LINK_END" /> para ver as opções do smartphone conectado</translation>
 <translation id="8104696615244072556">Execute um powerwash no seu dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> e volte para a versão anterior.</translation>
@@ -4775,8 +4790,10 @@
     Não acho que este site deva ser bloqueado.</translation>
 <translation id="8184288427634747179">Alternar para <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Mais informações</translation>
+<translation id="8184472985242519288">Uniforme</translation>
 <translation id="8185331656081929126">Mostrar notificações quando novas impressoras forem detectadas na rede</translation>
 <translation id="8186609076106987817">O servidor não encontrou o arquivo.</translation>
+<translation id="8187950680397073878">O site <ph name="ORIGIN" /> pode ler todos os arquivos da seguinte pasta. As alterações poderão ser vistas pelo site apenas quando esta guia estiver aberta.</translation>
 <translation id="8188389033983459049">Verifique as configurações do seu dispositivo e ative-o para continuar</translation>
 <translation id="8190193592390505034">Conectando-se a <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Gerenciar seus aplicativos, extensões e temas</translation>
@@ -4880,8 +4897,6 @@
 <translation id="833986336429795709">Para abrir este link, escolha um app</translation>
 <translation id="8342861492835240085">Selecione uma coleção</translation>
 <translation id="834290227245955730">PIN inválido. Tentativas restantes: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Use uma largura de banda alta para transmitir vídeos ou animações melhores.
-Pessoas com conexões mais lentas talvez não vejam seu conteúdo.</translation>
 <translation id="8351419472474436977">Essa extensão assumiu o controle das suas configurações de proxy, o que significa que ela pode alterar, quebrar ou escutar qualquer coisa que você faz on-line. Se você não tem certeza do motivo dessa mudança, provavelmente não a deseja.</translation>
 <translation id="8351630282875799764">A bateria não está sendo carregada</translation>
 <translation id="835238322900896202">Ocorreu um erro durante a desinstalação. Desinstale novamente usando o terminal.</translation>
@@ -4914,9 +4929,11 @@
 <translation id="839736845446313156">Inscrição</translation>
 <translation id="8398877366907290961">Continuar mesmo assim</translation>
 <translation id="8400146488506985033">Gerenciar pessoas</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> pode salvar suas alterações diretamente nos arquivos da seguinte pasta. As alterações poderão ser salvas apenas quando esta guia estiver aberta.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Perguntar primeiro (recomendado)</translation>
 <translation id="8418445294933751433">&amp;Mostrar como guia</translation>
+<translation id="8418905021510211421">Esta página tem permissão para ler uma pasta no seu dispositivo.</translation>
 <translation id="8419098111404128271">Resultados de pesquisa para "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Bem-vindo ao <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Alterar</translation>
@@ -4936,6 +4953,7 @@
 <translation id="8438566539970814960">Melhorar pesquisas e navegação</translation>
 <translation id="8439506636278576865">Oferecer a tradução de páginas neste idioma</translation>
 <translation id="8440630305826533614">Aplicativos Linux</translation>
+<translation id="844241640324986723">Falha ao excluir dados de login.</translation>
 <translation id="8443338615972234259">Crie uma nova conta para seu usuário supervisionado agora mesmo.</translation>
 <translation id="8446884382197647889">Saiba mais</translation>
 <translation id="8447409163267621480">Incluir a tecla Ctrl ou Alt</translation>
@@ -4951,8 +4969,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Este usuário supervisionado pode ter sido excluído ou desativado pelo gerente. Entre em contato com o gerente, se quiser continuar fazendo login como esse usuário.</translation>
 <translation id="846374874681391779">Barra de downloads</translation>
-<translation id="8463807869745732775">"&gt;
-    Dados de login armazenados na chave de segurança</translation>
 <translation id="8463955938112983119">Plug-in <ph name="PLUGIN_NAME" /> desativado.</translation>
 <translation id="8464132254133862871">Esta conta de usuário não está qualificada para o serviço.</translation>
 <translation id="8465252176946159372">Entrada inválida</translation>
@@ -5018,6 +5034,7 @@
 <translation id="8569002732135253578">Imprimindo o documento <ph name="DOCUMENT_NAME" /> agora</translation>
 <translation id="8569682776816196752">Nenhum destino encontrado</translation>
 <translation id="8571213806525832805">Últimas quatro semanas</translation>
+<translation id="8573403125070227391">O anúncio usa muitos recursos do seu dispositivo, por isso, ele foi removido pelo Chrome.</translation>
 <translation id="8574990355410201600">Sempre permitir som em <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Pressione e segure <ph name="KEY_EQUIVALENT" /> para sair.</translation>
 <translation id="8578639784464423491">Não pode exceder 99 letras</translation>
@@ -5041,13 +5058,13 @@
 <translation id="8609465669617005112">Mover para cima</translation>
 <translation id="8610103157987623234">Formato incorreto. Tente novamente</translation>
 <translation id="8615618338313291042">Aplicativo anônimo: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Sombra projetada</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Status do roaming</translation>
 <translation id="8620765578342452535">Configurar conexões de rede</translation>
 <translation id="8621866727807194849">Há um software nocivo no seu computador. O Chrome está removendo-o, restaurando suas configurações e desativando as extensões. Assim, o navegador voltará a funcionar normalmente.</translation>
 <translation id="8621979332865976405">Compartilhar toda a tela</translation>
 <translation id="862542460444371744">&amp;Extensões</translation>
-<translation id="8627151598708688654">Selecionar fonte</translation>
 <translation id="862727964348362408">Em suspensão</translation>
 <translation id="862750493060684461">Cache CSS</translation>
 <translation id="8627795981664801467">Somente conexões seguras</translation>
@@ -5101,6 +5118,7 @@
 <translation id="8688579245973331962">Não encontra seu nome?</translation>
 <translation id="8688591111840995413">Senha incorreta</translation>
 <translation id="8688672835843460752">Disponível</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Abrir &amp;local...</translation>
 <translation id="869884720829132584">Menu Aplicativos</translation>
 <translation id="869891660844655955">Validade</translation>
@@ -5264,6 +5282,7 @@
 <translation id="891365694296252935">Envie dados de uso e diagnóstico. No momento, este dispositivo está enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles não serão usados para identificar seu filho e ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Essa configuração é aplicada pelo proprietário. Se a opção "Atividade na Web e de apps adicional" estiver ativada para seu filho, esses dados poderão ser salvos na Conta do Google dele. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Carregando sugestão</translation>
 <translation id="8916476537757519021">Subquadro anônimo: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" />: tem permissão para ler uma pasta no seu dispositivo</translation>
 <translation id="8919275547519617350">Para ter todas as suas senhas em todos os seus dispositivos, faça login e ative a sincronização.</translation>
 <translation id="8921366488406707015">Verificando sua chave de segurança…</translation>
 <translation id="8922013791253848639">Sempre permitir anúncios neste site</translation>
@@ -5293,7 +5312,6 @@
 <translation id="8965037249707889821">Digite a senha antiga</translation>
 <translation id="8966870118594285808">Reabra uma guia se você a fechou acidentalmente</translation>
 <translation id="8967866634928501045">Pressione Alt+Shift+A para exibir</translation>
-<translation id="8970203673128054105">Ver lista do modo de transmissão</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Verifique com seu administrador de rede se o firewall não está bloqueando downloads dos servidores do Google.</translation>
 <translation id="8973557916016709913">Remover o nível de zoom</translation>
@@ -5442,6 +5460,7 @@
 <translation id="9214520840402538427">Ops! A inicialização dos atributos de tempo de instalação ultrapassou o tempo limite. Entre em contato com o representante de suporte.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" adicionada</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> poderá salvar suas alterações diretamente no seguinte arquivo. As alterações poderão ser salvas apenas quando esta guia estiver aberta.</translation>
 <translation id="9218430445555521422">Definir como padrão</translation>
 <translation id="9219103736887031265">Imagens</translation>
 <translation id="9220525904950070496">Remover conta</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index b21a7d82..febe190 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -12,7 +12,7 @@
 <translation id="1008557486741366299">Agora não</translation>
 <translation id="1010498023906173788">Este separador está associado a uma porta de série.</translation>
 <translation id="1010833424573920260">{NUM_PAGES,plural, =1{Página sem resposta}other{Páginas sem resposta}}</translation>
-<translation id="1012794136286421601">Os seus ficheiros de Documentos, Folhas, Apresentações e Desenhos estão a ser sincronizados. Abra a aplicação Google Drive para aceder aos ficheiros online ou offline.</translation>
+<translation id="1012794136286421601">Os seus ficheiros de Docs, Folhas, Slides e Desenhos estão a ser sincronizados. Abra a aplicação Google Drive para aceder aos ficheiros online ou offline.</translation>
 <translation id="1012876632442809908">Dispositivo USB-C (porta frontal)</translation>
 <translation id="1013707859758800957">A execução de um plug-in sem isolamento de processos foi permitida nesta página.</translation>
 <translation id="1015318665228971643">Editar nome da pasta</translation>
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Não foi possível iniciar a máquina virtual. Tente novamente.</translation>
 <translation id="1089439967362294234">Alterar palavra-passe</translation>
 <translation id="1090126737595388931">Não há aplicações em execução em segundo plano</translation>
+<translation id="1090290614672149983">Pretende guardar as alterações no ficheiro original?</translation>
 <translation id="1090918500949388876">Aceda ao Assistente sempre que disser "Ok Google" quando o ecrã estiver ligado.</translation>
 <translation id="1091767800771861448">Prima ESCAPE para ignorar (apenas nas compilações não oficiais).</translation>
 <translation id="1093457606523402488">Redes visíveis</translation>
 <translation id="1094607894174825014">Foi solicitada uma operação de leitura ou de escrita com um desvio inválido em: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Antes de iniciar sessão, entre como Convidado para ativar a rede <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Este separador tem autorização para guardar em ficheiros originais.</translation>
 <translation id="1103523840287552314">Traduzir sempre <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Parar</translation>
 <translation id="1110155001042129815">Esperar</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Óculos de sol</translation>
 <translation id="1151917987301063366">Permitir sempre que <ph name="HOST" /> aceda aos sensores</translation>
 <translation id="1153356358378277386">Dispositivos sincronizados</translation>
-<translation id="1156488781945104845">Hora atual</translation>
 <translation id="1161575384898972166">Inicie sessão no <ph name="TOKEN_NAME" /> para exportar o certificado de cliente.</translation>
 <translation id="1163931534039071049">&amp;Ver fonte da moldura</translation>
 <translation id="1164674268730883318">Pretende desativar o Smart Lock para o <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Definições de armazenamento do Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies e outros dados do site</translation>
 <translation id="127668050356036882">Fechar todas as janelas</translation>
-<translation id="1277908057200820621">Ver lista de dispositivos</translation>
 <translation id="1280820357415527819">A pesquisar redes móveis…</translation>
 <translation id="1285320974508926690">Nunca traduzir este site</translation>
 <translation id="1285484354230578868">Armazenar dados na sua conta Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Rede doméstica, sem roaming</translation>
 <translation id="1316136264406804862">A pesquisar...</translation>
 <translation id="1316495628809031177">A sincronização está em pausa.</translation>
+<translation id="1317637799698924700">A estação de ancoragem vai funcionar no modo compatível com USB tipo C.</translation>
 <translation id="1322046419516468189">Veja e faça a gestão das palavras-passe guardadas em <ph name="SAVED_PASSWORDS_STORE" />.</translation>
 <translation id="1326317727527857210">Para obter os separadores dos seus outros dispositivos, inicie sessão no Chrome.</translation>
 <translation id="1327074568633507428">Impressora no Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">O <ph name="BEGIN_LINK" />navegador é gerido<ph name="END_LINK" /> por <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Execute ferramentas, editores e IDEs de Linux no seu <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Saiba mais&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Selecione um ficheiro</translation>
+<translation id="1370749010280229230">O ecrã ligado à estação de ancoragem tem um problema</translation>
 <translation id="1371301976177520732">Os seus marcadores, palavras-passe, histórico e muito mais em todos os seus dispositivos.</translation>
 <translation id="1372841398847029212">Sincronizar com a sua conta</translation>
 <translation id="1374844444528092021">O certificado requerido pela rede "<ph name="NETWORK_NAME" />" não está instalado ou já não é válido. Obtenha um novo certificado e tente ligar novamente.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Página Web, Ficheiro único</translation>
 <translation id="1451917004835509682">Adicionar pessoa supervisionada</translation>
 <translation id="1454223536435069390">C&amp;riar captura de ecrã</translation>
+<translation id="1458243790901188746">{0,plural, =1{Pasta: <ph name="DIRECTORIES" />}other{Pastas: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Motores de pesquisa adicionados por extensões</translation>
 <translation id="146000042969587795">Esta moldura foi bloqueada, pois contém alguns conteúdos não seguros.</translation>
 <translation id="146219525117638703">Estado ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Mostrar opções de introdução</translation>
 <translation id="1651008383952180276">Tem de introduzir a mesma frase de acesso duas vezes</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Adicione a impressora ao Google Cloud Print para poder imprimir em qualquer local.}other{Adicione # impressoras ao Google Cloud Print para poder imprimir em qualquer local.}}</translation>
+<translation id="1656528038316521561">Opacidade do fundo</translation>
 <translation id="1657406563541664238">Ajude a melhorar o <ph name="PRODUCT_NAME" /> enviando automaticamente estatísticas de utilização e relatórios de falhas para a Google</translation>
 <translation id="1658424621194652532">Esta página está a aceder ao seu microfone.</translation>
 <translation id="1660204651932907780">Permitir que os sites reproduzam som (recomendado)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> pretende ver a marca e o modelo da sua Chave de segurança.</translation>
 <translation id="1679068421605151609">Ferramentas do Programador</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Tem a certeza de que pretende sair?</translation>
 <translation id="167983332380191032">Ocorreu um erro com o HTTP enviado pelo serviço de gestão.</translation>
 <translation id="1680849702532889074">Ocorreu um erro durante a instalação da sua aplicação para Linux.</translation>
 <translation id="16815041330799488">Não permitir que os sites vejam o texto e as imagens copiados para a área de transferência</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identificador de multimédia protegido</translation>
 <translation id="175196451752279553">Voltar a abrir o s&amp;eparador fechado</translation>
 <translation id="1753905327828125965">Mais visitados</translation>
+<translation id="1755601632425835748">Tamanho do texto</translation>
 <translation id="1756681705074952506">Método de introdução</translation>
 <translation id="1757301747492736405">Desinstalação pendente</translation>
 <translation id="175772926354468439">Ativar tema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">Mai&amp;s pequeno</translation>
 <translation id="1919345977826869612">Anúncios</translation>
 <translation id="1919814239594435008">Plug-in sem isolamento de processos permitido</translation>
+<translation id="1920390473494685033">Contactos</translation>
 <translation id="1921050530041573580">Sincronize o telemóvel com a aplicação Mensagens</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> ppp</translation>
 <translation id="1924559387127953748">A inteligência da Google no <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Separador de navegação anónima: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">O <ph name="PEPPER_PLUGIN_NAME" /> em <ph name="PEPPER_PLUGIN_DOMAIN" /> pretende aceder ao seu computador.</translation>
 <translation id="2178614541317717477">AC comprometida</translation>
+<translation id="2179849162388791084">A recolha de dados de início de sessão da sua chave de segurança falhou.</translation>
 <translation id="218070003709087997">Utilize um número para indicar as cópias a imprimir (1 a 999).</translation>
 <translation id="2184515124301515068">Permitir que o Chrome escolha quando os sites podem reproduzir som (recomendado)</translation>
 <translation id="2187895286714876935">Erro na importação do certificado do servidor</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Todos os cookies e dados do site</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 item copiado}other{# itens copiados}}</translation>
 <translation id="2278562042389100163">Abrir janela do browser</translation>
-<translation id="2279874276457403668">É possível criar apenas uma sessão de cada vez.</translation>
 <translation id="2280486287150724112">Margem direita</translation>
 <translation id="2282146716419988068">Processo GPU</translation>
 <translation id="2282155092769082568">URL de configuração automática:</translation>
@@ -875,7 +882,7 @@
 <translation id="2294358108254308676">Pretende instalar o <ph name="PRODUCT_NAME" />?</translation>
 <translation id="2297705863329999812">Pesquisar impressoras</translation>
 <translation id="2300383962156589922">Personalizar e controlar a aplicação <ph name="APP_NAME" /></translation>
-<translation id="2300800387751317588">A sincronização foi colocada em pausa, porque limpou os cookies no arranque. Altere <ph name="COOKIE_SETTINGS_LINK" /> para continuar a sincronizar.</translation>
+<translation id="2300800387751317588">A sincronização foi colocada em pausa porque limpou os cookies no arranque. Altere <ph name="COOKIE_SETTINGS_LINK" /> para continuar a sincronizar.</translation>
 <translation id="2301382460326681002">O directório de raiz da extensão é inválido.</translation>
 <translation id="23030561267973084">"<ph name="EXTENSION_NAME" />" solicitou permissões adicionais.</translation>
 <translation id="2307462900900812319">Configurar rede</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">As notas do ecrã de bloqueio são automaticamente guardadas na aplicação <ph name="LOCK_SCREEN_APP_NAME" />. A nota mais recente permanece no ecrã de bloqueio.</translation>
 <translation id="2353297238722298836">Câmara e microfone permitidos</translation>
 <translation id="2356070529366658676">Perguntar</translation>
-<translation id="2357949918965361754">Pode utilizar esta funcionalidade para apresentar conteúdo do Chrome na sua TV ou noutros dispositivos.</translation>
 <translation id="2359345697448000899">Faça a gestão das suas extensões clicando em Extensões no menu Ferramentas.</translation>
 <translation id="2359808026110333948">Continuar</translation>
 <translation id="236117173274098341">Otimizar</translation>
@@ -964,6 +970,7 @@
 <translation id="2436720498717686157">A sua entidade requer uma atualização imediata a este dispositivo.</translation>
 <translation id="2439545803278355377">Introduza o novo PIN Um PIN tem de ter pelo menos quatro carateres e pode incluir letras, números e outros carateres.</translation>
 <translation id="2440604414813129000">Ver fonte</translation>
+<translation id="2442916515643169563">Sombra do texto</translation>
 <translation id="2444119669991608829">A página não está em <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">É necessário o directório de raiz da extensão.</translation>
 <translation id="2445484935443597917">Criar um novo perfil</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">Não posterior a</translation>
 <translation id="2739191690716947896">Depurar</translation>
 <translation id="2739240477418971307">Alterar as definições de acessibilidade</translation>
+<translation id="274029851662193272">Reduzida</translation>
 <translation id="2740393541869613458">analisar Sites que o utilizador supervisionado visitou e</translation>
 <translation id="2741912629735277980">Apresentar a IU no ecrã de início de sessão</translation>
 <translation id="274290345632688601">A restaurar aplicações e ficheiros do Linux…</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">O atalho já existe.</translation>
 <translation id="2807517655263062534">Os ficheiros que transferir são apresentados aqui</translation>
 <translation id="2809586584051668049">e mais <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">O Thunderbolt não é suportado</translation>
 <translation id="2812944337881233323">Experimente terminar e iniciar sessão novamente</translation>
 <translation id="2812989263793994277">Não mostrar imagens</translation>
 <translation id="281390819046738856">Não foi possível assinar o pedido.</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">Fornecedor</translation>
 <translation id="2844169650293029770">Dispositivo USB-C (porta frontal do lado esquerdo)</translation>
 <translation id="2845382757467349449">Mostrar Sempre a Barra de Marcadores</translation>
-<translation id="2847759467426165163">Transmitir para</translation>
 <translation id="284805635805850872">Pretende remover software prejudicial?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Falha ao limpar.</translation>
@@ -1296,6 +1304,7 @@
     Mensagem do servidor: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Adicionar Galeria Multimédia por Diretório</translation>
 <translation id="2910318910161511225">Estabeleça ligação a uma rede e tente novamente.</translation>
+<translation id="2910518940971897750">Guardar no ficheiro original</translation>
 <translation id="2913331724188855103">Permitir que os sites guardem e leiam dados de cookies (recomendado)</translation>
 <translation id="2915102088417824677">Ver o registo de atividade</translation>
 <translation id="2915873080513663243">Análise automática</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Dispositivos MIDI</translation>
 <translation id="3015639418649705390">Reiniciar agora</translation>
 <translation id="3016329696181678353">Não foi possível configurar automaticamente a <ph name="PRINTER_NAME" />. Especifique detalhes avançados da impressora.</translation>
+<translation id="3016381065346027039">Sem entradas do registo</translation>
 <translation id="3016641847947582299">Componente atualizado</translation>
 <translation id="3016780570757425217">Conhecer a sua localização</translation>
 <translation id="3017079585324758401">Fundo</translation>
 <translation id="3020183492814296499">Atalhos</translation>
 <translation id="3020990233660977256">Número de série: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Borboleta</translation>
+<translation id="3021408157810018664">Pretende guardar as alterações nos ficheiros originais?</translation>
 <translation id="3021426244864538700">Acesso aos dados deste site</translation>
 <translation id="3021678814754966447">&amp;Ver Origem da Moldura</translation>
 <translation id="3022978424994383087">Não entendido.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Também pode ignorar o início de sessão e <ph name="LINK_START" />navegar como Convidado<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Um site está a aceder à entrada de vídeo.</translation>
 <translation id="3177909033752230686">Idioma da página:</translation>
+<translation id="3179982752812949580">Tipo de letra do texto</translation>
 <translation id="3181954750937456830">Navegação segura (protege o utilizador e o seu dispositivo contra sites perigosos)</translation>
 <translation id="3182749001423093222">Verificação ortográfica</translation>
 <translation id="3183139917765991655">Importador de perfis</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Abrir como janela</translation>
 <translation id="3278001907972365362">A(s) sua(s) Conta(s) Google necessita(m) de atenção</translation>
 <translation id="3279230909244266691">Este processo pode demorar alguns minutos. A iniciar a máquina virtual…</translation>
-<translation id="3279741024917655738">Mostrar vídeos em ecrã inteiro em</translation>
 <translation id="3280237271814976245">Guard&amp;ar como...</translation>
 <translation id="3280243678470289153">Permanecer no Chrome</translation>
 <translation id="3281892622610078515">Ficheiros e programas a colocar em quarentena:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Não foram encontrados resultados da pesquisa</translation>
 <translation id="3305389145870741612">O processo de formatação pode demorar alguns segundos. Aguarde.</translation>
 <translation id="3305661444342691068">Abrir PDF na Pré-visualização</translation>
-<translation id="3306684685104080068">Ativar a transmissão para serviços baseados na nuvem como o Hangouts do Google.</translation>
+<translation id="3307871847038842490">Esta página tem autorização para guardar em ficheiros originais.</translation>
 <translation id="3308006649705061278">Unidade organizacional (OU)</translation>
 <translation id="3308116878371095290">Esta página foi impedida de definir cookies.</translation>
 <translation id="3308134619352333507">Ocultar Botão</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Pretende cancelar a configuração da conta?</translation>
 <translation id="3464012987031883895">Um site está a aceder à entrada de áudio.</translation>
 <translation id="346431825526753">Esta é uma conta para crianças gerida por <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Transmitir um vídeo ou um ficheiro de áudio em fluxo contínuo</translation>
 <translation id="3468999815377931311">Telemóvel Android</translation>
 <translation id="3470442499439619530">Remover Este Utilizador</translation>
 <translation id="3473479545200714844">Lupa</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Reduzir</translation>
 <translation id="3497560059572256875">Partilhar doodle</translation>
 <translation id="3505030558724226696">Revogar acesso aos dispositivos</translation>
+<translation id="3505635633742443645">Não é possível utilizar a porta HDMI da estação de ancoragem quando a porta USB tipo C é utilizada para a saída de vídeo. Utilize uma porta diferente para um dos ecrãs.</translation>
 <translation id="3507421388498836150">Autorizações atuais para "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Procurar novamente dispositivos Bluetooth</translation>
 <translation id="3508920295779105875">Escolher outra pasta...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Instalação com êxito</translation>
 <translation id="3578594933904494462">O conteúdo deste separador está a ser partilhado.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; pretende partilhar uma impressora &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; com um grupo de que é proprietário: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Se aceitar, todos os membros do grupo poderão utilizar a impressora.</translation>
+<translation id="357889014807611375">Wi-Fi com acesso limitado</translation>
 <translation id="3584169441612580296">Ler e alterar fotos, música e outros elementos multimédia a partir do computador</translation>
 <translation id="3587482841069643663">Tudo</translation>
 <translation id="358796204584394954">Introduza este código no "<ph name="DEVICE_NAME" />" para sincronizar:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Aceder</translation>
 <translation id="3593965109698325041">Restrições de nome do certificado</translation>
 <translation id="3596235046596950091">Ativar serviços na nuvem</translation>
+<translation id="3599221874935822507">Elevada</translation>
 <translation id="3599863153486145794">Limpa o histórico de todos os dispositivos com sessão iniciada. A sua Conta Google pode ter outras formas do histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Informações de pedido da Web</translation>
 <translation id="3600792891314830896">Desativar o som dos sites que reproduzem som</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Transferido por &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Mostrar <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Abrir num novo separador</translation>
+<translation id="3615073365085224194">Toque no sensor de impressões digitais com o dedo.</translation>
 <translation id="3616113530831147358">Áudio</translation>
 <translation id="3616741288025931835">&amp;Limpar Dados de Navegação...</translation>
 <translation id="3617891479562106823">Os fundos não estão disponíveis. Tente novamente mais tarde.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Página inicial</translation>
 <translation id="3720996970802414353">Mudar mesmo assim</translation>
 <translation id="3722108462506185496">Não foi possível iniciar o serviço da máquina virtual. Tente novamente mais tarde.</translation>
-<translation id="3723158278575423087">Bem-vindo à experiência do Google Cast no Chromium!</translation>
 <translation id="3725367690636977613">páginas</translation>
 <translation id="3726137731714254362">A remoção de pastas deste local irá parar a partilha, mas não irá eliminar os ficheiros.</translation>
 <translation id="3727148787322499904">Alterar esta definição afetará todas as redes partilhadas</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Informações de compilação detalhadas</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Comunicar com um dispositivo USB}other{Comunicar com # dispositivos USB}}</translation>
 <translation id="3765246971671567135">Não foi possível ler a política do modo de demonstração offline.</translation>
-<translation id="3766223500670287046">Ecrã remoto</translation>
 <translation id="3768037234834996183">A sincronizar as preferências...</translation>
 <translation id="377050016711188788">Gelado</translation>
 <translation id="3771294271822695279">Ficheiros de vídeo</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Levante e toque novamente</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronização em pausa</translation>
-<translation id="3862134173397075045">Bem-vindo à experiência do Google Cast no Chrome!</translation>
 <translation id="3862693525629180217">Validar através do sensor integrado</translation>
 <translation id="3862788408946266506">É necessário instalar a aplicação com o atributo de manifesto "kiosk_only" no modo quiosque do Chrome OS.</translation>
 <translation id="3865414814144988605">Resolução</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Telemóvel Smart Lock alterado</translation>
 <translation id="3927932062596804919">Recusar</translation>
 <translation id="3930737994424905957">A procurar dispositivos…</translation>
+<translation id="3930968231047618417">Cor do fundo</translation>
 <translation id="3933283459331715412">Restaurar a palavra-passe eliminada para <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Abrir áudio num novo separador</translation>
 <translation id="3936925983113350642">A palavra-passe que escolher será necessária para restaurar este certificado mais tarde. Registe-a num local seguro.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importado do IE</translation>
 <translation id="3950820424414687140">Iniciar sessão</translation>
+<translation id="3950828138786918475">Este separador tem autorização para ler uma pasta no seu dispositivo.</translation>
 <translation id="3954354850384043518">Em curso</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">Não existem registos de eventos WebRTC capturados recentemente.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">A calcular...</translation>
 <translation id="3975565978598857337">Falha ao contactar o servidor do domínio.</translation>
 <translation id="397703832102027365">A finalizar...</translation>
+<translation id="3977886311744775419">As atualizações automáticas não são transferidas neste tipo de rede, mas pode verificar se existem atualizações manualmente.</translation>
 <translation id="3979395879372752341">Nova extensão adicionada (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Ativar <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Introduzido tipo de gravação inválido.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Ativar tocar para clicar</translation>
 <translation id="4195643157523330669">Abrir num novo separador</translation>
 <translation id="4195814663415092787">Continuar onde deixou</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> pode guardar as suas alterações diretamente nos ficheiros seguintes. O site pode guardar alterações apenas enquanto este separador está aberto.</translation>
 <translation id="4198146608511578238">Basta premir sem soltar o ícone do Iniciador para falar com o seu Assistente Google.</translation>
 <translation id="4200689466366162458">Palavras personalizadas</translation>
 <translation id="4200983522494130825">Novo &amp;separador</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Estabelecer automaticamente ligação à rede móvel</translation>
 <translation id="4268025649754414643">Cifragem de chaves</translation>
 <translation id="4270393598798225102">Versão <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Sem correspondências</translation>
 <translation id="4275663329226226506">Multimédia</translation>
 <translation id="4275830172053184480">Reiniciar o dispositivo</translation>
 <translation id="4278101229438943600">O seu Assistente está pronto</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Tempo da CPU</translation>
 <translation id="4534661889221639075">Tente novamente.</translation>
 <translation id="4535127706710932914">Perfil Predefinido</translation>
+<translation id="4535767533210902251">O sensor de impressões digitais é a tecla superior direita no seu teclado. Toque levemente no mesmo com qualquer dedo.</translation>
 <translation id="4538684596480161368">Bloquear sempre plug-ins sem isolamento de processos em <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Instalada pela política da empresa.</translation>
 <translation id="4542520061254486227">Ler os seus dados em <ph name="WEBSITE_1" /> e <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Mais...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Sincronizar dispositivo Bluetooth</translation>
+<translation id="4578012756826807359">Os dados de início de sessão foram eliminados com êxito.</translation>
 <translation id="4579581181964204535">Não é possível transmitir <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Erro ao restaurar o Linux</translation>
 <translation id="4582563038311694664">Repor todas as definições</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Os cookies de vários Sites serão apagados à saída.</translation>
 <translation id="4765582662863429759">Permite às Mensagens Android retransmitir as mensagens de texto do telemóvel para o Chromebook.</translation>
 <translation id="4768332406694066911">Tem certificados destas entidades que o identificam</translation>
-<translation id="4772404146526168240">Ambos os ecrãs</translation>
 <translation id="4776146737004271126">Abrir definições do Android</translation>
 <translation id="4776917500594043016">Palavra-passe para <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Inicie sessão para obter os seus marcadores, o histórico, as palavras-passe e outras definições em todos os seus dispositivos. Além disso, também inicia sessão automaticamente nos serviços Google.</translation>
 <translation id="4929386379796360314">Destinos de impressão</translation>
 <translation id="4930714375720679147">Ativar</translation>
-<translation id="4931132176527519925">Utilizar sempre o espelhamento</translation>
 <translation id="4932733599132424254">Data</translation>
 <translation id="4933484234309072027">incorporada em <ph name="URL" /></translation>
 <translation id="493571969993549666">Adicionar utilizador supervisionado</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Reativar o som</translation>
 <translation id="4992458225095111526">Confirmar Powerwash</translation>
 <translation id="4992473555164495036">O administrador limitou os métodos de introdução disponíveis.</translation>
+<translation id="4992866843815555470">É necessário reparar a sua estação de ancoragem. Se não tiver uma ventoinha a funcionar, a estação de ancoragem irá desligar-se.</translation>
 <translation id="4992926179187649719">Ativar a opção "Ok Google"</translation>
 <translation id="4994474651455208930">Permitir que os Web sites peçam para serem os processadores predefinidos de protocolos</translation>
 <translation id="4994754230098574403">A configurar…</translation>
@@ -2660,7 +2675,7 @@
 <translation id="5017633213534173756">Memorizar</translation>
 <translation id="5018207570537526145">Abrir o Website da extensão</translation>
 <translation id="5021750053540820849">Ainda por atualizar</translation>
-<translation id="5026688690798028095">Abrir Gestão de aplicações</translation>
+<translation id="5026688690798028095">Abrir gestão de aplicações</translation>
 <translation id="5026874946691314267">Não voltar a mostrar</translation>
 <translation id="5027550639139316293">Certificado de email</translation>
 <translation id="5027562294707732951">Adicionar extensão</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">ID do processo</translation>
 <translation id="5233638681132016545">Novo separador</translation>
 <translation id="5233736638227740678">C&amp;olar</translation>
-<translation id="5234764350956374838">Ignorar</translation>
 <translation id="5235050375939235066">Pretende desinstalar a aplicação?</translation>
 <translation id="5235750401727657667">Substituir a página visualizada ao abrir um novo separador</translation>
 <translation id="5238278114306905396">A aplicação "<ph name="EXTENSION_NAME" />" foi automaticamente removida.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">A Google recomenda o Chrome</translation>
 <translation id="532247166573571973">O servidor pode estar inacessível. Tente novamente mais tarde.</translation>
 <translation id="5324780743567488672">Definir automaticamente o fuso horário com base na localização</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" />: tem autorização para guardar em ficheiros originais.</translation>
 <translation id="5327248766486351172">Nome</translation>
 <translation id="5327570636534774768">O dispositivo está marcado para gestão por um domínio diferente. Remova o domínio do dispositivo antes de configurar o modo de demonstração.</translation>
 <translation id="532943162177641444">Toque na notificação no <ph name="PHONE_NAME" /> para configurar a zona Wi-Fi móvel que pode ser utilizada por este dispositivo.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> pretende</translation>
 <translation id="5534304873398226603">Rejeitar foto ou vídeo</translation>
 <translation id="5535941515421698170">Remover também os dados existentes deste dispositivo</translation>
-<translation id="5537725057119320332">Transmitir</translation>
 <translation id="5539221284352502426">A palavra-passe introduzida foi rejeitada pelo servidor. Motivos possíveis: a palavra-passe é demasiado curta; a palavra-passe tem de incluir números ou símbolos; a palavra-passe tem de ser diferente das palavras-passe antigas.</translation>
 <translation id="5541687815721799001">Utilizar aplicação</translation>
 <translation id="5542132724887566711">Perfil</translation>
@@ -3301,7 +3315,6 @@
 <translation id="5997337190805127100">Saiba mais acerca do acesso a sites</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultados para "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="6002458620803359783">Vozes preferidas</translation>
-<translation id="6005695835120147974">Media Router</translation>
 <translation id="6006484371116297560">Clássico</translation>
 <translation id="6007240208646052708">A pesquisa por voz não está disponível no seu idioma.</translation>
 <translation id="6009781704028455063">Sensor integrado</translation>
@@ -3501,7 +3514,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nova impressora na rede}other{Novas impressoras na rede}}</translation>
 <translation id="6286708577777130801">Detalhes de palavras-passe guardadas</translation>
 <translation id="6289452883081499048">Serviços Google personalizados, como o Play.</translation>
-<translation id="6290556621549272952">Pode utilizar esta funcionalidade para apresentar conteúdo do Chromium na sua TV ou noutros dispositivos.</translation>
 <translation id="6291949900244949761">Perguntar quando um site pretender aceder a dispositivos USB (recomendado)</translation>
 <translation id="6291953229176937411">Mo&amp;strar no Finder</translation>
 <translation id="6295158916970320988">Todos os sites</translation>
@@ -3565,6 +3577,7 @@
 <translation id="6395423953133416962">Enviar <ph name="BEGIN_LINK1" />informações do sistema<ph name="END_LINK1" /> e <ph name="BEGIN_LINK2" />métricas<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Impedir que os sites utilizem os sensores de movimentos</translation>
 <translation id="6397094776139756010">Opções de sincronização e de personalização</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> poderá guardar as suas alterações diretamente nos ficheiros existentes na pasta seguinte. O site pode guardar alterações apenas enquanto este separador está aberto.</translation>
 <translation id="6398715114293939307">Remover a Google Play Store</translation>
 <translation id="6398765197997659313">Sair do modo de ecrã inteiro</translation>
 <translation id="6399774419735315745">Espiã</translation>
@@ -3609,11 +3622,13 @@
 <translation id="6455264371803474013">Em sites específicos</translation>
 <translation id="6455894534188563617">&amp;Nova pasta</translation>
 <translation id="6456394469623773452">Boa</translation>
+<translation id="6456955391422100996">Anúncio removido.</translation>
 <translation id="645705751491738698">Continuar a bloquear JavaScript</translation>
 <translation id="6458701200018867744">O carregamento falhou (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Utilizar selecção para localizar</translation>
 <translation id="6459799433792303855">Janela ativa movida para outro ecrã.</translation>
 <translation id="6460601847208524483">Localizar seguinte</translation>
+<translation id="6461170143930046705">A procurar redes…</translation>
 <translation id="6463795194797719782">&amp;Editar</translation>
 <translation id="6466988389784393586">&amp;Abrir Todos os Marcadores</translation>
 <translation id="6467304607960172345">Otimizar vídeos em ecrã inteiro</translation>
@@ -3652,6 +3667,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Está ligado a uma rede <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Partilhar</translation>
 <translation id="6528513914570774834">Permitir que outros utilizadores deste dispositivo utilizem esta rede</translation>
 <translation id="652948702951888897">Histórico do Chrome</translation>
@@ -3748,7 +3764,6 @@
 <translation id="6680650203439190394">Classificar</translation>
 <translation id="6681668084120808868">Tirar foto</translation>
 <translation id="6681964764822470072">O "<ph name="APP_NAME" />" será desinstalado.</translation>
-<translation id="6685083257944113180">Parar, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Abrir o Google Play</translation>
 <translation id="6686490380836145850">Fechar separadores à direita</translation>
 <translation id="6686817083349815241">Guardar a sua palavra-passe</translation>
@@ -3856,6 +3871,7 @@
 <translation id="6845038076637626672">Abrir Maximizada</translation>
 <translation id="6845325883481699275">Ajudar a melhorar a segurança do Chrome</translation>
 <translation id="6848388270925200958">De momento, tem alguns cartões que apenas podem ser utilizados neste dispositivo.</translation>
+<translation id="6850286078059909152">Cor do texto</translation>
 <translation id="6851497530878285708">Aplicação ativada</translation>
 <translation id="6853388645642883916">Atualizador em suspensão</translation>
 <translation id="68541483639528434">Fechar os outros separadores</translation>
@@ -3905,7 +3921,6 @@
 <translation id="6923132443355966645">Deslocar/clicar</translation>
 <translation id="6923633482430812883">Erro ao montar a partilha. Verifique se o servidor de ficheiros ao qual está a ligar suporta o SMBv2 ou posterior.</translation>
 <translation id="6930036377490597025">Chave de segurança externa ou sensor incorporado</translation>
-<translation id="6930242544192836755">Duração</translation>
 <translation id="693807610556624488">A operação de escrita excede o comprimento máximo do atributo para: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Inicie sessão no <ph name="TOKEN_NAME" /> para autenticar em <ph name="HOST_NAME" /> com o seu certificado.</translation>
 <translation id="6943176775188458830">Cancelar impressão</translation>
@@ -3917,8 +3932,9 @@
 <translation id="6950627417367801484">Restaurar aplicações</translation>
 <translation id="6950943362443484797">Vamos instalar a aplicação por si</translation>
 <translation id="6951153907720526401">Controladores de pagamentos</translation>
-<translation id="6951663584153258142">A sua entidade pede-lhe que atualize este dispositivo.</translation>
+<translation id="6951663584153258142">A sua entidade solicita-lhe que atualize este dispositivo.</translation>
 <translation id="6953878494808481632">Informações relacionadas</translation>
+<translation id="6953916367503892689">{0,plural, =1{Ficheiro: <ph name="FILES" />}other{Ficheiros: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Inspecionar Pop-up</translation>
 <translation id="6957044667612803194">Esta chave de segurança não suporta PINs.</translation>
 <translation id="6957231940976260713">Nome do serviço</translation>
@@ -4131,7 +4147,6 @@
 <translation id="7254554697254365959">Não foi possível traduzir esta página.</translation>
 <translation id="7254951428499890870">Tem a certeza de que pretende iniciar o "<ph name="APP_NAME" />" no modo de diagnóstico?</translation>
 <translation id="7255002516883565667">De momento, tem um cartão que apenas pode ser utilizado neste dispositivo.</translation>
-<translation id="7255220508626648026">Transmissão: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Toque novamente na chave de segurança para confirmar a reposição. Todas as informações armazenadas na chave de segurança, incluindo o respetivo PIN, serão apagadas.</translation>
 <translation id="7255935316994522020">Candidatar-se</translation>
 <translation id="7256069762010468647">O site está a utilizar a câmara.</translation>
@@ -4265,6 +4280,7 @@
 <translation id="7456142309650173560">programador</translation>
 <translation id="7456847797759667638">Abrir localização...</translation>
 <translation id="7458168200501453431">Utiliza o mesmo corretor ortográfico que é utilizado na Pesquisa Google. O texto que introduzir no navegador é enviado à Google.</translation>
+<translation id="7460045493116006516">O tema atual que tem instalado.</translation>
 <translation id="7461924472993315131">Fixar</translation>
 <translation id="746216226901520237">Da próxima vez, o telemóvel irá desbloquear o <ph name="DEVICE_TYPE" />. Pode desativar o Smart Lock nas Definições.</translation>
 <translation id="7463006580194749499">Adicionar pessoa</translation>
@@ -4324,6 +4340,7 @@
 <translation id="7554791636758816595">Novo separador</translation>
 <translation id="7556033326131260574">O Smart Lock não conseguiu validar a sua conta. Introduza a palavra-passe para aceder.</translation>
 <translation id="7556242789364317684">Infelizmente, o <ph name="SHORT_PRODUCT_NAME" /> não conseguiu recuperar as suas definições. Para corrigir o erro, o <ph name="SHORT_PRODUCT_NAME" /> terá de repor o dispositivo com o Powerwash.</translation>
+<translation id="7559444627302317199">Verifique a ligação de rede e tente novamente.</translation>
 <translation id="7559719679815339381">Aguarde... A aplicação Quiosque está em processo de atualização. Não remova a pen USB.</translation>
 <translation id="7561196759112975576">Sempre</translation>
 <translation id="7563991800558061108">Para recuperar deste erro, terá de iniciar sessão na sua Conta Google
@@ -4566,7 +4583,6 @@
 <translation id="7887334752153342268">Duplicar</translation>
 <translation id="7887864092952184874">Rato Bluetooth sincronizado</translation>
 <translation id="7889565820482017512">Tamanho do ecrã</translation>
-<translation id="7889966925761734854">Procurar</translation>
 <translation id="7893008570150657497">Aceder a fotos, música e outros elementos multimédia a partir do seu computador</translation>
 <translation id="7893153962594818789">O Bluetooth está desativado neste <ph name="DEVICE_TYPE" />. Introduza a palavra-passe e ative o Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Predefinição)</translation>
@@ -4574,7 +4590,6 @@
 <translation id="7898627924844766532">Manter na barra de ferramentas</translation>
 <translation id="7898725031477653577">Traduzir sempre</translation>
 <translation id="790040513076446191">Manipular as definições relacionadas com privacidade</translation>
-<translation id="7902874111237641165">Movimento fluido [beta]</translation>
 <translation id="7903345046358933331">A página deixou de responder. Pode esperar pela respetiva resposta ou fechá-la.</translation>
 <translation id="7903742244674067440">Tem certificados em arquivo que identificam estas autoridades de certificação</translation>
 <translation id="7903925330883316394">Utilitário: <ph name="UTILITY_TYPE" /></translation>
@@ -4686,6 +4701,7 @@
 <translation id="8037117027592400564">Ler todo o texto falado através da voz sintetizada</translation>
 <translation id="8037357227543935929">Pedir (predefinição)</translation>
 <translation id="803771048473350947">Ficheiro</translation>
+<translation id="8042142357103597104">Opacidade do texto</translation>
 <translation id="8044899503464538266">Lento</translation>
 <translation id="8045253504249021590">A sincronização foi interrompida através do Painel de Controlo Google.</translation>
 <translation id="8045923671629973368">Introduza o ID da aplicação ou o URL da loja online.</translation>
@@ -4722,7 +4738,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Pode desativar este serviço nas Definições.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Os PINs não coincidem</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> está a utilizar definições do proxy de uma extensão</translation>
-<translation id="8099495042588009598">Mais autorizações</translation>
 <translation id="8101987792947961127">Powerwash necessário no próximo reinício</translation>
 <translation id="8102159139658438129">Aceda a <ph name="LINK_BEGIN" />Definições<ph name="LINK_END" /> para ver as opções para o telemóvel associado.</translation>
 <translation id="8104696615244072556">Efetue um Powerwash ao dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /> e regresse à versão anterior.</translation>
@@ -4773,8 +4788,10 @@
     Acho que este site não deveria estar bloqueado.</translation>
 <translation id="8184288427634747179">Mudar para <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Mais informações</translation>
+<translation id="8184472985242519288">Uniforme</translation>
 <translation id="8185331656081929126">Mostrar notificações quando forem detetadas novas impressoras na rede</translation>
 <translation id="8186609076106987817">O servidor não conseguiu encontrar o ficheiro.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> pode ler todos os ficheiros na pasta seguinte. O site pode ver as alterações efetuadas à pasta apenas enquanto este separador está aberto.</translation>
 <translation id="8188389033983459049">Verifique as definições do dispositivo e ative-o para continuar.</translation>
 <translation id="8190193592390505034">A ligar a <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Gerir as suas aplicações, extensões e temas</translation>
@@ -4838,7 +4855,7 @@
     <ph name="BEGIN_PARAGRAPH2" />A desativação desta funcionalidade não afeta a capacidade deste dispositivo de enviar as informações necessárias para serviços essenciais, como as atualizações do sistema e a segurança.<ph name="END_PARAGRAPH2" />
     <ph name="BEGIN_PARAGRAPH3" />O proprietário pode controlar esta funcionalidade ao aceder a Definições &gt; Avançadas &gt; Enviar automaticamente dados de diagnóstico e de utilização para a Google.<ph name="END_PARAGRAPH3" />
     <ph name="BEGIN_PARAGRAPH4" />Se a Atividade da Web e de aplicações adicional estiver ativada para a criança, estes dados poderão ser guardados na respetiva Conta Google. Saiba mais acerca destas definições e como as ajustar em families.google.com.<ph name="END_PARAGRAPH4" /></translation>
-<translation id="8270242299912238708">Documentos PDF</translation>
+<translation id="8270242299912238708">Docs PDF</translation>
 <translation id="827097179112817503">Mostrar botão Página inicial</translation>
 <translation id="8271246892936492311">{COUNT,plural, =1{1 marcador eliminado}other{# marcadores eliminados}}</translation>
 <translation id="8272443605911821513">Faça a gestão das suas extensões clicando em Extensões no menu "Mais ferramentas".</translation>
@@ -4878,7 +4895,6 @@
 <translation id="833986336429795709">Para abrir este link, escolher uma aplicação</translation>
 <translation id="8342861492835240085">Selecionar uma coleção</translation>
 <translation id="834290227245955730">PIN inválido. Tentativas restantes: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Utilize uma largura de banda elevada para obter a melhor qualidade de vídeo ou de animação. Outros utilizadores com ligações lentas podem não conseguir ver o seu conteúdo.</translation>
 <translation id="8351419472474436977">Esta extensão apoderou-se das suas definições de proxy, o que significa que pode alterar, interromper ou intercetar qualquer coisa que esteja a fazer online. Se não tem a certeza do motivo pelo qual aconteceu esta alteração, é provável que não a queira.</translation>
 <translation id="8351630282875799764">A bateria não está a carregar</translation>
 <translation id="835238322900896202">Ocorreu um erro durante a desinstalação. Desinstale através do Terminal.</translation>
@@ -4911,9 +4927,11 @@
 <translation id="839736845446313156">Registar-se</translation>
 <translation id="8398877366907290961">Prosseguir</translation>
 <translation id="8400146488506985033">Gerir pessoas</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> pode guardar as suas alterações diretamente nos ficheiros existentes na pasta seguinte. O site pode guardar alterações apenas enquanto este separador está aberto.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Perguntar primeiro (recomendado)</translation>
 <translation id="8418445294933751433">Mo&amp;strar como separador</translation>
+<translation id="8418905021510211421">Esta página tem autorização para ler uma pasta no seu dispositivo.</translation>
 <translation id="8419098111404128271">Resultados da pesquisa para "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Bem-vindo a <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Alterar</translation>
@@ -4933,6 +4951,7 @@
 <translation id="8438566539970814960">Melhorar as pesquisas e a navegação</translation>
 <translation id="8439506636278576865">Oferecer para traduzir páginas neste idioma</translation>
 <translation id="8440630305826533614">Aplicações para Linux</translation>
+<translation id="844241640324986723">A eliminação dos dados de início de sessão falhou.</translation>
 <translation id="8443338615972234259">Crie uma nova conta para o seu utilizador supervisionado agora.</translation>
 <translation id="8446884382197647889">Saiba Mais</translation>
 <translation id="8447409163267621480">Inclua Ctrl ou Alt.</translation>
@@ -4948,8 +4967,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">É possível que este utilizador supervisionado tenha sido eliminado ou desativado pelo gestor. Contacte o gestor se pretender continuar a iniciar sessão com este utilizador.</translation>
 <translation id="846374874681391779">Barra de transferências</translation>
-<translation id="8463807869745732775">"&gt;
-    Dados de início de sessão da chave de segurança armazenados</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> desativado.</translation>
 <translation id="8464132254133862871">Esta conta de utilizador não é elegível para o serviço.</translation>
 <translation id="8465252176946159372">Não é válido</translation>
@@ -5015,6 +5032,7 @@
 <translation id="8569002732135253578">A imprimir agora <ph name="DOCUMENT_NAME" />…</translation>
 <translation id="8569682776816196752">Não foram encontrados destinos</translation>
 <translation id="8571213806525832805">Últimas 4 semanas</translation>
+<translation id="8573403125070227391">Uma vez que este anúncio utiliza demasiados recursos para o seu dispositivo, o Chrome removeu-o.</translation>
 <translation id="8574990355410201600">Permitir sempre som em <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Para sair, mantenha as teclas <ph name="KEY_EQUIVALENT" /> premidas.</translation>
 <translation id="8578639784464423491">Não pode exceder 99 letras.</translation>
@@ -5038,13 +5056,13 @@
 <translation id="8609465669617005112">Mover para cima</translation>
 <translation id="8610103157987623234">Formato incorreto. Tente novamente.</translation>
 <translation id="8615618338313291042">Aplicação em navegação anónima: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Sombra</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Estado do roaming</translation>
 <translation id="8620765578342452535">Configurar ligações de rede</translation>
 <translation id="8621866727807194849">Existe software prejudicial no seu computador. O Chrome está a removê-lo, a restaurar as suas definições e a desativar as extensões. Com esta ação, o navegador vai voltar a funcionar normalmente.</translation>
 <translation id="8621979332865976405">Partilhe o ecrã inteiro</translation>
 <translation id="862542460444371744">&amp;Extensões</translation>
-<translation id="8627151598708688654">Selecionar fonte</translation>
 <translation id="862727964348362408">Suspenso</translation>
 <translation id="862750493060684461">Cache CSS</translation>
 <translation id="8627795981664801467">Apenas ligações seguras</translation>
@@ -5098,6 +5116,7 @@
 <translation id="8688579245973331962">Não vê o seu nome?</translation>
 <translation id="8688591111840995413">Palavra-passe incorreta</translation>
 <translation id="8688672835843460752">Disponível</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Abrir &amp;Localização...</translation>
 <translation id="869884720829132584">Menu Aplicações</translation>
 <translation id="869891660844655955">Data de expiração</translation>
@@ -5261,6 +5280,7 @@
 <translation id="891365694296252935">Envie dados de utilização e diagnóstico. Agora, este dispositivo está a enviar automaticamente dados de diagnóstico, de utilização de aplicações e do dispositivo para a Google. Estes dados não serão utilizados para identificar a criança e ajudarão a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Esta definição é aplicada pelo proprietário. Se a Atividade da Web e de aplicações adicional estiver ativada para a criança, estes dados podem ser guardados na respetiva Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">A carregar sugestão</translation>
 <translation id="8916476537757519021">Subestrutura da navegação anónima: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" />: tem autorização para ler uma pasta no seu dispositivo.</translation>
 <translation id="8919275547519617350">Para obter todas as suas palavras-passe em todos os dispositivos, inicie sessão e ative a sincronização.</translation>
 <translation id="8921366488406707015">A validar a sua chave de segurança…</translation>
 <translation id="8922013791253848639">Permitir sempre anúncios neste site</translation>
@@ -5290,7 +5310,6 @@
 <translation id="8965037249707889821">Introduzir palavra-passe antiga</translation>
 <translation id="8966870118594285808">Reabra um separador caso o feche acidentalmente.</translation>
 <translation id="8967866634928501045">Prima Alt + Shift + A para mostrar.</translation>
-<translation id="8970203673128054105">Ver lista do modo de transmissão</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Consulte o seu gestor de rede para ter a certeza de que a firewall não está a bloquear as transferências dos servidores da Google.</translation>
 <translation id="8973557916016709913">Remover nível de zoom</translation>
@@ -5439,6 +5458,7 @@
 <translation id="9214520840402538427">Ups! A inicialização dos atributos de tempo de instalação expirou. Contacte o seu representante de suporte.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" adicionada</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> poderá guardar as suas alterações diretamente no ficheiro seguinte. O site pode guardar alterações apenas enquanto este separador está aberto.</translation>
 <translation id="9218430445555521422">Definir como predefinição</translation>
 <translation id="9219103736887031265">Imagens</translation>
 <translation id="9220525904950070496">Remover conta</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index 127b9240..9bdc445 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">A apărut o eroare la pornirea mașinii virtuale. Încearcă din nou.</translation>
 <translation id="1089439967362294234">Schimbă parola</translation>
 <translation id="1090126737595388931">Nu rulează aplicații în fundal</translation>
+<translation id="1090290614672149983">Salvezi modificările fișierului inițial?</translation>
 <translation id="1090918500949388876">Accesează Asistentul rostind „Ok Google” când ecranul este pornit</translation>
 <translation id="1091767800771861448">Apăsați pe ESCAPE pentru a ignora (numai versiunile neoficiale).</translation>
 <translation id="1093457606523402488">Rețele vizibile:</translation>
 <translation id="1094607894174825014">Operațiunea de citire sau de scriere a fost solicitată cu un decalaj nevalid pe: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="1097658378307015415">Înainte de a vă conecta, începeți o sesiune pentru invitați pentru activarea rețelei <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Această filă poate salva în fișierele inițiale.</translation>
 <translation id="1103523840287552314">Tradu întotdeauna din <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Oprește</translation>
 <translation id="1110155001042129815">Așteaptă</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Ochelari de soare</translation>
 <translation id="1151917987301063366">Permite întotdeauna accesul <ph name="HOST" /> la senzori</translation>
 <translation id="1153356358378277386">Dispozitive asociate</translation>
-<translation id="1156488781945104845">Ora actuală</translation>
 <translation id="1161575384898972166">Conectează-te la <ph name="TOKEN_NAME" /> pentru a exporta certificatul client.</translation>
 <translation id="1163931534039071049">&amp;Afișează sursa cadrului</translation>
 <translation id="1164674268730883318">Dezactivezi Smart Lock pentru <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Setări privind stocarea Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookie-urile și alte date privind site-urile</translation>
 <translation id="127668050356036882">Închide toate ferestrele</translation>
-<translation id="1277908057200820621">Vezi lista cu dispozitive</translation>
 <translation id="1280820357415527819">Se caută rețele mobile</translation>
 <translation id="1285320974508926690">Nu traduce niciodată acest site</translation>
 <translation id="1285484354230578868">Stocați datele în contul Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Rețeaua de domiciliu, nu de roaming</translation>
 <translation id="1316136264406804862">Se caută...</translation>
 <translation id="1316495628809031177">Sincronizarea este întreruptă</translation>
+<translation id="1317637799698924700">Stația de andocare va funcționa în modul compatibil cu USB Type-C.</translation>
 <translation id="1322046419516468189">Vezi și gestionează parolele salvate în <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Pentru a accesa filele de pe alte dispozitive, conectează-te la Chrome.</translation>
 <translation id="1327074568633507428">Imprimantă în Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Browserul tău este gestionat<ph name="END_LINK" /> de <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Rulează instrumentele, aplicațiile de editare și IDE-urile Linux pe <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Află mai multe&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Alege un fișier</translation>
+<translation id="1370749010280229230">Afișajul conectat la dispozitivul de andocare are o problemă</translation>
 <translation id="1371301976177520732">Marcajele, parolele, istoricul și alte date, pe toate dispozitivele</translation>
 <translation id="1372841398847029212">Sincronizează cu contul tău</translation>
 <translation id="1374844444528092021">Certificatul solicitat de rețeaua „<ph name="NETWORK_NAME" />” nu este instalat sau nu mai este valabil. Obțineți un certificat nou și reîncercați să vă conectați.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Pagină web, un singur fișier</translation>
 <translation id="1451917004835509682">Adaugă o persoană monitorizată</translation>
 <translation id="1454223536435069390">F&amp;aceți o captură de ecran</translation>
+<translation id="1458243790901188746">{0,plural, =1{Dosar: <ph name="DIRECTORIES" />}few{Dosare: <ph name="DIRECTORIES" />}other{Dosare: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Motoare de căutare adăugate de extensii</translation>
 <translation id="146000042969587795">Acest cadru a fost blocat, deoarece are conținut nesigur.</translation>
 <translation id="146219525117638703">Stare ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Afișează opțiunile de introducere a textului</translation>
 <translation id="1651008383952180276">Trebuie să introduci aceeași expresie de acces de două ori</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Pentru a putea printa de oriunde, adaugă imprimanta în Google Cloud Print.}few{Pentru a putea printa de oriunde, adaugă cele # imprimante în Google Cloud Print.}other{Pentru a putea printa de oriunde, adaugă cele # de imprimante în Google Cloud Print.}}</translation>
+<translation id="1656528038316521561">Opacitatea fundalului</translation>
 <translation id="1657406563541664238">Trimite automat statistici de utilizare și rapoarte de blocare la Google pentru a contribui la îmbunătățirea <ph name="PRODUCT_NAME" />.</translation>
 <translation id="1658424621194652532">Această pagină vă accesează microfonul.</translation>
 <translation id="1660204651932907780">Permite site-urilor să redea sunet (recomandat)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> dorește să vadă marca și modelul cheii de securitate</translation>
 <translation id="1679068421605151609">Instrumente pentru dezvoltatori</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Sigur dorești să ieși?</translation>
 <translation id="167983332380191032">Serviciul de administrare a trimis o eroare HTTP.</translation>
 <translation id="1680849702532889074">A apărut o eroare în timpul instalării aplicației Linux.</translation>
 <translation id="16815041330799488">Nu permite site-urilor să vadă textul și imaginile copiate în clipboard</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identificator media protejat</translation>
 <translation id="175196451752279553">R&amp;edeschide fila închisă</translation>
 <translation id="1753905327828125965">Cele mai vizitate</translation>
+<translation id="1755601632425835748">Dimensiunea textului</translation>
 <translation id="1756681705074952506">Metodă de introducere</translation>
 <translation id="1757301747492736405">Dezinstalarea este în așteptare</translation>
 <translation id="175772926354468439">Activați tema</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Mai mic</translation>
 <translation id="1919345977826869612">Anunțuri</translation>
 <translation id="1919814239594435008">Pluginul în afara mediului de testare este permis</translation>
+<translation id="1920390473494685033">Agendă</translation>
 <translation id="1921050530041573580">Asociază telefonul cu Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Profită de ingeniozitatea Google în <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Fila Incognito: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Pluginul <ph name="PEPPER_PLUGIN_NAME" /> de pe <ph name="PEPPER_PLUGIN_DOMAIN" /> dorește să acceseze computerul</translation>
 <translation id="2178614541317717477">Compromitere CA</translation>
+<translation id="2179849162388791084">Nu s-au colectat datele de conectare ale cheii de securitate.</translation>
 <translation id="218070003709087997">Precizează un număr de exemplare pentru printare (de la 1 la 999).</translation>
 <translation id="2184515124301515068">Permite Chrome să aleagă când site-urile pot reda sunet (recomandat)</translation>
 <translation id="2187895286714876935">Eroare de import a certificatului serverului</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Toate cookie-urile și toate datele privind site-urile</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 element copiat}few{# elemente copiate}other{# de elemente copiate}}</translation>
 <translation id="2278562042389100163">Deschide fereastra de browser</translation>
-<translation id="2279874276457403668">Poate fi creată doar o sesiune odată.</translation>
 <translation id="2280486287150724112">Margine la dreapta</translation>
 <translation id="2282146716419988068">Proces GPU</translation>
 <translation id="2282155092769082568">Adresa URL de autoconfigurare:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Notele de pe ecranul de blocare sunt salvate automat în <ph name="LOCK_SCREEN_APP_NAME" />. Cea mai recentă notă va rămâne pe ecranul de blocare.</translation>
 <translation id="2353297238722298836">Camera foto și microfonul sunt permise</translation>
 <translation id="2356070529366658676">Întreabă-mă</translation>
-<translation id="2357949918965361754">Poți să folosești această funcție pentru a afișa conținut din Chrome pe televizor sau pe alte dispozitive.</translation>
 <translation id="2359345697448000899">Gestionați extensiile făcând clic pe Extensii în meniul Instrumente.</translation>
 <translation id="2359808026110333948">Continuă</translation>
 <translation id="236117173274098341">Optimizează</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Organizația ta solicită o actualizare pentru acest dispozitiv imediat</translation>
 <translation id="2439545803278355377">Introdu noul cod PIN. Un cod PIN trebuie să aibă cel puțin patru caractere și poate conține litere, numere și alte caractere.</translation>
 <translation id="2440604414813129000">Afișează s&amp;ursa</translation>
+<translation id="2442916515643169563">Umbrirea textului</translation>
 <translation id="2444119669991608829">Pagina nu este în <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Este necesar directorul rădăcină pentru extensie.</translation>
 <translation id="2445484935443597917">Creează un profil nou</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Nu după</translation>
 <translation id="2739191690716947896">Remediați erorile</translation>
 <translation id="2739240477418971307">Modifică setările de accesibilitate</translation>
+<translation id="274029851662193272">Adâncită</translation>
 <translation id="2740393541869613458">examinați site-urile web accesate de utilizatorul monitorizat și</translation>
 <translation id="2741912629735277980">Afișează IU pe ecranul de conectare</translation>
 <translation id="274290345632688601">Se restabilesc aplicațiile și fișierele Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Comanda rapidă există deja</translation>
 <translation id="2807517655263062534">Fișierele pe care le descarci apar aici</translation>
 <translation id="2809586584051668049">și încă <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt nu este acceptat</translation>
 <translation id="2812944337881233323">Deconectează-te și conectează-te din nou</translation>
 <translation id="2812989263793994277">Nu afișa nicio imagine</translation>
 <translation id="281390819046738856">Solicitarea nu a putut fi semnată.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Furnizor</translation>
 <translation id="2844169650293029770">Dispozitiv USB-C (portul din stânga față)</translation>
 <translation id="2845382757467349449">Afișează mereu bara de marcaje</translation>
-<translation id="2847759467426165163">Proiectează pe</translation>
 <translation id="284805635805850872">Elimini software-ul dăunător?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Curățarea nu a reușit</translation>
@@ -1297,6 +1305,7 @@
 Mesaj de la server: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Adăugați galeria media după directoare</translation>
 <translation id="2910318910161511225">Conectează-te la o rețea și încearcă din nou</translation>
+<translation id="2910518940971897750">Salvează în fișierul inițial</translation>
 <translation id="2913331724188855103">Permite site-urilor să salveze și să citească datele asociate cookie-urilor (recomandat)</translation>
 <translation id="2915102088417824677">Vezi Jurnalul de activități</translation>
 <translation id="2915873080513663243">Scanare automată</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Dispozitive MIDI</translation>
 <translation id="3015639418649705390">Relansează acum</translation>
 <translation id="3016329696181678353">Imprimanta <ph name="PRINTER_NAME" /> nu a putut fi configurată automat. Te rugăm să specifici detaliile de printare avansate.</translation>
+<translation id="3016381065346027039">Nu există intrări în jurnal</translation>
 <translation id="3016641847947582299">Componentă actualizată</translation>
 <translation id="3016780570757425217">Afle locația</translation>
 <translation id="3017079585324758401">Fundal</translation>
 <translation id="3020183492814296499">Comenzi rapide</translation>
 <translation id="3020990233660977256">Numărul de serie: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Fluture</translation>
+<translation id="3021408157810018664">Salvezi modificările fișierelor inițiale?</translation>
 <translation id="3021426244864538700">Se accesează datele site-ului</translation>
 <translation id="3021678814754966447">&amp;Afișează sursa cadrului</translation>
 <translation id="3022978424994383087">Nu am înțeles.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">De asemenea, puteți să omiteți conectarea și să <ph name="LINK_START" />navigați ca invitat<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Un site accesează intrarea video</translation>
 <translation id="3177909033752230686">Limba paginii:</translation>
+<translation id="3179982752812949580">Fontul textului</translation>
 <translation id="3181954750937456830">Navigare sigură (protecție împotriva site-urilor periculoase)</translation>
 <translation id="3182749001423093222">Verificarea ortografiei</translation>
 <translation id="3183139917765991655">Instrument de import al profilurilor</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Deschide ca fereastră</translation>
 <translation id="3278001907972365362">Trebuie să te ocupi de Conturile Google.</translation>
 <translation id="3279230909244266691">Poate dura câteva minute. Se pornește mașina virtuală.</translation>
-<translation id="3279741024917655738">Afișează videoclipurile pe ecran complet pe</translation>
 <translation id="3280237271814976245">Salvează c&amp;a...</translation>
 <translation id="3280243678470289153">Rămâi în Chrome</translation>
 <translation id="3281892622610078515">Fișierele și programele ce urmează a fi mutate în carantină:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Nu s-au găsit rezultate de căutare</translation>
 <translation id="3305389145870741612">Procesul de formatare poate dura câteva secunde. Așteptați.</translation>
 <translation id="3305661444342691068">Deschideți PDF în Previzualizare</translation>
-<translation id="3306684685104080068">Activează proiecția în serviciile bazate pe cloud, cum ar fi Google Hangouts.</translation>
+<translation id="3307871847038842490">Această pagină are permisiunea să salveze în fișierele inițiale.</translation>
 <translation id="3308006649705061278">Unitate organizațională (OU)</translation>
 <translation id="3308116878371095290">Această pagină a fost împiedicată să stocheze cookie-uri.</translation>
 <translation id="3308134619352333507">Butonul Ascundeți</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Anulezi configurarea contului?</translation>
 <translation id="3464012987031883895">Un site accesează intrarea audio</translation>
 <translation id="346431825526753">Acesta este un cont pentru copii gestionat de <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Redă în flux un fișier video sau audio</translation>
 <translation id="3468999815377931311">Telefon Android</translation>
 <translation id="3470442499439619530">Eliminați acest utilizator</translation>
 <translation id="3473479545200714844">Lupă de ecran</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Micșorează</translation>
 <translation id="3497560059572256875">Trimite doodle-ul</translation>
 <translation id="3505030558724226696">Revocă accesul la dispozitiv</translation>
+<translation id="3505635633742443645">Portul HDMI al dispozitivului de andocare nu se poate folosi atunci când portul USB Type-C este folosit pentru conținut video. Alege un alt port pentru unul dintre ecrane.</translation>
 <translation id="3507421388498836150">Permisiuni actuale pentru „<ph name="EXTENSION_NAME" />”</translation>
 <translation id="3507888235492474624">Caută din nou dispozitive Bluetooth</translation>
 <translation id="3508920295779105875">Alegeți alt dosar...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">S-a instalat</translation>
 <translation id="3578594933904494462">La conținutul acestei file se permite accesul.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; dorește să permită accesul la o imprimantă &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; pentru un grup pe care îl deții: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Dacă accepți, toți membrii grupului vor putea printa la imprimantă.</translation>
+<translation id="357889014807611375">Wi-Fi contorizat</translation>
 <translation id="3584169441612580296">Citește și modifică fotografii, muzică și alte tipuri de conținut media de pe computer</translation>
 <translation id="3587482841069643663">Toate</translation>
 <translation id="358796204584394954">Pentru a conecta, introduceți acest cod pe „<ph name="DEVICE_NAME" />”:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Accesați</translation>
 <translation id="3593965109698325041">Limitări privind numele certificatului</translation>
 <translation id="3596235046596950091">Activează serviciile cloud</translation>
+<translation id="3599221874935822507">În relief</translation>
 <translation id="3599863153486145794">Șterge istoricul de pe toate dispozitivele conectate. Contul Google poate să ofere alte forme ale istoricului de navigare la <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Informații despre solicitarea web</translation>
 <translation id="3600792891314830896">Dezactivează sunetul pentru site-urile care îl redau</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Descărcat de &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Vezi <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Deschideți într-o filă nouă</translation>
+<translation id="3615073365085224194">Atinge senzorul de amprentă cu degetul</translation>
 <translation id="3616113530831147358">Audio</translation>
 <translation id="3616741288025931835">&amp;Șterge datele de navigare...</translation>
 <translation id="3617891479562106823">Fundalurile nu sunt disponibile. Încearcă din nou mai târziu.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Pagina de pornire</translation>
 <translation id="3720996970802414353">Comută oricum</translation>
 <translation id="3722108462506185496">A apărut o eroare la pornirea serviciului mașinii virtuale. Încearcă din nou.</translation>
-<translation id="3723158278575423087">Bun venit la experiența Cast în Chromium!</translation>
 <translation id="3725367690636977613">pagini</translation>
 <translation id="3726137731714254362">Dacă elimini dosarele de aici, nu vor mai fi folosite în comun, dar fișierele nu vor fi șterse.</translation>
 <translation id="3727148787322499904">Modificarea acestei setări se va aplica tuturor rețelelor folosite în comun</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Informații detaliate privind versiunea</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Comunică cu un dispozitiv USB}few{Comunică cu # dispozitive USB}other{Comunică cu # de dispozitive USB}}</translation>
 <translation id="3765246971671567135">Nu s-a putut citi politica offline privind modul demo.</translation>
-<translation id="3766223500670287046">Ecran la distanță</translation>
 <translation id="3768037234834996183">Se sincronizează preferințele...</translation>
 <translation id="377050016711188788">Înghețată</translation>
 <translation id="3771294271822695279">Fișiere video</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Ridică, apoi atinge din nou</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sincronizarea a fost întreruptă</translation>
-<translation id="3862134173397075045">Bun venit la experiența Cast în Chrome!</translation>
 <translation id="3862693525629180217">Confirmă prin senzorul încorporat</translation>
 <translation id="3862788408946266506">Aplicația cu atributul „kiosk_only” din manifest trebuie să fie instalată în modul chioșc pentru sistemul de operare Chrome</translation>
 <translation id="3865414814144988605">Rezoluție</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Telefonul cu funcția Smart Lock s-a schimbat</translation>
 <translation id="3927932062596804919">Refuză</translation>
 <translation id="3930737994424905957">Se caută dispozitive</translation>
+<translation id="3930968231047618417">Culoarea fundalului</translation>
 <translation id="3933283459331715412">Restabilește parola ștearsă pentru <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Deschide conținutul audio într-o filă nouă</translation>
 <translation id="3936925983113350642">Parola pe care o alegi va fi solicitată pentru a restabili acest certificat mai târziu. Noteaz-o într-o locație sigură.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importate din IE</translation>
 <translation id="3950820424414687140">Conectează-te</translation>
+<translation id="3950828138786918475">Această filă poate citi un dosar de pe dispozitivul tău.</translation>
 <translation id="3954354850384043518">În desfășurare</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">Nu ai jurnale de evenimente WebRTC înregistrate recent.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Se calculează...</translation>
 <translation id="3975565978598857337">Contactarea serverului pentru domeniu nu a reușit</translation>
 <translation id="397703832102027365">Se finalizează...</translation>
+<translation id="3977886311744775419">Actualizările automate nu se descarcă în acest tip de rețea, dar poți căuta actualizări manual.</translation>
 <translation id="3979395879372752341">A fost adăugată o extensie (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Activează <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">A fost introdus un tip de salvare nevalid.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Activează funcția „atinge pentru clic”</translation>
 <translation id="4195643157523330669">Deschide în filă nouă</translation>
 <translation id="4195814663415092787">Continuați de unde ați rămas</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> poate salva modificările tale direct în următoarele fișiere. Site-ul poate salva modificări numai atunci când această filă este deschisă.</translation>
 <translation id="4198146608511578238">Pentru a vorbi cu Asistentul Google, ține apăsată pictograma Lansator.</translation>
 <translation id="4200689466366162458">Cuvinte personalizate</translation>
 <translation id="4200983522494130825">Filă &amp;nouă</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Conectează-te automat la o rețea mobilă</translation>
 <translation id="4268025649754414643">Cifrare cheie</translation>
 <translation id="4270393598798225102">Versiunea <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Nicio potrivire</translation>
 <translation id="4275663329226226506">Media</translation>
 <translation id="4275830172053184480">Reporniți gadgetul</translation>
 <translation id="4278101229438943600">Asistentul este pregătit</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Timp CPU</translation>
 <translation id="4534661889221639075">Încearcă din nou.</translation>
 <translation id="4535127706710932914">Profil prestabilit</translation>
+<translation id="4535767533210902251">Senzorul de amprentă este tasta din dreapta sus de pe tastatură. Atinge-l ușor cu orice deget.</translation>
 <translation id="4538684596480161368">Blochează întotdeauna pluginurile scoase din mediul de testare pe <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Instalată pe baza politicii întreprinderii.</translation>
 <translation id="4542520061254486227">Citește datele de pe <ph name="WEBSITE_1" /> și de pe <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Mai multe...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Asociază dispozitivul Bluetooth</translation>
+<translation id="4578012756826807359">Datele de conectare s-au șters.</translation>
 <translation id="4579581181964204535">Nu se poate proiecta <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Eroare la restabilirea Linux</translation>
 <translation id="4582563038311694664">Restabilește toate setările</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Cookie-urile de la mai multe site-uri vor fi șterse la ieșire.</translation>
 <translation id="4765582662863429759">Permite Android Messages să retransmită mesaje text din telefonul tău în Chromebook</translation>
 <translation id="4768332406694066911">Ai certificate de la aceste organizații care te identifică</translation>
-<translation id="4772404146526168240">Ambele ecrane</translation>
 <translation id="4776146737004271126">Deschide setările Android</translation>
 <translation id="4776917500594043016">Parolă pentru <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Magazin Play</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Conectează-te pentru a-ți accesa marcajele, istoricul, parolele și alte setări pe toate dispozitivele. În plus, te vei conecta automat la serviciile Google.</translation>
 <translation id="4929386379796360314">Destinații de printare</translation>
 <translation id="4930714375720679147">Activează</translation>
-<translation id="4931132176527519925">Folosește întotdeauna oglindirea</translation>
 <translation id="4932733599132424254">Data</translation>
 <translation id="4933484234309072027">încorporat în <ph name="URL" /></translation>
 <translation id="493571969993549666">Adaugă un utilizator monitorizat</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Activează sunetul</translation>
 <translation id="4992458225095111526">Confirmă Powerwash</translation>
 <translation id="4992473555164495036">Administratorul a limitat metodele de introducere a textului disponibile.</translation>
+<translation id="4992866843815555470">Dispozitivul tău de andocare are nevoie de asistență. Fără un ventilator funcțional, acesta se va închide.</translation>
 <translation id="4992926179187649719">Activează „Ok Google”</translation>
 <translation id="4994474651455208930">Permiteți site-urilor să solicite să aibă rolul de programe asociate prestabilite pentru protocoale</translation>
 <translation id="4994754230098574403">Se configurează</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">ID proces</translation>
 <translation id="5233638681132016545">Filă nouă</translation>
 <translation id="5233736638227740678">&amp;Inserați</translation>
-<translation id="5234764350956374838">Închide</translation>
 <translation id="5235050375939235066">Dezinstalezi aplicația?</translation>
 <translation id="5235750401727657667">Înlocuiește pagina pe care o vezi la deschiderea unei file noi</translation>
 <translation id="5238278114306905396">Aplicația „<ph name="EXTENSION_NAME" />” a fost eliminată automat.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google recomandă Chrome</translation>
 <translation id="532247166573571973">Este posibil ca serverul să nu poată fi accesat. Încearcă din nou mai târziu.</translation>
 <translation id="5324780743567488672">Setează automat fusul orar folosind locația</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – are permisiunea să salveze în fișierele inițiale</translation>
 <translation id="5327248766486351172">Nume</translation>
 <translation id="5327570636534774768">Acest dispozitiv este marcat pentru administrare de un domeniu diferit. Anulează accesul de la domeniul respectiv înainte de a configura modul demo.</translation>
 <translation id="532943162177641444">Atinge notificarea pe <ph name="PHONE_NAME" /> pentru a configura hotspotul mobil care poate fi folosit de acest dispozitiv.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> dorește să</translation>
 <translation id="5534304873398226603">Șterge fotografia sau videoclipul</translation>
 <translation id="5535941515421698170">De asemenea, elimină datele existente de pe acest dispozitiv</translation>
-<translation id="5537725057119320332">Proiectează</translation>
 <translation id="5539221284352502426">Parola pe care ai introdus-o a fost respinsă de server. Motivele posibile includ: parola este prea scurtă; parola trebuie să includă cifre sau simboluri; parola trebuie să fie diferită de parolele anterioare.</translation>
 <translation id="5541687815721799001">Folosește aplicația</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Află mai multe despre accesul la site</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> rezultate pentru „<ph name="SEARCH_TEXT" />”</translation>
 <translation id="6002458620803359783">Vocile preferate</translation>
-<translation id="6005695835120147974">Router media</translation>
 <translation id="6006484371116297560">Tema clasică</translation>
 <translation id="6007240208646052708">Căutarea vocală în limba ta nu este disponibilă.</translation>
 <translation id="6009781704028455063">Senzor încorporat</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Imprimantă nouă în rețea}few{Imprimante noi în rețea}other{Imprimante noi în rețea}}</translation>
 <translation id="6286708577777130801">Detalii privind parolele salvate</translation>
 <translation id="6289452883081499048">Servicii Google personalizate, precum Play</translation>
-<translation id="6290556621549272952">Poți să folosești această funcție pentru a afișa conținut din Chromium pe televizor sau pe alte dispozitive.</translation>
 <translation id="6291949900244949761">Anunță-mă dacă un site vrea să acceseze dispozitive USB (recomandat)</translation>
 <translation id="6291953229176937411">&amp;Afișează în Finder</translation>
 <translation id="6295158916970320988">Toate site-urile</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Trimiteți <ph name="BEGIN_LINK2" />valori<ph name="END_LINK2" /> și <ph name="BEGIN_LINK1" />informații de sistem<ph name="END_LINK1" /></translation>
 <translation id="6396988158856674517">Împiedică site-urile să folosească senzori de mișcare</translation>
 <translation id="6397094776139756010">Opțiuni de sincronizare și personalizare</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> va putea salva modificările direct în fișierele din dosarul următor. Site-ul poate salva modificări numai atunci când această filă este deschisă.</translation>
 <translation id="6398715114293939307">Elimină Magazinul Google Play</translation>
 <translation id="6398765197997659313">Ieși din ecranul complet</translation>
 <translation id="6399774419735315745">Spioană</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">Pe anumite site-uri</translation>
 <translation id="6455894534188563617">Dosar &amp;nou</translation>
 <translation id="6456394469623773452">Bun</translation>
+<translation id="6456955391422100996">Anunțul a fost eliminat.</translation>
 <translation id="645705751491738698">Continuă blocarea JavaScript</translation>
 <translation id="6458701200018867744">Încărcarea nu a reușit (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Folosește selecția pentru a găsi</translation>
 <translation id="6459799433792303855">Fereastra activă a fost mutată pe alt ecran.</translation>
 <translation id="6460601847208524483">Următorul</translation>
+<translation id="6461170143930046705">Se caută rețele...</translation>
 <translation id="6463795194797719782">&amp;Editează</translation>
 <translation id="6466988389784393586">&amp;Deschideți toate marcajele</translation>
 <translation id="6467304607960172345">Optimizează videoclipurile pe ecran complet</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Te-ai conectat la o rețea <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Trimite</translation>
 <translation id="6528513914570774834">Permite altor utilizatori ai dispozitivului să folosească această rețea</translation>
 <translation id="652948702951888897">Istoricul Chrome</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Ritmul</translation>
 <translation id="6681668084120808868">Fotografiază</translation>
 <translation id="6681964764822470072">Aplicația „<ph name="APP_NAME" />” va fi dezinstalată.</translation>
-<translation id="6685083257944113180">Oprește, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Deschide Google Play</translation>
 <translation id="6686490380836145850">Închide filele de la dreapta</translation>
 <translation id="6686817083349815241">Salvați parola</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Deschideți aplicația maximizată</translation>
 <translation id="6845325883481699275">Contribuie la îmbunătățirea securității pentru Chrome</translation>
 <translation id="6848388270925200958">În acest moment ai câteva carduri care pot fi folosite doar pe acest dispozitiv.</translation>
+<translation id="6850286078059909152">Culoarea textului</translation>
 <translation id="6851497530878285708">Aplicația a fost activată</translation>
 <translation id="6853388645642883916">Utilitarul de actualizare este inactiv</translation>
 <translation id="68541483639528434">Închide celelalte file</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Derulează / Dă clic</translation>
 <translation id="6923633482430812883">Eroare la instalarea dispozitivului de stocare în rețea. Te rugăm să verifici dacă serverul de fișiere la care te conectezi acceptă SMBv2 sau versiuni ulterioare.</translation>
 <translation id="6930036377490597025">Cheie de securitate externă sau senzor încorporat</translation>
-<translation id="6930242544192836755">Durată</translation>
 <translation id="693807610556624488">Operațiunea de scriere depășește lungimea maximă a atributului pe: „<ph name="DEVICE_NAME" />”.</translation>
 <translation id="6941937518557314510">Conectează-te pe <ph name="TOKEN_NAME" /> pentru a te autentifica pe <ph name="HOST_NAME" /> cu certificatul.</translation>
 <translation id="6943176775188458830">Anulează printarea</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Handlere pentru plăți</translation>
 <translation id="6951663584153258142">Organizația ta solicită să actualizezi acest dispozitiv</translation>
 <translation id="6953878494808481632">Informații conexe</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fișier: <ph name="FILES" />}few{Fișiere: <ph name="FILES" />}other{Fișiere: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Fereastră pop-up de inspectare</translation>
 <translation id="6957044667612803194">Această cheie de securitate nu acceptă coduri PIN</translation>
 <translation id="6957231940976260713">Nume serviciu</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Pagina nu a putut fi tradusă.</translation>
 <translation id="7254951428499890870">Sigur doriți să lansați „<ph name="APP_NAME" />” în modul de diagnosticare?</translation>
 <translation id="7255002516883565667">În acest moment ai un card care poate fi folosit doar pe acest dispozitiv</translation>
-<translation id="7255220508626648026">Se proiectează: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Atinge cheia de securitate din nou pentru a confirma resetarea. Toate informațiile stocate pe cheia de securitate, inclusiv codul său PIN vor fi șterse.</translation>
 <translation id="7255935316994522020">Aplicați</translation>
 <translation id="7256069762010468647">Site-ul folosește camera foto</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">dezvoltatori</translation>
 <translation id="7456847797759667638">Deschide o locație...</translation>
 <translation id="7458168200501453431">Folosește același verificator ortografic folosit în Căutarea Google. Textul pe care îl introduci în browser este trimis la Google.</translation>
+<translation id="7460045493116006516">Tema actuală pe care ai instalat-o</translation>
 <translation id="7461924472993315131">PIN</translation>
 <translation id="746216226901520237">Data viitoare, telefonul va debloca dispozitivul <ph name="DEVICE_TYPE" />. Poți debloca Smart Lock în Setări.</translation>
 <translation id="7463006580194749499">Adăugați o persoană</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Filă nouă</translation>
 <translation id="7556033326131260574">Smart Lock nu a putut verifica contul tău. Pentru acces, introdu parola.</translation>
 <translation id="7556242789364317684">Din păcate, <ph name="SHORT_PRODUCT_NAME" /> nu vă poate recupera setările. Pentru a remedia eroarea, este necesar ca <ph name="SHORT_PRODUCT_NAME" /> să reseteze dispozitivul utilizând Powerwash.</translation>
+<translation id="7559444627302317199">Verifică-ți conexiunea de rețea și încearcă din nou.</translation>
 <translation id="7559719679815339381">Așteaptă... Aplicația de tip chioșc se actualizează. Nu scoate stickul USB.</translation>
 <translation id="7561196759112975576">Întotdeauna</translation>
 <translation id="7563991800558061108">Pentru recuperarea după această eroare, trebuie să vă conectați la Contul Google
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Dublură</translation>
 <translation id="7887864092952184874">Mouse Bluetooth conectat</translation>
 <translation id="7889565820482017512">Dimensiune de afișare</translation>
-<translation id="7889966925761734854">Caută</translation>
 <translation id="7893008570150657497">să acceseze fotografii, muzică și alte tipuri de conținut media de pe computer;</translation>
 <translation id="7893153962594818789">Conexiunea Bluetooth este dezactivată pe acest dispozitiv <ph name="DEVICE_TYPE" />. Introdu parola și activează Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Prestabilit)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Păstrează în bara de instrumente</translation>
 <translation id="7898725031477653577">Tradu întotdeauna</translation>
 <translation id="790040513076446191">Manipulează setările privind confidențialitatea</translation>
-<translation id="7902874111237641165">Mișcare lină [beta]</translation>
 <translation id="7903345046358933331">Pagina a devenit inactivă. Poți aștepta să devină activă sau o poți închide.</translation>
 <translation id="7903742244674067440">Ai certificate stocate care identifică aceste autorități de certificare</translation>
 <translation id="7903925330883316394">Utilitar: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">Citește tot textul rostit folosind vorbirea sintetizată</translation>
 <translation id="8037357227543935929">Solicită (în mod prestabilit)</translation>
 <translation id="803771048473350947">Fișier</translation>
+<translation id="8042142357103597104">Opacitatea textului</translation>
 <translation id="8044899503464538266">Lent</translation>
 <translation id="8045253504249021590">Sincronizarea a fost oprită prin Tabloul de bord Google.</translation>
 <translation id="8045923671629973368">Introdu ID-ul aplicației sau adresa URL din magazinul web</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Poți dezactiva acest serviciu din Setări.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Codurile PIN nu se potrivesc</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> folosește setările proxy dintr-o extensie</translation>
-<translation id="8099495042588009598">Mai multe permisiuni</translation>
 <translation id="8101987792947961127">Este necesară lansarea Powerwash la următoarea repornire</translation>
 <translation id="8102159139658438129">Accesează <ph name="LINK_BEGIN" />Setări<ph name="LINK_END" /> ca să vezi opțiunile pentru telefonul conectat</translation>
 <translation id="8104696615244072556">Folosește Powerwash pe dispozitivul <ph name="IDS_SHORT_PRODUCT_NAME" /> și revino la versiunea anterioară.</translation>
@@ -4773,8 +4788,10 @@
     Nu cred că acest site ar trebui blocat!</translation>
 <translation id="8184288427634747179">Comută la <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Mai multe informații</translation>
+<translation id="8184472985242519288">Uniform</translation>
 <translation id="8185331656081929126">Afișați notificări când în rețea sunt detectate imprimante noi</translation>
 <translation id="8186609076106987817">Serverul nu a putut găsi fișierul.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> poate citi toate fișierele din următorul dosar. Site-ul poate vedea modificările din dosar numai atunci când această filă este deschisă.</translation>
 <translation id="8188389033983459049">Verifică setările dispozitivului și activează-l pentru a continua</translation>
 <translation id="8190193592390505034">Se conectează la <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Gestionează aplicațiile, extensiile și temele dvs.</translation>
@@ -4878,7 +4895,6 @@
 <translation id="833986336429795709">Pentru a deschide acest link, alege o aplicație</translation>
 <translation id="8342861492835240085">Selectează o colecție</translation>
 <translation id="834290227245955730">PIN nevalid. Număr de reîncercări rămase: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Pentru cea mai bună calitate a videoclipului sau a animației, folosește o lățime de bandă mare. Este posibil ca alte persoane cu conexiuni lente să nu-ți vadă conținutul.</translation>
 <translation id="8351419472474436977">Această extensie a preluat controlul asupra setărilor de proxy, ceea ce înseamnă că poate modifica, întrerupe sau intercepta tot ceea ce faceți online. Dacă nu știți sigur de ce a apărut această modificare, probabil că nu ați aprobat-o.</translation>
 <translation id="8351630282875799764">Bateria nu se încarcă</translation>
 <translation id="835238322900896202">A apărut o eroare în timpul dezinstalării. Te rugăm să dezinstalezi folosind Terminal.</translation>
@@ -4911,9 +4927,11 @@
 <translation id="839736845446313156">Înregistrează</translation>
 <translation id="8398877366907290961">Continuă oricum</translation>
 <translation id="8400146488506985033">Gestionează persoanele</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> poate salva modificări direct în fișierele din dosarul următor. Site-ul poate salva modificări numai atunci când această filă este deschisă.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Mai întâi întreabă (recomandat)</translation>
 <translation id="8418445294933751433">&amp;Afișează ca filă</translation>
+<translation id="8418905021510211421">Această pagină poate citi un dosar de pe dispozitivul tău.</translation>
 <translation id="8419098111404128271">Rezultatele de căutare pentru „<ph name="SEARCH_TEXT" />”</translation>
 <translation id="8419368276599091549">Bun venit pe <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Modificați</translation>
@@ -4933,6 +4951,7 @@
 <translation id="8438566539970814960">Îmbunătățește căutările și navigarea</translation>
 <translation id="8439506636278576865">Oferă-te să traduci paginile în această limbă</translation>
 <translation id="8440630305826533614">Aplicații Linux</translation>
+<translation id="844241640324986723">Nu s-au șters datele de conectare.</translation>
 <translation id="8443338615972234259">Creează acum un cont nou pentru utilizatorul monitorizat.</translation>
 <translation id="8446884382197647889">Află mai multe</translation>
 <translation id="8447409163267621480">Include Ctrl sau Alt</translation>
@@ -4948,8 +4967,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Este posibil ca acest utilizator monitorizat să fi fost șters sau dezactivat de către administrator. Dacă doriți să vă conectați în continuare cu datele acestui utilizator monitorizat, contactați administratorul.</translation>
 <translation id="846374874681391779">Bara de descărcări</translation>
-<translation id="8463807869745732775">"&gt;
-    Date de conectare stocate pe cheia de securitate</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> dezactivat.</translation>
 <translation id="8464132254133862871">Acest cont de utilizator nu este eligibil pentru serviciu.</translation>
 <translation id="8465252176946159372">Nevalid</translation>
@@ -5015,6 +5032,7 @@
 <translation id="8569002732135253578">Acum se printează <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Nu au fost găsite destinații</translation>
 <translation id="8571213806525832805">Ultimele 4 săptămâni</translation>
+<translation id="8573403125070227391">Anunțul folosește prea multe resurse pentru dispozitivul tău, așa că Chrome l-a eliminat.</translation>
 <translation id="8574990355410201600">Permite întotdeauna sunetul pe <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Pentru a ieși, ține apăsată tasta <ph name="KEY_EQUIVALENT" />.</translation>
 <translation id="8578639784464423491">Nu poate depăși 99 de litere</translation>
@@ -5038,13 +5056,13 @@
 <translation id="8609465669617005112">Mutați mai sus</translation>
 <translation id="8610103157987623234">Formatul este incorect, încearcă din nou</translation>
 <translation id="8615618338313291042">Aplicație incognito: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Proiectare umbră</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Stare roaming</translation>
 <translation id="8620765578342452535">Configurează conexiunile la rețea</translation>
 <translation id="8621866727807194849">Ai software dăunător pe computer. Chrome îl elimină, restabilind setările și dezactivând extensiile. Astfel, browserul tău va funcționa normal din nou.</translation>
 <translation id="8621979332865976405">Distribuie întregul ecran</translation>
 <translation id="862542460444371744">&amp;Extensii</translation>
-<translation id="8627151598708688654">Selectează sursa</translation>
 <translation id="862727964348362408">Suspendat</translation>
 <translation id="862750493060684461">Memorie cache CSS</translation>
 <translation id="8627795981664801467">Numai conexiuni sigure</translation>
@@ -5098,6 +5116,7 @@
 <translation id="8688579245973331962">Numele dvs. nu apare?</translation>
 <translation id="8688591111840995413">Parolă greșită</translation>
 <translation id="8688672835843460752">Disponibilă</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Deschide &amp;locația...</translation>
 <translation id="869884720829132584">Meniul aplicațiilor</translation>
 <translation id="869891660844655955">Dată de expirare</translation>
@@ -5261,6 +5280,7 @@
 <translation id="891365694296252935">Trimite date de utilizare și diagnosticare. Momentan, dispozitivul trimite automat date de diagnosticare și de utilizare a dispozitivului și aplicațiilor la Google. Acestea nu vor fi folosite la identificarea copilului și vor ajuta la stabilitatea sistemului, a aplicațiilor și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Această setare este impusă de proprietar. Dacă ai activat setarea Activitatea suplimentară de pe web și din aplicații pentru copilul tău, aceste date pot fi salvate în Contul său Google. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Se încarcă sugestiile</translation>
 <translation id="8916476537757519021">Subcadru incognito: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – poate citi un dosar de pe dispozitivul tău</translation>
 <translation id="8919275547519617350">Pentru a accesa toate parolele pe toate dispozitivele, conectează-te și activează sincronizarea.</translation>
 <translation id="8921366488406707015">Se verifică cheia de securitate…</translation>
 <translation id="8922013791253848639">Permite întotdeauna anunțurile pe acest site</translation>
@@ -5290,7 +5310,6 @@
 <translation id="8965037249707889821">Introduceți parola veche</translation>
 <translation id="8966870118594285808">Redeschide o filă dacă ai închis-o din greșeală</translation>
 <translation id="8967866634928501045">Apasă pe Alt+Shift+A pentru a afișa</translation>
-<translation id="8970203673128054105">Vezi lista cu moduri de proiecție</translation>
 <translation id="89720367119469899">Tasta Esc</translation>
 <translation id="8972513834460200407">Contactați administratorul de rețea, pentru a vă asigura că firewallul nu blochează descărcările de pe serverele Google.</translation>
 <translation id="8973557916016709913">Elimină nivelul de zoom</translation>
@@ -5439,6 +5458,7 @@
 <translation id="9214520840402538427">Hopa! Inițializarea atributelor necesare în momentul instalării a expirat. Contactați reprezentantul dvs. de asistență.</translation>
 <translation id="9214695392875603905">Brioșă</translation>
 <translation id="9215293857209265904">S-a adăugat „<ph name="EXTENSION_NAME" />”</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> îți va putea salva modificările direct în următorul fișier. Site-ul poate salva modificări numai atunci când această filă este deschisă.</translation>
 <translation id="9218430445555521422">Setează ca prestabilit</translation>
 <translation id="9219103736887031265">Imagini</translation>
 <translation id="9220525904950070496">Eliminați contul</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index e1a5444..61a1d1a9 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Не удалось запустить виртуальную машину. Повторите попытку.</translation>
 <translation id="1089439967362294234">Сменить пароль</translation>
 <translation id="1090126737595388931">Нет приложений, работающих в фоновом режиме</translation>
+<translation id="1090290614672149983">Сохранять изменения в исходный файл?</translation>
 <translation id="1090918500949388876">Чтобы обратиться к Ассистенту, включите экран и скажите "Окей, Google".</translation>
 <translation id="1091767800771861448">Чтобы отменить обновление, нажмите Esc (только для неофициальных версий).</translation>
 <translation id="1093457606523402488">Доступные сети:</translation>
 <translation id="1094607894174825014">Поступил запрос на чтение или запись с недействительным смещением на устройстве <ph name="DEVICE_NAME" />.</translation>
 <translation id="1097658378307015415">Сначала войдите как гость, чтобы активировать работу сети <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Изменения на этой вкладке можно сохранять в исходных файлах</translation>
 <translation id="1103523840287552314">Всегда переводить <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Остановить</translation>
 <translation id="1110155001042129815">Подождать</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Солнцезащитные очки</translation>
 <translation id="1151917987301063366">Всегда разрешать сайту <ph name="HOST" /> использовать датчики</translation>
 <translation id="1153356358378277386">Сопряженные устройства</translation>
-<translation id="1156488781945104845">Текущее время</translation>
 <translation id="1161575384898972166">Чтобы экспортировать сертификат клиента, войдите в <ph name="TOKEN_NAME" />.</translation>
 <translation id="1163931534039071049">&amp;Просмотр кода фрейма</translation>
 <translation id="1164674268730883318">Отключить Smart Lock для устройства <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Настройки хранилища Adobe Flash Player</translation>
 <translation id="1274997165432133392">Файлы cookie и другие данные сайтов</translation>
 <translation id="127668050356036882">Закрыть все окна</translation>
-<translation id="1277908057200820621">Просмотреть список устройств</translation>
 <translation id="1280820357415527819">Поиск мобильных сетей...</translation>
 <translation id="1285320974508926690">Никогда не переводить этот сайт</translation>
 <translation id="1285484354230578868">Сохранение данных на вашем Google Диске</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Домашняя сеть, без роуминга</translation>
 <translation id="1316136264406804862">Поиск...</translation>
 <translation id="1316495628809031177">Синхронизация приостановлена.</translation>
+<translation id="1317637799698924700">Док-станция будет работать в режиме совместимости с USB Type-C.</translation>
 <translation id="1322046419516468189">Просматривать сохраненные пароли и управлять ими можно на странице <ph name="SAVED_PASSWORDS_STORE" />.</translation>
 <translation id="1326317727527857210">Чтобы получить доступ к вкладкам на всех ваших устройствах, войдите в Chrome.</translation>
 <translation id="1327074568633507428">Принтер, подключенный к Виртуальному принтеру Google</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Браузер находится под управлением<ph name="END_LINK" /> домена <ph name="ENROLLMENT_DOMAIN" />.</translation>
 <translation id="1366177842110999534">Запускайте инструменты, редакторы и интегрированные среды разработки Linux на устройстве <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Подробнее…&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Выберите файл</translation>
+<translation id="1370749010280229230">Обнаружена проблема с дисплеем, подключенным к док-станции</translation>
 <translation id="1371301976177520732">Синхронизируйте закладки, пароли, историю и другие данные на всех ваших устройствах.</translation>
 <translation id="1372841398847029212">Синхронизировать с моим аккаунтом</translation>
 <translation id="1374844444528092021">Сертификат, запрашиваемый сетью <ph name="NETWORK_NAME" />, не установлен или уже не действителен. Получите новый и попробуйте подключиться еще раз.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Веб-страница, один файл</translation>
 <translation id="1451917004835509682">Добавить управляемый профиль</translation>
 <translation id="1454223536435069390">С&amp;делать снимок экрана</translation>
+<translation id="1458243790901188746">{0,plural, =1{Папка: <ph name="DIRECTORIES" />}one{Папки: <ph name="DIRECTORIES" />}few{Папки: <ph name="DIRECTORIES" />}many{Папки: <ph name="DIRECTORIES" />}other{Папки: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Поисковые системы, добавленные расширениями</translation>
 <translation id="146000042969587795">Этот фрейм заблокирован, поскольку он содержит небезопасные элементы.</translation>
 <translation id="146219525117638703">Статус ONC</translation>
@@ -443,6 +446,7 @@
 <translation id="1650371550981945235">Показывать параметры ввода</translation>
 <translation id="1651008383952180276">Необходимо дважды ввести одну кодовую фразу</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Добавьте принтер в приложение "Google Виртуальный принтер" и печатайте документы с любого устройства.}one{Добавьте # принтер в приложение "Google Виртуальный принтер" и печатайте документы с любого устройства.}few{Добавьте # принтера в приложение "Google Виртуальный принтер" и печатайте документы с любого устройства.}many{Добавьте # принтеров в приложение "Google Виртуальный принтер" и печатайте документы с любого устройства.}other{Добавьте # принтера в приложение "Google Виртуальный принтер" и печатайте документы с любого устройства.}}</translation>
+<translation id="1656528038316521561">Прозрачность фона</translation>
 <translation id="1657406563541664238">Автоматическая отправка в Google статистики использования и отчетов о сбоях с целью улучшения <ph name="PRODUCT_NAME" /></translation>
 <translation id="1658424621194652532">Этой странице разрешен доступ к вашему микрофону</translation>
 <translation id="1660204651932907780">Разрешить сайтам воспроизводить звуки (рекомендуется)</translation>
@@ -458,6 +462,7 @@
 <translation id="1673137583248014546">Сайт <ph name="URL" /> запрашивает доступ к производителю и модели вашего Электронного ключа</translation>
 <translation id="1679068421605151609">Инструменты разработчика</translation>
 <translation id="1679806121152819234">Плагин ВМ</translation>
+<translation id="1679810534535368772">Закрыть страницу?</translation>
 <translation id="167983332380191032">От сервиса управления получен недействительный код HTTP.</translation>
 <translation id="1680849702532889074">В процессе установки приложения для Linux произошла ошибка.</translation>
 <translation id="16815041330799488">Не предоставлять сайтам доступ к тексту и изображениям, скопированным в буфер обмена</translation>
@@ -509,6 +514,7 @@
 <translation id="1746402432151920942">Идентификатор защищенного мультимедийного контента</translation>
 <translation id="175196451752279553">От&amp;крыть закрытую вкладку</translation>
 <translation id="1753905327828125965">Наиболее посещаемые</translation>
+<translation id="1755601632425835748">Размер шрифта</translation>
 <translation id="1756681705074952506">Способ ввода</translation>
 <translation id="1757301747492736405">Ожидание удаления…</translation>
 <translation id="175772926354468439">Включить тему</translation>
@@ -628,6 +634,7 @@
 <translation id="1918141783557917887">&amp;Мельче</translation>
 <translation id="1919345977826869612">Реклама</translation>
 <translation id="1919814239594435008">Доступ к плагинам вне тестовой среды разрешен</translation>
+<translation id="1920390473494685033">Контакты</translation>
 <translation id="1921050530041573580">Подключите телефон с приложением "Сообщения"</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Технологии Google в <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -784,6 +791,7 @@
 <translation id="2177950615300672361">Вкладка в режиме инкогнито: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Плагин <ph name="PEPPER_PLUGIN_NAME" /> в домене <ph name="PEPPER_PLUGIN_DOMAIN" /> пытается получить доступ к вашему компьютеру.</translation>
 <translation id="2178614541317717477">Скомпрометированный ЦС</translation>
+<translation id="2179849162388791084">Не удалось получить учетные данные с электронного ключа.</translation>
 <translation id="218070003709087997">Укажите цифрами число копий для печати (от 1 до 999).</translation>
 <translation id="2184515124301515068">Разрешить браузеру определять, на каких сайтах можно воспроизводить звук (рекомендуется)</translation>
 <translation id="2187895286714876935">Ошибка при импорте сертификата сервера</translation>
@@ -862,7 +870,6 @@
 <translation id="2277255602909579701">Все файлы cookie и данные сайта</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Скопирован 1 объект}one{Скопирован # объект}few{Скопировано # объекта}many{Скопировано # объектов}other{Скопировано # объекта}}</translation>
 <translation id="2278562042389100163">Открыть окно браузера</translation>
-<translation id="2279874276457403668">Нельзя создавать более одного сеанса за раз.</translation>
 <translation id="2280486287150724112">Правое поле</translation>
 <translation id="2282146716419988068">Процесс GPU</translation>
 <translation id="2282155092769082568">URL автоматической настройки:</translation>
@@ -915,7 +922,6 @@
 <translation id="2352810082280059586">Заметки, созданные на заблокированном экране, автоматически сохраняются в приложении "<ph name="LOCK_SCREEN_APP_NAME" />". Самая последняя заметка остается на заблокированном экране.</translation>
 <translation id="2353297238722298836">Доступ к камере и микрофону разрешен</translation>
 <translation id="2356070529366658676">Спрашивать</translation>
-<translation id="2357949918965361754">Транслируйте контент из Chrome на телевизор и другие устройства.</translation>
 <translation id="2359345697448000899">Управлять расширениями можно на вкладке "Расширения" в меню "Инструменты".</translation>
 <translation id="2359808026110333948">Продолжить</translation>
 <translation id="236117173274098341">Оптимизировать</translation>
@@ -963,6 +969,7 @@
 <translation id="2436720498717686157">Ваша организация просит вас обновить ПО на этом устройстве прямо сейчас.</translation>
 <translation id="2439545803278355377">Введите новый PIN-код. Он должен состоять из четырех или более знаков и может содержать буквы, цифры и другие символы.</translation>
 <translation id="2440604414813129000">Просмотреть и&amp;сходный код</translation>
+<translation id="2442916515643169563">Тень текста</translation>
 <translation id="2444119669991608829">Язык страницы не <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Требуется корневой каталог расширения.</translation>
 <translation id="2445484935443597917">Создать профиль</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Не позже</translation>
 <translation id="2739191690716947896">Отладка</translation>
 <translation id="2739240477418971307">Изменение настроек специальных возможностей</translation>
+<translation id="274029851662193272">Утопленная</translation>
 <translation id="2740393541869613458">проверка сайтов, посещенных пользователем контролируемого аккаунта, и</translation>
 <translation id="2741912629735277980">Отображать интерфейс на экране входа в систему</translation>
 <translation id="274290345632688601">Восстановление приложений и файлов Linux…</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Ярлык уже добавлен</translation>
 <translation id="2807517655263062534">Скачанные файлы появятся здесь</translation>
 <translation id="2809586584051668049">и ещё <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt не поддерживается</translation>
 <translation id="2812944337881233323">Выйдите из Chrome и снова войдите в систему</translation>
 <translation id="2812989263793994277">Не показывать</translation>
 <translation id="281390819046738856">Не удалось подписать запрос.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Поставщик</translation>
 <translation id="2844169650293029770">Устройство USB-C (ближний порт слева)</translation>
 <translation id="2845382757467349449">Всегда показывать панель закладок</translation>
-<translation id="2847759467426165163">Выберите устройство</translation>
 <translation id="284805635805850872">Удалить вредоносное ПО?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Ошибка очистки</translation>
@@ -1297,6 +1305,7 @@
     Сообщение сервера: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Добавление галереи мультимедиа из папки</translation>
 <translation id="2910318910161511225">Подключитесь к сети и повторите попытку.</translation>
+<translation id="2910518940971897750">Сохранять в исходном файле</translation>
 <translation id="2913331724188855103">Разрешить сайтам сохранять и читать файлы cookie (рекомендуется)</translation>
 <translation id="2915102088417824677">Показать журнал активности</translation>
 <translation id="2915873080513663243">Автосканирование</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI-устройства</translation>
 <translation id="3015639418649705390">Перезапустить</translation>
 <translation id="3016329696181678353">Не удалось автоматически настроить принтер "<ph name="PRINTER_NAME" />". Задайте дополнительные параметры.</translation>
+<translation id="3016381065346027039">Записи в журнале отсутствуют.</translation>
 <translation id="3016641847947582299">Компонент обновлен</translation>
 <translation id="3016780570757425217">доступ к данным о вашем местоположении</translation>
 <translation id="3017079585324758401">Фон</translation>
 <translation id="3020183492814296499">Ярлыки</translation>
 <translation id="3020990233660977256">Серийный номер: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Бабочка</translation>
+<translation id="3021408157810018664">Сохранять изменения в исходные файлы?</translation>
 <translation id="3021426244864538700">Есть доступ к данным этого сайта</translation>
 <translation id="3021678814754966447">Просмотр кода фрейма</translation>
 <translation id="3022978424994383087">Повторите ещё раз.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Можно пропустить это действие и начать <ph name="LINK_START" />гостевой сеанс<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Сайту предоставлен доступ к видеовходу</translation>
 <translation id="3177909033752230686">Язык страницы:</translation>
+<translation id="3179982752812949580">Шрифт текста</translation>
 <translation id="3181954750937456830">Безопасный просмотр (защищает вас и ваше устройство от опасных сайтов)</translation>
 <translation id="3182749001423093222">Проверка правописания</translation>
 <translation id="3183139917765991655">Импорт профилей</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Открыть в отдельном окне</translation>
 <translation id="3278001907972365362">Требуются действия в аккаунте Google.</translation>
 <translation id="3279230909244266691">Подождите несколько минут. Запуск виртуальной машины…</translation>
-<translation id="3279741024917655738">Где показывать полноэкранные видео</translation>
 <translation id="3280237271814976245">Сохранить &amp;как...</translation>
 <translation id="3280243678470289153">Продолжить в Chrome</translation>
 <translation id="3281892622610078515">Файлы и программы, которые будут отправлены в карантин:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Ничего не найдено</translation>
 <translation id="3305389145870741612">Форматирование займет несколько секунд. Подождите.</translation>
 <translation id="3305661444342691068">Открыть PDF для просмотра</translation>
-<translation id="3306684685104080068">Включите трансляцию в облачных сервисах, таких как Google Hangouts.</translation>
+<translation id="3307871847038842490">Изменения на этой странице можно сохранять в исходных файлах</translation>
 <translation id="3308006649705061278">Подразделение (OU)</translation>
 <translation id="3308116878371095290">Попытка сохранить файл cookie заблокирована.</translation>
 <translation id="3308134619352333507">Скрыть кнопку</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Отменить создание аккаунта?</translation>
 <translation id="3464012987031883895">Сайту предоставлен доступ к аудиовходу</translation>
 <translation id="346431825526753">Этим детским аккаунтом управляет <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Режимы трансляции аудио- и видеофайлов</translation>
 <translation id="3468999815377931311">Телефон Android</translation>
 <translation id="3470442499439619530">Удалить профиль</translation>
 <translation id="3473479545200714844">Лупа</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Уменьшить</translation>
 <translation id="3497560059572256875">Поделиться дудлом</translation>
 <translation id="3505030558724226696">Запретить доступ к устройствам</translation>
+<translation id="3505635633742443645">Вы не можете использовать порт HDMI рабочей станции, когда в качестве видеовыхода подключен порт USB Type-C. В этом случае мы рекомендуем применять другой порт для одного из дисплеев.</translation>
 <translation id="3507421388498836150">Текущие разрешения расширения "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Повторите поиск устройств Bluetooth</translation>
 <translation id="3508920295779105875">Выбрать другую папку...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Установлено</translation>
 <translation id="3578594933904494462">К контенту на этой вкладке открыт общий доступ</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; хочет открыть доступ к принтеру &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; для вашей группы &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Если вы примете приглашение, то все участники группы смогут пользоваться этим принтером.</translation>
+<translation id="357889014807611375">Wi-Fi с тарификацией</translation>
 <translation id="3584169441612580296">Доступ к фотографиям, музыке и другим медиафайлам на вашем компьютере, а также их изменение</translation>
 <translation id="3587482841069643663">Все</translation>
 <translation id="358796204584394954">Для подключения введите следующий код на устройстве <ph name="DEVICE_NAME" />:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Войти</translation>
 <translation id="3593965109698325041">Ограничения имени сертификата</translation>
 <translation id="3596235046596950091">Включить облачные сервисы</translation>
+<translation id="3599221874935822507">Приподнятая</translation>
 <translation id="3599863153486145794">Удаление истории со всех устройств, на которых выполнен вход в аккаунт. Информация о других ваших действиях в Интернете может также храниться на странице <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Информация о веб-запросе</translation>
 <translation id="3600792891314830896">Отключить звуки на сайтах</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Скачано с помощью расширения &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Показать папку "<ph name="FOLDER_NAME" />"</translation>
 <translation id="3613422051106148727">&amp;Открыть в новой вкладке</translation>
+<translation id="3615073365085224194">Приложите палец к сканеру отпечатков пальцев.</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3616741288025931835">Очистить данные просмотров...</translation>
 <translation id="3617891479562106823">Фоновые изображения недоступны. Повторите попытку позже.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Главная страница</translation>
 <translation id="3720996970802414353">Изменить</translation>
 <translation id="3722108462506185496">Не удалось запустить сервис виртуальной машины. Повторите попытку.</translation>
-<translation id="3723158278575423087">Добро пожаловать в Cast для Chromium!</translation>
 <translation id="3725367690636977613">стр.</translation>
 <translation id="3726137731714254362">Удаление папок из этого списка повлечет только прекращение доступа к ним, но не удаление самих файлов.</translation>
 <translation id="3727148787322499904">Изменение этого параметра повлияет на все общие сети</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Подробная информация о сборке</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Доступно 1 USB-устройство}one{Доступно # USB-устройство}few{Доступно # USB-устройства}many{Доступно # USB-устройств}other{Доступно # USB-устройства}}</translation>
 <translation id="3765246971671567135">Не удалось прочитать политику работы офлайн в демонстрационном режиме.</translation>
-<translation id="3766223500670287046">На другом устройстве</translation>
 <translation id="3768037234834996183">Синхронизация настроек...</translation>
 <translation id="377050016711188788">Мороженое</translation>
 <translation id="3771294271822695279">Видеофайлы</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Коснитесь несколько раз</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхронизация приостановлена</translation>
-<translation id="3862134173397075045">Добро пожаловать в Cast для Chrome!</translation>
 <translation id="3862693525629180217">Подтвердить с помощью встроенного датчика</translation>
 <translation id="3862788408946266506">Приложения, у которых в манифесте есть атрибут kiosk_only, можно устанавливать только в режиме киоска</translation>
 <translation id="3865414814144988605">Разрешение</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smart Lock – телефон заменен</translation>
 <translation id="3927932062596804919">Запретить</translation>
 <translation id="3930737994424905957">Поиск устройств…</translation>
+<translation id="3930968231047618417">Цвет фона</translation>
 <translation id="3933283459331715412">Восстановить пароль пользователя <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Открыть аудиозапись на новой вкладке</translation>
 <translation id="3936925983113350642">Выбранный пароль будет необходим для последующего восстановления этого сертификата. Сохраните его в безопасном месте.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Импортированные из IE</translation>
 <translation id="3950820424414687140">Вход</translation>
+<translation id="3950828138786918475">У этой вкладки есть доступ на чтение к папке на вашем устройстве</translation>
 <translation id="3954354850384043518">Скачивание…</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> × <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Гц)</translation>
 <translation id="3954953195017194676">Не обнаружено недавно сохраненных журналов событий WebRTC.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Вычисление…</translation>
 <translation id="3975565978598857337">Не удалось связаться с областью сервера.</translation>
 <translation id="397703832102027365">Завершение…</translation>
+<translation id="3977886311744775419">Скачать обновления в вашей сети можно только вручную.</translation>
 <translation id="3979395879372752341">Добавлено новое расширение (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Включить <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Введен недействительный тип сохранения.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Включить нажатие от прикосновения</translation>
 <translation id="4195643157523330669">Открыть в новой вкладке</translation>
 <translation id="4195814663415092787">Ранее открытые вкладки</translation>
+<translation id="4197940474316761015">Когда эта вкладка открыта, <ph name="ORIGIN" /> может напрямую сохранять изменения в следующих файлах:</translation>
 <translation id="4198146608511578238">Чтобы поговорить с Google Ассистентом, просто удерживайте значок панели запуска.</translation>
 <translation id="4200689466366162458">Специальные слова</translation>
 <translation id="4200983522494130825">Новая &amp;вкладка</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Автоматически подключаться к мобильной сети</translation>
 <translation id="4268025649754414643">Шифрование ключей</translation>
 <translation id="4270393598798225102">Версия <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Ничего не найдено</translation>
 <translation id="4275663329226226506">Камера и микрофон </translation>
 <translation id="4275830172053184480">Перезапуск устройства</translation>
 <translation id="4278101229438943600">Ассистент готов к работе!</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Процессорное время</translation>
 <translation id="4534661889221639075">Повторите попытку.</translation>
 <translation id="4535127706710932914">Профиль по умолчанию</translation>
+<translation id="4535767533210902251">Сканер отпечатков пальцев – это клавиша в правом верхнем углу клавиатуры. Слегка коснитесь ее любым пальцем.</translation>
 <translation id="4538684596480161368">Всегда блокировать плагины вне тестовой среды на сайте <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Установлено в соответствии с корпоративным правилом.</translation>
 <translation id="4542520061254486227">Просмотр данных на сайтах <ph name="WEBSITE_1" /> и <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Ещё...</translation>
 <translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Подключение устройства Bluetooth</translation>
+<translation id="4578012756826807359">Ваши учетные данные удалены.</translation>
 <translation id="4579581181964204535">Трансляция с сайта <ph name="HOST_NAME" /> невозможна</translation>
 <translation id="4581774856936278355">Не удалось восстановить данные Linux</translation>
 <translation id="4582563038311694664">Сбросить все настройки</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Файлы cookie с нескольких сайтов будут удалены при завершении сеанса.</translation>
 <translation id="4765582662863429759">Позволяет приложению "Android Сообщения" ретранслировать сообщения с вашего телефона на Chromebook</translation>
 <translation id="4768332406694066911">У вас есть идентифицирующие вас сертификаты этих организаций</translation>
-<translation id="4772404146526168240">На обоих устройствах</translation>
 <translation id="4776146737004271126">Открыть настройки Android</translation>
 <translation id="4776917500594043016">Пароль для адреса электронной почты <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Маркет</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Войдите в аккаунт, чтобы синхронизировать закладки, историю, пароли и другие настройки на всех устройствах. Одновременно будет выполнена авторизация в сервисах Google.</translation>
 <translation id="4929386379796360314">Места назначения печати</translation>
 <translation id="4930714375720679147">Включить</translation>
-<translation id="4931132176527519925">Всегда дублировать изображение</translation>
 <translation id="4932733599132424254">Дата</translation>
 <translation id="4933484234309072027">встроен в <ph name="URL" /></translation>
 <translation id="493571969993549666">Создать контролируемый профиль</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Включить звук</translation>
 <translation id="4992458225095111526">Подтверждение Powerwash</translation>
 <translation id="4992473555164495036">Администратор запретил некоторые способы ввода.</translation>
+<translation id="4992866843815555470">Вашей док-станции требуется ремонт. Без работающего вентилятора она будет автоматически выключаться.</translation>
 <translation id="4992926179187649719">Включите функцию "Окей, Google"</translation>
 <translation id="4994474651455208930">Разрешить запрашивать установку обработчиков протоколов для сайтов по умолчанию</translation>
 <translation id="4994754230098574403">Настройка</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">Идентификатор процесса</translation>
 <translation id="5233638681132016545">Новая вкладка</translation>
 <translation id="5233736638227740678">&amp;Вставить</translation>
-<translation id="5234764350956374838">Закрыть</translation>
 <translation id="5235050375939235066">Удалить приложение?</translation>
 <translation id="5235750401727657667">Замена страницы, которая появляется на новой вкладке</translation>
 <translation id="5238278114306905396">Приложение "<ph name="EXTENSION_NAME" />" автоматически удалено.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google рекомендует браузер Chrome</translation>
 <translation id="532247166573571973">Сервер недоступен. Повторите попытку позже.</translation>
 <translation id="5324780743567488672">Автоматически определять часовой пояс на основе геоданных</translation>
+<translation id="5327129740973624286">Изменения, произведенные в <ph name="WINDOW_TITLE" />, можно сохранять в исходных файлах</translation>
 <translation id="5327248766486351172">Название</translation>
 <translation id="5327570636534774768">Это устройство находится под управлением другого домена. Отключите это соединение, прежде чем настроить демонстрационный режим.</translation>
 <translation id="532943162177641444">Откройте уведомление на телефоне <ph name="PHONE_NAME" />, чтобы настроить точку доступа, к которой сможет подключиться это устройство.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985">Сайт <ph name="SITE_NAME" /> запрашивает разрешение на:</translation>
 <translation id="5534304873398226603">Удалить фото или видео</translation>
 <translation id="5535941515421698170">Удалить данные с этого устройства</translation>
-<translation id="5537725057119320332">Cast</translation>
 <translation id="5539221284352502426">Сервер отклонил введенный пароль. Помните, что пароль должен отличаться от предыдущих паролей и содержать необходимое количество цифр и символов.</translation>
 <translation id="5541687815721799001">Использовать приложение</translation>
 <translation id="5542132724887566711">Профиль</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Подробнее о доступе для сайта…</translation>
 <translation id="6000758707621254961">Количество результатов поиска по запросу "<ph name="SEARCH_TEXT" />": <ph name="RESULT_COUNT" /></translation>
 <translation id="6002458620803359783">Голоса по умолчанию</translation>
-<translation id="6005695835120147974">Медиамаршрутизатор</translation>
 <translation id="6006484371116297560">Классическая</translation>
 <translation id="6007240208646052708">Голосовой поиск на вашем языке недоступен.</translation>
 <translation id="6009781704028455063">Встроенный датчик</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Новый принтер в сети}one{Новые принтеры в сети}few{Новые принтеры в сети}many{Новые принтеры в сети}other{Новые принтеры в сети}}</translation>
 <translation id="6286708577777130801">Данные сохраненного пароля</translation>
 <translation id="6289452883081499048">Вам доступна персонализация сервисов Google (например, Google Play).</translation>
-<translation id="6290556621549272952">Транслируйте контент из Chromium на телевизор и другие устройства.</translation>
 <translation id="6291949900244949761">Запрашивать мое разрешение на доступ сайтов к USB-устройствам (рекомендуется)</translation>
 <translation id="6291953229176937411">Показать в Finder</translation>
 <translation id="6295158916970320988">Все сайты</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Отправлять <ph name="BEGIN_LINK1" />сведения о системе<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />значения показателей<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Запретить сайтам использовать датчики движения</translation>
 <translation id="6397094776139756010">Настройки синхронизации и персонализации</translation>
+<translation id="6397449385184089588">Когда эта вкладка открыта, <ph name="ORIGIN" /> сможет напрямую сохранять изменения в файлы указанной ниже папки.</translation>
 <translation id="6398715114293939307">Удалить Google Play Маркет</translation>
 <translation id="6398765197997659313">Обычный режим</translation>
 <translation id="6399774419735315745">Шпион</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">На выбранных сайтах</translation>
 <translation id="6455894534188563617">&amp;Новая папка</translation>
 <translation id="6456394469623773452">Хороший</translation>
+<translation id="6456955391422100996">Объявление удалено.</translation>
 <translation id="645705751491738698">Всегда блокировать JavaScript</translation>
 <translation id="6458701200018867744">Ошибка загрузки (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Найти выделенное</translation>
 <translation id="6459799433792303855">Активное окно перемещено на другой экран.</translation>
 <translation id="6460601847208524483">Найти след.</translation>
+<translation id="6461170143930046705">Поиск сетей…</translation>
 <translation id="6463795194797719782">&amp;Изменить</translation>
 <translation id="6466988389784393586">&amp;Открыть все закладки</translation>
 <translation id="6467304607960172345">Оптимизация полноэкранного видео</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Вы подключены к следующему типу сети: <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Поделиться</translation>
 <translation id="6528513914570774834">Предоставить другим пользователям устройства доступ к этой сети</translation>
 <translation id="652948702951888897">История Chrome</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Скорость речи</translation>
 <translation id="6681668084120808868">Сфотографировать</translation>
 <translation id="6681964764822470072">Приложение "<ph name="APP_NAME" />" будет удалено.</translation>
-<translation id="6685083257944113180">Остановить устройство "<ph name="SINK_NAME" />", текущий статус: <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Открыть Google Play</translation>
 <translation id="6686490380836145850">Закрыть вкладки справа</translation>
 <translation id="6686817083349815241">Сохранить пароль</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Развернуть</translation>
 <translation id="6845325883481699275">Помочь Chrome стать ещё безопаснее</translation>
 <translation id="6848388270925200958">Сейчас некоторые из ваших карт можно использовать только на этом устройстве</translation>
+<translation id="6850286078059909152">Цвет текста</translation>
 <translation id="6851497530878285708">Приложение включено</translation>
 <translation id="6853388645642883916">Программа обновлений перешла в спящий режим</translation>
 <translation id="68541483639528434">Закрыть другие вкладки</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Прокрутить/нажать</translation>
 <translation id="6923633482430812883">Ошибка. Убедитесь, что файловый сервер, к которому вы пытаетесь подключиться, поддерживает протокол SMB версии 2 или выше.</translation>
 <translation id="6930036377490597025">Внешний электронный ключ или встроенный датчик</translation>
-<translation id="6930242544192836755">Продолжительность</translation>
 <translation id="693807610556624488">При записи данных на устройстве <ph name="DEVICE_NAME" /> превышена максимальная длина атрибута.</translation>
 <translation id="6941937518557314510">Войдите в <ph name="TOKEN_NAME" />, чтобы авторизоваться на <ph name="HOST_NAME" /> при помощи своего сертификата.</translation>
 <translation id="6943176775188458830">Отменить печать</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Обработчики платежей</translation>
 <translation id="6951663584153258142">Ваша организация просит вас обновить ПО на этом устройстве.</translation>
 <translation id="6953878494808481632">Информация по теме</translation>
+<translation id="6953916367503892689">{0,plural, =1{Файл: <ph name="FILES" />}one{Файлы: <ph name="FILES" />}few{Файлы: <ph name="FILES" />}many{Файлы: <ph name="FILES" />}other{Файлы: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Просмотр всплывающего окна</translation>
 <translation id="6957044667612803194">Электронный ключ не поддерживает PIN-коды.</translation>
 <translation id="6957231940976260713">Название службы</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Не удалось перевести страницу</translation>
 <translation id="7254951428499890870">Запустить приложение "<ph name="APP_NAME" />" в режиме диагностики?</translation>
 <translation id="7255002516883565667">Сейчас вашу карту можно использовать только на этом устройстве</translation>
-<translation id="7255220508626648026">Трансляция: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Чтобы подтвердить сброс, нажмите кнопку на электронном ключе ещё раз. Все данные, сохраненные на нем, включая PIN-код, будут удалены.</translation>
 <translation id="7255935316994522020">Применить</translation>
 <translation id="7256069762010468647">Сайт использует камеру</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">для разработчиков</translation>
 <translation id="7456847797759667638">Открыть адрес...</translation>
 <translation id="7458168200501453431">Используется та же технология проверки правописания, что и в Google Поиске. Текст, который вы введете в браузере, будет отправлен в Google.</translation>
+<translation id="7460045493116006516">Тема, которая у вас установлена.</translation>
 <translation id="7461924472993315131">Закрепить</translation>
 <translation id="746216226901520237">После этого вы сможете разблокировать устройство <ph name="DEVICE_TYPE" /> с помощью телефона. Выключить Smart Lock можно в настройках.</translation>
 <translation id="7463006580194749499">Добавить пользователя</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Новая вкладка</translation>
 <translation id="7556033326131260574">Не удается войти в аккаунт с помощью Smart Lock. Введите пароль.</translation>
 <translation id="7556242789364317684">К сожалению, <ph name="SHORT_PRODUCT_NAME" /> не удалось восстановить ваши настройки. Чтобы исправить ошибку, <ph name="SHORT_PRODUCT_NAME" /> должен выполнить сброс данных на устройстве с помощью функции Powerwash.</translation>
+<translation id="7559444627302317199">Проверьте подключение к Интернету и повторите попытку.</translation>
 <translation id="7559719679815339381">Идет обновление киоск-приложения... Не извлекайте USB-накопитель.</translation>
 <translation id="7561196759112975576">Всегда</translation>
 <translation id="7563991800558061108">Чтобы решить эту проблему, войдите в свой аккаунт Google
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Дублировать</translation>
 <translation id="7887864092952184874">Bluetooth-мышь подключена</translation>
 <translation id="7889565820482017512">Масштаб изображения на экране</translation>
-<translation id="7889966925761734854">Перемотка</translation>
 <translation id="7893008570150657497">Доступ к фотографиям, музыке и другим медиафайлам на вашем компьютере</translation>
 <translation id="7893153962594818789">На устройстве <ph name="DEVICE_TYPE" /> отключен Bluetooth. Введите пароль и включите Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (по умолчанию)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Сохранить на панели инструментов</translation>
 <translation id="7898725031477653577">Всегда переводить</translation>
 <translation id="790040513076446191">Управление настройками конфиденциальности</translation>
-<translation id="7902874111237641165">Плавное движение (бета)</translation>
 <translation id="7903345046358933331">Страница перестала отвечать на запросы. Вы можете подождать от нее ответа или закрыть.</translation>
 <translation id="7903742244674067440">У вас есть сертификаты, которые идентифицируют эти центры сертификации</translation>
 <translation id="7903925330883316394">Утилита: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">Доступ к тексту, произнесенному синтезатором речи</translation>
 <translation id="8037357227543935929">Спрашивать (по умолчанию)</translation>
 <translation id="803771048473350947">Файл</translation>
+<translation id="8042142357103597104">Прозрачность текста</translation>
 <translation id="8044899503464538266">Медленно</translation>
 <translation id="8045253504249021590">Синхронизация остановлена через Личный кабинет Google.</translation>
 <translation id="8045923671629973368">Введите идентификатор приложения или URL интернет-магазина</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Вы можете отключить эту функцию в настройках.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN-коды не совпадают</translation>
 <translation id="809792523045608178">В <ph name="IDS_SHORT_PRODUCT_NAME" /> используются настройки прокси-сервера из расширения.</translation>
-<translation id="8099495042588009598">Другие разрешения</translation>
 <translation id="8101987792947961127">При следующей перезагрузке устройства необходимо выполнить Powerwash</translation>
 <translation id="8102159139658438129">Чтобы открыть параметры подключенного телефона, перейдите в <ph name="LINK_BEGIN" />Настройки<ph name="LINK_END" />.</translation>
 <translation id="8104696615244072556">Воспользуйтесь функцией Powerwash на устройстве <ph name="IDS_SHORT_PRODUCT_NAME" /> и вернитесь к предыдущей версии.</translation>
@@ -4772,8 +4787,10 @@
     Не нужно блокировать этот сайт.</translation>
 <translation id="8184288427634747179">Переключиться на профиль <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Подробнее</translation>
+<translation id="8184472985242519288">Без объема</translation>
 <translation id="8185331656081929126">Показывать уведомления о новых принтерах в сети</translation>
 <translation id="8186609076106987817">Этот файл отсутствует на сервере.</translation>
+<translation id="8187950680397073878">Когда эта вкладка открыта, у <ph name="ORIGIN" /> появляется доступ на чтение ко всем файлам в указанной ниже папке.</translation>
 <translation id="8188389033983459049">Чтобы продолжить, проверьте настройки устройства и включите Bluetooth.</translation>
 <translation id="8190193592390505034">Соединение с <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Управление приложениями, расширениями и темами</translation>
@@ -4877,7 +4894,6 @@
 <translation id="833986336429795709">Чтобы открыть ссылку, выберите приложение</translation>
 <translation id="8342861492835240085">Выберите коллекцию</translation>
 <translation id="834290227245955730">Недействительный PIN-код. Осталось попыток: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Используйте для видеосвязи канал с высокой пропускной способностью. В противном случае пользователи с медленным подключением к Интернету увидят не всё.</translation>
 <translation id="8351419472474436977">Это расширение контролирует настройки прокси-сервера. Это значит, что оно может отследить или изменить передаваемые вами данные, а также оборвать интернет-соединение. Если вы не знали об этом, вам следует отключить расширение.</translation>
 <translation id="8351630282875799764">Батарея не заряжается</translation>
 <translation id="835238322900896202">При удалении произошла ошибка. Используйте терминал.</translation>
@@ -4910,9 +4926,11 @@
 <translation id="839736845446313156">Регистрация</translation>
 <translation id="8398877366907290961">Продолжить все равно</translation>
 <translation id="8400146488506985033">Управлять пользователями</translation>
+<translation id="8400444932218572097">Когда эта вкладка открыта, <ph name="ORIGIN" /> может напрямую сохранять изменения в файлы указанной ниже папки.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Всегда спрашивать (рекомендуется)</translation>
 <translation id="8418445294933751433">&amp;Показать как вкладку</translation>
+<translation id="8418905021510211421">У этой страницы есть доступ на чтение к папке на вашем устройстве</translation>
 <translation id="8419098111404128271">Результаты поиска по запросу "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Настройка устройства <ph name="DEVICE_TYPE" /></translation>
 <translation id="8425213833346101688">Изменить</translation>
@@ -4932,6 +4950,7 @@
 <translation id="8438566539970814960">Помогать улучшить просмотр страниц и поиск</translation>
 <translation id="8439506636278576865">Предлагать перевести страницы на этом языке</translation>
 <translation id="8440630305826533614">Приложения для Linux</translation>
+<translation id="844241640324986723">Не удалось удалить ваши учетные данные.</translation>
 <translation id="8443338615972234259">Создайте новый аккаунт для контролируемого профиля.</translation>
 <translation id="8446884382197647889">Подробнее...</translation>
 <translation id="8447409163267621480">Сочетание должно начинаться с клавиши Ctrl или Alt</translation>
@@ -4947,8 +4966,6 @@
 <translation id="8461914792118322307">Настройки прокси-сервера</translation>
 <translation id="8463215747450521436">Возможно, менеджер удалил или отключил контролируемый профиль. Чтобы продолжить работу от имени этого пользователя, обратитесь к менеджеру.</translation>
 <translation id="846374874681391779">Панель загрузок</translation>
-<translation id="8463807869745732775">"&gt;
-    Учетные данные на электронном ключе</translation>
 <translation id="8463955938112983119">Плагин <ph name="PLUGIN_NAME" /> отключен.</translation>
 <translation id="8464132254133862871">Этот аккаунт пользователя не имеет допуска к этой службе.</translation>
 <translation id="8465252176946159372">Недопустимо</translation>
@@ -5014,6 +5031,7 @@
 <translation id="8569002732135253578">Печать <ph name="DOCUMENT_NAME" />…</translation>
 <translation id="8569682776816196752">Места назначения не найдены</translation>
 <translation id="8571213806525832805">Последние 4 недели</translation>
+<translation id="8573403125070227391">Это объявление удалено, так как оно использовало слишком много системных ресурсов.</translation>
 <translation id="8574990355410201600">Всегда включать звук на сайте <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Чтобы выйти, нажмите и удерживайте клавишу <ph name="KEY_EQUIVALENT" />.</translation>
 <translation id="8578639784464423491">В слове должно быть не больше 99 букв.</translation>
@@ -5037,13 +5055,13 @@
 <translation id="8609465669617005112">Переместить вверх</translation>
 <translation id="8610103157987623234">Неверный формат. Повторите попытку.</translation>
 <translation id="8615618338313291042">Приложение в режиме инкогнито: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">С тенью</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Статус роуминга</translation>
 <translation id="8620765578342452535">Настройка сетевых подключений</translation>
 <translation id="8621866727807194849">На компьютере обнаружено вредоносное ПО. Chrome удалит его, восстановит настройки и отключит расширения. Это вернет браузер в обычное состояние.</translation>
 <translation id="8621979332865976405">Откройте доступ ко всему экрану</translation>
 <translation id="862542460444371744">Расширения</translation>
-<translation id="8627151598708688654">Выбор источника</translation>
 <translation id="862727964348362408">Приостановлено</translation>
 <translation id="862750493060684461">Кеш CSS</translation>
 <translation id="8627795981664801467">только при защищенном подключении</translation>
@@ -5097,6 +5115,7 @@
 <translation id="8688579245973331962">Не нашли свое имя?</translation>
 <translation id="8688591111840995413">Неверный пароль</translation>
 <translation id="8688672835843460752">Свободно</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Открыть &amp;адрес...</translation>
 <translation id="869884720829132584">Меню приложений</translation>
 <translation id="869891660844655955">Срок действия</translation>
@@ -5260,6 +5279,7 @@
 <translation id="891365694296252935">Отправка данных о работе устройства. Сейчас это устройство автоматически отправляет в Google диагностическую информацию, сведения об использовании приложений и самого устройства. Установить личность ребенка по этим данным нельзя. Они нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Эта настройка принудительно применяется владельцем. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в аккаунте ребенка. <ph name="BEGIN_LINK1" />Подробнее…<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Загрузка подсказки</translation>
 <translation id="8916476537757519021">Субфрейм в режиме инкогнито: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780">У <ph name="WINDOW_TITLE" /> есть доступ на чтение к папке на вашем устройстве</translation>
 <translation id="8919275547519617350">Чтобы получить доступ к паролям на всех своих устройствах, войдите в аккаунт и включите синхронизацию.</translation>
 <translation id="8921366488406707015">Проверка электронного ключа</translation>
 <translation id="8922013791253848639">Всегда разрешать рекламу на этом сайте</translation>
@@ -5289,7 +5309,6 @@
 <translation id="8965037249707889821">Введите старый пароль</translation>
 <translation id="8966870118594285808">Если вы случайно закрыли вкладку, откройте ее снова</translation>
 <translation id="8967866634928501045">Чтобы показать, нажмите Alt + Shift + A</translation>
-<translation id="8970203673128054105">Просмотреть список режимов трансляции</translation>
 <translation id="89720367119469899">Отключить</translation>
 <translation id="8972513834460200407">Уточните у администратора сети, не блокирует ли брандмауэр скачивание файлов с серверов Google.</translation>
 <translation id="8973557916016709913">Сбросить масштаб</translation>
@@ -5438,6 +5457,7 @@
 <translation id="9214520840402538427">К сожалению, срок инициализации для атрибутов времени установки истек. Обратитесь в службу поддержки.</translation>
 <translation id="9214695392875603905">Кекс</translation>
 <translation id="9215293857209265904">Добавлено расширение или приложение: <ph name="EXTENSION_NAME" /></translation>
+<translation id="9216712190298404438">Когда эта вкладка открыта, <ph name="ORIGIN" /> может напрямую сохранять изменения в указанном ниже файле.</translation>
 <translation id="9218430445555521422">Сделать браузером по умолчанию</translation>
 <translation id="9219103736887031265">Картинки</translation>
 <translation id="9220525904950070496">Удалить аккаунт</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 973012c..bc35cb8 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Pri spúšťaní virtuálneho počítača sa vyskytla chyba. Skúste to znova.</translation>
 <translation id="1089439967362294234">Zmeniť heslo</translation>
 <translation id="1090126737595388931">Na pozadí nie sú spustené žiadne aplikácie</translation>
+<translation id="1090290614672149983">Chcete uložiť zmeny do pôvodného súboru?</translation>
 <translation id="1090918500949388876">Keď je zapnutá obrazovka, Asistenta môžete kedykoľvek aktivovať vyslovením výrazu „Ok Google“</translation>
 <translation id="1091767800771861448">Ak chcete preskočiť aktualizáciu, stlačte kláves Escape (len pre neoficiálne zostavy).</translation>
 <translation id="1093457606523402488">Viditeľné siete:</translation>
 <translation id="1094607894174825014">Na zariadení <ph name="DEVICE_NAME" /> bola vyžiadaná operácia čítania alebo zápisu s nesprávnym odsadením.</translation>
 <translation id="1097658378307015415">Ak chcete aktivovať sieť <ph name="NETWORK_ID" />, vstúpte pred prihlásením ako hosť</translation>
+<translation id="110029732810301672">Táto karta môže ukladať do pôvodných súborov.</translation>
 <translation id="1103523840287552314">Vždy preložiť nasledujúci jazyk: <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Zastaviť</translation>
 <translation id="1110155001042129815">Čakajte, prosím.</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Slnečné okuliare</translation>
 <translation id="1151917987301063366">Vždy povoliť webu <ph name="HOST" /> prístup k senzorom</translation>
 <translation id="1153356358378277386">Spárované zariadenia</translation>
-<translation id="1156488781945104845">Aktuálny čas</translation>
 <translation id="1161575384898972166">Ak chcete exportovať certifikát klienta, prihláste sa do <ph name="TOKEN_NAME" />.</translation>
 <translation id="1163931534039071049">&amp;Zobraziť zdrojový kód rámu</translation>
 <translation id="1164674268730883318">Vypnúť v zariadení <ph name="DEVICE_TYPE" /> funkciu Smart Lock?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Nastavenia úložiska aplikácie Adobe Flash Player</translation>
 <translation id="1274997165432133392">Súbory cookie a ďalšie dáta webov</translation>
 <translation id="127668050356036882">Zavrieť všetky okná</translation>
-<translation id="1277908057200820621">Zobraziť zoznam zariadení</translation>
 <translation id="1280820357415527819">Hľadajú sa mobilné siete</translation>
 <translation id="1285320974508926690">Nikdy neprekladať tieto webové stránky</translation>
 <translation id="1285484354230578868">Ukladať údaje v účte na Disku Google</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Domáca sieť, bez roamingu</translation>
 <translation id="1316136264406804862">Prebieha vyhľadávanie...</translation>
 <translation id="1316495628809031177">Synchronizácia je pozastavená</translation>
+<translation id="1317637799698924700">Dok bude fungovať v režime kompatibilnom s rozhraním USB typu C.</translation>
 <translation id="1322046419516468189">Uložené heslá si môžete zobraziť a spravovať v časti <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Ak chcete získať karty z ďalších svojich zariadení, prihláste sa do Chromu.</translation>
 <translation id="1327074568633507428">Tlačiareň v službe Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Váš <ph name="BEGIN_LINK" />prehliadač spravuje<ph name="END_LINK" /> doména <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Vo svojom zariadení <ph name="DEVICE_TYPE" /> používate linuxové nástroje, editory a prostredia IDE. &lt;a target="_blank" href="<ph name="URL" />"&gt;Ďalšie nástroje&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Vybrať súbor</translation>
+<translation id="1370749010280229230">Vyskytol sa problém s obrazovkou pripojenou k doku</translation>
 <translation id="1371301976177520732">Záložky, heslá, história a ďalší obsah vo všetkých vašich zariadeniach</translation>
 <translation id="1372841398847029212">Synchronizovať do účtu</translation>
 <translation id="1374844444528092021">Certifikát vyžadovaný sieťou <ph name="NETWORK_NAME" /> nie je nainštalovaný alebo je neplatný. Nainštalujte nový certifikát a skúste sa pripojiť znova.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Webová stránka, jeden súbor</translation>
 <translation id="1451917004835509682">Pridať kontrolovanú osobu</translation>
 <translation id="1454223536435069390">&amp;Vytvoriť snímku obrazovky</translation>
+<translation id="1458243790901188746">{0,plural, =1{Priečinok: <ph name="DIRECTORIES" />}few{Priečinky: <ph name="DIRECTORIES" />}many{Priečinky: <ph name="DIRECTORIES" />}other{Priečinky: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Vyhľadávače pridané rozšíreniami</translation>
 <translation id="146000042969587795">Tento rám je zablokovaný, pretože obsahuje nezabezpečený obsah.</translation>
 <translation id="146219525117638703">Stav ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Zobraziť možnosti vstupu</translation>
 <translation id="1651008383952180276">Rovnakú prístupovú frázu musíte zadať dvakrát</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Pridajte si tlačiareň do služby Google Cloud Print, aby ste mohli tlačiť odkiaľkoľvek.}few{Pridajte si # tlačiarne do služby Google Cloud Print, aby ste mohli tlačiť odkiaľkoľvek.}many{Pridajte si # tlačiarne do služby Google Cloud Print, aby ste mohli tlačiť odkiaľkoľvek.}other{Pridajte si # tlačiarní do služby Google Cloud Print, aby ste mohli tlačiť odkiaľkoľvek.}}</translation>
+<translation id="1656528038316521561">Nepriehľadnosť pozadia</translation>
 <translation id="1657406563541664238">Pomôžte zlepšiť aplikáciu <ph name="PRODUCT_NAME" /> aktivovaním automatického odosielania štatistických údajov o používaní prehliadača a správ o chybách spoločnosti Google.</translation>
 <translation id="1658424621194652532">Táto stránka má prístup k vášmu mikrofónu.</translation>
 <translation id="1660204651932907780">Povoliť webom prehrávať zvuk (odporúčané)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> chce zistiť model a značku vášho bezpečnostného kľúča</translation>
 <translation id="1679068421605151609">Nástroje pre vývojárov</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Naozaj chcete túto obrazovku ukončiť?</translation>
 <translation id="167983332380191032">Služba správy odoslala chybu protokolu HTTP.</translation>
 <translation id="1680849702532889074">Počas inštalácie aplikácie Linux sa vyskytla chyba.</translation>
 <translation id="16815041330799488">Nepovoliť webom prístup k textu a obrázkom skopírovaným do schránky</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identifikátor chráneného média</translation>
 <translation id="175196451752279553">Znovu o&amp;tvoriť zatvorenú kartu</translation>
 <translation id="1753905327828125965">Najviac navšt.</translation>
+<translation id="1755601632425835748">Veľkosť textu</translation>
 <translation id="1756681705074952506">Metóda vstupu</translation>
 <translation id="1757301747492736405">Čaká sa na odinštalovanie</translation>
 <translation id="175772926354468439">Povoliť motív</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Menší</translation>
 <translation id="1919345977826869612">Reklamy</translation>
 <translation id="1919814239594435008">Bol povolený doplnok mimo karantény</translation>
+<translation id="1920390473494685033">Kontakty</translation>
 <translation id="1921050530041573580">Spárujte si telefón so Správami</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Získať inteligentné funkcie Googlu v <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Karta inkognito: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> na webe <ph name="PEPPER_PLUGIN_DOMAIN" /> chce získať prístup k vášmu počítaču</translation>
 <translation id="2178614541317717477">Ohrozenie zabezpečenia CA</translation>
+<translation id="2179849162388791084">Nepodarilo sa zhromaždiť prihlasovacie údaje z bezpečnostného kľúča.</translation>
 <translation id="218070003709087997">Zadanie počtu kópií, ktoré chcete vytlačiť, treba zadať číslovkou (1 až 999).</translation>
 <translation id="2184515124301515068">Povoľte Chromu vyberať, kedy môžu weby prehrať zvuk (odporúčané)</translation>
 <translation id="2187895286714876935">Chyba importovania certifikátu servera</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Všetky súbory cookie a údaje webu</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Bola skopírovaná 1 položka}few{Boli skopírované # položky}many{Bolo skopírovanej # položky}other{Bolo skopírovaných # položiek}}</translation>
 <translation id="2278562042389100163">Otvoriť okno prehliadača</translation>
-<translation id="2279874276457403668">Naraz je možné vytvoriť iba jednu reláciu.</translation>
 <translation id="2280486287150724112">Pravý okraj</translation>
 <translation id="2282146716419988068">Proces GPU</translation>
 <translation id="2282155092769082568">Webová adresa automatickej konfigurácie</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Poznámky na uzamknutej obrazovke sa automaticky ukladajú do aplikácie <ph name="LOCK_SCREEN_APP_NAME" />. Na uzamknutej obrazovke zostane posledná poznámka.</translation>
 <translation id="2353297238722298836">Kamera a mikrofón sú povolené</translation>
 <translation id="2356070529366658676">Opýtať sa</translation>
-<translation id="2357949918965361754">Pomocou tejto funkcie si môžete zobraziť obsah z Chromu v televízore alebo iných zariadeniach.</translation>
 <translation id="2359345697448000899">Ak chcete spravovať rozšírenia, kliknite na možnosť Rozšírenia v ponuke Nástroje.</translation>
 <translation id="2359808026110333948">Pokračovať</translation>
 <translation id="236117173274098341">Optimalizovať</translation>
@@ -964,6 +970,7 @@
 <translation id="2436720498717686157">Vaša organizácia požaduje, aby ste toto zariadenie okamžite aktualizovali</translation>
 <translation id="2439545803278355377">Zadajte nový PIN. PIN musí mať aspoň štyri znaky a môže obsahovať písmená, čísla a ďalšie znaky.</translation>
 <translation id="2440604414813129000">&amp;Zobraziť zdrojový kód</translation>
+<translation id="2442916515643169563">Tieň textu</translation>
 <translation id="2444119669991608829">Stránka nie je v jazyku <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Požaduje sa koreňový adresár rozšírenia.</translation>
 <translation id="2445484935443597917">Vytvoriť nový profil</translation>
@@ -1178,6 +1185,7 @@
 <translation id="2738771556149464852">Nie po</translation>
 <translation id="2739191690716947896">Ladiť</translation>
 <translation id="2739240477418971307">Zmeniť nastavenia dostupnosti</translation>
+<translation id="274029851662193272">Rytina</translation>
 <translation id="2740393541869613458">kontrolovať webové stránky, ktoré kontrolovaný používateľ navštívil, a</translation>
 <translation id="2741912629735277980">Zobrazovať používateľské rozhrania na prihlasovacej obrazovke</translation>
 <translation id="274290345632688601">Obnovujú sa aplikácie a súbory pre Linux</translation>
@@ -1226,6 +1234,7 @@
 <translation id="2806891468525657116">Skratka už existuje</translation>
 <translation id="2807517655263062534">Tu sa zobrazia súbory, ktoré stiahnete</translation>
 <translation id="2809586584051668049">a ďalšie (počet: <ph name="NUMBER_ADDITIONAL_DISABLED" />)</translation>
+<translation id="2812049959647166806">Príslušenstvo Thunderbolt nie je podporované</translation>
 <translation id="2812944337881233323">Skúste sa odhlásiť a znovu prihlásiť</translation>
 <translation id="2812989263793994277">Nezobraziť žiadne obrázky</translation>
 <translation id="281390819046738856">Požiadavku sa nepodarilo podpísať.</translation>
@@ -1248,7 +1257,6 @@
 <translation id="2841837950101800123">Poskytovateľ</translation>
 <translation id="2844169650293029770">Zariadenie USB-C (port vľavo vpredu)</translation>
 <translation id="2845382757467349449">Vždy zobrazovať panel so záložkami</translation>
-<translation id="2847759467426165163">Prenášať do</translation>
 <translation id="284805635805850872">Odstrániť škodlivý softvér?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Nepodarilo sa vyčistiť</translation>
@@ -1295,6 +1303,7 @@
     Správa zo servera: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Pridať galériu médií podľa adresára</translation>
 <translation id="2910318910161511225">Pripojte sa k sieti a skúste to znova</translation>
+<translation id="2910518940971897750">Uložiť do pôvodného súboru</translation>
 <translation id="2913331724188855103">Povoliť webom ukladať a čítať súbory cookie (odporučané)</translation>
 <translation id="2915102088417824677">Zobraziť denník aktivít</translation>
 <translation id="2915873080513663243">Automatické prehľadávanie</translation>
@@ -1359,12 +1368,14 @@
 <translation id="3013291976881901233">Zariadenia MIDI</translation>
 <translation id="3015639418649705390">Reštartovať</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> sa nepodarilo automaticky nakonfigurovať. Špecifikujte rozšírené podrobnosti o tlačiarni.</translation>
+<translation id="3016381065346027039">Žiadne záznamy denníka</translation>
 <translation id="3016641847947582299">Komponent bol aktualizovaný</translation>
 <translation id="3016780570757425217">Zistiť vašu polohu</translation>
 <translation id="3017079585324758401">Pozadie</translation>
 <translation id="3020183492814296499">Skratky</translation>
 <translation id="3020990233660977256">Sériové číslo: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Motýľ</translation>
+<translation id="3021408157810018664">Chcete uložiť zmeny do pôvodných súborov?</translation>
 <translation id="3021426244864538700">Rozšírenia s prístupom k údajom tohto webu</translation>
 <translation id="3021678814754966447">&amp;Zobraziť zdrojový kód rámca</translation>
 <translation id="3022978424994383087">Nebolo rozumieť.</translation>
@@ -1457,6 +1468,7 @@
 <translation id="3170072451822350649">Môžete tiež preskočiť prihlásenie a <ph name="LINK_START" />prehliadať ako hosť<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Nejaký web má prístup k vstupu videa</translation>
 <translation id="3177909033752230686">Jazyk stránky:</translation>
+<translation id="3179982752812949580">Písmo textu</translation>
 <translation id="3181954750937456830">Bezpečné prehliadanie (chráni vás aj zariadenie pred nebezpečnými webmi)</translation>
 <translation id="3182749001423093222">Kontrola pravopisu</translation>
 <translation id="3183139917765991655">Profile Importer</translation>
@@ -1509,7 +1521,6 @@
 <translation id="3275778913554317645">Otvárať ako okno</translation>
 <translation id="3278001907972365362">Vaše účty Google vyžadujú pozornosť</translation>
 <translation id="3279230909244266691">Tento proces môže trvať niekoľko minút. Spúšťa sa virtuálny počítač.</translation>
-<translation id="3279741024917655738">Zobrazovať videá na celú obrazovku na</translation>
 <translation id="3280237271814976245">Uložiť &amp;ako...</translation>
 <translation id="3280243678470289153">Zostať v Chrome</translation>
 <translation id="3281892622610078515">Súbory a programy, ktoré sa pridajú do karantény:</translation>
@@ -1531,7 +1542,7 @@
 <translation id="3303855915957856445">Nič sa nenašlo</translation>
 <translation id="3305389145870741612">Proces formátovania môže trvať niekoľko sekúnd. Čakajte prosím.</translation>
 <translation id="3305661444342691068">Otvárať súbory PDF v aplikácii Preview</translation>
-<translation id="3306684685104080068">Povoliť prenos do cloudových služieb, napríklad do služby Google Hangouts.</translation>
+<translation id="3307871847038842490">Táto stránka môže ukladať do pôvodných súborov.</translation>
 <translation id="3308006649705061278">Organizačná jednotka (OU)</translation>
 <translation id="3308116878371095290">Tejto stránke bolo zabránené nastaviť súbory cookie.</translation>
 <translation id="3308134619352333507">Skryť tlačidlo</translation>
@@ -1637,7 +1648,6 @@
 <translation id="3462413494201477527">Zrušiť založenie účtu?</translation>
 <translation id="3464012987031883895">Nejaký web má prístup k zvukovému vstupu</translation>
 <translation id="346431825526753">Toto je detský účet spravovaný používateľom <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Streamujte súbor s videom alebo zvukom</translation>
 <translation id="3468999815377931311">Telefón s Androidom</translation>
 <translation id="3470442499439619530">Odstrániť tohto používateľa</translation>
 <translation id="3473479545200714844">Lupa</translation>
@@ -1660,6 +1670,7 @@
 <translation id="3496213124478423963">Oddialiť</translation>
 <translation id="3497560059572256875">Zdieľať doodle</translation>
 <translation id="3505030558724226696">Odvolať prístup k zariadeniam</translation>
+<translation id="3505635633742443645">Port HDMI doku nemôžete použiť, keď na výstup videa používate port USB typu C. Pre jednu obrazovku použite iný port.</translation>
 <translation id="3507421388498836150">Aktuálne povolenia pre rozšírenie <ph name="EXTENSION_NAME" /></translation>
 <translation id="3507888235492474624">Znova vyhľadať zariadenia Bluetooth</translation>
 <translation id="3508920295779105875">Vybrať iný priečinok...</translation>
@@ -1712,6 +1723,7 @@
 <translation id="3576324189521867626">Úspešne nainštalovaná</translation>
 <translation id="3578594933904494462">Obsah tejto karty sa zdieľa.</translation>
 <translation id="357886715122934472">Používateľ &lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; chce zdieľať tlačiareň &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; so skupinou, ktorú vlastníte: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Ak žiadosť prijmete, tlačiareň budú môcť využívať všetci členovia skupiny.</translation>
+<translation id="357889014807611375">Wi‑Fi s meraním dát</translation>
 <translation id="3584169441612580296">Čítať a meniť fotky, hudbu a ďalšie médiá z tohto počítača</translation>
 <translation id="3587482841069643663">Všetko</translation>
 <translation id="358796204584394954">Na zariadení „<ph name="DEVICE_NAME" />“ zadajte tento kód:</translation>
@@ -1722,6 +1734,7 @@
 <translation id="359283478042092570">Vstúpiť</translation>
 <translation id="3593965109698325041">Obmedzenia názvu certifikátu</translation>
 <translation id="3596235046596950091">Povoliť cloudové služby</translation>
+<translation id="3599221874935822507">Reliéf</translation>
 <translation id="3599863153486145794">Vymaže históriu zo všetkých prihlásených zariadení. Váš účet Google môže mať ďalšie formy histórie prehliadania na adrese <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Informácie o webovej žiadosti</translation>
 <translation id="3600792891314830896">Stlmiť weby, ktoré prehrávajú zvuk</translation>
@@ -1736,6 +1749,7 @@
 <translation id="3612673635130633812">Stiahnuté rozšírením &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Zobraziť priečinok <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Otvoriť na novej karte</translation>
+<translation id="3615073365085224194">Dotknite sa senzora odtlačkov prstov</translation>
 <translation id="3616113530831147358">Zvuk</translation>
 <translation id="3616741288025931835">&amp;Vymazať dáta prehliadania…</translation>
 <translation id="3617891479562106823">Pozadia nie sú k dispozícii. Skúste to znova neskôr.</translation>
@@ -1817,7 +1831,6 @@
 <translation id="3719826155360621982">Domovská stránka</translation>
 <translation id="3720996970802414353">Napriek tomu prepnúť</translation>
 <translation id="3722108462506185496">Pri spúšťaní služby virtuálneho počítača sa vyskytla chyba. Skúste to znova.</translation>
-<translation id="3723158278575423087">Víta vás služba Cast v prehliadači Chromium!</translation>
 <translation id="3725367690636977613">strany</translation>
 <translation id="3726137731714254362">Ak priečinky z tohto miesta odstránite, prestanú sa zdieľať, ale súbory sa neodstránia.</translation>
 <translation id="3727148787322499904">Zmena tohto nastavenia ovplyvní všetky zdieľané siete</translation>
@@ -1852,7 +1865,6 @@
 <translation id="3764314093345384080">Podrobné informácie o zostave</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Komunikujte so zariadením USB}few{Komunikujte s # zariadeniami USB}many{Komunikujte s # zariadením USB}other{Komunikujte s # zariadeniami USB}}</translation>
 <translation id="3765246971671567135">Pravidlo pre režim offline ukážky sa nepodarilo načítať.</translation>
-<translation id="3766223500670287046">Vzdialená obrazovka</translation>
 <translation id="3768037234834996183">Synchronizujú sa predvoľby...</translation>
 <translation id="377050016711188788">Zmrzlina</translation>
 <translation id="3771294271822695279">Súbory videa</translation>
@@ -1925,7 +1937,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Zdvihnite a opäť priložte</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: synchronizácia je pozastavená</translation>
-<translation id="3862134173397075045">Víta vás služba Cast v Chrome!</translation>
 <translation id="3862693525629180217">Overiť prostredníctvom vstavaného senzora</translation>
 <translation id="3862788408946266506">Aplikácia s atribútom manifestu „kiosk_only“ musí byť nainštalovaná v režime verejného terminálu systému Chrome OS</translation>
 <translation id="3865414814144988605">Rozlíšenie</translation>
@@ -1974,6 +1985,7 @@
 <translation id="3926002189479431949">Zmenil sa telefón združený s funkciou Smart Lock</translation>
 <translation id="3927932062596804919">Odmietnuť</translation>
 <translation id="3930737994424905957">Vyhľadávajú sa zariadenia</translation>
+<translation id="3930968231047618417">Farba pozadia</translation>
 <translation id="3933283459331715412">Obnoviť odstránené heslo používateľa <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Otvoriť audio na novej karte</translation>
 <translation id="3936925983113350642">Zvolené heslo budete neskôr potrebovať na obnovenie tohto certifikátu. Zapíšte si ho na bezpečné miesto.</translation>
@@ -1993,6 +2005,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importované z Internet Explorera</translation>
 <translation id="3950820424414687140">Prihlásiť sa</translation>
+<translation id="3950828138786918475">Táto karta môže čítať priečinky vo vašom zariadení.</translation>
 <translation id="3954354850384043518">Prebieha</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">Nemáte žiadne nedávno zaznamenané denníky udalostí WebRTC.</translation>
@@ -2011,6 +2024,7 @@
 <translation id="397105322502079400">Prebieha výpočet...</translation>
 <translation id="3975565978598857337">Kontaktovanie servera pre oblasť zlyhalo</translation>
 <translation id="397703832102027365">Prebieha dokončovanie...</translation>
+<translation id="3977886311744775419">Automatické aktualizácie sa nestiahnu v tomto type siete, ale dostupnosť aktualizácií môžete skontrolovať manuálne.</translation>
 <translation id="3979395879372752341">Bolo pridané nové rozšírenie (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Povoliť <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Zadali ste neplatný typ uloženia.</translation>
@@ -2150,6 +2164,7 @@
 <translation id="4194570336751258953">Povoliť kliknutie klepnutím</translation>
 <translation id="4195643157523330669">Otvoriť na novej karte</translation>
 <translation id="4195814663415092787">Pokračovať tam, kde ste prestali</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> môže priamo ukladať zmeny do nasledujúcich súborov. Tento web môže ukladať zmeny iba vtedy, keď je táto karta otvorená.</translation>
 <translation id="4198146608511578238">Rozprávajte sa s Asistentom Google po podržaní ikony spúšťača.</translation>
 <translation id="4200689466366162458">Vlastné slová</translation>
 <translation id="4200983522494130825">Nová &amp;karta</translation>
@@ -2197,7 +2212,6 @@
 <translation id="4267953847983678297">Automaticky sa pripájať k mobilnej sieti</translation>
 <translation id="4268025649754414643">Zašifrovanie kľúča</translation>
 <translation id="4270393598798225102">Verzia <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Žiadne zhody</translation>
 <translation id="4275663329226226506">Médiá</translation>
 <translation id="4275830172053184480">Reštart zariadenia</translation>
 <translation id="4278101229438943600">Váš Asistent je k dispozícii</translation>
@@ -2346,6 +2360,7 @@
 <translation id="4533985347672295764">Čas využitia procesora</translation>
 <translation id="4534661889221639075">Skúste to znova.</translation>
 <translation id="4535127706710932914">Predvolený profil</translation>
+<translation id="4535767533210902251">Senzor odtlačkov prstov je pravý horný kláves na klávesnici. Zľahka sa ho dotknite ľubovoľným prstom.</translation>
 <translation id="4538684596480161368">Na stránkach <ph name="HOST" /> vždy blokovať doplnky, ktoré nie sú v karanténe</translation>
 <translation id="4538792345715658285">Nainštalované na základe podnikových pravidiel.</translation>
 <translation id="4542520061254486227">Čítať vaše údaje na weboch <ph name="WEBSITE_1" /> a <ph name="WEBSITE_2" /></translation>
@@ -2379,6 +2394,7 @@
 <translation id="457386861538956877">Viac...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Párovanie zariadenia Bluetooth</translation>
+<translation id="4578012756826807359">Vaše prihlasovacie údaje boli úspešne odstránené.</translation>
 <translation id="4579581181964204535">Nie je možné prenášať hostiteľskú službu <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Chyba pri obnovovaní systému Linux</translation>
 <translation id="4582563038311694664">Resetovať všetky nastavenia</translation>
@@ -2496,7 +2512,6 @@
 <translation id="4763830802490665879">Súbory cookie z viacerých webových stránok budú vymazané pri ukončení relácie.</translation>
 <translation id="4765582662863429759">Umožňuje Správam pre Android prenášať textové správy z vášho telefónu do Chromebooku</translation>
 <translation id="4768332406694066911">Máte certifikáty z týchto organizácií, ktoré vás identifikujú</translation>
-<translation id="4772404146526168240">Obe obrazovky</translation>
 <translation id="4776146737004271126">Otvoriť nastavenia Androidu</translation>
 <translation id="4776917500594043016">Heslo pre účet <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Obchod Play</translation>
@@ -2604,7 +2619,6 @@
 <translation id="4927846293686536410">Prihláste sa a používajte svoje záložky, históriu, heslá a ďalšie nastavenia vo všetkých svojich zariadeniach. Navyše sa tak automaticky prihlásite do služieb Googlu.</translation>
 <translation id="4929386379796360314">Tlač destinácií</translation>
 <translation id="4930714375720679147">Zapnúť</translation>
-<translation id="4931132176527519925">Vždy zrkadliť</translation>
 <translation id="4932733599132424254">Dátum</translation>
 <translation id="4933484234309072027">vložené do <ph name="URL" /></translation>
 <translation id="493571969993549666">Pridať kontrolovaného používateľa</translation>
@@ -2644,6 +2658,7 @@
 <translation id="4992066212339426712">Zapnúť zvuk</translation>
 <translation id="4992458225095111526">Potvrdenia obnovenia Powerwash</translation>
 <translation id="4992473555164495036">Správca obmedzil dostupné metódy vstupu.</translation>
+<translation id="4992866843815555470">Váš dok vyžaduje servis. Bez funkčného ventilátora sa dok vypne.</translation>
 <translation id="4992926179187649719">Zapnutie kľúčového výrazu „Ok Google“</translation>
 <translation id="4994474651455208930">Povoliť webom žiadať o nastavenie za predvolený obslužný nástroj protokolu</translation>
 <translation id="4994754230098574403">Nastavuje sa</translation>
@@ -2782,7 +2797,6 @@
 <translation id="5233231016133573565">Identifikátor procesu</translation>
 <translation id="5233638681132016545">Nová karta</translation>
 <translation id="5233736638227740678">&amp;Prilepiť</translation>
-<translation id="5234764350956374838">Zatvoriť</translation>
 <translation id="5235050375939235066">Odinštalovať aplikáciu?</translation>
 <translation id="5235750401727657667">Nahradiť stránku, ktorá sa zobrazí pri otvorení novej karty</translation>
 <translation id="5238278114306905396">Aplikácia <ph name="EXTENSION_NAME" /> bola automaticky odstránená.</translation>
@@ -2847,6 +2861,7 @@
 <translation id="5319359161174645648">Google odporúča Chrome</translation>
 <translation id="532247166573571973">Server môže byť nedostupný. Skúste to znova neskôr.</translation>
 <translation id="5324780743567488672">Nastaviť časové pásmo automaticky na základe polohy</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> môže ukladať do pôvodných súborov</translation>
 <translation id="5327248766486351172">Názov</translation>
 <translation id="5327570636534774768">Toto zariadenie bolo označené na správu inou doménou. Skôr ako nastavíte režim ukážky, zrušte jeho podporu v rámci danej domény.</translation>
 <translation id="532943162177641444">Klepnutím na upozornenie v telefóne <ph name="PHONE_NAME" /> nastavte mobilný hotspot, ktorý môže toto zariadenie použiť.</translation>
@@ -2989,7 +3004,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> vyžaduje</translation>
 <translation id="5534304873398226603">Zahodiť fotku alebo video</translation>
 <translation id="5535941515421698170">Zároveň z tohto zariadenia odstrániť existujúce dáta</translation>
-<translation id="5537725057119320332">Prenášať</translation>
 <translation id="5539221284352502426">Zadané heslo bolo zamietnuté serverom. Možné dôvody: Heslo je príliš krátke. Heslo musí obsahovať čísla alebo symboly. Heslo sa musí odlišovať od predchádzajúcich hesiel.</translation>
 <translation id="5541687815721799001">Použiť aplikáciu</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3298,7 +3312,6 @@
 <translation id="5997337190805127100">Ďalšie informácie o prístupe k webom</translation>
 <translation id="6000758707621254961">Viacero výsledkov (<ph name="RESULT_COUNT" />) pre hľadaný výraz „<ph name="SEARCH_TEXT" />“</translation>
 <translation id="6002458620803359783">Preferované hlasy</translation>
-<translation id="6005695835120147974">Smerovač médií</translation>
 <translation id="6006484371116297560">Klasický</translation>
 <translation id="6007240208646052708">Hlasové vyhľadávanie nie je k dispozícii vo vašom jazyku.</translation>
 <translation id="6009781704028455063">Vstavaný senzor</translation>
@@ -3498,7 +3511,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nová tlačiareň v sieti}few{Nové tlačiarne v sieti}many{Nové tlačiarne v sieti}other{Nové tlačiarne v sieti}}</translation>
 <translation id="6286708577777130801">Podrobnosti uloženého hesla</translation>
 <translation id="6289452883081499048">Prispôsobené služby Googlu ako Play</translation>
-<translation id="6290556621549272952">Túto funkciu môžete použiť na zobrazenie obsahu z prehliadača Chromium v televízore alebo iných zariadeniach.</translation>
 <translation id="6291949900244949761">Opýtať sa, keď chce web získať prístup k zariadeniam USB (odporúčané)</translation>
 <translation id="6291953229176937411">&amp;Zobraziť v aplikácii Finder</translation>
 <translation id="6295158916970320988">Všetky stránky</translation>
@@ -3562,6 +3574,7 @@
 <translation id="6395423953133416962">Odosielať <ph name="BEGIN_LINK1" />informácie o systéme<ph name="END_LINK1" /> a <ph name="BEGIN_LINK2" />metriky<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Zakázať webom používať senzory pohybu</translation>
 <translation id="6397094776139756010">Možnosti synchronizácie a prispôsobenia</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> bude môcť priamo ukladať zmeny do súborov v nasledujúcom priečinku. Tento web môže ukladať zmeny iba vtedy, keď je táto karta otvorená.</translation>
 <translation id="6398715114293939307">Odstrániť Obchod Google Play</translation>
 <translation id="6398765197997659313">Ukončiť zobrazenie na celú obrazovku</translation>
 <translation id="6399774419735315745">Špión</translation>
@@ -3606,11 +3619,13 @@
 <translation id="6455264371803474013">Na konkrétnych weboch</translation>
 <translation id="6455894534188563617">&amp;Nový priečinok</translation>
 <translation id="6456394469623773452">Dobré</translation>
+<translation id="6456955391422100996">Reklama bola odstránená.</translation>
 <translation id="645705751491738698">Pokračovať v blokovaní jazyka JavaScript</translation>
 <translation id="6458701200018867744">Nepodarilo sa nahrať (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Použiť výber na hľadanie</translation>
 <translation id="6459799433792303855">Aktívne okno bolo presunuté na inú obrazovku.</translation>
 <translation id="6460601847208524483">Nájsť ďalšie</translation>
+<translation id="6461170143930046705">Vyhľadávajú sa siete...</translation>
 <translation id="6463795194797719782">&amp;Upraviť</translation>
 <translation id="6466988389784393586">&amp;Otvoriť všetky záložky</translation>
 <translation id="6467304607960172345">Optimalizovať videá na celú obrazovku</translation>
@@ -3649,6 +3664,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Máte aktívne pripojenie k sieti <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Zdieľať</translation>
 <translation id="6528513914570774834">Povoliť ostatným používateľom zariadenia pripojiť sa k tejto sieti</translation>
 <translation id="652948702951888897">História Chromu</translation>
@@ -3745,7 +3761,6 @@
 <translation id="6680650203439190394">Ohodnotiť</translation>
 <translation id="6681668084120808868">Zaznamenať fotografiu</translation>
 <translation id="6681964764822470072">Aplikácia <ph name="APP_NAME" /> bude odinštalovaná.</translation>
-<translation id="6685083257944113180">Zastaviť, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Otvoriť Google Play</translation>
 <translation id="6686490380836145850">Zatvoriť karty vpravo</translation>
 <translation id="6686817083349815241">Uloženie hesla</translation>
@@ -3853,6 +3868,7 @@
 <translation id="6845038076637626672">Otvoriť maximalizované</translation>
 <translation id="6845325883481699275">Pomoc so zlepšením zabezpečenia Chromu</translation>
 <translation id="6848388270925200958">Momentálne máte niekoľko kariet, ktoré je možné použiť iba v tomto zariadení</translation>
+<translation id="6850286078059909152">Farba textu</translation>
 <translation id="6851497530878285708">Aplikácia je povolená</translation>
 <translation id="6853388645642883916">Služba Updater je v režime spánku</translation>
 <translation id="68541483639528434">Zatvoriť ostatné karty</translation>
@@ -3902,7 +3918,6 @@
 <translation id="6923132443355966645">Posunúť/kliknúť</translation>
 <translation id="6923633482430812883">Pri pripájaní zdieľaného súboru sa vyskytla chyba. Skontrolujte, či server, ku ktorému sa pripájate, podporuje protokol SMBv2 alebo novší.</translation>
 <translation id="6930036377490597025">Externý bezpečnostný kľúč alebo vstavaný senzor</translation>
-<translation id="6930242544192836755">Trvanie</translation>
 <translation id="693807610556624488">Operácia zápisu prekročila maximálnu dĺžku atribútu na zariadení <ph name="DEVICE_NAME" />.</translation>
 <translation id="6941937518557314510">Ak chcete vykonať overenie pre hostiteľa <ph name="HOST_NAME" /> pomocou svojho certifikátu, prihláste sa do <ph name="TOKEN_NAME" />.</translation>
 <translation id="6943176775188458830">Zrušiť tlač</translation>
@@ -3916,6 +3931,7 @@
 <translation id="6951153907720526401">Obslužné nástroje platieb</translation>
 <translation id="6951663584153258142">Vaša organizácia žiada, aby ste toto zariadenie aktualizovali</translation>
 <translation id="6953878494808481632">Súvisiace informácie</translation>
+<translation id="6953916367503892689">{0,plural, =1{Súbor: <ph name="FILES" />}few{Súbory: <ph name="FILES" />}many{Súbory: <ph name="FILES" />}other{Súbory: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Preskúmať kontextové okná</translation>
 <translation id="6957044667612803194">Tento bezpečnostný kľúč nepodporuje kódy PIN</translation>
 <translation id="6957231940976260713">Názov služby</translation>
@@ -4128,7 +4144,6 @@
 <translation id="7254554697254365959">Túto stránku sa nepodarilo preložiť.</translation>
 <translation id="7254951428499890870">Naozaj chcete aplikáciu <ph name="APP_NAME" /> spustiť v diagnostickom režime?</translation>
 <translation id="7255002516883565667">Momentálne máte jednu kartu, ktorú je možné použiť iba v tomto zariadení</translation>
-<translation id="7255220508626648026">Prebieha prenášanie: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Resetovanie potvrďte opätovným stlačením bezpečnostného kľúča. Všetky informácie uchované v bezpečnostnom kľúči (vrátane jeho kódu PIN) budú vymazané.</translation>
 <translation id="7255935316994522020">Použiť</translation>
 <translation id="7256069762010468647">Web používa vašu kameru</translation>
@@ -4262,6 +4277,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Otvoriť umiestnenie...</translation>
 <translation id="7458168200501453431">Používa rovnakú kontrolu pravopisu ako Vyhľadávanie Google. Text zadaný do prehliadača sa odošle Googlu.</translation>
+<translation id="7460045493116006516">Aktuálny nainštalovaný motív</translation>
 <translation id="7461924472993315131">Pripnúť</translation>
 <translation id="746216226901520237">Zariadenie <ph name="DEVICE_TYPE" /> nabudúce odomknete telefónom. Smart Lock vypnete v Nastaveniach.</translation>
 <translation id="7463006580194749499">Pridať osobu</translation>
@@ -4321,6 +4337,7 @@
 <translation id="7554791636758816595">Nová karta</translation>
 <translation id="7556033326131260574">Funkcii Smart Lock sa nepodarilo overiť váš účet. Vstúpte zadaním svojho hesla.</translation>
 <translation id="7556242789364317684">Prehliadač <ph name="SHORT_PRODUCT_NAME" /> nedokáže obnoviť vaše nastavenia. Ak chcete túto chybu opraviť, prehliadač <ph name="SHORT_PRODUCT_NAME" /> musí vaše zariadenie obnoviť pomocou funkcie Powerwash.</translation>
+<translation id="7559444627302317199">Skontrolujte sieťové pripojenie a skúste to znova.</translation>
 <translation id="7559719679815339381">Čakajte... Aplikácia Kiosk sa práve aktualizuje. Kľúč USB neodoberajte.</translation>
 <translation id="7561196759112975576">Vždy</translation>
 <translation id="7563991800558061108">Ak chcete opraviť túto chybu, musíte sa na prihlasovacej obrazovke prihlásiť
@@ -4563,7 +4580,6 @@
 <translation id="7887334752153342268">Duplikovať</translation>
 <translation id="7887864092952184874">Myš Bluetooth bola spárovaná</translation>
 <translation id="7889565820482017512">Veľkosť zobrazenia</translation>
-<translation id="7889966925761734854">Posúvač prehrávania</translation>
 <translation id="7893008570150657497">Mať prístup k fotkám, hudbe a ďalším médiám z vášho počítača</translation>
 <translation id="7893153962594818789">V tomto zariadení <ph name="DEVICE_TYPE" /> je rozhranie Bluetooth vypnuté. Zadajte heslo a Bluetooth zapnite.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (predvolené nastavenie)</translation>
@@ -4571,7 +4587,6 @@
 <translation id="7898627924844766532">Ponechať na paneli s nástrojmi</translation>
 <translation id="7898725031477653577">Vždy prekladať</translation>
 <translation id="790040513076446191">Manipulovať s nastaveniami týkajúcimi sa ochrany osobných údajov</translation>
-<translation id="7902874111237641165">Plynulý pohyb [beta]</translation>
 <translation id="7903345046358933331">Stránka prestala reagovať. Môžete počkať, kým začne reagovať, alebo ju ukončite.</translation>
 <translation id="7903742244674067440">V súbore máte certifikáty, ktoré identifikujú tieto certifikačné autority</translation>
 <translation id="7903925330883316394">Pomôcka: <ph name="UTILITY_TYPE" /></translation>
@@ -4683,6 +4698,7 @@
 <translation id="8037117027592400564">Čítať akýkoľvek hovorený text prenesený pomocou hlasového syntetizátora</translation>
 <translation id="8037357227543935929">Opýtať sa (predvolené)</translation>
 <translation id="803771048473350947">Súbor</translation>
+<translation id="8042142357103597104">Nepriehľadnosť textu</translation>
 <translation id="8044899503464538266">Pomalé</translation>
 <translation id="8045253504249021590">Synchronizácia bola zastavená prostredníctvom Informačného panela Google.</translation>
 <translation id="8045923671629973368">Zadajte ID aplikácie alebo adresu webového obchodu</translation>
@@ -4719,7 +4735,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Túto službu môžete vypnúť v Nastaveniach.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Kódy PIN sa nezhodujú</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> používa nastavenia proxy servera z rozšírenia</translation>
-<translation id="8099495042588009598">Ďalšie povolenia</translation>
 <translation id="8101987792947961127">Pri ďalšom spustení sa bude vyžadovať funkcia Powerwash</translation>
 <translation id="8102159139658438129">Ak si chcete zobraziť možnosti pre pripojený telefón, prejdite do časti <ph name="LINK_BEGIN" />Nastavenia<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Vykonajte obnovenie Powerwash na svojom zariadení <ph name="IDS_SHORT_PRODUCT_NAME" /> a obnovte na ňom predchádzajúcu verziu.</translation>
@@ -4770,8 +4785,10 @@
     Tento web by podľa mňa nemal byť blokovaný.</translation>
 <translation id="8184288427634747179">Prepnúť na používateľa <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Ďalšie informácie</translation>
+<translation id="8184472985242519288">Jednotný</translation>
 <translation id="8185331656081929126">Zobrazovať upozornenia, keď sa v sieti zistia nové tlačiarne</translation>
 <translation id="8186609076106987817">Server nemohol nájsť súbor.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> môže čítať všetky súbory v nasledujúcom priečinku. Tomuto webu sa zobrazia zmeny priečinka iba vtedy, keď je táto karta otvorená.</translation>
 <translation id="8188389033983459049">Ak chcete pokračovať, skontrolujte nastavenia zariadenia a zapnite ho</translation>
 <translation id="8190193592390505034">Prebieha pripájanie na stránku <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Spravovať vaše aplikácie, rozšírenia a motívy</translation>
@@ -4875,7 +4892,6 @@
 <translation id="833986336429795709">Ak chcete otvoriť tento odkaz, vyberte aplikáciu</translation>
 <translation id="8342861492835240085">Vybrať zbierku</translation>
 <translation id="834290227245955730">Neplatný kód PIN. Zostávajúci počet opätovných pokusov: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Zaistite najlepšiu kvalitu videa alebo animácie pomocou vysokej rýchlosti pripojenia. Ľuďom s pomalým pripojením sa tento obsah nemusí zobraziť.</translation>
 <translation id="8351419472474436977">Vaše nastavenia servera proxy začalo ovládať toto rozšírenie, čo znamená, že dané rozšírenie môže zmeniť, prerušiť alebo zachytiť všetku vašu činnosť online. Ak neviete, prečo k tomu došlo, pravdepodobne si to neželáte.</translation>
 <translation id="8351630282875799764">Batéria sa nenabíja</translation>
 <translation id="835238322900896202">Počas odinštalovania sa vyskytla chyba. Na odinštalovanie použite terminál.</translation>
@@ -4908,9 +4924,11 @@
 <translation id="839736845446313156">Registrovať sa</translation>
 <translation id="8398877366907290961">Pokračovať!</translation>
 <translation id="8400146488506985033">Spravovať ľudí</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> môže priamo ukladať zmeny do súborov v nasledujúcom priečinku. Tento web môže ukladať zmeny iba vtedy, keď je táto karta otvorená.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Najprv sa opýtať (odporúčané)</translation>
 <translation id="8418445294933751433">&amp;Zobraziť ako kartu</translation>
+<translation id="8418905021510211421">Táto stránka môže čítať priečinky vo vašom zariadení.</translation>
 <translation id="8419098111404128271">Výsledky vyhľadávania pre výraz „<ph name="SEARCH_TEXT" />“</translation>
 <translation id="8419368276599091549">Vitajte v zariadení <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Zmeniť</translation>
@@ -4930,6 +4948,7 @@
 <translation id="8438566539970814960">Zlepšovať vyhľadávania a prehliadanie</translation>
 <translation id="8439506636278576865">Ponúkať preklad stránok v tomto jazyku</translation>
 <translation id="8440630305826533614">Aplikácie pre Linux</translation>
+<translation id="844241640324986723">Vaše prihlasovacie údaje sa nepodarilo odstrániť.</translation>
 <translation id="8443338615972234259">Zriaďte ihneď nový účet pre kontrolovaného používateľa.</translation>
 <translation id="8446884382197647889">Ďalšie informácie</translation>
 <translation id="8447409163267621480">Použite buď Ctrl, alebo Alt</translation>
@@ -4945,8 +4964,6 @@
 <translation id="8461914792118322307">Server proxy</translation>
 <translation id="8463215747450521436">Tohto kontrolovaného používateľa mohol odstrániť alebo zakázať jeho správca. Ak sa chcete naďalej prihlasovať ako tento používateľ, kontaktujte správcu.</translation>
 <translation id="846374874681391779">Panel so stiahnutými súbormi</translation>
-<translation id="8463807869745732775">"&gt;
-    Uložené prihlasovacie údaje v bezpečnostnom kľúči</translation>
 <translation id="8463955938112983119">Doplnok <ph name="PLUGIN_NAME" /> je zakázaný.</translation>
 <translation id="8464132254133862871">Tento používateľský účet nie je pre danú službu vhodný.</translation>
 <translation id="8465252176946159372">Neplatné</translation>
@@ -5012,6 +5029,7 @@
 <translation id="8569002732135253578">Tlačí sa dokument <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Nenašli sa žiadne ciele</translation>
 <translation id="8571213806525832805">Posledné 4 týždne</translation>
+<translation id="8573403125070227391">Táto reklama využíva príliš veľa zdrojov vášho zariadenia, takže ju Chrome odstránil.</translation>
 <translation id="8574990355410201600">Vždy povoliť zvuk na webe <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Ukončíte pridržaním klávesa <ph name="KEY_EQUIVALENT" /></translation>
 <translation id="8578639784464423491">Nemôže presiahnuť 99 znakov</translation>
@@ -5035,13 +5053,13 @@
 <translation id="8609465669617005112">Presunúť nahor</translation>
 <translation id="8610103157987623234">Nesprávny formát. Skúste to znova.</translation>
 <translation id="8615618338313291042">Aplikácia inkognito: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Vrhnutý tieň</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Stav roamingu</translation>
 <translation id="8620765578342452535">Konfigurovať sieťové pripojenia</translation>
 <translation id="8621866727807194849">V počítači máte škodlivý softvér. Chrome ho odstráni, obnoví nastavenia a deaktivuje rozšírenia. Prehliadač bude vďaka tomu znova normálne fungovať.</translation>
 <translation id="8621979332865976405">Zdieľanie celej obrazovky</translation>
 <translation id="862542460444371744">&amp;Rozšírenia</translation>
-<translation id="8627151598708688654">Výber zdroja</translation>
 <translation id="862727964348362408">Pozastavené</translation>
 <translation id="862750493060684461">Vyrovnávacia pamäť CSS</translation>
 <translation id="8627795981664801467">Len bezpečné pripojenia</translation>
@@ -5095,6 +5113,7 @@
 <translation id="8688579245973331962">Nezobrazuje sa vaše meno?</translation>
 <translation id="8688591111840995413">Nesprávne heslo</translation>
 <translation id="8688672835843460752">K dispozícii</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Otvoriť &amp;umiestnenie...</translation>
 <translation id="869884720829132584">Ponuka Aplikácie</translation>
 <translation id="869891660844655955">Koniec platnosti</translation>
@@ -5258,6 +5277,7 @@
 <translation id="891365694296252935">Odosielať údaje o využití a diagnostiky. Toto zariadenie momentálne automaticky odosiela Googlu diagnostiky a údaje o používaní zariadenia a aplikácií. Nebudú slúžiť na zistenie totožnosti vášho dieťaťa. Pomôžu zvýšiť stabilitu systému a aplikácií a poskytovať ďalšie vylepšenia. Niektoré súhrnné údaje tiež pomôžu aplikáciám Google a partnerom, ako napríklad vývojárom Androidu. Používanie tohto nastavenia je presadzované vlastníkom. Ak pre dieťa aktivujete dodatočnú aktivitu na internete a v aplikáciách, tieto údaje sa môžu uložiť do jeho účtu Google. <ph name="BEGIN_LINK1" />Ďalšie informácie<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Načítavajú sa návrhy</translation>
 <translation id="8916476537757519021">Podrámec inkognito: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> môže čítať priečinky vo vašom zariadení</translation>
 <translation id="8919275547519617350">Ak chcete získať svoje heslá vo všetkých zariadeniach, prihláste sa a zapnite synchronizáciu.</translation>
 <translation id="8921366488406707015">Overuje sa bezpečnostný kľúč…</translation>
 <translation id="8922013791253848639">Vždy povoliť reklamy na tomto webe</translation>
@@ -5287,7 +5307,6 @@
 <translation id="8965037249707889821">Zadajte staré heslo</translation>
 <translation id="8966870118594285808">Ak ste kartu omylom zavreli, znova ju otvorte</translation>
 <translation id="8967866634928501045">Zobrazíte pomocou klávesov Alt + Shift + A</translation>
-<translation id="8970203673128054105">Zobraziť zoznam režimov prenosu</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Kontaktujte správcu siete a uistite sa, že brána firewall neblokuje sťahovanie súborov zo serverov Google.</translation>
 <translation id="8973557916016709913">Odstrániť úroveň priblíženia</translation>
@@ -5436,6 +5455,7 @@
 <translation id="9214520840402538427">Ojoj! Časový limit pre inicializáciu atribútov času inštalácie uplynul. Kontaktujte zástupcu podpory.</translation>
 <translation id="9214695392875603905">Koláčik</translation>
 <translation id="9215293857209265904">Položka „<ph name="EXTENSION_NAME" />“ bola pridaná</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> bude môcť priamo ukladať zmeny do nasledujúceho súboru. Tento web môže ukladať zmeny iba vtedy, keď je táto karta otvorená.</translation>
 <translation id="9218430445555521422">Nastaviť ako predvolený</translation>
 <translation id="9219103736887031265">Obrázky</translation>
 <translation id="9220525904950070496">Odstrániť účet</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index 0af1d25..1c55be3 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Navideznega računalnika ni bilo mogoče zagnati. Poskusite znova.</translation>
 <translation id="1089439967362294234">Spremeni geslo</translation>
 <translation id="1090126737595388931">Ni aktivnih programov v ozadju</translation>
+<translation id="1090290614672149983">Želite shraniti spremembe v prvotno datoteko?</translation>
 <translation id="1090918500949388876">Do Pomočnika lahko dostopate, kadar koli izgovorite »OK Google«, ko je zaslon vklopljen</translation>
 <translation id="1091767800771861448">Pritisnite Esc, če želite preskočiti (samo neuradne delovne različice).</translation>
 <translation id="1093457606523402488">Vidna omrežja:</translation>
 <translation id="1094607894174825014">Dejanje branja ali pisanja je bilo zahtevano z neveljavnim zamikom v tej napravi: »<ph name="DEVICE_NAME" />«.</translation>
 <translation id="1097658378307015415">Pred prijavo vstopite kot gost, da aktivirate omrežje <ph name="NETWORK_ID" />.</translation>
+<translation id="110029732810301672">Ta zavihek lahko shranjuje v prvotne datoteke.</translation>
 <translation id="1103523840287552314">Vedno prevedi ta jezik: <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Ustavi</translation>
 <translation id="1110155001042129815">Počakaj</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Sončna očala</translation>
 <translation id="1151917987301063366">Spletnemu mestu <ph name="HOST" /> vedno dovoli dostop do tipal</translation>
 <translation id="1153356358378277386">Seznanjene naprave</translation>
-<translation id="1156488781945104845">Trenutna ura</translation>
 <translation id="1161575384898972166">Prijavite se v <ph name="TOKEN_NAME" />, da izvozite potrdilo odjemalca.</translation>
 <translation id="1163931534039071049">&amp;Ogled vira okvirja</translation>
 <translation id="1164674268730883318">Želite izklopiti Smart Lock za napravo <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Nastavitve shranjevanja za Adobe Flash Player</translation>
 <translation id="1274997165432133392">Piškotki in drugi podatki spletnega mesta</translation>
 <translation id="127668050356036882">Zapri vsa okna</translation>
-<translation id="1277908057200820621">Ogled seznama naprav</translation>
 <translation id="1280820357415527819">Iskanje mobilnih omrežij</translation>
 <translation id="1285320974508926690">Nikoli ne prevedi tega spletnega mesta</translation>
 <translation id="1285484354230578868">Shranjevanje podatkov v računu za Google Drive</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Domače omrežje, brez gostovanja</translation>
 <translation id="1316136264406804862">Iskanje ...</translation>
 <translation id="1316495628809031177">Sinhronizacija je zaustavljena</translation>
+<translation id="1317637799698924700">Priklopna postaja deluje v načinu, združljivem z USB Type-C.</translation>
 <translation id="1322046419516468189">Shranjena gesla si lahko ogledate in jih upravljate tukaj: <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Če želite dostopati do zavihkov v drugih napravah, se prijavite v Chrome.</translation>
 <translation id="1327074568633507428">Tiskalnik v Google Tiskanju v oblaku</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Brskalnik upravlja<ph name="END_LINK" /> domena <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Izvajanje orodij, urejevalnikov in vdelanih orodij za razvoj programske opreme (IDE) za Linux v napravi <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Več o tem&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Izberite datoteko</translation>
+<translation id="1370749010280229230">Zaslon, povezan z nosilcem, ima težavo</translation>
 <translation id="1371301976177520732">Zaznamki, gesla, zgodovina in drugi podatki v vseh vaših napravah</translation>
 <translation id="1372841398847029212">Sinhroniziraj z računom</translation>
 <translation id="1374844444528092021">Omrežja, ki ga zahteva omrežje »<ph name="NETWORK_NAME" />« ni nameščeno ali ni več veljavno. Prenesite novega in znova poskusite vzpostaviti povezavo.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Spletna stran, ena datoteka</translation>
 <translation id="1451917004835509682">Dodajanje zaščitene osebe</translation>
 <translation id="1454223536435069390">N&amp;aredi posnetek zaslona</translation>
+<translation id="1458243790901188746">{0,plural, =1{Mapa: <ph name="DIRECTORIES" />}one{Mape: <ph name="DIRECTORIES" />}two{Mape: <ph name="DIRECTORIES" />}few{Mape: <ph name="DIRECTORIES" />}other{Mape: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Razširitev je dodala iskalnike</translation>
 <translation id="146000042969587795">Ta okvir je bil blokiran, ker vsebuje vsebino, ki ni varna.</translation>
 <translation id="146219525117638703">Stanje ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Pokaži možnosti vnosa</translation>
 <translation id="1651008383952180276">Dvakrat morate vnesti isto geslo</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Dodajte tiskalnik v Google Tiskanje v oblaku, da boste lahko tiskali od koder koli.}one{Dodajte # tiskalnik v Google Tiskanje v oblaku, da boste lahko tiskali od koder koli.}two{Dodajte # tiskalnika v Google Tiskanje v oblaku, da boste lahko tiskali od koder koli.}few{Dodajte # tiskalnike v Google Tiskanje v oblaku, da boste lahko tiskali od koder koli.}other{Dodajte # tiskalnikov v Google Tiskanje v oblaku, da boste lahko tiskali od koder koli.}}</translation>
+<translation id="1656528038316521561">Neprosojnost ozadja</translation>
 <translation id="1657406563541664238">Pomagajte izboljšati <ph name="PRODUCT_NAME" /> s samodejnim pošiljanjem statističnih podatkov o uporabi in poročil o zrušitvah Googlu</translation>
 <translation id="1658424621194652532">Ta stran dostopa do vašega mikrofona.</translation>
 <translation id="1660204651932907780">Dovoli spletnim mestom predvajanje zvoka (priporočljivo)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> si želi ogledati znamko in model varnostnega ključa</translation>
 <translation id="1679068421605151609">Razvijalska orodja</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Ali ste prepričani, da želite zapreti?</translation>
 <translation id="167983332380191032">Storitev upravljanja je poslala napako HTTP.</translation>
 <translation id="1680849702532889074">Med namestitvijo aplikacije za Linux je prišlo do napake.</translation>
 <translation id="16815041330799488">Spletnim mestom ne dovoli ogleda besedila in slik, kopiranih v odložišče</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Identifikator zaščitene predstavnosti</translation>
 <translation id="175196451752279553">&amp;Znova odpri zaprt zavihek</translation>
 <translation id="1753905327828125965">Najpogosteje obiskane</translation>
+<translation id="1755601632425835748">Velikost besedila</translation>
 <translation id="1756681705074952506">Način vnosa</translation>
 <translation id="1757301747492736405">Odmestitev na čakanju</translation>
 <translation id="175772926354468439">Omogoči temo</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Pomanjšaj</translation>
 <translation id="1919345977826869612">Oglasi</translation>
 <translation id="1919814239594435008">Vtičnik, ki ni v peskovniku, je dovoljen</translation>
+<translation id="1920390473494685033">Stiki</translation>
 <translation id="1921050530041573580">Seznanjanje telefona z aplikacijo Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Prejmite Googlove pametne rešitve v brskalniku <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Zavihek za način brez beleženja zgodovine: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Vtičnik <ph name="PEPPER_PLUGIN_NAME" /> v domeni <ph name="PEPPER_PLUGIN_DOMAIN" /> želi dostopati do vašega računalnika</translation>
 <translation id="2178614541317717477">Overitelj potrdil ni več varen</translation>
+<translation id="2179849162388791084">Pridobivanje podatkov za prijavo z varnostnega ključa ni uspelo.</translation>
 <translation id="218070003709087997">Vnesite število izvodov, ki jih želite natisniti (od 1 do 999).</translation>
 <translation id="2184515124301515068">Naj Chrome izbere, kdaj lahko spletna mesta predvajajo zvok (priporočeno)</translation>
 <translation id="2187895286714876935">Napaka pri uvozu strežniškega potrdila</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Vsi piškotki in podatki spletnih mest</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 kopiran element}one{# kopiran element}two{# kopirana elementa}few{# kopirani elementi}other{# kopiranih elementov}}</translation>
 <translation id="2278562042389100163">Odpri okno brskalnika</translation>
-<translation id="2279874276457403668">Hkrati je mogoče ustvariti samo eno sejo.</translation>
 <translation id="2280486287150724112">Desni rob</translation>
 <translation id="2282146716419988068">Proces GPU</translation>
 <translation id="2282155092769082568">Spletni naslov samodejne konfiguracije:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Zapiski na zaklenjenem zaslonu so samodejno shranjeni v aplikacijo <ph name="LOCK_SCREEN_APP_NAME" />. Zadnji zapisek ostane na zaklenjenem zaslonu.</translation>
 <translation id="2353297238722298836">Kamera in mikrofon sta dovoljena</translation>
 <translation id="2356070529366658676">Vprašaj</translation>
-<translation id="2357949918965361754">To funkcijo lahko uporabite za prikaz vsebine v Chromu prek televizorja ali drugih naprav.</translation>
 <translation id="2359345697448000899">Razširitve lahko upravljate tako, da v meniju z orodji kliknete »Razširitve«.</translation>
 <translation id="2359808026110333948">Naprej</translation>
 <translation id="236117173274098341">Optimizacija</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Vaša organizacija zahteva takojšnjo posodobitev te naprave</translation>
 <translation id="2439545803278355377">Vnesite novo kodo PIN. Koda PIN mora biti dolga vsaj štiri znake in lahko vsebuje črke, števke in druge znake.</translation>
 <translation id="2440604414813129000">Ogled v&amp;ira</translation>
+<translation id="2442916515643169563">Senčenje besedila</translation>
 <translation id="2444119669991608829">Stran ni v jeziku <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Potreben je korenski imenik razširitve.</translation>
 <translation id="2445484935443597917">Ustvari nov profil</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Ne po</translation>
 <translation id="2739191690716947896">Odpravljanje napak</translation>
 <translation id="2739240477418971307">Sprememba nastavitev funkcij za ljudi s posebnimi potrebami</translation>
+<translation id="274029851662193272">Znižano</translation>
 <translation id="2740393541869613458">pregled spletnih mest, ki jih je obiskal zaščiteni uporabnik, in</translation>
 <translation id="2741912629735277980">Prikaz uporabniškega vmesnika na zaslonu za prijavo</translation>
 <translation id="274290345632688601">Obnavljanje aplikacij in datotek za Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Bližnjica že obstaja</translation>
 <translation id="2807517655263062534">Tu so prikazane datoteke, ki jih prenesete</translation>
 <translation id="2809586584051668049">in še <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt ni podprt</translation>
 <translation id="2812944337881233323">Poskusite se odjaviti in znova prijaviti</translation>
 <translation id="2812989263793994277">Ne pokaži slik</translation>
 <translation id="281390819046738856">Zahteve ni bilo mogoče podpisati.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Ponudnik</translation>
 <translation id="2844169650293029770">Naprava USB-C (vrata levo spredaj)</translation>
 <translation id="2845382757467349449">Vedno pokaži vrstico z zaznamki</translation>
-<translation id="2847759467426165163">Predvajanje v napravi</translation>
 <translation id="284805635805850872">Želite odstraniti škodljivo programsko opremo?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Brisanje ni uspelo</translation>
@@ -1297,6 +1305,7 @@
     Sporočilo strežnika: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Dodajanje galerije predstavnosti po imeniku</translation>
 <translation id="2910318910161511225">Vzpostavite povezavo z omrežjem in poskusite znova</translation>
+<translation id="2910518940971897750">Shranjuj v prvotno datoteko</translation>
 <translation id="2913331724188855103">Dovoli spletnim mestom shranjevanje in branje podatkov piškotkov (priporočljivo)</translation>
 <translation id="2915102088417824677">Ogled dnevnika dejavnosti</translation>
 <translation id="2915873080513663243">Samodejno iskanje</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Naprave MIDI</translation>
 <translation id="3015639418649705390">Znova zaženi</translation>
 <translation id="3016329696181678353">Tiskalnika <ph name="PRINTER_NAME" /> ni bilo mogoče samodejno konfigurirati. Določite dodatne podrobnosti tiskalnika.</translation>
+<translation id="3016381065346027039">Ni vnosov v dnevniku</translation>
 <translation id="3016641847947582299">Komponenta je posodobljena</translation>
 <translation id="3016780570757425217">podatke o vaši lokaciji</translation>
 <translation id="3017079585324758401">Ozadje</translation>
 <translation id="3020183492814296499">Bližnjice</translation>
 <translation id="3020990233660977256">Serijska številka: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Metulj</translation>
+<translation id="3021408157810018664">Želite shranjevati spremembe v prvotne datoteke?</translation>
 <translation id="3021426244864538700">Dostopanje do podatkov tega spletnega mesta</translation>
 <translation id="3021678814754966447">&amp;Prikaz izvorne kode okvirja</translation>
 <translation id="3022978424994383087">Ni bilo razumljivo.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Prijavo lahko tudi preskočite in <ph name="LINK_START" />brskate kot gost<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Spletno mesto dostopa do vhoda za sliko</translation>
 <translation id="3177909033752230686">Jezik strani:</translation>
+<translation id="3179982752812949580">Pisava besedila</translation>
 <translation id="3181954750937456830">Varno brskanje (ščiti vas in napravo pred nevarnimi spletnimi mesti)</translation>
 <translation id="3182749001423093222">Preverjanje črkovanja</translation>
 <translation id="3183139917765991655">Uvoznik profilov</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Odpri kot okno</translation>
 <translation id="3278001907972365362">V računih Google je potrebno ukrepanje</translation>
 <translation id="3279230909244266691">To lahko traja nekaj minut. Zagon navideznega računalnika.</translation>
-<translation id="3279741024917655738">Prikaz celozaslonskih videoposnetkov na</translation>
 <translation id="3280237271814976245">Shrani &amp;kot ...</translation>
 <translation id="3280243678470289153">Ostani v Chromu</translation>
 <translation id="3281892622610078515">Datoteke in programi, določeni za karanteno:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Ni rezultatov iskanja</translation>
 <translation id="3305389145870741612">Formatiranje lahko traja nekaj sekund. Počakajte.</translation>
 <translation id="3305661444342691068">Odpri PDF v predogledu</translation>
-<translation id="3306684685104080068">Omogočanje predvajanja v storitvah v oblaku, kot je Google Hangouts.</translation>
+<translation id="3307871847038842490">Ta stran lahko shranjuje v prvotne datoteke.</translation>
 <translation id="3308006649705061278">Organizacijska enota (OU)</translation>
 <translation id="3308116878371095290">Tej strani je bilo preprečeno nastavljanje piškotkov.</translation>
 <translation id="3308134619352333507">Gumb »Skrij«</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Želite preklicati nastavitev računa?</translation>
 <translation id="3464012987031883895">Spletno mesto dostopa do vhoda za zvok</translation>
 <translation id="346431825526753">To je račun za otroke, ki ga upravlja <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Pretočno predvajanje video- ali zvočne datoteke</translation>
 <translation id="3468999815377931311">Telefon Android</translation>
 <translation id="3470442499439619530">Odstranitev tega uporabnika</translation>
 <translation id="3473479545200714844">Lupa</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Pomanjšaj</translation>
 <translation id="3497560059572256875">Deli priložnostni logotip z drugimi</translation>
 <translation id="3505030558724226696">Umakni dostop do naprav</translation>
+<translation id="3505635633742443645">Vrat HDMI na nosilcu ni mogoče uporabljati, če za izhod za video uporabljate vrata USB Type-C. Za enega od zaslonov uporabite druga vrata.</translation>
 <translation id="3507421388498836150">Trenutna dovoljenja za »<ph name="EXTENSION_NAME" />«</translation>
 <translation id="3507888235492474624">Vnovično iskanje naprav Bluetooth</translation>
 <translation id="3508920295779105875">Izberite drugo mapo ...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Uspešno nameščeno</translation>
 <translation id="3578594933904494462">Vsebina tega zavihka je v skupni rabi.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; želi souporabljati tiskalnik &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; s skupino v vaši lasti: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Če sprejmete, bodo lahko tiskalnik uporabljali vsi člani skupine.</translation>
+<translation id="357889014807611375">Wi‑Fi z omejeno količino prenosa</translation>
 <translation id="3584169441612580296">Branje in spreminjanje fotografij, glasbe in drugih predstavnosti v računalniku</translation>
 <translation id="3587482841069643663">Vse</translation>
 <translation id="358796204584394954">Če želite začeti seznanjanje, v napravo »<ph name="DEVICE_NAME" />« vnesite to kodo:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Vnesite</translation>
 <translation id="3593965109698325041">Omejitve imena potrdila</translation>
 <translation id="3596235046596950091">Omogočanje storitev v oblaku</translation>
+<translation id="3599221874935822507">Dvignjeno</translation>
 <translation id="3599863153486145794">Izbriše zgodovino iz vseh naprav, v katerih ste prijavljeni. V Google Računu so morda druge vrste zgodovine brskanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Podatki o spletni zahtevi</translation>
 <translation id="3600792891314830896">Izklop zvoka na spletnih mestih, ki predvajajo zvok</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Prenesla razširitev &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Pokaži <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Odpri na novem zavihku</translation>
+<translation id="3615073365085224194">S prstom se dotaknite tipala prstnih odtisov</translation>
 <translation id="3616113530831147358">Zvok</translation>
 <translation id="3616741288025931835">&amp;Izbriši podatke brskanja ...</translation>
 <translation id="3617891479562106823">Ozadja niso na voljo. Poskusite znova pozneje.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Domača stran</translation>
 <translation id="3720996970802414353">Vseeno preklopi</translation>
 <translation id="3722108462506185496">Napaka pri zagonu storitve navideznega računalnika. Poskusite znova pozneje.</translation>
-<translation id="3723158278575423087">Pozdravljeni v doživetju predvajanja v Chromiumu.</translation>
 <translation id="3725367690636977613">strani</translation>
 <translation id="3726137731714254362">Če odstranite mape od tod, se ustavi deljenje, datoteke pa ne bodo izbrisane.</translation>
 <translation id="3727148787322499904">Sprememba te nastavitve vpliva na vsa omrežja v skupni rabi</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Podrobnejše informacije o gradnji</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Komuniciranje z napravo USB}one{Komuniciranje z # napravo USB}two{Komuniciranje z # napravama USB}few{Komuniciranje z # napravami USB}other{Komuniciranje z # napravami USB}}</translation>
 <translation id="3765246971671567135">Pravilnika za predstavitveni način brez povezave ni bilo mogoče prebrati.</translation>
-<translation id="3766223500670287046">Oddaljeni zaslon</translation>
 <translation id="3768037234834996183">Sinhroniziranje nastavitev ...</translation>
 <translation id="377050016711188788">Sladoled</translation>
 <translation id="3771294271822695279">Videodatoteke</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Dvignite in se spet dotaknite</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: sinhronizacija je zaustavljena</translation>
-<translation id="3862134173397075045">Pozdravljeni v doživetju predvajanja v Chromu.</translation>
 <translation id="3862693525629180217">Preverite prek vgrajenega tipala</translation>
 <translation id="3862788408946266506">Aplikacijo z atributom manifesta »kiosk_only« je treba namestiti v načinu kioska sistema OS Chrome</translation>
 <translation id="3865414814144988605">Ločljivost</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Telefon za Smart Lock spremenjen</translation>
 <translation id="3927932062596804919">Ne dovoli</translation>
 <translation id="3930737994424905957">Iskanje naprav</translation>
+<translation id="3930968231047618417">Barva ozadja</translation>
 <translation id="3933283459331715412">Obnovitev izbrisanega gesla za <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Odpri zvočni posnetek na novem zavihku</translation>
 <translation id="3936925983113350642">Izbrano geslo boste pozneje potrebovali za obnovitev tega potrdila. Zapišite ga na varno mesto.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Uvoženo iz IE</translation>
 <translation id="3950820424414687140">Prijava</translation>
+<translation id="3950828138786918475">Ta zavihek lahko bere vsebino mape v napravi.</translation>
 <translation id="3954354850384043518">Poteka</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">Nimate nedavno zajetih dnevnikov dogodkov za WebRTC.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Izračunavanje …</translation>
 <translation id="3975565978598857337">Vzpostavljanje stika s strežnikom območja ni uspelo</translation>
 <translation id="397703832102027365">Dokončanje ...</translation>
+<translation id="3977886311744775419">Samodejne posodobitve se ne prenesejo v tej vrsti omrežja, vendar lahko ročno preverite, ali so na voljo posodobitve.</translation>
 <translation id="3979395879372752341">Nova razširitev je dodana (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Omogoči <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Vrsta shranjevanje, ki ste jo vnesli, ni veljavna.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Omogoči klik z dotikom</translation>
 <translation id="4195643157523330669">Odpri v novem zavihku</translation>
 <translation id="4195814663415092787">Nadaljuj prejšnjo sejo</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> lahko shranjuje spremembe neposredno v naslednje datoteke. To spletno mesto lahko spremembe shranjuje samo, ko je ta zavihek odprt.</translation>
 <translation id="4198146608511578238">Pridržite ikono zaganjalnika, če želite komunicirati s Pomočnikom Google.</translation>
 <translation id="4200689466366162458">Besede po meri</translation>
 <translation id="4200983522494130825">Nov &amp;zavihek</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Samodejno povezovanje z mobilnim omrežjem</translation>
 <translation id="4268025649754414643">Šifriranje ključa</translation>
 <translation id="4270393598798225102">Različica <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Ni ujemanj</translation>
 <translation id="4275663329226226506">Predstavnost</translation>
 <translation id="4275830172053184480">Znova zaženite napravo.</translation>
 <translation id="4278101229438943600">Pomočnik je na voljo</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Čas uporabe CPE-ja</translation>
 <translation id="4534661889221639075">Poskusite znova.</translation>
 <translation id="4535127706710932914">Privzeti profil</translation>
+<translation id="4535767533210902251">Tipalo prstnih odtisov je tipka v zgornjem desnem kotu tipkovnice. Rahlo se ga dotaknite s poljubnim prstom.</translation>
 <translation id="4538684596480161368">Vedno blokiraj vtičnike, odstranjene iz peskovnika, na <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Nameščeno s pravilnikom podjetja.</translation>
 <translation id="4542520061254486227">Branje vaših podatkov na spletnih mestih <ph name="WEBSITE_1" /> in <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Več ...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Seznanitev naprave Bluetooth</translation>
+<translation id="4578012756826807359">Podatki za prijavo so bili uspešno izbrisani.</translation>
 <translation id="4579581181964204535">Ni mogoče predvajati <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Napaka pri obnavljanju Linuxa</translation>
 <translation id="4582563038311694664">Ponastavi vse nastavitve</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Piškotki z več spletnih mest bodo ob izhodu izbrisani.</translation>
 <translation id="4765582662863429759">Aplikaciji Android Messages omogoča posredovanje sporočil SMS iz telefona v Chromebook</translation>
 <translation id="4768332406694066911">Imate potrdila teh organizacij, ki vas identificirajo</translation>
-<translation id="4772404146526168240">Oba zaslona</translation>
 <translation id="4776146737004271126">Odpri nastavitve za Android</translation>
 <translation id="4776917500594043016">Geslo za <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Trgovina Play</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Prijavite se, če želite uporabljati zaznamke, zgodovino, gesla in druge nastavitve v vseh napravah. Prav tako boste samodejno prijavljeni v Googlove storitve.</translation>
 <translation id="4929386379796360314">Cilji za tiskanje</translation>
 <translation id="4930714375720679147">Vklop</translation>
-<translation id="4931132176527519925">Vedno uporabi zrcaljenje</translation>
 <translation id="4932733599132424254">Datum</translation>
 <translation id="4933484234309072027">vdelano v <ph name="URL" /></translation>
 <translation id="493571969993549666">Dodajanje zaščitenega uporabnika</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Vklopi zvok</translation>
 <translation id="4992458225095111526">Potrdite Powerwash</translation>
 <translation id="4992473555164495036">Skrbnik je omejil razpoložljive načine vnosa.</translation>
+<translation id="4992866843815555470">Nosilec bo treba servisirati. Brez delujočega ventilatorja se bo nosilec izklopil.</translation>
 <translation id="4992926179187649719">Vklop sprožilne besede »Ok Google«</translation>
 <translation id="4994474651455208930">Dovoli spletnim mestom, da zahtevajo, da postanejo privzete rutine za obravnavo protokolov</translation>
 <translation id="4994754230098574403">Nastavljanje</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">ID procesa</translation>
 <translation id="5233638681132016545">Nov zavihek</translation>
 <translation id="5233736638227740678">&amp;Prilepi</translation>
-<translation id="5234764350956374838">Opusti</translation>
 <translation id="5235050375939235066">Želite odstraniti aplikacijo?</translation>
 <translation id="5235750401727657667">Zamenjaj prikazano stran pri odpiranju novega zavihka</translation>
 <translation id="5238278114306905396">Aplikacija »<ph name="EXTENSION_NAME" />« je bila samodejno odstranjena.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google priporoča Chrome</translation>
 <translation id="532247166573571973">Strežnik morda ni dosegljiv. Poskusite znova pozneje.</translation>
 <translation id="5324780743567488672">Samodejna nastavitev časovnega pasu na podlagi vaše lokacije</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – omogočeno shranjevanje v prvotne datoteke</translation>
 <translation id="5327248766486351172">Ime</translation>
 <translation id="5327570636534774768">Ta naprava je označena, da jo upravlja druga domena. Tej domeni onemogočite uporabo naprave, preden nastavite predstavitveni način.</translation>
 <translation id="532943162177641444">Dotaknite se obvestila v telefonu <ph name="PHONE_NAME" />, če želite nastaviti mobilno dostopno točko, ki jo lahko uporablja ta naprava.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> želi</translation>
 <translation id="5534304873398226603">Zavrzi fotografijo ali videoposnetek</translation>
 <translation id="5535941515421698170">Odstranite tudi obstoječe podatke iz te naprave</translation>
-<translation id="5537725057119320332">Predvajanje</translation>
 <translation id="5539221284352502426">Vneseno geslo je zavrnil strežnik. Možni razlogi za to so: Geslo je prekratko. Geslo mora vsebovati številke ali simbole. Geslo se mora razlikovati od prejšnjih gesel.</translation>
 <translation id="5541687815721799001">Uporabi aplikacijo</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3302,7 +3316,6 @@
 <translation id="5997337190805127100">Več o dostopu do spletnih mest</translation>
 <translation id="6000758707621254961">Rezultati za »<ph name="SEARCH_TEXT" />« (<ph name="RESULT_COUNT" />)</translation>
 <translation id="6002458620803359783">Prednostni glasovi</translation>
-<translation id="6005695835120147974">Predstavnostni usmerjevalnik</translation>
 <translation id="6006484371116297560">Klasična</translation>
 <translation id="6007240208646052708">Glasovno iskanje v vašem jeziku ni na voljo.</translation>
 <translation id="6009781704028455063">Vgrajeno tipalo</translation>
@@ -3502,7 +3515,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Nov tiskalnik v vašem omrežju}one{Novi tiskalniki v vašem omrežju}two{Novi tiskalniki v vašem omrežju}few{Novi tiskalniki v vašem omrežju}other{Novi tiskalniki v vašem omrežju}}</translation>
 <translation id="6286708577777130801">Podrobnosti shranjenih gesel</translation>
 <translation id="6289452883081499048">Prilagojene Googlove storitve, kot je Play</translation>
-<translation id="6290556621549272952">To funkcijo lahko uporabite za prikaz vsebine v Chromiumu prek televizorja ali drugih naprav.</translation>
 <translation id="6291949900244949761">Vprašaj, ko želi spletno mesto dostopati do naprav USB (priporočeno)</translation>
 <translation id="6291953229176937411">&amp;Pokaži v Finderju</translation>
 <translation id="6295158916970320988">Vsa spletna mesta</translation>
@@ -3566,6 +3578,7 @@
 <translation id="6395423953133416962">Pošlji <ph name="BEGIN_LINK1" />podatke o sistemu<ph name="END_LINK1" /> in <ph name="BEGIN_LINK2" />meritve<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Spletnim mestom prepreči uporabo tipal gibanja</translation>
 <translation id="6397094776139756010">Možnosti sinhronizacije in prilagajanja</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> bo lahko shranjeval spremembe neposredno v datoteke v naslednji mapi. To spletno mesto lahko spremembe shranjuje samo, ko je ta zavihek odprt.</translation>
 <translation id="6398715114293939307">Odstranitev Trgovine Google Play</translation>
 <translation id="6398765197997659313">Izhod iz celozaslonskega načina</translation>
 <translation id="6399774419735315745">Vohunka</translation>
@@ -3610,11 +3623,13 @@
 <translation id="6455264371803474013">Na določenih spletnih mestih</translation>
 <translation id="6455894534188563617">&amp;Nova mapa</translation>
 <translation id="6456394469623773452">Dober</translation>
+<translation id="6456955391422100996">Oglas je odstranjen.</translation>
 <translation id="645705751491738698">Še naprej blokiraj JavaScript</translation>
 <translation id="6458701200018867744">Nalaganje ni uspelo (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Uporabi izbor za iskanje</translation>
 <translation id="6459799433792303855">Aktivno okno je premaknjeno na drug zaslon.</translation>
 <translation id="6460601847208524483">Poišči naslednje</translation>
+<translation id="6461170143930046705">Iskanje omrežij ...</translation>
 <translation id="6463795194797719782">&amp;Urejanje</translation>
 <translation id="6466988389784393586">&amp;Odpri vse zaznamke</translation>
 <translation id="6467304607960172345">Optimiziranje celozaslonskih videoposnetkov</translation>
@@ -3653,6 +3668,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Povezani ste v omrežje vrste <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Skupna raba</translation>
 <translation id="6528513914570774834">Omogoči drugim uporabnikom te naprave uporabo tega omrežja</translation>
 <translation id="652948702951888897">Zgodovina v Chromu</translation>
@@ -3749,7 +3765,6 @@
 <translation id="6680650203439190394">Hitrost</translation>
 <translation id="6681668084120808868">Posnemi fotografijo</translation>
 <translation id="6681964764822470072">Aplikacija »<ph name="APP_NAME" />« bo odstranjena.</translation>
-<translation id="6685083257944113180">Ustavi, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Odpiranje Googla Play</translation>
 <translation id="6686490380836145850">Zapri zavihke na desni</translation>
 <translation id="6686817083349815241">Shranite geslo</translation>
@@ -3857,6 +3872,7 @@
 <translation id="6845038076637626672">Odpri povečano</translation>
 <translation id="6845325883481699275">Pomagajte izboljšati varnost v Chromu</translation>
 <translation id="6848388270925200958">Trenutno je mogoče nekatere vaše kartice uporabljati samo v tej napravi</translation>
+<translation id="6850286078059909152">Barva besedila</translation>
 <translation id="6851497530878285708">Aplikacija omogočena</translation>
 <translation id="6853388645642883916">Orodje za posodabljanje je v stanju pripravljenosti</translation>
 <translation id="68541483639528434">Zapri druge zavihke</translation>
@@ -3906,7 +3922,6 @@
 <translation id="6923132443355966645">Drsenje/klikanje</translation>
 <translation id="6923633482430812883">Napaka pri vpenjanju datotečnega sredstva v skupni rabi. Preverite, ali datotečni strežnik, s katerim se povezujete, podpira protokol SMBv2 ali novejšega.</translation>
 <translation id="6930036377490597025">Zunanji varnostni ključ ali vgrajeno tipalo</translation>
-<translation id="6930242544192836755">Trajanje</translation>
 <translation id="693807610556624488">Dejanje pisanja presega največjo dovoljeno dolžino atributa za to napravo: »<ph name="DEVICE_NAME" />«.</translation>
 <translation id="6941937518557314510">Prijavite se v <ph name="TOKEN_NAME" />, da s svojim potrdilom preverite pristnost na spletnem mestu <ph name="HOST_NAME" />.</translation>
 <translation id="6943176775188458830">Prekliči tiskanje</translation>
@@ -3920,6 +3935,7 @@
 <translation id="6951153907720526401">Rutine za obravnavo plačil</translation>
 <translation id="6951663584153258142">Vaša organizacija zahteva, da posodobite to napravo</translation>
 <translation id="6953878494808481632">Povezani podatki</translation>
+<translation id="6953916367503892689">{0,plural, =1{Datoteka: <ph name="FILES" />}one{Datoteke: <ph name="FILES" />}two{Datoteke: <ph name="FILES" />}few{Datoteke: <ph name="FILES" />}other{Datoteke: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Preglej pojavno okno</translation>
 <translation id="6957044667612803194">Ta varnostni ključ ne podpira kod PIN</translation>
 <translation id="6957231940976260713">Ime storitve</translation>
@@ -4132,7 +4148,6 @@
 <translation id="7254554697254365959">Te strani ni bilo mogoče prevesti.</translation>
 <translation id="7254951428499890870">Ali res želite zagnati aplikacijo »<ph name="APP_NAME" />« v diagnostičnem načinu?</translation>
 <translation id="7255002516883565667">Trenutno je mogoče eno vašo kartico uporabljati samo v tej napravi.</translation>
-<translation id="7255220508626648026">Predvajanje: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Znova se dotaknite varnostnega ključa, da potrdite ponastavitev. Vsi podatki, shranjeni na varnostnem ključu, vključno s kodo PIN, bodo izbrisani.</translation>
 <translation id="7255935316994522020">Prijava</translation>
 <translation id="7256069762010468647">Spletno mesto uporablja vašo kamero</translation>
@@ -4266,6 +4281,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Odpri mesto ...</translation>
 <translation id="7458168200501453431">Uporablja isto preverjanje črkovanja, kot se uporablja v Iskanju Google. Besedilo, ki ga vnesete v brskalniku, je poslano Googlu.</translation>
+<translation id="7460045493116006516">Trenutna tema, ki ste jo namestili</translation>
 <translation id="7461924472993315131">Pripni</translation>
 <translation id="746216226901520237">Naslednjič bo telefon odklenil napravo <ph name="DEVICE_TYPE" />. Funkcijo Smart Lock lahko izklopite v nastavitvah.</translation>
 <translation id="7463006580194749499">Dodaj osebo</translation>
@@ -4325,6 +4341,7 @@
 <translation id="7554791636758816595">Nov zavihek</translation>
 <translation id="7556033326131260574">Funkciji Smart Lock ni uspelo preveriti vašega računa. Vnesite geslo za dostop.</translation>
 <translation id="7556242789364317684"><ph name="SHORT_PRODUCT_NAME" /> ne more obnoviti vaših nastavitev. <ph name="SHORT_PRODUCT_NAME" /> lahko napako popravi tako, da napravo ponastavi s funkcijo Powerwash.</translation>
+<translation id="7559444627302317199">Preverite omrežno povezavo in poskusite znova.</translation>
 <translation id="7559719679815339381">Počakajte ... Aplikacija za kiosk se posodablja. Ne odstranite ključka USB.</translation>
 <translation id="7561196759112975576">Vedno</translation>
 <translation id="7563991800558061108">Za obnovo po tej napaki se boste morali na prijavnem zaslonu
@@ -4567,7 +4584,6 @@
 <translation id="7887334752153342268">Podvoji</translation>
 <translation id="7887864092952184874">Miška Bluetooth je seznanjena</translation>
 <translation id="7889565820482017512">Velikost prikaza</translation>
-<translation id="7889966925761734854">Iskanje</translation>
 <translation id="7893008570150657497">Dostop do fotografij, glasbe in druge predstavnosti v računalniku</translation>
 <translation id="7893153962594818789">Bluetooth je izklopljen v tej napravi: <ph name="DEVICE_TYPE" />. Vnesite geslo in vklopite Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (privzeto)</translation>
@@ -4575,7 +4591,6 @@
 <translation id="7898627924844766532">Ohrani v orodni vrstici</translation>
 <translation id="7898725031477653577">Vedno prevedi</translation>
 <translation id="790040513076446191">Upravljajte nastavitve zasebnosti</translation>
-<translation id="7902874111237641165">Tekoče gibanje [beta]</translation>
 <translation id="7903345046358933331">Stran se je nehala odzivati. Lahko počakate, da se začne odzivati, ali pa jo zaprete.</translation>
 <translation id="7903742244674067440">V datoteki so potrdila, ki identificirajo te overitelje potrdil</translation>
 <translation id="7903925330883316394">Pripomoček: <ph name="UTILITY_TYPE" /></translation>
@@ -4687,6 +4702,7 @@
 <translation id="8037117027592400564">Branje in izgovarjava vsega besedila z uporabo sintetiziranega govora</translation>
 <translation id="8037357227543935929">Zahteva (privzeto)</translation>
 <translation id="803771048473350947">Datoteka</translation>
+<translation id="8042142357103597104">Neprosojnost besedila</translation>
 <translation id="8044899503464538266">Počasi</translation>
 <translation id="8045253504249021590">Sinhronizacija je bila ustavljena prek Google Nadzorne plošče.</translation>
 <translation id="8045923671629973368">Vnesite ID aplikacije ali URL spletne trgovine</translation>
@@ -4723,7 +4739,6 @@
     <ph name="BEGIN_PARAGRAPH5" />To storitev lahko izklopite v nastavitvah.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Kodi PIN se ne ujemata</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> uporablja nastavitve strežnika proxy razširitve</translation>
-<translation id="8099495042588009598">Več dovoljenj</translation>
 <translation id="8101987792947961127">Pri naslednjem zagonu je treba izvesti Powerwash</translation>
 <translation id="8102159139658438129">Odprite <ph name="LINK_BEGIN" />nastavitve<ph name="LINK_END" />, če si želite ogledati možnosti za povezani telefon</translation>
 <translation id="8104696615244072556">V napravi <ph name="IDS_SHORT_PRODUCT_NAME" /> uporabite funkcijo Powerwash in jo povrnite na prejšnjo različico.</translation>
@@ -4775,8 +4790,10 @@
     To spletno mesto ne sme biti blokirano.</translation>
 <translation id="8184288427634747179">Preklop na profil <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Več informacij</translation>
+<translation id="8184472985242519288">Enotno</translation>
 <translation id="8185331656081929126">Pokaži obvestila, ko so v omrežju zaznani novi tiskalniki</translation>
 <translation id="8186609076106987817">Strežnik ni mogel najti datoteke.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> lahko bere vse datoteke v naslednji mapi. To spletno mesto si lahko spremembe mape ogleda samo, ko je ta zavihek odprt.</translation>
 <translation id="8188389033983459049">Preverite nastavitve naprave in jo vklopite, če želite nadaljevati</translation>
 <translation id="8190193592390505034">Vzpostavljanje povezave z <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Upravljajte aplikacije, razširitve in teme</translation>
@@ -4880,7 +4897,6 @@
 <translation id="833986336429795709">Če želite odpreti to povezavo, izberite aplikacijo</translation>
 <translation id="8342861492835240085">Izberi zbirko</translation>
 <translation id="834290227245955730">Neveljavna koda PIN. Še toliko vnovičnih poskusov: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Uporaba visoke pasovne širine za videoposnetke ali animacije najboljše kakovosti. Ljudem s počasnimi povezavami vaša vsebina morda ne bo prikazana.</translation>
 <translation id="8351419472474436977">Ta razširitev je prevzela nadzor nad nastavitvami strežnika proxy, kar pomeni, da lahko spremeni, prekine ali nadzoruje vse, kar počnete v spletu. Če ne veste, zakaj je prišlo do te spremembe, je verjetno nezaželena.</translation>
 <translation id="8351630282875799764">Akumulator se ne polni</translation>
 <translation id="835238322900896202">Med odmestitvijo je prišlo do napake. Odmestite prek terminala.</translation>
@@ -4913,9 +4929,11 @@
 <translation id="839736845446313156">Registracija</translation>
 <translation id="8398877366907290961">Vseeno nadaljuj</translation>
 <translation id="8400146488506985033">Upravljanje ljudi</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> lahko shranjuje spremembe neposredno v datoteke v naslednji mapi. To spletno mesto lahko spremembe shranjuje samo, ko je ta zavihek odprt.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Najprej vprašaj (priporočeno)</translation>
 <translation id="8418445294933751433">&amp;Prikaži kot zavihek</translation>
+<translation id="8418905021510211421">Ta stran lahko bere vsebino mape v napravi.</translation>
 <translation id="8419098111404128271">Rezultati iskanja za poizvedbo »<ph name="SEARCH_TEXT" />«</translation>
 <translation id="8419368276599091549">Pozdravljeni v napravi <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8425213833346101688">Spremeni</translation>
@@ -4935,6 +4953,7 @@
 <translation id="8438566539970814960">Izboljšanje iskanja in brskanja</translation>
 <translation id="8439506636278576865">Ponudi prevajanje strani v tem jeziku</translation>
 <translation id="8440630305826533614">Aplikacije za Linux</translation>
+<translation id="844241640324986723">Brisanje podatkov za prijavo ni uspelo.</translation>
 <translation id="8443338615972234259">Ustvarite nov račun za nadzorovanega uporabnika.</translation>
 <translation id="8446884382197647889">Več o tem</translation>
 <translation id="8447409163267621480">Vključevati morajo ali Ctrl ali Alt</translation>
@@ -4950,8 +4969,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Tega zaščitenega uporabnika je morda izbrisal ali onemogočil upravitelj. Obrnite se nanj, če se želite še naprej prijavljati kot ta uporabnik.</translation>
 <translation id="846374874681391779">Vrstica s prenosi</translation>
-<translation id="8463807869745732775">"&gt;
-    Shranjeni podatki za prijavo na varnostnem ključu</translation>
 <translation id="8463955938112983119">Vtičnik <ph name="PLUGIN_NAME" /> je onemogočen.</translation>
 <translation id="8464132254133862871">Ta uporabniški račun ni upravičen do storitve.</translation>
 <translation id="8465252176946159372">Neveljavno</translation>
@@ -5017,6 +5034,7 @@
 <translation id="8569002732135253578">Zdaj se tiska dokument <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Najti ni bilo mogoče nobenega cilja</translation>
 <translation id="8571213806525832805">Zadnji 4 tedni</translation>
+<translation id="8573403125070227391">Ta oglas uporablja preveč sredstev za napravo, zato ga je Chrome odstranil.</translation>
 <translation id="8574990355410201600">Vedno dovoli zvok na spletnem mestu <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Držite kombinacijo tipk <ph name="KEY_EQUIVALENT" /> za izhod</translation>
 <translation id="8578639784464423491">Ne sme presegati 99 črk</translation>
@@ -5040,13 +5058,13 @@
 <translation id="8609465669617005112">Premakni navzgor</translation>
 <translation id="8610103157987623234">Nepravilna oblika, poskusite znova</translation>
 <translation id="8615618338313291042">Program brez beleženja zgodovine: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Senca</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Stanje gostovanja</translation>
 <translation id="8620765578342452535">Konfiguriranje omrežnih povezav</translation>
 <translation id="8621866727807194849">V računalniku je nameščena škodljiva programska oprema. Chrome jo bo odstranil, obnovil vaše nastavitve in onemogočil razširitve. S tem bo vaš brskalnik znova normalno deloval.</translation>
 <translation id="8621979332865976405">Deljenje celotnega zaslona</translation>
 <translation id="862542460444371744">&amp;Razširitve</translation>
-<translation id="8627151598708688654">Izbira vira</translation>
 <translation id="862727964348362408">Onemogočeno</translation>
 <translation id="862750493060684461">Predpomnilnik CSS</translation>
 <translation id="8627795981664801467">Samo varne povezave</translation>
@@ -5100,6 +5118,7 @@
 <translation id="8688579245973331962">Ali ne vidite svojega imena?</translation>
 <translation id="8688591111840995413">Napačno geslo</translation>
 <translation id="8688672835843460752">Na voljo</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Odpri &amp;mesto ...</translation>
 <translation id="869884720829132584">Meni programov</translation>
 <translation id="869891660844655955">Datum izteka</translation>
@@ -5263,6 +5282,7 @@
 <translation id="891365694296252935">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Ta naprava trenutno Googlu samodejno pošilja diagnostične podatke ter podatke o uporabi naprave in aplikacij. Teh podatkov ne bomo uporabljali, da bi prepoznali vašega otroka, temveč za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. To nastavitev je uveljavil lastnik naprave. Če ste za otroka vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v njegovem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Nalaganje predloga</translation>
 <translation id="8916476537757519021">Podokvir za način brez beleženja zgodovine: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – omogočeno branje mape v napravi</translation>
 <translation id="8919275547519617350">Če želite dostopati do vseh gesel v vseh napravah, se prijavite in vklopite sinhronizacijo.</translation>
 <translation id="8921366488406707015">Preverjanje varnostnega ključa ...</translation>
 <translation id="8922013791253848639">Vedno dovoli oglase na tem spletnem mestu</translation>
@@ -5292,7 +5312,6 @@
 <translation id="8965037249707889821">Vnesite staro geslo</translation>
 <translation id="8966870118594285808">Znova odprite zavihek, če ste ga pomotoma zaprli</translation>
 <translation id="8967866634928501045">Pritisnite Alt + Shift + A, če želite pokazati</translation>
-<translation id="8970203673128054105">Ogled seznama načinov predvajanja</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Pri skrbniku omrežja se prepričajte, da požarni zid ne blokira prenosov iz Googlovih strežnikov.</translation>
 <translation id="8973557916016709913">Odstranitev stopnje povečave</translation>
@@ -5441,6 +5460,7 @@
 <translation id="9214520840402538427">Ojoj! Potekla je časovna omejitev inicializacije atributov časa namestitve. Obrnite se na predstavnika podpore.</translation>
 <translation id="9214695392875603905">Tortica</translation>
 <translation id="9215293857209265904">Razširitev »<ph name="EXTENSION_NAME" />« je dodana</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> bo lahko shranjeval vaše spremembe neposredno v naslednjo datoteko. To spletno mesto lahko spremembe shranjuje samo, ko je ta zavihek odprt.</translation>
 <translation id="9218430445555521422">Nastavi za privzeti brskalnik</translation>
 <translation id="9219103736887031265">Slike</translation>
 <translation id="9220525904950070496">Odstranitev računa</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 4084517..1e5d4ea 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Грешка при покретању виртуелне машине. Пробајте поново.</translation>
 <translation id="1089439967362294234">Промена лозинке</translation>
 <translation id="1090126737595388931">Није покренута ниједна позадинска апликација</translation>
+<translation id="1090290614672149983">Желите ли да сачувате промене у оригиналну датотеку?</translation>
 <translation id="1090918500949388876">Приступите Помоћнику сваки пут када изговорите „Ок Google“ док је екран активан</translation>
 <translation id="1091767800771861448">Притисните ESCAPE да бисте прескочили (само у незваничним верзијама).</translation>
 <translation id="1093457606523402488">Видљиве мреже:</translation>
 <translation id="1094607894174825014">Операција читања или писања је захтевана уз неважеће смањење на: „<ph name="DEVICE_NAME" />“.</translation>
 <translation id="1097658378307015415">Пре пријављивања приступите као гост да бисте активирали мрежу <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Овој картици је дозвољено да чува промене у оригиналне датотеке.</translation>
 <translation id="1103523840287552314">Увек преводи <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Stop (Заустави)</translation>
 <translation id="1110155001042129815">Сачекај</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Наочари за сунце</translation>
 <translation id="1151917987301063366">Увек дозволи да <ph name="HOST" /> приступа сензорима</translation>
 <translation id="1153356358378277386">Упарени уређаји</translation>
-<translation id="1156488781945104845">Тренутно време</translation>
 <translation id="1161575384898972166">Пријавите се на <ph name="TOKEN_NAME" /> да бисте извезли сертификат клијента.</translation>
 <translation id="1163931534039071049">&amp;Прикажи извор оквира</translation>
 <translation id="1164674268730883318">Желите ли да искључите Smart Lock за <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Подешавања Adobe Flash Player меморијског простора</translation>
 <translation id="1274997165432133392">Колачићи и други подаци о сајтовима</translation>
 <translation id="127668050356036882">Затвори све моје прозоре</translation>
-<translation id="1277908057200820621">Прикажи листу уређаја</translation>
 <translation id="1280820357415527819">Траже се мобилне мреже</translation>
 <translation id="1285320974508926690">Никад не преводи овај сајт</translation>
 <translation id="1285484354230578868">Складиштите податке на налогу Google диска</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Матична мрежа, није у ромингу</translation>
 <translation id="1316136264406804862">Претраживање...</translation>
 <translation id="1316495628809031177">Синхронизација је паузирана</translation>
+<translation id="1317637799698924700">Базна станица ће радити у режиму компатибилном са USB-ом типа C.</translation>
 <translation id="1322046419516468189">Прегледајте сачуване лозинке и управљајте њима са <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Да би вам картице биле доступне на другим уређајима, пријавите се у Chrome.</translation>
 <translation id="1327074568633507428">Штампач у Google Cloud штампању</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Прегледачем управља<ph name="END_LINK" /> <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Покрените Linux алатке, уређиваче и IDE-ове на <ph name="DEVICE_TYPE" />-у. &lt;a target="_blank" href="<ph name="URL" />"&gt;Сазнајте више&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Изабери датотеку</translation>
+<translation id="1370749010280229230">Постоји проблем са екраном прикљученим на базну станицу</translation>
 <translation id="1371301976177520732">Обележивачи, историја и други садржај доступни на свим уређајима</translation>
 <translation id="1372841398847029212">Синхронизујте са налогом</translation>
 <translation id="1374844444528092021">Сертификат који захтева мрежа „<ph name="NETWORK_NAME" />“ или није инсталиран или више није важећи. Набавите нови сертификат и покушајте поново да се повежете.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Веб-страница, једна датотека</translation>
 <translation id="1451917004835509682">Додај особу под надзором</translation>
 <translation id="1454223536435069390">С&amp;ними екран</translation>
+<translation id="1458243790901188746">{0,plural, =1{Директоријум: <ph name="DIRECTORIES" />}one{Директоријуми: <ph name="DIRECTORIES" />}few{Директоријуми: <ph name="DIRECTORIES" />}other{Директоријуми: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Претраживачи које су додали додаци</translation>
 <translation id="146000042969587795">Овај оквир је блокиран јер садржи неки небезбедан садржај.</translation>
 <translation id="146219525117638703">ONC стање</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">Приказуј опције уноса</translation>
 <translation id="1651008383952180276">Двапут треба да унесете исту приступну фразу</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Додајте штампач у Google Cloud штампање да бисте могли да штампате било где.}one{Додајте # штампач у Google Cloud штампање да бисте могли да штампате било где.}few{Додајте # штампача у Google Cloud штампање да бисте могли да штампате било где.}other{Додајте # штампача у Google Cloud штампање да бисте могли да штампате било где.}}</translation>
+<translation id="1656528038316521561">Непрозирност позадине</translation>
 <translation id="1657406563541664238">Помозите унапређивање <ph name="PRODUCT_NAME" /> прегледача тако што ћете аутоматски слати Google-у статистику коришћења и извештаје о отказивању</translation>
 <translation id="1658424621194652532">Ова страница приступа микрофону.</translation>
 <translation id="1660204651932907780">Дозволи сајтовима да пуштају звук (препоручено)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> жели да види произвођача и модел безбедносног кључа</translation>
 <translation id="1679068421605151609">Алатке за програмере</translation>
 <translation id="1679806121152819234">Додатна компонента VM</translation>
+<translation id="1679810534535368772">Желите ли стварно да изађете?</translation>
 <translation id="167983332380191032">Услуга управљања је послала HTTP грешку.</translation>
 <translation id="1680849702532889074">Дошло је до грешке током инсталирања Linux апликације.</translation>
 <translation id="16815041330799488">Не дозвољавај сајтовима да виде текст и слике који су копирани у привремену меморију</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">Идентификатор заштићеног садржаја</translation>
 <translation id="175196451752279553">П&amp;оново отвори затворену картицу</translation>
 <translation id="1753905327828125965">Најпосећеније</translation>
+<translation id="1755601632425835748">Величина текста</translation>
 <translation id="1756681705074952506">Метод уноса</translation>
 <translation id="1757301747492736405">Чека се деинсталирање</translation>
 <translation id="175772926354468439">Омогући тему</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">&amp;Мање</translation>
 <translation id="1919345977826869612">Огласи</translation>
 <translation id="1919814239594435008">Додатна компонента ван заштићеног окружења је дозвољена</translation>
+<translation id="1920390473494685033">Контакти</translation>
 <translation id="1921050530041573580">Упарите телефон са апликацијом Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Преузмите Google паметне функције за <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">Картица Без архивирања: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Додатна компонента <ph name="PEPPER_PLUGIN_NAME" /> на домену <ph name="PEPPER_PLUGIN_DOMAIN" /> жели да приступи рачунару</translation>
 <translation id="2178614541317717477">CA је компромитован</translation>
+<translation id="2179849162388791084">Прикупљање података за пријављивање са безбедносног кључа није успело.</translation>
 <translation id="218070003709087997">Наведите број примерака за штампање (1 до 999).</translation>
 <translation id="2184515124301515068">Нека Chrome одабере када сајтови могу да пусте звук (препоручено)</translation>
 <translation id="2187895286714876935">Грешка при увозу серверског сертификата</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">Сви колачићи и подаци о сајтовима</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 ставка је копирана}one{# ставка је копирана}few{# ставке су копиране}other{# ставки је копирано}}</translation>
 <translation id="2278562042389100163">Отварање прозора прегледача</translation>
-<translation id="2279874276457403668">Морате да правите једну по једну сесију.</translation>
 <translation id="2280486287150724112">Десна маргина</translation>
 <translation id="2282146716419988068">GPU процес</translation>
 <translation id="2282155092769082568">URL за аутоматску конфигурацију:</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">Белешке на закључаном екрану се аутоматски чувају у апликацији <ph name="LOCK_SCREEN_APP_NAME" />. Најновија белешка ће остати на закључаном екрану.</translation>
 <translation id="2353297238722298836">Камера и микрофон су дозвољени</translation>
 <translation id="2356070529366658676">Питај</translation>
-<translation id="2357949918965361754">Можете да користите ову функцију да бисте приказивали садржај са Chrome-а на ТВ-у или другим уређајима.</translation>
 <translation id="2359345697448000899">Управљајте додацима кликом на ставку Додаци у менију Алатке.</translation>
 <translation id="2359808026110333948">Наставите</translation>
 <translation id="236117173274098341">Оптимизуј</translation>
@@ -962,6 +968,7 @@
 <translation id="2436720498717686157">Ваша организација захтева ажурирање за овај уређај одмах</translation>
 <translation id="2439545803278355377">Унесите нови PIN. PIN мора да има бар четири знака и може да садржи слова, бројеве и друге знакове.</translation>
 <translation id="2440604414813129000">Прикажи и&amp;звор</translation>
+<translation id="2442916515643169563">Сенка текста</translation>
 <translation id="2444119669991608829">Страница није на језику <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Основни директоријум додатка је обавезан.</translation>
 <translation id="2445484935443597917">Направи нов профил</translation>
@@ -1176,6 +1183,7 @@
 <translation id="2738771556149464852">Не после</translation>
 <translation id="2739191690716947896">Отклони грешке</translation>
 <translation id="2739240477418971307">Мењање подешавања приступачности</translation>
+<translation id="274029851662193272">Удубљено</translation>
 <translation id="2740393541869613458">да прегледате веб-сајтове које је корисник под надзором посетио и</translation>
 <translation id="2741912629735277980">Прикажи кориснички интерфејс на екрану за пријављивање</translation>
 <translation id="274290345632688601">Враћање Linux апликација и датотека</translation>
@@ -1224,6 +1232,7 @@
 <translation id="2806891468525657116">Пречица већ постоји</translation>
 <translation id="2807517655263062534">Датотеке које преузмете ће се појавити овде</translation>
 <translation id="2809586584051668049">и још <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt није подржан</translation>
 <translation id="2812944337881233323">Покушајте да се одјавите и поново пријавите</translation>
 <translation id="2812989263793994277">Не приказуј ниједну слику</translation>
 <translation id="281390819046738856">Потписивање захтева није успело.</translation>
@@ -1246,7 +1255,6 @@
 <translation id="2841837950101800123">Добављач</translation>
 <translation id="2844169650293029770">Уређај са USB прикључком типа C (леви предњи порт)</translation>
 <translation id="2845382757467349449">Увек приказуј траку са обележивачима</translation>
-<translation id="2847759467426165163">Пребаци на</translation>
 <translation id="284805635805850872">Желите ли да уклоните штетан софтвер?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Чишћење није успело</translation>
@@ -1293,6 +1301,7 @@
     Порука сервера: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Додавање галерије медија према директоријуму</translation>
 <translation id="2910318910161511225">Повежите се на мрежу и пробајте поново</translation>
+<translation id="2910518940971897750">Сачувај у оригиналну датотеку</translation>
 <translation id="2913331724188855103">Дозволи сајтовима да чувају и читају податке колачића (препоручује се)</translation>
 <translation id="2915102088417824677">Прикажи евиденцију активности</translation>
 <translation id="2915873080513663243">Аутоматско прелажење садржаја</translation>
@@ -1357,12 +1366,14 @@
 <translation id="3013291976881901233">MIDI уређаји</translation>
 <translation id="3015639418649705390">Поново покрени</translation>
 <translation id="3016329696181678353">Штампач <ph name="PRINTER_NAME" /> не може да се конфигурише аутоматски. Наведите податке о напредном подешавању штампача.</translation>
+<translation id="3016381065346027039">Нема уноса у евиденцији</translation>
 <translation id="3016641847947582299">Компонента је ажурирана</translation>
 <translation id="3016780570757425217">зна вашу локацију</translation>
 <translation id="3017079585324758401">Позадина</translation>
 <translation id="3020183492814296499">Пречице</translation>
 <translation id="3020990233660977256">Серијски број: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Лептир</translation>
+<translation id="3021408157810018664">Желите ли да сачувате промене у оригиналне датотеке?</translation>
 <translation id="3021426244864538700">Приступ подацима овог сајта</translation>
 <translation id="3021678814754966447">&amp;Прикажи извор оквира</translation>
 <translation id="3022978424994383087">Нисмо вас разумели.</translation>
@@ -1455,6 +1466,7 @@
 <translation id="3170072451822350649">Можете и да прескочите пријављивање и да <ph name="LINK_START" />прегледате као гост<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Сајт приступа видео улазу</translation>
 <translation id="3177909033752230686">Језик странице:</translation>
+<translation id="3179982752812949580">Фонт текста</translation>
 <translation id="3181954750937456830">Безбедно прегледање (штити вас и уређај од опасних сајтова)</translation>
 <translation id="3182749001423093222">Провера правописа</translation>
 <translation id="3183139917765991655">Увоз профила</translation>
@@ -1507,7 +1519,6 @@
 <translation id="3275778913554317645">Отвори као прозор</translation>
 <translation id="3278001907972365362">Треба да проверите Google налоге</translation>
 <translation id="3279230909244266691">Ово може да потраје неколико минута. Покреће се виртуелна машина.</translation>
-<translation id="3279741024917655738">Приказуј видео снимке преко целог екрана на:</translation>
 <translation id="3280237271814976245">Сачувај &amp;као...</translation>
 <translation id="3280243678470289153">Остани у Chrome-у</translation>
 <translation id="3281892622610078515">Датотеке и програми који треба да се ставе у карантин:</translation>
@@ -1529,7 +1540,7 @@
 <translation id="3303855915957856445">Нису пронађени резултати претраге</translation>
 <translation id="3305389145870741612">Процес форматирања може да потраје неколико секунди. Сачекајте.</translation>
 <translation id="3305661444342691068">Отвори PDF у прегледу</translation>
-<translation id="3306684685104080068">Омогућите пребацивање у услуге засноване на клауду попут Google Hangouts-а.</translation>
+<translation id="3307871847038842490">Овој страници је дозвољено да чува промене у оригиналне датотеке.</translation>
 <translation id="3308006649705061278">Организациона јединица (OU)</translation>
 <translation id="3308116878371095290">Овој страници је забрањено да поставља колачиће.</translation>
 <translation id="3308134619352333507">Сакриј дугме</translation>
@@ -1635,7 +1646,6 @@
 <translation id="3462413494201477527">Желите ли да откажете подешавање налога?</translation>
 <translation id="3464012987031883895">Сајт приступа аудио улазу</translation>
 <translation id="346431825526753">Ово је налог за децу којим управља <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Стримујте видео или аудио датотеку</translation>
 <translation id="3468999815377931311">Android телефон</translation>
 <translation id="3470442499439619530">Уклони овог корисника</translation>
 <translation id="3473479545200714844">Лупа екрана</translation>
@@ -1658,6 +1668,7 @@
 <translation id="3496213124478423963">Умањи</translation>
 <translation id="3497560059572256875">Дели дудл логотип</translation>
 <translation id="3505030558724226696">Опозови приступ уређају</translation>
+<translation id="3505635633742443645">Не можете да користите HDMI порт базне станице ако се USB типа C порт користи за видео излаз. Користите неки други порт за један од екрана.</translation>
 <translation id="3507421388498836150">Тренутне дозволе за „<ph name="EXTENSION_NAME" />“</translation>
 <translation id="3507888235492474624">Поново скенирајте Bluetooth уређаје</translation>
 <translation id="3508920295779105875">Одабери други директоријум...</translation>
@@ -1710,6 +1721,7 @@
 <translation id="3576324189521867626">Инсталирано је</translation>
 <translation id="3578594933904494462">Садржај ове картице се дели.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; жели да дели штампач &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; са групом чији сте власник: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Ако прихватите, сви чланови групе ће моћи да штампају помоћу штампача.</translation>
+<translation id="357889014807611375">Wi-Fi са ограничењем</translation>
 <translation id="3584169441612580296">Читање слика, музике и других медија са рачунара и мењање тих медија</translation>
 <translation id="3587482841069643663">Све</translation>
 <translation id="358796204584394954">Унесите овај кôд на „<ph name="DEVICE_NAME" />“ да бисте обавили упаривање:</translation>
@@ -1720,6 +1732,7 @@
 <translation id="359283478042092570">Унеси</translation>
 <translation id="3593965109698325041">Ограничења назива сертификата </translation>
 <translation id="3596235046596950091">Омогући клауд услуге</translation>
+<translation id="3599221874935822507">Испупчено</translation>
 <translation id="3599863153486145794">Брише историју са свих уређаја на којима сте пријављени. Google налог може да има друге облике историје прегледања на <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Информације о веб-захтеву</translation>
 <translation id="3600792891314830896">Искључи звук сајтова који пуштају звук</translation>
@@ -1734,6 +1747,7 @@
 <translation id="3612673635130633812">Додатак &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; је преузео</translation>
 <translation id="3613134908380545408">Прикажи <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Отвори на новој картици</translation>
+<translation id="3615073365085224194">Додирните прстом сензор за отисак прста</translation>
 <translation id="3616113530831147358">Аудио</translation>
 <translation id="3616741288025931835">&amp;Обриши податке прегледања...</translation>
 <translation id="3617891479562106823">Позадине нису доступне. Пробајте поново касније.</translation>
@@ -1815,7 +1829,6 @@
 <translation id="3719826155360621982">Почетна страница</translation>
 <translation id="3720996970802414353">Ипак промени</translation>
 <translation id="3722108462506185496">Грешка при покретању услуге виртуелне машине. Пробајте поново.</translation>
-<translation id="3723158278575423087">Добро дошли у Cast доживљај у Chromium-у!</translation>
 <translation id="3725367690636977613">стране</translation>
 <translation id="3726137731714254362">Уклањањем директоријума одатле прекинуће се дељење, али датотеке неће бити избрисане.</translation>
 <translation id="3727148787322499904">Ако промените ово подешавање, то ће утицати на све дељене мреже</translation>
@@ -1850,7 +1863,6 @@
 <translation id="3764314093345384080">Детаљне информације о верзији</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Комуникација са USB уређајем}one{Комуникација са # USB уређајем}few{Комуникација са # USB уређаја}other{Комуникација са # USB уређаја}}</translation>
 <translation id="3765246971671567135">Читање офлајн смерница за режим демонстрације није успело.</translation>
-<translation id="3766223500670287046">Удаљени екран</translation>
 <translation id="3768037234834996183">Подешавања се синхронизују...</translation>
 <translation id="377050016711188788">Сладолед</translation>
 <translation id="3771294271822695279">Видео датотеке</translation>
@@ -1923,7 +1935,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Подигните, па опет додирните</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхронизација је паузирана</translation>
-<translation id="3862134173397075045">Добро дошли у Cast доживљај у Chrome-у!</translation>
 <translation id="3862693525629180217">Потврди помоћу уграђеног сензора</translation>
 <translation id="3862788408946266506">Апликација са атрибутом манифеста „kiosk_only“ мора да се инсталира у режиму киоска у Chrome ОС-у</translation>
 <translation id="3865414814144988605">Резолуција</translation>
@@ -1972,6 +1983,7 @@
 <translation id="3926002189479431949">Телефон за Smart Lock је промењен</translation>
 <translation id="3927932062596804919">Одбиј</translation>
 <translation id="3930737994424905957">Траже се уређаји</translation>
+<translation id="3930968231047618417">Боја позадине</translation>
 <translation id="3933283459331715412">Вратите избрисану лозинку за <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Отвори аудио снимак на новој картици</translation>
 <translation id="3936925983113350642">Лозинка коју одаберете биће касније потребна за враћање овога. Забележите је на безбедној локацији.</translation>
@@ -1991,6 +2003,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Увезено из IE прегледача</translation>
 <translation id="3950820424414687140">Пријави ме</translation>
+<translation id="3950828138786918475">Овој картици је дозвољено да чита директоријуме на уређају.</translation>
 <translation id="3954354850384043518">У току</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" />×<ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> херца)</translation>
 <translation id="3954953195017194676">Нисте недавно снимили ниједну WebRTC евиденцију догађаја.</translation>
@@ -2009,6 +2022,7 @@
 <translation id="397105322502079400">Израчунавање...</translation>
 <translation id="3975565978598857337">Повезивање са сервером за домен није успело</translation>
 <translation id="397703832102027365">Довршавање...</translation>
+<translation id="3977886311744775419">Аутоматска ажурирања се не преузимају на овом типу мреже, али можете ручно да проверите да ли има ажурирања.</translation>
 <translation id="3979395879372752341">Додат је нови додатак (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Омогући <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Унет је неважећи тип за чување.</translation>
@@ -2148,6 +2162,7 @@
 <translation id="4194570336751258953">Омогући функцију „додирни-за-клик“</translation>
 <translation id="4195643157523330669">Отвори на новој картици</translation>
 <translation id="4195814663415092787">Настави претходну сесију</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> може да сачува промене директно у датотеке у наставку. Овај сајт може да сачува промене само ако је ова картица отворена.</translation>
 <translation id="4198146608511578238">Само држите икону Покретача да бисте причали са Google помоћником.</translation>
 <translation id="4200689466366162458">Прилагођене речи</translation>
 <translation id="4200983522494130825">Нова &amp;картица</translation>
@@ -2195,7 +2210,6 @@
 <translation id="4267953847983678297">Аутоматски се повезуј са мобилном мрежом</translation>
 <translation id="4268025649754414643">Шифровање кључа</translation>
 <translation id="4270393598798225102">Верзија <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Нема подударања</translation>
 <translation id="4275663329226226506">Медији</translation>
 <translation id="4275830172053184480">Поновно покретање уређаја</translation>
 <translation id="4278101229438943600">Помоћник је спреман</translation>
@@ -2344,6 +2358,7 @@
 <translation id="4533985347672295764">CPU време</translation>
 <translation id="4534661889221639075">Пробајте поново.</translation>
 <translation id="4535127706710932914">Подразумевани профил</translation>
+<translation id="4535767533210902251">Сензор за отисак прста је тастер у горњем десном углу тастатуре. Лагано га додирните прстом.</translation>
 <translation id="4538684596480161368">Увек блокирај додатне компоненте које су изван заштићеног окружења на <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Инсталирано је према смерницама за предузеће.</translation>
 <translation id="4542520061254486227">Читање ваших података на <ph name="WEBSITE_1" /> и <ph name="WEBSITE_2" /></translation>
@@ -2377,6 +2392,7 @@
 <translation id="457386861538956877">Још...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Упарите Bluetooth уређај</translation>
+<translation id="4578012756826807359">Подаци за пријављивање су избрисани.</translation>
 <translation id="4579581181964204535">Није успело пребацивање за <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Грешка при враћању Linux-а</translation>
 <translation id="4582563038311694664">Ресетуј сва подешавања</translation>
@@ -2494,7 +2510,6 @@
 <translation id="4763830802490665879">Колачићи са више сајтова ће бити обрисани при затварању.</translation>
 <translation id="4765582662863429759">Дозвољава да Android Messages преноси SMS-ове са телефона на Chromebook</translation>
 <translation id="4768332406694066911">Имате сертификате следећих организација који вас идентификују</translation>
-<translation id="4772404146526168240">Оба екрана</translation>
 <translation id="4776146737004271126">Отвори подешавања Android-а</translation>
 <translation id="4776917500594043016">Лозинка за <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play продавница</translation>
@@ -2602,7 +2617,6 @@
 <translation id="4927846293686536410">Пријавите се да би вам обележивачи, историја, лозинке и друга подешавања били доступни на свим уређајима. Аутоматски ћете бити пријављени и на Google услуге.</translation>
 <translation id="4929386379796360314">Одредишта за штампање</translation>
 <translation id="4930714375720679147">Укључи</translation>
-<translation id="4931132176527519925">Увек користи пресликавање</translation>
 <translation id="4932733599132424254">Датум</translation>
 <translation id="4933484234309072027">уграђено у сајт <ph name="URL" /></translation>
 <translation id="493571969993549666">Додај корисника под надзором</translation>
@@ -2642,6 +2656,7 @@
 <translation id="4992066212339426712">Укључи звук</translation>
 <translation id="4992458225095111526">Потврђивање Powerwash-а</translation>
 <translation id="4992473555164495036">Администратор је ограничио доступне методе уноса.</translation>
+<translation id="4992866843815555470">Базна станица треба да се сервисира. Ако вентилатор не ради, базна станица ће се искључити.</translation>
 <translation id="4992926179187649719">Укључите „Ок Google“</translation>
 <translation id="4994474651455208930">Дозволи сајтовима да захтевају да постану подразумевани обрађивачи протокола</translation>
 <translation id="4994754230098574403">Подешава се</translation>
@@ -2780,7 +2795,6 @@
 <translation id="5233231016133573565">ИД процеса</translation>
 <translation id="5233638681132016545">Нова картица</translation>
 <translation id="5233736638227740678">&amp;Налепи</translation>
-<translation id="5234764350956374838">Одбаци</translation>
 <translation id="5235050375939235066">Желите ли да деинсталирате апликацију?</translation>
 <translation id="5235750401727657667">Замените страницу која се прикаже кад отворите нову картицу</translation>
 <translation id="5238278114306905396">Апликација „<ph name="EXTENSION_NAME" />“ је аутоматски уклоњена.</translation>
@@ -2845,6 +2859,7 @@
 <translation id="5319359161174645648">Google препоручује Chrome</translation>
 <translation id="532247166573571973">Сервер је можда недоступан. Пробајте поново касније.</translation>
 <translation id="5324780743567488672">Аутоматски подеси временску зону помоћу моје локације</translation>
+<translation id="5327129740973624286">Картица <ph name="WINDOW_TITLE" /> има дозволу да чува промене у оригиналне датотеке</translation>
 <translation id="5327248766486351172">Назив</translation>
 <translation id="5327570636534774768">Овај уређај је означен за управљање од стране неког другог домена. Опозовите његово додељивање том домену да бисте подесили режим демонстрације.</translation>
 <translation id="532943162177641444">Додирните обавештење на телефону <ph name="PHONE_NAME" /> да бисте подесили мобилни хотспот који може да се користи на овом уређају.</translation>
@@ -2987,7 +3002,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> жели да</translation>
 <translation id="5534304873398226603">Одбаци слику или видео</translation>
 <translation id="5535941515421698170">Уклања и постојеће податке са овог уређаја</translation>
-<translation id="5537725057119320332">Пребацуј</translation>
 <translation id="5539221284352502426">Сервер је одбио лозинку коју сте унели. Могући разлози обухватају: Лозинка је прекратка. Лозинка мора да садржи бројеве или симболе. Лозинка мора да се разликује од претходних лозинки.</translation>
 <translation id="5541687815721799001">Користи апликацију</translation>
 <translation id="5542132724887566711">Профил</translation>
@@ -3298,7 +3312,6 @@
 <translation id="5997337190805127100">Сазнајте више о приступу сајтовима</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> резултата за „<ph name="SEARCH_TEXT" />“</translation>
 <translation id="6002458620803359783">Жељени гласови</translation>
-<translation id="6005695835120147974">Рутер за медије</translation>
 <translation id="6006484371116297560">Класична</translation>
 <translation id="6007240208646052708">Гласовна претрага на вашем језику није доступна.</translation>
 <translation id="6009781704028455063">Уграђени сензор</translation>
@@ -3498,7 +3511,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Нов штампач на мрежи}one{Нови штампачи на мрежи}few{Нови штампачи на мрежи}other{Нови штампачи на мрежи}}</translation>
 <translation id="6286708577777130801">Детаљи сачуваних лозинки</translation>
 <translation id="6289452883081499048">Персонализоване Google услуге, као што је Play</translation>
-<translation id="6290556621549272952">Можете да користите ову функцију да бисте приказивали садржај са Chromium-а на ТВ-у или другим уређајима.</translation>
 <translation id="6291949900244949761">Питај када сајт жели да приступи USB уређајима (препоручено)</translation>
 <translation id="6291953229176937411">&amp;Прикажи у Finder-у</translation>
 <translation id="6295158916970320988">Сви сајтови</translation>
@@ -3562,6 +3574,7 @@
 <translation id="6395423953133416962">Шаљи <ph name="BEGIN_LINK1" />информације<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />показатеље<ph name="END_LINK2" /> о систему</translation>
 <translation id="6396988158856674517">Не дозволи да сајтови користе сензоре за покрет</translation>
 <translation id="6397094776139756010">Опције синхронизације и персонализације</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> ће моћи да чува промене директно у датотеке у директоријуму у наставку. Овај сајт може да сачува промене само ако је ова картица отворена.</translation>
 <translation id="6398715114293939307">Уклоните Google Play продавницу</translation>
 <translation id="6398765197997659313">Изађи из режима целог екрана</translation>
 <translation id="6399774419735315745">Шпијунка</translation>
@@ -3606,11 +3619,13 @@
 <translation id="6455264371803474013">На одређеним сајтовима</translation>
 <translation id="6455894534188563617">&amp;Нови директоријум</translation>
 <translation id="6456394469623773452">Добар</translation>
+<translation id="6456955391422100996">Оглас је уклоњен.</translation>
 <translation id="645705751491738698">Настави блокирање JavaScript-а</translation>
 <translation id="6458701200018867744">Отпремање није успело (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Користи избор за проналажење</translation>
 <translation id="6459799433792303855">Активни прозор је померен на други екран.</translation>
 <translation id="6460601847208524483">Пронађи следеће</translation>
+<translation id="6461170143930046705">Траже се мреже...</translation>
 <translation id="6463795194797719782">&amp;Измени</translation>
 <translation id="6466988389784393586">&amp;Отвори све обележиваче</translation>
 <translation id="6467304607960172345">Оптимизујте видео снимке преко целог екрана</translation>
@@ -3649,6 +3664,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Повезани сте на <ph name="NETWORK_TYPE" /> мрежу.</translation>
 <translation id="6527303717912515753">Дели</translation>
 <translation id="6528513914570774834">Дозволите другим корисницима овог уређаја да користе ову мрежу</translation>
 <translation id="652948702951888897">Историја Chrome-а</translation>
@@ -3745,7 +3761,6 @@
 <translation id="6680650203439190394">Оцените</translation>
 <translation id="6681668084120808868">Снимите фотографију</translation>
 <translation id="6681964764822470072">„<ph name="APP_NAME" />“ ће се деинсталирати.</translation>
-<translation id="6685083257944113180">Заустави, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Отвори Google Play</translation>
 <translation id="6686490380836145850">Затвори картице са десне стране</translation>
 <translation id="6686817083349815241">Сачувајте лозинку</translation>
@@ -3853,6 +3868,7 @@
 <translation id="6845038076637626672">Отвори увећано</translation>
 <translation id="6845325883481699275">Помозите нам да побољшамо Chrome безбедност</translation>
 <translation id="6848388270925200958">Тренутно имате неке картице које могу да се користе само на овом уређају</translation>
+<translation id="6850286078059909152">Боја текста</translation>
 <translation id="6851497530878285708">Апликација је омогућена</translation>
 <translation id="6853388645642883916">Програм за ажурирање је у стању спавања</translation>
 <translation id="68541483639528434">Затвори друге картице</translation>
@@ -3902,7 +3918,6 @@
 <translation id="6923132443355966645">Померајте/кликните</translation>
 <translation id="6923633482430812883">Грешка при учитавању дељене датотеке. Проверите да ли сервер датотека са којим се повезујете подржава SMBv2 или новију верзију.</translation>
 <translation id="6930036377490597025">Екстерни безбедносни кључ или уграђени сензор</translation>
-<translation id="6930242544192836755">Трајање</translation>
 <translation id="693807610556624488">Операција читања премашује максималну дужину атрибута за: „<ph name="DEVICE_NAME" />“.</translation>
 <translation id="6941937518557314510">Пријавите се на <ph name="TOKEN_NAME" /> да бисте потврдили идентитет хосту <ph name="HOST_NAME" /> помоћу сертификата.</translation>
 <translation id="6943176775188458830">Откажи штампање</translation>
@@ -3916,6 +3931,7 @@
 <translation id="6951153907720526401">Обрађивачи плаћања</translation>
 <translation id="6951663584153258142">Организација тражи да ажурирате овај уређај</translation>
 <translation id="6953878494808481632">Сродне информације</translation>
+<translation id="6953916367503892689">{0,plural, =1{Датотека: <ph name="FILES" />}one{Датотеке: <ph name="FILES" />}few{Датотеке: <ph name="FILES" />}other{Датотеке: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Испитивање искачућег прозора</translation>
 <translation id="6957044667612803194">Овај безбедносни кључ не подржава PIN-ове</translation>
 <translation id="6957231940976260713">Назив услуге</translation>
@@ -4128,7 +4144,6 @@
 <translation id="7254554697254365959">Превођење ове странице није успело.</translation>
 <translation id="7254951428499890870">Да ли стварно желите да покренете „<ph name="APP_NAME" />“ у режиму дијагностике?</translation>
 <translation id="7255002516883565667">Тренутно имате једну картицу која може да се користи само на овом уређају</translation>
-<translation id="7255220508626648026">Пребацује се: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Додирните поново безбедносни кључ да бисте потврдили ресетовање. Све информације сачуване на безбедносном кључу, укључујући његов PIN, биће избрисане.</translation>
 <translation id="7255935316994522020">Примени</translation>
 <translation id="7256069762010468647">Сајт користи камеру</translation>
@@ -4262,6 +4277,7 @@
 <translation id="7456142309650173560">програмер</translation>
 <translation id="7456847797759667638">Отвори локацију...</translation>
 <translation id="7458168200501453431">Користи исту проверу правописа као Google претрага. Текст који унесете у прегледач се шаље Google-у.</translation>
+<translation id="7460045493116006516">Актуелна тема коју сте инсталирали</translation>
 <translation id="7461924472993315131">Закачи</translation>
 <translation id="746216226901520237">Следећи пут ће телефон откључати <ph name="DEVICE_TYPE" />. Можете да искључите Smart Lock у подешавањима.</translation>
 <translation id="7463006580194749499">Додај особу</translation>
@@ -4321,6 +4337,7 @@
 <translation id="7554791636758816595">Нова картица</translation>
 <translation id="7556033326131260574">Smart Lock није успео да верификује налог. Унесете лозинку да бисте приступили.</translation>
 <translation id="7556242789364317684">Нажалост, <ph name="SHORT_PRODUCT_NAME" /> не може да поврати подешавања. Да би отклонио грешку, <ph name="SHORT_PRODUCT_NAME" /> мора да врати уређај на почетна подешавања помоћу Powerwash-а.</translation>
+<translation id="7559444627302317199">Проверите мрежну везу и пробајте поново.</translation>
 <translation id="7559719679815339381">Сачекајте...Киоск апликација се тренутно ажурира. Не уклањајте USB меморију.</translation>
 <translation id="7561196759112975576">Увек</translation>
 <translation id="7563991800558061108">Да бисте исправили ову грешку, треба да се пријавите на Google налог
@@ -4563,7 +4580,6 @@
 <translation id="7887334752153342268">Направи дупликат</translation>
 <translation id="7887864092952184874">Bluetooth миш је упарен</translation>
 <translation id="7889565820482017512">Величина приказа</translation>
-<translation id="7889966925761734854">Тражење</translation>
 <translation id="7893008570150657497">да приступа сликама, музици и другим медијима са рачунара</translation>
 <translation id="7893153962594818789">Bluetooth је искључен на овом <ph name="DEVICE_TYPE" />-у. Унесите лозинку и укључите Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (подразумевано)</translation>
@@ -4571,7 +4587,6 @@
 <translation id="7898627924844766532">Задржи на траци с алаткама</translation>
 <translation id="7898725031477653577">Увек преводи</translation>
 <translation id="790040513076446191">Управљање подешавањима у вези са приватношћу</translation>
-<translation id="7902874111237641165">Smooth Motion [бета]</translation>
 <translation id="7903345046358933331">Страница је престала да се одазива. Можете да сачекате да почне да се одазива или да је затворите.</translation>
 <translation id="7903742244674067440">Имате сачуване сертификате који идентификују ове ауторитете за издавање сертификата</translation>
 <translation id="7903925330883316394">Помоћни процес: <ph name="UTILITY_TYPE" /></translation>
@@ -4683,6 +4698,7 @@
 <translation id="8037117027592400564">Читање свог текста изговореног помоћу синтетизованог говора</translation>
 <translation id="8037357227543935929">Питај (подразумевано)</translation>
 <translation id="803771048473350947">Датотека</translation>
+<translation id="8042142357103597104">Непрозирност текста</translation>
 <translation id="8044899503464538266">Споро</translation>
 <translation id="8045253504249021590">Синхронизација је заустављена преко Google контролне табле.</translation>
 <translation id="8045923671629973368">Унесите ИД апликације или URL веб-продавнице</translation>
@@ -4719,7 +4735,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Ову услугу можете да искључите у Подешавањима.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN-ови се не подударају</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> користи подешавања проксија из додатка</translation>
-<translation id="8099495042588009598">Још дозвола</translation>
 <translation id="8101987792947961127">Powerwash је обавезан при следећем поновном покретању</translation>
 <translation id="8102159139658438129">Идите у <ph name="LINK_BEGIN" />Подешавања<ph name="LINK_END" /> да бисте видели опције за повезани телефон</translation>
 <translation id="8104696615244072556">Обавите Powerwash уређаја <ph name="IDS_SHORT_PRODUCT_NAME" /> и вратите га на претходну верзију.</translation>
@@ -4771,8 +4786,10 @@
     Мислим да овај сајт не треба да буде блокиран!</translation>
 <translation id="8184288427634747179">Пребаци на <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Више информација</translation>
+<translation id="8184472985242519288">Једнообразно</translation>
 <translation id="8185331656081929126">Прикажи обавештења када се на мрежи открију нови штампачи</translation>
 <translation id="8186609076106987817">Сервер није могао да пронађе датотеку.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> може да чита све датотеке у директоријуму у наставку. Овај сајт може да види промене директоријума само ако је ова картица отворена.</translation>
 <translation id="8188389033983459049">Проверите подешавања уређаја и укључите га да бисте наставили</translation>
 <translation id="8190193592390505034">Повезивање са мрежом <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Управљање апликацијама, додацима и темама</translation>
@@ -4876,7 +4893,6 @@
 <translation id="833986336429795709">Изаберите апликацију да бисте отворили овај линк</translation>
 <translation id="8342861492835240085">Изаберите колекцију</translation>
 <translation id="834290227245955730">Неважећи PIN. Преосталих покушаја: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">За најбољи квалитет видеа или анимације треба вам широки пропусни опсег. Други људи са спорим везама можда неће видети садржај.</translation>
 <translation id="8351419472474436977">Овај додатак је преузео контролу над подешавањима проксија, што значи да може да мења, прекида или шпијунира све што радите онлајн. Ако нисте сигурни зашто је дошло до ове промене, вероватно вам није потребна.</translation>
 <translation id="8351630282875799764">Батерија се не пуни</translation>
 <translation id="835238322900896202">Дошло је до грешке током деинсталације. Деинсталирајте преко Terminal-а.</translation>
@@ -4909,9 +4925,11 @@
 <translation id="839736845446313156">Региструјте се</translation>
 <translation id="8398877366907290961">Ипак настави</translation>
 <translation id="8400146488506985033">Управљај људима</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> може да сачува промене директно у датотеке у директоријуму у наставку. Овај сајт може да сачува промене само ако је ова картица отворена.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Прво питај (препоручено)</translation>
 <translation id="8418445294933751433">&amp;Прикажи као картицу</translation>
+<translation id="8418905021510211421">Овој страници је дозвољено да чита директоријуме на уређају.</translation>
 <translation id="8419098111404128271">Резултати претраге за „<ph name="SEARCH_TEXT" />“</translation>
 <translation id="8419368276599091549">Добро дошли у <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Промени</translation>
@@ -4931,6 +4949,7 @@
 <translation id="8438566539970814960">Побољшај претраге и прегледање</translation>
 <translation id="8439506636278576865">Понуди превод страница на овом језику</translation>
 <translation id="8440630305826533614">Linux апликације</translation>
+<translation id="844241640324986723">Брисање података за пријављивање није успело.</translation>
 <translation id="8443338615972234259">Отворите нов налог за корисника под надзором одмах.</translation>
 <translation id="8446884382197647889">Сазнајте више</translation>
 <translation id="8447409163267621480">Користите или Ctrl или Alt</translation>
@@ -4946,8 +4965,6 @@
 <translation id="8461914792118322307">Прокси</translation>
 <translation id="8463215747450521436">Менаџер је можда избрисао или онемогућио овог корисника под надзором. Контактирајте менаџера ако желите да наставите да се пријављујете као овај корисник.</translation>
 <translation id="846374874681391779">Трака са преузимањима</translation>
-<translation id="8463807869745732775">"&gt;
-    Сачувани подаци за пријављивање на безбедносном кључу</translation>
 <translation id="8463955938112983119">Додатна компонента <ph name="PLUGIN_NAME" /> је онемогућена.</translation>
 <translation id="8464132254133862871">Овај кориснички налог не испуњава услове за услугу.</translation>
 <translation id="8465252176946159372">Није важећи</translation>
@@ -5013,6 +5030,7 @@
 <translation id="8569002732135253578">Штампа се: <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Нема пронађених одредишта</translation>
 <translation id="8571213806525832805">Последње 4 недеље</translation>
+<translation id="8573403125070227391">Овај оглас користи превише ресурса за уређај, па га је Chrome уклонио.</translation>
 <translation id="8574990355410201600">Увек дозволи звук на <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Држите <ph name="KEY_EQUIVALENT" /> да бисте затворили</translation>
 <translation id="8578639784464423491">Дозвољено је највише 99 знакова</translation>
@@ -5036,13 +5054,13 @@
 <translation id="8609465669617005112">Премести нагоре</translation>
 <translation id="8610103157987623234">Погрешан формат. Пробајте поново</translation>
 <translation id="8615618338313291042">Апл. у режиму без архивирања: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Избаци сенку</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Статус роминга</translation>
 <translation id="8620765578342452535">Конфигуриши мрежне везе</translation>
 <translation id="8621866727807194849">На рачунару постоји штетан софтвер. Chrome ће га уклонити, вратиће подешавања и онемогући ће додатке. Тако ће прегледач поново почети да нормално ради.</translation>
 <translation id="8621979332865976405">Делите цео екран</translation>
 <translation id="862542460444371744">&amp;Додаци</translation>
-<translation id="8627151598708688654">Изаберите извор</translation>
 <translation id="862727964348362408">Обустављено</translation>
 <translation id="862750493060684461">CSS кеш</translation>
 <translation id="8627795981664801467">Само безбедне везе</translation>
@@ -5096,6 +5114,7 @@
 <translation id="8688579245973331962">Не видите своје име?</translation>
 <translation id="8688591111840995413">Погрешна лозинка</translation>
 <translation id="8688672835843460752">Доступно</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Open &amp;Location... (Отвори локацију)</translation>
 <translation id="869884720829132584">Мени апликација</translation>
 <translation id="869891660844655955">Датум истека</translation>
@@ -5259,6 +5278,7 @@
 <translation id="891365694296252935">Шаљите податке о коришћењу и дијагностичке податке. Овај уређај тренутно аутоматски шаље податке о дијагностици, уређају и коришћењу апликација Google-у. Те информације се неће користити за идентификацију детета и помоћи ће у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. То подешавање примењује власник. Ако за дете укључите додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу детета. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Учитавање предлога</translation>
 <translation id="8916476537757519021">Подоквир Без архивирања: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780">Картица <ph name="WINDOW_TITLE" /> има дозволу да чита директоријум на уређају</translation>
 <translation id="8919275547519617350">Да би вам све лозинке биле доступне на свим уређајима, пријавите се и укључите синхронизацију.</translation>
 <translation id="8921366488406707015">Безбедносни кључ се верификује...</translation>
 <translation id="8922013791253848639">Увек дозвољавај огласе на овом сајту</translation>
@@ -5288,7 +5308,6 @@
 <translation id="8965037249707889821">Унесите стару лозинку</translation>
 <translation id="8966870118594285808">Поново отворите картицу ако сте је случајно затворили</translation>
 <translation id="8967866634928501045">За приказивање притисните Alt + Shift + A</translation>
-<translation id="8970203673128054105">Прикажи листу режима пребацивања</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Проверите са администратором мреже да бисте се уверили да заштитни зид не блокира преузимања са Google сервера.</translation>
 <translation id="8973557916016709913">Уклони ниво зумирања</translation>
@@ -5437,6 +5456,7 @@
 <translation id="9214520840402538427">Упс! Време покретања атрибута за време инсталације је истекло. Контактирајте представника подршке.</translation>
 <translation id="9214695392875603905">Мафин</translation>
 <translation id="9215293857209265904">Додат је „<ph name="EXTENSION_NAME" />“</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> ће моћи да сачува промене директно у датотеку у наставку. Овај сајт може да сачува промене само ако је ова картица отворена.</translation>
 <translation id="9218430445555521422">Подеси као подразумеван</translation>
 <translation id="9219103736887031265">Слике</translation>
 <translation id="9220525904950070496">Уклањање налога</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index e22fa16..10b45f1 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Det gick inte att starta den virtuella maskinen. Försök igen.</translation>
 <translation id="1089439967362294234">Ändra lösenordet</translation>
 <translation id="1090126737595388931">Inga bakgrundsprogram körs</translation>
+<translation id="1090290614672149983">Vill du spara ändringar i originalfilen?</translation>
 <translation id="1090918500949388876">Starta assistenten när du säger ”Ok Google” och skärmen är aktiverad</translation>
 <translation id="1091767800771861448">Tryck på Esc om du vill hoppa över (endast versioner som inte är officiella).</translation>
 <translation id="1093457606523402488">Synliga nätverk:</translation>
 <translation id="1094607894174825014">Läs- eller skrivåtgärden begärdes med en ogiltig offset på: <ph name="DEVICE_NAME" />.</translation>
 <translation id="1097658378307015415">Aktivera nätverket <ph name="NETWORK_ID" /> genom att logga in som gäst innan du loggar in</translation>
+<translation id="110029732810301672">Den här fliken har behörighet att spara originalfiler.</translation>
 <translation id="1103523840287552314">Översätt alltid <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Stopp</translation>
 <translation id="1110155001042129815">Vänta</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Solglasögon</translation>
 <translation id="1151917987301063366">Låt alltid <ph name="HOST" /> använda enhetens sensorer</translation>
 <translation id="1153356358378277386">Kopplade enheter</translation>
-<translation id="1156488781945104845">Aktuell tid</translation>
 <translation id="1161575384898972166">Logga in på <ph name="TOKEN_NAME" /> om du vill exportera klientcertifikatet.</translation>
 <translation id="1163931534039071049">&amp;Visa ramkälla</translation>
 <translation id="1164674268730883318">Vill du inaktivera Smart Lock för <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Lagringsinställningar för Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookies och andra webbplatsdata</translation>
 <translation id="127668050356036882">Stäng alla fönster</translation>
-<translation id="1277908057200820621">Visa enhetslista</translation>
 <translation id="1280820357415527819">Söker efter mobilnätverk</translation>
 <translation id="1285320974508926690">Översätt aldrig den här webbplatsen</translation>
 <translation id="1285484354230578868">Spara data i Google Drive-kontot</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Hemnätverk, ingen roaming</translation>
 <translation id="1316136264406804862">Söker ...</translation>
 <translation id="1316495628809031177">Synkroniseringen har pausats</translation>
+<translation id="1317637799698924700">Dockningsstationen körs i kompatibilitetsläge med USB Type-C.</translation>
 <translation id="1322046419516468189">Visa och hantera sparade lösenord i <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Logga in i Chrome om du vill ha samma flikar tillgängliga på alla enheter.</translation>
 <translation id="1327074568633507428">Skrivare på Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Din <ph name="BEGIN_LINK" />webbläsare hanteras<ph name="END_LINK" /> av <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Kör Linux-verktyg, redigerare och IDE:er på <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Läs mer&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Välj fil</translation>
+<translation id="1370749010280229230">Problem med en skärm ansluten till dockningsstationen</translation>
 <translation id="1371301976177520732">Bokmärken, lösenord, historik med mera på alla dina enheter</translation>
 <translation id="1372841398847029212">Synkronisera till ditt konto</translation>
 <translation id="1374844444528092021">Det certifikat som krävs av nätverket <ph name="NETWORK_NAME" /> är inte installerat eller inte längre giltigt. Hämta ett nytt certifikat och försök ansluta igen.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Webbsida, en enda fil</translation>
 <translation id="1451917004835509682">Lägg till kontrollerad person</translation>
 <translation id="1454223536435069390">T&amp;a en skärmdump</translation>
+<translation id="1458243790901188746">{0,plural, =1{Mapp: <ph name="DIRECTORIES" />}other{Mappar: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Sökmotorer som lagts till av tilläggsprogram</translation>
 <translation id="146000042969587795">Ramen blockerades eftersom den innehåller icke-säkert innehåll.</translation>
 <translation id="146219525117638703">ONC-tillstånd</translation>
@@ -443,6 +446,7 @@
 <translation id="1650371550981945235">Visa inmatningsalternativ</translation>
 <translation id="1651008383952180276">Du måste ange samma lösenfras två gånger</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Lägg till skrivaren i Google Cloud Print så att du kan skriva ut var du än befinner dig.}other{Lägg till # skrivare i Google Cloud Print så att du kan skriva ut var du än befinner dig.}}</translation>
+<translation id="1656528038316521561">Bakgrundens genomskinlighet</translation>
 <translation id="1657406563541664238">Hjälp till att göra <ph name="PRODUCT_NAME" /> bättre genom att automatiskt skicka användningsstatistik och felrapporter till Google</translation>
 <translation id="1658424621194652532">Den här sidan använder din mikrofon.</translation>
 <translation id="1660204651932907780">Tillåt att ljud spelas upp på webbplatser (rekommenderas)</translation>
@@ -458,6 +462,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> vill få tillgång till din säkerhetsnyckels märke och modell.</translation>
 <translation id="1679068421605151609">Verktyg för utvecklare</translation>
 <translation id="1679806121152819234">PluginVM</translation>
+<translation id="1679810534535368772">Vill du avsluta?</translation>
 <translation id="167983332380191032">Hanteringstjänsten skickade ett HTTP-fel.</translation>
 <translation id="1680849702532889074">Ett fel uppstod under installationen av Linux-programmet.</translation>
 <translation id="16815041330799488">Ge inte webbplatser tillgång till text och bilder som kopierats till Urklipp</translation>
@@ -509,6 +514,7 @@
 <translation id="1746402432151920942">Identifierare för skyddad media</translation>
 <translation id="175196451752279553">Ö&amp;ppna en stängd flik igen</translation>
 <translation id="1753905327828125965">Mest besökta</translation>
+<translation id="1755601632425835748">Textstorlek</translation>
 <translation id="1756681705074952506">Inmatningsmetod</translation>
 <translation id="1757301747492736405">Avinstallation väntar</translation>
 <translation id="175772926354468439">Aktivera tema</translation>
@@ -628,6 +634,7 @@
 <translation id="1918141783557917887">&amp;Mindre</translation>
 <translation id="1919345977826869612">Annonser</translation>
 <translation id="1919814239594435008">Plugin utanför sandlåda har tillåtits</translation>
+<translation id="1920390473494685033">Kontakter</translation>
 <translation id="1921050530041573580">Parkoppla mobilen med Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Få Googles teknik i <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -784,6 +791,7 @@
 <translation id="2177950615300672361">Fliken Inkognito: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> på <ph name="PEPPER_PLUGIN_DOMAIN" /> vill ha åtkomst till datorn</translation>
 <translation id="2178614541317717477">CA-kompromiss</translation>
+<translation id="2179849162388791084">Det gick inte att samla in inloggningsuppgifter från säkerhetsnyckeln.</translation>
 <translation id="218070003709087997">Använd ett nummer som anger hur många kopior som ska skrivas ut (1 till 999).</translation>
 <translation id="2184515124301515068">Låt Chrome välja när webbplatser kan spela upp ljud (rekommenderas)</translation>
 <translation id="2187895286714876935">Fel vid import av servercertifikat</translation>
@@ -862,7 +870,6 @@
 <translation id="2277255602909579701">Alla cookies och all webbplatsdata</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 objekt har kopierats}other{# objekt har kopierats}}</translation>
 <translation id="2278562042389100163">Öppna webbläsarfönster</translation>
-<translation id="2279874276457403668">Det går bara att skapa en session i taget.</translation>
 <translation id="2280486287150724112">Högermarginal</translation>
 <translation id="2282146716419988068">GPU-bearbetning</translation>
 <translation id="2282155092769082568">Webbadress för automatisk konfiguration:</translation>
@@ -915,7 +922,6 @@
 <translation id="2352810082280059586">Anteckningar på låsskärmen sparas automatiskt i <ph name="LOCK_SCREEN_APP_NAME" />. Den senaste anteckningen visas på låsskärmen.</translation>
 <translation id="2353297238722298836">Kamera och mikrofon är tillåtna</translation>
 <translation id="2356070529366658676">Fråga</translation>
-<translation id="2357949918965361754">Du kan använda funktionen för att visa innehåll från Chrome på TV:n eller andra enheter.</translation>
 <translation id="2359345697448000899">Hantera tillägg genom att klicka på Tillägg på menyn Verktyg.</translation>
 <translation id="2359808026110333948">Fortsätt</translation>
 <translation id="236117173274098341">Optimera</translation>
@@ -964,6 +970,7 @@
 <translation id="2436720498717686157">Din organisation kräver att den här enheten uppdateras omedelbart</translation>
 <translation id="2439545803278355377">Ange den nya pinkoden. Pinkoden måste bestå av minst fyra tecken och får innehålla bokstäver, siffror och andra tecken.</translation>
 <translation id="2440604414813129000">Visa &amp;källa</translation>
+<translation id="2442916515643169563">Textskugga</translation>
 <translation id="2444119669991608829">Är sidan inte på <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Tilläggets rotkatalog måste anges.</translation>
 <translation id="2445484935443597917">Skapa en ny profil</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">Inte efter</translation>
 <translation id="2739191690716947896">Felsökning</translation>
 <translation id="2739240477418971307">Ändra tillgänglighetsinställningarna</translation>
+<translation id="274029851662193272">Nedsänkt</translation>
 <translation id="2740393541869613458">granska webbplatser som den kontrollerade användaren har besökt och</translation>
 <translation id="2741912629735277980">Visa användargränssnitt på inloggningsskärmen</translation>
 <translation id="274290345632688601">Återställer Linux-appar och Linux-filer</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">Genvägen finns redan</translation>
 <translation id="2807517655263062534">Filer som du laddar ned visas här</translation>
 <translation id="2809586584051668049">och ytterligare <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt stöds inte</translation>
 <translation id="2812944337881233323">Testa att logga ut och logga in igen</translation>
 <translation id="2812989263793994277">Visa inga bilder</translation>
 <translation id="281390819046738856">Begäran kunde inte signeras.</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">Leverantör</translation>
 <translation id="2844169650293029770">USB-C-enhet (främre porten på vänster sida)</translation>
 <translation id="2845382757467349449">Visa alltid bokmärkesfältet</translation>
-<translation id="2847759467426165163">Casta till</translation>
 <translation id="284805635805850872">Vill du ta bort den skadliga programvaran?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Rensningen misslyckades</translation>
@@ -1296,6 +1304,7 @@
     Meddelande från servern: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Lägg till mediegalleri efter katalog</translation>
 <translation id="2910318910161511225">Anslut till ett nätverk och försök igen</translation>
+<translation id="2910518940971897750">Spara originalfil</translation>
 <translation id="2913331724188855103">Tillåt att webbplatser sparar och läser cookiedata (rekommenderas)</translation>
 <translation id="2915102088417824677">Visa aktivitetslogg</translation>
 <translation id="2915873080513663243">Automatisk genomsökning</translation>
@@ -1360,12 +1369,14 @@
 <translation id="3013291976881901233">MIDI-enheter</translation>
 <translation id="3015639418649705390">Starta om nu</translation>
 <translation id="3016329696181678353">Det gick inte att konfigurera <ph name="PRINTER_NAME" /> automatiskt. Ange avancerade utskriftsalternativ.</translation>
+<translation id="3016381065346027039">Inga loggposter</translation>
 <translation id="3016641847947582299">Komponenten har uppdaterats</translation>
 <translation id="3016780570757425217">Veta din plats</translation>
 <translation id="3017079585324758401">Bakgrund</translation>
 <translation id="3020183492814296499">Genvägar</translation>
 <translation id="3020990233660977256">Serienummer: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Fjäril</translation>
+<translation id="3021408157810018664">Vill du spara ändringar i originalfilerna?</translation>
 <translation id="3021426244864538700">Har åtkomst till den här webbplatsens data</translation>
 <translation id="3021678814754966447">&amp;Visa ramkälla</translation>
 <translation id="3022978424994383087">Jag hörde inte.</translation>
@@ -1458,6 +1469,7 @@
 <translation id="3170072451822350649">Du kan även hoppa över inloggningen och <ph name="LINK_START" />surfa som gäst<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">En webbplats tar emot videoindata</translation>
 <translation id="3177909033752230686">Sidans språk:</translation>
+<translation id="3179982752812949580">Textens teckensnitt</translation>
 <translation id="3181954750937456830">Säker webbsökning (skyddar dig och enheten från skadliga webbplatser)</translation>
 <translation id="3182749001423093222">Stavningskontroll</translation>
 <translation id="3183139917765991655">Profilimportör</translation>
@@ -1510,7 +1522,6 @@
 <translation id="3275778913554317645">Öppna som fönster</translation>
 <translation id="3278001907972365362">Ditt Google-konto/dina Google-konton kräver åtgärd</translation>
 <translation id="3279230909244266691">Detta kan ta några minuter. Den virtuella maskinen startas.</translation>
-<translation id="3279741024917655738">Visa videor i helskärmsläge på</translation>
 <translation id="3280237271814976245">Spara so&amp;m...</translation>
 <translation id="3280243678470289153">Fortsätt i Chrome</translation>
 <translation id="3281892622610078515">Filer och program som sätts i karantän:</translation>
@@ -1532,7 +1543,7 @@
 <translation id="3303855915957856445">Inga sökresultat hittades</translation>
 <translation id="3305389145870741612">Formateringen kan ta ett par sekunder. Vänta.</translation>
 <translation id="3305661444342691068">Öppna PDF i förhandsgranskning</translation>
-<translation id="3306684685104080068">Aktivera castning till molnbaserade tjänster som Google Hangouts.</translation>
+<translation id="3307871847038842490">Den här sidan har behörighet att spara originalfiler.</translation>
 <translation id="3308006649705061278">Organisationsenhet (OU)</translation>
 <translation id="3308116878371095290">Den här sidan har förhindrats att ange cookies.</translation>
 <translation id="3308134619352333507">Dölj knapp</translation>
@@ -1638,7 +1649,6 @@
 <translation id="3462413494201477527">Vill du avbryta konfigurationen av kontot?</translation>
 <translation id="3464012987031883895">En webbplats tar emot ljudindata</translation>
 <translation id="346431825526753">Det här är ett konto för barn som hanteras av <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Streama en video eller ljudfil</translation>
 <translation id="3468999815377931311">Android-mobil</translation>
 <translation id="3470442499439619530">Ta bort den här användaren</translation>
 <translation id="3473479545200714844">Skärmförstorare</translation>
@@ -1661,6 +1671,7 @@
 <translation id="3496213124478423963">Zooma ut</translation>
 <translation id="3497560059572256875">Dela doodle</translation>
 <translation id="3505030558724226696">Återkalla enhetsåtkomst</translation>
+<translation id="3505635633742443645">Dockningsstationens HDMI-port kan inte användas när USB Type-C-porten används för videoutdata. Använd en annan port för en av skärmarna.</translation>
 <translation id="3507421388498836150">Aktuella behörigheter för <ph name="EXTENSION_NAME" /></translation>
 <translation id="3507888235492474624">Sök efter Bluetooth-enheter igen</translation>
 <translation id="3508920295779105875">Välj en annan mapp...</translation>
@@ -1713,6 +1724,7 @@
 <translation id="3576324189521867626">Appen har installerats</translation>
 <translation id="3578594933904494462">Flikens innehåll delas.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; vill dela skrivaren &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; med en grupp som du äger: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Om du accepterar kan alla medlemmar i gruppen skriva ut till skrivaren.</translation>
+<translation id="357889014807611375">Wi-Fi med datapriser</translation>
 <translation id="3584169441612580296">Läsa och ändra foton, musik och andra media från datorn</translation>
 <translation id="3587482841069643663">Alla</translation>
 <translation id="358796204584394954">Genomför kopplingen genom att skriva den här koden på <ph name="DEVICE_NAME" />:</translation>
@@ -1723,6 +1735,7 @@
 <translation id="359283478042092570">Ange</translation>
 <translation id="3593965109698325041">Certifikatnamnsbegränsningar</translation>
 <translation id="3596235046596950091">Aktivera molntjänster</translation>
+<translation id="3599221874935822507">Upphöjd</translation>
 <translation id="3599863153486145794">Historik rensas från alla inloggade enheter. Det kan finnas andra former av webbhistorik i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Information om webbegäran</translation>
 <translation id="3600792891314830896">Stäng av ljudet på webbplatser</translation>
@@ -1737,6 +1750,7 @@
 <translation id="3612673635130633812">Laddades ned med &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Visa <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Öppna i ny flik</translation>
+<translation id="3615073365085224194">Tryck på fingeravtryckssensorn med fingret.</translation>
 <translation id="3616113530831147358">Ljud</translation>
 <translation id="3616741288025931835">&amp;Rensa webbinformation...</translation>
 <translation id="3617891479562106823">Inga bakgrunder är tillgängliga. Försök igen senare.</translation>
@@ -1818,7 +1832,6 @@
 <translation id="3719826155360621982">Startsida</translation>
 <translation id="3720996970802414353">Byt ändå</translation>
 <translation id="3722108462506185496">Det gick inte att starta den virtuella maskinen. Försök igen.</translation>
-<translation id="3723158278575423087">Välkommen till Cast-upplevelsen i Chromium!</translation>
 <translation id="3725367690636977613">sidor</translation>
 <translation id="3726137731714254362">Om mappar tas bort härifrån avbryts delningen, men inga filer tas bort.</translation>
 <translation id="3727148787322499904">Om du ändrar denna inställning påverkas alla delade nätverk</translation>
@@ -1853,7 +1866,6 @@
 <translation id="3764314093345384080">Detaljerad versionsinformation</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Kommunicera med en USB-enhet}other{Kommunicera med # USB-enheter}}</translation>
 <translation id="3765246971671567135">Det gick inte att läsa in offlinepolicyn för demoläge.</translation>
-<translation id="3766223500670287046">Fjärrskärm</translation>
 <translation id="3768037234834996183">Inställningarna synkroniseras ...</translation>
 <translation id="377050016711188788">Glass</translation>
 <translation id="3771294271822695279">Videofiler</translation>
@@ -1926,7 +1938,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Lyft och tryck sedan igen</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Synkroniseringen har pausats</translation>
-<translation id="3862134173397075045">Välkommen till Cast-upplevelsen i Chrome!</translation>
 <translation id="3862693525629180217">Verifiera via inbyggd sensor</translation>
 <translation id="3862788408946266506">En app med manifestattributet kiosk_only måste installeras i kioskläget i Chrome OS</translation>
 <translation id="3865414814144988605">Upplösning</translation>
@@ -1975,6 +1986,7 @@
 <translation id="3926002189479431949">Du har bytt ut mobilen som är kopplad till Smart Lock</translation>
 <translation id="3927932062596804919">Neka</translation>
 <translation id="3930737994424905957">Söker efter enheter</translation>
+<translation id="3930968231047618417">Bakgrundsfärg</translation>
 <translation id="3933283459331715412">Återställ det raderade lösenordet för <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Öppna ljud i ny flik</translation>
 <translation id="3936925983113350642">Lösenordet du väljer behövs om du vill återställa certifikatet vid ett senare tillfälle. Spara det på ett säkert ställe.</translation>
@@ -1994,6 +2006,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Importerat från IE</translation>
 <translation id="3950820424414687140">Logga in</translation>
+<translation id="3950828138786918475">Den här fliken har läsbehörighet till en mapp på enheten.</translation>
 <translation id="3954354850384043518">Pågår</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> × <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">Du har inga nyligen registrerade WebRTC-händelseloggar.</translation>
@@ -2012,6 +2025,7 @@
 <translation id="397105322502079400">Beräknar ...</translation>
 <translation id="3975565978598857337">Det gick inte att kontakta servern för sfären</translation>
 <translation id="397703832102027365">Slutför ...</translation>
+<translation id="3977886311744775419">Automatiska uppdateringar laddas inte ned med den här nätverkstypen, men du kan söka efter uppdateringar manuellt.</translation>
 <translation id="3979395879372752341">Ett nytt tillägg har lagts till (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Aktivera <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Du har angett en ogiltig typ att spara.</translation>
@@ -2151,6 +2165,7 @@
 <translation id="4194570336751258953">Aktivera klick på styrplattan</translation>
 <translation id="4195643157523330669">Öppna i ny flik</translation>
 <translation id="4195814663415092787">Fortsätt där du slutade</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> kan spara ändringar direkt i följande filer. Webbplatsen kan bara spara ändringar när den här fliken är öppen.</translation>
 <translation id="4198146608511578238">Håll startprogrammets ikon nedtryckt om du vill prata med Google Assistent.</translation>
 <translation id="4200689466366162458">Anpassade ord</translation>
 <translation id="4200983522494130825">Ny &amp;flik</translation>
@@ -2198,7 +2213,6 @@
 <translation id="4267953847983678297">Anslut till mobilnätverk automatiskt</translation>
 <translation id="4268025649754414643">Nyckelchiffrering</translation>
 <translation id="4270393598798225102">Version <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Inga träffar</translation>
 <translation id="4275663329226226506">Media</translation>
 <translation id="4275830172053184480">Starta om enheten</translation>
 <translation id="4278101229438943600">Assistenten är redo</translation>
@@ -2347,6 +2361,7 @@
 <translation id="4533985347672295764">CPU-tid</translation>
 <translation id="4534661889221639075">Försök igen.</translation>
 <translation id="4535127706710932914">Standardprofil</translation>
+<translation id="4535767533210902251">Fingeravtryckssensorn är tangenten högst upp till höger på tangentbordet. Tryck lätt på den med valfritt finger.</translation>
 <translation id="4538684596480161368">Blockera alltid plugin-program som inte är i sandlådeläge på <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Installerad på grund av företagets principer.</translation>
 <translation id="4542520061254486227">Läsa din data på <ph name="WEBSITE_1" /> och <ph name="WEBSITE_2" /></translation>
@@ -2380,6 +2395,7 @@
 <translation id="457386861538956877">Mer...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Koppla Bluetooth-enhet</translation>
+<translation id="4578012756826807359">Dina inloggningsuppgifter har tagits bort.</translation>
 <translation id="4579581181964204535">Det gick inte att casta <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Ett fel uppstod när Linux skulle återställas</translation>
 <translation id="4582563038311694664">Återställ alla inställningar</translation>
@@ -2497,7 +2513,6 @@
 <translation id="4763830802490665879">Cookies från flera webbplatser kommer att rensas vid avslut.</translation>
 <translation id="4765582662863429759">Tillåter Android Messages att dirigera sms från mobilen till Chromebook</translation>
 <translation id="4768332406694066911">Du har certifikat från dessa organisationer som identifierar dig</translation>
-<translation id="4772404146526168240">Båda skärmarna</translation>
 <translation id="4776146737004271126">Öppna Android-inställningarna</translation>
 <translation id="4776917500594043016">Lösenord för <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Butik</translation>
@@ -2605,7 +2620,6 @@
 <translation id="4927846293686536410">Logga in om du vill få tillgång till samma bokmärken, historik, lösenord och andra inställningar på alla dina enheter. Dessutom loggas du in automatiskt på Googles tjänster.</translation>
 <translation id="4929386379796360314">Utskriftsmål</translation>
 <translation id="4930714375720679147">Aktivera</translation>
-<translation id="4931132176527519925">Använd alltid spegling</translation>
 <translation id="4932733599132424254">Datum</translation>
 <translation id="4933484234309072027">inbäddad på <ph name="URL" /></translation>
 <translation id="493571969993549666">Lägg till en kontrollerad användare</translation>
@@ -2645,6 +2659,7 @@
 <translation id="4992066212339426712">Slå på ljudet</translation>
 <translation id="4992458225095111526">Bekräfta återställning med Powerwash</translation>
 <translation id="4992473555164495036">Administratören har begränsat vilka inmatningsmetoder som är tillgängliga.</translation>
+<translation id="4992866843815555470">Dockningsstationen behöver service. Utan fungerande fläkt kommer dockningsstationen att stängas av.</translation>
 <translation id="4992926179187649719">Aktivera ”Ok Google”</translation>
 <translation id="4994474651455208930">Tillåt att webbplatser begär att bli standardhanterare för protokoll</translation>
 <translation id="4994754230098574403">Konfigurerar</translation>
@@ -2783,7 +2798,6 @@
 <translation id="5233231016133573565">Process-ID</translation>
 <translation id="5233638681132016545">Ny flik</translation>
 <translation id="5233736638227740678">K&amp;listra in</translation>
-<translation id="5234764350956374838">Ta bort permanent</translation>
 <translation id="5235050375939235066">Vill du avinstallera appen?</translation>
 <translation id="5235750401727657667">Ersätt den aktuella sidan när du öppnar en ny flik</translation>
 <translation id="5238278114306905396">Appen <ph name="EXTENSION_NAME" /> togs bort automatiskt.</translation>
@@ -2848,6 +2862,7 @@
 <translation id="5319359161174645648">Google rekommenderar Chrome</translation>
 <translation id="532247166573571973">Servern kanske inte kan nås. Försök igen senare.</translation>
 <translation id="5324780743567488672">Ange tidszon automatiskt genom att använda din plats</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – har behörighet att spara originalfiler</translation>
 <translation id="5327248766486351172">Namn</translation>
 <translation id="5327570636534774768">Enheten hanteras av en annan domän. Avregistrera enheten från den domänen innan du konfigurerar demoläge.</translation>
 <translation id="532943162177641444">Konfigurera den trådlösa surfzonen som den här enheten ska kunna använda genom att trycka på aviseringen på din <ph name="PHONE_NAME" />.</translation>
@@ -2990,7 +3005,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> vill</translation>
 <translation id="5534304873398226603">Släng fotot eller videon</translation>
 <translation id="5535941515421698170">Ta även bort befintlig data från den här enheten</translation>
-<translation id="5537725057119320332">Casta</translation>
 <translation id="5539221284352502426">Det angivna lösenordet avvisades av servern. Möjliga orsaker: Lösenordet är för kort. Lösenordet måste innehålla siffror eller symboler. Det får inte vara ett återanvänt lösenord.</translation>
 <translation id="5541687815721799001">Använd app</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3299,7 +3313,6 @@
 <translation id="5997337190805127100">Läs mer om webbplatsåtkomst</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> resultat för <ph name="SEARCH_TEXT" /></translation>
 <translation id="6002458620803359783">Önskade röster</translation>
-<translation id="6005695835120147974">Medierouter</translation>
 <translation id="6006484371116297560">Klassiskt</translation>
 <translation id="6007240208646052708">Röstsökning är inte tillgängligt på ditt språk.</translation>
 <translation id="6009781704028455063">Inbyggd sensor</translation>
@@ -3499,7 +3512,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Ny skrivare i nätverket}other{Nya skrivare i nätverket}}</translation>
 <translation id="6286708577777130801">Sparad lösenordsinformation</translation>
 <translation id="6289452883081499048">Anpassade tjänster från Google, som Play</translation>
-<translation id="6290556621549272952">Du kan använda funktionen för att visa innehåll från Chromium på TV:n eller andra enheter.</translation>
 <translation id="6291949900244949761">Fråga när en webbplats försöker få åtkomst till USB-enheter (rekommenderas)</translation>
 <translation id="6291953229176937411">&amp;Visa i Finder</translation>
 <translation id="6295158916970320988">Alla webbplatser</translation>
@@ -3563,6 +3575,7 @@
 <translation id="6395423953133416962">Skicka <ph name="BEGIN_LINK1" />systeminformation<ph name="END_LINK1" /> och <ph name="BEGIN_LINK2" />statistik<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Blockera webbplatser från att använda enhetens rörelsesensorer</translation>
 <translation id="6397094776139756010">Alternativ för synkronisering och anpassning</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> kan spara ändringar direkt i filer i följande mapp. Webbplatsen kan bara spara ändringar när den här fliken är öppen.</translation>
 <translation id="6398715114293939307">Ta bort Google Play Butik</translation>
 <translation id="6398765197997659313">Avsluta helskärmsläge</translation>
 <translation id="6399774419735315745">Spion</translation>
@@ -3607,11 +3620,13 @@
 <translation id="6455264371803474013">På valda webbplatser</translation>
 <translation id="6455894534188563617">&amp;Ny mapp</translation>
 <translation id="6456394469623773452">Okej</translation>
+<translation id="6456955391422100996">Annonsen har tagits bort.</translation>
 <translation id="645705751491738698">Fortsätt blockera JavaScript</translation>
 <translation id="6458701200018867744">Uppladdningen misslyckades (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Använd markering för sökning</translation>
 <translation id="6459799433792303855">Det aktiva fönstret har flyttats till en annan skärm.</translation>
 <translation id="6460601847208524483">Sök nästa</translation>
+<translation id="6461170143930046705">Söker efter nätverk …</translation>
 <translation id="6463795194797719782">&amp;Redigera</translation>
 <translation id="6466988389784393586">&amp;Öppna alla bokmärken</translation>
 <translation id="6467304607960172345">Optimera videor i helskärmsläge</translation>
@@ -3650,6 +3665,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Du är ansluten till ett <ph name="NETWORK_TYPE" />-nätverk.</translation>
 <translation id="6527303717912515753">Dela</translation>
 <translation id="6528513914570774834">Tillåt att andra användare på den här enheten kan använda det här nätverket</translation>
 <translation id="652948702951888897">Chrome-historik</translation>
@@ -3746,7 +3762,6 @@
 <translation id="6680650203439190394">Hastighet</translation>
 <translation id="6681668084120808868">Ta foto</translation>
 <translation id="6681964764822470072"><ph name="APP_NAME" /> avinstalleras.</translation>
-<translation id="6685083257944113180">Stoppa, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Öppna Google Play</translation>
 <translation id="6686490380836145850">Stäng flikar till höger</translation>
 <translation id="6686817083349815241">Spara lösenordet</translation>
@@ -3854,6 +3869,7 @@
 <translation id="6845038076637626672">Öppna maximerad</translation>
 <translation id="6845325883481699275">Bidra till att göra Chrome säkrare</translation>
 <translation id="6848388270925200958">Du har för närvarande några kort som bara kan användas på den här enheten</translation>
+<translation id="6850286078059909152">Textfärg</translation>
 <translation id="6851497530878285708">Appaktivering</translation>
 <translation id="6853388645642883916">Uppdateringstjänsten är i viloläge</translation>
 <translation id="68541483639528434">Stäng andra flikar</translation>
@@ -3903,7 +3919,6 @@
 <translation id="6923132443355966645">Rulla/klicka</translation>
 <translation id="6923633482430812883">Ett fel uppstod när filresursen skulle delas. Kontrollera att filservern som du ansluter till har stöd för SMB v2 eller senare.</translation>
 <translation id="6930036377490597025">Extern säkerhetsnyckel eller inbyggd sensor</translation>
-<translation id="6930242544192836755">Varaktighet</translation>
 <translation id="693807610556624488">Skrivåtgärden överstiger maxlängden för attributet till: <ph name="DEVICE_NAME" />.</translation>
 <translation id="6941937518557314510">Logga in på <ph name="TOKEN_NAME" /> om du vill autentisera till <ph name="HOST_NAME" /> med ditt certifikat.</translation>
 <translation id="6943176775188458830">Avbryt utskriften</translation>
@@ -3917,6 +3932,7 @@
 <translation id="6951153907720526401">Betalningshanterare</translation>
 <translation id="6951663584153258142">Din organisation uppmanar dig att uppdatera den här enheten</translation>
 <translation id="6953878494808481632">Relaterad information</translation>
+<translation id="6953916367503892689">{0,plural, =1{Fil: <ph name="FILES" />}other{Filer: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Kontrollera popup</translation>
 <translation id="6957044667612803194">Säkerhetsnyckeln har inte stöd för pinkoder</translation>
 <translation id="6957231940976260713">Namn på tjänsten</translation>
@@ -4129,7 +4145,6 @@
 <translation id="7254554697254365959">Det gick inte att översätta sidan.</translation>
 <translation id="7254951428499890870">Vill du starta <ph name="APP_NAME" /> i diagnosläge?</translation>
 <translation id="7255002516883565667">Du har för närvarande ett kort som bara kan användas på den här enheten</translation>
-<translation id="7255220508626648026">Castas: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Tryck på säkerhetsnyckeln igen för att bekräfta återställningen. All information som lagras på säkerhetsnyckeln, inklusive dess pinkod, raderas.</translation>
 <translation id="7255935316994522020">Verkställ</translation>
 <translation id="7256069762010468647">Webbplatsen använder kameran</translation>
@@ -4263,6 +4278,7 @@
 <translation id="7456142309650173560">utvecklare</translation>
 <translation id="7456847797759667638">Öppna plats...</translation>
 <translation id="7458168200501453431">Använder samma stavningskontroll som Google Sök. Text som du anger i webbläsaren skickas till Google.</translation>
+<translation id="7460045493116006516">Aktuellt tema som du har installerat</translation>
 <translation id="7461924472993315131">Fäst</translation>
 <translation id="746216226901520237">Nästa gång låser mobilen upp din <ph name="DEVICE_TYPE" />. Du kan inaktivera Smart Lock i inställningarna.</translation>
 <translation id="7463006580194749499">Lägg till person</translation>
@@ -4322,6 +4338,7 @@
 <translation id="7554791636758816595">Ny flik</translation>
 <translation id="7556033326131260574">Smart Lock kunde inte verifiera ditt konto. Ange ditt lösenord.</translation>
 <translation id="7556242789364317684">Tyvärr kan inte <ph name="SHORT_PRODUCT_NAME" /> återställa dina inställningar. <ph name="SHORT_PRODUCT_NAME" /> måste återställa enheten med en Powerwash för att åtgärda felet.</translation>
+<translation id="7559444627302317199">Kontrollera nätverksanslutningen och försök igen.</translation>
 <translation id="7559719679815339381">Vänta ... Kioskappen håller på att uppdateras. Ta inte bort USB-minnet.</translation>
 <translation id="7561196759112975576">Alltid</translation>
 <translation id="7563991800558061108">Om du vill rätta till det här felet måste du logga in på ditt Google-konto
@@ -4564,7 +4581,6 @@
 <translation id="7887334752153342268">Duplicera</translation>
 <translation id="7887864092952184874">Bluetooth-musen har kopplats</translation>
 <translation id="7889565820482017512">Visningsstorlek</translation>
-<translation id="7889966925761734854">Sök</translation>
 <translation id="7893008570150657497">Få åtkomst till foton, musik och andra medier från datorn</translation>
 <translation id="7893153962594818789">Bluetooth är inaktiverat på <ph name="DEVICE_TYPE" />. Ange lösenordet och aktivera Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Standard)</translation>
@@ -4572,7 +4588,6 @@
 <translation id="7898627924844766532">Spara i verktygsfältet</translation>
 <translation id="7898725031477653577">Översätt alltid</translation>
 <translation id="790040513076446191">Ändra sekretessrelaterade inställningar</translation>
-<translation id="7902874111237641165">Smooth Motion [beta]</translation>
 <translation id="7903345046358933331">Sidan har slutat svara. Du kan vänta tills den svarar eller stänga den.</translation>
 <translation id="7903742244674067440">Du har sparade certifikat som identifierar dessa certifikatutfärdare</translation>
 <translation id="7903925330883316394">Verktyg: <ph name="UTILITY_TYPE" /></translation>
@@ -4684,6 +4699,7 @@
 <translation id="8037117027592400564">Läsa all text som läses upp med syntetiskt tal</translation>
 <translation id="8037357227543935929">Fråga (standard)</translation>
 <translation id="803771048473350947">Arkiv</translation>
+<translation id="8042142357103597104">Textgenomskinlighet</translation>
 <translation id="8044899503464538266">Långsamt</translation>
 <translation id="8045253504249021590">Synkronisering har stoppats via Google Översikt.</translation>
 <translation id="8045923671629973368">Ange program-id eller adress i webbutik</translation>
@@ -4720,7 +4736,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Du kan inaktivera den här tjänsten i inställningarna.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Pinkoderna matchar inte</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> använder proxyinställningar från ett tillägg</translation>
-<translation id="8099495042588009598">Fler behörigheter</translation>
 <translation id="8101987792947961127">Powerwash krävs vid nästa omstart</translation>
 <translation id="8102159139658438129">Du hittar alternativ för den anslutna mobilen i <ph name="LINK_BEGIN" />inställningarna<ph name="LINK_END" /></translation>
 <translation id="8104696615244072556">Använd Powerwash på din <ph name="IDS_SHORT_PRODUCT_NAME" />-enhet och återgå till föregående version</translation>
@@ -4772,8 +4787,10 @@
     Jag tycker inte att den här webbplatsen ska blockeras.</translation>
 <translation id="8184288427634747179">Växla till <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Mer info</translation>
+<translation id="8184472985242519288">Jämnhög</translation>
 <translation id="8185331656081929126">Visa aviseringar när nya skrivare hittas i nätverket</translation>
 <translation id="8186609076106987817">Servern kunde inte hitta filen.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> har läsbehörighet till alla filer i följande mapp. Webbplatsen kan bara läsa ändringar i mappen när den här fliken är öppen.</translation>
 <translation id="8188389033983459049">Kontrollera enhetsinställningarna och aktivera Bluetooth om du vill fortsätta</translation>
 <translation id="8190193592390505034">Ansluter till <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Hantera dina appar, tillägg och teman</translation>
@@ -4877,7 +4894,6 @@
 <translation id="833986336429795709">Välj en app för att öppna länken</translation>
 <translation id="8342861492835240085">Välj en samling</translation>
 <translation id="834290227245955730">Ogiltig pinkod Återstående försök: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Använd hög bandbredd och få bästa möjliga kvalitet på video och animationer. Den som har en långsam anslutning kanske inte kan se innehållet.</translation>
 <translation id="8351419472474436977">Detta tillägg har tagit kontroll över dina proxyinställningar, vilket innebär att det kan ändra, knäcka eller tjuvlyssna på allt du gör på webben. Om du inte vet varför den här ändringen inträffade är den troligen inte önskvärd.</translation>
 <translation id="8351630282875799764">Batteriet laddas inte</translation>
 <translation id="835238322900896202">Ett fel inträffade under installationen. Avinstallera via terminalen.</translation>
@@ -4910,9 +4926,11 @@
 <translation id="839736845446313156">Registrera</translation>
 <translation id="8398877366907290961">Fortsätt ändå</translation>
 <translation id="8400146488506985033">Hantera personer</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> har behörighet att spara ändringar direkt i filerna i följande mapp. Webbplatsen kan bara spara ändringar när den här fliken är öppen.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Fråga först (rekommenderas)</translation>
 <translation id="8418445294933751433">&amp;Visa som flik</translation>
+<translation id="8418905021510211421">Den här sidan har läsbehörighet till en mapp på enheten.</translation>
 <translation id="8419098111404128271">Sökresultat för ”<ph name="SEARCH_TEXT" />”</translation>
 <translation id="8419368276599091549">Välkommen till <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Ändra</translation>
@@ -4932,6 +4950,7 @@
 <translation id="8438566539970814960">Förbättra sökningar och surfandet</translation>
 <translation id="8439506636278576865">Erbjud att översätta sidor på detta språk</translation>
 <translation id="8440630305826533614">Linux-appar</translation>
+<translation id="844241640324986723">Det gick inte att ta bort inloggningsuppgifterna.</translation>
 <translation id="8443338615972234259">Skapa ett nytt konto åt den kontrollerade användaren nu.</translation>
 <translation id="8446884382197647889">Läs mer</translation>
 <translation id="8447409163267621480">Ctrl- eller alt-tangenten måste finnas med</translation>
@@ -4947,8 +4966,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Den här kontrollerade användaren kan ha tagits bort eller inaktiverats av ansvarig hanterare. Kontakta hanteraren om du vill fortsätta att logga in som den här användaren.</translation>
 <translation id="846374874681391779">Nedladdningsfält</translation>
-<translation id="8463807869745732775">"&gt;
-    Inloggningsdata på säkerhetsnyckeln</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> har inaktiverats.</translation>
 <translation id="8464132254133862871">Det här användarkontot kan inte väljas för denna tjänst.</translation>
 <translation id="8465252176946159372">Inte giltig</translation>
@@ -5014,6 +5031,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" /> skrivs ut</translation>
 <translation id="8569682776816196752">Det gick inte att hitta några platser</translation>
 <translation id="8571213806525832805">Senaste fyra veckorna</translation>
+<translation id="8573403125070227391">Den här annonsen använder för många resurser för enheten, så den togs bort i Chrome.</translation>
 <translation id="8574990355410201600">Tillåt alltid ljud på <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Håll nere <ph name="KEY_EQUIVALENT" /> för att avsluta</translation>
 <translation id="8578639784464423491">Får inte vara längre än 99 tecken</translation>
@@ -5037,13 +5055,13 @@
 <translation id="8609465669617005112">Flytta upp</translation>
 <translation id="8610103157987623234">Felaktigt format. Försök igen.</translation>
 <translation id="8615618338313291042">Inkognitoprogram: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Skugga</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Dirigeringsstatus</translation>
 <translation id="8620765578342452535">Konfigurera nätverksanslutningar</translation>
 <translation id="8621866727807194849">Det finns skadlig programvara på datorn. Den skadliga programvaran tas bort, inställningarna återställs och tillägg inaktiveras. Därefter fungerar webbläsaren som den ska igen.</translation>
 <translation id="8621979332865976405">Dela hela skärmen</translation>
 <translation id="862542460444371744">&amp;Tillägg</translation>
-<translation id="8627151598708688654">Välj källa</translation>
 <translation id="862727964348362408">Tillfälligt avstängd</translation>
 <translation id="862750493060684461">CSS-cacheminne</translation>
 <translation id="8627795981664801467">Endast säkra anslutningar</translation>
@@ -5097,6 +5115,7 @@
 <translation id="8688579245973331962">Hittar du inte ditt namn?</translation>
 <translation id="8688591111840995413">Felaktigt lösenord</translation>
 <translation id="8688672835843460752">Tillgängligt</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Öppna plats...</translation>
 <translation id="869884720829132584">Programmeny</translation>
 <translation id="869891660844655955">Utgångsdatum</translation>
@@ -5260,6 +5279,7 @@
 <translation id="891365694296252935">Skicka diagnostik- och användningsdata. Den här enheten skickar för närvarande diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera och inte till att identifiera ditt barn. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Ägaren har gjort denna inställning obligatorisk. Om ytterligare webb- och appaktivitet har aktiverats för ditt barn kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Läser in förslag</translation>
 <translation id="8916476537757519021">Underram i inkognitoläge: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – har läsbehörighet till en mapp på enheten</translation>
 <translation id="8919275547519617350">Logga in och aktivera synkronisering om du vill ha tillgång till alla lösenord oavsett vilken enhet du använder.</translation>
 <translation id="8921366488406707015">Säkerhetsnyckeln verifieras …</translation>
 <translation id="8922013791253848639">Tillåt alltid annonser på den här webbplatsen</translation>
@@ -5289,7 +5309,6 @@
 <translation id="8965037249707889821">Ange det gamla lösenordet</translation>
 <translation id="8966870118594285808">Öppna en flik på nytt om du stängde den av misstag</translation>
 <translation id="8967866634928501045">Visa med alt+skift+A</translation>
-<translation id="8970203673128054105">Visa lista över cast-lägen</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Kontrollera med nätverksadministratören att brandväggen inte blockerar nedladdning från Googles servrar.</translation>
 <translation id="8973557916016709913">Ta bort zoomnivå</translation>
@@ -5438,6 +5457,7 @@
 <translation id="9214520840402538427">Hoppsan! Initieringen av attributen för installationstiden har gått ut. Kontakta din representant för kundsupport.</translation>
 <translation id="9214695392875603905">Muffin</translation>
 <translation id="9215293857209265904"><ph name="EXTENSION_NAME" /> har lagts till</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> kan spara ändringar direkt i följande fil. Webbplatsen kan bara spara ändringar när den här fliken är öppen.</translation>
 <translation id="9218430445555521422">Använd som standard</translation>
 <translation id="9219103736887031265">Bilder</translation>
 <translation id="9220525904950070496">Ta bort konto</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 2d5888b..06a39b49 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Hitilafu imetokea wakati wa kuwasha mashine dhahania. Tafadhali jaribu tena.</translation>
 <translation id="1089439967362294234">Badilisha Nenosiri</translation>
 <translation id="1090126737595388931">Hakuna Programu zinazoendelea katika Mandharinyuma</translation>
+<translation id="1090290614672149983">Je, ungependa kuhifadhi mabadiliko kwenye faili ya mfumo?</translation>
 <translation id="1090918500949388876">Fikia programu ya Mratibu wakati wowote unaposema "Ok Google" ukiwa umewasha skrini yako</translation>
 <translation id="1091767800771861448">Bonyeza ESCAPE ili kuruka (Vijenzi visivyo rasmi pekee).</translation>
 <translation id="1093457606523402488">Mitandao Inayoonekana:</translation>
 <translation id="1094607894174825014">Shughuli za kusoma au kuandika ziliombwa kwa kutumia nambari isiyo sahihi kwenye : "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Kabla ya kuingia, tafadhali ingia kama Mgeni ili kuamilisha mtandao <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Kichupo hiki kinaruhusiwa kuhifadhi kwenye faili za mfumo.</translation>
 <translation id="1103523840287552314">Tafsiri <ph name="LANGUAGE" /> kila wakati</translation>
 <translation id="1108600514891325577">&amp;Acha</translation>
 <translation id="1110155001042129815">Subiri</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Miwani</translation>
 <translation id="1151917987301063366">Ruhusu <ph name="HOST" /> ifikie vitambuzi kila wakati</translation>
 <translation id="1153356358378277386">Vifaa vilivyooanishwa</translation>
-<translation id="1156488781945104845">Saa ya sasa</translation>
 <translation id="1161575384898972166">Tafadhali ingia kwenye <ph name="TOKEN_NAME" /> ili kuhamisha cheti cha mteja.</translation>
 <translation id="1163931534039071049">&amp;Tazama asili ya fremu</translation>
 <translation id="1164674268730883318">Ungependa kuzima kipengele cha Smart Lock cha <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Mipangilio ya Hifadhi ya Adobe Flash Player</translation>
 <translation id="1274997165432133392">Vidakuzi na data ya tovuti nyingine</translation>
 <translation id="127668050356036882">Funga madirisha yako yote</translation>
-<translation id="1277908057200820621">Angalia orodha ya vifaa</translation>
 <translation id="1280820357415527819">Inatafuta mitandao ya simu</translation>
 <translation id="1285320974508926690">Kamwe usitafsiri tovuti hii</translation>
 <translation id="1285484354230578868">Hifadhi data katika akaunti yako ya Hifadhi ya Google</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Uko katika mtandao wako wa kawaida</translation>
 <translation id="1316136264406804862">Inatafuta...</translation>
 <translation id="1316495628809031177">Imesitisha Usawazishaji</translation>
+<translation id="1317637799698924700">Sehemu ya kituo chako itatumia hali inayooana na USB Aina ya C.</translation>
 <translation id="1322046419516468189">Angalia na udhibiti manenosiri yaliyohifadhiwa kwenye <ph name="SAVED_PASSWORDS_STORE" /> yako</translation>
 <translation id="1326317727527857210">Ili upate vichupo kutoka kwenye vifaa vyako vingine, ingia katika Chrome.</translation>
 <translation id="1327074568633507428">Printa kwenye Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Kivinjari chako <ph name="BEGIN_LINK" />kinadhibitiwa<ph name="END_LINK" /> na <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Tumia vihariri, IDE na zana za Linux kwenye <ph name="DEVICE_TYPE" /> yako. &lt;a target="_blank" href="<ph name="URL" />"&gt;Pata maelezo zaidi&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Chagua faili</translation>
+<translation id="1370749010280229230">Kuna tatizo katika skrini ambayo umeunganisha kwenye kituo</translation>
 <translation id="1371301976177520732">Historia, manenosiri, alamisho na vipengee vingine kwenye vifaa vyako vyote</translation>
 <translation id="1372841398847029212">Sawazisha katika akaunti yako</translation>
 <translation id="1374844444528092021">Cheti kinachohitajika na mtandao "<ph name="NETWORK_NAME" />" hakijasakinishwa au sio halali tena. Tafadhali pata cheti kipya na ujaribu kuunganisha tena.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Ukurasa wa wavuti, Faili Moja</translation>
 <translation id="1451917004835509682">Ongeza Mtu Anayesimamiwa</translation>
 <translation id="1454223536435069390">Piga picha ya skrini</translation>
+<translation id="1458243790901188746">{0,plural, =1{Folda: <ph name="DIRECTORIES" />}other{Folda: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Injini ya utafutaji imeongezwa kwa viendelezi</translation>
 <translation id="146000042969587795">Fremu hii imezuiwa kwa sababu ina maudhui mengine yasiyo salama.</translation>
 <translation id="146219525117638703">Hali ya ONC</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">Onyesha chaguo za kuingiza data</translation>
 <translation id="1651008383952180276">Lazima uweke kauli ya siri sawa mara mbili</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Ongeza printa kwenye Google Cloud Print ili uweze kuchapisha kutoka mahali popote.}other{Ongeza printa # kwenye Google Cloud Print ili uweze kuchapisha kutoka mahali popote.}}</translation>
+<translation id="1656528038316521561">Nuru ya mandharinyuma</translation>
 <translation id="1657406563541664238">Saidia kuboresha <ph name="PRODUCT_NAME" /> kwa kutumia Google takwimu za matumizi na ripoti wakati wowote huduma hii inapoacha kufanya kazi.</translation>
 <translation id="1658424621194652532">Ukarasa huu unafikia maikrofoni yako.</translation>
 <translation id="1660204651932907780">Ruhusu tovuti kucheza sauti (inapendekezwa)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> ingependa kuona muundo na aina ya Ufunguo wako wa Usalama</translation>
 <translation id="1679068421605151609">Zana za Wasadini Programu</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">Una uhakika kuwa ungependa kufunga?</translation>
 <translation id="167983332380191032">Huduma ya usimamizi ilituma hitilafu ya HTTP.</translation>
 <translation id="1680849702532889074">Hitilafu imetokea wakati wa kusakinisha programu yako ya Linux.</translation>
 <translation id="16815041330799488">Usiruhusu tovuti zione maandishi na picha zilizonakiliwa kwenye ubao wa kunakili</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">Kitambulishi cha Maudhui Yanayolindwa</translation>
 <translation id="175196451752279553">&amp;Fungua tena kichupo kilichofungwa</translation>
 <translation id="1753905327828125965">Zinazotembelewa Zaidi</translation>
+<translation id="1755601632425835748">Ukubwa wa maandishi</translation>
 <translation id="1756681705074952506">Mbinu ya uingizaji</translation>
 <translation id="1757301747492736405">Inasubiri kuondoa</translation>
 <translation id="175772926354468439">Washa mandhari</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">&amp;Ndogo zaidi</translation>
 <translation id="1919345977826869612">Matangazo</translation>
 <translation id="1919814239594435008">Ufikiaji wa programu jalizi isiyo na utaratibu wa kuwekea vikwazo umeruhusiwa</translation>
+<translation id="1920390473494685033">Anwani</translation>
 <translation id="1921050530041573580">Oanisha simu yako na Programu ya Messages</translation>
 <translation id="1921584744613111023">Dpi <ph name="DPI" /></translation>
 <translation id="1924559387127953748">Pata vipengele mahiri vya Google katika <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">Kichupo Fiche: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> iliyo kwenye <ph name="PEPPER_PLUGIN_DOMAIN" /> inataka kufikia kompyuta yako</translation>
 <translation id="2178614541317717477">Kuvurugwa kwa Mamlaka ya Cheti</translation>
+<translation id="2179849162388791084">Imeshindwa kukusanya data ya kuingia katika akaunti kutoka ufunguo wako wa usalama.</translation>
 <translation id="218070003709087997">Tumia nambari kuonyesha idadi ya nakala za kuchapa (1 hadi 999).</translation>
 <translation id="2184515124301515068">Ruhusu Chrome ichague wakati ambapo tovuti zitacheza sauti (inapendekezwa)</translation>
 <translation id="2187895286714876935">Hitilafu ya Kuleta Cheti cha Seva</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">Data yote ya vidakuzi na tovuti</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Kipengee 1 kimenakiliwa}other{Vipengee # vimenakiliwa}}</translation>
 <translation id="2278562042389100163">Fungua dirisha la kivinjari</translation>
-<translation id="2279874276457403668">Ni kipindi kimoja pekee kinachoweza kuundwa kwa wakati.</translation>
 <translation id="2280486287150724112">Pambizo la kulia</translation>
 <translation id="2282146716419988068">Mchakato wa GPU</translation>
 <translation id="2282155092769082568">URL ya kuweka mipangilio kiotomatiki:</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">Vidokezo vya kufunga skrini huhifadhiwa kiotomatiki kwenye <ph name="LOCK_SCREEN_APP_NAME" />. Kidokezo chako cha hivi majuzi zaidi kitasalia kwenye skrini iliyofungwa.</translation>
 <translation id="2353297238722298836">Kamera na maikrofoni zimeruhusiwa</translation>
 <translation id="2356070529366658676">Uliza</translation>
-<translation id="2357949918965361754">Unaweza kutumia kipengele hiki kuonyesha maudhui kutoka Chrome kwenye televisheni au vifaa vyako vingine.</translation>
 <translation id="2359345697448000899">Dhibiti viendelezi vyako kwa kubofya Viendelezi katika menyu ya Zana.</translation>
 <translation id="2359808026110333948">Endelea</translation>
 <translation id="236117173274098341">Boresha</translation>
@@ -962,6 +968,7 @@
 <translation id="2436720498717686157">Shirika lako linataka usasishe kifaa hiki mara moja</translation>
 <translation id="2439545803278355377">Weka PIN yako mpya. PIN lazima iwe angalau herufi nne na inaweza kujumuisha herufi za alfabeti, nambari na herufi maalum.</translation>
 <translation id="2440604414813129000">Tazama &amp;asili</translation>
+<translation id="2442916515643169563">Vivuli vya maandishi</translation>
 <translation id="2444119669991608829">Je, Ukurasa Haujaandikwa Katika <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Saraka la shina la kiendelezi linahitajika.</translation>
 <translation id="2445484935443597917">Unda Wasifu Mpya</translation>
@@ -1176,6 +1183,7 @@
 <translation id="2738771556149464852">Sio Baadaye</translation>
 <translation id="2739191690716947896">Tatua</translation>
 <translation id="2739240477418971307">Badilisha mipangilio yako ya ufikiaji</translation>
+<translation id="274029851662193272">Imepunguzwa</translation>
 <translation id="2740393541869613458">kagua tovuti ambazo mtumiaji anayesimamiwa ametembelea, na</translation>
 <translation id="2741912629735277980">Onyesha kiolesura kwenye skrini ya kuingia katika akaunti</translation>
 <translation id="274290345632688601">Inarejesha programu na faili za Linux</translation>
@@ -1224,6 +1232,7 @@
 <translation id="2806891468525657116">Tayari umeweka njia hii ya mkato</translation>
 <translation id="2807517655263062534">Faili unazopakua zitaonekana hapa</translation>
 <translation id="2809586584051668049">na <ph name="NUMBER_ADDITIONAL_DISABLED" /> zaidi</translation>
+<translation id="2812049959647166806">Thunderbolt haiwezi kutumika</translation>
 <translation id="2812944337881233323">Jaribu kuondoka na uingie tena katika akaunti</translation>
 <translation id="2812989263793994277">Usionyeshe picha zozote</translation>
 <translation id="281390819046738856">Imeshindwa kutia sahihi ombi.</translation>
@@ -1246,7 +1255,6 @@
 <translation id="2841837950101800123">Mtoa huduma</translation>
 <translation id="2844169650293029770">Kifaa cha USB-C (mlango wa upande wa kushoto mbele)</translation>
 <translation id="2845382757467349449">Onyesha Upau wa Alamisho Kila Wakati</translation>
-<translation id="2847759467426165163">Tuma kwenye</translation>
 <translation id="284805635805850872">Ungependa kundoa programu hatari?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Imeshindwa kusafisha</translation>
@@ -1293,6 +1301,7 @@
     Ujumbe wa seva: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Ongeza Ghala la Vyombo vya habari kwa Saraka</translation>
 <translation id="2910318910161511225">Unganisha kwenye mtandao na ujaribu tena</translation>
+<translation id="2910518940971897750">Hifadhi kwenye faili za mfumo</translation>
 <translation id="2913331724188855103">Ruhusu tovuti zihifadhi na kusoma data ya vidakuzi (imependekezwa)</translation>
 <translation id="2915102088417824677">Angalia Kumbukumbu ya shughuli</translation>
 <translation id="2915873080513663243">Kukagua kiotomatiki</translation>
@@ -1357,12 +1366,14 @@
 <translation id="3013291976881901233">Vifaa vya MIDI</translation>
 <translation id="3015639418649705390">Anzisha upya sasa</translation>
 <translation id="3016329696181678353">Imeshindwa kuweka mipangilio ya <ph name="PRINTER_NAME" /> kiotomatiki. Tafadhali bainisha maelezo ya kina ya printa.</translation>
+<translation id="3016381065346027039">Hakuna data kumbukumbu</translation>
 <translation id="3016641847947582299">Kipengele kimesasishwa</translation>
 <translation id="3016780570757425217">kujua mahali ulipo</translation>
 <translation id="3017079585324758401">Mandhari ya nyuma</translation>
 <translation id="3020183492814296499">Njia za mkato</translation>
 <translation id="3020990233660977256">Nambari ya Kufuatilia: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Kipepeo</translation>
+<translation id="3021408157810018664">Je, ungependa kuhifadhi mabadiliko kwenye faili za mfumo?</translation>
 <translation id="3021426244864538700">Kufikia data ya tovuti hii</translation>
 <translation id="3021678814754966447">&amp;Ona Asili ya Fremu</translation>
 <translation id="3022978424994383087">Imeshindwa kutafsiri.</translation>
@@ -1455,6 +1466,7 @@
 <translation id="3170072451822350649">Pia unaweza kuruka kuingia na <ph name="LINK_START" />uvinjari kama Mgeni<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Tovuti inafikia data ya video</translation>
 <translation id="3177909033752230686">Lugha ya Ukurasa:</translation>
+<translation id="3179982752812949580">Fonti ya maandishi</translation>
 <translation id="3181954750937456830">Kuvinjari Salama (hukulinda wewe na kifaa chako dhidi ya tovuti hatari)</translation>
 <translation id="3182749001423093222">Kikagua maendelezo</translation>
 <translation id="3183139917765991655">Kiletaji cha Wasifu</translation>
@@ -1507,7 +1519,6 @@
 <translation id="3275778913554317645">Fungua kama dirisha</translation>
 <translation id="3278001907972365362">Unahitaji kukagua Akaunti zako za Google</translation>
 <translation id="3279230909244266691">Huenda mchakato ukachukua dakika kadhaa. Inaanzisha kompyuta iliyo mbali.</translation>
-<translation id="3279741024917655738">Onyesha video za skrini kamili kwenye</translation>
 <translation id="3280237271814976245">Hifadhi k&amp;ama...</translation>
 <translation id="3280243678470289153">Endelea kutumia Chrome</translation>
 <translation id="3281892622610078515">Faili na programu ambazo zitawekwa kwenye folda ya vipengee vilivyotengwa:</translation>
@@ -1529,7 +1540,7 @@
 <translation id="3303855915957856445">Hakuna matokeo ya utafutaji yaliyopatikana</translation>
 <translation id="3305389145870741612">Mchakato wa uumbizaji unaweza kuchukua sekunde kadhaa. Tafadhali subiri.</translation>
 <translation id="3305661444342691068">Fungua PDF katika Uhakiki</translation>
-<translation id="3306684685104080068">Washa kipengele cha kutuma kwenye huduma za wingu kama vile Google Hangouts.</translation>
+<translation id="3307871847038842490">Ukurasa huu unaruhusiwa kuhifadhi kwenye faili za mfumo.</translation>
 <translation id="3308006649705061278">Sehemu ya Shirika (OU)</translation>
 <translation id="3308116878371095290">Ukurasa huu ulizuiwa usiweke vidakuzi.</translation>
 <translation id="3308134619352333507">Ficha Kitufe</translation>
@@ -1632,7 +1643,6 @@
 <translation id="3462413494201477527">Ungependa kughairi ufunguaji wa akaunti?</translation>
 <translation id="3464012987031883895">Tovuti inafikia data ya sauti</translation>
 <translation id="346431825526753">Hii ni akaunti ya watoto inayodhibitiwa na <ph name="CUSTODIAN_EMAIL" />.</translation>
-<translation id="3468275649641751422">Tiririsha faili ya video au ya sauti</translation>
 <translation id="3468999815377931311">Simu ya Android</translation>
 <translation id="3470442499439619530">Ondoa Mtumiaji Huyu</translation>
 <translation id="3473479545200714844">Kikuza skrini</translation>
@@ -1655,6 +1665,7 @@
 <translation id="3496213124478423963">Kuza</translation>
 <translation id="3497560059572256875">Shiriki Doodle</translation>
 <translation id="3505030558724226696">Batilisha uwezo wa kufikia kifaa</translation>
+<translation id="3505635633742443645">Mlango wa kituo cha HDMI hauwezi kutumika wakati mlango wa USB Aina ya C unatumika kutoa maudhui ya video. Tafadhali tumia mlango tofauti kwenye mojawapo ya skrini.</translation>
 <translation id="3507421388498836150">Ruhusa za Sasa za "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Tafuta tena vifaa vya Bluetooth</translation>
 <translation id="3508920295779105875">Chagua Folda Lingine...</translation>
@@ -1707,6 +1718,7 @@
 <translation id="3576324189521867626">Imesakinishwa</translation>
 <translation id="3578594933904494462">Maudhui ya kichupo hiki yanashirikiwa</translation>
 <translation id="357886715122934472">&lt;Strong&gt; <ph name="SENDER" /> &lt;/Strong&gt; anataka kushiriki printa &lt;strong&gt; <ph name="PRINTER_NAME" /> &lt;/Strong&gt; na kundi unalomiliki: &lt;strong&gt; <ph name="GROUP_NAME" /> &lt;/Strong&gt;. Ukikubali, wanachama wote wa kundi wataweza kuchapisha kwenye printa.</translation>
+<translation id="357889014807611375">Wi-Fi inayopima data</translation>
 <translation id="3584169441612580296">Kusoma na kubadilisha picha, muziki na maudhui mengine kwenye kompyuta yako</translation>
 <translation id="3587482841069643663">Zote</translation>
 <translation id="358796204584394954">Charaza msimbo huu kwenye "<ph name="DEVICE_NAME" />" ili kuoanisha:</translation>
@@ -1717,6 +1729,7 @@
 <translation id="359283478042092570">Ingia</translation>
 <translation id="3593965109698325041">Vizuizi vya Jina la Cheti</translation>
 <translation id="3596235046596950091">Washa huduma za wingu</translation>
+<translation id="3599221874935822507">Imeinuliwa</translation>
 <translation id="3599863153486145794">Hufuta historia kwenye vifaa vyote ulivyotumia kuingia katika akaunti. Huenda Akaunti yako ya Google ikawa na aina nyingine za historia ya kuvinjari kwenye <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Maelezo ya ombi la wavuti</translation>
 <translation id="3600792891314830896">Zima sauti katika tovuti</translation>
@@ -1731,6 +1744,7 @@
 <translation id="3612673635130633812">Imepakuliwa na &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Onyesha <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Fungua katika kichupo kipya</translation>
+<translation id="3615073365085224194">Gusa kitambua alama ya kidole ukitumia kidole chako</translation>
 <translation id="3616113530831147358">Sauti</translation>
 <translation id="3616741288025931835">&amp;Futa Data ya Kuvinjari</translation>
 <translation id="3617891479562106823">Mandhari hayapatikani. Jaribu tena baadaye.</translation>
@@ -1812,7 +1826,6 @@
 <translation id="3719826155360621982">Ukurasa wa Mwanzo</translation>
 <translation id="3720996970802414353">Badilisha tu</translation>
 <translation id="3722108462506185496">Hitilafu imetokea wakati wa kuwasha huduma ya mashine dhahania. Tafadhali jaribu tena baadaye.</translation>
-<translation id="3723158278575423087">Karibu kwenye Kutuma katika Chromium!</translation>
 <translation id="3725367690636977613">kurasa</translation>
 <translation id="3726137731714254362">Hatua ya kuondoa folda kutoka hapa itasimamisha kushiriki lakini haitafuta faili.</translation>
 <translation id="3727148787322499904">Kubadilisha mipangilio hii kutaathiri mitandao yote inayoshirikiwa</translation>
@@ -1847,7 +1860,6 @@
 <translation id="3764314093345384080">Maelezo ya kina ya muundo</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Wasiliana na kifaa cha USB}other{Wasiliana na vifaa # vya USB}}</translation>
 <translation id="3765246971671567135">Imeshindwa kusoma sera ya hali ya onyesho la nje ya mtandao.</translation>
-<translation id="3766223500670287046">Skrini iliyo mbali</translation>
 <translation id="3768037234834996183">Inasawazisha mapendeleo yako...</translation>
 <translation id="377050016711188788">Aiskrimu</translation>
 <translation id="3771294271822695279">Faili za Video</translation>
@@ -1920,7 +1932,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Inua, kisha uguse tena</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Umesitisha usawazishaji</translation>
-<translation id="3862134173397075045">Karibu kwenye huduma ya Kutuma katika Chrome!</translation>
 <translation id="3862693525629180217">Thibitisha kupitia kitambuzi kilichojumuishwa</translation>
 <translation id="3862788408946266506">Ni lazima programu iliyo na sifa ya faili ya maelezo ya 'kiosk_only' isakinishwe katika skrini nzima ya Mfumo wa Uendeshaji wa Chrome</translation>
 <translation id="3865414814144988605">Ubora</translation>
@@ -1969,6 +1980,7 @@
 <translation id="3926002189479431949">Simu ya Smart Lock imebadilishwa</translation>
 <translation id="3927932062596804919">Kataza</translation>
 <translation id="3930737994424905957">Inatafuta vifaa</translation>
+<translation id="3930968231047618417">Rangi ya mandharinyuma</translation>
 <translation id="3933283459331715412">Rejesha manenosiri yaliyofutwa ya <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Fungua katika kichupo kipya</translation>
 <translation id="3936925983113350642">Nenosiri ulilochagua litahitajika ili kurejesha cheti hiki baadaye. Tafadhali linakili katika sehemu salama.</translation>
@@ -1988,6 +2000,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Zilizoingizwa Kutoka IE</translation>
 <translation id="3950820424414687140">Ingia</translation>
+<translation id="3950828138786918475">Kichupo hiki kinaruhusiwa kusoma folda kwenye kifaa chako.</translation>
 <translation id="3954354850384043518">Unaendelea</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (Hezi <ph name="REFRESH_RATE" />)</translation>
 <translation id="3954953195017194676">Huna kumbukumbu za matukio za WebRTC uliyorekodi hivi majuzi.</translation>
@@ -2006,6 +2019,7 @@
 <translation id="397105322502079400">Inakokotoa...</translation>
 <translation id="3975565978598857337">Imeshindwa kuwasiliana na sehemu kwenye seva</translation>
 <translation id="397703832102027365">Inahitimisha</translation>
+<translation id="3977886311744775419">Masasisho ya kiotomatiki hayawezi kupakuliwa kwenye aina hii ya mtandao lakini unaweza kuangalia masasisho mwenyewe.</translation>
 <translation id="3979395879372752341">Kiendelezi kipya kimeongezwa (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Washa <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Aina batili ya kuhifadhi imeingizwa.</translation>
@@ -2143,6 +2157,7 @@
 <translation id="4194570336751258953">Ruhusu kugusa ili kubofya</translation>
 <translation id="4195643157523330669">Fungua katika kichupo kipya</translation>
 <translation id="4195814663415092787">Endelea kutoka mahali ulipoachia</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> inaweza kuhifadhi mabadiliko unayofanya moja kwa moja kwenye faili zinazofuata. Tovuti hii inaweza tu kuhifadhi mabadiliko iwapo kichupo hiki kimefunguliwa.</translation>
 <translation id="4198146608511578238">Ishikilie aikoni ya Kifungua Programu ili uzungumze na programu yako ya Mratibu wa Google.</translation>
 <translation id="4200689466366162458">Maneno maalum</translation>
 <translation id="4200983522494130825">&amp;Kichupo kipya</translation>
@@ -2190,7 +2205,6 @@
 <translation id="4267953847983678297">Unganisha kiotomatiki kwenye mtandao wa simu</translation>
 <translation id="4268025649754414643">Usimbaji wa Ufunguo</translation>
 <translation id="4270393598798225102">Toleo <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Hakuna matokeo yanayolingana</translation>
 <translation id="4275663329226226506">Vyombo vya Habari</translation>
 <translation id="4275830172053184480">Washa upya kifaa chako</translation>
 <translation id="4278101229438943600">Mratibu wako yuko tayari</translation>
@@ -2339,6 +2353,7 @@
 <translation id="4533985347672295764">Muda wa Kuchakata</translation>
 <translation id="4534661889221639075">Jaribu tena.</translation>
 <translation id="4535127706710932914">Wasifu Chaguomsingi</translation>
+<translation id="4535767533210902251">Kitambua alama ya kidole kiko kwenye kitufe cha upande wa kulia juu katika kibodi yako. Kiguse taratibu ukitumia kidole chako.</translation>
 <translation id="4538684596480161368">Zuia programu jalizi zisizo kwenye sanbox kwenye <ph name="HOST" /> wakati wowote</translation>
 <translation id="4538792345715658285">Imesanidiwa na sera ya biashara.</translation>
 <translation id="4542520061254486227">Soma data yako kwenye <ph name="WEBSITE_1" /> na <ph name="WEBSITE_2" /></translation>
@@ -2372,6 +2387,7 @@
 <translation id="457386861538956877">Zaidi...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Oanisha kifaa cha Bluetooth</translation>
+<translation id="4578012756826807359">Imefuta data yako ya kuingia katika akaunti.</translation>
 <translation id="4579581181964204535">Haijatuma <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Hitilafu imetokea wakati wa kurejesha Linux</translation>
 <translation id="4582563038311694664">Weka upya mipangilio yote</translation>
@@ -2489,7 +2505,6 @@
 <translation id="4763830802490665879">Vidakuzi kutoka tovuti anuwai vitafutwa wakati wa kuondoka.</translation>
 <translation id="4765582662863429759">Huruhusu programu ya Android Messages itume SMS kutoka simu yako kwenda Chromebook</translation>
 <translation id="4768332406694066911">Una vyeti kutoka kwenye mashirika haya vinavyokutambua</translation>
-<translation id="4772404146526168240">Skrini zote</translation>
 <translation id="4776146737004271126">Fungua Mipangilio ya Android</translation>
 <translation id="4776917500594043016">Nenosiri la <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Duka la Google Play</translation>
@@ -2597,7 +2612,6 @@
 <translation id="4927846293686536410">Ingia katika akaunti ili upate alamisho, historia, manenosiri na mipangilio mingine kwenye vifaa vyako vyote. Pia utaingia kiotomatiki katika huduma zako kwenye Google.</translation>
 <translation id="4929386379796360314">Maeneo ya Uchapishaji</translation>
 <translation id="4930714375720679147">Washa</translation>
-<translation id="4931132176527519925">Tumia uakisi kila wakati</translation>
 <translation id="4932733599132424254">Tarehe</translation>
 <translation id="4933484234309072027">chopeka kwenye <ph name="URL" /></translation>
 <translation id="493571969993549666">Ongeza mtumiaji anayesimamiwa</translation>
@@ -2637,6 +2651,7 @@
 <translation id="4992066212339426712">Rejesha sauti</translation>
 <translation id="4992458225095111526">Thibitisha Powerwash</translation>
 <translation id="4992473555164495036">Msimamizi wako amedhibiti njia zilizopo za kuweka data.</translation>
+<translation id="4992866843815555470">Kituo chako kinahitaji kushughulikiwa. Kituo chako kitazima iwapo hakina kiyoyozi kinachofanya kazi.</translation>
 <translation id="4992926179187649719">Washa kipengele cha 'Ok Google'</translation>
 <translation id="4994474651455208930">Ruhusu tovuti kutuma ombi la kuwa vidhibiti chaguomsingi vya itifaki</translation>
 <translation id="4994754230098574403">Inaweka mipangilio</translation>
@@ -2775,7 +2790,6 @@
 <translation id="5233231016133573565">Kitambulisho cha Mchakato</translation>
 <translation id="5233638681132016545">Kichupo kipya</translation>
 <translation id="5233736638227740678">&amp;Bandika</translation>
-<translation id="5234764350956374838">Ondoa</translation>
 <translation id="5235050375939235066">Ungependa kuondoa programu?</translation>
 <translation id="5235750401727657667">Badilisha ukurasa unaoona unapokifungua kichupo kipya</translation>
 <translation id="5238278114306905396">Programu ya "<ph name="EXTENSION_NAME" />" iliondolewa kiotomatiki.</translation>
@@ -2840,6 +2854,7 @@
 <translation id="5319359161174645648">Google inapendekeza utumie Chrome</translation>
 <translation id="532247166573571973">Huenda seva haifikiki. Jaribu tena baadaye.</translation>
 <translation id="5324780743567488672">Weka saa za eneo kiotomatiki kwa kutumia mahali pako</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - inaruhusiwa kuhifadhi kwenye faili za mfumo</translation>
 <translation id="5327248766486351172">Jina</translation>
 <translation id="5327570636534774768">Kifaa hiki kimetiwa alama ili kisimamiwe na kikoa kingine. Ondoa idhini ya kukitumia kwenye kikoa hicho kabla ya kuweka mipangilio ya hali ya onyesho.</translation>
 <translation id="532943162177641444">Gusa arifa kwenye <ph name="PHONE_NAME" /> yako ili uweke mipangilio ya mtandaopepe unaohamishika ambao unaweza kutumiwa na kifaa hiki.</translation>
@@ -2982,7 +2997,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> inataka</translation>
 <translation id="5534304873398226603">Ondoa picha au video</translation>
 <translation id="5535941515421698170">Pia ondoa data yako iliyopo kwenye kifaa hiki</translation>
-<translation id="5537725057119320332">Tuma</translation>
 <translation id="5539221284352502426">Nenosiri uliloweka limekataliwa na seva. Hali hii inaweza kusababishwa na: Nenosiri kuwa fupi mno. Nenosiri lazima lijumuishe nambari na ishara. Nenosiri lazima liwe tofauti na manenosiri ya awali.</translation>
 <translation id="5541687815721799001">Tumia programu</translation>
 <translation id="5542132724887566711">Wasifu</translation>
@@ -3291,7 +3305,6 @@
 <translation id="5997337190805127100">Pata Maelezo Zaidi kuhusu Ufikiaji wa Tovuti</translation>
 <translation id="6000758707621254961">Matokeo <ph name="RESULT_COUNT" /> ya '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="6002458620803359783">Sauti Zinazopendelewa</translation>
-<translation id="6005695835120147974">Ruta ya Maudhui</translation>
 <translation id="6006484371116297560">Kawaida</translation>
 <translation id="6007240208646052708">Huduma ya kutafuta kwa kutamka haitumiki katika lugha yako.</translation>
 <translation id="6009781704028455063">Kitambuzi kilichojumuishwa</translation>
@@ -3491,7 +3504,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Printa mpya kwenye mtandao wako}other{Printa mpya kwenye mtandao wako}}</translation>
 <translation id="6286708577777130801">Maelezo ya nenosiri lililohifadhiwa</translation>
 <translation id="6289452883081499048">Huduma za Google zilizo mahususi kwako kama vile Google Play</translation>
-<translation id="6290556621549272952">Unaweza kutumia kipengele hiki kuonyesha maudhui kutoka Chromium kwenye TV au vifaa vyako vingine.</translation>
 <translation id="6291949900244949761">Iulize wakati tovuti inataka kufikia vifaa vya USB (inapendekezwa)</translation>
 <translation id="6291953229176937411">Onye&amp;sha katika Kipataji</translation>
 <translation id="6295158916970320988">Tovuti zote</translation>
@@ -3555,6 +3567,7 @@
 <translation id="6395423953133416962">Tuma <ph name="BEGIN_LINK1" />maelezo ya mfumo<ph name="END_LINK1" /> na <ph name="BEGIN_LINK2" />hesabu<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Zuia tovuti zisitumie vitambuzi vya mwendo</translation>
 <translation id="6397094776139756010">Chaguo za usawazishaji na kuweka mapendeleo</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> itaweza kuhifadhi mabadiliko unayofanya moja kwa moja kwenye faili katika folda inayofuata. Tovuti hii inaweza tu kuhifadhi mabadiliko iwapo kichupo hiki kimefunguliwa.</translation>
 <translation id="6398715114293939307">Ondoa Duka la Google Play</translation>
 <translation id="6398765197997659313">Ondoka kwenye Skrini nzima</translation>
 <translation id="6399774419735315745">Jasusi</translation>
@@ -3599,11 +3612,13 @@
 <translation id="6455264371803474013">Kwenye tovuti mahususi</translation>
 <translation id="6455894534188563617">Na Folda Mpya</translation>
 <translation id="6456394469623773452">Bora</translation>
+<translation id="6456955391422100996">Tangazo limeondolewa.</translation>
 <translation id="645705751491738698">Endelea kuzuia JavaScript</translation>
 <translation id="6458701200018867744">Imeshindwa kupakia (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Tumia Iliyochaguliwa Kupata</translation>
 <translation id="6459799433792303855">Dirisha linalotumika limehamishiwa kwenye skrini nyingine.</translation>
 <translation id="6460601847208524483">Pata Ifuatayo</translation>
+<translation id="6461170143930046705">Inatafuta mitandao...</translation>
 <translation id="6463795194797719782">&amp;Hariri</translation>
 <translation id="6466988389784393586">&amp;Fungua Alamisho Zote</translation>
 <translation id="6467304607960172345">Boresha video za skrini nzima</translation>
@@ -3642,6 +3657,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Umeunganishwa kwenye mtandao wa <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Shiriki</translation>
 <translation id="6528513914570774834">Waruhusu watumiaji wengine wa kifaa hiki kutumia mtandao huu</translation>
 <translation id="652948702951888897">Historia ya Chrome</translation>
@@ -3738,7 +3754,6 @@
 <translation id="6680650203439190394">Kadiria</translation>
 <translation id="6681668084120808868">Piga picha</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" itasakinishwa.</translation>
-<translation id="6685083257944113180">Komesha, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Fungua Google Play</translation>
 <translation id="6686490380836145850">Funga vichupo vilivyo upande wa kulia</translation>
 <translation id="6686817083349815241">Hifadhi nenosiri lako</translation>
@@ -3846,6 +3861,7 @@
 <translation id="6845038076637626672">Fungua Iliyoongezwa</translation>
 <translation id="6845325883481699275">Tusaidie kuboresha usalama wa Chrome</translation>
 <translation id="6848388270925200958">Sasa hivi, baadhi ya kadi zako zinaweza kutumika kwenye kifaa hiki pekee</translation>
+<translation id="6850286078059909152">Rangi ya maandishi</translation>
 <translation id="6851497530878285708">Programu Imewashwa</translation>
 <translation id="6853388645642883916">Kisasishaji kimetulia</translation>
 <translation id="68541483639528434">Funga vichupo vingine</translation>
@@ -3895,7 +3911,6 @@
 <translation id="6923132443355966645">Sogeza / Bofya</translation>
 <translation id="6923633482430812883">Hitilafu imetokea wakati wa kupachika faili ya kushiriki. Tafadhali hakikisha kuwa seva ya faili ambako unaunganisha inatumia toleo la SMBv2 au jipya zaidi.</translation>
 <translation id="6930036377490597025">Ufunguo wa usalama wa nje au kitambuzi kilichojumuishwa kwenye kompyuta</translation>
-<translation id="6930242544192836755">Muda</translation>
 <translation id="693807610556624488">Shughuli za kuandika zinazidi ukubwa wa juu wa sifa kwenye: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Tafadhali ingia kwenye <ph name="TOKEN_NAME" /> ili kuthibitisha katika <ph name="HOST_NAME" /> kwa cheti chako.</translation>
 <translation id="6943176775188458830">Ghairi kuchapisha</translation>
@@ -3909,6 +3924,7 @@
 <translation id="6951153907720526401">Vidhibiti vya Malipo</translation>
 <translation id="6951663584153258142">Shirika lako linataka usasishe kifaa hiki</translation>
 <translation id="6953878494808481632">Maelezo yanayohusiana</translation>
+<translation id="6953916367503892689">{0,plural, =1{Faili: <ph name="FILES" />}other{Faili: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Kagua Dirisha Ibukizi</translation>
 <translation id="6957044667612803194">Ufunguo huu wa usalama hautumii PIN</translation>
 <translation id="6957231940976260713">Jina la huduma</translation>
@@ -4121,7 +4137,6 @@
 <translation id="7254554697254365959">Ukurasa Huu Haukutafsiriwa.</translation>
 <translation id="7254951428499890870">Je, una uhakika unataka kuzindua "<ph name="APP_NAME" />" katika hali ya uchunguzi?</translation>
 <translation id="7255002516883565667">Sasa hivi, una kadi moja tu inayoweza kutumika kwenye kifaa hiki</translation>
-<translation id="7255220508626648026">Inatuma: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Gusa ufunguo wako wa usalama tena ili uthibitishe hatua ya kuubadilisha. Maelezo yote yaliyohifadhiwa kwenye ufunguo wa usalama, yakijumuisha PIN yake, yatafutwa.</translation>
 <translation id="7255935316994522020">Tuma</translation>
 <translation id="7256069762010468647">Tovuti inatumia kamera yako</translation>
@@ -4255,6 +4270,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">Fungua Mahali...</translation>
 <translation id="7458168200501453431">Hutumia kikagua maendelezo kinachotumiwa katika Huduma ya Tafuta na Google. Maandishi unayochapisha katika kivinjari yanatumwa kwa Google.</translation>
+<translation id="7460045493116006516">Mandhari ya sasa uliyosakinisha</translation>
 <translation id="7461924472993315131">Bana</translation>
 <translation id="746216226901520237">Wakati ujao, simu yako itafungua <ph name="DEVICE_TYPE" /> yako. Unaweza kuzima Smart Lock katika Mipangilio.</translation>
 <translation id="7463006580194749499">Ongeza mtumiaji mwingine</translation>
@@ -4314,6 +4330,7 @@
 <translation id="7554791636758816595">Kichupo Kipya</translation>
 <translation id="7556033326131260574">Smart Lock haikuweza kuthibitisha akaunti yako. Charaza nenosiri lako ili uingie.</translation>
 <translation id="7556242789364317684">Kwa bahati mbaya, <ph name="SHORT_PRODUCT_NAME" /> imeshindwa kuokoa mipangilio yako. Kurekebisha hitilafu hii, <ph name="SHORT_PRODUCT_NAME" /> lazima uweke upya kifaa chako na Powerwash.</translation>
+<translation id="7559444627302317199">Tafadhali angalia muunganisho wako wa mtandao kisha ujaribu tena.</translation>
 <translation id="7559719679815339381">Tafadhali subiri....Programu ya skrini nzima inasasishwa. Usiondoe hifadhi ya USB.</translation>
 <translation id="7561196759112975576">Kila wakati</translation>
 <translation id="7563991800558061108">Ili kurekebisha hitilafu hii, utahitajika kuingia katika Akaunti yako ya Google
@@ -4558,7 +4575,6 @@
 <translation id="7887334752153342268">Maradufu</translation>
 <translation id="7887864092952184874">Kipanya cha Bluetooth kimeoanishwa</translation>
 <translation id="7889565820482017512">Ukubwa wa Onyesho</translation>
-<translation id="7889966925761734854">Tafuta</translation>
 <translation id="7893008570150657497">Fikia picha, muziki, na faili zingine kwenye kompyuta yako</translation>
 <translation id="7893153962594818789">Bluetooth imezimwa kwenye kifaa hiki cha <ph name="DEVICE_TYPE" />. Weka nenosiri lako, na uwashe Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Chaguo-Msingi)</translation>
@@ -4566,7 +4582,6 @@
 <translation id="7898627924844766532">Weka katika upau wa vidhibiti</translation>
 <translation id="7898725031477653577">Tafsiri kila wakati</translation>
 <translation id="790040513076446191">Weka utakavyo mipangilio husika ya faragha</translation>
-<translation id="7902874111237641165">Mwendo Laini [beta]</translation>
 <translation id="7903345046358933331">Ukurasa haufanyi kazi. Unaweza kusubiri uanze kufanya kazi au uufunge.</translation>
 <translation id="7903742244674067440">Una vyeti kwenye faili vinavyotambua mamlaka ya vyeti hivi</translation>
 <translation id="7903925330883316394">Kitumizi: <ph name="UTILITY_TYPE" /></translation>
@@ -4678,6 +4693,7 @@
 <translation id="8037117027592400564">Soma maandishi yote yaliyotamkwa ukitumia matamshi yaliyounganishwa</translation>
 <translation id="8037357227543935929">Uliza (chaguomsingi)</translation>
 <translation id="803771048473350947">Faili</translation>
+<translation id="8042142357103597104">Hali ya kuonekana kwa maandishi</translation>
 <translation id="8044899503464538266">Polepole</translation>
 <translation id="8045253504249021590">Usawazishaji umekomeshwa kupitia Dashibodi ya Google.</translation>
 <translation id="8045923671629973368">Weka kitambulisho cha programu au URL ya duka la wavuti</translation>
@@ -4714,7 +4730,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Unaweza kuzima huduma hii katika Mipangilio.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN hazilingani</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> inatumia mipangilio ya seva mbadala kutoka kwenye kiendelezi</translation>
-<translation id="8099495042588009598">Ruhusa zaidi</translation>
 <translation id="8101987792947961127">Powerwash inahitajika kwenye kuwasha kunakofuata</translation>
 <translation id="8102159139658438129">Nenda kwenye <ph name="LINK_BEGIN" />Mipangilio<ph name="LINK_END" /> ili uone chaguo za simu yako iliyounganishwa</translation>
 <translation id="8104696615244072556">Tumia Powerwash kwenye kifaa <ph name="IDS_SHORT_PRODUCT_NAME" /> chako na urejee kwenye toleo la awali.</translation>
@@ -4766,8 +4781,10 @@
 Sidhani tovuti hii inapaswa kuzuiwa!</translation>
 <translation id="8184288427634747179">Badilisha utumie <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Maelezo zaidi</translation>
+<translation id="8184472985242519288">Kingo sawa</translation>
 <translation id="8185331656081929126">Onyesha arifa printa mpya zinapogunduliwa kwenye mtandao</translation>
 <translation id="8186609076106987817">Seva hii haikuweza kupata faili.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> inaweza kusoma faili zote katika folda inayofuata. Tovuti hii inaweza tu kuona mabadiliko kwenye folda ikiwa kichupo hiki kimefunguliwa.</translation>
 <translation id="8188389033983459049">Angalia mipangilio ya kifaa chako na uiwashe ili uendelee</translation>
 <translation id="8190193592390505034">Inaunganisha kwenye <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Kudhibiti programu, viendelezi na mandhari yako</translation>
@@ -4871,8 +4888,6 @@
 <translation id="833986336429795709">Ili ufungue kiungo hiki, chagua programu</translation>
 <translation id="8342861492835240085">Chagua mkusanyiko</translation>
 <translation id="834290227245955730">PIN si sahihi Mara za kujaribu ulizobakisha: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Tumia kipimo data cha juu kupata video au uhuishaji bora.
-Huenda watu wengine wenye miunganisho ya polepole hawataona maudhui yako.</translation>
 <translation id="8351419472474436977">Kiendelezi hiki kinadhibiti mipangilio yako ya proksi, kumaanisha kuwa kinaweza kubadilisha, kuvunja, au kufuatilia chochote unachokifanya mtandaoni. Ikiwa huna uhakika kwa nini mabadiliko haya yamefanyika, huenda huyahitaji.</translation>
 <translation id="8351630282875799764">Betri haichaji</translation>
 <translation id="835238322900896202">Hitilafu imetokea wakati wa uondoaji. Tafadhali ondoa kupitia Kituo.</translation>
@@ -4905,9 +4920,11 @@
 <translation id="839736845446313156">Sajili</translation>
 <translation id="8398877366907290961">Endelea licha ya hayo</translation>
 <translation id="8400146488506985033">Simamia watu</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> inaweza kuhifadhi mabadiliko moja kwa moja kwenye faili katika folda inayofuata. Tovuti hii inaweza tu kuhifadhi mabadiliko iwapo kichupo hiki kimefunguliwa.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Uliza kwanza (imependekezwa)</translation>
 <translation id="8418445294933751433">Onye&amp;sha kama kichupo</translation>
+<translation id="8418905021510211421">Ukurasa huu unaruhusiwa kusoma folda kwenye kifaa chako.</translation>
 <translation id="8419098111404128271">Matokeo ya utafutaji wa '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="8419368276599091549">Karibu kwenye <ph name="DEVICE_TYPE" /> yako!</translation>
 <translation id="8425213833346101688">Badilisha</translation>
@@ -4927,6 +4944,7 @@
 <translation id="8438566539970814960">Boresha utafutaji na kuvinjari</translation>
 <translation id="8439506636278576865">Jitolee kutafsiri kurasa katika lugha hii</translation>
 <translation id="8440630305826533614">Programu za Linux</translation>
+<translation id="844241640324986723">Imeshindwa kufuta data yako ya kuingia katika akaunti.</translation>
 <translation id="8443338615972234259">Tafadhali fungua akaunti ya mtumiaji unayemsimamia sasa.</translation>
 <translation id="8446884382197647889">Pata Maelezo Zaidi</translation>
 <translation id="8447409163267621480">Jumuisha kitufe cha Ctrl au Alt</translation>
@@ -4942,8 +4960,6 @@
 <translation id="8461914792118322307">Proksi</translation>
 <translation id="8463215747450521436">Mtumiaji huyu anayesimamiwa huenda amefutwa au amezimwa na msimamizi. Tafadhali wasiliana na msimamizi iwapo ungependa kuendelea kuingia katika akaunti kama mtumiaji huyu.</translation>
 <translation id="846374874681391779">Upau wa vipakuliwa</translation>
-<translation id="8463807869745732775">"&gt;
-    Data iliyohifadhiwa ya ufunguo wa usalama</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> imezimwa.</translation>
 <translation id="8464132254133862871">Akaunti hii ya mtumiaji haikubaliwi kutumia huduma hii.</translation>
 <translation id="8465252176946159372">Si sahihi</translation>
@@ -5009,6 +5025,7 @@
 <translation id="8569002732135253578">Inachapisha <ph name="DOCUMENT_NAME" /> sasa</translation>
 <translation id="8569682776816196752">Hakuna hatima zilizopatikana</translation>
 <translation id="8571213806525832805">Wiki 4 zilizopita</translation>
+<translation id="8573403125070227391">Tangazo hili linatumia nyenzo nyingi mno katika kifaa chako, kwa hivyo Chrome imeliondoa.</translation>
 <translation id="8574990355410201600">Ruhusu sauti kwenye <ph name="HOST" /> wakati wote</translation>
 <translation id="8575286410928791436">Shikilia <ph name="KEY_EQUIVALENT" /> ili Ufunge.</translation>
 <translation id="8578639784464423491">Haipaswi kupita herufi 99</translation>
@@ -5032,13 +5049,13 @@
 <translation id="8609465669617005112">Songa juu</translation>
 <translation id="8610103157987623234">Muundo si sahihi, tafadhali jaribu tena</translation>
 <translation id="8615618338313291042">Programu iliyo katika hali fiche: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Herufi zinazopaa</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Hali ya kutumia mtandao usio wako wa kawaida</translation>
 <translation id="8620765578342452535">Sanidi miunganisho ya mtandao</translation>
 <translation id="8621866727807194849">Kuna programu hatari kwenye kompyuta yako. Chrome inaiondoa, kurejesha mipangilio yako na kuzima viendelezi. Hatua hii itasababisha kivinjari chako kifanye kazi tena kama kawaida.</translation>
 <translation id="8621979332865976405">Shirika skrini yako yote</translation>
 <translation id="862542460444371744">Vi&amp;endelezi</translation>
-<translation id="8627151598708688654">Chagua chanzo</translation>
 <translation id="862727964348362408">Imesitishwa</translation>
 <translation id="862750493060684461">Akiba ya CSS</translation>
 <translation id="8627795981664801467">Miunganisho salama pekee</translation>
@@ -5092,6 +5109,7 @@
 <translation id="8688579245973331962">Je, huoni jina lako?</translation>
 <translation id="8688591111840995413">Nenosiri lisilo sahihi</translation>
 <translation id="8688672835843460752">Inapatikana</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Fungua Eneo...</translation>
 <translation id="869884720829132584">Menyu ya programu</translation>
 <translation id="869891660844655955">Muda wake unakwisha tarehe</translation>
@@ -5255,6 +5273,7 @@
 <translation id="891365694296252935">Tuma data ya matumizi na uchunguzi. Kwa sasa, kifaa hiki kinatuma kiotomatiki data ya uchunguzi na matumizi ya programu na kifaa kwa Google. Hatutatumia hatua hii kumtambulisha mtoto wako na itatusaidia kuboresha uthabiti wa programu na mfumo na maboresho mengine. Baadhi ya maelezo yaliyojumlishwa pia yatasaidia programu za Google na washirika kama vile wasanidi programu za Android. Mipangilio hii inatekelezwa na mmiliki. Ikiwa umewasha mipangilio ya historia ya Shughuli za ziada kwenye Wavuti na Programu ya mtoto wako, data hii inaweza kuhifadhiwa kwenye Akaunti yake ya Google. <ph name="BEGIN_LINK1" />Pata maelezo zaidi<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Inapakia pendekezo</translation>
 <translation id="8916476537757519021">Fremu ndogo ya Hali Fiche: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - inaruhusiwa kusoma folda kwenye kifaa chako</translation>
 <translation id="8919275547519617350">Ingia katika akaunti na uwashe usawazishaji ili upate manenosiri yako yote kwenye vifaa vyako vyote.</translation>
 <translation id="8921366488406707015">Inathibitisha ufunguo wako wa usalama...</translation>
 <translation id="8922013791253848639">Ruhusu matangazo kwenye tovuti hii wakati wote</translation>
@@ -5284,7 +5303,6 @@
 <translation id="8965037249707889821">Weka nenosiri la zamani</translation>
 <translation id="8966870118594285808">Fungua tena kichupo ikiwa umekifunga kimakosa</translation>
 <translation id="8967866634928501045">Bonyeza Alt Shift A ili uonyeshe</translation>
-<translation id="8970203673128054105">Angalia orodha ya hali ya kutuma</translation>
 <translation id="89720367119469899">Ondoka</translation>
 <translation id="8972513834460200407">Tafadhali wasiliana na msimamzi wako wa mtandao ili uhakikishe kuwa ngome haizuii vipakuliwa kutoka seva za Google.</translation>
 <translation id="8973557916016709913">Ondoa kiwango cha kukuza</translation>
@@ -5433,6 +5451,7 @@
 <translation id="9214520840402538427">Lo! Uanzishaji wa muda wa usakinishaji sifa umechina. Tafadhali wasiliana na mwakilishi wako wa kutoa msaada.</translation>
 <translation id="9214695392875603905">Keki dogo</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" limeongezwa</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> itaweza kuhifadhi mabadiliko unayofanya moja kwa moja kwenye folda inayofuata. Tovuti hii inaweza tu kuhifadhi mabadiliko iwapo kichupo hiki kimefunguliwa.</translation>
 <translation id="9218430445555521422">Weka iwe chaguomsingi</translation>
 <translation id="9219103736887031265">Picha</translation>
 <translation id="9220525904950070496">Ondoa akaunti</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index a6cce3b..0958cf3 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">விர்ச்சுவல் மெஷினைத் தொடங்கும்போது பிழை ஏற்பட்டது. மீண்டும் முயலவும்.</translation>
 <translation id="1089439967362294234">கடவுச்சொல்லை மாற்று</translation>
 <translation id="1090126737595388931">இயக்கத்தில் எந்த பின்புல Apps உம் இல்லை</translation>
+<translation id="1090290614672149983">அசல் கோப்பில் மாற்றங்களைச் சேமிக்க வேண்டுமா?</translation>
 <translation id="1090918500949388876">திரை இயக்கத்தில் இருக்கும்போது எந்த நேரத்திலும் "Ok Google" என்று சொல்லி அசிஸ்டண்ட்டை அணுகலாம்</translation>
 <translation id="1091767800771861448">தவிர்க்க, ESCAPE அழுத்துக (அதிகாரப்பூர்வமற்ற தொகுதிகள் மட்டும்).</translation>
 <translation id="1093457606523402488">தெரியும் நெட்வொர்க்குகள்:</translation>
 <translation id="1094607894174825014">படித்தல் அல்லது எழுதுதல் செயல்பாடு தவறான ஆஃப்செட்டுடன் கோரப்பட்ட சாதனம்: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">உள்நுழைவதற்கு முன், <ph name="NETWORK_ID" /> என்ற நெட்வொர்க்கை இயக்க, விருந்தினராக நுழைக</translation>
+<translation id="110029732810301672">அசல் கோப்புகளில் சேமிப்பதற்கான அனுமதி இந்தத் தாவலுக்கு உள்ளது.</translation>
 <translation id="1103523840287552314">எப்போதும் இந்த மொழியை மொழிபெயர் <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Stop</translation>
 <translation id="1110155001042129815">காத்திருங்கள்</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">சன்கிளாசஸ்</translation>
 <translation id="1151917987301063366">சென்சார்களை அணுக, <ph name="HOST" />ஐ எப்போதும் அனுமதி</translation>
 <translation id="1153356358378277386">இணைத்த சாதனங்கள்</translation>
-<translation id="1156488781945104845">தற்போதைய நேரம்</translation>
 <translation id="1161575384898972166">கிளையண்ட் சான்றிதழை ஏற்றுமதி செய்ய, தயவுசெய்து <ph name="TOKEN_NAME" /> இல் உள்நுழைக.</translation>
 <translation id="1163931534039071049">சட்டக ஆதாரங்களைக் &amp;காண்க</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" />க்கான Smart Lockஐ முடக்கவா?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player இன் சேமிப்பக அமைப்புகள்</translation>
 <translation id="1274997165432133392">குக்கீகள் மற்றும் பிற தளத்தின் தரவு</translation>
 <translation id="127668050356036882">எல்லா சாளரங்களையும் மூடு</translation>
-<translation id="1277908057200820621">சாதனப் பட்டியலைக் காட்டு</translation>
 <translation id="1280820357415527819">மொபைல் நெட்வொர்க்குகளைத் தேடுகிறது</translation>
 <translation id="1285320974508926690">இந்த தளத்தை எப்போதும் மொழிபெயர்க்க வேண்டாம்</translation>
 <translation id="1285484354230578868">உங்கள் Google இயக்ககக் கணக்கில் தரவைச் சேமிக்கலாம்</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">உள்ளூர் நெட்வொர்க், ரோமிங் இல்லை</translation>
 <translation id="1316136264406804862">தேடுகிறது...</translation>
 <translation id="1316495628809031177">ஒத்திசைவு இடைநிறுத்தப்பட்டது</translation>
+<translation id="1317637799698924700">'USB டைப்-சி இணக்கத்தன்மைப் பயன்முறையில்' உங்கள் டாக் செய்வதற்கான நிலையம் இயங்கும்.</translation>
 <translation id="1322046419516468189"><ph name="SAVED_PASSWORDS_STORE" /> இலுள்ள சேமிக்கப்பட்ட கடவுச்சொற்களைப் பார்க்கலாம், நிர்வகிக்கலாம்</translation>
 <translation id="1326317727527857210">உங்கள் பிற சாதனங்களிலிருந்து தாவல்களைப் பெற, Chrome இல் உள்நுழையவும்.</translation>
 <translation id="1327074568633507428">Google கிளவுடு அச்சில் உள்ள பிரிண்டர்</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">உங்கள் <ph name="BEGIN_LINK" />உலாவியை நிர்வகிப்பது<ph name="END_LINK" />: <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">உங்கள் <ph name="DEVICE_TYPE" /> சாதனத்தில் Linux கருவிகள், எடிட்டர்கள், IDEகள் போன்றவற்றை இயக்கும். &lt;a target="_blank" href="<ph name="URL" />"&gt;மேலும் அறிக&lt;/a&gt;</translation>
 <translation id="1367951781824006909">கோப்பைத் தேர்வுசெய்க</translation>
+<translation id="1370749010280229230">டாக்குடன் இணைக்கப்பட்டுள்ள டிஸ்ப்ளேயில் சிக்கல் உள்ளது</translation>
 <translation id="1371301976177520732">உங்கள் எல்லாச் சாதனங்களிலும் உங்கள் புக்மார்க்குகள், கடவுச்சொற்கள், வரலாறு, மேலும் பலவற்றைப் பெறலாம்</translation>
 <translation id="1372841398847029212">எனது கணக்குடன் ஒத்திசை</translation>
 <translation id="1374844444528092021">"<ph name="NETWORK_NAME" />" நெட்வொர்க்குக்குத் தேவைப்படும் சான்றிதழானது நிறுவப்படாமலோ இனி செல்லுபடியாகாத நிலையிலோ உள்ளது. புதிய சான்றிதழைப் பெற்று, மீண்டும் இணைக்க முயலவும்.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">இணையப்பக்கம், ஒற்றைக் கோப்பு</translation>
 <translation id="1451917004835509682">மேற்பார்வையிடப்படும் பயனரைச் சேர்</translation>
 <translation id="1454223536435069390">ஸ்கிரீன் ஷாட்டை எடு</translation>
+<translation id="1458243790901188746">{0,plural, =1{கோப்புறை: <ph name="DIRECTORIES" />}other{கோப்புறைகள்: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">நீட்டிப்புகளால் சேர்க்கப்பட்ட தேடல் இன்ஜின்கள்</translation>
 <translation id="146000042969587795">இந்த சட்டகம் சில பாதுகாப்பாற்ற உள்ளடக்கத்தைக் கொண்டுள்ளதால் தடுக்கப்பட்டது.</translation>
 <translation id="146219525117638703">ONC நிலை</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">உள்ளீட்டு விருப்பங்களைக் காட்டு</translation>
 <translation id="1651008383952180276">ஒரே கடவுச்சொற்றொடரை இருமுறை உள்ளிட வேண்டும்</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Google கிளவுட் அச்சுடன் பிரிண்டரைச் சேர்த்து, எங்கிருந்தும் அச்சிடலாம்.}other{Google கிளவுட் அச்சுடன் # பிரிண்டர்களைச் சேர்த்து, எங்கிருந்தும் அச்சிடலாம்.}}</translation>
+<translation id="1656528038316521561">பின்னணி ஒளிபுகாத்தன்மை</translation>
 <translation id="1657406563541664238">தானாகவே பயன்பாட்டு புள்ளிவிவரங்களையும் சிதைவு புகார்களையும் Google க்கு அனுப்புவதன் மூலம், <ph name="PRODUCT_NAME" /> ஐ மேலும் சிறப்பானதாக்க உதவுங்கள்</translation>
 <translation id="1658424621194652532">இந்தப் பக்கமானது உங்கள் மைக்ரோஃபோனை அணுகுகிறது.</translation>
 <translation id="1660204651932907780">ஒலியை இயக்க, தளங்களை அனுமதிக்கும் (பரிந்துரைக்கப்படுவது)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546">உங்கள் பாதுகாப்புச் சாவியின் உற்பத்தியாளர் மற்றும் மாடலைத் தெரிந்துகொள்ள <ph name="URL" /> விரும்புகிறது</translation>
 <translation id="1679068421605151609">டெவலப்பர் கருவிகள்</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">உறுதியாக வெளியேற வேண்டுமா?</translation>
 <translation id="167983332380191032">நிர்வாகச் சேவை தவறான HTTP குறியீட்டை அனுப்பியது.</translation>
 <translation id="1680849702532889074">Linux ஆப்ஸை நிறுவும்போது பிழை நேர்ந்தது.</translation>
 <translation id="16815041330799488">கிளிப்போர்டுக்கு நகலெடுத்த உரையையும் படங்களையும் பார்க்க, தளங்களை அனுமதிக்காதே</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">பாதுகாக்கப்பட்ட மீடியா அடையாளங்காட்டி</translation>
 <translation id="175196451752279553">மூடிய தாவலை ம&amp;றுபடி திறக்கவும்</translation>
 <translation id="1753905327828125965">அதிகமாகப் பார்க்கப்பட்டவை</translation>
+<translation id="1755601632425835748">உரையின் அளவு</translation>
 <translation id="1756681705074952506">உள்ளீட்டு முறை</translation>
 <translation id="1757301747492736405">நிறுவல் நீக்குவது நிலுவையிலுள்ளது</translation>
 <translation id="175772926354468439">தீம் ஐ இயக்கு</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;சிறியது</translation>
 <translation id="1919345977826869612">விளம்பரங்கள்</translation>
 <translation id="1919814239594435008">சாண்ட்பாக்ஸ் செய்யப்படாத செருகுநிரல் அனுமதிக்கப்பட்டது</translation>
+<translation id="1920390473494685033">தொடர்புகள்</translation>
 <translation id="1921050530041573580">மெசேஜஸ் மூலம் உங்கள் ஃபோனை இணைத்தல்</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" /> இல் Google ஸ்மார்ட்ஸைப் பெறலாம்</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">மறைநிலைத் தாவல்: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> இல் உள்ள <ph name="PEPPER_PLUGIN_NAME" /> உங்கள் கம்ப்யூட்டரை அணுக விரும்புகிறது</translation>
 <translation id="2178614541317717477">CA இணக்கம்</translation>
+<translation id="2179849162388791084">உங்கள் பாதுகாப்பு விசையிலிருந்து உள்நுழைவுத் தரவைச் சேகரிக்க இயலவில்லை.</translation>
 <translation id="218070003709087997">எத்தனை நகல்கள் அச்சிடப்பட வேண்டும் என்பதைக் குறிக்க, எண்ணைப் (1 - 999) பயன்படுத்தவும்.</translation>
 <translation id="2184515124301515068">தளங்கள் எப்போது ஒலியை இயக்கலாம் என்பதை Chrome தேர்வு செய்ய அனுமதிக்கவும் (பரிந்துரைக்கப்படுவது)</translation>
 <translation id="2187895286714876935">சேவையக சான்றிதழ் இறக்குமதி பிழை</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">எல்லா குக்கீகளும் தளத்தின் தரவும்</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{ஒரு புத்தகக்குறி நகலெடுக்கப்பட்டது}other{# புக்மார்க்குகள் நகலெடுக்கப்பட்டன}}</translation>
 <translation id="2278562042389100163">உலாவி சாளரத்தைத் திற</translation>
-<translation id="2279874276457403668">ஒரு நேரத்தில் ஒரே ஒரு அமர்வை மட்டும் உருவாக்க முடியும்.</translation>
 <translation id="2280486287150724112">வலது ஓரஇடம்</translation>
 <translation id="2282146716419988068">GPU செயல்முறை</translation>
 <translation id="2282155092769082568">தானியங்கு உள்ளமைவு URL:</translation>
@@ -875,7 +882,7 @@
 <translation id="2294358108254308676"><ph name="PRODUCT_NAME" /> ஐ நிறுவ விரும்புகிறீர்களா?</translation>
 <translation id="2297705863329999812">பிரிண்டர்களைத் தேடவும்</translation>
 <translation id="2300383962156589922"><ph name="APP_NAME" />ஐத் தனிப்பயனாக்கி, கட்டுப்படுத்தும்</translation>
-<translation id="2300800387751317588">தொடங்கும்போது குக்கீகளை நீங்கள் அழித்துவிடுவதால் ஒத்திசைவு இடைநிறுத்தப்பட்டுள்ளது. ஒத்திசைவைத் தொடர <ph name="COOKIE_SETTINGS_LINK" /> மாற்றவும்.</translation>
+<translation id="2300800387751317588">தொடங்கும்போது குக்கீகளை நீங்கள் அழித்துவிடுவதால் ஒத்திசைவு இடைநிறுத்தப்பட்டுள்ளது. ஒத்திசைவைத் தொடர <ph name="COOKIE_SETTINGS_LINK" /> ஐ மாற்றவும்.</translation>
 <translation id="2301382460326681002">நீட்டிப்பு மூல கோப்பகம் செல்லாதது.</translation>
 <translation id="23030561267973084">"<ph name="EXTENSION_NAME" />" ஆனது கூடுதல் அனுமதிகளைக் கோரியுள்ளது.</translation>
 <translation id="2307462900900812319">நெட்வொர்க்கை உள்ளமை</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">லாக் ஸ்கிரீன் குறிப்புகள் தானாகவே <ph name="LOCK_SCREEN_APP_NAME" /> இல் சேமிக்கப்பட்டன. உங்களின் மிகச் சமீபத்திய குறிப்பானது லாக் ஸ்கிரீனில் தொடர்ந்து இருக்கும்.</translation>
 <translation id="2353297238722298836">கேமராவும் மைக்ரோஃபோனும் அனுமதிக்கப்பட்டன</translation>
 <translation id="2356070529366658676">கேள்</translation>
-<translation id="2357949918965361754">Chrome இல் உள்ள உள்ளடக்கத்தை, உங்கள் TV அல்லது பிற சாதனங்களில் காட்ட இந்த அம்சத்தைப் பயன்படுத்தலாம்.</translation>
 <translation id="2359345697448000899">கருவிகள் மெனுவில் நீட்டிப்புகள் என்பதைக் கிளிக் செய்து நீட்டிப்புகளை நிர்வகிக்கவும்.</translation>
 <translation id="2359808026110333948">தொடர்க</translation>
 <translation id="236117173274098341">மேம்படுத்து</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">இந்த சாதனத்தை உடனடியாகப் புதுப்பிக்கும்படி உங்கள் நிறுவனம் வலியுறுத்துகிறது</translation>
 <translation id="2439545803278355377">புதிய பின்னை உள்ளிடவும். குறைந்தபட்சம் 4 எழுத்துருக்கள் இருக்க வேண்டும். எழுத்துகள், எண்கள் மற்றும் பிற எழுத்துருக்கள் அதில் இருக்கலாம்.</translation>
 <translation id="2440604414813129000">ஆ&amp;தாரத்தைக் காண்பி</translation>
+<translation id="2442916515643169563">உரை ஷேடோ</translation>
 <translation id="2444119669991608829"><ph name="LANGUAGE" /> மொழியில் பக்கம் இல்லையா ?</translation>
 <translation id="2445081178310039857">நீட்டிப்பு மூல கோப்பகம் தேவை.</translation>
 <translation id="2445484935443597917">ஒரு புதிய சுயவிவரத்தை உருவாக்கு</translation>
@@ -1181,6 +1188,7 @@
 <translation id="2738771556149464852">இதன்பிறகு அல்ல</translation>
 <translation id="2739191690716947896">பிழைத்திருத்து</translation>
 <translation id="2739240477418971307">உங்கள் அணுகல்தன்மை அமைப்புகளை மாற்றலாம்</translation>
+<translation id="274029851662193272">டிப்ரஸ்டு</translation>
 <translation id="2740393541869613458">மேற்பார்வையிடப்படும் பயனர் பார்வையிட்ட இணையதளங்களைச் சரிபார்க்கலாம், மேலும்</translation>
 <translation id="2741912629735277980">உள்நுழைவுத் திரையில் UIயைக் காட்டு</translation>
 <translation id="274290345632688601">Linux ஆப்ஸ் &amp; கோப்புகள் மீட்டமைக்கப்படுகின்றன.</translation>
@@ -1229,6 +1237,7 @@
 <translation id="2806891468525657116">ஷார்ட்கட் ஏற்கனவே உள்ளது</translation>
 <translation id="2807517655263062534">நீங்கள் பதிவிறக்கும் கோப்புகள் இங்கே தோன்றும்</translation>
 <translation id="2809586584051668049">மேலும் <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt ஆதரிக்கப்படவில்லை</translation>
 <translation id="2812944337881233323">வெளியேறி, மீண்டும் உள்நுழையவும்</translation>
 <translation id="2812989263793994277">எந்தப் படங்களையும் காண்பிக்க வேண்டாம்</translation>
 <translation id="281390819046738856">கோரிக்கையில் கையொப்பமிட முடியவில்லை.</translation>
@@ -1251,7 +1260,6 @@
 <translation id="2841837950101800123">வழங்குநர்</translation>
 <translation id="2844169650293029770">USB-C சாதனம் (இடது பக்கம் முன்னே இருக்கும் போர்ட்)</translation>
 <translation id="2845382757467349449">எப்பொழுதும் புக்மார்க்ஸ் பட்டியைக் காட்டு</translation>
-<translation id="2847759467426165163">இதற்கு அலைபரப்பு</translation>
 <translation id="284805635805850872">தீங்கிழைக்கும் மென்பொருளை அகற்றவா?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">சுத்தப்படுத்த முடியவில்லை</translation>
@@ -1298,6 +1306,7 @@
     சேவையகப் பிழை: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">கோப்பகத்தின் மூலம் மீடியா கேலரியைச் சேர்</translation>
 <translation id="2910318910161511225">நெட்வொர்க்குடன் இணைத்து, மீண்டும் முயலவும்</translation>
+<translation id="2910518940971897750">அசல் கோப்பில் சேமி</translation>
 <translation id="2913331724188855103">குக்கீத் தரவை, தளங்கள் சேமிக்கவும் படிக்கவும் அனுமதி (பரிந்துரைக்கப்பட்டது)</translation>
 <translation id="2915102088417824677">செயல்பாட்டுப் பதிவைக் காட்டு</translation>
 <translation id="2915873080513663243">தானியங்கு ஸ்கேன்</translation>
@@ -1362,12 +1371,14 @@
 <translation id="3013291976881901233">MIDI சாதனங்கள்</translation>
 <translation id="3015639418649705390">இப்போதே மீண்டும் தொடங்கு</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" />ஐத் தானாக உள்ளமைக்க இயலவில்லை. மேம்பட்ட பிரிண்ட்டர் விவரங்களைக் குறிப்பிடவும்.</translation>
+<translation id="3016381065346027039">பதிவுகள் எதுவும் இல்லை</translation>
 <translation id="3016641847947582299">உறுப்பு மேம்படுத்தப்பட்டது</translation>
 <translation id="3016780570757425217">உங்கள் இருப்பிடத்தை அறியும்</translation>
 <translation id="3017079585324758401">பின்புலம்</translation>
 <translation id="3020183492814296499">ஷார்ட்கட்கள்</translation>
 <translation id="3020990233660977256">வரிசை எண்: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">பட்டர்ஃப்ளை</translation>
+<translation id="3021408157810018664">அசல் கோப்புகளில் மாற்றங்களைச் சேமிக்கவா?</translation>
 <translation id="3021426244864538700">இந்தத் தளத்தின் தரவை அணுகுதல்</translation>
 <translation id="3021678814754966447">சட்டக ஆதாரங்களைக் &amp;காண்க</translation>
 <translation id="3022978424994383087">மொழிபெயர்க்க முடியவில்லை.</translation>
@@ -1460,6 +1471,7 @@
 <translation id="3170072451822350649">உள்நுழைவதைத் தவிர்த்துவிட்டு <ph name="LINK_START" />விருந்தினராக உலாவலாம்<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">வீடியோ இன்புட்டை ஒரு தளம் பயன்படுத்துகிறது</translation>
 <translation id="3177909033752230686">பக்கத்தின் மொழி:</translation>
+<translation id="3179982752812949580">உரையின் எழுத்துரு</translation>
 <translation id="3181954750937456830">பாதுகாப்பு உலாவல் (ஆபத்தான தளங்களிலிருந்து உங்களையும் சாதனத்தையும் பாதுகாக்கும்)</translation>
 <translation id="3182749001423093222">எழுத்துப் பிழை சரிபார்ப்பான்</translation>
 <translation id="3183139917765991655">புரோஃபைல் இம்போர்ட்டர்</translation>
@@ -1512,7 +1524,6 @@
 <translation id="3275778913554317645">சாளரமாகத் திற</translation>
 <translation id="3278001907972365362">உங்கள் Google கணக்கு(கள்) மதிப்பாய்வு செய்யப்பட வேண்டும்.</translation>
 <translation id="3279230909244266691">இதற்குச் சில நிமிடங்கள் ஆகலாம். விர்ச்சுவல் மெஷினைத் தொடங்குகிறது.</translation>
-<translation id="3279741024917655738">முழுத்திரை வீடியோக்களை இதில் காட்டு</translation>
 <translation id="3280237271814976245">&amp;இவ்வாறு சேமி...</translation>
 <translation id="3280243678470289153">Chrome இல் தொடர்க</translation>
 <translation id="3281892622610078515">தனிமைப்படுத்தப்படவுள்ள கோப்புகளும் நிரல்களும்:</translation>
@@ -1534,7 +1545,7 @@
 <translation id="3303855915957856445">தேடல் முடிவுகள் எதுவுமில்லை</translation>
 <translation id="3305389145870741612">வடிவமைப்பு செயலாக்கத்திற்கு சில வினாடிகள் ஆகும். காத்திருக்கவும்.</translation>
 <translation id="3305661444342691068">PDF ஐ மாதிரிக்காட்யில் திறக்கவும்</translation>
-<translation id="3306684685104080068">Google Hangouts போன்ற கிளவுடு சார்ந்த சேவைகளுக்கு அலைபரப்புதலை இயக்கு.</translation>
+<translation id="3307871847038842490">அசல் கோப்புகளில் சேமிப்பதற்கான அனுமதி இந்தப் பக்கத்திற்கு உள்ளது.</translation>
 <translation id="3308006649705061278">நிறுவன யூனிட் (OU)</translation>
 <translation id="3308116878371095290">இந்தப் பக்கம் குக்கீகளை அமைப்பதிலிருந்து தடுக்கப்பட்டது.</translation>
 <translation id="3308134619352333507">பட்டனை மறை</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">கணக்கு அமைவை ரத்துசெய்யவா?</translation>
 <translation id="3464012987031883895">ஆடியோ இன்புட்டை ஒரு தளம் பயன்படுத்துகிறது</translation>
 <translation id="346431825526753">இது <ph name="CUSTODIAN_EMAIL" /> ஆல் நிர்வகிக்கப்படும் குழந்தைகளுக்கான கணக்காகும்.</translation>
-<translation id="3468275649641751422">வீடியோ அல்லது ஆடியோ கோப்பை ஸ்ட்ரீம் செய்</translation>
 <translation id="3468999815377931311">Android ஃபோன்</translation>
 <translation id="3470442499439619530">இந்தப் பயனரை அகற்று</translation>
 <translation id="3473479545200714844">திரை உருப்பெருக்கி</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">சிறிதாக்கு</translation>
 <translation id="3497560059572256875">Doodleலைப் பகிர்</translation>
 <translation id="3505030558724226696">சாதன அணுகலை ரத்துசெய்</translation>
+<translation id="3505635633742443645">வீடியோ அவுட்புட்டிற்கு 'USB டைப்-சி போர்ட்டைப்' பயன்படுத்தும் போது டாக்கின் HDMI போர்ட்டைப் பயன்படுத்த இயலாது. ஏதாவது ஒரு டிஸ்ப்ளேவிற்கு வேறு போர்ட்டைப் பயன்படுத்தவும்.</translation>
 <translation id="3507421388498836150">"<ph name="EXTENSION_NAME" />" இன் தற்போதைய அனுமதிகள்</translation>
 <translation id="3507888235492474624">புளூடூத் சாதனங்களை மீண்டும் ஸ்கேன் செய்யும்</translation>
 <translation id="3508920295779105875">வேறு கோப்புறையைத் தேர்வு செய்க...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">நிறுவப்பட்டது</translation>
 <translation id="3578594933904494462">இந்தத் தாவலில் உள்ள உள்ளடக்கமானது பகிரப்படுகிறது.</translation>
 <translation id="357886715122934472">நீங்கள் உரிமையாளராக உள்ள குழுவில் &lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt;, &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; பிரிண்டரைப் பகிர விரும்புகிறார்: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. நீங்கள் ஏற்றுக்கொண்டால், எல்லா குழு உறுப்பினர்களாலும் பிரிண்டர் மூலம் அச்சிட முடியும்.</translation>
+<translation id="357889014807611375">கட்டண வைஃபை</translation>
 <translation id="3584169441612580296">உங்கள் கம்ப்யூட்டரிலிருந்து படங்கள், இசை மற்றும் பிற மீடியாவைப் படிக்கலாம், மாற்றலாம்</translation>
 <translation id="3587482841069643663">அனைத்தும்</translation>
 <translation id="358796204584394954">"<ph name="DEVICE_NAME" />" இல் இந்தக் குறியீட்டை உள்ளிட்டு இதனுடன் இணைக்கவும்:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">உள்நுழைக</translation>
 <translation id="3593965109698325041">சான்றிதழ் பெயர் கட்டுப்பாடுகள்</translation>
 <translation id="3596235046596950091">கிளவுட் சேவைகளை இயக்கு</translation>
+<translation id="3599221874935822507">ரெய்ஸ்டு</translation>
 <translation id="3599863153486145794">உள்நுழைந்த எல்லாச் சாதனங்களிலிருந்தும் வரலாற்றை அழிக்கும். உங்கள் Google கணக்கு, <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> என்ற இணைப்பில் உலாவல் வரலாறு தொடர்பான பிற தகவல்களைக் கொண்டிருக்கக்கூடும்.</translation>
 <translation id="3600051066689725006">இணையக் கோரிக்கைத் தகவல்</translation>
 <translation id="3600792891314830896">ஒலியை இயக்கும் தளங்களில் ஒலியடக்கு</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; ஆல் பதிவிறக்கப்பட்டது</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> ஐக் காட்டு</translation>
 <translation id="3613422051106148727">புதிய தாவலில் &amp;திற</translation>
+<translation id="3615073365085224194">விரலால் கைரேகை சென்சாரைத் தொடவும்</translation>
 <translation id="3616113530831147358">ஆடியோ</translation>
 <translation id="3616741288025931835">உலாவல் தரவை &amp;சுத்தமாக்கு...</translation>
 <translation id="3617891479562106823">பின்னணிகள் கிடைக்கவில்லை. பின்னர் மீண்டும் முயலவும்.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">முகப்புப் பக்கம்</translation>
 <translation id="3720996970802414353">எப்படியேனும் மாற்று</translation>
 <translation id="3722108462506185496">விர்ச்சுவல் மெஷின் சேவையைத் தொடங்கும்போது பிழை ஏற்பட்டது. பிறகு முயலவும்.</translation>
-<translation id="3723158278575423087">Chromiumமில் அலைபரப்பும் அனுபவத்திற்கு வரவேற்கிறோம்!</translation>
 <translation id="3725367690636977613">பக்கங்கள்</translation>
 <translation id="3726137731714254362">இங்கிருந்து கோப்புறைகளை அகற்றினால் பகிர்வு நிறுத்தப்படும், எனினும் கோப்புகள் நீக்கப்படாது.</translation>
 <translation id="3727148787322499904">இந்த அமைப்பை மாற்றினால், பகிர்ந்த எல்லா நெட்வொர்க்குகளும் பாதிக்கப்படும்</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">விரிவான பதிப்புத் தகவல்</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{USB சாதனத்துடன் தொடர்புகொள்ளும்}other{# USB சாதனங்களுடன் தொடர்புகொள்ளும்}}</translation>
 <translation id="3765246971671567135">ஆஃப்லைன் டெமோ பயன்முறைக் கொள்கையைப் படிக்க முடியவில்லை.</translation>
-<translation id="3766223500670287046">தொலைநிலைத் திரை</translation>
 <translation id="3768037234834996183">விருப்பத்தேர்வுகளை ஒத்திசைக்கிறது...</translation>
 <translation id="377050016711188788">ஐஸ்கிரீம்</translation>
 <translation id="3771294271822695279">வீடியோ கோப்புகள்</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">விரலை எடுத்துவிட்டு மீண்டும் தொடவும்</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: ஒத்திசைவு இடைநிறுத்தப்பட்டுள்ளது</translation>
-<translation id="3862134173397075045">Chromeமில் அலைபரப்பும் அனுபவத்திற்கு வரவேற்கிறோம்!</translation>
 <translation id="3862693525629180217">உள்ளமைந்த சென்சார் வழியாகச் சரிபார்</translation>
 <translation id="3862788408946266506">'kiosk_only' மெனிஃபெஸ்ட் பண்புக்கூறைக் கொண்ட ஆப்ஸை Chrome OS கியோஸ்க் பயன்முறையிலேயே நிறுவ வேண்டும்</translation>
 <translation id="3865414814144988605">தெளிவு</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smart Lock இன் ஃபோன் மாற்றப்பட்டது</translation>
 <translation id="3927932062596804919">மறு</translation>
 <translation id="3930737994424905957">சாதனங்களைத் தேடுகிறது</translation>
+<translation id="3930968231047618417">பின்புல வண்ணம்</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> இன் நீக்கப்பட்ட கடவுச்சொல்லை மீட்டமைக்கும்</translation>
 <translation id="3936390757709632190">புதிய தாவலில் ஆடியோவை &amp;திற</translation>
 <translation id="3936925983113350642">நீங்கள் தேர்வு செய்யும் கடவுச்சொல்லானது, பின்னர் இந்தச் சான்றிதழை மீட்டெடுப்பதற்குத் தேவைப்படும். இதைப் பாதுகாப்பான இடத்தில் குறித்து வைக்கவும்.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE இலிருந்து இறக்குமதி செய்யப்பட்டது</translation>
 <translation id="3950820424414687140">உள்நுழைக</translation>
+<translation id="3950828138786918475">உங்கள் சாதனத்தில் உள்ள கோப்புறையைப் படிக்க இந்தத் தாவலுக்கு அனுமதி உள்ளது.</translation>
 <translation id="3954354850384043518">பதிவிறக்குகிறது</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> ஹெர்ட்ஸ்)</translation>
 <translation id="3954953195017194676">சமீபத்தில் எடுக்கப்பட்ட WebRTC நிகழ்வுப் பதிவுகள் எதுவும் இல்லை.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">கணக்கிடுகிறது...</translation>
 <translation id="3975565978598857337">டொமைனுக்காக சேவையகத்தைப் பயன்படுத்த இயலவில்லை</translation>
 <translation id="397703832102027365">இறுதிபடுத்துகிறது...</translation>
+<translation id="3977886311744775419">தானியங்குப் புதுப்பிப்புகள் இந்த வகை நெட்வொர்க்கில் பதிவிறக்கப்படாது, ஆனால் நீங்கள் அவற்றை நேரடியாகப் பதிவிறக்கலாம்.</translation>
 <translation id="3979395879372752341">புதிய நீட்டிப்பு சேர்க்கப்பட்டது (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> ஐ இயக்கு</translation>
 <translation id="3981760180856053153">செல்லாத சேமிப்பு வகை உள்ளிடப்பட்டது.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">கிளிக்குக்கு தட்டுவதை இயக்கு</translation>
 <translation id="4195643157523330669">புதிய தாவலில் திற</translation>
 <translation id="4195814663415092787">நான் விட்ட இடத்திலிருந்து தொடங்கு</translation>
+<translation id="4197940474316761015">நீங்கள் செய்யும் மாற்றங்களை <ph name="ORIGIN" /> இந்தக் கோப்புகளில் நேரடியாகச் சேமிக்கும். இந்தத் தாவல் திறந்திருக்கும்போது மட்டுமே இந்த வலைதளத்தால் மாற்றங்களைச் சேமிக்க இயலும்.</translation>
 <translation id="4198146608511578238">Google அசிஸ்டண்ட்டுடன் பேச, துவக்கி ஐகானை அழுத்திப் பிடிக்கவும்.</translation>
 <translation id="4200689466366162458">தனிப்பயன் சொற்கள்</translation>
 <translation id="4200983522494130825">புதிய &amp;தாவல்</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">தானாகவே மொபைல் டேட்டாவுடன் இணை</translation>
 <translation id="4268025649754414643">விசை மாற்றம்</translation>
 <translation id="4270393598798225102">பதிப்பு <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">பொருத்தங்கள் இல்லை</translation>
 <translation id="4275663329226226506">ஊடகம்</translation>
 <translation id="4275830172053184480">உங்கள் சாதனத்தை மீண்டும் தொடங்கவும்</translation>
 <translation id="4278101229438943600">உங்கள் அசிஸ்டண்ட் தயாராகிவிட்டது</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">CPU நேரம்</translation>
 <translation id="4534661889221639075">மீண்டும் முயலவும்.</translation>
 <translation id="4535127706710932914">இயல்புநிலை சுயவிவரம்</translation>
+<translation id="4535767533210902251">உங்கள் கீபோர்டின் மேலே வலது ஓரத்தில் கைரேகை சென்சார் உள்ளது. அதை ஏதேனும் ஒரு விரலால் மெதுவாகத் தொடவும்.</translation>
 <translation id="4538684596480161368">எப்போதும் <ph name="HOST" /> இல் சாண்ட்பாக்ஸ் செய்யப்படாத செருகுநிரல்களைத் தடு</translation>
 <translation id="4538792345715658285">நிறுவன கொள்கையால் நிறுவப்பட்டது.</translation>
 <translation id="4542520061254486227">உங்கள் தரவை <ph name="WEBSITE_1" /> மற்றும் <ph name="WEBSITE_2" /> இல் படிக்கவும்</translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">மேலும்...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">புளூடூத் சாதனத்தை இணை</translation>
+<translation id="4578012756826807359">உள்நுழைவுத் தரவு நீக்கப்பட்டது.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" />ஐ அலைபரப்ப முடியவில்லை.</translation>
 <translation id="4581774856936278355">Linuxசை மீட்டமைக்கும் பொழுது பிழை நேர்ந்தது</translation>
 <translation id="4582563038311694664">எல்லா அமைப்புகளையும் மீட்டமை</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">பல்வேறு தளங்களின் குக்கீகளும் வெளியேறும்போது அழிக்கப்படும்.</translation>
 <translation id="4765582662863429759">உங்கள் மொபைலில் இருந்து Chromebookகுக்கு மெசேஜ்களை ரிலே செய்ய Android மெசேஜஸை அனுமதிக்கும்</translation>
 <translation id="4768332406694066911">உங்களை அடையாளங்காணும் இந்த நிறுவனங்களின் சான்றிதழ்கள் உள்ளன</translation>
-<translation id="4772404146526168240">இரண்டு திரைகளும்</translation>
 <translation id="4776146737004271126">Android அமைப்புகளைத் திற</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> க்கான கடவுச்சொல்</translation>
 <translation id="4777825441726637019">Play ஸ்டோர்</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">உங்கள் எல்லாச் சாதனங்களிலும் உள்ள புக்மார்க்குகள், வரலாறு, கடவுச்சொற்கள் மற்றும் பிற அமைப்புகளைப் பெற, உள்நுழையவும். மேலும், உங்கள் Google சேவைகளிலும் தானாகவே உள்நுழைவீர்கள்.</translation>
 <translation id="4929386379796360314">அச்சிடுவதற்கான இலக்குகள்</translation>
 <translation id="4930714375720679147">இயக்கு</translation>
-<translation id="4931132176527519925">எப்போதும் பிரதிபலித்தலைப் பயன்படுத்து</translation>
 <translation id="4932733599132424254">தேதி</translation>
 <translation id="4933484234309072027"><ph name="URL" /> இல் உட்பொதியப்பட்டது</translation>
 <translation id="493571969993549666">மேற்பார்வையிடப்படும் பயனரைச் சேர்</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">ஒலி இயக்கு</translation>
 <translation id="4992458225095111526">பவர்வாஷை உறுதிப்படுத்தவும்</translation>
 <translation id="4992473555164495036">பயன்படுத்தக்கூடிய உள்ளீட்டு முறைகளை உங்கள் நிர்வாகி கட்டுப்படுத்தியுள்ளார்.</translation>
+<translation id="4992866843815555470">உங்கள் டாக்கைச் சரிசெய்ய வேண்டியுள்ளது. ஃபேன் இயங்காவிட்டால் டாக்கின் செயல்பாடு நின்றுவிடும்.</translation>
 <translation id="4992926179187649719">'Ok Google' அம்சத்தை இயக்கவும்</translation>
 <translation id="4994474651455208930">நெறிமுறைகளுக்கு இயல்புநிலை ஹேண்ட்லர்களாக இருக்கும்படி கேட்க தளங்களை அனுமதி</translation>
 <translation id="4994754230098574403">அமைக்கிறது</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">செயலாக்க ID</translation>
 <translation id="5233638681132016545">புதிய தாவல்</translation>
 <translation id="5233736638227740678">&amp;ஒட்டு</translation>
-<translation id="5234764350956374838">நிராகரி</translation>
 <translation id="5235050375939235066">ஆப்ஸை நிறுவல் நீக்கவா?</translation>
 <translation id="5235750401727657667">புதிய தாவலைத் திறக்கும் போது காண்பிக்கப்படும் பக்கத்தை மாற்று</translation>
 <translation id="5238278114306905396">ஆப்ஸின் "<ph name="EXTENSION_NAME" />" ஆனது தானாக அகற்றப்பட்டது.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google ஆனது Chromeஐப் பரிந்துரைக்கிறது</translation>
 <translation id="532247166573571973">சேவையகத்தைத் தொடர்புகொள்ள முடியாதிருக்கலாம். மீண்டும் முயலவும்.</translation>
 <translation id="5324780743567488672">எனது இருப்பிடத்தைப் பயன்படுத்தி, தானாகவே நேர மண்டலத்தை அமை</translation>
+<translation id="5327129740973624286">அசல் கோப்புகளில் சேமிப்பதற்கான அனுமதி <ph name="WINDOW_TITLE" />க்கு உள்ளது</translation>
 <translation id="5327248766486351172">பெயர்</translation>
 <translation id="5327570636534774768">வேறொரு டொமைன் மூலம் நிர்வகிப்பதற்காக இந்தச் சாதனம் குறிக்கப்பட்டுள்ளது. டெமோ பயன்முறையை அமைப்பதற்கு முன் அந்த டொமைனிலிருந்து அணுகலை அகற்றவும்.</translation>
 <translation id="532943162177641444">இந்தச் சாதனம் பயன்படுத்தக்கூடிய மொபைல் ஹாட்ஸ்பாட்டை அமைக்க, <ph name="PHONE_NAME" /> இல் தெரியும் அறிவிப்பைத் தட்டவும்.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> பின்வருவனவற்றைச் செய்ய விரும்புகிறது:</translation>
 <translation id="5534304873398226603">படம் அல்லது வீடியோவை நிராகரி</translation>
 <translation id="5535941515421698170">அத்துடன், தற்போதுள்ள தரவையும் இந்தச் சாதனத்திலிருந்து அகற்று</translation>
-<translation id="5537725057119320332">அலைபரப்பு</translation>
 <translation id="5539221284352502426">சேவையகம் நீங்கள் உள்ளிட்ட கடவுச்சொல்லை நிராகரித்தது. நிராகரிப்பிற்கான சாத்தியமான காரணங்கள்: கடவுச்சொல் மிகச் சிறியது. கடவுச்சொல்லில் எண்கள் அல்லது குறியீடுகள் இருக்க வேண்டும். முந்தைய கடவுச்சொற்களிலிருந்து தற்போதைய கடவுச்சொல் வேறுபட்டு இருக்க வேண்டும்.</translation>
 <translation id="5541687815721799001">பயன்பாட்டைப் பயன்படுத்து</translation>
 <translation id="5542132724887566711">சுயவிவரம்</translation>
@@ -3301,7 +3315,6 @@
 <translation id="5997337190805127100">தள அணுகலைப் பற்றி மேலும் அறிக</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />'க்கு <ph name="RESULT_COUNT" /> முடிவுகள் உள்ளன</translation>
 <translation id="6002458620803359783">விருப்பமான குரல்கள்</translation>
-<translation id="6005695835120147974">மீடியா ரூட்டர்</translation>
 <translation id="6006484371116297560">கிளாசிக்</translation>
 <translation id="6007240208646052708">உங்கள் மொழியில் குரல் தேடல் இல்லை.</translation>
 <translation id="6009781704028455063">உள்ளமைந்த சென்சார்</translation>
@@ -3386,7 +3399,7 @@
 <translation id="6112294629795967147">அளவை மாற்ற, தொடவும்</translation>
 <translation id="6112931163620622315">மொபைலைப் பார்க்கவும்</translation>
 <translation id="6112952769866305444">பயனரைத் திருத்தவும், <ph name="PROFILE_NAME" />, <ph name="USERNAME" /></translation>
-<translation id="6113942107547980621">Smart Lockகைப் பயன்படுத்த உங்கள் மொபைலில் உள்ள முதன்மைப் பயனர் சுயவிவரத்திற்கு மாறவும்</translation>
+<translation id="6113942107547980621">Smart Lockகைப் பயன்படுத்த உங்கள் மொபைலில் உள்ள முதன்மைப் பயனர் கணக்கிற்கு மாறவும்</translation>
 <translation id="6116338172782435947">கிளிப்போர்டுக்கு நகலெடுத்த உரையையும் படங்களையும் பார்க்க விரும்புகிறது</translation>
 <translation id="6116921718742659598">மொழி மற்றும் உள்ளீட்டு அமைப்புகளை மாற்றவும்</translation>
 <translation id="6120205520491252677">தொடக்கத் திரையில் இந்தப் பக்கத்தைப் பொருத்து...</translation>
@@ -3501,7 +3514,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{உங்கள் நெட்வொர்க்கில் புதிய பிரிண்டர் உள்ளது}other{உங்கள் நெட்வொர்க்கில் புதிய பிரிண்டர்கள் உள்ளன}}</translation>
 <translation id="6286708577777130801">சேமித்த கடவுச்சொல் விவரங்கள்</translation>
 <translation id="6289452883081499048">Play போன்ற தனிப்பயனாக்கிய Google சேவைகள்</translation>
-<translation id="6290556621549272952">Chromium இல் உள்ள உள்ளடக்கத்தை, உங்கள் TV அல்லது பிற சாதனங்களில் காட்ட இந்த அம்சத்தைப் பயன்படுத்தலாம்.</translation>
 <translation id="6291949900244949761">ஒரு தளம்  USB சாதனங்களை அணுக விரும்பும் போது அனுமதி கேள் (பரிந்துரைக்கப்படுகிறது)</translation>
 <translation id="6291953229176937411">&amp;கண்டுபிடிப்பானில் காண்பி</translation>
 <translation id="6295158916970320988">எல்லா தளங்களும்</translation>
@@ -3565,6 +3577,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />கணினியின் தகவல்<ph name="END_LINK1" /> மற்றும் <ph name="BEGIN_LINK2" />அளவீடுகளை<ph name="END_LINK2" /> அனுப்பு</translation>
 <translation id="6396988158856674517">தளங்கள் மோஷன் சென்சார்களைப் பயன்படுத்துவதைத் தடுக்கும்</translation>
 <translation id="6397094776139756010">ஒத்திசைவு மற்றும் தனிப்பயனாக்க விருப்பங்கள்</translation>
+<translation id="6397449385184089588">நீங்கள் செய்யும் மாற்றங்களை <ph name="ORIGIN" /> வலைதளத்தால் இந்தக் கோப்பில் நேரடியாகச் சேமிக்க முடியும். இந்தத் தாவல் திறந்திருக்கும்போது மட்டுமே இந்த வலைதளத்தால் மாற்றங்களைச் சேமிக்க இயலும்.</translation>
 <translation id="6398715114293939307">Google Play ஸ்டோரை அகற்று</translation>
 <translation id="6398765197997659313">முழுத்திரையிலிருந்து வெளியேறு</translation>
 <translation id="6399774419735315745">உளவாளி</translation>
@@ -3609,11 +3622,13 @@
 <translation id="6455264371803474013">குறிப்பிட்ட தளங்களில் மட்டும்</translation>
 <translation id="6455894534188563617">&amp;புதிய கோப்புறை</translation>
 <translation id="6456394469623773452">நன்றாக உள்ளது</translation>
+<translation id="6456955391422100996">விளம்பரம் அகற்றப்பட்டது.</translation>
 <translation id="645705751491738698">JavaScript ஐத் தடுப்பதைத் தொடர்க</translation>
 <translation id="6458701200018867744">பதிவேற்ற முடியவில்லை (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">தேடுவதற்கு தேர்ந்தெடுத்ததைப் பயன்படுத்து</translation>
 <translation id="6459799433792303855">செயலில் உள்ள சாளரம், மற்றொரு திரைக்கு நகர்த்தப்பட்டது.</translation>
 <translation id="6460601847208524483">அடுத்ததைக் கண்டுபிடி</translation>
+<translation id="6461170143930046705">நெட்வொர்க்குகளைத் தேடுகிறது...</translation>
 <translation id="6463795194797719782">&amp;திருத்து</translation>
 <translation id="6466988389784393586">புக்மார்க்ஸ் அனைத்தையும் &amp;திற</translation>
 <translation id="6467304607960172345">முழுத்திரை வீடியோக்களை மேம்படுத்து</translation>
@@ -3652,6 +3667,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">இப்போது <ph name="NETWORK_TYPE" /> நெட்வொர்க்கைப் பயன்படுத்துகிறீர்கள்.</translation>
 <translation id="6527303717912515753">பகிர்</translation>
 <translation id="6528513914570774834">இந்தச் சாதனத்தின் பிற பயனர்களையும் இந்த நெட்வொர்க்கைப் பயன்படுத்த அனுமதி</translation>
 <translation id="652948702951888897">Chrome வரலாறு</translation>
@@ -3748,7 +3764,6 @@
 <translation id="6680650203439190394">மதிப்பிடு</translation>
 <translation id="6681668084120808868">புகைப்படம் எடு</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" நிறுவல் நீக்கப்படும்.</translation>
-<translation id="6685083257944113180">நிறுத்து, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Google Playஐத் திற</translation>
 <translation id="6686490380836145850">வலப்பக்கத்தில் உள்ள தாவல்களை மூடுக</translation>
 <translation id="6686817083349815241">உங்கள் கடவுச்சொல்லைச் சேமிக்கவும்</translation>
@@ -3856,6 +3871,7 @@
 <translation id="6845038076637626672">பெரிதாக்கப்பட்டதை திற</translation>
 <translation id="6845325883481699275">Chromeமின் பாதுகாப்பை மேம்படுத்த உதவுக</translation>
 <translation id="6848388270925200958">தற்போது, இந்தச் சாதனத்தில் மட்டுமே பயன்படுத்தக்கூடிய சில கார்டுகள் உள்ளன</translation>
+<translation id="6850286078059909152">உரை வண்ணம்</translation>
 <translation id="6851497530878285708">ஆப்ஸ் இயக்கப்பட்டது</translation>
 <translation id="6853388645642883916">புதுப்பிப்பான் செயலில் இல்லை</translation>
 <translation id="68541483639528434">பிற தாவல்களை மூடுக</translation>
@@ -3905,7 +3921,6 @@
 <translation id="6923132443355966645">உருட்டு / கிளிக் செய்</translation>
 <translation id="6923633482430812883">பகிர்வை ஏற்றுவதில் பிழை. நீங்கள் இணைக்கின்ற கோப்புச் சேவையகம் SMBv2 அல்லது அதற்குப் பிந்தைய பதிப்பை ஆதரிக்கிறதா எனச் சரிபார்க்கவும்.</translation>
 <translation id="6930036377490597025">இணைக்கக்கூடிய பாதுகாப்பு விசை அல்லது உள்ளமைந்த சென்சார்</translation>
-<translation id="6930242544192836755">மொத்த நேரம்</translation>
 <translation id="693807610556624488">எழுதுதல் செயல்பாடு இந்தச் சாதனத்திற்கான பண்புக்கூற்றின் அதிகபட்ச நீளத்தை மீறிவிட்டது: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510"><ph name="HOST_NAME" /> ஐ உங்கள் சான்றிதழுடன் அங்கீகரிக்க <ph name="TOKEN_NAME" /> இல் தயவுசெய்து உள்நுழைக.</translation>
 <translation id="6943176775188458830">அச்சிடுவதை ரத்துசெய்</translation>
@@ -3919,6 +3934,7 @@
 <translation id="6951153907720526401">பேமண்ட் ஹேண்ட்லர்கள்</translation>
 <translation id="6951663584153258142">இந்த சாதனத்தைப் புதுப்பிக்கும்படி உங்கள் நிறுவனம் வலியுறுத்துகிறது</translation>
 <translation id="6953878494808481632">தொடர்புடைய தகவல்</translation>
+<translation id="6953916367503892689">{0,plural, =1{கோப்பு: <ph name="FILES" />}other{கோப்புகள்: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">பாப்அப் கண்காணிப்பு</translation>
 <translation id="6957044667612803194">இந்தப் பாதுகாப்பு விசை பின்களை ஆதரிக்கவில்லை</translation>
 <translation id="6957231940976260713">சேவைப் பெயர்</translation>
@@ -4131,7 +4147,6 @@
 <translation id="7254554697254365959">இந்தப் பக்கத்தை மொழிபெயர்க்க முடியவில்லை.</translation>
 <translation id="7254951428499890870">சரிபார்ப்பு பயன்முறையில் "<ph name="APP_NAME" />" ஐத் துவக்க விருப்பமா?</translation>
 <translation id="7255002516883565667">தற்போது, இந்தச் சாதனத்தில் மட்டுமே பயன்படுத்தக்கூடிய ஒரு கார்டு உள்ளது</translation>
-<translation id="7255220508626648026">அனுப்புகிறது: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">ரீசெட்டை உறுதிசெய்ய பாதுகாப்பு விசையை மீண்டும் தொடவும். பின் உட்பட பாதுகாப்பு விசையில் சேமிக்கப்பட்ட அனைத்து விவரங்களும் அழிக்கப்படும்.</translation>
 <translation id="7255935316994522020">பயன்படுத்து</translation>
 <translation id="7256069762010468647">தளமானது உங்கள் கேமராவைப் பயன்படுத்துகிறது</translation>
@@ -4265,6 +4280,7 @@
 <translation id="7456142309650173560">dev</translation>
 <translation id="7456847797759667638">இருப்பிடத்தைத் திற...</translation>
 <translation id="7458168200501453431">Google தேடலில் பயன்படுத்தப்படும் அதே பிழைத்திருத்தியைப் பயன்படுத்தும். உலாவியில் நீங்கள் உள்ளிடும் உரை Googleளுக்கு அனுப்பப்படும்.</translation>
+<translation id="7460045493116006516">தற்போது நிறுவியுள்ள தீம்</translation>
 <translation id="7461924472993315131">நிலையாக வை</translation>
 <translation id="746216226901520237">அடுத்த முறை, உங்கள் ஃபோன் <ph name="DEVICE_TYPE" /> சாதனத்தைத் திறக்கும். அமைப்புகளில் Smart Lockகை முடக்கலாம்.</translation>
 <translation id="7463006580194749499">நபரைச் சேர்</translation>
@@ -4324,6 +4340,7 @@
 <translation id="7554791636758816595">புதிய தாவல்</translation>
 <translation id="7556033326131260574">Smart Lock ஆல் உங்கள் கணக்கைச் சரிபார்க்க முடியவில்லை. நுழைவதற்கு உங்கள் கடவுச்சொல்லை உள்ளிடவும்.</translation>
 <translation id="7556242789364317684">துரதிருஷ்டவசமாக, <ph name="SHORT_PRODUCT_NAME" /> ஆல் உங்கள் அமைப்புகளை மீட்க முடியவில்லை. பிழையைச் சரிசெய்வதற்கு, உங்கள் சாதனத்தை <ph name="SHORT_PRODUCT_NAME" /> பவர்வாஷ் மூலம் மீட்டமைக்க வேண்டும்.</translation>
+<translation id="7559444627302317199">நெட்வொர்க் இணைப்பைச் சரிபார்த்தபிறகு மீண்டும் முயலவும்.</translation>
 <translation id="7559719679815339381">காத்திருக்கவும்....கியாஸ்க் ஆப்ஸ் புதுப்பிக்கப்படுகிறது. USB சாதனத்தை அகற்றாதீர்கள்.</translation>
 <translation id="7561196759112975576">எப்போதும்</translation>
 <translation id="7563991800558061108">இந்தப் பிழையிலிருந்து மீட்டமைக்க, உள்நுழைவுத் திரையிலிருந்து உங்கள் Google கணக்கில் உள்நுழைய வேண்டும். பின்னர் உங்கள் Google கணக்கிலிருந்து வெளியேறி, மேற்பார்வையிடப்படும் பயனரை மீண்டும் உருவாக்க முயற்சிக்கலாம்.</translation>
@@ -4568,7 +4585,6 @@
 <translation id="7887334752153342268">பிரதி எடு</translation>
 <translation id="7887864092952184874">புளூடூத் மவுஸ் இணைக்கப்பட்டது</translation>
 <translation id="7889565820482017512">திரை அளவு</translation>
-<translation id="7889966925761734854">நகர்த்து</translation>
 <translation id="7893008570150657497">உங்கள் கம்ப்யூட்டரிலிருந்து புகைப்படங்கள், இசை மற்றும் பிற மீடியாவை அணுகலாம்</translation>
 <translation id="7893153962594818789"><ph name="DEVICE_TYPE" /> இன் புளூடூத் முடக்கப்பட்டுள்ளது. உங்கள் கடவுச்சொல்லை உள்ளிட்டு, புளூடூத்தை இயக்கவும்.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (இயல்புநிலை)</translation>
@@ -4576,7 +4592,6 @@
 <translation id="7898627924844766532">கருவிப்பட்டியில் வை</translation>
 <translation id="7898725031477653577">எப்போதும் மொழிபெயர்</translation>
 <translation id="790040513076446191">தனியுரிமைத் தொடர்பான அமைப்புகளை கையாளலாம்</translation>
-<translation id="7902874111237641165">ஸ்மூத் மோஷன் [பீட்டா]</translation>
 <translation id="7903345046358933331">பக்கம் பதிலளிக்கவில்லை. பதிலளிக்கும் வரை நீங்கள் காத்திருக்கலாம் அல்லது அதை மூடி விடலாம்.</translation>
 <translation id="7903742244674067440">இந்தச் சான்றிதழ் அங்கீகரிப்பாளர்களை அடையாளங்காணும் சான்றிதழ்கள் கோப்பில் உள்ளன</translation>
 <translation id="7903925330883316394">கருவி: <ph name="UTILITY_TYPE" /></translation>
@@ -4688,6 +4703,7 @@
 <translation id="8037117027592400564">தொகுக்கப்பட்ட பேச்சைப் பயன்படுத்திப் பேசப்படும் எல்லா உரையையும் படிக்கலாம்</translation>
 <translation id="8037357227543935929">கேள் (இயல்பு)</translation>
 <translation id="803771048473350947">கோப்பு</translation>
+<translation id="8042142357103597104">உரை ஒளிபுகாத்தன்மை</translation>
 <translation id="8044899503464538266">மெதுவான</translation>
 <translation id="8045253504249021590">Google டாஷ்போர்டு மூலம் ஒத்திசைத்தல் நிறுத்தப்பட்டுள்ளது.</translation>
 <translation id="8045923671629973368">பயன்பாட்டு ஐடி அல்லது இணைய அங்காடி URLஐ உள்ளிடவும்</translation>
@@ -4724,7 +4740,6 @@
     <ph name="BEGIN_PARAGRAPH5" />அமைப்புகளில் இந்தச் சேவையை முடக்கலாம்.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">பின்கள் பொருந்தவில்லை</translation>
 <translation id="809792523045608178">நீட்டிப்பு ஒன்றில் இருந்து பெற்ற ப்ராக்ஸி அமைப்புகளை <ph name="IDS_SHORT_PRODUCT_NAME" /> பயன்படுத்துகிறது</translation>
-<translation id="8099495042588009598">கூடுதல் அனுமதிகள்</translation>
 <translation id="8101987792947961127">அடுத்த மறுதொடக்கத்திற்கு பவர்வாஷ் தேவைப்படுகிறது</translation>
 <translation id="8102159139658438129">இணைக்கப்பட்ட உங்கள் ஃபோனுக்கான விருப்பத்தேர்வுகளைப் பார்க்க, <ph name="LINK_BEGIN" />அமைப்புகளுக்குச்<ph name="LINK_END" /> செல்லவும்</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> சாதனத்தை பவர்வாஷ் செய்து, முந்தைய பதிப்பிற்கு மாறவும்.</translation>
@@ -4776,8 +4791,10 @@
     இந்தத் தளம் தடைசெய்யப்பட வேண்டும் என நான் நினைக்கவில்லை!</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" />க்கு மாறு</translation>
 <translation id="8184318863960255706">மேலும் தகவல்</translation>
+<translation id="8184472985242519288">சீரானது</translation>
 <translation id="8185331656081929126">நெட்வொர்க்கில் புதிய பிரிண்டர்கள் கண்டறியப்படும்போது அறிவிப்புகளைக் காட்டு</translation>
 <translation id="8186609076106987817">சேவையகத்தால் கோப்பை கண்டறிய முடியவில்லை.</translation>
+<translation id="8187950680397073878">இந்தக் கோப்புறையில் உள்ள அனைத்துக் கோப்புகளையும் <ph name="ORIGIN" /> வலைதளத்தால் படிக்க முடியும். இந்தத் தாவல் திறந்திருக்கும்போது மட்டுமே இந்த வலைதளத்தால் மாற்றங்களைச் செய்யமுடியும்.</translation>
 <translation id="8188389033983459049">தொடர்வதற்கு, சாதன அமைப்புகளைச் சரிபார்த்து, புளூடூத்தை இயக்கவும்</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> உடன் இணைக்கிறது</translation>
 <translation id="8191230140820435481">உங்கள் பயன்பாடுகள், நீட்டிப்புகள் மற்றும் தீம்களை நிர்வகிக்கலாம்</translation>
@@ -4881,7 +4898,6 @@
 <translation id="833986336429795709">இந்த இணைப்பைத் திறக்க, பயன்பாட்டைத் தேர்வுசெய்யும்</translation>
 <translation id="8342861492835240085">தொகுப்பைத் தேர்ந்தெடு</translation>
 <translation id="834290227245955730">தவறான பின். இன்னும் <ph name="RETRIES" /> முறை முயலலாம்.</translation>
-<translation id="8343956361364550006">சிறந்த வீடியோ அல்லது அனிமேஷனுக்கு உயர் இணைய வேகத்தைப் பயன்படுத்தவும். வேகம் குறைவான இணைப்புகளைப் பயன்படுத்துபவர்களால் உங்கள் உள்ளடக்கத்தைப் பார்க்க முடியாமல் போகக்கூடும்.</translation>
 <translation id="8351419472474436977">உங்கள் ப்ராக்ஸி அமைப்புகளை இந்த நீட்டிப்பு கட்டுப்படுத்துகிறது, அதாவது நீங்கள் ஆன்லைனில் செய்யும் எல்லாவற்றையும் அதனால் மாற்றமுடியும், தடுக்க முடியும் அல்லது தெரிந்து கொள்ள முடியும். இது ஏன் நடந்தது என்பது தெரியவில்லை எனில், உங்களுக்கு இந்த மாற்றம் தேவைப்படாதது என்று அர்த்தம்.</translation>
 <translation id="8351630282875799764">பேட்டரி சார்ஜாகவில்லை</translation>
 <translation id="835238322900896202">நிறுவல் நீக்கும்போது ஒரு பிழை நேர்ந்தது. ’முனையம்’ வழியாக நிறுவல் நீக்கவும்.</translation>
@@ -4914,9 +4930,11 @@
 <translation id="839736845446313156">பதிவு</translation>
 <translation id="8398877366907290961">இருப்பினும் தொடர்க</translation>
 <translation id="8400146488506985033">நபர்களை நிர்வகி</translation>
+<translation id="8400444932218572097">நீங்கள் செய்யும் மாற்றங்களை இந்தக் கோப்புறையிலுள்ள கோப்புகளில் <ph name="ORIGIN" /> நேரடியாகச் சேமிக்கும். இந்தத் தாவல் திறந்திருக்கும்போது மட்டுமே இந்த வலைதளத்தால் மாற்றங்களைச் சேமிக்க இயலும்.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">முதலில் கேள் (பரிந்துரைத்தது)</translation>
 <translation id="8418445294933751433">தாவலாக &amp;காண்பி</translation>
+<translation id="8418905021510211421">உங்கள் சாதனத்திலுள்ள கோப்புறையைப் படிக்க இந்தப் பக்கத்திற்கு அனுமதி உள்ளது.</translation>
 <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' உடன் பொருந்தும் தேடல் முடிவுகள்</translation>
 <translation id="8419368276599091549">உங்கள் <ph name="DEVICE_TYPE" />க்கு வரவேற்கிறோம்!</translation>
 <translation id="8425213833346101688">மாற்று</translation>
@@ -4936,6 +4954,7 @@
 <translation id="8438566539970814960">தேடல்களையும் உலாவலையும் மேலும் சிறப்பாக்குக</translation>
 <translation id="8439506636278576865">பக்கங்களை இந்த மொழியில் மொழிபெயர்ப்பதற்கான அனுமதி</translation>
 <translation id="8440630305826533614">Linux ஆப்ஸ்</translation>
+<translation id="844241640324986723">உள்நுழைவுத் தரவை நீக்க இயலவில்லை.</translation>
 <translation id="8443338615972234259">உங்கள் மேற்பார்வையிடப்படும் பயனருக்கு இப்போது ஒரு புதிய கணக்கை உருவாக்கவும்.</translation>
 <translation id="8446884382197647889">மேலும் அறிக</translation>
 <translation id="8447409163267621480">கன்ட்ரோல் அல்லது ஆல்ட் விசையைப் பயன்படுத்தித் தொடங்கவும்</translation>
@@ -4951,8 +4970,6 @@
 <translation id="8461914792118322307">ப்ராக்ஸி</translation>
 <translation id="8463215747450521436">இந்தக் கண்காணிக்கப்பட்ட பயனர், நிர்வாகியால் நீக்கப்பட்டிருக்கலாம் அல்லது முடக்கப்பட்டிருக்கலாம். இந்தப் பயனராக உள்நுழைய விருப்பமெனில், நிர்வாகியைத் தொடர்புகொள்ளவும்.</translation>
 <translation id="846374874681391779">பதிவிறக்கங்கள் பட்டி</translation>
-<translation id="8463807869745732775">"&gt;
-பாதுகாப்பு விசையில் சேமிக்கப்பட்டுள்ள உள்நுழைவுத் தகவல்கள்</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> முடக்கப்பட்டது.</translation>
 <translation id="8464132254133862871">இந்தப் பயனர் கணக்கு, சேவைக்கு தகுதியானதல்ல.</translation>
 <translation id="8465252176946159372">தவறான உள்ளீடு</translation>
@@ -5018,6 +5035,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" />ஐ அச்சிடுகிறது</translation>
 <translation id="8569682776816196752">எந்த இலக்குகளும் கண்டறியப்படவில்லை</translation>
 <translation id="8571213806525832805">கடந்த 4 வாரங்கள்</translation>
+<translation id="8573403125070227391">இந்த விளம்பரம் உங்கள் சாதனத்தின் செயல்திறனை பாதிப்பதால் அதனை Chrome அகற்றிவிட்டது.</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> இல் எப்போதும் ஒலியை அனுமதி</translation>
 <translation id="8575286410928791436">வெளியேற, <ph name="KEY_EQUIVALENT" />ஐ அழுத்திப் பிடித்திருக்கவும்</translation>
 <translation id="8578639784464423491">99 எழுத்துகளுக்கு அதிகமாக இருக்கக்கூடாது</translation>
@@ -5041,13 +5059,13 @@
 <translation id="8609465669617005112">மேலே நகர்த்து</translation>
 <translation id="8610103157987623234">தவறான வடிவம், மீண்டும் முயலவும்</translation>
 <translation id="8615618338313291042">மறைநிலை ஆப்ஸ்: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">டிராப் ஷேடோ</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">ரோமிங் நிலை</translation>
 <translation id="8620765578342452535">நெட்வொர்க் இணைப்புகளை உள்ளமைக்கவும்</translation>
 <translation id="8621866727807194849">உங்கள் கம்ப்யூட்டரில் தீங்கிழைக்கும் மென்பொருள் உள்ளது. Chrome அதை அகற்றி, உங்கள் அமைப்புகளை மீட்டமைத்து, நீட்டிப்புகளை முடக்குகிறது. இதனால் உங்கள் உலாவி மீண்டும் வழக்கம் போல இயங்கும்.</translation>
 <translation id="8621979332865976405">முழுத்திரையையும் பகிருங்கள்</translation>
 <translation id="862542460444371744">&amp;நீட்சிகள்</translation>
-<translation id="8627151598708688654">ஆதாரத்தைத் தேர்ந்தெடு</translation>
 <translation id="862727964348362408">இடைநீக்கப்பட்டது</translation>
 <translation id="862750493060684461">CSS தற்காலிக சேமிப்பு</translation>
 <translation id="8627795981664801467">பாதுகாப்பான இணைப்புகள் மட்டும்</translation>
@@ -5101,6 +5119,7 @@
 <translation id="8688579245973331962">உங்கள் பெயரைப் பார்க்கவில்லையா?</translation>
 <translation id="8688591111840995413">எளிதான கடவுச்சொல்</translation>
 <translation id="8688672835843460752">மீதமுள்ளது:</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Open &amp;Location...</translation>
 <translation id="869884720829132584">பயன்பாடுகள் மெனு</translation>
 <translation id="869891660844655955">காலாவதியாகும் தேதி</translation>
@@ -5264,6 +5283,7 @@
 <translation id="891365694296252935">உபயோகம் &amp; கண்டறிதல் தரவை அனுப்புக. கண்டறிதல் தரவு, சாதனம் மற்றும் ஆப்ஸ் உபயோகத் தரவு போன்றவற்றை இந்தச் சாதனம் தற்போது Googleளுக்குத் தானாக அனுப்புகிறது. இது உங்கள் பிள்ளையை அடையாளம் கண்டறியப் பயன்படுத்தப்படாது, இது சிஸ்டம் மற்றும் ஆப்ஸின் நிலைத்தன்மையை மேம்படுத்தவும் பிற மேம்பாடுகளைச் செய்யவும் உதவும். ஒருங்கிணைக்கப்பட்ட சில தரவுகள், Google ஆப்ஸ் மற்றும் Android டெவெலப்பர்கள் போன்ற கூட்டாளர்களுக்கும் உதவும். உரிமையாளர் இந்த அமைப்பைச் செயல்படுத்தியுள்ளார். உங்கள் பிள்ளையின் கணக்கில் கூடுதல் ’இணையம் &amp; ஆப்ஸ் செயல்பாடு’ அமைப்பு இயக்கப்பட்டிருந்தால், இந்தத் தரவு அவருடைய Google கணக்கில் சேமிக்கப்படலாம். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">பரிந்துரைகளை ஏற்றுகிறது</translation>
 <translation id="8916476537757519021">மறைநிலை துணைச்சட்டகம்: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780">உங்கள் சாதனத்தின் கோப்புறை ஒன்றைப் படிப்பதற்கான அனுமதி <ph name="WINDOW_TITLE" />க்கு உள்ளது</translation>
 <translation id="8919275547519617350">உங்கள் எல்லாச் சாதனங்களிலும் கடவுச்சொற்களைப் பெற, உள்நுழைந்து, ஒத்திசைவை இயக்கவும்.</translation>
 <translation id="8921366488406707015">பாதுகாப்பு விசையைச் சரிபார்க்கிறது...</translation>
 <translation id="8922013791253848639">இந்தத் தளத்தில் எப்போதும் விளம்பரங்களை அனுமதி</translation>
@@ -5293,7 +5313,6 @@
 <translation id="8965037249707889821">பழைய கடவுச்சொல்லை உள்ளிடு</translation>
 <translation id="8966870118594285808">நீங்கள் தாவலைத் தற்செயலாக மூடிவிட்டால் அதை மீண்டும் திறக்கலாம்</translation>
 <translation id="8967866634928501045">காட்ட, Alt Shift A ஆகிய விசைகளை அழுத்தவும்</translation>
-<translation id="8970203673128054105">அலைபரப்பும் பயன்முறையின் பட்டியலைக் காட்டு</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Google சேவையகங்களிலிருந்து பதிவிறக்குவதை ஃபயர்வால் தடுக்கவில்லை என்பதை உங்கள் நெட்வொர்க் நிர்வாகியிடம் கேட்டு உறுதிப்படுத்திக்கொள்ளவும்.</translation>
 <translation id="8973557916016709913">அளவை மாற்றுவதற்கான நிலையை அகற்றும்</translation>
@@ -5442,6 +5461,7 @@
 <translation id="9214520840402538427">அச்சச்சோ! நிறுவல் நேர பண்புக்கூறுகளின் தொடக்க நேரம் முடிந்தது. உங்கள் ஆதரவு பிரதிநிதியைத் தொடர்புகொள்ளவும்.</translation>
 <translation id="9214695392875603905">கப்கேக்</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" சேர்க்கப்பட்டது</translation>
+<translation id="9216712190298404438">நீங்கள் செய்யும் மாற்றங்களை <ph name="ORIGIN" /> வலைதளத்தால் இந்தக் கோப்பில் நேரடியாகச் சேமிக்க முடியும். இந்தத் தாவல் திறந்திருக்கும்போது மட்டுமே இந்த வலைதளத்தால் மாற்றங்களைச் சேமிக்க இயலும்.</translation>
 <translation id="9218430445555521422">இயல்பாக அமை</translation>
 <translation id="9219103736887031265">படங்கள்</translation>
 <translation id="9220525904950070496">கணக்கை அகற்றுக</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 59ad3c1..dc32902a 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">వర్చువల్ మెషిన్‌ను ప్రారంభించడంలో ఎర్రర్ ఏర్పడింది. దయచేసి మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="1089439967362294234">పాస్‌వర్డ్‌ని మార్చు</translation>
 <translation id="1090126737595388931">నేపథ్య అనువర్తనాలు ఏవి అమలులో లేవు</translation>
+<translation id="1090290614672149983">మార్పులను అసలు ఫైల్‌లో సేవ్ చేయాలా?</translation>
 <translation id="1090918500949388876">మీ స్క్రీన్ ఆన్‌లో ఉన్నప్పుడు మీరు ఎప్పుడైనా "Ok Google" అని చెప్పి మీ అసిస్టెంట్‌ను యాక్సెస్ చేయండి</translation>
 <translation id="1091767800771861448">దాటవేయడానికి ESCAPEను నొక్కండి (అనధికార బిల్డ్‌లకు మాత్రమే)</translation>
 <translation id="1093457606523402488">కనిపిస్తున్న నెట్‌వర్క్‌లు:</translation>
 <translation id="1094607894174825014">దీనిలో చెల్లని ఆఫ్‌సెట్‌తో చదివే లేదా రాసే చర్య అభ్యర్థించబడింది: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">సైన్ ఇన్ చేయడానికి ముందుగా, దయచేసి <ph name="NETWORK_ID" /> నెట్‌వర్క్‌ను యాక్టివేట్ చేయడానికి అతిథి లాగా ప్రవేశించండి</translation>
+<translation id="110029732810301672">ఈ ట్యాబ్ అసలు ఫైల్‌లలో సేవ చేయడానికి అనుమతించబడింది.</translation>
 <translation id="1103523840287552314">ఎల్లప్పుడూ <ph name="LANGUAGE" />ను అనువదించు</translation>
 <translation id="1108600514891325577">&amp;ఆపు</translation>
 <translation id="1110155001042129815">వేచి ఉండండి</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">చలువ అద్దాలు</translation>
 <translation id="1151917987301063366">సెన్సార్‌లను యాక్సెస్ చేయడానికి ఎల్లవేళలా <ph name="HOST" />ని అనుమతించు</translation>
 <translation id="1153356358378277386">జత చేసిన పరికరాలు</translation>
-<translation id="1156488781945104845">ప్రస్తుత సమయం</translation>
 <translation id="1161575384898972166">దయచేసి క్లయింట్ స‌ర్టిఫికెట్‌ను ఎగుమతి చేయ‌డానికి <ph name="TOKEN_NAME" />కు సైన్ ఇన్ చేయండి.</translation>
 <translation id="1163931534039071049">ఫ్రేమ్ మూలాన్ని &amp;వీక్షించండి</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" />కు Smart Lockని ఆఫ్ చేయాలా?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player నిల్వ సెట్టింగ్‌లు</translation>
 <translation id="1274997165432133392">కుక్కీలు మరియు ఇతర సైట్ డేటా</translation>
 <translation id="127668050356036882">మీ అన్ని విండోలను మూసివేయండి</translation>
-<translation id="1277908057200820621">పరికర జాబితాను చూడండి</translation>
 <translation id="1280820357415527819">మొబైల్ నెట్‌వర్క్‌ల కోసం వెతుకుతోంది</translation>
 <translation id="1285320974508926690">ఈ సైట్‌ను ఎప్పటికీ అనువదించవద్దు</translation>
 <translation id="1285484354230578868">మీ Google డిస్క్ ఖాతాలో డేటాను నిల్వ చేయండి</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">హోమ్ నెట్‌వర్క్, రోమింగ్ కాదు</translation>
 <translation id="1316136264406804862">శోధిస్తోంది...</translation>
 <translation id="1316495628809031177">సమకాలీకరణ పాజ్ చేయబడింది</translation>
+<translation id="1317637799698924700">మీ డాకింగ్ స్టేషన్, USB టైప్-సి అనుకూలత మోడ్‌లో ఆపరేట్ చేయబడుతుంది.</translation>
 <translation id="1322046419516468189">మీ <ph name="SAVED_PASSWORDS_STORE" />లో సేవ్ చేసిన పాస్‌వర్డ్‌లను చూడండి మరియు నిర్వహించండి</translation>
 <translation id="1326317727527857210">మీ ఇతర పరికరాల నుండి మీ ట్యాబ్‌లను పొందడానికి, Chromeకు సైన్ ఇన్ చేయండి.</translation>
 <translation id="1327074568633507428">Google క్లౌడ్ ప్రింట్‌లో ప్రింటర్</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">మీ <ph name="BEGIN_LINK" />బ్రౌజర్ నిర్వహణ<ph name="END_LINK" /> <ph name="ENROLLMENT_DOMAIN" /> ద్వారా చేయబడుతోంది</translation>
 <translation id="1366177842110999534">మీ <ph name="DEVICE_TYPE" />లో Linux సాధనాలు, ఎడిటర్‌లు, IDEలను అమలు చేయండి. &lt;a target="_blank" href="<ph name="URL" />"&gt;మరింత తెలుసుకోండి&lt;/a&gt;</translation>
 <translation id="1367951781824006909">ఒక ఫైల్‌ని ఎంచుకోండి</translation>
+<translation id="1370749010280229230">డాక్‌తో కనెక్ట్ చేసిన ప్రదర్శన పరికరంతో సమస్య ఉంది</translation>
 <translation id="1371301976177520732">మీ బుక్‌మార్క్‌లు, పాస్‌వర్డ్‌‌లు, చరిత్ర మరియు మరిన్నింటిని మీ అన్ని పరికరాల్లోనూ పొందగలరు</translation>
 <translation id="1372841398847029212">మీ ఖాతాకు సింక్ చేయండి</translation>
 <translation id="1374844444528092021">"<ph name="NETWORK_NAME" />" నెట్‌వర్క్‌కు అవసరమైన ప్రమాణపత్రం ఇన్‌స్టాల్ చేయబడలేదు లేదా చెల్లదు. దయచేసి క్రొత్త ప్రమాణపత్రాన్ని పొందండి మరియు మళ్లీ కనెక్ట్ చేయడాన్ని ప్రయత్నించండి.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">వెబ్ పేజీ, ఒకే ఫైల్</translation>
 <translation id="1451917004835509682">పర్యవేక్షించబడే వ్యక్తిని జోడించు</translation>
 <translation id="1454223536435069390">స్క్రీన్‌షాట్ తీ&amp;యి</translation>
+<translation id="1458243790901188746">{0,plural, =1{ఫోల్డర్: <ph name="DIRECTORIES" />}other{ఫోల్డర్‌లు: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">ఎక్స్‌టెన్షన్‌లు జోడించిన శోధన ఇంజిన్‌లు</translation>
 <translation id="146000042969587795">ఈ ఫ్రేమ్‌లో అసురక్షిత కంటెంట్ ఉండటం వల్ల, అది బ్లాక్ చేయబడింది.</translation>
 <translation id="146219525117638703">ONC స్థితి</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">ఇన్‌పుట్ ఎంపికలను చూపు</translation>
 <translation id="1651008383952180276">మీరు తప్పనిసరిగా ఒకే రహస్య పదబంధాన్ని రెండుసార్లు నమోదు చేయాలి</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Add the printer to Google Cloud Print so you can print from anywhere.}other{Google క్లౌడ్ ప్రింట్‌కు # ప్రింటర్‌లను జోడించండి. అప్పుడు మీరు ఎక్కడి నుండైనా ముద్రించవచ్చు.}}</translation>
+<translation id="1656528038316521561">నేపథ్య అపారదర్శకత</translation>
 <translation id="1657406563541664238">Googleకు వినియోగ గ‌ణాంకాలు, క్రాష్ నివేదికలను ఆటోమేటిక్‌గా పంపడం ద్వారా <ph name="PRODUCT_NAME" />ను మరింత మెరుగుపరచడంలో సహాయపడండి</translation>
 <translation id="1658424621194652532">ఈ పేజీ మీ మైక్రోఫోన్‌ను ప్రాప్యత చేస్తోంది.</translation>
 <translation id="1660204651932907780">ధ్వనిని ప్లే చేయడానికి సైట్‌లను అనుమతించండి (సిఫార్సు చేయబడింది)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> మీ భద్రతా కీ యొక్క తయారీదారు బ్రాండ్ పేరు మరియు మోడల్‌ని చూడాలనుకుంటోంది</translation>
 <translation id="1679068421605151609">డెవలపర్ సాధనాలు</translation>
 <translation id="1679806121152819234">ప్లగ్ఇన్ VM</translation>
+<translation id="1679810534535368772">మీరు ఖచ్చితంగా నిష్క్రమించాలనుకుంటున్నారా?</translation>
 <translation id="167983332380191032">నిర్వహణ సేవ HTTP ఎర్రర్‌ని పంపింది.</translation>
 <translation id="1680849702532889074">మీ Linux అప్లికేషన్ ఇన్‌స్టాలేషన్ సమయంలో ఎర్రర్ ఏర్పడింది.</translation>
 <translation id="16815041330799488">క్లిప్‌బోర్డ్‌కు కాపీ చేసిన వచనం మరియు చిత్రాలను చూడటానికి సైట్‌లను అనుమతించవద్దు</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">రక్షిత మీడియా ఐడెంటిఫైయర్</translation>
 <translation id="175196451752279553">మూసివేయబడిన ట్యాబ్‌ను మళ్లీ తె&amp;రవండి</translation>
 <translation id="1753905327828125965">అధికంగా సందర్శించేది</translation>
+<translation id="1755601632425835748">వచన పరిమాణం</translation>
 <translation id="1756681705074952506">ఇన్‌పుట్ విధానం</translation>
 <translation id="1757301747492736405">పెండింగ్‌లో ఉన్నది అన్ఇన్‌స్టాల్ చేస్తుంది</translation>
 <translation id="175772926354468439">థీమ్‌ను ప్రారంభించు</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;చిన్నగా</translation>
 <translation id="1919345977826869612">ప్రకటనలు</translation>
 <translation id="1919814239594435008">శాండ్‌బాక్స్ చేయని ప్లగ్ఇన్‌ అనుమతించబడింది</translation>
+<translation id="1920390473494685033">పరిచయాలు</translation>
 <translation id="1921050530041573580">మీ ఫోన్‌ని సందేశాలతో జత చేయండి</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" />లో Google సామర్థ్యాలను పొందండి</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">అజ్ఞాత ట్యాబ్: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" />లోని <ph name="PEPPER_PLUGIN_NAME" /> మీ కంప్యూటర్‌ని యాక్సెస్ చేయాలనుకుంటోంది</translation>
 <translation id="2178614541317717477">CA రాజీ</translation>
+<translation id="2179849162388791084">మీ 'సెక్యూరిటీ కీ' నుండి సైన్-ఇన్ డేటాను పొందడంలో విఫలమైంది.</translation>
 <translation id="218070003709087997">ఎన్ని కాపీలను ముద్రించాలో (1 నుండి 999) సంఖ్యతో సూచించండి.</translation>
 <translation id="2184515124301515068">సైట్‌లు ధ్వనిని ఎప్పుడు ప్లే చేయాలనేది Chrome ఎంచుకునేలా సెట్ చేయండి (సిఫార్సు చేయబడింది)</translation>
 <translation id="2187895286714876935">సర్వర్ ప్రమాణపత్రం దిగుమతి లోపం</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">అన్ని కుక్కీలు మరియు సైట్ డేటా</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 అంశం కాపీ చేయబడింది}other{# అంశాలు కాపీ చేయబడ్డాయి}}</translation>
 <translation id="2278562042389100163">బ్రౌజర్ విండోను తెరువు</translation>
-<translation id="2279874276457403668">ఒకసారి ఒక సెషన్‌ను మాత్రమే సృష్టించగలరు.</translation>
 <translation id="2280486287150724112">కుడి అంచు</translation>
 <translation id="2282146716419988068">GPU ప్రాసెస్</translation>
 <translation id="2282155092769082568">ఆటోకాన్ఫిగరేషన్ URL:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">లాక్ స్క్రీన్ గమనికలు స్వయంచాలకంగా <ph name="LOCK_SCREEN_APP_NAME" />కి సేవ్ చేయబడ్డాయి. మీ అత్యంత తాజా గమనిక లాక్ స్క్రీన్‌పై అలాగే ఉంటుంది.</translation>
 <translation id="2353297238722298836">కెమెరా మరియు మైక్రోఫోన్ అనుమతించబడ్డాయి</translation>
 <translation id="2356070529366658676">అడుగు</translation>
-<translation id="2357949918965361754">మీరు మీ టీవీ లేదా ఇతర పరికరాల్లో Chrome నుండి కంటెంట్‌ను ప్రదర్శించడానికి ఈ ఫీచర్‌ను ఉపయోగించవచ్చు.</translation>
 <translation id="2359345697448000899">'సాధనాలు' మెనూలోని ఎక్స్‌టెన్షన్‌లను క్లిక్ చేయడం ద్వారా మీ ఎక్స్‌టెన్షన్‌లను నిర్వహించండి.</translation>
 <translation id="2359808026110333948">కొనసాగించు</translation>
 <translation id="236117173274098341">ఆప్టిమైజ్ చేయండి</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">మీ సంస్థ నియమాల ప్రకారం, ఈ పరికరాన్ని తక్షణం అప్‌డేట్ చేయాలి</translation>
 <translation id="2439545803278355377">మీ కొత్త పిన్‌ను నమోదు చేయండి. పిన్ తప్పక కనీసం నాలుగు అక్షరాల పొడవు ఉండాలి, అలాగే ఇందులో అక్షరాలు, సంఖ్యలు, ఇతర సంకేత గుర్తులను ఉపయోగించవచ్చు.</translation>
 <translation id="2440604414813129000">&amp;సోర్స్‌ను చూడండి</translation>
+<translation id="2442916515643169563">వచన నీడ</translation>
 <translation id="2444119669991608829">పేజీ <ph name="LANGUAGE" />లో లేదా?</translation>
 <translation id="2445081178310039857">ఎక్స్‌టెన్ష‌న్‌ మూలం డైరెక్టరీ అవసరం.</translation>
 <translation id="2445484935443597917">కొత్త ప్రొఫైల్‌ను సృష్టించు</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">తరువాత కాదు</translation>
 <translation id="2739191690716947896">డీబగ్</translation>
 <translation id="2739240477418971307">మీ యాక్సెస్‌ సెట్టింగ్‌లను మార్చడం</translation>
+<translation id="274029851662193272">కిందికి ఉన్నట్లుగా</translation>
 <translation id="2740393541869613458">పర్యవేక్షించబడే వినియోగదారు సందర్శించిన వెబ్‌సైట్‌లను సమీక్షించండి, మరియు</translation>
 <translation id="2741912629735277980">లాగిన్ స్క్రీన్‌పై ప్రదర్శన UI</translation>
 <translation id="274290345632688601">Linux యాప్‌లు &amp; ఫైల్‌లను పునరుద్ధరిస్తోంది</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">షార్ట్‌కట్ ఇప్పటికే ఉంది</translation>
 <translation id="2807517655263062534">మీరు డౌన్‌లోడ్ చేసిన ఫైల్‌లు ఇక్కడ కనిపిస్తాయి</translation>
 <translation id="2809586584051668049">ఇంకా మరో <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderboltలో మద్దతు లేదు</translation>
 <translation id="2812944337881233323">సైన్ అవుట్ చేసి, తిరిగి సైన్ ఇన్ చేయడం ప్రయత్నించండి</translation>
 <translation id="2812989263793994277">ఏ చిత్రాలనూ చూపించవద్దు</translation>
 <translation id="281390819046738856">అభ్యర్థనకు సంతకం అందించడం సాధ్యపడలేదు.</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">ప్రదాత</translation>
 <translation id="2844169650293029770">USB-C పరికరం (ఎడమవైపు ముందు పోర్ట్)</translation>
 <translation id="2845382757467349449">ఎల్లప్పుడూ బుక్‌మార్క్‌ల బార్‌ను చూపు</translation>
-<translation id="2847759467426165163">దీనికి ప్రసారం చేయండి</translation>
 <translation id="284805635805850872">హానికరమైన సాఫ్ట్‌వేర్‌ని తీసివేయాలా?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">క్లీన్అప్ విఫలమైంది</translation>
@@ -1296,6 +1304,7 @@
     సర్వర్ సందేశం: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">డైరెక్టరీ ద్వారా మీడియా గ్యాలరీని జోడించండి</translation>
 <translation id="2910318910161511225">నెట్‌వర్క్‌కి కనెక్ట్ చేసి మళ్లీ ప్రయత్నించండి</translation>
+<translation id="2910518940971897750">అసలు ఫైల్‌లో సేవ్ చేయి</translation>
 <translation id="2913331724188855103">కుక్కీ డేటాను సేవ్ చేయడానికి, చదవడానికి సైట్‌లను అనుమతిస్తుంది (సిఫార్సు చేయబడింది)</translation>
 <translation id="2915102088417824677">కార్యకలాపం లాగ్‌ని చూడండి</translation>
 <translation id="2915873080513663243">ఆటోమేటిక్ స్కాన్</translation>
@@ -1360,12 +1369,14 @@
 <translation id="3013291976881901233">MIDI పరికరాలు</translation>
 <translation id="3015639418649705390">ఇప్పుడే పునఃప్రారంభించు</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" />ను ఆటోమేటిక్‌గా కాన్ఫిగర్ చేయలేకపోయింది. దయచేసి అధునాతన ప్రింటర్ వివరాలను పేర్కొనండి.</translation>
+<translation id="3016381065346027039">లాగ్ నమోదులు లేవు</translation>
 <translation id="3016641847947582299">అంశం నవీకరించబడింది</translation>
 <translation id="3016780570757425217">మీ స్థానాన్ని తెలుసుకోవాలనుకుంటోంది</translation>
 <translation id="3017079585324758401">నేపథ్యం</translation>
 <translation id="3020183492814296499">షార్ట్‌కట్‌లు</translation>
 <translation id="3020990233660977256">క్రమ సంఖ్య: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">సీతాకోకచిలుక</translation>
+<translation id="3021408157810018664">మార్పులను అసలు ఫైల్‌లలో సేవ్ చేయాలా?</translation>
 <translation id="3021426244864538700">ఈ సైట్ డేటాను యాక్సెస్ చేయగలిగేవి</translation>
 <translation id="3021678814754966447">ఫ్రేమ్ మూలాన్ని &amp;వీక్షించండి</translation>
 <translation id="3022978424994383087">అది పూర్తి కాలేదు.</translation>
@@ -1458,6 +1469,7 @@
 <translation id="3170072451822350649">మీరు సైన్ ఇన్ చేయడాన్ని కూడా దాట వేయవచ్చు. <ph name="LINK_START" />అతిథిగా బ్రౌజ్ చేయవచ్చు<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">వీడియో ఇన్‌పుట్‌ని ఒక సైట్ యాక్సెస్ చేస్తోంది</translation>
 <translation id="3177909033752230686">పేజీ భాష:</translation>
+<translation id="3179982752812949580">వచన ఫాంట్</translation>
 <translation id="3181954750937456830">సురక్షిత బ్రౌజింగ్ (ప్రమాదకరమైన సైట్‌ల నుండి మిమ్మల్ని, మీ పరికరాన్ని రక్షిస్తుంది)</translation>
 <translation id="3182749001423093222">స్పెల్ చెక్</translation>
 <translation id="3183139917765991655">ప్రొఫైల్ ఇంపోర్టర్</translation>
@@ -1510,7 +1522,6 @@
 <translation id="3275778913554317645">విండో లాగా తెరవండి</translation>
 <translation id="3278001907972365362">మీ Google ఖాతా లేదా ఖాతాలను జాగ్రత్తగా గమనించాలి</translation>
 <translation id="3279230909244266691">ఈ ప్రాసెస్‌కు కొన్ని నిమిషాలు పట్టవచ్చు. వర్చ్యువల్ మెషీన్‌ను ప్రారంభిస్తోంది.</translation>
-<translation id="3279741024917655738">ఇందులో పూర్తి స్క్రీన్ వీడియోలను చూపించండి</translation>
 <translation id="3280237271814976245">ఇలా సేవ్ &amp;చేయి...</translation>
 <translation id="3280243678470289153">Chromeలోనే కొనసాగించు</translation>
 <translation id="3281892622610078515">నిరోధించాల్సిన ఫైల్‌లు, ప్రోగ్రామ్‌లు:</translation>
@@ -1532,7 +1543,7 @@
 <translation id="3303855915957856445">శోధన ఫలితాలు ఏవీ కనుగొనబడలేదు</translation>
 <translation id="3305389145870741612">ఆకృతీకరణ విధానాన్ని కొన్ని సెకెన్ల సమయం పడుతుంది. దయచేసి వేచి ఉండండి.</translation>
 <translation id="3305661444342691068">PDFను ప్రివ్యూలో తెరువు</translation>
-<translation id="3306684685104080068">Google Hangouts వంటి క్లౌడ్-ఆధారిత సేవలకు ప్రసారం చేయడాన్ని ప్రారంభించండి.</translation>
+<translation id="3307871847038842490">ఈ పేజీ అసలు ఫైల్‌లలో సేవ్ చేయడానికి అనుమతించబడింది.</translation>
 <translation id="3308006649705061278">ఆర్గనైజేషనల్ యూనిట్ (OU)</translation>
 <translation id="3308116878371095290">కుక్కీలను సెట్ చేయడం నుండి ఈ పేజీ నిరోధించబడింది.</translation>
 <translation id="3308134619352333507">బటన్‌ను దాచు</translation>
@@ -1638,7 +1649,6 @@
 <translation id="3462413494201477527">ఖాతా సెటప్‌ను రద్దు చేయాలా?</translation>
 <translation id="3464012987031883895">ఆడియో ఇన్‌పుట్‌ని ఒక సైట్ యాక్సెస్ చేస్తోంది</translation>
 <translation id="346431825526753">ఇది <ph name="CUSTODIAN_EMAIL" /> నిర్వహించే చిన్నపిల్లల ఖాతా.</translation>
-<translation id="3468275649641751422">వీడియో లేదా ఆడియో ఫైల్‌ను ప్రసారం చేయండి</translation>
 <translation id="3468999815377931311">Android ఫోన్</translation>
 <translation id="3470442499439619530">ఈ వినియోగదారును తీసివేయి</translation>
 <translation id="3473479545200714844">స్క్రీన్ మాగ్నిఫైయర్</translation>
@@ -1661,6 +1671,7 @@
 <translation id="3496213124478423963">దూరంగా జూమ్ చెయ్యి</translation>
 <translation id="3497560059572256875">డూడుల్‌ని షేర్ చేయి</translation>
 <translation id="3505030558724226696">పరికర యాక్సెస్‌ను ఉపసంహరించు</translation>
+<translation id="3505635633742443645">వీడియో అవుట్‌పుట్ కోసం USB టైప్-సి పోర్ట్‌ను వినియోగిస్తున్నప్పుడు, మీ డాక్ యొక్క HDMI పోర్ట్‌ను వినియోగించడం సాధ్యపడదు. దయచేసి ఈ ప్రదర్శన పరికరాలలో ఒకదాని కోసం వేరే పోర్ట్‌ను ఉపయోగించండి.</translation>
 <translation id="3507421388498836150">"<ph name="EXTENSION_NAME" />" ప్రస్తుత అనుమతులు</translation>
 <translation id="3507888235492474624">బ్లూటూత్ పరికరాలను మళ్లీ స్కాన్ చేయండి</translation>
 <translation id="3508920295779105875">మరొక ఫోల్డర్‌ను ఎంచుకోండి...</translation>
@@ -1713,6 +1724,7 @@
 <translation id="3576324189521867626">విజయవంతంగా ఇన్‌స్టాల్ చేయబడింది</translation>
 <translation id="3578594933904494462">ఈ ట్యాబ్ యొక్క కంటెంట్ భాగస్వామ్యం చేయబడుతోంది.</translation>
 <translation id="357886715122934472">మీరు యజమానిగా ఉన్న గ్రూప్ &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;తో, &lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; ఒక ప్రింటర్ &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt;ను షేర్ చేయాలనుకుంటున్నారు.మీరు ఆమోదిస్తే, గ్రూప్ మెంబర్‌లందరూ ప్రింటర్‌కు ముద్రించగలరు.</translation>
+<translation id="357889014807611375">డేటా నియంత్రణ Wi-Fi</translation>
 <translation id="3584169441612580296">మీ కంప్యూటర్‌లోని ఫోటోలు, సంగీతం మరియు ఇతర మీడియాను చదవడం మరియు మార్చడం</translation>
 <translation id="3587482841069643663">మొత్తం</translation>
 <translation id="358796204584394954">జత చేయడానికి "<ph name="DEVICE_NAME" />"లో ఈ కోడ్‌ను టైప్ చేయండి:</translation>
@@ -1723,6 +1735,7 @@
 <translation id="359283478042092570">నమోదు చేయి</translation>
 <translation id="3593965109698325041">సర్టిఫికెట్ పేరు పరిమితులు</translation>
 <translation id="3596235046596950091">క్లౌడ్ సేవలను ప్రారంభించు</translation>
+<translation id="3599221874935822507">పైకి ఉన్నట్లుగా</translation>
 <translation id="3599863153486145794">సైన్ ఇన్ చేసిన అన్ని పరికరాల నుండి చరిత్రను తొలగిస్తుంది. మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation>
 <translation id="3600051066689725006">వెబ్ అభ్యర్థన సమాచారం</translation>
 <translation id="3600792891314830896">ధ్వనిని ప్లే చేసే సైట్‌లను మ్యూట్ చేయండి</translation>
@@ -1737,6 +1750,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; ద్వారా డౌన్‌లోడ్ చేయబడింది</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" />ని చూపు</translation>
 <translation id="3613422051106148727">&amp;కొత్త‌ ట్యాబ్‌లో తెరువు</translation>
+<translation id="3615073365085224194">వేలిముద్ర సెన్సార్‌ను మీ వేలితో తాకండి</translation>
 <translation id="3616113530831147358">ఆడియో</translation>
 <translation id="3616741288025931835">బ్రౌజింగ్ డేటాను &amp;క్లియర్ చేయి...</translation>
 <translation id="3617891479562106823">నేపథ్యాలు అందుబాటులో లేవు. తర్వాత మళ్లీ ప్రయత్నించండి.</translation>
@@ -1818,7 +1832,6 @@
 <translation id="3719826155360621982">హోమ్‌పేజీ</translation>
 <translation id="3720996970802414353">ఏదేమైనా మార్చు</translation>
 <translation id="3722108462506185496">వర్చువల్ మెషిన్ సేవను ప్రారంభించడంలో ఎర్రర్ ఏర్పడింది. దయచేసి మళ్లీ ప్రయత్నించండి.</translation>
-<translation id="3723158278575423087">Chromiumలో Cast అనుభవానికి స్వాగతం!</translation>
 <translation id="3725367690636977613"> పేజీలు</translation>
 <translation id="3726137731714254362">ఇక్కడి నుండి ఫోల్డర్‌లను తీసివేయడం వలన షేరింగ్ ఆపివేయబడుతుంది, కానీ ఫైల్‌లు తొలగించబడవు.</translation>
 <translation id="3727148787322499904">ఈ సెట్టింగ్‌ను మార్చడం వలన అన్ని భాగస్వామ్య నెట్‌వర్క్‌లు ప్రభావితం అవుతాయి</translation>
@@ -1853,7 +1866,6 @@
 <translation id="3764314093345384080">వివరణాత్మక బిల్డ్ సమాచారం</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{USB పరికరంతో కమ్యూనికేట్ చేయండి}other{# USB పరికరాలతో కమ్యూనికేట్ చేయండి}}</translation>
 <translation id="3765246971671567135">ఆఫ్‌లైన్ డెమో మోడ్ విధానాన్ని చదవడం సాధ్యపడలేదు.</translation>
-<translation id="3766223500670287046">రిమోట్ స్క్రీన్</translation>
 <translation id="3768037234834996183">మీ ప్రాధాన్యతలను సమకాలీకరిస్తోంది...</translation>
 <translation id="377050016711188788">ఐస్‌క్రీమ్</translation>
 <translation id="3771294271822695279">వీడియో ఫైళ్లు</translation>
@@ -1926,7 +1938,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">పైకి ఎత్తి, మళ్లీ తాకండి</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: సమకాలీకరణ పాజ్ అయింది</translation>
-<translation id="3862134173397075045">Chromeలో Cast అనుభవానికి స్వాగతం!</translation>
 <translation id="3862693525629180217">అంతర్నిర్మిత సెన్సార్ ద్వారా ధృవీకరించు</translation>
 <translation id="3862788408946266506">'kiosk_only' మానిఫెస్ట్ ఫీచర్ ఉన్న యాప్‌ను తప్పనిసరిగా Chrome OS కియోస్క్ మోడ్‌లో ఇన్‌స్టాల్ చేయాలి</translation>
 <translation id="3865414814144988605">రిజల్యూషన్</translation>
@@ -1975,6 +1986,7 @@
 <translation id="3926002189479431949">Smart Lock ఫోన్ మార్చబడింది</translation>
 <translation id="3927932062596804919">తిరస్కరించు</translation>
 <translation id="3930737994424905957">పరికరాల కోసం వెతుకుతోంది</translation>
+<translation id="3930968231047618417">నేపథ్య రంగు</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> యొక్క తొలగించిన పాస్‌వర్డ్‌ను పునరుద్ధరించండి</translation>
 <translation id="3936390757709632190">కొత్త ట్యాబ్‌లో ఆడియోను &amp;తెరవండి</translation>
 <translation id="3936925983113350642">మీరు ఎంచుకునే పాస్‌వర్డ్ ఈ ప్రమాణపత్రాన్ని తర్వాత పునరుద్ధరించడానికి అవసరమవుతుంది. దయచేసి దీన్ని సురక్షితమైన చోట ఎక్కడైనా వ్రాసి పెట్టుకోండి.</translation>
@@ -1994,6 +2006,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE నుండి దిగుమతి చెయ్యబడింది</translation>
 <translation id="3950820424414687140">సైన్ ఇన్</translation>
+<translation id="3950828138786918475">మీ పరికరంలోని ఫోల్డర్‌ను చదవడానికి ఈ ట్యాబ్ అనుమతించబడింది.</translation>
 <translation id="3954354850384043518">ప్రోగ్రెస్‌లో ఉంది</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> హెర్జ్)</translation>
 <translation id="3954953195017194676">మీ వద్ద ఇటీవల క్యాప్చర్ చేయబడిన WebRTC ఈవెంట్ లాగ్‌లు ఏవీ లేవు.</translation>
@@ -2012,6 +2025,7 @@
 <translation id="397105322502079400">గణిస్తోంది...</translation>
 <translation id="3975565978598857337">సర్వర్ కోసం నెట్‌వర్క్ పరిధిని కనెక్ట్ చేయడంలో విఫలమైంది</translation>
 <translation id="397703832102027365">పూర్తి చేస్తోంది...</translation>
+<translation id="3977886311744775419">ఈ రకమైన నెట్‌వర్క్‌లో ఆటోమేటిక్ అప్‌డేట్‌లు డౌన్‌లోడ్ చేయబడవు, కానీ మీరు మాన్యువల్‌గా అప్‌డేట్‌లను తనిఖీ చేయవచ్చు.</translation>
 <translation id="3979395879372752341">క్రొత్త పొడిగింపు జోడించబడింది (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" />ను ప్రారంభించు</translation>
 <translation id="3981760180856053153">చెల్లని సేవ్ రకం ఎంటర్ చేయబడింది.</translation>
@@ -2056,7 +2070,7 @@
 <translation id="4044612648082411741">మీ ప్రమాణపత్రం పాస్‌వర్డ్‌ను నమోదు చేయండి</translation>
 <translation id="404493185430269859">డిఫాల్ట్ శోధన ఇంజిన్</translation>
 <translation id="4046123991198612571">తరువాత ట్రాక్</translation>
-<translation id="4050225813016893843">ప్రమాణీకరణ పద్ధతి</translation>
+<translation id="4050225813016893843">ప్రామాణీకరణ పద్ధతి</translation>
 <translation id="4052120076834320548">చిన్న</translation>
 <translation id="4055023634561256217">మీ పరికరాన్ని పవర్‌వాష్‌తో రీసెట్ చేయడానికి ముందు పునఃప్రారంభించడం అవసరం.</translation>
 <translation id="4057041477816018958"><ph name="SPEED" /> - <ph name="RECEIVED_AMOUNT" /></translation>
@@ -2151,6 +2165,7 @@
 <translation id="4194570336751258953">క్లిక్ చేయ‌డానికి టాప్ చేయి ప్రారంభించు</translation>
 <translation id="4195643157523330669">కొత్త ట్యాబ్‌లో తెరువు</translation>
 <translation id="4195814663415092787">మీరు నిష్క్రమించిన చోటు నుండే కొనసాగించండి</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> మీ మార్పులను నేరుగా కింది ఫైల్‌లలో సేవ్ చేయగలదు. ఈ ట్యాబ్‌ను తెరిచి ఉన్నప్పుడు మాత్రమే మార్పులను ఈ సైట్ సేవ్ చేయగలుగుతుంది.</translation>
 <translation id="4198146608511578238">మీ Google అసిస్టెంట్‌తో మాట్లాడటానికి లాంఛ‌ర్‌ చిహ్నాన్ని నొక్కి, ఉంచండి.</translation>
 <translation id="4200689466366162458">అనుకూల పదాలు</translation>
 <translation id="4200983522494130825">క్రొత్త &amp;టాబ్</translation>
@@ -2198,7 +2213,6 @@
 <translation id="4267953847983678297">ఆటోమేటిక్‌గా సెల్యులార్ నెట్‌వర్క్‌కు కనెక్ట్ చేయి</translation>
 <translation id="4268025649754414643">కీ గుప్తీకరణ</translation>
 <translation id="4270393598798225102">వెర్షన్ <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">సరిపోలికలు లేవు</translation>
 <translation id="4275663329226226506">మీడియా</translation>
 <translation id="4275830172053184480">మీ పరికరాన్ని పునఃప్రారంభించండి</translation>
 <translation id="4278101229438943600">మీ అసిస్టెంట్ సిద్ధంగా ఉంది</translation>
@@ -2347,6 +2361,7 @@
 <translation id="4533985347672295764">CPU సమయం</translation>
 <translation id="4534661889221639075">మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="4535127706710932914">డిఫాల్ట్ ప్రొఫైల్</translation>
+<translation id="4535767533210902251">మీ కీబోర్డ్‌లో పైన కుడివైపు గల కీపై వేలిముద్ర సెన్సార్ ఉంది. ఏదైనా వేలితో దానిపై మెల్లగా తాకండి.</translation>
 <translation id="4538684596480161368"><ph name="HOST" />లో ఎల్లప్పుడూ శాండ్‌బాక్స్ చేయని ప్లగిన్‌లను బ్లాక్ చేయి</translation>
 <translation id="4538792345715658285">వ్యాపార విధానం ద్వారా ఇన్‌స్టాల్ చేయబడింది.</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" /> మరియు <ph name="WEBSITE_2" />లోని మీ డేటాను చదవండి</translation>
@@ -2380,6 +2395,7 @@
 <translation id="457386861538956877">మరిన్ని...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">బ్లూటూత్ పరికరాన్ని జత చేయండి</translation>
+<translation id="4578012756826807359">మీ సైన్-ఇన్ డేటా విజయవంతంగా తొలగించబడింది.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" />ని ప్రసారం చేయడం సాధ్యపడలేదు.</translation>
 <translation id="4581774856936278355">Linuxని పునరుద్ధరిస్తున్నప్పుడు ఎర్రర్ ఏర్పడింది</translation>
 <translation id="4582563038311694664">అన్ని సెట్టింగ్‌లను రీసెట్ చేయి</translation>
@@ -2497,7 +2513,6 @@
 <translation id="4763830802490665879">నిష్క్రమించేటప్పుడు బహుళ సైట్‌ల నుండి కుక్కీలు క్లియర్ చేయబడతాయి.</translation>
 <translation id="4765582662863429759">మీ ఫోన్‌లో ఉన్న వచనాన్ని మీ Chromebookలో చూపడానికి Android సందేశాలుని అనుమతిస్తుంది</translation>
 <translation id="4768332406694066911">మిమ్మల్ని గుర్తించే ఈ సంస్థల నుండి మీకు ప్రమాణపత్రాలు ఉన్నాయి</translation>
-<translation id="4772404146526168240">రెండు స్క్రీన్‌లు</translation>
 <translation id="4776146737004271126">Android సెట్టింగ్‌లను తెరవండి</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> కోసం పాస్‌వర్డ్</translation>
 <translation id="4777825441726637019">Play స్టోర్</translation>
@@ -2605,7 +2620,6 @@
 <translation id="4927846293686536410">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు మరియు ఇతర సెట్టింగ్‌లను మీ అన్ని పరికరాలలో పొందడానికి సైన్ ఇన్ చేయండి. మీరు మీ Google సేవలకు కూడా ఆటోమేటిక్‌గా సైన్ ఇన్ చేయబడతారు.</translation>
 <translation id="4929386379796360314">ముద్రణ గమ్యస్థానాలు</translation>
 <translation id="4930714375720679147">ఆన్ చేయి</translation>
-<translation id="4931132176527519925">ఎల్లప్పుడూ మిర్రరింగ్‌ను ఉపయోగించు</translation>
 <translation id="4932733599132424254">తేదీ</translation>
 <translation id="4933484234309072027"><ph name="URL" />లో పొందుపరచబడింది</translation>
 <translation id="493571969993549666">పర్యవేక్షించబడే వినియోగదారును జోడించు</translation>
@@ -2645,6 +2659,7 @@
 <translation id="4992066212339426712">అన్‌మ్యూట్ చేయి</translation>
 <translation id="4992458225095111526">పవర్‌వాష్‌ను నిర్ధారించండి</translation>
 <translation id="4992473555164495036">మీ నిర్వాహకుడు మీకు అందుబాటులో ఉండే ఇన్‌పుట్ పద్ధతులను పరిమితం చేసారు.</translation>
+<translation id="4992866843815555470">మీ డాక్‌ను సర్వీసింగ్ చేయించాలి. ఫ్యాన్ పని చేయకుంటే, మీ డాక్ షట్ డౌన్ అవుతుంది.</translation>
 <translation id="4992926179187649719">'Ok Google'ని ఆన్ చేయండి</translation>
 <translation id="4994474651455208930">ప్రోటోకాల్స్‌కు డిఫాల్ట్ హ్యాండ్లర్‌లుగా కావడం కోసం అడగటానికి సైట్‌లను అనుమతించండి</translation>
 <translation id="4994754230098574403">సెటప్ చేస్తోంది</translation>
@@ -2783,7 +2798,6 @@
 <translation id="5233231016133573565">ప్రాసెస్ ID</translation>
 <translation id="5233638681132016545">కొత్త‌ టాబ్</translation>
 <translation id="5233736638227740678">&amp;అతికించు</translation>
-<translation id="5234764350956374838">తొలగించు</translation>
 <translation id="5235050375939235066">యాప్‌ను అన్‌ఇన్‌స్టాల్ చేయాలా?</translation>
 <translation id="5235750401727657667">కొత్త ట్యాబ్‌ను తెరిచేటప్పుడు మీరు చూసే పేజీని భర్తీ చేయండి</translation>
 <translation id="5238278114306905396">"<ph name="EXTENSION_NAME" />" యాప్ ఆటోమేటిక్‌గా తీసివేయబడింది.</translation>
@@ -2848,6 +2862,7 @@
 <translation id="5319359161174645648">Chromeను Google సిఫార్సు చేస్తోంది</translation>
 <translation id="532247166573571973">సర్వర్ అందుబాటులో లేకపోవచ్చు. తర్వాత మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="5324780743567488672">మీ స్థానాన్ని ఉపయోగించి సమయ మండలిని స్వయంచాలకంగా సెట్ చేయండి</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - అసలు ఫైల్‌లలో సేవ్ చేయడానికి అనుమతించబడింది</translation>
 <translation id="5327248766486351172">పేరు</translation>
 <translation id="5327570636534774768">ఈ పరికరం వేరొక డొమైన్ ద్వారా నిర్వహణ కోసం గుర్తించబడింది. డెమో మోడ్‌ని సెటప్ చేయడం కంటే ముందు ఆ డొమైన్ నుండి దీని కేటాయింపు తీసివేయండి.</translation>
 <translation id="532943162177641444">ఈ పరికరం ఉపయోగించగల విధంగా మొబైల్ హాట్‌స్పాట్‌ను సెటప్ చేయడానికి, మీ <ph name="PHONE_NAME" />లోని నోటిఫికేషన్‌ను నొక్కండి.</translation>
@@ -2990,7 +3005,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> వీటిని చేయాలనుకుంటోంది</translation>
 <translation id="5534304873398226603">ఫోటో లేదా వీడియోను విస్మరించు</translation>
 <translation id="5535941515421698170">అలాగే ఈ పరికరం నుండి ఇప్పటికే ఉన్న మీ డేటాను తీసివేయండి</translation>
-<translation id="5537725057119320332">Cast</translation>
 <translation id="5539221284352502426">మీరు నమోదు చేసిన పాస్‌వర్డ్‌ను సర్వర్ తిరస్కరించింది. సంభావ్య కారణాలు: పాస్‌వర్డ్ చాలా చిన్నదిగా ఉంది. పాస్‌వర్డ్ తప్పనిసరిగా సంఖ్యలు లేదా గుర్తులను కలిగి ఉండాలి. మునుపు ఉపయోగించిన పాస్‌వర్డ్‌లలో దేనినీ తిరిగి ఉపయోగించకూడదు.</translation>
 <translation id="5541687815721799001">యాప్‌ను ఉపయోగించు</translation>
 <translation id="5542132724887566711">ప్రొఫైల్</translation>
@@ -3299,7 +3313,6 @@
 <translation id="5997337190805127100">సైట్ యాక్సెస్ గురించి మరింత తెలుసుకోండి</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' అనే దానికి <ph name="RESULT_COUNT" /> ఫలితాలు లభించాయి</translation>
 <translation id="6002458620803359783">ప్రాధాన్య వాయిస్‌లు</translation>
-<translation id="6005695835120147974">మీడియా రూటర్</translation>
 <translation id="6006484371116297560">క్లాసిక్</translation>
 <translation id="6007240208646052708">మీ భాషలో వాయిస్ శోధన అందుబాటులో లేదు.</translation>
 <translation id="6009781704028455063">అంతర్నిర్మిత సెన్సార్</translation>
@@ -3499,7 +3512,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{మీ నెట్‌వర్క్‌లోని కొత్త ప్రింటర్}other{మీ నెట్‌వర్క్‌లోని కొత్త ప్రింటర్‌లు}}</translation>
 <translation id="6286708577777130801">సేవ్ చేసిన పాస్‌వర్డ్ వివరాలు</translation>
 <translation id="6289452883081499048">వ్యక్తిగతీకరించిన Google సేవలు, ఉదా., Play వంటివి</translation>
-<translation id="6290556621549272952">మీరు మీ టీవీ లేదా ఇతర పరికరాల్లో Chromium నుండి కంటెంట్‌ను ప్రదర్శించడానికి ఈ ఫీచర్‌ను ఉపయోగించవచ్చు.</translation>
 <translation id="6291949900244949761">సైట్ USB పరికరాలను యాక్సెస్ చేయాలనుకున్నప్పుడు అడుగు (సిఫార్సు చేయబడింది)</translation>
 <translation id="6291953229176937411">శోధినిలో &amp;చూపించు</translation>
 <translation id="6295158916970320988">అన్ని సైట్‌లు</translation>
@@ -3563,6 +3575,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />సిస్టమ్ సమాచారం<ph name="END_LINK1" /> మరియు <ph name="BEGIN_LINK2" />గణాంకాలు<ph name="END_LINK2" /> పంపు</translation>
 <translation id="6396988158856674517">మోషన్ సెన్సార్‌లను ఉపయోగించకుండా సైట్‌లను బ్లాక్ చేయి</translation>
 <translation id="6397094776139756010">సమకాలీకరణ మరియు వ్యక్తిగతీకరణ ఎంపికలు</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> మీ మార్పులను నేరుగా కింది ఫోల్డర్‌లోని ఫైల్‌లలో సేవ్ చేయగలదు. ఈ ట్యాబ్‌ను తెరిచి ఉన్నప్పుడు మాత్రమే మార్పులను ఈ సైట్ సేవ్ చేయగలుగుతుంది.</translation>
 <translation id="6398715114293939307">Google Play స్టోర్‌ని తీసివేయండి</translation>
 <translation id="6398765197997659313">పూర్తి స్క్రీన్ నుండి నిష్క్రమించు</translation>
 <translation id="6399774419735315745">గూఢచారి</translation>
@@ -3607,11 +3620,13 @@
 <translation id="6455264371803474013">కొన్ని నిర్దిష్ట సైట్‌లలో మాత్రమే</translation>
 <translation id="6455894534188563617">&amp;కొత్త ఫోల్డర్</translation>
 <translation id="6456394469623773452">శ్రేష్టమైనది</translation>
+<translation id="6456955391422100996">ప్రకటన తీసివేయబడింది.</translation>
 <translation id="645705751491738698">JavaScriptను నిరోధించడాన్ని కొనసాగించు</translation>
 <translation id="6458701200018867744">అప్‌లోడ్ విఫలమైంది (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">కనుగొనడానికి ఎంపికను ఉపయోగించండి</translation>
 <translation id="6459799433792303855">యాక్టివ్ విండో మరో డిస్‌ప్లే‌కు తరలించబడింది.</translation>
 <translation id="6460601847208524483">తరువాతది కనుగొను</translation>
+<translation id="6461170143930046705">నెట్‌వర్క్‌ల కోసం వెతుకుతోంది...</translation>
 <translation id="6463795194797719782">సవ&amp;రించు</translation>
 <translation id="6466988389784393586">&amp;అన్ని బుక్‌మార్క్‌లను తెరువు</translation>
 <translation id="6467304607960172345">పూర్తి స్క్రీన్ వీడియోలను ఆప్టిమైజ్ చేయండి</translation>
@@ -3650,6 +3665,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">మీరు <ph name="NETWORK_TYPE" /> నెట్‌వర్క్‌కు కనెక్ట్ చేయబడ్డారు.</translation>
 <translation id="6527303717912515753">భాగస్వామ్యం చేయి</translation>
 <translation id="6528513914570774834">ఈ నెట్‌వర్క్‌ను ఉపయోగించడానికి ఈ పరికరం యొక్క ఇతర వినియోగదారులను అనుమతించండి</translation>
 <translation id="652948702951888897">Chrome చరిత్ర</translation>
@@ -3746,7 +3762,6 @@
 <translation id="6680650203439190394">రేట్</translation>
 <translation id="6681668084120808868">ఫోటోను తీయి</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" అన్‌ఇన్‌స్టాల్ చేయబడుతుంది.</translation>
-<translation id="6685083257944113180"><ph name="SINK_NAME" />లో, <ph name="SINK_STATUS" />ని ఆపివేయి</translation>
 <translation id="668599234725812620">Google Playని తెరువు</translation>
 <translation id="6686490380836145850">కుడివైపు ట్యాబ్‌లను మూసివేయి</translation>
 <translation id="6686817083349815241">మీ పాస్‌వర్డ్‌ను సేవ్ చేయండి</translation>
@@ -3854,6 +3869,7 @@
 <translation id="6845038076637626672">గరిష్టీకరించిన దాన్ని తెరువు</translation>
 <translation id="6845325883481699275">Chrome భద్రతను మెరుగుపరచడంలో సహాయం చేయండి</translation>
 <translation id="6848388270925200958">ఇప్పుడు, కేవలం ఈ పరికరంలో మాత్రమే ఉపయోగించగల కొన్ని కార్డ్‌లు మీ వద్ద ఉన్నాయి</translation>
+<translation id="6850286078059909152">వచన రంగు</translation>
 <translation id="6851497530878285708">యాప్ ప్రారంభించబడింది</translation>
 <translation id="6853388645642883916">అప్‌డేటర్ నిద్రావస్థలో ఉంది</translation>
 <translation id="68541483639528434">ఇతర ట్యాబ్‌లను మూసివేయి</translation>
@@ -3903,7 +3919,6 @@
 <translation id="6923132443355966645">స్క్రోల్ / క్లిక్</translation>
 <translation id="6923633482430812883">షేర్‌ని మౌంట్ చేస్తున్నప్పుడు ఎర్రర్ ఏర్పడింది. దయచేసి మీరు కనెక్ట్ చేస్తున్న ఫైల్ సర్వర్‌లో SMBv2 లేదా అంతకంటే తాజా వెర్షన్‌కు మద్దతు ఉందో లేదో తనిఖీ చేయండి.</translation>
 <translation id="6930036377490597025">బహిర్గత సెక్యూరిటీ కీ లేదా అంతర్నిర్మిత సెన్సార్</translation>
-<translation id="6930242544192836755">వ్యవధి</translation>
 <translation id="693807610556624488">వ్రాసే చర్య దీనికి సంబంధించిన లక్షణం గరిష్ట పొడవును మించిపోయింది: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">మీ సర్టిఫికెట్‌తో <ph name="HOST_NAME" />ను ప్రమాణీకరించడానికి దయచేసి <ph name="TOKEN_NAME" />కు సైన్ ఇన్ చేయండి.</translation>
 <translation id="6943176775188458830">ముద్రణను రద్దు చేయి</translation>
@@ -3917,6 +3932,7 @@
 <translation id="6951153907720526401">చెల్లింపు హ్యాండ్లర్‌లు</translation>
 <translation id="6951663584153258142">మీరు ఈ పరికరాన్ని అప్‌డేట్ చేయాల్సిందిగా మీ సంస్థ మిమ్మల్ని కోరుతోంది</translation>
 <translation id="6953878494808481632">సంబంధిత సమాచారం</translation>
+<translation id="6953916367503892689">{0,plural, =1{ఫైల్: <ph name="FILES" />}other{ఫైల్‌లు: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">పాప్‌అప్‌ను పరిశీలించు</translation>
 <translation id="6957044667612803194">ఈ సెక్యూరిటీ కీ, పిన్‌లకు మద్దతు ఇవ్వడం లేదు</translation>
 <translation id="6957231940976260713">సేవ పేరు</translation>
@@ -4060,7 +4076,7 @@
 <translation id="7143092389027215216">డెమో మోడ్‌ను ప్రారంభిస్తోంది</translation>
 <translation id="7143207342074048698">కనెక్ట్ అవుతోంది</translation>
 <translation id="7144878232160441200">మళ్లీ ప్రయత్నించండి</translation>
-<translation id="714687768418476028">మీ 'సెక్యూరిటీ కీ' కోసం పిన్ రక్షణ లేదు. సైన్-ఇన్ డేటాను నిర్వహించడానికి ముందుగా పిన్‌ను సృష్టించండి.</translation>
+<translation id="714687768418476028">మీ 'సెక్యూరిటీ కీ'కి పిన్ రక్షణ లేదు. సైన్-ఇన్ డేటాను నిర్వహించడానికి ముందుగా పిన్‌ను సృష్టించండి.</translation>
 <translation id="7149893636342594995">గత 72 గంటలు</translation>
 <translation id="715118844758971915">క్లాసిక్ ప్రింటర్‌లు</translation>
 <translation id="7152478047064750137">ఈ పొడిగింపునకు ప్రత్యేక అనుమతులు అవసరం లేదు</translation>
@@ -4129,7 +4145,6 @@
 <translation id="7254554697254365959">ఈ పేజీని అనువదించడం సాధ్యపడలేదు.</translation>
 <translation id="7254951428499890870">మీరు ఖచ్చితంగా సమస్య విశ్లేషణ మోడ్‌లో "<ph name="APP_NAME" />"ను ప్రారంభించాలనుకుంటున్నారా?</translation>
 <translation id="7255002516883565667">ప్రస్తుతం, కేవలం ఈ పరికరంలో మాత్రమే ఉపయోగించగల ఒక కార్డ్ మీ వద్ద ఉంది</translation>
-<translation id="7255220508626648026">ప్రసారం చేస్తోంది: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">రీసెట్‌ను నిర్ధారించడానికి మీ సెక్యూరిటీ కీని మళ్లీ తాకండి. సెక్యూరిటీ కీలో నిల్వ చేసిన మొత్తం సమాచారం, అలాగే దాని పిన్ కూడా తొలగించబడతాయి.</translation>
 <translation id="7255935316994522020">వర్తింపజేయి</translation>
 <translation id="7256069762010468647">సైట్ మీ కెమెరాను ఉపయోగిస్తోంది</translation>
@@ -4263,6 +4278,7 @@
 <translation id="7456142309650173560">డెవలపర్</translation>
 <translation id="7456847797759667638">స్థానాన్ని తెరువు...</translation>
 <translation id="7458168200501453431">Google శోధనలో ఉపయోగించే అదే స్పెల్ చెకర్‌ను ఉపయోగిస్తుంది. మీరు బ్రౌజర్‌లో టైప్ చేసే వచనం Googleకు పంపబడుతుంది.</translation>
+<translation id="7460045493116006516">మీరు ప్రస్తుతం ఇన్‌స్టాల్ చేసుకున్న థీమ్</translation>
 <translation id="7461924472993315131">పిన్ చేయి</translation>
 <translation id="746216226901520237">తదుపరిసారి మీ ఫోన్ మీ <ph name="DEVICE_TYPE" />‌ను అన్‌లాక్ చేస్తుంది. మీరు సెట్టింగ్‌లలో Smart Lockను ఆఫ్ చేయవచ్చు.</translation>
 <translation id="7463006580194749499">వ్యక్తిని జోడించు</translation>
@@ -4322,6 +4338,7 @@
 <translation id="7554791636758816595">కొత్త ట్యాబ్</translation>
 <translation id="7556033326131260574">Smart Lock మీ ఖాతాను ధృవీకరించలేకపోయింది. ప్రవేశించడానికి మీ పాస్‌వర్డ్‌ను టైప్ చేయండి.</translation>
 <translation id="7556242789364317684">దురదృష్టవశాత్తూ, <ph name="SHORT_PRODUCT_NAME" /> మీ సెట్టింగ్‌లను పునరుద్ధరించలేకపోయింది. ఎర్రర్‌ను పరిష్కరించడానికి, <ph name="SHORT_PRODUCT_NAME" /> మీ పరికరాన్ని తప్పనిసరిగా పవర్‌వాష్‌తో రీసెట్ చేయాలి.</translation>
+<translation id="7559444627302317199">దయచేసి మీ నెట్‌వర్క్ కనెక్షన్‌ను సరిచూసుకుని, ఆపై మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="7559719679815339381">దయచేసి వేచి ఉండండి....కియోస్క్ యాప్ అప్‌డేట్ అయ్యే ప్రాసెస్‌లో ఉంది. USB స్టిక్‌ను తీసివేయకండి.</translation>
 <translation id="7561196759112975576">ఎల్లప్పుడూ</translation>
 <translation id="7563991800558061108">ఈ ఎర్ర‌ర్‌ నుండి పునరుద్ధరించడానికి, మీరు సైన్-ఇన్ స్క్రీన్ నుండి మీ Google ఖాతాకు
@@ -4563,7 +4580,6 @@
 <translation id="7887334752153342268">నకిలీ</translation>
 <translation id="7887864092952184874">బ్లూటూత్ మౌస్ జత చేయబడింది</translation>
 <translation id="7889565820482017512">ప్రదర్శన పరిమాణం</translation>
-<translation id="7889966925761734854">కోరుకునే చోటుకు లాగే నియంత్రణ</translation>
 <translation id="7893008570150657497">మీ కంప్యూటర్ నుండి ఫోటోలు, సంగీతం మరియు ఇతర మీడియాను యాక్సెస్ చేయండి</translation>
 <translation id="7893153962594818789">ఈ <ph name="DEVICE_TYPE" />లో బ్లూటూత్ ఆఫ్‌లో ఉంది. మీ పాస్‌వర్డ్‌ను నమోదు చేసి బ్లూటూత్‌ను ఆన్ చేయండి.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (డిఫాల్ట్)</translation>
@@ -4571,7 +4587,6 @@
 <translation id="7898627924844766532">సాధనపట్టీలో ఉంచండి</translation>
 <translation id="7898725031477653577">ఎల్లప్పుడూ అనువదించు</translation>
 <translation id="790040513076446191">గోప్యత సంబంధ సెట్టింగ్‌లను మ్యానిపులేట్ చేయండి</translation>
-<translation id="7902874111237641165">మృదువైన చలనం [బీటా]</translation>
 <translation id="7903345046358933331">పేజీ ప్రతిస్పందించడం లేదు. మీరు అది ప్రతిస్పందించే వరకు వేచి ఉండవచ్చు లేదా దాన్ని మూసివేయవచ్చు.</translation>
 <translation id="7903742244674067440">మీకు ఫైల్‌లో ఈ ప్రమాణపత్రం అధికారాలను గుర్తించే ప్రమాణపత్రాలు ఉన్నాయి</translation>
 <translation id="7903925330883316394">యుటిలిటీ: <ph name="UTILITY_TYPE" /></translation>
@@ -4680,6 +4695,7 @@
 <translation id="8037117027592400564">సంశ్లేషణ ప్రసంగాన్ని ఉపయోగించి మాట్లాడిన మొత్తం వచనాన్ని చదవడం</translation>
 <translation id="8037357227543935929">అడగాలి (డిఫాల్ట్)</translation>
 <translation id="803771048473350947">ఫైల్</translation>
+<translation id="8042142357103597104">వచన అపారదర్శకత</translation>
 <translation id="8044899503464538266">నెమ్మదిగా</translation>
 <translation id="8045253504249021590">Google డాష్‌బోర్డ్ ద్వారా సింక్‌ ఆపివేయబడింది.</translation>
 <translation id="8045923671629973368">అప్లికేషన్ id లేదా వెబ్‌స్టోర్ URLను నమోదు చేయండి</translation>
@@ -4716,7 +4732,6 @@
     <ph name="BEGIN_PARAGRAPH5" />మీరు సెట్టింగ్‌లలో ఈ సేవని ఆఫ్ చేయవచ్చు.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PINలు సరిపోలడం లేదు</translation>
 <translation id="809792523045608178">'<ph name="IDS_SHORT_PRODUCT_NAME" />' అన్నది, ఎక్స్‌టెన్షన్ నుండి అందించబడిన ప్రాక్సీ సెట్టింగ్‌లను ఉపయోగిస్తోంది</translation>
-<translation id="8099495042588009598">మరిన్ని అనుమతులు</translation>
 <translation id="8101987792947961127">తరువాత రీబూట్‌లో పవర్‌వాష్ అవసరం</translation>
 <translation id="8102159139658438129">మీ కనెక్ట్ చేయబడిన ఫోన్ యొక్క ఎంపికలను చూడటం కోసం <ph name="LINK_BEGIN" />సెట్టింగ్‌లు<ph name="LINK_END" />లోకి వెళ్లండి</translation>
 <translation id="8104696615244072556">మీ <ph name="IDS_SHORT_PRODUCT_NAME" /> పరికరాన్ని పవర్‌వాష్ చేసి, మునుపటి వెర్షన్‌కు తిరిగి మార్చండి.</translation>
@@ -4768,8 +4783,10 @@
     ఈ సైట్‌ను బ్లాక్ చేసి ఉండకూడదు!</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" />కి మార్చు</translation>
 <translation id="8184318863960255706">మరింత సమాచారం</translation>
+<translation id="8184472985242519288">ఏకరీతి</translation>
 <translation id="8185331656081929126">నెట్‌వర్క్‌లో కొత్త ప్రింటర్‌లు గుర్తించబడినప్పుడు నోటిఫికేషన్‌లను చూపు</translation>
 <translation id="8186609076106987817">సర్వర్ ఫైల్‌ను కనుగొనలేకపోయింది.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> కింది ఫోల్డర్‌లోని ఫైల్‌లన్నీ చదవగలదు. ఈ ట్యాబ్‌ను తెరిచి ఉన్నప్పుడు మాత్రమే మార్పులను ఈ సైట్ చూడగలుగుతుంది.</translation>
 <translation id="8188389033983459049">మీ పరికర సెట్టింగ్‌లను తనిఖీ చేసి, కొనసాగించడానికి దాన్ని ఆన్ చేయండి</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" />కు కనెక్ట్ చేస్తోంది</translation>
 <translation id="8191230140820435481">మీ అనువర్తనాలను, పొడిగింపులను మరియు థీమ్‌లను నిర్వహించండి</translation>
@@ -4873,8 +4890,6 @@
 <translation id="833986336429795709">ఈ లింక్‌ను తెరవడానికి, ఒక యాప్‌ను ఎంచుకోండి</translation>
 <translation id="8342861492835240085">సేకరణను ఎంచుకోండి</translation>
 <translation id="834290227245955730">పిన్ చెల్లదు. మిగిలి ఉన్న పునఃప్రయత్నాల సంఖ్య: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">ఉత్తమ శ్రేణి వీడియో లేదా యానిమేషన్ కోసం అధిక బ్యాండ్‌విడ్త్‌ను ఉపయోగించండి.
-నెమ్మది కనెక్షన్‌లు గల ఇతర వ్యక్తులు మీ కంటెంట్‌ను చూడలేకపోవచ్చు.</translation>
 <translation id="8351419472474436977">ఈ ఎక్సటెన్షన్ మీ ప్రాక్సీ సెట్టింగ్‌లను దాని నియంత్రణలోకి తీసుకుంది, అది మీరు ఆన్‌లైన్‌లో ఏదైనా చేస్తుంటే దాన్ని మార్చడం, అంతరాయం కలిగించడం లేదా రహస్యంగా గమనించడం వంటివి చేయగలదని దీనర్థం. ఈ మార్పు ఎందుకు సంభవించిందో మీకు ఖచ్చితంగా తెలియలేదంటే బహుశా మీరు దాన్ని కోరుకొని ఉండకపోవచ్చు.</translation>
 <translation id="8351630282875799764">బ్యాటరీ ఛార్జ్ కావడం లేదు</translation>
 <translation id="835238322900896202">అన్ఇన్‌స్టాల్ సమయంలో ఎర్రర్ ఏర్పడింది. దయచేసి టెర్మినల్ ద్వారా అన్ఇన్‌స్టాల్ చేయండి.</translation>
@@ -4907,9 +4922,11 @@
 <translation id="839736845446313156">నమోదు చెయ్యి</translation>
 <translation id="8398877366907290961">ఏవైనా కొనసాగు</translation>
 <translation id="8400146488506985033">వ్యక్తులను నిర్వహించు</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> మీ మార్పులను నేరుగా కింది ఫోల్డర్‌లోని ఫైల్‌లలో సేవ్ చేయగలదు. ఈ ట్యాబ్‌ను తెరిచి ఉన్నప్పుడు మాత్రమే మార్పులను ఈ సైట్ సేవ్ చేయగలుగుతుంది.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ముందుగా అడుగు (సిఫార్సు చేయబడింది)</translation>
 <translation id="8418445294933751433">&amp;ట్యాబ్ లాగా చూపండి</translation>
+<translation id="8418905021510211421">మీ పరికరంలోని ఫోల్డర్‌ను చదవడానికి ఈ పేజీ అనుమతించబడింది.</translation>
 <translation id="8419098111404128271">'<ph name="SEARCH_TEXT" />' కోసం శోధన ఫలితాలు</translation>
 <translation id="8419368276599091549">మీ <ph name="DEVICE_TYPE" />కు స్వాగతం!</translation>
 <translation id="8425213833346101688">మార్చు</translation>
@@ -4929,6 +4946,7 @@
 <translation id="8438566539970814960">శోధనలు మరియు బ్రౌజింగ్‌ను మెరుగుపరచండి</translation>
 <translation id="8439506636278576865">ఈ భాషలో పేజీలకు అనువాదం అందించు</translation>
 <translation id="8440630305826533614">Linux యాప్‌లు</translation>
+<translation id="844241640324986723">మీ సైన్-ఇన్ డేటాను తొలగించడంలో విఫలమైంది.</translation>
 <translation id="8443338615972234259">పర్యవేక్షించబడే మీ వినియోగదారు కోసం దయచేసి కొత్త ఖాతాను సృష్టించండి.</translation>
 <translation id="8446884382197647889">మరింత తెలుసుకోండి</translation>
 <translation id="8447409163267621480">Ctrl లేదా Altను చేర్చండి</translation>
@@ -4944,8 +4962,6 @@
 <translation id="8461914792118322307">ప్రాక్సీ</translation>
 <translation id="8463215747450521436">ఈ పర్యవేక్షించబడే వినియోగదారు నిర్వాహకుని ద్వారా తొలగించబడి ఉండవచ్చు లేదా నిలిపివేయబడి ఉండవచ్చు. దయచేసి ఈ వినియోగదారుగా సైన్ ఇన్ చేయడాన్ని కొనసాగించాలనుకుంటే నిర్వాహకుని సంప్రదించండి.</translation>
 <translation id="846374874681391779">డౌన్‌లోడ్‌ల బార్</translation>
-<translation id="8463807869745732775">"&gt;
-    నిల్వ చేయబడిన 'సెక్యూరిటీ కీ' సైన్-ఇన్ డేటా</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> నిలిపివేయబడింది.</translation>
 <translation id="8464132254133862871">ఈ వినియోగదారు ఖాతా ఆ సేవ కోసం అర్హత పొందలేదు.</translation>
 <translation id="8465252176946159372">చెల్లదు</translation>
@@ -5011,6 +5027,7 @@
 <translation id="8569002732135253578">ఇప్పుడు <ph name="DOCUMENT_NAME" />ని ముద్రిస్తోంది</translation>
 <translation id="8569682776816196752">గమ్యస్థానాలు కనుగొనబడలేదు</translation>
 <translation id="8571213806525832805">గత 4 వారాలు</translation>
+<translation id="8573403125070227391">ఈ ప్రకటన కోసం మీ పరికరంలోని చాలా వనరులు వినియోగించబడతాయి. కనుక, Chrome దీనిని తీసివేసింది.</translation>
 <translation id="8574990355410201600"><ph name="HOST" />లో ఎల్లప్పుడూ ధ్వనిని అనుమతించు</translation>
 <translation id="8575286410928791436">నిష్క్రమించడానికి <ph name="KEY_EQUIVALENT" />ని పట్టుకొని ఉంచండి</translation>
 <translation id="8578639784464423491">99 అక్షరాలను మించకూడదు</translation>
@@ -5034,13 +5051,13 @@
 <translation id="8609465669617005112">పైకి తరలించు</translation>
 <translation id="8610103157987623234">ఫార్మాట్ తప్పు, దయచేసి మళ్లీ ప్రయత్నించండి</translation>
 <translation id="8615618338313291042">అజ్ఞాత యాప్: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">నీడను చూపు</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">రోమింగ్ స్థితి</translation>
 <translation id="8620765578342452535">నెట్‌వర్క్ కనెక్షన్‌లను కాన్ఫిగర్ చేయడానికి అనుమతి</translation>
 <translation id="8621866727807194849">మీ కంప్యూటర్‌లో మీ భద్రతకు హాని కలిగించే సాఫ్ట్‌వేర్‌ ఉంది. కనుక Chrome దానిని తీసివేసి, మీ సెట్టింగ్‌లను పునరుద్ధరించి, ఎక్స్‌టెన్షన్‌లను నిలిపివేస్తోంది. ఆపై మీ బ్రౌజర్ మళ్లీ ఎప్పటిలాగే సాధారణంగా పని చేస్తుంది.</translation>
 <translation id="8621979332865976405">మీ పూర్తి స్క్రీన్‌ను షేర్ చేయండి</translation>
 <translation id="862542460444371744">&amp;పొడిగింపులు</translation>
-<translation id="8627151598708688654">మూలాన్ని ఎంచుకోండి</translation>
 <translation id="862727964348362408">తాత్కాలికంగా రద్దు చేయబడింది</translation>
 <translation id="862750493060684461">CSS కాష్</translation>
 <translation id="8627795981664801467">సురక్షిత కనెక్షన్‌ల మాత్రమే</translation>
@@ -5094,6 +5111,7 @@
 <translation id="8688579245973331962">మీ పేరు కనిపించలేదా?</translation>
 <translation id="8688591111840995413">పాస్‌వర్డ్ చెల్లదు</translation>
 <translation id="8688672835843460752">అందుబాటులో ఉంది</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">స్థానాన్ని &amp;తెరువు...</translation>
 <translation id="869884720829132584">అప్లికేషన్‌ల మెను</translation>
 <translation id="869891660844655955">గడువు తేదీ</translation>
@@ -5257,6 +5275,7 @@
 <translation id="891365694296252935">వినియోగం &amp; విశ్లేషణల డేటాను పంపండి. ఈ పరికరం ప్రస్తుతం సమస్య విశ్లేషణ, అలాగే పరికర, యాప్ వినియోగ డేటాను ఆటోమేటిక్‌గా Googleకి పంపుతుంది. ఇది మీ చిన్నారి గురించి గుర్తించడానికి ఉపయోగించబడదు, ఇది కేవలం సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్‌లకు, అలాగే Android డెవలపర్‌ల లాంటి భాగస్వాములకు సహాయపడుతుంది. ఈ సెట్టింగ్‌ని యజమాని అమలు చేసారు. మీ చిన్నారి కోసం అదనపు వెబ్ &amp; యాప్ కార్యకలాపాన్ని ఆన్ చేసినట్లయితే, ఈ డేటా వారి Google ఖాతాలో సేవ్ కావచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">సూచన లోడ్ అవుతోంది</translation>
 <translation id="8916476537757519021">అజ్ఞాత సబ్‌ఫ్రేమ్: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - మీ పరికరంలోని ఫోల్డర్‌ను చదవడానికి అనుమతించబడింది</translation>
 <translation id="8919275547519617350">మీ అన్ని పరికరాలలో మీ అన్ని పాస్‌వర్డ్‌‌లను పొందడానికి, సైన్ ఇన్ చేసి, సింక్‌ను ఆన్ చేయండి.</translation>
 <translation id="8921366488406707015">మీ భద్రతా కీని ధృవీకరిస్తోంది...</translation>
 <translation id="8922013791253848639">ప్రకటనలను ఈ సైట్‌లో ఎప్పుడూ అనుమతించు</translation>
@@ -5286,7 +5305,6 @@
 <translation id="8965037249707889821">పాత పాస్‌వర్డ్‌ను నమోదు చేయండి</translation>
 <translation id="8966870118594285808">ట్యాబ్‌ను మీరు పొరపాటున మూసివేసినట్లయితే మళ్లీ తెరవగలరు</translation>
 <translation id="8967866634928501045">చూపడం కోసం Alt Shift A నొక్కండి</translation>
-<translation id="8970203673128054105">ప్రసార మోడ్ జాబితాను వీక్షించండి</translation>
 <translation id="89720367119469899">ఎస్కేప్</translation>
 <translation id="8972513834460200407">దయచేసి Google సర్వర్‌ల నుండి డౌన్‌లోడ్‌లను ఫైర్‌వాల్ బ్లాక్ చేయడం లేదని నిర్ధారించుకోవడానికి మీ నెట్‌వర్క్ నిర్వాహకుడిని సంప్రదించండి.</translation>
 <translation id="8973557916016709913">జూమ్ స్థాయిని తీసివేయి</translation>
@@ -5435,6 +5453,7 @@
 <translation id="9214520840402538427">అయ్యో!  ఇన‌స్ట‌లేష‌న్-సమయ లక్షణాల ప్రారంభ సమయం ముగిసింది.  దయచేసి మీ మద్దతు ప్రతినిధిని సంప్రదించండి.</translation>
 <translation id="9214695392875603905">కప్ కేక్</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" జోడించబడింది</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> మీ మార్పులను నేరుగా కింది ఫైల్‌లో సేవ్ చేయగలదు. ఈ ట్యాబ్‌ను తెరిచి ఉన్నప్పుడు మాత్రమే మార్పులను ఈ సైట్ సేవ్ చేయగలుగుతుంది.</translation>
 <translation id="9218430445555521422">డిఫాల్ట్‌లా సెట్ చేయండి</translation>
 <translation id="9219103736887031265">చిత్రాలు</translation>
 <translation id="9220525904950070496">ఖాతాను తీసివేయండి</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 45f693d..5499cd5a 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">เกิดข้อผิดพลาดขณะเริ่มต้นเครื่องเสมือน โปรดลองอีกครั้ง</translation>
 <translation id="1089439967362294234">เปลี่ยนรหัสผ่าน</translation>
 <translation id="1090126737595388931">ไม่มีแอปพลิเคชันทำงานในพื้นหลัง</translation>
+<translation id="1090290614672149983">บันทึกการเปลี่ยนแปลงลงในไฟล์ต้นฉบับไหม</translation>
 <translation id="1090918500949388876">เข้าถึง Assistant ได้ทุกเมื่อเพียงพูดว่า "Ok Google" เมื่อหน้าจอเปิดอยู่</translation>
 <translation id="1091767800771861448">กด ESCAPE เพื่อยกเลิก (รุ่นที่ไม่เป็นทางการเท่านั้น)</translation>
 <translation id="1093457606523402488">เครือข่ายที่แสดงตัว:</translation>
 <translation id="1094607894174825014">ได้รับคำขอการอ่านหรือเขียนที่มีออฟเซ็ตไม่ถูกต้องใน "<ph name="DEVICE_NAME" />"</translation>
 <translation id="1097658378307015415">ก่อนที่จะลงชื่อเข้าใช้ โปรดเข้าใช้ในฐานะผู้มาเยือนเพื่อเปิดใช้งานเครือข่าย <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">แท็บนี้บันทึกการเปลี่ยนแปลงลงในไฟล์ต้นฉบับได้</translation>
 <translation id="1103523840287552314">แปลภาษา<ph name="LANGUAGE" />ทุกครั้ง</translation>
 <translation id="1108600514891325577">&amp;หยุด</translation>
 <translation id="1110155001042129815">รอ</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">แว่นกันแดด</translation>
 <translation id="1151917987301063366">อนุญาตให้ <ph name="HOST" /> เข้าถึงเซ็นเซอร์เสมอ</translation>
 <translation id="1153356358378277386">อุปกรณ์ที่จับคู่</translation>
-<translation id="1156488781945104845">เวลาปัจจุบัน</translation>
 <translation id="1161575384898972166">โปรดลงชื่อเข้าใช้ <ph name="TOKEN_NAME" /> เพื่อส่งออกใบรับรองไคลเอ็นต์</translation>
 <translation id="1163931534039071049">&amp;ดูรหัสต้นฉบับของเฟรม</translation>
 <translation id="1164674268730883318">ปิด Smart Lock สำหรับ <ph name="DEVICE_TYPE" /> ไหม</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">การตั้งค่าพื้นที่เก็บข้อมูล Adobe Flash Player</translation>
 <translation id="1274997165432133392">คุกกี้และข้อมูลอื่นของไซต์</translation>
 <translation id="127668050356036882">ปิดหน้าต่างทั้งหมด</translation>
-<translation id="1277908057200820621">ดูรายชื่ออุปกรณ์</translation>
 <translation id="1280820357415527819">กำลังค้นหาเครือข่ายมือถือ</translation>
 <translation id="1285320974508926690">ไม่ต้องแปลเว็บไซต์นี้</translation>
 <translation id="1285484354230578868">จัดเก็บข้อมูลในบัญชี Google ไดรฟ์</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">เครือข่ายในประเทศ ไม่ใช่โรมมิ่ง</translation>
 <translation id="1316136264406804862">กำลังค้นหา...</translation>
 <translation id="1316495628809031177">หยุดซิงค์ชั่วคราว</translation>
+<translation id="1317637799698924700">แท่นชาร์จจะทำงานในโหมดที่เข้ากันได้กับ USB Type-C</translation>
 <translation id="1322046419516468189">ดูและจัดการรหัสผ่านที่บันทึกไว้ได้ใน<ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">ลงชื่อเข้าใช้ Chrome เพื่อรับแท็บจากอุปกรณ์เครื่องอื่นๆ ของคุณ</translation>
 <translation id="1327074568633507428">เครื่องพิมพ์บน Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />เบราว์เซอร์ของคุณได้รับการจัดการ<ph name="END_LINK" />โดย <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">เรียกใช้เครื่องมือ ตัวแก้ไข และ IDE สำหรับ Linux ใน <ph name="DEVICE_TYPE" /> &lt;a target="_blank" href="<ph name="URL" />"&gt;ดูข้อมูลเพิ่มเติม&lt;/a&gt;</translation>
 <translation id="1367951781824006909">เลือกไฟล์</translation>
+<translation id="1370749010280229230">จอแสดงผลที่เชื่อมต่อกับแท่นชาร์จมีปัญหา</translation>
 <translation id="1371301976177520732">บุ๊กมาร์ก รหัสผ่าน ประวัติการเข้าชม และอื่นๆ ในอุปกรณ์ทุกเครื่อง</translation>
 <translation id="1372841398847029212">ซิงค์กับบัญชีของคุณ</translation>
 <translation id="1374844444528092021">ใบรับรองที่เครือข่าย "<ph name="NETWORK_NAME" />" ต้องการไม่ได้รับการติดตั้ง หรือใช้ไม่ได้อีกต่อไปแล้ว โปรดรับใบรับรองใหม่และลองเชื่อมต่ออีกครั้ง</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">หน้าเว็บ ไฟล์เดียว</translation>
 <translation id="1451917004835509682">เพิ่มบุคคลภายใต้การดูแล</translation>
 <translation id="1454223536435069390">จับ&amp;ภาพหน้าจอ</translation>
+<translation id="1458243790901188746">{0,plural, =1{โฟลเดอร์: <ph name="DIRECTORIES" />}other{โฟลเดอร์: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">เครื่องมือค้นหาที่เพิ่มโดยส่วนขยาย</translation>
 <translation id="146000042969587795">เฟรมนี้ถูกป้องกันเนื่องจากมีเนื้อหาบางอย่างที่ไม่ปลอดภัย</translation>
 <translation id="146219525117638703">ONC State</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">แสดงตัวเลือกการป้อนข้อมูล</translation>
 <translation id="1651008383952180276">คุณต้องป้อนรหัสผ่านเดียวกัน 2 ครั้ง</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{เพิ่มเครื่องพิมพ์ลงใน Google Cloud Print เพื่อให้คุณสามารถพิมพ์ได้จากทุกที่}other{เพิ่มเครื่องพิมพ์ # เครื่องลงใน Google Cloud Print เพื่อให้คุณสามารถพิมพ์ได้จากทุกที่}}</translation>
+<translation id="1656528038316521561">ความทึบแสงของพื้นหลัง</translation>
 <translation id="1657406563541664238">ช่วยปรับปรุง <ph name="PRODUCT_NAME" /> ให้ดีขึ้นโดยการส่งสถิติการใช้งานและรายงานปัญหาไปยัง Google โดยอัตโนมัติ</translation>
 <translation id="1658424621194652532">หน้านี้กำลังเข้าถึงไมโครโฟนของคุณ</translation>
 <translation id="1660204651932907780">อนุญาตให้เว็บไซต์เล่นเสียง (แนะนำ)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> ต้องการดูยี่ห้อและรุ่นของคีย์ความปลอดภัย</translation>
 <translation id="1679068421605151609">เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์</translation>
 <translation id="1679806121152819234">VM ปลั๊กอิน</translation>
+<translation id="1679810534535368772">คุณแน่ใจไหมว่าต้องการออก</translation>
 <translation id="167983332380191032">บริการการจัดการแสดงข้อผิดพลาด HTTP</translation>
 <translation id="1680849702532889074">เกิดข้อผิดพลาดระหว่างการติดตั้งแอปพลิเคชัน Linux</translation>
 <translation id="16815041330799488">ไม่อนุญาตให้เว็บไซต์ดูข้อความและรูปภาพที่คัดลอกไปยังคลิปบอร์ด</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">ตัวระบุสื่อที่มีการป้องกัน</translation>
 <translation id="175196451752279553">เ&amp;ปิดแท็บที่ถูกปิดขึ้นใหม่</translation>
 <translation id="1753905327828125965">เข้าชมบ่อยสุด</translation>
+<translation id="1755601632425835748">ขนาดข้อความ</translation>
 <translation id="1756681705074952506">วิธีการป้อนข้อมูล</translation>
 <translation id="1757301747492736405">รอถอนการติดตั้ง</translation>
 <translation id="175772926354468439">เปิดใช้งานธีม</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">เ&amp;ล็กลง</translation>
 <translation id="1919345977826869612">โฆษณา</translation>
 <translation id="1919814239594435008">อนุญาตปลั๊กอินที่ไม่ได้อยู่ในแซนด์บ็อกซ์</translation>
+<translation id="1920390473494685033">รายชื่อติดต่อ</translation>
 <translation id="1921050530041573580">จับคู่โทรศัพท์กับ Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">ดูตัวเลือกดีๆ จาก Google ใน <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">แท็บไม่ระบุตัวตน: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> ใน <ph name="PEPPER_PLUGIN_DOMAIN" /> ต้องการเข้าถึงคอมพิวเตอร์ของคุณ</translation>
 <translation id="2178614541317717477">ผู้มีสิทธิ์ออกใบรับรองไม่สมบูรณ์</translation>
+<translation id="2179849162388791084">การรวบรวมข้อมูลการลงชื่อเข้าใช้จากคีย์ความปลอดภัยล้มเหลว</translation>
 <translation id="218070003709087997">ใช้ตัวเลขเพื่อระบุจำนวนสำเนาที่ต้องการพิมพ์ (1 ถึง 999)</translation>
 <translation id="2184515124301515068">ให้ Chrome เลือกว่าเว็บไซต์จะเล่นเสียงได้เมื่อใด (แนะนำ)</translation>
 <translation id="2187895286714876935">ข้อผิดพลาดในการนำเข้าใบรับรองเซิร์ฟเวอร์</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">คุกกี้และข้อมูลเว็บไซต์ทั้งหมด</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{คัดลอกแล้ว 1 รายการ}other{คัดลอกแล้ว # รายการ}}</translation>
 <translation id="2278562042389100163">เปิดหน้าต่างเบราว์เซอร์</translation>
-<translation id="2279874276457403668">สร้างได้ทีละเซสชันเท่านั้น</translation>
 <translation id="2280486287150724112">ขอบขวา</translation>
 <translation id="2282146716419988068">การประมวลผลของ GPU</translation>
 <translation id="2282155092769082568">URL การกำหนดค่าอัตโนมัติ:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">บันทึกบนหน้าจอล็อกจะบันทึกไว้โดยอัตโนมัติไปยัง <ph name="LOCK_SCREEN_APP_NAME" /> บันทึกล่าสุดของคุณจะยังคงอยู่บนหน้าจอล็อก</translation>
 <translation id="2353297238722298836">อนุญาตให้ใช้กล้องถ่ายรูปและไมโครโฟน</translation>
 <translation id="2356070529366658676">ถาม</translation>
-<translation id="2357949918965361754">คุณสามารถใช้ฟีเจอร์นี้เพื่อแสดงเนื้อหาจาก Chrome บน TV หรืออุปกรณ์อื่นๆ ได้</translation>
 <translation id="2359345697448000899">จัดการส่วนขยายของคุณโดยคลิกที่ "ส่วนขยาย" ในเมนู "เครื่องมือ"</translation>
 <translation id="2359808026110333948">ต่อไป</translation>
 <translation id="236117173274098341">เพิ่มประสิทธิภาพ</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">องค์กรของคุณกำหนดให้อัปเดตอุปกรณ์นี้ทันที</translation>
 <translation id="2439545803278355377">ป้อน PIN ใหม่ PIN ต้องยาวอย่างน้อย 4 อักขระและอนุญาตให้ใช้ตัวอักษร ตัวเลข และอักขระอื่นๆ</translation>
 <translation id="2440604414813129000">ดูโ&amp;ค้ดต้นฉบับ</translation>
+<translation id="2442916515643169563">เงาของข้อความ</translation>
 <translation id="2444119669991608829">หน้านี้ไม่ใช่ภาษา<ph name="LANGUAGE" />ใช่ไหม</translation>
 <translation id="2445081178310039857">จำเป็นต้องระบุไดเรกทอรีหลักของส่วนขยาย</translation>
 <translation id="2445484935443597917">สร้างโปรไฟล์ใหม่</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">ไม่เกิน</translation>
 <translation id="2739191690716947896">แก้ปัญหา</translation>
 <translation id="2739240477418971307">เปลี่ยนแปลงการตั้งค่าการเข้าถึง</translation>
+<translation id="274029851662193272">ลดต่ำ</translation>
 <translation id="2740393541869613458">ตรวจสอบเว็บไซต์ที่ผู้ใช้ภายใต้การดูแลได้เข้าชมและ</translation>
 <translation id="2741912629735277980">แสดง UI ในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="274290345632688601">กำลังคืนค่าแอปและไฟล์ Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">มีทางลัดนี้อยู่แล้ว</translation>
 <translation id="2807517655263062534">ไฟล์ที่คุณดาวน์โหลดจะปรากฏที่นี่</translation>
 <translation id="2809586584051668049">และอีก <ph name="NUMBER_ADDITIONAL_DISABLED" /> รายการ</translation>
+<translation id="2812049959647166806">ไม่รองรับ Thunderbolt</translation>
 <translation id="2812944337881233323">ลองออกจากระบบและลงชื่อเข้าใช้อีกครั้ง</translation>
 <translation id="2812989263793994277">ไม่ต้องแสดงภาพใดๆ</translation>
 <translation id="281390819046738856">ลงนามคำขอไม่ได้</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">ผู้ให้บริการ</translation>
 <translation id="2844169650293029770">อุปกรณ์ USB-C (พอร์ตด้านหน้าซ้าย)</translation>
 <translation id="2845382757467349449">แสดงแถบบุ๊กมาร์กเสมอ</translation>
-<translation id="2847759467426165163">ส่งไปยัง</translation>
 <translation id="284805635805850872">นำซอฟต์แวร์อันตรายออกไหม</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">การทำความสะอาดไม่สำเร็จ</translation>
@@ -1297,6 +1305,7 @@
     ข้อความเซิร์ฟเวอร์: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">เพิ่มแกลเลอรีสื่อตามไดเรกทอรี</translation>
 <translation id="2910318910161511225">เชื่อมต่อกับเครือข่ายแล้วลองอีกครั้ง</translation>
+<translation id="2910518940971897750">บันทึกลงในไฟล์ต้นฉบับ</translation>
 <translation id="2913331724188855103">อนุญาตให้เว็บไซต์บันทึกและอ่านข้อมูลคุกกี้ (แนะนำ)</translation>
 <translation id="2915102088417824677">ดูบันทึกกิจกรรม</translation>
 <translation id="2915873080513663243">สแกนอัตโนมัติ</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">อุปกรณ์ MIDI</translation>
 <translation id="3015639418649705390">เปิดใหม่เลย</translation>
 <translation id="3016329696181678353">กำหนดค่า <ph name="PRINTER_NAME" /> โดยอัตโนมัติไม่ได้ โปรดระบุรายละเอียดเครื่องพิมพ์ขั้นสูง</translation>
+<translation id="3016381065346027039">ไม่มีรายการบันทึก</translation>
 <translation id="3016641847947582299">อัปเดตคอมโพเนนต์แล้ว</translation>
 <translation id="3016780570757425217">ทราบตำแหน่งของคุณ</translation>
 <translation id="3017079585324758401">พื้นหลัง</translation>
 <translation id="3020183492814296499">ทางลัด</translation>
 <translation id="3020990233660977256">หมายเลขซีเรียล: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">ผีเสื้อ</translation>
+<translation id="3021408157810018664">บันทึกการเปลี่ยนแปลงลงในไฟล์ต้นฉบับไหม</translation>
 <translation id="3021426244864538700">กำลังเข้าถึงข้อมูลของเว็บไซต์นี้</translation>
 <translation id="3021678814754966447">&amp;ดูแหล่งที่มาของเฟรม</translation>
 <translation id="3022978424994383087">ฟังไม่เข้าใจ</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">คุณสามารถข้ามการลงชื่อเข้าใช้และ<ph name="LINK_START" />เรียกดูในฐานะผู้เยี่ยมชม<ph name="LINK_END" />ได้ด้วย</translation>
 <translation id="3172045848207518317">มีเว็บไซต์กำลังเข้าถึงอินพุตวิดีโอ</translation>
 <translation id="3177909033752230686">ภาษาหน้าเว็บ:</translation>
+<translation id="3179982752812949580">แบบอักษรของข้อความ</translation>
 <translation id="3181954750937456830">Google Safe Browsing (ปกป้องคุณและอุปกรณ์จากเว็บไซต์ที่เป็นอันตราย)</translation>
 <translation id="3182749001423093222">ตรวจตัวสะกด</translation>
 <translation id="3183139917765991655">ตัวนำเข้าโปรไฟล์</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">เปิดเป็นหน้าต่าง</translation>
 <translation id="3278001907972365362">บัญชี Google ของคุณต้องการการดำเนินการ</translation>
 <translation id="3279230909244266691">ขั้นตอนนี้อาจใช้เวลาสักครู่ กำลังเริ่มเครื่องเสมือน</translation>
-<translation id="3279741024917655738">เปิดวิดีโอเต็มหน้าจอใน</translation>
 <translation id="3280237271814976245">บันทึกใ&amp;ห้เป็น...</translation>
 <translation id="3280243678470289153">อยู่ภายใน Chrome</translation>
 <translation id="3281892622610078515">ไฟล์และโปรแกรมที่จะกักบริเวณ</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">ไม่พบผลการค้นหา</translation>
 <translation id="3305389145870741612">กระบวนการฟอร์แมตอาจใช้เวลาสองสามวินาที โปรดรอสักครู่</translation>
 <translation id="3305661444342691068">เปิด PDF ในหน้าตัวอย่าง</translation>
-<translation id="3306684685104080068">เปิดใช้การแคสต์ไปยังบริการบนระบบคลาวด์ เช่น Google Hangouts</translation>
+<translation id="3307871847038842490">หน้านี้บันทึกการเปลี่ยนแปลงลงในไฟล์ต้นฉบับได้</translation>
 <translation id="3308006649705061278">หน่วยองค์กร (OU)</translation>
 <translation id="3308116878371095290">หน้าเว็บนี้ไม่อนุญาตให้มีการตั้งค่าคุกกี้</translation>
 <translation id="3308134619352333507">ซ่อนปุ่ม</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">ยกเลิกการสร้างบัญชีใช่ไหม</translation>
 <translation id="3464012987031883895">มีเว็บไซต์กำลังเข้าถึงอินพุตเสียง</translation>
 <translation id="346431825526753">นี่เป็นบัญชีสำหรับเด็กที่จัดการโดย <ph name="CUSTODIAN_EMAIL" /></translation>
-<translation id="3468275649641751422">สตรีมวิดีโอหรือไฟล์เสียง</translation>
 <translation id="3468999815377931311">โทรศัพท์ Android</translation>
 <translation id="3470442499439619530">ลบผู้ใช้รายนี้</translation>
 <translation id="3473479545200714844">แว่นขยายหน้าจอ</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">ย่อ</translation>
 <translation id="3497560059572256875">แชร์ Doodle</translation>
 <translation id="3505030558724226696">เพิกถอนสิทธิ์การเข้าถึงอุปกรณ์</translation>
+<translation id="3505635633742443645">พอร์ต HDMI ของแท่นชาร์จจะใช้งานไม่ได้เมื่อใช้พอร์ต USB Type-C สำหรับเอาต์พุตวิดีโออยู่ โปรดใช้พอร์ตอื่นของจอแสดงผลจอใดจอหนึ่ง</translation>
 <translation id="3507421388498836150">สิทธิ์ปัจจุบันสำหรับ "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">สแกนหาอุปกรณ์บลูทูธอีกครั้ง</translation>
 <translation id="3508920295779105875">เลือกโฟลเดอร์อื่น...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">ติดตั้งเรียบร้อยแล้ว</translation>
 <translation id="3578594933904494462">เนื้อหาของแท็บนี้กำลังถูกแชร์</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; ต้องการแชร์เครื่องพิมพ์ &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; กับกลุ่มที่คุณเป็นเจ้าของ: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt; หากคุณยอมรับ สมาชิกในกลุ่มทั้งหมดจะสามารถสั่งพิมพ์ไปยังเครื่องพิมพ์ดังกล่าวได้</translation>
+<translation id="357889014807611375">Wi-Fi ที่มีการวัดปริมาณอินเทอร์เน็ต</translation>
 <translation id="3584169441612580296">อ่านและเปลี่ยนแปลงรูปภาพ เพลง และสื่ออื่นๆ จากคอมพิวเตอร์ของคุณ</translation>
 <translation id="3587482841069643663">ทั้งหมด</translation>
 <translation id="358796204584394954">พิมพ์รหัสนี้บน "<ph name="DEVICE_NAME" />" เพื่อจับคู่:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">ป้อน</translation>
 <translation id="3593965109698325041">ข้อจำกัดของชื่อใบรับรอง</translation>
 <translation id="3596235046596950091">เปิดใช้บริการระบบคลาวด์</translation>
+<translation id="3599221874935822507">ยกขึ้น</translation>
 <translation id="3599863153486145794">ล้างประวัติจากอุปกรณ์ที่ลงชื่อเข้าใช้ทั้งหมด บัญชี Google อาจมีประวัติการท่องเว็บรูปแบบอื่นๆ ที่ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="3600051066689725006">ข้อมูลคำขอเว็บ</translation>
 <translation id="3600792891314830896">ปิดเสียงเว็บไซต์ที่เล่นเสียง</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">ดาวน์โหลดโดย &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">แสดง <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;เปิดในแท็บใหม่่</translation>
+<translation id="3615073365085224194">ใช้นิ้วแตะเซ็นเซอร์ลายนิ้วมือ</translation>
 <translation id="3616113530831147358">เสียง</translation>
 <translation id="3616741288025931835">&amp;ล้างข้อมูลการท่องเว็บ...</translation>
 <translation id="3617891479562106823">พื้นหลังไม่พร้อมใช้งาน โปรดลองอีกครั้งภายหลัง</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">หน้าแรก</translation>
 <translation id="3720996970802414353">สลับบัญชี</translation>
 <translation id="3722108462506185496">เกิดข้อผิดพลาดขณะเริ่มบริการเครื่องเสมือน โปรดลองอีกครั้ง</translation>
-<translation id="3723158278575423087">ยินดีต้อนรับสู่ประสบการณ์การใช้ Cast ใน Chromium!</translation>
 <translation id="3725367690636977613">หน้า</translation>
 <translation id="3726137731714254362">การนำโฟลเดอร์ออกจากตรงนี้จะหยุดการแชร์ แต่จะไม่ลบไฟล์</translation>
 <translation id="3727148787322499904">การเปลี่ยนการตั้งค่านี้จะส่งผลกับเครือข่ายที่แชร์ทั้งหมด</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">ข้อมูลบิวด์โดยละเอียด</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{สื่อสารกับอุปกรณ์ USB 1 เครื่อง}other{สื่อสารกับอุปกรณ์ USB # เครื่อง}}</translation>
 <translation id="3765246971671567135">อ่านนโยบายโหมดสาธิตออฟไลน์ไม่ได้</translation>
-<translation id="3766223500670287046">หน้าจอระยะไกล</translation>
 <translation id="3768037234834996183">กำลังซิงค์ค่ากำหนดของคุณ...</translation>
 <translation id="377050016711188788">ไอศกรีม</translation>
 <translation id="3771294271822695279">ไฟล์วิดีโอ</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit</translation>
 <translation id="3857807444929313943">ยกนิ้วขึ้นแล้วแตะอีกครั้ง</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: การซิงค์หยุดชั่วคราว</translation>
-<translation id="3862134173397075045">ยินดีต้อนรับสู่ประสบการณ์การใช้ Cast ใน Chrome!</translation>
 <translation id="3862693525629180217">ยืนยันผ่านเซ็นเซอร์ในเครื่อง</translation>
 <translation id="3862788408946266506">ต้องติดตั้งแอปที่มีแอตทริบิวต์ไฟล์ Manifest ที่ชื่อ "kiosk_only" ในโหมดคีออสก์ของ Chrome OS</translation>
 <translation id="3865414814144988605">ความละเอียด</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">โทรศัพท์ของ Smart Lock มีการเปลี่ยนแปลง</translation>
 <translation id="3927932062596804919">ปฏิเสธ</translation>
 <translation id="3930737994424905957">กำลังค้นหาอุปกรณ์</translation>
+<translation id="3930968231047618417">สีพื้นหลัง</translation>
 <translation id="3933283459331715412">กู้คืนรหัสผ่านที่ลบไปของ <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">เปิดเสี&amp;ยงในแท็บใหม่</translation>
 <translation id="3936925983113350642">รหัสผ่านที่คุณเลือกจะต้องนำมาใช้ในการคืนค่าใบรับรองนี้ในภายหลัง โปรดบันทึกรหัสผ่านไว้ในที่ปลอดภัย</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">นำเข้าจาก IE</translation>
 <translation id="3950820424414687140">ลงชื่อเข้าใช้</translation>
+<translation id="3950828138786918475">แท็บนี้อ่านโฟลเดอร์ในอุปกรณ์ของคุณได้</translation>
 <translation id="3954354850384043518">กำลังดำเนินการ</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> เฮิรตซ์)</translation>
 <translation id="3954953195017194676">คุณไม่มีบันทึกเหตุการณ์ WebRTC ที่จับภาพเมื่อเร็วๆ นี้</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">กำลังคำนวณ...</translation>
 <translation id="3975565978598857337">ติดต่อเซิร์ฟเวอร์ของขอบเขตไม่สำเร็จ</translation>
 <translation id="397703832102027365">กำลังสิ้นสุดการทำงาน...</translation>
+<translation id="3977886311744775419">เครือข่ายประเภทนี้จะไม่ดาวน์โหลดอัปเดตอัตโนมัติ แต่คุณตรวจหาอัปเดตได้ด้วยตนเอง</translation>
 <translation id="3979395879372752341">เพิ่มส่วนขยายใหม่แล้ว (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">เปิดการใช้งาน <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">ประเภทการบันทึกที่ป้อนไม่ถูกต้อง</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">เปิดการใช้งานแตะเพื่อคลิก</translation>
 <translation id="4195643157523330669">เปิดในแท็บใหม่</translation>
 <translation id="4195814663415092787">ดำเนินการต่อจากที่ค้างอยู่</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> บันทึกการเปลี่ยนแปลงลงในไฟล์ต่อไปนี้ได้โดยตรง โดยจะบันทึกการเปลี่ยนแปลงได้ขณะที่แท็บนี้เปิดอยู่เท่านั้น</translation>
 <translation id="4198146608511578238">เพียงแตะไอคอน Launcher ค้างไว้เพื่อพูดคุยกับ Google Assistant</translation>
 <translation id="4200689466366162458">คำที่กำหนดเอง</translation>
 <translation id="4200983522494130825">แ&amp;ท็บใหม่</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">เชื่อมต่อกับเครือข่ายมือถือโดยอัตโนมัติ</translation>
 <translation id="4268025649754414643">การเข้ารหัสคีย์</translation>
 <translation id="4270393598798225102">รุ่น <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">ไม่มีรายการที่ตรงกัน</translation>
 <translation id="4275663329226226506">สื่อ</translation>
 <translation id="4275830172053184480">รีสตาร์ทอุปกรณ์ของคุณ</translation>
 <translation id="4278101229438943600">Assistant พร้อมใช้งานแล้ว</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">เวลา CPU</translation>
 <translation id="4534661889221639075">ลองอีกครั้ง</translation>
 <translation id="4535127706710932914">โปรไฟล์เริ่มต้น</translation>
+<translation id="4535767533210902251">เซ็นเซอร์ลายนิ้วมืออยู่ในแป้นด้านขวาบนของแป้นพิมพ์ โปรดแตะเบาๆ ด้วยนิ้วใดก็ได้</translation>
 <translation id="4538684596480161368">บล็อกปลั๊กอินที่อยู่นอกแซนด์บ็อกซ์ใน <ph name="HOST" /> เสมอ</translation>
 <translation id="4538792345715658285">ติดตั้งโดยนโยบายขององค์กร</translation>
 <translation id="4542520061254486227">อ่านข้อมูลใน <ph name="WEBSITE_1" /> และ <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">เพิ่มเติม...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">จับคู่อุปกรณ์บลูทูธ</translation>
+<translation id="4578012756826807359">ลบข้อมูลการลงชื่อเข้าใช้ของคุณเรียบร้อยแล้ว</translation>
 <translation id="4579581181964204535">ไม่สามารถแคสต์ <ph name="HOST_NAME" /></translation>
 <translation id="4581774856936278355">เกิดข้อผิดพลาดขณะคืนค่า Linux</translation>
 <translation id="4582563038311694664">รีเซ็ตการตั้งค่าทั้งหมด</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">คุกกี้จากหลายๆ ไซต์จะถูกล้างเมื่อออก</translation>
 <translation id="4765582662863429759">อนุญาตให้ Android Messages นำส่งข้อความจากโทรศัพท์ไปยัง Chromebook ของคุณ</translation>
 <translation id="4768332406694066911">คุณมีใบรับรองจากองค์กรเหล่านี้ซึ่งระบุถึงตัวคุณ</translation>
-<translation id="4772404146526168240">ทั้ง 2 หน้าจอ</translation>
 <translation id="4776146737004271126">เปิดการตั้งค่า Android</translation>
 <translation id="4776917500594043016">รหัสผ่านของ <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">ลงชื่อเข้าใช้เพื่อรับบุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ ในอุปกรณ์ทุกเครื่องของคุณ ระบบจะลงชื่อเข้าใช้บริการต่างๆ ของ Google ให้คุณโดยอัตโนมัติด้วย</translation>
 <translation id="4929386379796360314">ปลายทางของการพิมพ์</translation>
 <translation id="4930714375720679147">เปิด</translation>
-<translation id="4931132176527519925">ใช้การมิเรอร์เสมอ</translation>
 <translation id="4932733599132424254">วันที่</translation>
 <translation id="4933484234309072027">ฝังตัวใน <ph name="URL" /></translation>
 <translation id="493571969993549666">เพิ่มผู้ใช้ภายใต้การดูแล</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">เปิดเสียง</translation>
 <translation id="4992458225095111526">ยืนยัน Powerwash</translation>
 <translation id="4992473555164495036">ผู้ดูแลระบบจำกัดวิธีการป้อนข้อมูลที่ใช้ได้เอาไว้</translation>
+<translation id="4992866843815555470">แท่นชาร์จต้องเข้ารับการซ่อม แท่นชาร์จจะดับหากพัดลมไม่ทำงาน</translation>
 <translation id="4992926179187649719">เปิด "Ok Google"</translation>
 <translation id="4994474651455208930">อนุญาตให้ไซต์แจ้งขอเป็นตัวจัดการเริ่มต้นสำหรับโปรโตคอล</translation>
 <translation id="4994754230098574403">กำลังตั้งค่า</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">รหัสดำเนินการ</translation>
 <translation id="5233638681132016545">แท็บใหม่</translation>
 <translation id="5233736638227740678">&amp;วาง</translation>
-<translation id="5234764350956374838">ปิด</translation>
 <translation id="5235050375939235066">ถอนการติดตั้งแอปไหม</translation>
 <translation id="5235750401727657667">แทนที่หน้าที่คุณจะเห็นเมื่อเปิดแท็บใหม่</translation>
 <translation id="5238278114306905396">แอปพลิเคชัน "<ph name="EXTENSION_NAME" />" ถูกลบโดยอัตโนมัติ</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google ขอแนะนำ Chrome</translation>
 <translation id="532247166573571973">อาจไม่สามารถเข้าถึงเซิร์ฟเวอร์ โปรดลองอีกครั้งในภายหลัง</translation>
 <translation id="5324780743567488672">ตั้งค่าเขตเวลาโดยอัตโนมัติโดยใช้ตำแหน่งของคุณ</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> บันทึกการเปลี่ยนแปลงลงในไฟล์ต้นฉบับได้</translation>
 <translation id="5327248766486351172">ชื่อ</translation>
 <translation id="5327570636534774768">อุปกรณ์มีเครื่องหมายกำกับว่าได้รับการจัดการโดยโดเมนอื่น โปรดยกเลิกการจัดสรรอุปกรณ์จากโดเมนนั้นก่อนที่จะตั้งค่าโหมดสาธิต</translation>
 <translation id="532943162177641444">แตะการแจ้งเตือนใน <ph name="PHONE_NAME" /> เพื่อตั้งค่าฮอตสปอตเคลื่อนที่ที่อุปกรณ์นี้ใช้ได้</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> ต้องการที่จะ</translation>
 <translation id="5534304873398226603">ทิ้งรูปภาพหรือวิดีโอ</translation>
 <translation id="5535941515421698170">นำข้อมูลที่มีอยู่ของคุณออกจากอุปกรณ์นี้ด้วย</translation>
-<translation id="5537725057119320332">ส่ง</translation>
 <translation id="5539221284352502426">เซิร์ฟเวอร์ปฏิเสธรหัสผ่านที่คุณป้อน สาเหตุที่เป็นไปได้คือรหัสผ่านสั้นเกินไป ทั้งนี้รหัสผ่านต้องมีตัวเลขหรือสัญลักษณ์อยู่ด้วย และต้องแตกต่างจากรหัสผ่านที่เคยใช้</translation>
 <translation id="5541687815721799001">ใช้แอป</translation>
 <translation id="5542132724887566711">โปรไฟล์</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">ดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้าถึงเว็บไซต์</translation>
 <translation id="6000758707621254961">มีผลการค้นหา "<ph name="SEARCH_TEXT" />" <ph name="RESULT_COUNT" /> รายการ</translation>
 <translation id="6002458620803359783">เสียงที่ต้องการ</translation>
-<translation id="6005695835120147974">เราเตอร์สื่อ</translation>
 <translation id="6006484371116297560">คลาสสิก</translation>
 <translation id="6007240208646052708">ภาษาของคุณไม่มีการค้นหาด้วยเสียง</translation>
 <translation id="6009781704028455063">เซ็นเซอร์ในเครื่อง</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{เครื่องพิมพ์ใหม่บนเครือข่ายของคุณ}other{เครื่องพิมพ์ใหม่บนเครือข่ายของคุณ}}</translation>
 <translation id="6286708577777130801">รายละเอียดรหัสผ่านที่บันทึกไว้</translation>
 <translation id="6289452883081499048">บริการของ Google อย่างเช่น Play ที่ปรับเปลี่ยนในแบบของคุณ</translation>
-<translation id="6290556621549272952">คุณสามารถใช้ฟีเจอร์นี้เพื่อแสดงเนื้อหาจาก Chromium บน TV หรืออุปกรณ์อื่นๆ</translation>
 <translation id="6291949900244949761">ถามเมื่อเว็บไซต์ต้องการเข้าถึงอุปกรณ์ USB (แนะนำ)</translation>
 <translation id="6291953229176937411">&amp;แสดงใน Finder</translation>
 <translation id="6295158916970320988">เว็บไซต์ทั้งหมด</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">ส่ง<ph name="BEGIN_LINK1" />ข้อมูลระบบ<ph name="END_LINK1" />และ<ph name="BEGIN_LINK2" />เมตริก<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">บล็อกเว็บไซต์ไม่ให้เข้าถึงเซ็นเซอร์ตรวจจับความเคลื่อนไหว</translation>
 <translation id="6397094776139756010">ตัวเลือกการซิงค์และการปรับเปลี่ยนในแบบของคุณ</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> จะบันทึกการเปลี่ยนแปลงลงในไฟล์ของโฟลเดอร์ต่อไปนี้ได้โดยตรง โดยจะบันทึกการเปลี่ยนแปลงได้ขณะที่แท็บนี้เปิดอยู่เท่านั้น</translation>
 <translation id="6398715114293939307">นำ Google Play Store ออก</translation>
 <translation id="6398765197997659313">ออกจากการแสดงแบบเต็มหน้าจอ</translation>
 <translation id="6399774419735315745">สายลับ</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">ในบางเว็บไซต์</translation>
 <translation id="6455894534188563617">และโฟลเดอร์ใหม่</translation>
 <translation id="6456394469623773452">ดี</translation>
+<translation id="6456955391422100996">นำโฆษณาออกแล้ว</translation>
 <translation id="645705751491738698">บล็อกการเรียกใช้ JavaScript</translation>
 <translation id="6458701200018867744">อัปโหลดไม่สำเร็จ (<ph name="WEBRTC_LOG_UPLOAD_TIME" />)</translation>
 <translation id="6459488832681039634">ใช้สิ่งที่เลือกเพื่อค้นหา</translation>
 <translation id="6459799433792303855">หน้าต่างที่ใช้งานย้ายไปอยู่หน้าจออื่น</translation>
 <translation id="6460601847208524483">ค้นหาถัดไป</translation>
+<translation id="6461170143930046705">กำลังค้นหาเครือข่าย...</translation>
 <translation id="6463795194797719782">แ&amp;ก้ไข</translation>
 <translation id="6466988389784393586">&amp;เปิดบุ๊กมาร์กทั้งหมด</translation>
 <translation id="6467304607960172345">เพิ่มประสิทธิภาพวิดีโอเต็มหน้าจอ</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">คุณเชื่อมต่ออยู่กับเครือข่าย<ph name="NETWORK_TYPE" /></translation>
 <translation id="6527303717912515753">แชร์</translation>
 <translation id="6528513914570774834">อนุญาตให้ผู้ใช้อุปกรณ์นี้คนอื่นๆ ใช้เครือข่ายนี้ได้</translation>
 <translation id="652948702951888897">ประวัติการเข้าชมใน Chrome</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">ความเร็ว</translation>
 <translation id="6681668084120808868">ถ่ายภาพ</translation>
 <translation id="6681964764822470072">ระบบจะถอนการติดตั้ง "<ph name="APP_NAME" />"</translation>
-<translation id="6685083257944113180">หยุด, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">เปิด Google Play</translation>
 <translation id="6686490380836145850">ปิดแท็บทางด้านขวา</translation>
 <translation id="6686817083349815241">บันทึกรหัสผ่าน</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">เปิดแบบเต็มหน้าจอ</translation>
 <translation id="6845325883481699275">ช่วยปรับปรุงความปลอดภัยของ Chrome</translation>
 <translation id="6848388270925200958">ขณะนี้คุณมีบัตรบางใบที่ใช้ได้ในอุปกรณ์นี้เท่านั้น</translation>
+<translation id="6850286078059909152">สีข้อความ</translation>
 <translation id="6851497530878285708">เปิดใช้แอปแล้ว</translation>
 <translation id="6853388645642883916">โปรแกรมอัปเดตอยู่ในโหมดสลีป</translation>
 <translation id="68541483639528434">ปิดแท็บอื่นๆ</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">เลื่อน/คลิก</translation>
 <translation id="6923633482430812883">เกิดข้อผิดพลาดในการต่อเชื่อมพื้นที่แชร์ โปรดตรวจสอบว่าเซิร์ฟเวอร์ไฟล์ที่คุณกำลังเชื่อมต่ออยู่รองรับ SMBv2 หรือใหม่กว่า</translation>
 <translation id="6930036377490597025">คีย์ความปลอดภัยภายนอกหรือเซ็นเซอร์ในตัว</translation>
-<translation id="6930242544192836755">ระยะเวลา</translation>
 <translation id="693807610556624488">การเขียนไปยังอุปกรณ์ต่อไปนี้เกินขีดจำกัดความยาวสูงสุดของแอตทริบิวต์: "<ph name="DEVICE_NAME" />"</translation>
 <translation id="6941937518557314510">โปรดลงชื่อเข้าใช้ <ph name="TOKEN_NAME" /> เพื่อตรวจสอบสิทธิ์กับ <ph name="HOST_NAME" /> ด้วยใบรับรองของคุณ</translation>
 <translation id="6943176775188458830">ยกเลิกการพิมพ์</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">เครื่องจัดการการชำระเงิน</translation>
 <translation id="6951663584153258142">องค์กรของคุณขอให้อัปเดตอุปกรณ์นี้</translation>
 <translation id="6953878494808481632">ข้อมูลที่เกี่ยวข้อง</translation>
+<translation id="6953916367503892689">{0,plural, =1{ไฟล์: <ph name="FILES" />}other{ไฟล์: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">ตรวจสอบป๊อปอัป</translation>
 <translation id="6957044667612803194">คีย์ความปลอดภัยนี้ไม่รองรับ PIN</translation>
 <translation id="6957231940976260713">ชื่อบริการ</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">หน้านี้ไม่สามารถแปลได้</translation>
 <translation id="7254951428499890870">คุณแน่ใจไหมว่าต้องการเปิด "<ph name="APP_NAME" />" ในโหมดการวินิจฉัย</translation>
 <translation id="7255002516883565667">ขณะนี้คุณมีบัตรใบเดียวที่ใช้ได้ในอุปกรณ์นี้เท่านั้น</translation>
-<translation id="7255220508626648026">กำลังแคสต์: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">แตะคีย์ความปลอดภัยอีกครั้งเพื่อยืนยันการรีเซ็ต ระบบจะลบข้อมูลทั้งหมดที่เก็บไว้ในคีย์ความปลอดภัย รวมถึง PIN ของคีย์ด้วย</translation>
 <translation id="7255935316994522020">นำไปใช้</translation>
 <translation id="7256069762010468647">เว็บไซต์กำลังใช้กล้องของคุณ</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">การพัฒนา</translation>
 <translation id="7456847797759667638">เปิดตำแหน่ง...</translation>
 <translation id="7458168200501453431">ใช้โปรแกรมตรวจตัวสะกดแบบเดียวกับ Google Search ข้อความที่คุณพิมพ์ในเบราว์เซอร์จะส่งไปยัง Google</translation>
+<translation id="7460045493116006516">ธีมที่คุณติดตั้งอยู่ตอนนี้</translation>
 <translation id="7461924472993315131">ตรึง</translation>
 <translation id="746216226901520237">โทรศัพท์จะปลดล็อก <ph name="DEVICE_TYPE" /> ของคุณในครั้งถัดไป คุณปิด Smart Lock ได้ในการตั้งค่า</translation>
 <translation id="7463006580194749499">เพิ่มบุคคล</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">แท็บใหม่</translation>
 <translation id="7556033326131260574">Smart Lock ไม่สามารถยืนยันบัญชีของคุณได้ โปรดพิมพ์รหัสผ่านเพื่อเข้าใช้งาน</translation>
 <translation id="7556242789364317684">ขออภัย <ph name="SHORT_PRODUCT_NAME" /> ไม่สามารถกู้คืนการตั้งค่าของคุณได้ หากต้องการแก้ไขข้อผิดพลาด <ph name="SHORT_PRODUCT_NAME" /> ต้องรีเซ็ตอุปกรณ์ของคุณด้วย Powerwash</translation>
+<translation id="7559444627302317199">โปรดตรวจสอบการเชื่อมต่อเครือข่ายแล้วลองใหม่</translation>
 <translation id="7559719679815339381">โปรดรอสักครู่....แอปคีออสก์อยู่ในระหว่างการอัปเดต โปรดอย่านำ USB สติ๊กออก</translation>
 <translation id="7561196759112975576">ทุกครั้ง</translation>
 <translation id="7563991800558061108">ในการกู้คืนจากข้อผิดพลาดนี้ คุณจะต้องลงชื่อเข้าใช้บัญชี Google
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">ทำซ้ำ</translation>
 <translation id="7887864092952184874">จับคู่เมาส์บลูทูธแล้ว</translation>
 <translation id="7889565820482017512">ขนาดการแสดงผล</translation>
-<translation id="7889966925761734854">ค้นหา</translation>
 <translation id="7893008570150657497">เข้าถึงรูปภาพ เพลง และสื่ออื่นๆ จากคอมพิวเตอร์ของคุณ</translation>
 <translation id="7893153962594818789"><ph name="DEVICE_TYPE" /> ปิดบลูทูธอยู่ โปรดป้อนรหัสผ่านแล้วเปิดบลูทูธ</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (ค่าเริ่มต้น)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">เก็บในแถบเครื่องมือ</translation>
 <translation id="7898725031477653577">แปลทุกครั้ง</translation>
 <translation id="790040513076446191">จัดการการตั้งค่าที่เกี่ยวข้องกับความเป็นส่วนตัว</translation>
-<translation id="7902874111237641165">เคลื่อนไหวราบรื่น [เบต้า]</translation>
 <translation id="7903345046358933331">หน้าไม่ตอบสนอง คุณสามารถรอจนกระทั่งหน้าตอบสนอง หรือปิดหน้านั้น</translation>
 <translation id="7903742244674067440">คุณมีใบรับรองของไฟล์ซึ่งระบุตัวตนของผู้ออกใบรับรองเหล่านี้</translation>
 <translation id="7903925330883316394">ยูทิลิตี: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">อ่านข้อความทั้งหมดที่พูดโดยใช้เสียงสังเคราะห์</translation>
 <translation id="8037357227543935929">ขอ (ค่าเริ่มต้น)</translation>
 <translation id="803771048473350947">ไฟล์</translation>
+<translation id="8042142357103597104">ความทึบแสงของข้อความ</translation>
 <translation id="8044899503464538266">ช้า</translation>
 <translation id="8045253504249021590">หยุดการซิงค์ผ่าน Google แดชบอร์ดแล้ว</translation>
 <translation id="8045923671629973368">ป้อนรหัสแอปพลิเคชันหรือ URL เว็บสโตร์</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />คุณปิดบริการนี้ได้ในการตั้งค่า<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN ไม่ตรงกัน</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> ใช้การตั้งค่าพร็อกซีจากส่วนขยายอยู่</translation>
-<translation id="8099495042588009598">สิทธิ์อื่นๆ</translation>
 <translation id="8101987792947961127">ต้องใช้ Powerwash ในการรีบูตครั้งถัดไป</translation>
 <translation id="8102159139658438129">ไปที่<ph name="LINK_BEGIN" />การตั้งค่า<ph name="LINK_END" />เพื่อดูตัวเลือกสำหรับโทรศัพท์ที่เชื่อมต่อ</translation>
 <translation id="8104696615244072556">Powerwash อุปกรณ์ <ph name="IDS_SHORT_PRODUCT_NAME" /> ของคุณและเปลี่ยนกลับไปใช้เวอร์ชันก่อนหน้า</translation>
@@ -4773,8 +4788,10 @@
     ฉันคิดว่าไม่ควรบล็อกเว็บไซต์นี้</translation>
 <translation id="8184288427634747179">สลับเป็น <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">ข้อมูลเพิ่มเติม</translation>
+<translation id="8184472985242519288">แบบเดียวกัน</translation>
 <translation id="8185331656081929126">แสดงการแจ้งเตือนเมื่อตรวจพบเครื่องพิมพ์ใหม่บนเครือข่าย</translation>
 <translation id="8186609076106987817">เซิร์ฟเวอร์ไม่พบไฟล์</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> อ่านไฟล์ทั้งหมดในโฟลเดอร์ต่อไปนี้ได้ โดยจะดูการเปลี่ยนแปลงในโฟลเดอร์ได้ขณะที่แท็บนี้เปิดอยู่เท่านั้น</translation>
 <translation id="8188389033983459049">ตรวจสอบการตั้งค่าอุปกรณ์และเปิดบลูทูธเพื่อดำเนินการต่อ</translation>
 <translation id="8190193592390505034">กำลังเชื่อมต่อกับ <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">จัดการแอปพลิเคชัน ส่วนขยาย และธีมของคุณ</translation>
@@ -4878,7 +4895,6 @@
 <translation id="833986336429795709">เลือกแอปที่จะเปิดลิงก์นี้</translation>
 <translation id="8342861492835240085">เลือกคอลเล็กชัน</translation>
 <translation id="834290227245955730">PIN ไม่ถูกต้อง ป้อนได้อีก <ph name="RETRIES" /> ครั้ง</translation>
-<translation id="8343956361364550006">ใช้แบนด์วิดท์สูงเพื่อให้ได้วิดีโอหรือภาพเคลื่อนไหวที่ดีที่สุด ผู้ที่มีการเชื่อมต่อช้าอาจไม่เห็นเนื้อหาของคุณ</translation>
 <translation id="8351419472474436977">ส่วนขยายนี้ได้เข้าควบคุมการตั้งค่าพร็อกซีของคุณ ซึ่งหมายความว่าส่วนขยายดังกล่าวสามารถเปลี่ยนแปลง ทำลาย หรือดักฟังทุกอย่างที่คุณทำในระบบออนไลน์ได้ หากคุณไม่ทราบที่มาของการเปลี่ยนแปลงนี้ คุณอาจไม่ต้องการให้มีการเปลี่ยนแปลงดังกล่าวเกิดขึ้น</translation>
 <translation id="8351630282875799764">ไม่ได้ชาร์จแบตเตอรี่</translation>
 <translation id="835238322900896202">เกิดข้อผิดพลาดระหว่างถอนการติดตั้ง โปรดถอนการติดตั้งผ่านเทอร์มินัล</translation>
@@ -4911,9 +4927,11 @@
 <translation id="839736845446313156">ลงทะเบียน</translation>
 <translation id="8398877366907290961">ดำเนินการต่อ</translation>
 <translation id="8400146488506985033">จัดการบุคคล</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> บันทึกการเปลี่ยนแปลงลงในไฟล์ของโฟลเดอร์ต่อไปนี้ได้โดยตรง โดยจะบันทึกการเปลี่ยนแปลงได้ขณะที่แท็บนี้เปิดอยู่เท่านั้น</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ถามก่อน (แนะนำ)</translation>
 <translation id="8418445294933751433">แ&amp;สดงเป็นแถบ</translation>
+<translation id="8418905021510211421">หน้านี้อ่านโฟลเดอร์ในอุปกรณ์ของคุณได้</translation>
 <translation id="8419098111404128271">ผลการค้นหาของ "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">ยินดีต้อนรับสู่ <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">เปลี่ยน</translation>
@@ -4933,6 +4951,7 @@
 <translation id="8438566539970814960">ปรับปรุงการค้นหาและการท่องเว็บให้ดียิ่งขึ้น</translation>
 <translation id="8439506636278576865">เสนอที่จะแปลหน้าต่างๆ ที่เป็นภาษานี้</translation>
 <translation id="8440630305826533614">แอป Linux</translation>
+<translation id="844241640324986723">การลบข้อมูลการลงชื่อเข้าใช้ของคุณล้มเหลว</translation>
 <translation id="8443338615972234259">โปรดสร้างบัญชีใหม่ให้ผู้ใช้ภายใต้การควบคุมดูแลตอนนี้เลย</translation>
 <translation id="8446884382197647889">ดูข้อมูลเพิ่มเติม</translation>
 <translation id="8447409163267621480">รวมปุ่ม Ctrl หรือ Alt</translation>
@@ -4948,8 +4967,6 @@
 <translation id="8461914792118322307">พร็อกซี</translation>
 <translation id="8463215747450521436">ผู้ใช้ภายใต้การดูแลรายนี้อาจถูกลบหรือปิดใช้งานโดยผู้จัดการ โปรดติดต่อผู้จัดการหากคุณต้องการที่จะดำเนินการการลงชื่อเข้าใช้ในฐานะผู้ใช้รายนี้ต่อไป</translation>
 <translation id="846374874681391779">แถบดาวน์โหลด</translation>
-<translation id="8463807869745732775">"&gt;
-    ข้อมูลการลงชื่อเข้าใช้ที่เก็บไว้ในคีย์ความปลอดภัย</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> ปิดอยู่</translation>
 <translation id="8464132254133862871">บัญชีผู้ใช้นี้ไม่ได้รับสิทธิ์สำหรับบริการนี้</translation>
 <translation id="8465252176946159372">ไม่ถูกต้อง</translation>
@@ -5015,6 +5032,7 @@
 <translation id="8569002732135253578">กำลังพิมพ์ <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">ไม่พบปลายทาง</translation>
 <translation id="8571213806525832805">4 สัปดาห์ที่แล้ว</translation>
+<translation id="8573403125070227391">โฆษณานี้ใช้ทรัพยากรมากเกินไปสำหรับอุปกรณ์ของคุณ Chrome จึงนำโฆษณานี้ออก</translation>
 <translation id="8574990355410201600">อนุญาตให้เปิดเสียงใน <ph name="HOST" /> เสมอ</translation>
 <translation id="8575286410928791436">กด <ph name="KEY_EQUIVALENT" /> ค้างไว้เพื่อออก</translation>
 <translation id="8578639784464423491">ต้องไม่เกิน 99 ตัวอักษร</translation>
@@ -5038,13 +5056,13 @@
 <translation id="8609465669617005112">เลื่อนขึ้น</translation>
 <translation id="8610103157987623234">รูปแบบไม่ถูกต้อง โปรดลองอีกครั้ง</translation>
 <translation id="8615618338313291042">แอปพลิเคชันที่ไม่ระบุตัวตน: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">เงาตกกระทบ</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">สถานะการโรมมิ่ง</translation>
 <translation id="8620765578342452535">กำหนดค่าการเชื่อมต่อเครือข่าย</translation>
 <translation id="8621866727807194849">มีซอฟต์แวร์อันตรายในคอมพิวเตอร์ของคุณ Chrome กำลังนำซอฟต์แวร์ดังกล่าวออก คืนการตั้งค่า และปิดใช้ส่วนขยาย ซึ่งจะช่วยให้เบราว์เซอร์กลับมาทำงานเป็นปกติอีกครั้ง</translation>
 <translation id="8621979332865976405">แชร์ทั้งหน้าจอ</translation>
 <translation id="862542460444371744">&amp;ส่วนขยาย</translation>
-<translation id="8627151598708688654">เลือกแหล่งที่มา</translation>
 <translation id="862727964348362408">ระงับไว้ชั่วคราว</translation>
 <translation id="862750493060684461">แคช CSS</translation>
 <translation id="8627795981664801467">สำหรับการเชื่อมต่อที่ปลอดภัยเท่านั้น</translation>
@@ -5098,6 +5116,7 @@
 <translation id="8688579245973331962">หากไม่เห็นชื่อของคุณ</translation>
 <translation id="8688591111840995413">รหัสผ่านไม่ถูกต้อง</translation>
 <translation id="8688672835843460752">มีอยู่</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">เปิด&amp;ตำแหน่ง...</translation>
 <translation id="869884720829132584">เมนูของแอปพลิเคชัน</translation>
 <translation id="869891660844655955">วันหมดอายุ</translation>
@@ -5261,6 +5280,7 @@
 <translation id="891365694296252935">ส่งข้อมูลการใช้งานและการวินิจฉัย ปัจจุบันอุปกรณ์นี้ส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ โดยจะไม่มีการใช้ข้อมูลนี้ในการระบุชื่อบุตรหลานของคุณ และจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android เจ้าของเป็นผู้บังคับใช้การตั้งค่านี้ หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปสำหรับบุตรหลาน ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของบุตรหลาน <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">กำลังโหลดคำแนะนำ</translation>
 <translation id="8916476537757519021">เฟรมย่อยแบบไม่ระบุตัวตน: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> อ่านโฟลเดอร์ในอุปกรณ์ของคุณได้</translation>
 <translation id="8919275547519617350">ลงชื่อเข้าใช้และเปิดการซิงค์เพื่อรับรหัสผ่านทั้งหมดในอุปกรณ์ทุกเครื่องของคุณ</translation>
 <translation id="8921366488406707015">กำลังยืนยันคีย์ความปลอดภัย...</translation>
 <translation id="8922013791253848639">อนุญาตโฆษณาในไซต์นี้เสมอ</translation>
@@ -5290,7 +5310,6 @@
 <translation id="8965037249707889821">ป้อนรหัสผ่านเก่า</translation>
 <translation id="8966870118594285808">เปิดแท็บอีกครั้งหากปิดไปโดยไม่ได้ตั้งใจ</translation>
 <translation id="8967866634928501045">กด Alt Shift A เพื่อแสดง</translation>
-<translation id="8970203673128054105">ดูรายการโหมดแคสต์</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">โปรดตรวจสอบกับผู้ดูแลระบบเครือข่ายของคุณเพื่อให้แน่ใจว่าไฟร์วอลล์ไม่ได้บล็อกการดาวน์โหลดจากเซิร์ฟเวอร์ของ Google</translation>
 <translation id="8973557916016709913">นำระดับการซูมออก</translation>
@@ -5439,6 +5458,7 @@
 <translation id="9214520840402538427">อ๊ะ! การเริ่มแอตทริบิวต์เวลาการติดตั้งได้หมดเวลาแล้ว โปรดติดต่อตัวแทนการสนับสนุึนของคุณ</translation>
 <translation id="9214695392875603905">คัปเค้ก</translation>
 <translation id="9215293857209265904">เพิ่ม "<ph name="EXTENSION_NAME" />" แล้ว</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> จะบันทึกการเปลี่ยนแปลงลงในไฟล์ต่อไปนี้ได้โดยตรง โดยจะบันทึกการเปลี่ยนแปลงได้ขณะที่แท็บนี้เปิดอยู่เท่านั้น</translation>
 <translation id="9218430445555521422">ตั้งเป็นค่าเริ่มต้น</translation>
 <translation id="9219103736887031265">ภาพ</translation>
 <translation id="9220525904950070496">ลบบัญชี</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index 32dfe0e..99014a5 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Sanal makine başlatılırken hata oluştu. Lütfen tekrar deneyin.</translation>
 <translation id="1089439967362294234">Şifreyi Değiştir</translation>
 <translation id="1090126737595388931">Çalışan Hiç Arka Plan Uygulama Yok</translation>
+<translation id="1090290614672149983">Değişiklikler orijinal dosyaya kaydedilsin mi?</translation>
 <translation id="1090918500949388876">Ekranınız açıkken "Ok Google" diyerek istediğiniz zaman Asistanınıza erişin</translation>
 <translation id="1091767800771861448">Atlamak için ESCAPE tuşuna basın (Yalnızca resmi olmayan sürümler).</translation>
 <translation id="1093457606523402488">Görünür Ağlar:</translation>
 <translation id="1094607894174825014">Şu cihazda geçersiz bir ofset değeriyle okuma veya yazma işlemi istendi: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Oturum açmadan önce <ph name="NETWORK_ID" /> ağını etkinleştirmek için lütfen Misafir olarak giriş yapın</translation>
+<translation id="110029732810301672">Bu sekmenin orijinal dosyalara kaydetmesine izin verilir.</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> dilini daima çevir</translation>
 <translation id="1108600514891325577">D&amp;urdur</translation>
 <translation id="1110155001042129815">Bekle</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Güneş Gözlüğü</translation>
 <translation id="1151917987301063366"><ph name="HOST" /> sitesinin sensörlere erişmesine her zaman izin ver</translation>
 <translation id="1153356358378277386">Eşlenen cihazlar</translation>
-<translation id="1156488781945104845">Şu anki saat:</translation>
 <translation id="1161575384898972166">Lütfen istemci sertifikasını dışa aktarmak için <ph name="TOKEN_NAME" /> cihazında oturum açın.</translation>
 <translation id="1163931534039071049">&amp;Çerçeve kaynağını görüntüle</translation>
 <translation id="1164674268730883318"><ph name="DEVICE_TYPE" /> için Smart Lock kapatılsın mı?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player Depolama ayarları</translation>
 <translation id="1274997165432133392">Çerezler ve diğer site verileri</translation>
 <translation id="127668050356036882">Tüm pencerelerinizi kapatın</translation>
-<translation id="1277908057200820621">Cihaz listesini görüntüle</translation>
 <translation id="1280820357415527819">Mobil ağlar aranıyor</translation>
 <translation id="1285320974508926690">Bu siteyi hiçbir zaman çevirme</translation>
 <translation id="1285484354230578868">Verileri Google Drive hesabınızda depolama</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Ev ağı, dolaşımda değil</translation>
 <translation id="1316136264406804862">Aranıyor...</translation>
 <translation id="1316495628809031177">Senkronizasyon duraklatıldı</translation>
+<translation id="1317637799698924700">Yuva istasyonunuz USB Type-C uyumlu modda çalışır.</translation>
 <translation id="1322046419516468189">Kayıtlı şifreleri <ph name="SAVED_PASSWORDS_STORE" /> üzerinde görüntüleyin ve yönetin</translation>
 <translation id="1326317727527857210">Diğer cihazlarınızdaki sekmelerinize ulaşmak için Chrome'da oturum açın.</translation>
 <translation id="1327074568633507428">Google Cloud Print'teki yazıcı</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="BEGIN_LINK" />Tarayıcınız<ph name="END_LINK" />, <ph name="ENROLLMENT_DOMAIN" /> tarafından yönetilmektedir</translation>
 <translation id="1366177842110999534"><ph name="DEVICE_TYPE" /> cihazınızda Linux araçlarını, düzenleyicilerini ve IDE'lerini çalıştırın. &lt;a target="_blank" href="<ph name="URL" />"&gt;Daha fazla bilgi&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Dosya seç</translation>
+<translation id="1370749010280229230">Yuvaya takılı ekranda bir sorun var</translation>
 <translation id="1371301976177520732">Yer işaretleriniz, şifreleriniz, geçmişiniz ve daha fazlası tüm cihazlarınızda sizi bekliyor</translation>
 <translation id="1372841398847029212">Hesabınızla senkronize edin</translation>
 <translation id="1374844444528092021">"<ph name="NETWORK_NAME" />" ağı için gereken sertifika yüklenmemiş veya artık geçerli değil. Lütfen yeni bir sertifika alın ve tekrar bağlanmayı deneyin.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Web Sayfası, Tek Dosya</translation>
 <translation id="1451917004835509682">Denetlenen Kişi Ekle</translation>
 <translation id="1454223536435069390">Ekr&amp;an görüntüsü al</translation>
+<translation id="1458243790901188746">{0,plural, =1{Klasör: <ph name="DIRECTORIES" />}other{Klasörler: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Uzantılar tarafından eklenen arama motorları</translation>
 <translation id="146000042969587795">Bu çerçeve, güvenli olmayan içerik barındırdığı için engellendi.</translation>
 <translation id="146219525117638703">ONC Durumu</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Giriş seçeneklerini göster</translation>
 <translation id="1651008383952180276">Aynı parolayı iki kez girmelisiniz</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{İstediğiniz yerden yazdırma işlemi yapabilmek için yazıcıyı Google Cloud Print'e ekleyin.}other{İstediğiniz yerden yazdırma işlemi yapabilmek için # yazıcıyı Google Cloud Print'e ekleyin.}}</translation>
+<translation id="1656528038316521561">Arka plan şeffaflığı</translation>
 <translation id="1657406563541664238">Google'a otomatik olarak kullanım istatistikleri ve kilitlenme raporları göndererek <ph name="PRODUCT_NAME" /> ürününü iyileştirmemize yardımcı olun.</translation>
 <translation id="1658424621194652532">Bu sayfa mikrofonunuza erişiyor.</translation>
 <translation id="1660204651932907780">Sitelerin ses çalmasına izin ver (önerilir)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" />, Güvenlik Anahtarınızın markasını ve modelini görmek istiyor</translation>
 <translation id="1679068421605151609">Geliştirici Araçları</translation>
 <translation id="1679806121152819234">PluginVm</translation>
+<translation id="1679810534535368772">Çıkmak istediğinizden emin misiniz?</translation>
 <translation id="167983332380191032">Yönetim hizmeti HTTP hatası gönderdi.</translation>
 <translation id="1680849702532889074">Linux uygulamanızın yüklenmesi sırasında bir hata oluştu.</translation>
 <translation id="16815041330799488">Sitelerin panoya kopyalanan metin ve resimleri görmesine izin verme</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Korunan Medya Tanımlayıcı</translation>
 <translation id="175196451752279553">&amp;Kapatılan sekmeyi yeniden aç</translation>
 <translation id="1753905327828125965">En Çok Ziyaret Edilenler</translation>
+<translation id="1755601632425835748">Metin boyutu</translation>
 <translation id="1756681705074952506">Giriş yöntemi</translation>
 <translation id="1757301747492736405">Yüklemeyi kaldırma işlemi beklemede</translation>
 <translation id="175772926354468439">Temayı etkinleştir</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">Daha &amp;küçük</translation>
 <translation id="1919345977826869612">Reklamlar</translation>
 <translation id="1919814239594435008">Korumalı alan içinde olmayan eklentiye izin verildi</translation>
+<translation id="1920390473494685033">Kişiler</translation>
 <translation id="1921050530041573580">Telefonunuzu Mesajlar ile eşleyin</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748"><ph name="IDS_SHORT_PRODUCT_NAME" /> ürününde Google'ın akıllı yaklaşımını elde edin</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Gizli Sekmesi: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> alanındaki <ph name="PEPPER_PLUGIN_NAME" /> eklentisi bilgisayarınıza erişmek istiyor</translation>
 <translation id="2178614541317717477">CA Uzlaşması</translation>
+<translation id="2179849162388791084">Güvenlik anahtarınızdan oturum açma bilgisi alma işlemi başarısız oldu.</translation>
 <translation id="218070003709087997">Yazdırılacak kopya sayısını göstermek için rakam kullanın (1 - 999 arası).</translation>
 <translation id="2184515124301515068">Sitelerin ne zaman ses çalacağını Chrome'un seçmesine izin verin (önerilir)</translation>
 <translation id="2187895286714876935">Sunucu Sertifikası İçe Aktarma Hatası</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Tüm çerezler ve site verileri</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 öğe kopyalandı}other{# öğe kopyalandı}}</translation>
 <translation id="2278562042389100163">Tarayıcı penceresini aç</translation>
-<translation id="2279874276457403668">Bir seferde sadece tek bir oturum oluşturulabilir.</translation>
 <translation id="2280486287150724112">Sağ kenar boşluğu</translation>
 <translation id="2282146716419988068">GPU İşlemi</translation>
 <translation id="2282155092769082568">Otomatik yapılandırma URL'si:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Kilit ekranı notları otomatik olarak <ph name="LOCK_SCREEN_APP_NAME" /> uygulamasına kaydedilir. En yeni notunuz kilit ekranında kalır.</translation>
 <translation id="2353297238722298836">Kamera ve mikrofona izin verildi</translation>
 <translation id="2356070529366658676">Sor</translation>
-<translation id="2357949918965361754">Bu özelliği, Chrome'daki içerikleri TV'nizde ve diğer cihazlarda görüntülemek için kullanabilirsiniz.</translation>
 <translation id="2359345697448000899">Araçlar menüsünden Uzantılar'ı tıklayarak uzantılarınızı yönetin.</translation>
 <translation id="2359808026110333948">Devam et</translation>
 <translation id="236117173274098341">Optimize et</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Kuruluşunuz bu cihazı hemen güncellemenizi gerektiriyor</translation>
 <translation id="2439545803278355377">Yeni PIN'inizi girin. PIN en az dört karakter uzunluğunda olmalıdır ve harflerle rakamların yanı sıra diğer karakterleri içerebilir.</translation>
 <translation id="2440604414813129000">Ka&amp;ynağı görüntüle</translation>
+<translation id="2442916515643169563">Metin gölgesi</translation>
 <translation id="2444119669991608829">Sayfa <ph name="LANGUAGE" /> Değil mi?</translation>
 <translation id="2445081178310039857">Uzantı kök dizini gerekiyor.</translation>
 <translation id="2445484935443597917">Yeni Profil Oluştur</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Şundan Sonra Değil:</translation>
 <translation id="2739191690716947896">Hata ayıkla</translation>
 <translation id="2739240477418971307">Erişilebilirlik ayarlarını değiştirme</translation>
+<translation id="274029851662193272">Bastırılmış</translation>
 <translation id="2740393541869613458">Denetlenen kullanıcının ziyaret ettiği web sitelerini inceleyebilir ve</translation>
 <translation id="2741912629735277980">Giriş ekranında kullanıcı arayüzünü görüntüle</translation>
 <translation id="274290345632688601">Linux uygulamaları ve dosyaları geri yükleniyor</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Kısayol zaten mevcut</translation>
 <translation id="2807517655263062534">İndirdiğiniz dosyalar burada görünür</translation>
 <translation id="2809586584051668049">ve diğer <ph name="NUMBER_ADDITIONAL_DISABLED" /> öğe</translation>
+<translation id="2812049959647166806">Thunderbolt desteklenmiyor</translation>
 <translation id="2812944337881233323">Oturumu kapatıp tekrar açmayı deneyin</translation>
 <translation id="2812989263793994277">Hiçbir resmi gösterme</translation>
 <translation id="281390819046738856">İstek imzalanamadı.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Sağlayıcı</translation>
 <translation id="2844169650293029770">USB-C cihaz (sol ön bağlantı noktası)</translation>
 <translation id="2845382757467349449">Yer İşareti Çubuğunu Her Zaman Göster</translation>
-<translation id="2847759467426165163">Şuraya yayınla</translation>
 <translation id="284805635805850872">Zararlı yazılım kaldırılsın mı?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Temizleme işlemi başarısız oldu</translation>
@@ -1297,6 +1305,7 @@
 Sunucunun mesajı: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Medya Galerisini Dizine Göre Ekle</translation>
 <translation id="2910318910161511225">Bir ağa bağlanın ve tekrar deneyin</translation>
+<translation id="2910518940971897750">Orijinal dosyaya kaydet</translation>
 <translation id="2913331724188855103">Sitelerin, çerez verilerini kaydetmelerine ve okumalarına izin ver (önerilir)</translation>
 <translation id="2915102088417824677">Etkinlik günlüğünü göster</translation>
 <translation id="2915873080513663243">Otomatik tarama</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">MIDI cihazlar</translation>
 <translation id="3015639418649705390">Şimdi yeniden başlat</translation>
 <translation id="3016329696181678353"><ph name="PRINTER_NAME" /> otomatik olarak yapılandırılamıyor. Lütfen gelişmiş yazıcı ayrıntılarını belirtin.</translation>
+<translation id="3016381065346027039">Günlük girişi yok</translation>
 <translation id="3016641847947582299">Bileşen güncellendi</translation>
 <translation id="3016780570757425217">Konumunuzu bilme</translation>
 <translation id="3017079585324758401">Arka plan</translation>
 <translation id="3020183492814296499">Kısayollar</translation>
 <translation id="3020990233660977256">Seri Numarası: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Kelebek</translation>
+<translation id="3021408157810018664">Değişiklikler orijinal dosyalara kaydedilsin mi?</translation>
 <translation id="3021426244864538700">Bu sitenin verilerine erişiliyor</translation>
 <translation id="3021678814754966447">Çerçeve Kaynağını &amp;Görüntüle</translation>
 <translation id="3022978424994383087">Anlaşılmadı.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Ayrıca, oturum açmayı atlayabilir ve <ph name="LINK_START" />misafir olarak göz atabilirsiniz<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Bir site, video girişine erişiyor</translation>
 <translation id="3177909033752230686">Sayfanın Dili:</translation>
+<translation id="3179982752812949580">Metin yazı tipi</translation>
 <translation id="3181954750937456830">Gizli Göz Atma (sizi ve cihazınızı tehlikelerden korur)</translation>
 <translation id="3182749001423093222">Yazım denetimi</translation>
 <translation id="3183139917765991655">Profil İçe Aktarıcısı</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Pencere olarak aç</translation>
 <translation id="3278001907972365362">Google Hesabınız/Hesaplarınız işlem gerektiriyor</translation>
 <translation id="3279230909244266691">Bu işlem birkaç dakika sürebilir. Sanal makine başlatılıyor.</translation>
-<translation id="3279741024917655738">Tam ekran videoları şurada göster:</translation>
 <translation id="3280237271814976245">Farklı k&amp;aydet...</translation>
 <translation id="3280243678470289153">Chrome'da Kal</translation>
 <translation id="3281892622610078515">Karantinaya alınacak dosyalar ve programlar:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Arama sonucu bulunamadı</translation>
 <translation id="3305389145870741612">Biçimlendirme işlemi birkaç saniye sürebilir. Lütfen bekleyin.</translation>
 <translation id="3305661444342691068">PDF'yi Önizlemede Aç</translation>
-<translation id="3306684685104080068">Google Hangouts'ta bulut tabanlı hizmetlere yayın yapmayı etkinleştirin.</translation>
+<translation id="3307871847038842490">Bu sayfanın orijinal dosyalara kaydetmesine izin verilir.</translation>
 <translation id="3308006649705061278">Kuruluş Birimi (OU)</translation>
 <translation id="3308116878371095290">Bu sayfanın çerezleri ayarlaması engellenmiştir.</translation>
 <translation id="3308134619352333507">Düğmeyi Gizle</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Hesap kurulumu iptal edilsin mi?</translation>
 <translation id="3464012987031883895">Bir site, ses girişine erişiyor</translation>
 <translation id="346431825526753">Bu hesap çocuklar içindir ve <ph name="CUSTODIAN_EMAIL" /> tarafından yönetilmektedir</translation>
-<translation id="3468275649641751422">Video veya ses dosyasını canlı oynatma</translation>
 <translation id="3468999815377931311">Android telefon</translation>
 <translation id="3470442499439619530">Bu Kullanıcıyı Kaldır</translation>
 <translation id="3473479545200714844">Ekran büyüteci</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Uzaklaştır</translation>
 <translation id="3497560059572256875">Doodle Paylaş</translation>
 <translation id="3505030558724226696">Cihaz erişimini iptal et</translation>
+<translation id="3505635633742443645">USB Type-C bağlantı noktası video çıkışı için kullanıldığında, yuvanın HDMI bağlantı noktası kullanılamaz. Lütfen ekranlardan biri için farklı bir bağlantı noktası kullanın.</translation>
 <translation id="3507421388498836150">"<ph name="EXTENSION_NAME" />" için Geçerli İzinler</translation>
 <translation id="3507888235492474624">Bluetooth cihazları yeniden tara</translation>
 <translation id="3508920295779105875">Başka Bir Klasör Seçin...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Başarıyla yüklendi</translation>
 <translation id="3578594933904494462">Bu sekmenin içeriği paylaşılıyor.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt;, bir yazıcıyı (&lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt;) sahibi olduğunuz bir grupla paylaşmak istiyor: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Kabul ederseniz tüm grup üyeleri yazdırma işlemlerini o yazıcıdan yaptırabilecek.</translation>
+<translation id="357889014807611375">sayaçlı kablosuz ağ</translation>
 <translation id="3584169441612580296">Bilgisayarınızdaki fotoğrafları, müzikleri ve diğer medyaları okuma ve değiştirme</translation>
 <translation id="3587482841069643663">Tümü</translation>
 <translation id="358796204584394954">Eşlemek için "<ph name="DEVICE_NAME" />" cihazında şu kodu yazın:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Gir</translation>
 <translation id="3593965109698325041">Sertifika Adı Kısıtlamaları</translation>
 <translation id="3596235046596950091">Bulut hizmetlerini etkinleştir</translation>
+<translation id="3599221874935822507">Yükseltilmiş</translation>
 <translation id="3599863153486145794">Oturumunuzun açık olduğu tüm cihazlarda geçmişi temizler. Google Hesabınızın <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> adresinde başka biçimlerde tarama geçmişi olabilir.</translation>
 <translation id="3600051066689725006">Web istek bilgisi</translation>
 <translation id="3600792891314830896">Ses çalan sitelerin sesini kapat</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt; tarafından indirildi</translation>
 <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> Klasörünü Göster</translation>
 <translation id="3613422051106148727">Yeni sekmede &amp;aç</translation>
+<translation id="3615073365085224194">Parmağınızla parmak izi sensörüne dokunun</translation>
 <translation id="3616113530831147358">Ses</translation>
 <translation id="3616741288025931835">Tarama Verilerini &amp;Temizle...</translation>
 <translation id="3617891479562106823">Arka planlar kullanılamıyor. Daha sonra tekrar deneyin.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Ana sayfa</translation>
 <translation id="3720996970802414353">Yine de değiştir</translation>
 <translation id="3722108462506185496">Sanal makine hizmeti başlatılırken hata oluştu. Lütfen tekrar deneyin.</translation>
-<translation id="3723158278575423087">Chromium'da Google Cast deneyimine hoş geldiniz!</translation>
 <translation id="3725367690636977613">sayfa</translation>
 <translation id="3726137731714254362">Klasörlerin buradan kaldırılması paylaşımı durdurur, ancak dosyaların silinmesine neden olmaz.</translation>
 <translation id="3727148787322499904">Bu ayarı değiştirmek tüm paylaşılan ağları etkiler</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Ayrıntılı derleme bilgileri</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Bir USB cihazla iletişim kurma}other{# USB cihazla iletişim kurma}}</translation>
 <translation id="3765246971671567135">Çevrimdışı demo modu politikası okunamadı.</translation>
-<translation id="3766223500670287046">Uzak ekranda</translation>
 <translation id="3768037234834996183">Tercihleriniz senkronize ediliyor...</translation>
 <translation id="377050016711188788">Dondurma</translation>
 <translation id="3771294271822695279">Video Dosyaları</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Kaldırın, tekrar dokunun</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Senkronizasyon duraklatıldı</translation>
-<translation id="3862134173397075045">Chrome'da Google Cast deneyimine hoş geldiniz!</translation>
 <translation id="3862693525629180217">Yerleşik sensör kullanarak doğrula</translation>
 <translation id="3862788408946266506">"kiosk_only" manifest özelliğine sahip uygulamalar ChromeOS kiosk modunda yüklenmelidir</translation>
 <translation id="3865414814144988605">Çözünürlük</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Smart Lock telefonu değişti</translation>
 <translation id="3927932062596804919">Reddet</translation>
 <translation id="3930737994424905957">Cihazlar aranıyor</translation>
+<translation id="3930968231047618417">Arka plan rengi</translation>
 <translation id="3933283459331715412"><ph name="USERNAME" /> kullanıcısının silinen şifresini geri yükle</translation>
 <translation id="3936390757709632190">&amp;Sesi yeni sekmede aç</translation>
 <translation id="3936925983113350642">Seçtiğiniz şifre, daha sonra bu dosyayı geri yüklemek için gerekli olacaktır. Lütfen şifrenizi güvenli bir yere kaydedin.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">IE'den Aktarıldı</translation>
 <translation id="3950820424414687140">Oturum açın</translation>
+<translation id="3950828138786918475">Bu sekmenin cihazınızda klasör okumasına izin verilir.</translation>
 <translation id="3954354850384043518">Devam ediyor</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hz)</translation>
 <translation id="3954953195017194676">Yakın zamanda yakalanmış herhangi bir WebRTC etkinlik günlüğünüz yok.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Hesaplanııyor...</translation>
 <translation id="3975565978598857337">Alanın sunucusuyla iletişim kurulamadı</translation>
 <translation id="397703832102027365">Sonlandırılıyor...</translation>
+<translation id="3977886311744775419">Otomatik güncellemeler bu ağ türünde indirilmez ancak güncellemeleri manuel olarak kontrol edebilirsiniz.</translation>
 <translation id="3979395879372752341">Yeni uzantı eklendi (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> ağ cihazını etkinleştir</translation>
 <translation id="3981760180856053153">Geçersiz kayıt türü girildi.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Tıklamak için hafifçe vur'u etkinleştir</translation>
 <translation id="4195643157523330669">Yeni sekmede aç</translation>
 <translation id="4195814663415092787">Kaldığım yerden devam et</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> değişikliklerinizi doğrudan aşağıdaki dosyalara kaydedebilir. Bu site, yalnızca bu sekme açıkken değişiklikleri kaydedebilir.</translation>
 <translation id="4198146608511578238">Google Asistanınızla konuşmak için Launcher simgesini basılı tutmanız yeterlidir.</translation>
 <translation id="4200689466366162458">Özel kelimeler</translation>
 <translation id="4200983522494130825">Y&amp;eni sekme</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Hücresel ağa otomatik olarak bağlan</translation>
 <translation id="4268025649754414643">Anahtar Şifreleme</translation>
 <translation id="4270393598798225102">Sürüm <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Eşleşme yok</translation>
 <translation id="4275663329226226506">Medya</translation>
 <translation id="4275830172053184480">Cihazınızı yeniden başlatın</translation>
 <translation id="4278101229438943600">Asistanınız hazır</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">CPU Süresi</translation>
 <translation id="4534661889221639075">Tekrar deneyin.</translation>
 <translation id="4535127706710932914">Varsayılan Profil</translation>
+<translation id="4535767533210902251">Parmak izi sensörü, klavyenizdeki sağ üst tuştur. Herhangi bir parmağınızla bu tuşa hafifçe dokunun.</translation>
 <translation id="4538684596480161368"><ph name="HOST" /> üzerinde koruma alanında olmayan eklentileri her zaman engelle</translation>
 <translation id="4538792345715658285">Kurumsal politika tarafından yüklenmiş.</translation>
 <translation id="4542520061254486227"><ph name="WEBSITE_1" /> ve <ph name="WEBSITE_2" /> sitelerindeki verilerinizi okuma</translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Diğer...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Bluetooth cihazı eşle</translation>
+<translation id="4578012756826807359">Oturum açma verileriniz başarıyla silindi.</translation>
 <translation id="4579581181964204535"><ph name="HOST_NAME" /> yayınlanamıyor.</translation>
 <translation id="4581774856936278355">Linux geri yüklenirken hata oluştu</translation>
 <translation id="4582563038311694664">Tüm ayarları sıfırla</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Birden fazla siteden gelen çerezler çıkışta silinecek.</translation>
 <translation id="4765582662863429759">Android Mesajlar'ın telefonunuzdan Chromebook'unuza kısa mesaj aktarmasını sağlar</translation>
 <translation id="4768332406694066911">Sizi tanımlayan şu kuruluşlardan sertifikalarınız var</translation>
-<translation id="4772404146526168240">Her iki ekran</translation>
 <translation id="4776146737004271126">Android ayarlarını aç</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> için şifre</translation>
 <translation id="4777825441726637019">Play Store</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Tüm cihazlarınızdaki yer işaretlerini, geçmişi, şifreleri ve diğer ayarları almak için oturum açın. Ayrıca Google hizmetlerinizde de otomatik olarak oturum açarsınız.</translation>
 <translation id="4929386379796360314">Yazdırma Hedefleri</translation>
 <translation id="4930714375720679147">Etkinleştir</translation>
-<translation id="4931132176527519925">Her zaman yansıtmayı kullan</translation>
 <translation id="4932733599132424254">Tarih</translation>
 <translation id="4933484234309072027"><ph name="URL" /> adresinde yerleşik</translation>
 <translation id="493571969993549666">Denetlenen kullanıcı ekle</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Sesi aç</translation>
 <translation id="4992458225095111526">Powerwash'ı onaylayın</translation>
 <translation id="4992473555164495036">Yöneticiniz kullanılıabilir giriş yöntemlerini sınırladı.</translation>
+<translation id="4992866843815555470">Yuvanın servis işlemine ihtiyacı var. Çalışan bir vantilatör olmadan yuva kapanır.</translation>
 <translation id="4992926179187649719">"Ok Google"ı aç</translation>
 <translation id="4994474651455208930">Sitelerin, protokoller için varsayılan işleyiciler olmasını sormasına izin ver</translation>
 <translation id="4994754230098574403">Ayarlanıyor</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">İşlem Kimliği</translation>
 <translation id="5233638681132016545">Yeni sekme</translation>
 <translation id="5233736638227740678">&amp;Yapıştır</translation>
-<translation id="5234764350956374838">Kapat</translation>
 <translation id="5235050375939235066">Uygulamanın yüklemesi kaldırılsın mı?</translation>
 <translation id="5235750401727657667">Yeni bir sekme açarken gördüğünüz sayfayı değiştirme</translation>
 <translation id="5238278114306905396">"<ph name="EXTENSION_NAME" />" uygulaması otomatik olarak kaldırıldı.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google, Chrome'u önerir</translation>
 <translation id="532247166573571973">Sunucuya ulaşılamıyor olabilir. Daha sonra tekrar deneyin.</translation>
 <translation id="5324780743567488672">Konumumu kullanarak saat dilimini otomatik olarak ayarla</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - orijinal dosyalara kaydetme iznine sahip</translation>
 <translation id="5327248766486351172">Ad</translation>
 <translation id="5327570636534774768">Bu cihaz farklı bir alan adı tarafından yönetim için işaretlendi. Demo modunu kurmadan önce cihazın söz konusu alan adından yetkilendirmesini kaldırın.</translation>
 <translation id="532943162177641444">Bu cihaz tarafından kullanılabilecek mobil hotspot'u ayarlamak için <ph name="PHONE_NAME" /> telefonunuzdaki bildirime dokunun.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> şunu yapmak istiyor:</translation>
 <translation id="5534304873398226603">Fotoğraf veya videoyu sil</translation>
 <translation id="5535941515421698170">Ayrıca, mevcut verilerinizi bu cihazdan kaldırın</translation>
-<translation id="5537725057119320332">Yayınla</translation>
 <translation id="5539221284352502426">Girdiğiniz şifre, sunucu tarafından reddedildi. Bu durumun olası nedenleri şunlardır: Şifre çok kısadır. Şifre, sayılar veya semboller içermelidir. Şifre, önceki şifrelerden farklı olmalıdır.</translation>
 <translation id="5541687815721799001">Uygulamayı kullan</translation>
 <translation id="5542132724887566711">Profil</translation>
@@ -3301,7 +3315,6 @@
 <translation id="5997337190805127100">Site Erişimi Hakkında Daha Fazla Bilgi</translation>
 <translation id="6000758707621254961">"<ph name="SEARCH_TEXT" />" için bulunan <ph name="RESULT_COUNT" /> sonuç gösteriliyor</translation>
 <translation id="6002458620803359783">Tercih Edilen Sesler</translation>
-<translation id="6005695835120147974">Medya Yönlendiricisi</translation>
 <translation id="6006484371116297560">Klasik</translation>
 <translation id="6007240208646052708">Sesli arama özelliği dilinizde kullanılamaz.</translation>
 <translation id="6009781704028455063">Yerleşik sensör</translation>
@@ -3501,7 +3514,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Ağınızda yeni yazıcı}other{Ağınızda yeni yazıcılar}}</translation>
 <translation id="6286708577777130801">Kayıtlı şifre ayrıntıları</translation>
 <translation id="6289452883081499048">Play gibi kişiselleştirilmiş Google hizmetleri</translation>
-<translation id="6290556621549272952">Bu özelliği, Chromium'daki içerikleri TV'nizde ve diğer cihazlarda görüntülemek için kullanabilirsiniz.</translation>
 <translation id="6291949900244949761">Bir site USB cihazlarına erişmek istediğinde sor (önerilen)</translation>
 <translation id="6291953229176937411">Bulucu'da &amp;Göster</translation>
 <translation id="6295158916970320988">Tüm siteler</translation>
@@ -3565,6 +3577,7 @@
 <translation id="6395423953133416962"><ph name="BEGIN_LINK1" />Sistem bilgileri<ph name="END_LINK1" /> ve <ph name="BEGIN_LINK2" />metrikleri<ph name="END_LINK2" /> gönder</translation>
 <translation id="6396988158856674517">Sitelerin hareket sensörünü kullanmasını engelle</translation>
 <translation id="6397094776139756010">Senkronizasyon ve kişiselleştirme seçenekleri</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> değişikliklerinizi doğrudan aşağıdaki klasörde bulunan dosyalara kaydedebilecek. Bu site, yalnızca bu sekme açıkken değişiklikleri kaydedebilir.</translation>
 <translation id="6398715114293939307">Google Play Store'u kaldır</translation>
 <translation id="6398765197997659313">Tam ekrandan çık</translation>
 <translation id="6399774419735315745">Casus</translation>
@@ -3609,11 +3622,13 @@
 <translation id="6455264371803474013">Belirli sitelerde</translation>
 <translation id="6455894534188563617">&amp;Yeni Klasör</translation>
 <translation id="6456394469623773452">İyi</translation>
+<translation id="6456955391422100996">Reklam kaldırıldı.</translation>
 <translation id="645705751491738698">JavaScript'i engellemeye devam et</translation>
 <translation id="6458701200018867744">Yükleme başarısız oldu (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Bul için Seçim'i Kullan</translation>
 <translation id="6459799433792303855">Etkin pencere başka bir ekrana taşındı.</translation>
 <translation id="6460601847208524483">Sonrakini Bul</translation>
+<translation id="6461170143930046705">Ağ aranıyor...</translation>
 <translation id="6463795194797719782">&amp;Düzenle</translation>
 <translation id="6466988389784393586">Tüm Yer İşaretlerini &amp;Aç</translation>
 <translation id="6467304607960172345">Tam ekran videoları optimize et</translation>
@@ -3652,6 +3667,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641"><ph name="NETWORK_TYPE" /> bir ağa bağlısınız.</translation>
 <translation id="6527303717912515753">Paylaş</translation>
 <translation id="6528513914570774834">Bu cihazın diğer kullanıcılarının bu ağı kullanmalarına izin verin</translation>
 <translation id="652948702951888897">Chrome geçmişi</translation>
@@ -3748,7 +3764,6 @@
 <translation id="6680650203439190394">Hız</translation>
 <translation id="6681668084120808868">Fotoğraf çek</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" uygulaması kaldırılacak.</translation>
-<translation id="6685083257944113180">Durdur, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Google Play'i aç</translation>
 <translation id="6686490380836145850">Sağdaki sekmeleri kapat</translation>
 <translation id="6686817083349815241">Şifrenizi kaydedin</translation>
@@ -3856,6 +3871,7 @@
 <translation id="6845038076637626672">Ekranı Kaplayacak Şekilde Aç</translation>
 <translation id="6845325883481699275">Chrome güvenliğini iyileştirmeye yardımcı olun</translation>
 <translation id="6848388270925200958">Şu anda, yalnızca bu cihazda kullanılabilen kartlarınız var</translation>
+<translation id="6850286078059909152">Metin rengi</translation>
 <translation id="6851497530878285708">Uygulama Etkinleştirildi</translation>
 <translation id="6853388645642883916">Güncelleyici uyku modunda</translation>
 <translation id="68541483639528434">Diğer sekmeleri kapat</translation>
@@ -3905,7 +3921,6 @@
 <translation id="6923132443355966645">Kaydırma / Tıklama</translation>
 <translation id="6923633482430812883">Paylaşım eklenirken hata oluştu. Lütfen bağlandığınız dosya sunucusunun SMBv2 veya sonraki sürümünü desteklediğinden emin olun.</translation>
 <translation id="6930036377490597025">Harici güvenlik anahtarı veya yerleşik sensör</translation>
-<translation id="6930242544192836755">Süre</translation>
 <translation id="693807610556624488">Yazma işlemi şu cihaz için maksimum özellik uzunluğunu aşıyor: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Sertifikanızla <ph name="HOST_NAME" /> üzerinde kimlik doğrulaması yapmak için, lütfen <ph name="TOKEN_NAME" /> cihazında oturum açın.</translation>
 <translation id="6943176775188458830">Yazdırmayı iptal et</translation>
@@ -3919,6 +3934,7 @@
 <translation id="6951153907720526401">Ödeme İşleyiciler</translation>
 <translation id="6951663584153258142">Kuruluşunuz bu cihazı güncellemenizi istiyor</translation>
 <translation id="6953878494808481632">İlgili bilgiler</translation>
+<translation id="6953916367503892689">{0,plural, =1{Dosya: <ph name="FILES" />}other{Dosyalar: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Pop-up'ı İncele</translation>
 <translation id="6957044667612803194">Bu güvenlik anahtarı PIN’leri desteklemiyor</translation>
 <translation id="6957231940976260713">Hizmet adı</translation>
@@ -4131,7 +4147,6 @@
 <translation id="7254554697254365959">Bu Sayfa Çevrilemedi.</translation>
 <translation id="7254951428499890870">"<ph name="APP_NAME" />" uygulamasını teşhis modunda başlatmak istediğinizden emin misiniz?</translation>
 <translation id="7255002516883565667">Şu anda, yalnızca bu cihazda kullanılabilen bir kartınız var</translation>
-<translation id="7255220508626648026">Yayınlanıyor: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Sıfırlamayı onaylamak için güvenlik anahtarınıza tekrar dokunun. PIN'i de dahil olmak üzere güvenlik anahtarında depolanan tüm bilgiler silinecek.</translation>
 <translation id="7255935316994522020">Uygula</translation>
 <translation id="7256069762010468647">Site, kameranızı kullanıyor</translation>
@@ -4265,6 +4280,7 @@
 <translation id="7456142309650173560">geliştirici</translation>
 <translation id="7456847797759667638">Konumu Aç...</translation>
 <translation id="7458168200501453431">Google Arama'da kullanılan yazım denetleyiciyi kullanır. Tarayıcıda yazdığınız metin Google'a gönderilir.</translation>
+<translation id="7460045493116006516">Yüklediğiniz mevcut tema</translation>
 <translation id="7461924472993315131">Sabitle</translation>
 <translation id="746216226901520237">Bir dahaki sefere telefonunuzu kullanarak <ph name="DEVICE_TYPE" /> cihazınızın kilidini açabilirsiniz. Smart Lock'u Ayarlar'dan kapatabilirsiniz.</translation>
 <translation id="7463006580194749499">Kişi ekle</translation>
@@ -4324,6 +4340,7 @@
 <translation id="7554791636758816595">Yeni Sekme</translation>
 <translation id="7556033326131260574">Smart Lock, hesabınızı doğrulayamadı. Giriş yapmak için şifrenizi yazın.</translation>
 <translation id="7556242789364317684">Maalesef <ph name="SHORT_PRODUCT_NAME" />, ayarlarınızı kurtaramıyor. Hatayı düzeltmek için <ph name="SHORT_PRODUCT_NAME" /> cihazınızı Powerwash ile sıfırlamalısınız.</translation>
+<translation id="7559444627302317199">Lütfen ağ bağlantınızı kontrol edin ve tekrar deneyin.</translation>
 <translation id="7559719679815339381">Lütfen bekleyin....Kiosk uygulaması güncelleniyor. USB çubuğunu çıkarmayın.</translation>
 <translation id="7561196759112975576">Her zaman</translation>
 <translation id="7563991800558061108">Bu hatadan kurtulmak için, oturum açma ekranından Google Hesabınızda oturum
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Yinele</translation>
 <translation id="7887864092952184874">Bluetooth fare eşlendi</translation>
 <translation id="7889565820482017512">Görüntü Boyutu</translation>
-<translation id="7889966925761734854">Ara</translation>
 <translation id="7893008570150657497">Bilgisayarınızdan fotoğraf, müzik ve diğer medyalara erişme</translation>
 <translation id="7893153962594818789">Bu <ph name="DEVICE_TYPE" /> cihazında Bluetooth kapalı. Şifrenizi girip Bluetooth'u açın.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Varsayılan)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Araç çubuğunda tut</translation>
 <translation id="7898725031477653577">Her zaman çevir</translation>
 <translation id="790040513076446191">Gizlilikle ilgili ayarları değiştirme</translation>
-<translation id="7902874111237641165">Smooth Motion [beta]</translation>
 <translation id="7903345046358933331">Sayfa yanıt vermiyor. Yanıt vermesini bekleyebilir veya kapatabilirsiniz.</translation>
 <translation id="7903742244674067440">Dosyada şu sertifika yetkililerini tanımlayan sertifikalarınız var</translation>
 <translation id="7903925330883316394">Yardımcı Program: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">Sentezlenmiş konuşma özelliği kullanılarak söylenen tüm metni okuma</translation>
 <translation id="8037357227543935929">Sor (varsayılan)</translation>
 <translation id="803771048473350947">Dosya</translation>
+<translation id="8042142357103597104">Metin opaklığı</translation>
 <translation id="8044899503464538266">Yavaş</translation>
 <translation id="8045253504249021590">Senkronizasyon Google Hesap Özeti tarafından durduruldu.</translation>
 <translation id="8045923671629973368">Uygulama kimliğini veya web mağazası URL'sini girin</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Bu hizmeti Ayarlar'dan kapatabilirsiniz.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN'ler eşleşmiyor</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" />, bir uzantıdan gelen proxy ayarlarını kullanıyor</translation>
-<translation id="8099495042588009598">Diğer izinler</translation>
 <translation id="8101987792947961127">Gelecek yeniden başlatmada Powerwash gerekli</translation>
 <translation id="8102159139658438129">Bağlı telefonunuzla ilgili seçenekleri görmek için <ph name="LINK_BEGIN" />Ayarlar<ph name="LINK_END" />'a gidin</translation>
 <translation id="8104696615244072556"><ph name="IDS_SHORT_PRODUCT_NAME" /> cihazınızda Powerwash işlemi yapabilir ve bir önceki sürüme geri dönebilirsiniz.</translation>
@@ -4773,8 +4788,10 @@
     Bu sitenin engellenmesi gerektiğini düşünmüyorum!</translation>
 <translation id="8184288427634747179"><ph name="AVATAR_NAME" /> kullanıcısına geç</translation>
 <translation id="8184318863960255706">Daha fazla bilgi</translation>
+<translation id="8184472985242519288">Tek tip</translation>
 <translation id="8185331656081929126">Ağ üzerinde yeni yazıcılar algılandığında bildirim göster</translation>
 <translation id="8186609076106987817">Sunucu dosyayı bulamadı.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> aşağıdaki klasörde bulunan tüm dosyaları okuyabilir. Bu site, yalnızca bu sekme açıkken klasöre yapılan değişiklikleri görebilir.</translation>
 <translation id="8188389033983459049">Cihaz ayarlarınızı kontrol edin ve devam etmek için açın</translation>
 <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> ağına bağlanılıyor</translation>
 <translation id="8191230140820435481">Uygulamalarınızı, uzantılarınızı ve temalarınızı yönetme</translation>
@@ -4878,9 +4895,8 @@
 <translation id="833986336429795709">Bu bağlantıyı açmak için bir uygulama seçin</translation>
 <translation id="8342861492835240085">Koleksiyon seçin</translation>
 <translation id="834290227245955730">Geçersiz PIN. Kalan deneme sayısı: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">En iyi video veya animasyon için yüksek bant genişliği kullanın. Bağlantısı yavaş olan diğer kullanıcılar içeriğinizi göremeyebilir.</translation>
 <translation id="8351419472474436977">Bu uzantı proxy ayarlarınızın denetimini ele geçirdi. Bu, uzantının çevrimiçinde yaptıklarınızı değiştirebileceği, kesebileceği veya dinleyebileceği anlamına gelir. Bu değişikliğin neden olduğundan emin değilseniz muhtemelen bu değişikliği yapmayı istememişsinizdir.</translation>
-<translation id="8351630282875799764">Pil şarj olmuyor.</translation>
+<translation id="8351630282875799764">Pil şarj olmuyor</translation>
 <translation id="835238322900896202">Yükleme kaldırma işlemi sırasında bir hata oluştu. Lütfen Terminali kullanarak yüklemeyi kaldırın.</translation>
 <translation id="8352772353338965963">Çoklu oturum açmaya bir hesap ekleyin. Oturum açılmış tüm hesaplara şifresiz erişilebileceği için bu özellik sadece güvenilir hesaplarla kullanılmalıdır.</translation>
 <translation id="8353683614194668312">Şunları yapabilir:</translation>
@@ -4911,9 +4927,11 @@
 <translation id="839736845446313156">Kayıt ol</translation>
 <translation id="8398877366907290961">Yine de devam et</translation>
 <translation id="8400146488506985033">Kişileri yönet</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> değişikliklerinizi doğrudan aşağıdaki klasörde bulunan dosyalara kaydedebilir. Bu site, yalnızca bu sekme açıkken değişiklikleri kaydedebilir.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Önce sor (önerilir)</translation>
 <translation id="8418445294933751433">&amp;Sekme olarak göster</translation>
+<translation id="8418905021510211421">Bu sayfanın cihazınızda klasör okumasına izin verilir.</translation>
 <translation id="8419098111404128271">"<ph name="SEARCH_TEXT" />" için arama sonuçları</translation>
 <translation id="8419368276599091549"><ph name="DEVICE_TYPE" /> cihazınıza hoş geldiniz!</translation>
 <translation id="8425213833346101688">Değiştir</translation>
@@ -4933,6 +4951,7 @@
 <translation id="8438566539970814960">Aramaları ve göz atmayı daha iyi yap</translation>
 <translation id="8439506636278576865">Bu dildeki sayfaları çevirmeyi öner</translation>
 <translation id="8440630305826533614">Linux uygulamaları</translation>
+<translation id="844241640324986723">Oturum açma verilerinizi silme başarısız oldu</translation>
 <translation id="8443338615972234259">Lütfen denetlenen kullanıcınız için şimdi yeni bir hesap oluşturun.</translation>
 <translation id="8446884382197647889">Daha Fazla Bilgi Edinin</translation>
 <translation id="8447409163267621480">Ctrl veya Alt tuşunu ekleyin</translation>
@@ -4948,8 +4967,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Bu denetlenen kullanıcı yönetici tarafından silinmiş veya devre dışı bırakılmış olabilir. Bu kullanıcı olarak oturum açmaya devam etmek istiyorsanız lütfen yöneticiyle iletişime geçin.</translation>
 <translation id="846374874681391779">İndirilenler çubuğu</translation>
-<translation id="8463807869745732775">"&gt;
-    Depolanan oturum açma verileri</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> devre dışı.</translation>
 <translation id="8464132254133862871">Bu kullanıcı hesabı hizmet için uygun değil.</translation>
 <translation id="8465252176946159372">Geçerli değil</translation>
@@ -5015,6 +5032,7 @@
 <translation id="8569002732135253578"><ph name="DOCUMENT_NAME" /> şimdi yazdırılıyor</translation>
 <translation id="8569682776816196752">Hiçbir hedef bulunamadı</translation>
 <translation id="8571213806525832805">Son 4 hafta</translation>
+<translation id="8573403125070227391">Bu reklam cihazınız için çok fazla kaynak kullanıyor, bu yüzden Chrome tarafından kaldırdı.</translation>
 <translation id="8574990355410201600"><ph name="HOST" /> sitesinde sese her zaman izin ver</translation>
 <translation id="8575286410928791436">Çıkmak için <ph name="KEY_EQUIVALENT" /> tuşunu basılı tutun.</translation>
 <translation id="8578639784464423491">99 harften uzun olamaz</translation>
@@ -5038,13 +5056,13 @@
 <translation id="8609465669617005112">Yukarı taşı</translation>
 <translation id="8610103157987623234">Yanlış biçim, lütfen tekrar deneyin</translation>
 <translation id="8615618338313291042">Gizli Mod Uygulaması: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Gölge</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Dolaşım durumu</translation>
 <translation id="8620765578342452535">Ağ bağlantılarını yapılandırma</translation>
 <translation id="8621866727807194849">Bilgisayarınızda zararlı yazılım var. Chrome bunu kaldırıyor, ayarlarınızı geri yüklüyor ve uzantılarınızı devre dışı bırakıyor. Bu işlem, tarayıcınızın tekrar normal şekilde çalışmasını sağlayacak.</translation>
 <translation id="8621979332865976405">Tüm ekranınızı paylaşın</translation>
 <translation id="862542460444371744">&amp;Uzantılar</translation>
-<translation id="8627151598708688654">Kaynak seçin</translation>
 <translation id="862727964348362408">Askıya alındı</translation>
 <translation id="862750493060684461">CSS önbelleği</translation>
 <translation id="8627795981664801467">Yalnızca güvenli bağlantılar</translation>
@@ -5098,6 +5116,7 @@
 <translation id="8688579245973331962">Adınızı görmüyor musunuz?</translation>
 <translation id="8688591111840995413">Yanlış şifre</translation>
 <translation id="8688672835843460752">Kullanılabilir</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Konumu &amp;Aç...</translation>
 <translation id="869884720829132584">Uygulamalar menüsü</translation>
 <translation id="869891660844655955">Son kullanma tarihi</translation>
@@ -5261,6 +5280,7 @@
 <translation id="891365694296252935">Kullanım ve teşhis verilerini gönder. Bu cihaz şu anda teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a gönderiyor. Bu veriler, çocuğunuzun kimliğini tespit etmek için kullanılmaz; sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Bu ayar, cihazın sahibi tarafından zorunlu kılınmıştır. Çocuğunuz için ek Web ve Uygulama Etkinliği açıksa bu veriler çocuğunuzun Google Hesabına kaydedilebilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Öneriler yükleniyor</translation>
 <translation id="8916476537757519021">Gizli Alt Çerçeve: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - cihazınızda klasör okuma iznine sahiptir</translation>
 <translation id="8919275547519617350">Tüm şifrelerinize tüm cihazlarınızda ulaşmak için oturum açın ve senkronizasyonu etkinleştirin.</translation>
 <translation id="8921366488406707015">Güvenlik anahtarınız doğrulanıyor...</translation>
 <translation id="8922013791253848639">Bu sitede her zaman reklamlara izin ver</translation>
@@ -5290,7 +5310,6 @@
 <translation id="8965037249707889821">Eski şifreyi girin</translation>
 <translation id="8966870118594285808">Bir sekmeyi yanlışlıkla kapattıysanız yeniden açın</translation>
 <translation id="8967866634928501045">Göstermek için Alt+Üst Karakter+A tuşlarına basın</translation>
-<translation id="8970203673128054105">Yayın modu listesini görüntüle</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Güvenlik duvarının, Google sunucularından yapılan indirme işlemlerini engellemediğinden emin olmak için lütfen ağ yöneticinizle görüşün.</translation>
 <translation id="8973557916016709913">Yakınlaştırma seviyesini kaldır</translation>
@@ -5439,6 +5458,7 @@
 <translation id="9214520840402538427">Hata! Yükleme zamanı özniteliklerini başlatma işlemi zaman aşımına uğradı. Lütfen destek temsilcinizle görüşün.</translation>
 <translation id="9214695392875603905">Küçük kek</translation>
 <translation id="9215293857209265904">"<ph name="EXTENSION_NAME" />" eklendi</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> değişikliklerinizi doğrudan aşağıdaki dosyaya kaydedebilecek. Bu site, yalnızca bu sekme açıkken değişiklikleri kaydedebilir.</translation>
 <translation id="9218430445555521422">Varsayılan olarak ayarla</translation>
 <translation id="9219103736887031265">Resimler</translation>
 <translation id="9220525904950070496">Hesabı kaldır</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index cb5b278..ee6a0476 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Не вдалося запустити віртуальну машину. Повторіть спробу.</translation>
 <translation id="1089439967362294234">Змінити пароль</translation>
 <translation id="1090126737595388931">Не запущено жодну фонову програму</translation>
+<translation id="1090290614672149983">Зберегти зміни в оригінальному файлі?</translation>
 <translation id="1090918500949388876">Відкривайте Асистент командою "Ok Google", коли екран увімкнено</translation>
 <translation id="1091767800771861448">Натисніть ESCAPE, щоб пропустити (лише в неофіційних версіях складання).</translation>
 <translation id="1093457606523402488">Видимі мережі:</translation>
 <translation id="1094607894174825014">Запит на операцію перегляду або внесення змін надіслано з недійсним зміщенням на пристрої <ph name="DEVICE_NAME" />.</translation>
 <translation id="1097658378307015415">Перш ніж увійти, розпочніть сеанс у режимі гостя, щоб активувати мережу <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Ця вкладка може зберігати дані в оригінальних файлах.</translation>
 <translation id="1103523840287552314">Завжди перекладати з такої мови: <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Зупинити</translation>
 <translation id="1110155001042129815">Зачекайте</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Сонцезахисні окуляри</translation>
 <translation id="1151917987301063366">Завжди дозволяти хосту <ph name="HOST" /> доступ до датчиків</translation>
 <translation id="1153356358378277386">Підключені пристрої</translation>
-<translation id="1156488781945104845">Поточний час</translation>
 <translation id="1161575384898972166">Увійдіть у <ph name="TOKEN_NAME" />, щоб експортувати сертифікат клієнта.</translation>
 <translation id="1163931534039071049">&amp;Переглянути джерело фрейма</translation>
 <translation id="1164674268730883318">Вимкнути Smart Lock для пристрою <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Налаштування пам’яті Adobe Flash Player</translation>
 <translation id="1274997165432133392">Файли cookie та інші дані із сайтів</translation>
 <translation id="127668050356036882">Закрити всі вікна</translation>
-<translation id="1277908057200820621">Переглянути список пристроїв</translation>
 <translation id="1280820357415527819">Пошук мобільних мереж</translation>
 <translation id="1285320974508926690">Ніколи не перекладати цей сайт</translation>
 <translation id="1285484354230578868">Зберігати дані в обліковому записі Google Диска</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Домашня мережа, без роумінгу</translation>
 <translation id="1316136264406804862">Пошук...</translation>
 <translation id="1316495628809031177">Синхронізацію призупинено</translation>
+<translation id="1317637799698924700">Док-станція працюватиме в режимі сумісності з USB Type-C.</translation>
 <translation id="1322046419516468189">Переглядайте збережені паролі й керуйте ними на сторінці <ph name="SAVED_PASSWORDS_STORE" /></translation>
 <translation id="1326317727527857210">Щоб мати доступ до вкладок з інших пристроїв, увійдіть в обліковий запис Chrome.</translation>
 <translation id="1327074568633507428">Принтер у Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">Вашим <ph name="BEGIN_LINK" />веб-переглядачем керує<ph name="END_LINK" /> домен <ph name="ENROLLMENT_DOMAIN" /></translation>
 <translation id="1366177842110999534">Користуйтесь інструментами, редакторами й ІСР Linux на <ph name="DEVICE_TYPE" />. &lt;a target="_blank" href="<ph name="URL" />"&gt;Докладніше&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Вибрати файл</translation>
+<translation id="1370749010280229230">Проблема з екраном, підключеним до док-станції</translation>
 <translation id="1371301976177520732">Ваші закладки, паролі, історія тощо на всіх ваших пристроях</translation>
 <translation id="1372841398847029212">Синхронізувати з обліковим записом</translation>
 <translation id="1374844444528092021">Сертифікат, який вимагає мережа "<ph name="NETWORK_NAME" />", не встановлено або він більше не дійсний. Отримайте новий сертифікат і повторіть спробу під’єднатися.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Веб-сторінка в одному файлі</translation>
 <translation id="1451917004835509682">Додати контрольованого користувача</translation>
 <translation id="1454223536435069390">З&amp;робити знімок екрана</translation>
+<translation id="1458243790901188746">{0,plural, =1{Папка: <ph name="DIRECTORIES" />}one{Папки: <ph name="DIRECTORIES" />}few{Папки: <ph name="DIRECTORIES" />}many{Папки: <ph name="DIRECTORIES" />}other{Папки: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Пошукові системи, додані розширеннями</translation>
 <translation id="146000042969587795">Цей фрейм було заблоковано, тому що він містить незахищений вмест.</translation>
 <translation id="146219525117638703">Стан ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Показати опції введення</translation>
 <translation id="1651008383952180276">Потрібно двічі ввести однакову парольну фразу</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Додайте принтер у Google Cloud Print, щоб друкувати з будь-якого пристрою.}one{Додайте # принтер у Google Cloud Print, щоб друкувати з будь-якого пристрою.}few{Додайте # принтери в Google Cloud Print, щоб друкувати з будь-якого пристрою.}many{Додайте # принтерів у Google Cloud Print, щоб друкувати з будь-якого пристрою.}other{Додайте # принтера в Google Cloud Print, щоб друкувати з будь-якого пристрою.}}</translation>
+<translation id="1656528038316521561">Прозорість фону</translation>
 <translation id="1657406563541664238">Допоможіть покращити <ph name="PRODUCT_NAME" />, автоматично надсилаючи статистику використання та звіти про аварійне завершення роботи в Google</translation>
 <translation id="1658424621194652532">Ця сторінка має доступ до вашого мікрофона.</translation>
 <translation id="1660204651932907780">Дозволити сайтам відтворювати звук (рекомендується)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546">Сайт <ph name="URL" /> хоче бачити марку й модель вашого ключа безпеки</translation>
 <translation id="1679068421605151609">Інструменти для розробників</translation>
 <translation id="1679806121152819234">Плагін віртуальної машини</translation>
+<translation id="1679810534535368772">Вийти?</translation>
 <translation id="167983332380191032">Сервіс керування надіслав помилку HTTP.</translation>
 <translation id="1680849702532889074">Під час встановлення додатка Linux сталася помилка.</translation>
 <translation id="16815041330799488">Не дозволяти сайтам переглядати тексти й зображення в буфері обміну</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Ідентифікатор захищених медіа</translation>
 <translation id="175196451752279553">В&amp;ідкрити закриту вкладку знову</translation>
 <translation id="1753905327828125965">Часто відвідувані</translation>
+<translation id="1755601632425835748">Розмір тексту</translation>
 <translation id="1756681705074952506">Метод введення</translation>
 <translation id="1757301747492736405">Очікується видалення</translation>
 <translation id="175772926354468439">Увімкнути тему</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Малий</translation>
 <translation id="1919345977826869612">Оголошення</translation>
 <translation id="1919814239594435008">Плагін із неізольованим програмним середовищем дозволено</translation>
+<translation id="1920390473494685033">Контакти</translation>
 <translation id="1921050530041573580">Підключіть телефон до Повідомлень</translation>
 <translation id="1921584744613111023">Роздільна здатність: <ph name="DPI" /></translation>
 <translation id="1924559387127953748">Отримайте розумні функції Google у <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Анонімна вкладка: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724">Плагін <ph name="PEPPER_PLUGIN_NAME" /> із сайту <ph name="PEPPER_PLUGIN_DOMAIN" /> хоче отримати доступ до вашого комп’ютера</translation>
 <translation id="2178614541317717477">Дискредитація ЦС</translation>
+<translation id="2179849162388791084">Не вдалося зібрати дані для входу з вашого ключа безпеки.</translation>
 <translation id="218070003709087997">Використовуйте число, щоб указати кількість копій для друку (від 1 до 999).</translation>
 <translation id="2184515124301515068">Дозволити Chrome вибирати, коли відтворювати звук на сайтах (рекомендується)</translation>
 <translation id="2187895286714876935">Помилка імпортування сертифіката сервера</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Усі файли сookie та дані із сайтів</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{1 елемент скопійовано}one{# елемент скопійовано}few{# елементи скопійовано}many{# елементів скопійовано}other{# елемента скопійовано}}</translation>
 <translation id="2278562042389100163">Відкрити вікно переглядача</translation>
-<translation id="2279874276457403668">Можна створити лише один сеанс за раз.</translation>
 <translation id="2280486287150724112">Праве поле</translation>
 <translation id="2282146716419988068">Процес GPU</translation>
 <translation id="2282155092769082568">URL-адреса автоконфігурації:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Сповіщення на заблокованому екрані автоматично зберігаються в додатку <ph name="LOCK_SCREEN_APP_NAME" />. Останнє сповіщення залишатиметься на заблокованому екрані.</translation>
 <translation id="2353297238722298836">Дозволено використовувати камеру та мікрофон</translation>
 <translation id="2356070529366658676">Запитати</translation>
-<translation id="2357949918965361754">За допомогою цієї функції ви можете транслювати вміст із Chrome на телевізор чи інші пристрої.</translation>
 <translation id="2359345697448000899">Керуйте своїми розширеннями, натиснувши вкладку "Розширення" в меню "Інструменти".</translation>
 <translation id="2359808026110333948">Продовжити</translation>
 <translation id="236117173274098341">Оптимізувати</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Ваша організація вимагає, щоб ви негайно оновили пристрій</translation>
 <translation id="2439545803278355377">Введіть новий PIN-код. PIN-код має бути чотиризначним і може включати літери, цифри й інші символи.</translation>
 <translation id="2440604414813129000">Див. д&amp;жерело</translation>
+<translation id="2442916515643169563">Тінь тексту</translation>
 <translation id="2444119669991608829">Мова цієї сторінки не <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Потрібен кореневий каталог розширення.</translation>
 <translation id="2445484935443597917">Створити новий профіль</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Не пізніше</translation>
 <translation id="2739191690716947896">Налагоджувати</translation>
 <translation id="2739240477418971307">Змінювати налаштування доступності</translation>
+<translation id="274029851662193272">Втиснений текст</translation>
 <translation id="2740393541869613458">переглядати веб-сайти, які відвідував контрольований користувач, і</translation>
 <translation id="2741912629735277980">Показувати інтерфейс на екрані входу</translation>
 <translation id="274290345632688601">Відновлення додатків і файлів Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Ярлик уже є</translation>
 <translation id="2807517655263062534">Тут відображаються завантажені файли</translation>
 <translation id="2809586584051668049">і ще <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2812049959647166806">Thunderbolt не підтримується</translation>
 <translation id="2812944337881233323">Вийдіть зі свого облікового запису та ввійдіть у нього знову</translation>
 <translation id="2812989263793994277">Не показувати жодних зображень</translation>
 <translation id="281390819046738856">Не вдалося підписати запит.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Постачальник</translation>
 <translation id="2844169650293029770">Пристрій, під’єднаний до порту USB-C (ліворуч на передній панелі)</translation>
 <translation id="2845382757467349449">Завжди показувати панель закладок</translation>
-<translation id="2847759467426165163">Транслювати на</translation>
 <translation id="284805635805850872">Вилучити зловмисне програмне забезпечення?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Не вдалось очистити</translation>
@@ -1297,6 +1305,7 @@
     Повідомлення сервера: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Додати медіа-галерею за каталогами</translation>
 <translation id="2910318910161511225">Під’єднайтеся до мережі й повторіть спробу</translation>
+<translation id="2910518940971897750">Зберегти дані в оригінальному файлі</translation>
 <translation id="2913331724188855103">Дозволити сайтам зберігати та розпізнавати дані файлів cookie (рекомендується)</translation>
 <translation id="2915102088417824677">Переглянути журнал активності</translation>
 <translation id="2915873080513663243">Автосканування</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Пристрої MIDI</translation>
 <translation id="3015639418649705390">Перезапустити зараз</translation>
 <translation id="3016329696181678353">Не вдалось автоматично налаштувати принтер <ph name="PRINTER_NAME" />. Укажіть додаткову інформацію про нього.</translation>
+<translation id="3016381065346027039">Немає записів журналу</translation>
 <translation id="3016641847947582299">Компонент оновлено</translation>
 <translation id="3016780570757425217">Бачити ваше місцезнаходження</translation>
 <translation id="3017079585324758401">Фон</translation>
 <translation id="3020183492814296499">Ярлики</translation>
 <translation id="3020990233660977256">Серійний номер: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Метелик</translation>
+<translation id="3021408157810018664">Зберегти зміни в оригінальних файлах?</translation>
 <translation id="3021426244864538700">Мають доступ до даних цього сайту</translation>
 <translation id="3021678814754966447">&amp;Переглянути джерело фрейму</translation>
 <translation id="3022978424994383087">Незрозуміло.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Можна також пропустити вхід і <ph name="LINK_START" />працювати в режимі "Гість"<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Сайт має доступ до відеовходу</translation>
 <translation id="3177909033752230686">Мова сторінки:</translation>
+<translation id="3179982752812949580">Шрифт тексту</translation>
 <translation id="3181954750937456830">Безпечний перегляд (захищає вас і ваш пристрій від небезпечних сайтів)</translation>
 <translation id="3182749001423093222">Перевірка правопису</translation>
 <translation id="3183139917765991655">Засіб імпортування профілів</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Відкрити вікно</translation>
 <translation id="3278001907972365362">Імовірна проблема з обліковим записом Google</translation>
 <translation id="3279230909244266691">Це може тривати кілька хвилин. Запускається віртуальна машина.</translation>
-<translation id="3279741024917655738">Показувати відео на весь екран на</translation>
 <translation id="3280237271814976245">Зберегти &amp;як...</translation>
 <translation id="3280243678470289153">Не виходити з Chrome</translation>
 <translation id="3281892622610078515">Файли та програми, які буде переміщено в карантин:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Немає результатів</translation>
 <translation id="3305389145870741612">Процес форматування може зайняти декілька секунд. Зачекайте.</translation>
 <translation id="3305661444342691068">Відкрити файл PDF у вікні попереднього перегляду</translation>
-<translation id="3306684685104080068">Увімкнути трансляцію в хмарні служби, як-от Google Hangouts.</translation>
+<translation id="3307871847038842490">Ця сторінка може зберігати дані в оригінальних файлах.</translation>
 <translation id="3308006649705061278">Організаційний підрозділ (OU)</translation>
 <translation id="3308116878371095290">Цій сторінці було відмовлено в збереженні файлів cookie.</translation>
 <translation id="3308134619352333507">Кнопка "Сховати"</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Скасувати створення облікового запису?</translation>
 <translation id="3464012987031883895">Сайт має доступ до аудіовходу</translation>
 <translation id="346431825526753"><ph name="CUSTODIAN_EMAIL" /> керує цим обліковим записом для дітей.</translation>
-<translation id="3468275649641751422">Транслюйте відео- й аудіофайли</translation>
 <translation id="3468999815377931311">Телефон Android</translation>
 <translation id="3470442499439619530">Вилучити цього користувача</translation>
 <translation id="3473479545200714844">Лупа</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Зменшити</translation>
 <translation id="3497560059572256875">Поділитися дудлом</translation>
 <translation id="3505030558724226696">Скасувати доступ до пристрою</translation>
+<translation id="3505635633742443645">Порт HDMI док-станції не можна використовувати, коли відео відтворюється через порт USB Type-C. Скористайтеся іншим портом для одного з екранів.</translation>
 <translation id="3507421388498836150">Поточні дозволи розширення <ph name="EXTENSION_NAME" /></translation>
 <translation id="3507888235492474624">Шукати пристрої Bluetooth знову</translation>
 <translation id="3508920295779105875">Вибрати іншу папку...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Установлено</translation>
 <translation id="3578594933904494462">До вмісту цієї вкладки надано доступ.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; хоче надати групі &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;, якою ви керуєте, доступ до принтера &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt;. Якщо ви приймете це запрошення, усі учасники групи зможуть користуватися цим принтером.</translation>
+<translation id="357889014807611375">Wi-Fi із тарифікацією трафіку</translation>
 <translation id="3584169441612580296">Читати й змінювати фотографії, музику та інші медіафайли на комп’ютері</translation>
 <translation id="3587482841069643663">Все</translation>
 <translation id="358796204584394954">Введіть цей код на пристрої <ph name="DEVICE_NAME" />, щоб підключити:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Увійти</translation>
 <translation id="3593965109698325041">Обмеження імені сертифіката</translation>
 <translation id="3596235046596950091">Увімкнути хмарні сервіси</translation>
+<translation id="3599221874935822507">Опуклий текст</translation>
 <translation id="3599863153486145794">Видалення історії на всіх пристроях, на яких ви ввійшли в обліковий запис. Історія веб-перегляду може також зберігатися у вашому обліковому записі Google на сторінці  <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Інформація про веб-запит</translation>
 <translation id="3600792891314830896">Вимкнути звук на сайтах, які відтворюють його</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Завантажило розширення &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Показати "<ph name="FOLDER_NAME" />"</translation>
 <translation id="3613422051106148727">&amp;Відкрити в новій вкладці</translation>
+<translation id="3615073365085224194">Торкніться пальцем сканера відбитків</translation>
 <translation id="3616113530831147358">Аудіо</translation>
 <translation id="3616741288025931835">&amp;Очистити дані веб-перегляду...</translation>
 <translation id="3617891479562106823">Фони недоступні. Повторіть спробу пізніше.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Домашня сторінка</translation>
 <translation id="3720996970802414353">Усе одно змінити</translation>
 <translation id="3722108462506185496">Не вдалося запустити віртуальну машину. Спробуйте пізніше.</translation>
-<translation id="3723158278575423087">Вітаємо в Cast для Chromium!</translation>
 <translation id="3725367690636977613">сторінки</translation>
 <translation id="3726137731714254362">Якщо видалити цю папку звідси, надсилання файлів буде припинено, однак самі файли не буде видалено.</translation>
 <translation id="3727148787322499904">Зміна цього налаштування вплине на всі спільні мережі</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Докладна інформація про складання</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Обмінюватися даними з пристроєм USB}one{Обмінюватися даними з # пристроєм USB}few{Обмінюватися даними з # пристроями USB}many{Обмінюватися даними з # пристроями USB}other{Обмінюватися даними з # пристрою USB}}</translation>
 <translation id="3765246971671567135">Не вдалося прочитати політику демо-режиму офлайн.</translation>
-<translation id="3766223500670287046">Віддалений екран</translation>
 <translation id="3768037234834996183">Синхронізація налаштувань…</translation>
 <translation id="377050016711188788">Морозиво</translation>
 <translation id="3771294271822695279">Відеофайли</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Підніміть і знову торкніться</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: синхронізацію призупинено</translation>
-<translation id="3862134173397075045">Вітаємо в Cast для Chrome!</translation>
 <translation id="3862693525629180217">Підтвердити через вбудований датчик</translation>
 <translation id="3862788408946266506">Додаток з атрибутом маніфесту "kiosk_only" потрібно встановлювати в режимі термінала ОС Chrome</translation>
 <translation id="3865414814144988605">Роздільна здатність</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Телефон для Smart Lock змінено</translation>
 <translation id="3927932062596804919">Відмовити</translation>
 <translation id="3930737994424905957">Пошук пристроїв</translation>
+<translation id="3930968231047618417">Колір фону</translation>
 <translation id="3933283459331715412">Відновити видалений пароль для <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Відкрити аудіо в новій вкладці</translation>
 <translation id="3936925983113350642">Вибраний пароль буде потрібен, щоб пізніше відновити цей сертифікат. Зберігайте його в безпечному місці.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Імпортовано із IE</translation>
 <translation id="3950820424414687140">Увійти</translation>
+<translation id="3950828138786918475">Ця вкладка може переглядати папку на вашому пристрої.</translation>
 <translation id="3954354850384043518">Завантаження триває</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> герц)</translation>
 <translation id="3954953195017194676">Немає нещодавно створених журналів подій WebRTC.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Обчислення...</translation>
 <translation id="3975565978598857337">Не вдалося зв'язатися із сервером для цієї області</translation>
 <translation id="397703832102027365">Завершення...</translation>
+<translation id="3977886311744775419">Автоматичні оновлення не завантажуються в цьому типі мережі, але ви можете пошукати їх вручну.</translation>
 <translation id="3979395879372752341">Додано нове розширення (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Увімкнути <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Введено недійсний тип збереження.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Увімкнути функцію "торкнутися, щоб натиснути"</translation>
 <translation id="4195643157523330669">Відкрити в новій вкладці</translation>
 <translation id="4195814663415092787">Продовжити з місця зупинки</translation>
+<translation id="4197940474316761015">Сайт <ph name="ORIGIN" /> може зберігати зміни в указаних нижче файлах. Зміни зберігаються, лише коли цю вкладку відкрито.</translation>
 <translation id="4198146608511578238">Утримуйте значок "Панель запуску", щоб спілкуватися з Google Асистентом.</translation>
 <translation id="4200689466366162458">Спеціальні слова</translation>
 <translation id="4200983522494130825">Нова &amp;вкладка</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Авоматично під’єднуватися до мобільної мережі</translation>
 <translation id="4268025649754414643">Шифрування ключа</translation>
 <translation id="4270393598798225102">Версія <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Немає збігів</translation>
 <translation id="4275663329226226506">Медіа-дані</translation>
 <translation id="4275830172053184480">Перезапустіть пристрій</translation>
 <translation id="4278101229438943600">Ваш Асистент готовий</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Процесорний час</translation>
 <translation id="4534661889221639075">Повторіть спробу.</translation>
 <translation id="4535127706710932914">Профіль за умовчанням</translation>
+<translation id="4535767533210902251">Сканер відбитків пальців – це верхня клавіша праворуч на клавіатурі. Легко торкніться її будь-яким пальцем.</translation>
 <translation id="4538684596480161368">Завжди блокувати плагіни з неізольованим програмним середовищем на сайті <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Установлено політикою підприємства.</translation>
 <translation id="4542520061254486227">Переглядати ваші дані на веб-сайтах <ph name="WEBSITE_1" /> і <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Інші...</translation>
 <translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Підключити пристрій Bluetooth</translation>
+<translation id="4578012756826807359">Дані для входу видалено.</translation>
 <translation id="4579581181964204535">Не вдається транслювати з <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Сталася помилка під час відновлення Linux</translation>
 <translation id="4582563038311694664">Скинути всі налаштування</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Файли cookie з багатьох сайтів буде очищено під час виходу.</translation>
 <translation id="4765582662863429759">Дозволяє сервісу Android Повідомлення передавати SMS із телефона на Chromebook</translation>
 <translation id="4768332406694066911">Вас ідентифікують сертифікати від цих організацій</translation>
-<translation id="4772404146526168240">Обидва екрани</translation>
 <translation id="4776146737004271126">Відкрити налаштування Android</translation>
 <translation id="4776917500594043016">Пароль користувача  <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Play Маркет</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Увійдіть в обліковий запис, щоб мати доступ до закладок, історії, паролів та інших налаштувань на всіх своїх пристроях. Крім того, ви автоматично входитимете в служби Google.</translation>
 <translation id="4929386379796360314">Місця друку</translation>
 <translation id="4930714375720679147">Увімкнути</translation>
-<translation id="4931132176527519925">Завжди дзеркалювати</translation>
 <translation id="4932733599132424254">Дата</translation>
 <translation id="4933484234309072027">вбудовано на сайті <ph name="URL" /></translation>
 <translation id="493571969993549666">Додати контрольованого користувача</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Увімкнути звук</translation>
 <translation id="4992458225095111526">Підтвердити Powerwash</translation>
 <translation id="4992473555164495036">Адміністратор обмежив доступні методи введення.</translation>
+<translation id="4992866843815555470">Док-станція потребує обслуговування. Якщо вентилятор не працюватиме, вона вимкнеться.</translation>
 <translation id="4992926179187649719">Увімкнути команду "Ok Google"</translation>
 <translation id="4994474651455208930">Дозволити сайтам запитувати встановлення обробників протоколів за умовчанням.</translation>
 <translation id="4994754230098574403">Налаштування</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">Ідентифікатор процесу</translation>
 <translation id="5233638681132016545">Нова вкладка</translation>
 <translation id="5233736638227740678">&amp;Вставити</translation>
-<translation id="5234764350956374838">Відхилити</translation>
 <translation id="5235050375939235066">Видалити додаток?</translation>
 <translation id="5235750401727657667">Відкривати нову вкладку на місці поточної сторінки</translation>
 <translation id="5238278114306905396">Програму "<ph name="EXTENSION_NAME" />" автоматично вилучено.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google рекомендує Chrome</translation>
 <translation id="532247166573571973">Можливо, сервер недоступний. Спробуйте пізніше.</translation>
 <translation id="5324780743567488672">Автоматично визначати часовий пояс на основі ваших геоданих</translation>
+<translation id="5327129740973624286">Вікно "<ph name="WINDOW_TITLE" />" може зберігати дані в оригінальних файлах</translation>
 <translation id="5327248766486351172">Назва</translation>
 <translation id="5327570636534774768">Пристрій зареєстровано в іншому домені. Перед налаштуванням демо-режиму деініціалізуйте пристрій у цьому домені.</translation>
 <translation id="532943162177641444">Торкніться сповіщення на пристрої <ph name="PHONE_NAME" />, щоб налаштувати для нього мобільну точку доступу.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985">Сайт <ph name="SITE_NAME" /> хоче</translation>
 <translation id="5534304873398226603">Відхилити фото або відео</translation>
 <translation id="5535941515421698170">Також вилучити всі дані з цього пристрою</translation>
-<translation id="5537725057119320332">Акторський склад</translation>
 <translation id="5539221284352502426">Сервер відхилив введений вами пароль. Можливі причини: пароль закороткий; пароль має містити цифри або символи; пароль має відрізнятися від попередніх.</translation>
 <translation id="5541687815721799001">Відкрити додаток</translation>
 <translation id="5542132724887566711">Профіль</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Докладніше про доступ до сайтів</translation>
 <translation id="6000758707621254961">Результатів для запиту "<ph name="SEARCH_TEXT" />": <ph name="RESULT_COUNT" /></translation>
 <translation id="6002458620803359783">Рекомендовані голоси</translation>
-<translation id="6005695835120147974">Маршрутизатор медіавмісту</translation>
 <translation id="6006484371116297560">Класична</translation>
 <translation id="6007240208646052708">Голосовий пошук недоступний вашою мовою.</translation>
 <translation id="6009781704028455063">Вбудований датчик</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Новий принтер у вашій мережі}one{Нові принтери у вашій мережі}few{Нові принтери у вашій мережі}many{Нові принтери у вашій мережі}other{Нові принтери у вашій мережі}}</translation>
 <translation id="6286708577777130801">Інформація про збережені паролі</translation>
 <translation id="6289452883081499048">Персоналізовані сервіси Google, як-от Play</translation>
-<translation id="6290556621549272952">З цією функцією ви можете транслювати вміст із Chromium на телевізор чи інші пристрої.</translation>
 <translation id="6291949900244949761">Запитувати, коли сайт хоче отримати доступ до пристроїв USB (рекомендовано)</translation>
 <translation id="6291953229176937411">&amp;Показати в програмі Finder</translation>
 <translation id="6295158916970320988">Усі сайти</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Надсилати <ph name="BEGIN_LINK1" />інформацію про систему<ph name="END_LINK1" /> та <ph name="BEGIN_LINK2" />показники<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Заборонити сайтам використовувати датчики руху</translation>
 <translation id="6397094776139756010">Параметри синхронізації та персоналізації</translation>
+<translation id="6397449385184089588">Сайт <ph name="ORIGIN" /> зможе зберігати зміни у файлах в указаній нижче папці. Зміни зберігаються, лише коли цю вкладку відкрито.</translation>
 <translation id="6398715114293939307">Вилучити Google Play Маркет</translation>
 <translation id="6398765197997659313">Вийти з повноекранного режиму</translation>
 <translation id="6399774419735315745">Шпигунка</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">На певних сайтах</translation>
 <translation id="6455894534188563617">&amp;Нова папка</translation>
 <translation id="6456394469623773452">Оптимальний</translation>
+<translation id="6456955391422100996">Оголошення вилучено.</translation>
 <translation id="645705751491738698">Продовжити блокування JavaScript</translation>
 <translation id="6458701200018867744">Помилка завантаження (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Використати виділення для пошуку</translation>
 <translation id="6459799433792303855">Активне вікно переміщено на інший дисплей</translation>
 <translation id="6460601847208524483">Знайти наступне</translation>
+<translation id="6461170143930046705">Пошук мереж…</translation>
 <translation id="6463795194797719782">&amp;Редагувати</translation>
 <translation id="6466988389784393586">&amp;Відкрити всі закладки</translation>
 <translation id="6467304607960172345">Оптимізувати відео на весь екран</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Пристрій під'єднано до такої мережі: <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Надіслати</translation>
 <translation id="6528513914570774834">Надіти іншим користувачам цього пристрою доступ до цієї мережі</translation>
 <translation id="652948702951888897">Історія Chrome</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Оцінити</translation>
 <translation id="6681668084120808868">Зробити фото</translation>
 <translation id="6681964764822470072"><ph name="APP_NAME" /> буде видалено.</translation>
-<translation id="6685083257944113180">Зупинити: <ph name="SINK_STATUS" /> (<ph name="SINK_NAME" />)</translation>
 <translation id="668599234725812620">Відкрити Google Play</translation>
 <translation id="6686490380836145850">Закрити вкладки праворуч</translation>
 <translation id="6686817083349815241">Зберегти пароль</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Відкрити в розгорнутому вигляді</translation>
 <translation id="6845325883481699275">Допоможіть покращити безпеку Chrome</translation>
 <translation id="6848388270925200958">Зараз у вас є кілька карток, які можна використовувати лише на цьому пристрої</translation>
+<translation id="6850286078059909152">Колір тексту</translation>
 <translation id="6851497530878285708">Додаток увімкнено</translation>
 <translation id="6853388645642883916">Оновлення в режимі сну</translation>
 <translation id="68541483639528434">Закрити інші вкладки</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Прокрутіть або натисніть</translation>
 <translation id="6923633482430812883">Помилка підключення спільного доступу. Перевірте, чи файловий сервер, до якого ви підключаєтеся, підтримує SMBv2 або новіших версій.</translation>
 <translation id="6930036377490597025">Внутрішній ключ безпеки або вбудований датчик</translation>
-<translation id="6930242544192836755">Тривалість</translation>
 <translation id="693807610556624488">Операція внесення змін перевищує максимальну довжину атрибута пристрою <ph name="DEVICE_NAME" />.</translation>
 <translation id="6941937518557314510">Увійдіть у <ph name="TOKEN_NAME" />, щоб пройти автентифікацію на <ph name="HOST_NAME" />, використовуючи свій сертифікат.</translation>
 <translation id="6943176775188458830">Скасувати друк</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Обробники платежів</translation>
 <translation id="6951663584153258142">Ваша організація просить вас оновити цей пристрій</translation>
 <translation id="6953878494808481632">Пов’язана інформація</translation>
+<translation id="6953916367503892689">{0,plural, =1{Файл: <ph name="FILES" />}one{Файли: <ph name="FILES" />}few{Файли: <ph name="FILES" />}many{Файли: <ph name="FILES" />}other{Файли: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Перевірити спливаюче вікно</translation>
 <translation id="6957044667612803194">Цей ключ безпеки не підтримує PIN-коди</translation>
 <translation id="6957231940976260713">Назва служби</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Цю сторінку неможливо перекласти.</translation>
 <translation id="7254951428499890870">Справді запустити додаток "<ph name="APP_NAME" />" у режимі діагностики?</translation>
 <translation id="7255002516883565667">Зараз у вас є одна картка, яку можна використовувати лише на цьому пристрої</translation>
-<translation id="7255220508626648026">Транслюється: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Торкніться ключа безпеки знову, щоб підтвердити скидання. Усі дані, збережені на ньому (зокрема PIN-код), буде стерто.</translation>
 <translation id="7255935316994522020">Застосувати</translation>
 <translation id="7256069762010468647">Сайт використовує камеру</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">версія для розробників</translation>
 <translation id="7456847797759667638">Відкрити розташування...</translation>
 <translation id="7458168200501453431">Використовує ту саму технологію перевірки правопису, що й Пошук Google. Текст, який ви вводите у веб-переглядачі, надсилається в Google.</translation>
+<translation id="7460045493116006516">Поточна встановлена тема</translation>
 <translation id="7461924472993315131">Закріпити</translation>
 <translation id="746216226901520237">Наступного разу ви зможете розблокувати пристрій <ph name="DEVICE_TYPE" /> за допомогою свого телефона. Smart Lock можна вимкнути в налаштуваннях.</translation>
 <translation id="7463006580194749499">Додати користувача</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Нова вкладка</translation>
 <translation id="7556033326131260574">Smart Lock не вдалося підтвердити ваш обліковий запис. Щоб увійти, введіть пароль.</translation>
 <translation id="7556242789364317684">На жаль, <ph name="SHORT_PRODUCT_NAME" /> не може відновити ваші налаштування. Щоб виправити помилку, <ph name="SHORT_PRODUCT_NAME" /> має відновити заводські налаштування вашого пристрою за допомогою функції Powerwash.</translation>
+<translation id="7559444627302317199">Перевірте з'єднання з мережею й повторіть спробу.</translation>
 <translation id="7559719679815339381">Зачекайте… Додаток-термінал оновлюється. Не витягуйте носій USB.</translation>
 <translation id="7561196759112975576">Завжди</translation>
 <translation id="7563991800558061108">Щоб виправити цю помилку, увійдіть у свій обліковий запис Google
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Створити копію</translation>
 <translation id="7887864092952184874">Підключено мишу Bluetooth</translation>
 <translation id="7889565820482017512">Масштаб</translation>
-<translation id="7889966925761734854">Пошук</translation>
 <translation id="7893008570150657497">Отримувати доступ до фотографій, музики й інших медіа-файлів із вашого комп’ютера</translation>
 <translation id="7893153962594818789">Bluetooth вимкнено на цьому пристрої <ph name="DEVICE_TYPE" />. Введіть пароль і ввімкніть Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (за умовчанням)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Залишити на панелі інструментів</translation>
 <translation id="7898725031477653577">Завжди перекладати</translation>
 <translation id="790040513076446191">Керувати налаштуваннями, пов’язаними з конфіденційністю</translation>
-<translation id="7902874111237641165">Плавні рухи [бета-версія]</translation>
 <translation id="7903345046358933331">Сторінка перестала відповідати. Зачекайте, доки вона почне відповідати, або закрийте її.</translation>
 <translation id="7903742244674067440">У вас є сертифікати, які ідентифікують ці центри сертифікації</translation>
 <translation id="7903925330883316394">Службовий додаток: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">Читати весь текст, відтворений за допомогою синтезованого мовлення</translation>
 <translation id="8037357227543935929">Запитувати (за умовчанням)</translation>
 <translation id="803771048473350947">Файл</translation>
+<translation id="8042142357103597104">Прозорість тексту</translation>
 <translation id="8044899503464538266">Повільна</translation>
 <translation id="8045253504249021590">Синхронізацію припинено за допомогою Інформаційної панелі Google.</translation>
 <translation id="8045923671629973368">Введіть ідентифікатор додатка або URL-адресу веб-магазину</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Цей сервіс можна вимкнути в налаштуваннях.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN-коди не збігаються</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> використовує налаштування проксі-сервера розширення</translation>
-<translation id="8099495042588009598">Інші дозволи</translation>
 <translation id="8101987792947961127">Під час наступного перезавантаження потрібно виконати Powerwash</translation>
 <translation id="8102159139658438129">Перейдіть у <ph name="LINK_BEGIN" />Налаштування<ph name="LINK_END" />, щоб переглянути параметри для підключеного телефона</translation>
 <translation id="8104696615244072556">Виконати Powerwash на вашому пристрої <ph name="IDS_SHORT_PRODUCT_NAME" /> і повернутися до попередньої версії.</translation>
@@ -4773,8 +4788,10 @@
     Цей сайт заблоковано помилково.</translation>
 <translation id="8184288427634747179">Перейти у профіль "<ph name="AVATAR_NAME" />"</translation>
 <translation id="8184318863960255706">Докладніше</translation>
+<translation id="8184472985242519288">Однорідний текст</translation>
 <translation id="8185331656081929126">Показувати сповіщення, якщо в мережі виявлено нові принтери</translation>
 <translation id="8186609076106987817">Серверу не вдалося знайти файл.</translation>
+<translation id="8187950680397073878">Сайт <ph name="ORIGIN" /> може переглядати всі файли в указаній нижче папці. Зміни в папці можна бачити, лише коли цю вкладку відкрито.</translation>
 <translation id="8188389033983459049">Щоб продовжити, перегляньте налаштування пристрою й увімкніть Bluetooth</translation>
 <translation id="8190193592390505034">З'єднання з <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Керувати вашими програмами, розширеннями та темами</translation>
@@ -4878,7 +4895,6 @@
 <translation id="833986336429795709">Виберіть додаток, щоб відкрити посилання</translation>
 <translation id="8342861492835240085">Виберіть колекцію</translation>
 <translation id="834290227245955730">Недійсний PIN-код. Залишилося стільки спроб: <ph name="RETRIES" />.</translation>
-<translation id="8343956361364550006">Щоб транслювати високоякісні відео чи анімацію, використовуйте високу пропускну спроможність. Інші люди з повільним з’єднанням можуть не бачити ваш вміст.</translation>
 <translation id="8351419472474436977">Розширення керує налаштуваннями проксі-сервера, тобто може змінювати та переривати будь-які ваші дії онлайн, а також стежити за ними. Якщо ви не знаєте причини такої зміни, імовірно, вона небажана.</translation>
 <translation id="8351630282875799764">Акумулятор не заряджається</translation>
 <translation id="835238322900896202">Під час видалення сталася помилка. Видаліть додаток через Terminal.</translation>
@@ -4911,9 +4927,11 @@
 <translation id="839736845446313156">Зареєструйтеся</translation>
 <translation id="8398877366907290961">Продовжити</translation>
 <translation id="8400146488506985033">Керувати користувачами</translation>
+<translation id="8400444932218572097">Сайт <ph name="ORIGIN" /> може зберігати зміни у файлах в указаній нижче папці. Зміни зберігаються, лише коли цю вкладку відкрито.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Спершу запитувати (рекомендується)</translation>
 <translation id="8418445294933751433">&amp;Показати як вкладку</translation>
+<translation id="8418905021510211421">Ця сторінка може переглядати папку на вашому пристрої.</translation>
 <translation id="8419098111404128271">Результати пошуку для запиту "<ph name="SEARCH_TEXT" />"</translation>
 <translation id="8419368276599091549">Вітаємо на пристрої <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Змінити</translation>
@@ -4933,6 +4951,7 @@
 <translation id="8438566539970814960">Покращувати пошук і веб-перегляд</translation>
 <translation id="8439506636278576865">Пропонувати переклад сторінок цією мовою</translation>
 <translation id="8440630305826533614">Додатки Linux</translation>
+<translation id="844241640324986723">Не вдалося видалити дані для входу.</translation>
 <translation id="8443338615972234259">Створіть новий обліковий запис для контрольованого користувача.</translation>
 <translation id="8446884382197647889">Докладніше</translation>
 <translation id="8447409163267621480">Натискайте Ctrl або Alt</translation>
@@ -4948,8 +4967,6 @@
 <translation id="8461914792118322307">Проксі-сервер</translation>
 <translation id="8463215747450521436">Можливо, адміністратор, який керує цим користувачем, видалив або заблокував його. Зв’яжіться з адміністратором, якщо хочете й надалі входити як цей користувач.</translation>
 <translation id="846374874681391779">Панель завантаження</translation>
-<translation id="8463807869745732775">"&gt;
-    Збережені для ключа безпеки дані для входу</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> вимкнено.</translation>
 <translation id="8464132254133862871">Цей обліковий запис користувача не може використовуватися для цієї служби.</translation>
 <translation id="8465252176946159372">Недійсний</translation>
@@ -5015,6 +5032,7 @@
 <translation id="8569002732135253578">Друк "<ph name="DOCUMENT_NAME" />"</translation>
 <translation id="8569682776816196752">Не знайдено жодного місця призначення</translation>
 <translation id="8571213806525832805">Останні 4 тижні</translation>
+<translation id="8573403125070227391">Це оголошення використовує забагато ресурсів пристрою, тож веб-переглядач Chrome вилучив його.</translation>
 <translation id="8574990355410201600">Завжди дозволяти звук на сторінці <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Утримуйте <ph name="KEY_EQUIVALENT" />, щоб вийти</translation>
 <translation id="8578639784464423491">Не може перевищувати 99 літер</translation>
@@ -5038,13 +5056,13 @@
 <translation id="8609465669617005112">Угору</translation>
 <translation id="8610103157987623234">Неправильний формат, повторіть спробу</translation>
 <translation id="8615618338313291042">Програма в режимі анонімного перегляду: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Додати тінь</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Статус роумінгу</translation>
 <translation id="8620765578342452535">Налаштувати з’єднання з мережею</translation>
 <translation id="8621866727807194849">Виявлено шкідливе програмне забезпечення на вашому комп’ютері. Chrome видаляє його, відновлює налаштування й вимикає розширення. Завдяки цьому веб-переглядач знову працюватиме належним чином.</translation>
 <translation id="8621979332865976405">Поділитися цілим екраном</translation>
 <translation id="862542460444371744">&amp;Розширення</translation>
-<translation id="8627151598708688654">Виберіть джерело</translation>
 <translation id="862727964348362408">Призупинено</translation>
 <translation id="862750493060684461">Кеш CSS</translation>
 <translation id="8627795981664801467">Лише захищені з’єднання</translation>
@@ -5098,6 +5116,7 @@
 <translation id="8688579245973331962">Немає вашого імені?</translation>
 <translation id="8688591111840995413">Неправильний пароль</translation>
 <translation id="8688672835843460752">Доступно</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Відкрити &amp;розташування...</translation>
 <translation id="869884720829132584">Меню програм</translation>
 <translation id="869891660844655955">Діє до</translation>
@@ -5261,6 +5280,7 @@
 <translation id="891365694296252935">Надсилати дані про використання й діагностику. Цей пристрій наразі автоматично надсилає в Google дані про діагностику та використання пристрою і додатків. Ця інформація не використовуватиметься для встановлення особи вашої дитини, а допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Це налаштування застосовує власник. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google дитини. <ph name="BEGIN_LINK1" />Докладніше<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Завантаження пропозиції</translation>
 <translation id="8916476537757519021">Додатковий анонімний фрейм: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780">Вікно "<ph name="WINDOW_TITLE" />" може переглядати папку на пристрої</translation>
 <translation id="8919275547519617350">Щоб мати доступ до паролів на всіх своїх пристроях, увійдіть в обліковий запис і ввімкніть синхронізацію.</translation>
 <translation id="8921366488406707015">Підтвердження ключа безпеки…</translation>
 <translation id="8922013791253848639">Завжди дозволяти показ реклами на цьому сайті</translation>
@@ -5290,7 +5310,6 @@
 <translation id="8965037249707889821">Введіть старий пароль</translation>
 <translation id="8966870118594285808">Відкрийте вкладку знову, якщо ви випадково закрили її</translation>
 <translation id="8967866634928501045">Натисніть Alt + Shift + A, щоб показати</translation>
-<translation id="8970203673128054105">Переглянути список режиму трансляції</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">Зверніться до адміністратора мережі, щоб переконатися, що брандмауер не блокує завантаження із серверів Google.</translation>
 <translation id="8973557916016709913">Вилучити масштабування</translation>
@@ -5439,6 +5458,7 @@
 <translation id="9214520840402538427">На жаль, ініціалізація атрибутів часу встановлення минула. Зв’яжіться з представником служби підтримки.</translation>
 <translation id="9214695392875603905">Кекс</translation>
 <translation id="9215293857209265904">Додано розширення "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="9216712190298404438">Сайт <ph name="ORIGIN" /> зможе зберігати зміни в указаному нижче файлі. Зміни зберігаються, лише коли цю вкладку відкрито.</translation>
 <translation id="9218430445555521422">Установити за умовчанням</translation>
 <translation id="9219103736887031265">Зображення</translation>
 <translation id="9220525904950070496">Видалення облікового запису</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 80807b3..bf6fa91 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">Lỗi khi khởi động máy ảo. Vui lòng thử lại.</translation>
 <translation id="1089439967362294234">Thay đổi mật khẩu</translation>
 <translation id="1090126737595388931">Không có ứng dụng nền nào đang chạy</translation>
+<translation id="1090290614672149983">Lưu các thay đổi vào tệp gốc?</translation>
 <translation id="1090918500949388876">Nói "Ok Google" bất cứ lúc nào để sử dụng Trợ lý khi màn hình đang bật</translation>
 <translation id="1091767800771861448">Nhấn ESCAPE để bỏ qua (Chỉ phiên bản không chính thức).</translation>
 <translation id="1093457606523402488">Mạng hiển thị:</translation>
 <translation id="1094607894174825014">Đã yêu cầu tác vụ đọc hoặc ghi với hiệu số không hợp lệ trên: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="1097658378307015415">Trước khi đăng nhập, vui lòng đăng nhập với tư cách khách để kích hoạt mạng <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">Tab này được phép lưu vào tệp gốc.</translation>
 <translation id="1103523840287552314">Luôn dịch <ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">&amp;Dừng</translation>
 <translation id="1110155001042129815">Chờ</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">Kính mát</translation>
 <translation id="1151917987301063366">Luôn cho phép <ph name="HOST" /> sử dụng các cảm biến của thiết bị</translation>
 <translation id="1153356358378277386">Thiết bị được ghép nối</translation>
-<translation id="1156488781945104845">Thời gian hiện tại</translation>
 <translation id="1161575384898972166">Vui lòng đăng nhập vào <ph name="TOKEN_NAME" /> để xuất chứng chỉ ứng dụng khách.</translation>
 <translation id="1163931534039071049">&amp;Xem nguồn khung</translation>
 <translation id="1164674268730883318">Tắt Smart Lock cho <ph name="DEVICE_TYPE" />?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Cài đặt bộ nhớ của Adobe Flash Player</translation>
 <translation id="1274997165432133392">Cookie và các dữ liệu trang web khác</translation>
 <translation id="127668050356036882">Đóng tất cả các cửa sổ</translation>
-<translation id="1277908057200820621">Xem danh sách thiết bị</translation>
 <translation id="1280820357415527819">Đang tìm kiếm mạng di động</translation>
 <translation id="1285320974508926690">Không bao giờ dịch trang web này</translation>
 <translation id="1285484354230578868">Lưu trữ dữ liệu trong tài khoản Google Drive của bạn</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">Mạng chủ, không chuyển vùng</translation>
 <translation id="1316136264406804862">Đang tìm kiếm...</translation>
 <translation id="1316495628809031177">Quá trình đồng bộ hóa hiện tạm dừng</translation>
+<translation id="1317637799698924700">Đế sạc sẽ hoạt động ở chế độ tương thích với USB Type-C.</translation>
 <translation id="1322046419516468189">Xem và quản lý mật khẩu đã lưu trong <ph name="SAVED_PASSWORDS_STORE" /> của bạn</translation>
 <translation id="1326317727527857210">Để có các tab từ các thiết bị khác của bạn, hãy đăng nhập vào Chrome.</translation>
 <translation id="1327074568633507428">Máy in trên Google Cloud Print</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382"><ph name="ENROLLMENT_DOMAIN" /> <ph name="BEGIN_LINK" />quản lý trình duyệt<ph name="END_LINK" /> của bạn</translation>
 <translation id="1366177842110999534">Chạy các công cụ, trình chỉnh sửa và môi trường phát triển được tích hợp (IDE) của Linux trên <ph name="DEVICE_TYPE" /> của bạn. &lt;a target="_blank" href="<ph name="URL" />"&gt;Tìm hiểu thêm&lt;/a&gt;</translation>
 <translation id="1367951781824006909">Chọn tệp</translation>
+<translation id="1370749010280229230">Màn hình kết nối với đế sạc gặp vấn đề</translation>
 <translation id="1371301976177520732">Dấu trang, mật khẩu, lịch sử và nhiều nội dung khác trên tất cả các thiết bị của bạn</translation>
 <translation id="1372841398847029212">Đồng bộ hóa với tài khoản của bạn</translation>
 <translation id="1374844444528092021">Chứng chỉ yêu cầu bởi mạng "<ph name="NETWORK_NAME" />" chưa được cài đặt hoặc không còn hợp lệ.  Vui lòng nhận chứng chỉ mới và thử kết nối lại.</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">Trang web, Tệp đơn</translation>
 <translation id="1451917004835509682">Thêm người được giám sát</translation>
 <translation id="1454223536435069390">&amp;Chụp ảnh màn hình</translation>
+<translation id="1458243790901188746">{0,plural, =1{Thư mục: <ph name="DIRECTORIES" />}other{Thư mục: <ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">Công cụ tìm kiếm được thêm bởi tiện ích</translation>
 <translation id="146000042969587795">Khung này đã bị chặn bởi vì có chứa một số nội dung không an toàn.</translation>
 <translation id="146219525117638703">Trạng thái ONC</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">Hiển thị tùy chọn nhập</translation>
 <translation id="1651008383952180276">Bạn phải nhập cùng một cụm mật khẩu hai lần</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Thêm máy in vào Google Cloud Print để bạn có thể in từ bất cứ đâu.}other{Thêm # máy in vào Google Cloud Print để bạn có thể in từ bất cứ đâu.}}</translation>
+<translation id="1656528038316521561">Độ mờ của nền</translation>
 <translation id="1657406563541664238">Trợ giúp cải thiện <ph name="PRODUCT_NAME" /> bằng cách tự động gửi cho Google thống kê sử dụng và báo cáo sự cố</translation>
 <translation id="1658424621194652532">Trang này đang truy cập micrô của bạn.</translation>
 <translation id="1660204651932907780">Cho phép các trang web phát âm thanh (được đề xuất)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> muốn xem nhãn hiệu và kiểu Khóa bảo mật của bạn</translation>
 <translation id="1679068421605151609">Công cụ dành cho nhà phát triển</translation>
 <translation id="1679806121152819234">Máy chủ ảo plugin</translation>
+<translation id="1679810534535368772">Bạn có chắc chắn muốn thoát không?</translation>
 <translation id="167983332380191032">Lỗi HTTP do dịch vụ quản lý gửi</translation>
 <translation id="1680849702532889074">Đã xảy ra lỗi trong quá trình cài đặt ứng dụng Linux.</translation>
 <translation id="16815041330799488">Không cho phép các trang web xem văn bản và hình ảnh đã sao chép sang khay nhớ tạm</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">Mã nhận dạng nội dung đa phương tiện được bảo vệ</translation>
 <translation id="175196451752279553">&amp;Mở lại tab đã đóng</translation>
 <translation id="1753905327828125965">Truy cập nhiều nhất</translation>
+<translation id="1755601632425835748">Cỡ chữ</translation>
 <translation id="1756681705074952506">Phương thức nhập</translation>
 <translation id="1757301747492736405">Đang chờ gỡ cài đặt</translation>
 <translation id="175772926354468439">Bật chủ đề</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">&amp;Nhỏ hơn</translation>
 <translation id="1919345977826869612">Quảng cáo</translation>
 <translation id="1919814239594435008">Đã cho phép truy cập vào plugin không có hộp cát</translation>
+<translation id="1920390473494685033">Danh bạ</translation>
 <translation id="1921050530041573580">Ghép nối điện thoại của bạn với ứng dụng Messages</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">Trải nghiệm các tính năng thông minh của Google trong <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">Tab ẩn danh: <ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_NAME" /> trên <ph name="PEPPER_PLUGIN_DOMAIN" /> muốn truy cập vào máy tính của bạn</translation>
 <translation id="2178614541317717477">Lộ CA</translation>
+<translation id="2179849162388791084">Không thu thập được dữ liệu đăng nhập từ khóa bảo mật của bạn.</translation>
 <translation id="218070003709087997">Sử dụng một số để cho biết số bản cần in (1 đến 999).</translation>
 <translation id="2184515124301515068">Cho phép Chrome chọn thời điểm trang web có thể phát âm thanh (khuyên dùng)</translation>
 <translation id="2187895286714876935">Lỗi nhập chứng chỉ máy chủ</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">Tất cả cookie và dữ liệu trang web</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{Đã sao chép 1 mục}other{Đã sao chép # mục}}</translation>
 <translation id="2278562042389100163">Mở cửa sổ trình duyệt</translation>
-<translation id="2279874276457403668">Chỉ có thể tạo một phiên mỗi lần.</translation>
 <translation id="2280486287150724112">Lề phải</translation>
 <translation id="2282146716419988068">Quá trình GPU</translation>
 <translation id="2282155092769082568">URL tự động định cấu hình:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">Ghi chú trên màn hình khóa được tự động lưu vào <ph name="LOCK_SCREEN_APP_NAME" />. Ghi chú mới nhất của bạn sẽ vẫn còn trên màn hình khóa.</translation>
 <translation id="2353297238722298836">Cho phép máy ảnh và micrô</translation>
 <translation id="2356070529366658676">Yêu cầu</translation>
-<translation id="2357949918965361754">Bạn có thể sử dụng tính năng này để hiển thị nội dung từ Chrome trên TV hoặc các thiết bị khác.</translation>
 <translation id="2359345697448000899">Quản lý tiện ích của bạn bằng cách nhấp vào Tiện ích trong menu Công cụ.</translation>
 <translation id="2359808026110333948">Tiếp tục</translation>
 <translation id="236117173274098341">Tối ưu hóa</translation>
@@ -965,6 +971,7 @@
 <translation id="2436720498717686157">Tổ chức của bạn yêu cầu bạn cập nhật thiết bị này ngay bây giờ</translation>
 <translation id="2439545803278355377">Nhập mã PIN mới. Mã PIN phải dài ít nhất 4 ký tự và có thể bao gồm chữ cái, số và các ký tự khác.</translation>
 <translation id="2440604414813129000">Xem &amp;nguồn</translation>
+<translation id="2442916515643169563">Đổ bóng văn bản</translation>
 <translation id="2444119669991608829">Trang không viết bằng <ph name="LANGUAGE" />?</translation>
 <translation id="2445081178310039857">Thư mục gốc của tiện ích là bắt buộc.</translation>
 <translation id="2445484935443597917">Tạo hồ sơ mới</translation>
@@ -1180,6 +1187,7 @@
 <translation id="2738771556149464852">Không được Sau</translation>
 <translation id="2739191690716947896">Gỡ lỗi</translation>
 <translation id="2739240477418971307">Thay đổi cài đặt trợ năng của bạn</translation>
+<translation id="274029851662193272">Hạ xuống</translation>
 <translation id="2740393541869613458">xem lại các trang web mà người dùng được giám sát đã truy cập và</translation>
 <translation id="2741912629735277980">Hiển thị giao diện người dùng trên màn hình đăng nhập</translation>
 <translation id="274290345632688601">Đang khôi phục các ứng dụng và tệp Linux</translation>
@@ -1228,6 +1236,7 @@
 <translation id="2806891468525657116">Lối tắt đã tồn tại</translation>
 <translation id="2807517655263062534">Các tệp bạn tải xuống sẽ xuất hiện ở đây</translation>
 <translation id="2809586584051668049">và <ph name="NUMBER_ADDITIONAL_DISABLED" /> mục khác</translation>
+<translation id="2812049959647166806">Không hỗ trợ Thunderbolt</translation>
 <translation id="2812944337881233323">Thử đăng xuất và đăng nhập lại</translation>
 <translation id="2812989263793994277">Không hiển thị bất kỳ hình ảnh nào</translation>
 <translation id="281390819046738856">Không thể ký yêu cầu.</translation>
@@ -1250,7 +1259,6 @@
 <translation id="2841837950101800123">Nhà cung cấp</translation>
 <translation id="2844169650293029770">Thiết bị USB-C (cổng phía trước, bên trái)</translation>
 <translation id="2845382757467349449">Luôn Hiển thị Thanh Dấu trang</translation>
-<translation id="2847759467426165163">Truyền tới</translation>
 <translation id="284805635805850872">Xóa phần mềm độc hại?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">Không làm sạch được</translation>
@@ -1297,6 +1305,7 @@
     Thông báo máy chủ: <ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">Thêm thư viện của phương tiện theo thư mục</translation>
 <translation id="2910318910161511225">Hãy kết nối với mạng rồi thử lại</translation>
+<translation id="2910518940971897750">Lưu vào tệp gốc</translation>
 <translation id="2913331724188855103">Cho phép trang web lưu và đọc dữ liệu cookie (được đề xuất)</translation>
 <translation id="2915102088417824677">Xem nhật ký hoạt động</translation>
 <translation id="2915873080513663243">Tự động quét</translation>
@@ -1361,12 +1370,14 @@
 <translation id="3013291976881901233">Thiết bị MIDI</translation>
 <translation id="3015639418649705390">Chạy lại ngay</translation>
 <translation id="3016329696181678353">Không thể tự động định cấu hình cho <ph name="PRINTER_NAME" />. Vui lòng chỉ định các tùy chọn cài đặt nâng cao cho máy in.</translation>
+<translation id="3016381065346027039">Không có mục nhật ký nào</translation>
 <translation id="3016641847947582299">Thành phần đã cập nhật</translation>
 <translation id="3016780570757425217">Biết vị trí của bạn</translation>
 <translation id="3017079585324758401">Nền</translation>
 <translation id="3020183492814296499">Phím tắt</translation>
 <translation id="3020990233660977256">Số Sê-ri: <ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">Bướm</translation>
+<translation id="3021408157810018664">Lưu các thay đổi vào tệp gốc?</translation>
 <translation id="3021426244864538700">Truy cập vào dữ liệu của trang web này</translation>
 <translation id="3021678814754966447">&amp;Xem Nguồn Khung</translation>
 <translation id="3022978424994383087">Không hiểu được.</translation>
@@ -1459,6 +1470,7 @@
 <translation id="3170072451822350649">Bạn cũng có thể bỏ qua việc đăng nhập và <ph name="LINK_START" />duyệt với tư cách khách<ph name="LINK_END" />.</translation>
 <translation id="3172045848207518317">Một trang web đang truy cập vào đầu vào video</translation>
 <translation id="3177909033752230686">Ngôn ngữ trang:</translation>
+<translation id="3179982752812949580">Phông chữ</translation>
 <translation id="3181954750937456830">Duyệt web an toàn (bảo vệ bạn cũng như thiết bị của bạn khỏi các trang web nguy hiểm)</translation>
 <translation id="3182749001423093222">Kiểm tra chính tả</translation>
 <translation id="3183139917765991655">Trình nhập hồ sơ</translation>
@@ -1511,7 +1523,6 @@
 <translation id="3275778913554317645">Mở dưới dạng cửa sổ</translation>
 <translation id="3278001907972365362">Bạn cần chú ý đến Tài khoản Google của mình</translation>
 <translation id="3279230909244266691">Quá trình này có thể mất vài phút. Đang khởi động máy ảo.</translation>
-<translation id="3279741024917655738">Hiển thị video ở chế độ toàn màn hình trên</translation>
 <translation id="3280237271814976245">Lưu &amp;thành...</translation>
 <translation id="3280243678470289153">Tiếp tục điều hướng trong Chrome</translation>
 <translation id="3281892622610078515">Các tệp và chương trình cần cách ly:</translation>
@@ -1533,7 +1544,7 @@
 <translation id="3303855915957856445">Không tìm thấy kết quả tìm kiếm nào</translation>
 <translation id="3305389145870741612">Quá trình định dạng có thể mất vài giây. Vui lòng đợi.</translation>
 <translation id="3305661444342691068">Mở PDF ở chế độ xem trước</translation>
-<translation id="3306684685104080068">Cho phép truyền tới các dịch vụ dựa trên đám mây như Google Hangouts.</translation>
+<translation id="3307871847038842490">Trang này được phép lưu vào tệp gốc.</translation>
 <translation id="3308006649705061278">Đơn vị Tổ chức (OU)</translation>
 <translation id="3308116878371095290">Trang này đã bị chặn cài đặt cookie.</translation>
 <translation id="3308134619352333507">Nút ẩn</translation>
@@ -1639,7 +1650,6 @@
 <translation id="3462413494201477527">Hủy thiết lập tài khoản?</translation>
 <translation id="3464012987031883895">Một trang web truy cập vào đầu vào âm thanh</translation>
 <translation id="346431825526753">Đây là tài khoản cho trẻ em do <ph name="CUSTODIAN_EMAIL" /> quản lý.</translation>
-<translation id="3468275649641751422">Truyền trực tuyến tệp âm thanh hoặc video</translation>
 <translation id="3468999815377931311">Điện thoại Android</translation>
 <translation id="3470442499439619530">Xóa người dùng này</translation>
 <translation id="3473479545200714844">Phóng to màn hình</translation>
@@ -1662,6 +1672,7 @@
 <translation id="3496213124478423963">Thu Nhỏ</translation>
 <translation id="3497560059572256875">Chia sẻ Doodle</translation>
 <translation id="3505030558724226696">Thu hồi quyền truy cập thiết bị</translation>
+<translation id="3505635633742443645">Không thể dùng cổng HDMI của đế sạc khi đang dùng cổng USB Type-C để xuất video. Vui lòng sử dụng một cổng khác cho một trong các màn hình.</translation>
 <translation id="3507421388498836150">Quyền hiện tại cho "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="3507888235492474624">Quét lại các thiết bị Bluetooth</translation>
 <translation id="3508920295779105875">Chọn Thư mục Khác...</translation>
@@ -1714,6 +1725,7 @@
 <translation id="3576324189521867626">Đã cài đặt thành công</translation>
 <translation id="3578594933904494462">Nội dung của tab này đang được chia sẻ.</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; muốn chia sẻ máy in &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt; với một nhóm bạn sở hữu: &lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;. Nếu bạn chấp nhận, tất cả thành viên của nhóm sẽ có thể in tới máy in.</translation>
+<translation id="357889014807611375">mạng Wi‑Fi có giới hạn dữ liệu</translation>
 <translation id="3584169441612580296">Đọc và thay đổi ảnh, nhạc và phương tiện khác từ máy tính của bạn</translation>
 <translation id="3587482841069643663">Tất cả</translation>
 <translation id="358796204584394954">Nhập mã này vào "<ph name="DEVICE_NAME" />" để ghép nối:</translation>
@@ -1724,6 +1736,7 @@
 <translation id="359283478042092570">Nhập</translation>
 <translation id="3593965109698325041">Ràng buộc Tên của Chứng chỉ</translation>
 <translation id="3596235046596950091">Bật dịch vụ đám mây</translation>
+<translation id="3599221874935822507">Nhô lên</translation>
 <translation id="3599863153486145794">Xóa lịch sử khỏi tất cả các thiết bị đã đăng nhập. Tài khoản Google của bạn có thể có các dạng lịch sử duyệt web khác tại <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="3600051066689725006">Thông tin yêu cầu web</translation>
 <translation id="3600792891314830896">Tắt tiếng trên các trang web phát âm thanh</translation>
@@ -1738,6 +1751,7 @@
 <translation id="3612673635130633812">Đã tải xuống bởi &lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;</translation>
 <translation id="3613134908380545408">Hiển thị <ph name="FOLDER_NAME" /></translation>
 <translation id="3613422051106148727">&amp;Mở trong tab mới</translation>
+<translation id="3615073365085224194">Chạm ngón tay của bạn vào cảm biến vân tay</translation>
 <translation id="3616113530831147358">Âm thanh</translation>
 <translation id="3616741288025931835">&amp;Xoá Dữ liệu Duyệt web...</translation>
 <translation id="3617891479562106823">Không có nền. Hãy thử lại sau.</translation>
@@ -1819,7 +1833,6 @@
 <translation id="3719826155360621982">Trang chủ</translation>
 <translation id="3720996970802414353">Vẫn chuyển</translation>
 <translation id="3722108462506185496">Lỗi khi khởi động dịch vụ máy ảo. Vui lòng thử lại.</translation>
-<translation id="3723158278575423087">Chào mừng bạn đến với trải nghiệm Truyền trong Chromium!</translation>
 <translation id="3725367690636977613">trang</translation>
 <translation id="3726137731714254362">Việc xóa thư mục từ đây sẽ dừng chia sẻ chứ không xóa tệp.</translation>
 <translation id="3727148787322499904">Việc thay đổi cài đặt này sẽ ảnh hưởng đến tất cả các mạng chia sẻ</translation>
@@ -1854,7 +1867,6 @@
 <translation id="3764314093345384080">Thông tin bản dựng chi tiết</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Kết nối với một thiết bị USB}other{Kết nối với # thiết bị USB}}</translation>
 <translation id="3765246971671567135">Không thể đọc chính sách về chế độ minh họa ngoại tuyến.</translation>
-<translation id="3766223500670287046">Màn hình từ xa</translation>
 <translation id="3768037234834996183">Đang đồng bộ hóa tùy chọn của bạn...</translation>
 <translation id="377050016711188788">Kem</translation>
 <translation id="3771294271822695279">Tệp video</translation>
@@ -1927,7 +1939,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">Nhấc ngón tay lên rồi chạm lại</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />: Đã tạm dừng đồng bộ hóa</translation>
-<translation id="3862134173397075045">Chào mừng bạn đến với trải nghiệm Truyền trong Chrome!</translation>
 <translation id="3862693525629180217">Xác minh qua cảm biến tích hợp</translation>
 <translation id="3862788408946266506">Phải cài đặt ứng dụng có thuộc tính tệp kê khai 'kiosk_only' ở chế độ kiosk Chrome OS</translation>
 <translation id="3865414814144988605">Độ phân giải</translation>
@@ -1976,6 +1987,7 @@
 <translation id="3926002189479431949">Đã thay đổi điện thoại Smart Lock</translation>
 <translation id="3927932062596804919">Từ chối</translation>
 <translation id="3930737994424905957">Đang tìm thiết bị</translation>
+<translation id="3930968231047618417">Màu nền</translation>
 <translation id="3933283459331715412">Khôi phục mật khẩu đã xóa cho <ph name="USERNAME" /></translation>
 <translation id="3936390757709632190">&amp;Mở âm thanh trong tab mới</translation>
 <translation id="3936925983113350642">Mật khẩu bạn chọn sẽ cần dùng để khôi phục chứng chỉ này về sau. Vui lòng ghi lại mật khẩu này vào một vị trí an toàn.</translation>
@@ -1995,6 +2007,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">Đã nhập từ IE</translation>
 <translation id="3950820424414687140">Đăng nhập</translation>
+<translation id="3950828138786918475">Tab này được phép đọc thư mục trên thiết bị của bạn.</translation>
 <translation id="3954354850384043518">Đang diễn ra</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> Hertz)</translation>
 <translation id="3954953195017194676">Bạn không ghi nhật ký sự kiện WebRTC nào gần đây.</translation>
@@ -2013,6 +2026,7 @@
 <translation id="397105322502079400">Đang tính...</translation>
 <translation id="3975565978598857337">Không kết nối được với máy chủ của vùng</translation>
 <translation id="397703832102027365">Đang hoàn tất...</translation>
+<translation id="3977886311744775419">Các bản cập nhật tự động không tải xuống trên loại mạng này, nhưng bạn có thể kiểm tra các bản cập nhật theo cách thủ công.</translation>
 <translation id="3979395879372752341">Đã thêm tiện ích mới (<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">Bật <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">Loại lưu không hợp lệ được nhập.</translation>
@@ -2152,6 +2166,7 @@
 <translation id="4194570336751258953">Cho phép gõ để nhấp</translation>
 <translation id="4195643157523330669">Mở trong tab mới</translation>
 <translation id="4195814663415092787">Tiếp tục từ nơi bạn đã dừng lại</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> có thể lưu trực tiếp các thay đổi vào những tệp sau đây. Trang web này chỉ có thể lưu các thay đổi khi tab này đang mở.</translation>
 <translation id="4198146608511578238">Bạn chỉ cần giữ biểu tượng Trình khởi chạy để nói chuyện với Trợ lý Google của mình.</translation>
 <translation id="4200689466366162458">Từ tùy chỉnh</translation>
 <translation id="4200983522494130825">&amp;Tab mới</translation>
@@ -2199,7 +2214,6 @@
 <translation id="4267953847983678297">Tự động kết nối với mạng di động</translation>
 <translation id="4268025649754414643">Mã hóa Khóa</translation>
 <translation id="4270393598798225102">Phiên bản <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">Không có kết quả phù hợp</translation>
 <translation id="4275663329226226506">Truyền thông</translation>
 <translation id="4275830172053184480">Khởi động lại thiết bị của bạn</translation>
 <translation id="4278101229438943600">Trợ lý của bạn đã sẵn sàng</translation>
@@ -2348,6 +2362,7 @@
 <translation id="4533985347672295764">Thời gian của CPU</translation>
 <translation id="4534661889221639075">Hãy thử lại.</translation>
 <translation id="4535127706710932914">Hồ sơ mặc định</translation>
+<translation id="4535767533210902251">Cảm biến vân tay là phím trên cùng bên phải của bàn phím. Hãy chạm nhẹ ngón tay bất kỳ vào đó.</translation>
 <translation id="4538684596480161368">Luôn chặn các plugin không có hộp cát trên <ph name="HOST" /></translation>
 <translation id="4538792345715658285">Được cài đặt theo chính sách doanh nghiệp.</translation>
 <translation id="4542520061254486227">Đọc dữ liệu của bạn trên <ph name="WEBSITE_1" /> và <ph name="WEBSITE_2" /></translation>
@@ -2381,6 +2396,7 @@
 <translation id="457386861538956877">Thêm...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">Ghép nối thiết bị Bluetooth</translation>
+<translation id="4578012756826807359">Đã xóa thành công dữ liệu đăng nhập của bạn.</translation>
 <translation id="4579581181964204535">Không thể truyền <ph name="HOST_NAME" />.</translation>
 <translation id="4581774856936278355">Lỗi khi khôi phục Linux</translation>
 <translation id="4582563038311694664">Đặt lại tất cả cài đặt</translation>
@@ -2498,7 +2514,6 @@
 <translation id="4763830802490665879">Cookie từ nhiều trang web sẽ bị xóa khi thoát.</translation>
 <translation id="4765582662863429759">Cho phép Android Messages chuyển tiếp tin nhắn văn bản từ điện thoại sang Chromebook</translation>
 <translation id="4768332406694066911">Bạn có các chứng chỉ từ những tổ chức nhận dạng bạn sau đây</translation>
-<translation id="4772404146526168240">Cả hai màn hình</translation>
 <translation id="4776146737004271126">Mở Cài đặt Android</translation>
 <translation id="4776917500594043016">Mật khẩu cho <ph name="USER_EMAIL_ADDRESS" /></translation>
 <translation id="4777825441726637019">Cửa hàng Play</translation>
@@ -2606,7 +2621,6 @@
 <translation id="4927846293686536410">Đăng nhập để sử dụng dấu trang, lịch sử hoạt động, mật khẩu và các tùy chọn cài đặt khác trên tất cả thiết bị của bạn. Bạn cũng sẽ tự động được đăng nhập vào các dịch vụ Google của mình.</translation>
 <translation id="4929386379796360314">Đích in</translation>
 <translation id="4930714375720679147">Bật</translation>
-<translation id="4931132176527519925">Luôn sử dụng tính năng phản chiếu</translation>
 <translation id="4932733599132424254">Ngày Tháng</translation>
 <translation id="4933484234309072027">được nhúng trên <ph name="URL" /></translation>
 <translation id="493571969993549666">Thêm người dùng được giám sát</translation>
@@ -2646,6 +2660,7 @@
 <translation id="4992066212339426712">Bật âm thanh</translation>
 <translation id="4992458225095111526">Xác nhận Powerwash</translation>
 <translation id="4992473555164495036">Quản trị viên của bạn đã giới hạn các phương thức nhập có sẵn.</translation>
+<translation id="4992866843815555470">Bạn cần bảo dưỡng đế sạc của mình. Nếu không có quạt nào hoạt động, thì đế sạc của bạn sẽ tắt.</translation>
 <translation id="4992926179187649719">Bật 'Ok Google'</translation>
 <translation id="4994474651455208930">Cho phép các trang web yêu cầu trở thành trình xử lý mặc định cho giao thức</translation>
 <translation id="4994754230098574403">Đang thiết lập</translation>
@@ -2784,7 +2799,6 @@
 <translation id="5233231016133573565">ID Tiến trình</translation>
 <translation id="5233638681132016545">Tab mới</translation>
 <translation id="5233736638227740678">&amp;Dán</translation>
-<translation id="5234764350956374838">Loại bỏ</translation>
 <translation id="5235050375939235066">Gỡ cài đặt ứng dụng?</translation>
 <translation id="5235750401727657667">Thay thế trang bạn sẽ nhìn thấy khi mở tab mới</translation>
 <translation id="5238278114306905396">Ứng dụng "<ph name="EXTENSION_NAME" />" đã được tự động xóa.</translation>
@@ -2849,6 +2863,7 @@
 <translation id="5319359161174645648">Google đề xuất Chrome</translation>
 <translation id="532247166573571973">Máy chủ có thể không truy cập được. Hãy thử lại sau.</translation>
 <translation id="5324780743567488672">Tự động đặt múi giờ bằng cách sử dụng vị trí của bạn</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> – được phép lưu vào tệp gốc</translation>
 <translation id="5327248766486351172">Tên</translation>
 <translation id="5327570636534774768">Thiết bị này được một miền khác đánh dấu để quản lý. Hãy hủy cấp phép thiết bị này khỏi miền đó trước khi thiết lập chế độ minh họa.</translation>
 <translation id="532943162177641444">Nhấn vào thông báo trên <ph name="PHONE_NAME" /> của bạn để thiết lập điểm phát sóng di động mà thiết bị này có thể dùng.</translation>
@@ -2991,7 +3006,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> muốn</translation>
 <translation id="5534304873398226603">Hủy ảnh hoặc video</translation>
 <translation id="5535941515421698170">Đồng thời, xóa dữ liệu hiện có của bạn khỏi thiết bị này</translation>
-<translation id="5537725057119320332">Truyền</translation>
 <translation id="5539221284352502426">Mật khẩu bạn nhập đã bị máy chủ từ chối. Các lý do có thể bao gồm: Mật khẩu quá ngắn. Mật khẩu phải chứa chữ số hoặc biểu tượng. Mật khẩu phải khác với mật khẩu cũ.</translation>
 <translation id="5541687815721799001">Sử dụng ứng dụng</translation>
 <translation id="5542132724887566711">Tiểu sử</translation>
@@ -3300,7 +3314,6 @@
 <translation id="5997337190805127100">Tìm hiểu thêm về quyền truy cập vào trang web</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> kết quả cho '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="6002458620803359783">Giọng nói ưu tiên</translation>
-<translation id="6005695835120147974">Bộ định tuyến phương tiện</translation>
 <translation id="6006484371116297560">Cổ điển</translation>
 <translation id="6007240208646052708">Chưa có dịch vụ tìm kiếm bằng giọng nói cho ngôn ngữ của bạn.</translation>
 <translation id="6009781704028455063">Cảm biến tích hợp</translation>
@@ -3500,7 +3513,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{Máy in mới trên mạng của bạn}other{Máy in mới trên mạng của bạn}}</translation>
 <translation id="6286708577777130801">Chi tiết mật khẩu đã lưu</translation>
 <translation id="6289452883081499048">Các dịch vụ cá nhân hóa của Google như Play</translation>
-<translation id="6290556621549272952">Bạn có thể sử dụng tính năng này để hiển thị nội dung từ Chromium trên TV hoặc các thiết bị khác.</translation>
 <translation id="6291949900244949761">Hỏi khi một trang web muốn truy cập vào các thiết bị USB (khuyên dùng)</translation>
 <translation id="6291953229176937411">&amp;Hiển thị trong Trình tìm kiếm</translation>
 <translation id="6295158916970320988">Tất cả các trang web</translation>
@@ -3564,6 +3576,7 @@
 <translation id="6395423953133416962">Gửi <ph name="BEGIN_LINK1" />thông tin hệ thống<ph name="END_LINK1" /> và <ph name="BEGIN_LINK2" />số liệu<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">Chặn không cho các trang web sử dụng cảm biến chuyển động</translation>
 <translation id="6397094776139756010">Tùy chọn đồng bộ hóa và cá nhân hóa</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> có thể lưu trực tiếp các thay đổi vào tệp trong thư mục sau đây. Trang web này chỉ có thể lưu các thay đổi khi tab này đang mở.</translation>
 <translation id="6398715114293939307">Xóa Cửa hàng Google Play</translation>
 <translation id="6398765197997659313">Thoát khỏi chế độ toàn màn hình</translation>
 <translation id="6399774419735315745">Điệp viên</translation>
@@ -3608,11 +3621,13 @@
 <translation id="6455264371803474013">Trên các trang web cụ thể</translation>
 <translation id="6455894534188563617">&amp;Thư mục mới</translation>
 <translation id="6456394469623773452">Tốt</translation>
+<translation id="6456955391422100996">Đã xóa quảng cáo.</translation>
 <translation id="645705751491738698">Tiếp tục chặn JavaScript</translation>
 <translation id="6458701200018867744">Không tải lên được (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation>
 <translation id="6459488832681039634">Sử dụng Phần lựa chọn cho Tìm kiếm</translation>
 <translation id="6459799433792303855">Cửa sổ đang hoạt động được di chuyển sang màn hình khác.</translation>
 <translation id="6460601847208524483">Tìm Tiếp theo</translation>
+<translation id="6461170143930046705">Đang tìm mạng...</translation>
 <translation id="6463795194797719782">&amp;Chỉnh sửa</translation>
 <translation id="6466988389784393586">&amp;Mở tất cả dấu trang</translation>
 <translation id="6467304607960172345">Tối ưu hóa các video ở chế độ toàn màn hình</translation>
@@ -3651,6 +3666,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">Bạn đang kết nối mạng <ph name="NETWORK_TYPE" />.</translation>
 <translation id="6527303717912515753">Chia sẻ</translation>
 <translation id="6528513914570774834">Cho phép người dùng khác của thiết bị sử dụng mạng này</translation>
 <translation id="652948702951888897">Lịch sử Chrome</translation>
@@ -3747,7 +3763,6 @@
 <translation id="6680650203439190394">Tốc độ</translation>
 <translation id="6681668084120808868">Chụp ảnh</translation>
 <translation id="6681964764822470072">"<ph name="APP_NAME" />" sẽ được gỡ cài đặt.</translation>
-<translation id="6685083257944113180">Dừng, <ph name="SINK_NAME" />, <ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">Mở Google Play</translation>
 <translation id="6686490380836145850">Đóng tab phía bên phải</translation>
 <translation id="6686817083349815241">Lưu mật khẩu của bạn</translation>
@@ -3855,6 +3870,7 @@
 <translation id="6845038076637626672">Mở ở dạng phóng to</translation>
 <translation id="6845325883481699275">Giúp cải thiện khả năng bảo mật của Chrome</translation>
 <translation id="6848388270925200958">Bạn hiện có một số thẻ chỉ dùng được trên thiết bị này</translation>
+<translation id="6850286078059909152">Màu văn bản</translation>
 <translation id="6851497530878285708">Đã bật ứng dụng</translation>
 <translation id="6853388645642883916">Trình cập nhật đang ở chế độ ngủ</translation>
 <translation id="68541483639528434">Đóng các tab khác</translation>
@@ -3904,7 +3920,6 @@
 <translation id="6923132443355966645">Cuộn / Nhấp</translation>
 <translation id="6923633482430812883">Lỗi kết nối mục chia sẻ. Vui lòng kiểm tra để đảm bảo rằng máy chủ tệp mà bạn đang kết nối hỗ trợ SMBv2 trở lên.</translation>
 <translation id="6930036377490597025">Khóa bảo mật bên ngoài hoặc cảm biến tích hợp</translation>
-<translation id="6930242544192836755">Thời lượng</translation>
 <translation id="693807610556624488">Tác vụ ghi vượt quá độ dài tối đa của thuộc tính cho: "<ph name="DEVICE_NAME" />".</translation>
 <translation id="6941937518557314510">Vui lòng đăng nhập vào <ph name="TOKEN_NAME" /> để xác thực đến <ph name="HOST_NAME" /> bằng chứng chỉ của bạn.</translation>
 <translation id="6943176775188458830">Hủy in</translation>
@@ -3918,6 +3933,7 @@
 <translation id="6951153907720526401">Trình xử lý thanh toán</translation>
 <translation id="6951663584153258142">Tổ chức của bạn yêu cầu bạn cập nhật thiết bị này</translation>
 <translation id="6953878494808481632">Thông tin liên quan</translation>
+<translation id="6953916367503892689">{0,plural, =1{Tệp: <ph name="FILES" />}other{Tệp: <ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">Kiểm tra cửa sổ bật lên</translation>
 <translation id="6957044667612803194">Khóa bảo mật này không hỗ trợ mã PIN</translation>
 <translation id="6957231940976260713">Tên dịch vụ</translation>
@@ -4130,7 +4146,6 @@
 <translation id="7254554697254365959">Không thể dịch trang này.</translation>
 <translation id="7254951428499890870">Bạn có chắc chắn muốn chạy "<ph name="APP_NAME" />" ở chế độ chẩn đoán không?</translation>
 <translation id="7255002516883565667">Bạn hiện có 1 thẻ chỉ dùng được trên thiết bị này</translation>
-<translation id="7255220508626648026">Đang truyền: <ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">Chạm lại vào khóa bảo mật để xác nhận đặt lại. Thao tác này sẽ xóa toàn bộ thông tin lưu trữ trên khóa bảo mật, bao gồm cả mã PIN của khóa.</translation>
 <translation id="7255935316994522020">Áp dụng</translation>
 <translation id="7256069762010468647">Trang web đang sử dụng máy ảnh của bạn</translation>
@@ -4264,6 +4279,7 @@
 <translation id="7456142309650173560">nhà phát triển</translation>
 <translation id="7456847797759667638">Mở Vị trí...</translation>
 <translation id="7458168200501453431">Sử dụng chính trình kiểm tra chính tả được dùng trong tính năng tìm kiếm của Google. Thông tin bạn nhập vào trình duyệt sẽ được gửi tới Google.</translation>
+<translation id="7460045493116006516">Giao diện hiện tại mà bạn đã cài đặt</translation>
 <translation id="7461924472993315131">Ghim</translation>
 <translation id="746216226901520237">Vào lần tới, điện thoại của bạn sẽ mở khóa <ph name="DEVICE_TYPE" />. Bạn có thể tắt tính năng Smart Lock trong phần Cài đặt.</translation>
 <translation id="7463006580194749499">Thêm người</translation>
@@ -4323,6 +4339,7 @@
 <translation id="7554791636758816595">Tab mới</translation>
 <translation id="7556033326131260574">Smart Lock không thể xác minh tài khoản của bạn. Hãy nhập mật khẩu của bạn để truy cập.</translation>
 <translation id="7556242789364317684">Thật không may, <ph name="SHORT_PRODUCT_NAME" /> không thể khôi phục cài đặt của bạn. Để khắc phục lỗi, <ph name="SHORT_PRODUCT_NAME" /> phải đặt lại thiết bị của bạn bằng Powerwash.</translation>
+<translation id="7559444627302317199">Vui lòng kiểm tra trạng thái kết nối mạng và thử lại.</translation>
 <translation id="7559719679815339381">Vui lòng đợi....ứng dụng Kiosk đang được cập nhật. Vui lòng không rút thẻ USB.</translation>
 <translation id="7561196759112975576">Luôn luôn</translation>
 <translation id="7563991800558061108">Để khắc phục lỗi này, bạn sẽ cần đăng nhập vào tài khoản Google của mình
@@ -4565,7 +4582,6 @@
 <translation id="7887334752153342268">Nhân đôi</translation>
 <translation id="7887864092952184874">Đã ghép nối chuột Bluetooth</translation>
 <translation id="7889565820482017512">Kích thước hiển thị</translation>
-<translation id="7889966925761734854">Tìm kiếm</translation>
 <translation id="7893008570150657497">Truy cập ảnh, nhạc và các phương tiện khác từ máy tính của bạn</translation>
 <translation id="7893153962594818789">Bluetooth đang tắt trên <ph name="DEVICE_TYPE" /> này. Hãy nhập mật khẩu của bạn và bật Bluetooth.</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (Mặc định)</translation>
@@ -4573,7 +4589,6 @@
 <translation id="7898627924844766532">Giữ trong thanh công cụ</translation>
 <translation id="7898725031477653577">Luôn dịch</translation>
 <translation id="790040513076446191">Thực hiện cài đặt liên quan đến bảo mật</translation>
-<translation id="7902874111237641165">Chuyển động mượt mà [beta]</translation>
 <translation id="7903345046358933331">Trang không hồi đáp. Bạn có thể chờ trang hồi đáp hoặc đóng trang.</translation>
 <translation id="7903742244674067440">Bạn có các chứng chỉ trên tệp có thể nhận dạng các tổ chức cấp chứng chỉ này</translation>
 <translation id="7903925330883316394">Tiện ích: <ph name="UTILITY_TYPE" /></translation>
@@ -4685,6 +4700,7 @@
 <translation id="8037117027592400564">Đọc tất cả văn bản được nói bằng giọng nói tổng hợp</translation>
 <translation id="8037357227543935929">Yêu cầu (mặc định)</translation>
 <translation id="803771048473350947">Tệp</translation>
+<translation id="8042142357103597104">Độ mờ văn bản</translation>
 <translation id="8044899503464538266">Chậm</translation>
 <translation id="8045253504249021590">Đã ngừng đồng bộ hóa qua Trang tổng quan của Google.</translation>
 <translation id="8045923671629973368">Hãy nhập ID ứng dụng hoặc URL cửa hàng trực tuyến</translation>
@@ -4721,7 +4737,6 @@
     <ph name="BEGIN_PARAGRAPH5" />Bạn có thể tắt dịch vụ này trong mục Cài đặt.<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">Mã PIN không khớp</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> sẽ dùng tùy chọn cài đặt proxy của một tiện ích</translation>
-<translation id="8099495042588009598">Các quyền khác</translation>
 <translation id="8101987792947961127">Yêu cầu Powerwash trong lần khởi động lại tiếp theo</translation>
 <translation id="8102159139658438129">Chuyển tới mục <ph name="LINK_BEGIN" />Cài đặt<ph name="LINK_END" /> để xem các tùy chọn cho điện thoại đã kết nối</translation>
 <translation id="8104696615244072556">Powerwash thiết bị <ph name="IDS_SHORT_PRODUCT_NAME" /> của bạn và quay lại phiên bản trước.</translation>
@@ -4773,8 +4788,10 @@
     Tôi không cho rằng nên chặn trang web này!</translation>
 <translation id="8184288427634747179">Chuyển sang <ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">Thông tin khác</translation>
+<translation id="8184472985242519288">Đồng nhất</translation>
 <translation id="8185331656081929126">Hiển thị thông báo khi phát hiện thấy máy in mới trên mạng</translation>
 <translation id="8186609076106987817">Máy chủ không thể tìm thấy tệp.</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> có thể đọc tất cả các tệp trong thư mục sau đây. Trang web này chỉ có thể thấy các thay đổi đối với thư mục khi tab này đang mở.</translation>
 <translation id="8188389033983459049">Kiểm tra mục cài đặt thiết bị và bật Bluetooth để tiếp tục</translation>
 <translation id="8190193592390505034">Đang kết nối đến <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">Quản lý ứng dụng, tiện ích và chủ đề của bạn</translation>
@@ -4878,7 +4895,6 @@
 <translation id="833986336429795709">Để mở liên kết này, hãy chọn một ứng dụng</translation>
 <translation id="8342861492835240085">Chọn một bộ sưu tập</translation>
 <translation id="834290227245955730">Mã PIN không hợp lệ. Bạn còn <ph name="RETRIES" /> lần thử lại.</translation>
-<translation id="8343956361364550006">Sử dụng băng thông cao để có hoạt ảnh hoặc video tốt nhất. Những người có kết nối chậm có thể không thấy nội dung của bạn.</translation>
 <translation id="8351419472474436977">Tiện ích này đã chiếm quyền kiểm soát cài đặt proxy của bạn, điều đó có nghĩa là tiện ích này có thể thay đổi, làm gián đoạn hoặc nghe trộm bất kỳ điều gì bạn thực hiện trực tuyến. Nếu bạn không chắc chắn về lý do thay đổi này diễn ra, bạn có thể không cần tiện ích này.</translation>
 <translation id="8351630282875799764">Pin hiện không sạc</translation>
 <translation id="835238322900896202">Đã xảy ra lỗi trong khi gỡ cài đặt. Vui lòng gỡ cài đặt thông qua Thiết bị đầu cuối.</translation>
@@ -4911,9 +4927,11 @@
 <translation id="839736845446313156">Đăng ký</translation>
 <translation id="8398877366907290961">Tiếp tục truy cập</translation>
 <translation id="8400146488506985033">Quản lý mọi người</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> có thể lưu trực tiếp các thay đổi vào tệp trong thư mục sau đây. Trang web này chỉ có thể lưu các thay đổi khi tab này đang mở.</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Hỏi trước (khuyên dùng)</translation>
 <translation id="8418445294933751433">&amp;Hiển thị dưới dạng tab</translation>
+<translation id="8418905021510211421">Trang này được phép đọc thư mục trên thiết bị của bạn.</translation>
 <translation id="8419098111404128271">Kết quả tìm kiếm cho '<ph name="SEARCH_TEXT" />'</translation>
 <translation id="8419368276599091549">Chào mừng bạn đến với <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">Thay đổi</translation>
@@ -4933,6 +4951,7 @@
 <translation id="8438566539970814960">Cải thiện tính năng tìm kiếm và duyệt web</translation>
 <translation id="8439506636278576865">Đề xuất dịch trang bằng ngôn ngữ này</translation>
 <translation id="8440630305826533614">Ứng dụng Linux</translation>
+<translation id="844241640324986723">Không xóa được dữ liệu đăng nhập của bạn.</translation>
 <translation id="8443338615972234259">Vui lòng tạo tài khoản mới cho người dùng được giám sát của bạn ngay bây giờ.</translation>
 <translation id="8446884382197647889">Tìm hiểu thêm</translation>
 <translation id="8447409163267621480">Bao gồm phím Ctrl hoặc phím Alt</translation>
@@ -4948,8 +4967,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">Người dùng được giám sát này có thể đã bị nhà quản lý xóa hoặc vô hiệu hóa. Vui lòng liên hệ với nhà quản lý nếu bạn muốn tiếp tục đăng nhập với tư cách người dùng này.</translation>
 <translation id="846374874681391779">Thanh tệp đã tải xuống</translation>
-<translation id="8463807869745732775">"&gt;
-    Dữ liệu đăng nhập đã lưu trữ trên khóa bảo mật</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> đã tắt.</translation>
 <translation id="8464132254133862871">Tài khoản người dùng này không đủ điều kiện cho dịch vụ.</translation>
 <translation id="8465252176946159372">Không hợp lệ</translation>
@@ -5015,6 +5032,7 @@
 <translation id="8569002732135253578">Hiện đang in <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">Không tìm thấy điểm đến nào</translation>
 <translation id="8571213806525832805">4 tuần qua</translation>
+<translation id="8573403125070227391">Chrome đã xóa quảng cáo này vì sử dụng quá nhiều tài nguyên của thiết bị.</translation>
 <translation id="8574990355410201600">Luôn cho phép phát âm thanh trên <ph name="HOST" /></translation>
 <translation id="8575286410928791436">Giữ phím <ph name="KEY_EQUIVALENT" /> để thoát</translation>
 <translation id="8578639784464423491">Không được vượt quá 99 chữ cái</translation>
@@ -5038,13 +5056,13 @@
 <translation id="8609465669617005112">Di chuyển lên</translation>
 <translation id="8610103157987623234">Định dạng không chính xác. Hãy thử lại</translation>
 <translation id="8615618338313291042">Ứng dụng Ẩn danh: <ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">Bóng đổ</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />: <ph name="ERROR" /></translation>
 <translation id="8620617069779373398">Trạng thái chuyển vùng</translation>
 <translation id="8620765578342452535">Định cấu hình kết nối mạng</translation>
 <translation id="8621866727807194849">Máy tính của bạn có phần mềm độc hại. Chrome đang xóa phần mềm này, khôi phục các tùy chọn cài đặt của bạn và tắt tiện ích. Việc này sẽ giúp trình duyệt của bạn hoạt động lại bình thường.</translation>
 <translation id="8621979332865976405">Chia sẻ toàn bộ màn hình</translation>
 <translation id="862542460444371744">&amp;Tiện ích mở rộng</translation>
-<translation id="8627151598708688654">Chọn nguồn</translation>
 <translation id="862727964348362408">Bị tạm ngưng</translation>
 <translation id="862750493060684461">Bộ nhớ đệm CSS</translation>
 <translation id="8627795981664801467">Chỉ kết nối an toàn</translation>
@@ -5098,6 +5116,7 @@
 <translation id="8688579245973331962">Bạn không thấy tên của mình?</translation>
 <translation id="8688591111840995413">Mật khẩu yếu</translation>
 <translation id="8688672835843460752">Có sẵn</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">Mở &amp;vị trí...</translation>
 <translation id="869884720829132584">Menu ứng dụng</translation>
 <translation id="869891660844655955">Ngày hết hạn</translation>
@@ -5261,6 +5280,7 @@
 <translation id="891365694296252935">Gửi dữ liệu chẩn đoán và dữ liệu về mức sử dụng. Thiết bị này hiện tự động gửi dữ liệu chẩn đoán, dữ liệu về mức sử dụng ứng dụng và thiết bị cho Google. Những thông tin này sẽ không dùng để nhận dạng con bạn mà giúp tăng độ ổn định của hệ thống và ứng dụng cũng như cải thiện các mặt khác. Một số dữ liệu tổng hợp cũng sẽ hữu ích cho các ứng dụng và đối tác của Google, chẳng hạn như những nhà phát triển Android. Mục cài đặt này do chủ sở hữu thực thi. Nếu bạn bật mục cài đặt bổ sung Hoạt động web và ứng dụng cho con mình thì dữ liệu này có thể được lưu vào Tài khoản Google của trẻ. <ph name="BEGIN_LINK1" />Tìm hiểu thêm<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">Đang tải đề xuất</translation>
 <translation id="8916476537757519021">Khung ẩn danh phụ: <ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> – được phép đọc thư mục trên thiết bị của bạn</translation>
 <translation id="8919275547519617350">Để lấy tất cả mật khẩu của bạn trên mọi thiết bị, hãy đăng nhập rồi bật tính năng đồng bộ hóa.</translation>
 <translation id="8921366488406707015">Đang xác minh khóa bảo mật...</translation>
 <translation id="8922013791253848639">Luôn cho phép quảng cáo trên trang web này</translation>
@@ -5290,7 +5310,6 @@
 <translation id="8965037249707889821">Nhập mật khẩu cũ</translation>
 <translation id="8966870118594285808">Mở lại một tab nếu bạn vô tình đóng tab đó</translation>
 <translation id="8967866634928501045">Nhấn tổ hợp phím Alt+Shift+A để hiển thị</translation>
-<translation id="8970203673128054105">Xem danh sách chế độ truyền</translation>
 <translation id="89720367119469899">Thoát</translation>
 <translation id="8972513834460200407">Vui lòng kiểm tra với quản trị viên mạng của bạn để đảm bảo rằng tường lửa không chặn tài nguyên đã tải xuống từ máy chủ của Google.</translation>
 <translation id="8973557916016709913">Xóa mức thu phóng</translation>
@@ -5439,6 +5458,7 @@
 <translation id="9214520840402538427">Rất tiếc! Việc chạy thuộc tính thời gian cài đặt đã hết thời gian. Vui lòng liên hệ với người đại diện hỗ trợ của bạn.</translation>
 <translation id="9214695392875603905">Cupcake</translation>
 <translation id="9215293857209265904">Đã thêm "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> có thể lưu trực tiếp các thay đổi vào tệp sau đây. Trang web này chỉ có thể lưu các thay đổi khi tab này đang mở.</translation>
 <translation id="9218430445555521422">Đặt làm mặc định</translation>
 <translation id="9219103736887031265">Hình ảnh</translation>
 <translation id="9220525904950070496">Xóa tài khoản</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index e91c9dda..901e875a 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">启动虚拟机时出错。请重试。</translation>
 <translation id="1089439967362294234">更改密码</translation>
 <translation id="1090126737595388931">没有任何后台应用在运行</translation>
+<translation id="1090290614672149983">要将更改保存到原始文件吗?</translation>
 <translation id="1090918500949388876">当屏幕处于开启状态时,您可以随时访问自己的 Google 助理,只需说“Ok Google”即可</translation>
 <translation id="1091767800771861448">按 ESC 键可跳过更新(仅限非官方版本)。</translation>
 <translation id="1093457606523402488">可见网络:</translation>
 <translation id="1094607894174825014">有人使用无效偏移值在“<ph name="DEVICE_NAME" />”上请求了读取或写入操作。</translation>
 <translation id="1097658378307015415">登录前,请先以访客身份进入,以便激活“<ph name="NETWORK_ID" />”网络。</translation>
+<translation id="110029732810301672">此标签页可以将更改保存到原始文件。</translation>
 <translation id="1103523840287552314">一律翻译<ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">停止(&amp;S)</translation>
 <translation id="1110155001042129815">等待</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">太阳镜</translation>
 <translation id="1151917987301063366">始终允许 <ph name="HOST" /> 使用传感器</translation>
 <translation id="1153356358378277386">已配对的设备</translation>
-<translation id="1156488781945104845">当前时间</translation>
 <translation id="1161575384898972166">请登录“<ph name="TOKEN_NAME" />”,导出客户端证书。</translation>
 <translation id="1163931534039071049">查看框架的源代码(&amp;V)</translation>
 <translation id="1164674268730883318">要关闭 Smart Lock(<ph name="DEVICE_TYPE" /> 版)吗?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player 存储设置</translation>
 <translation id="1274997165432133392">Cookie 及其他网站数据</translation>
 <translation id="127668050356036882">关闭所有窗口</translation>
-<translation id="1277908057200820621">查看设备列表</translation>
 <translation id="1280820357415527819">正在搜索移动网络</translation>
 <translation id="1285320974508926690">一律不翻译此网站</translation>
 <translation id="1285484354230578868">将数据存储在您的 Google 云端硬盘帐号中</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">家庭网络,非漫游</translation>
 <translation id="1316136264406804862">正在搜索...</translation>
 <translation id="1316495628809031177">同步已暂停</translation>
+<translation id="1317637799698924700">您的基座将以与 USB C 型兼容的模式运行。</translation>
 <translation id="1322046419516468189">您可以查看和管理 <ph name="SAVED_PASSWORDS_STORE" />中保存的密码</translation>
 <translation id="1326317727527857210">要访问您在其他设备上的标签页,请登录 Chrome。</translation>
 <translation id="1327074568633507428">Google 云打印中的打印机</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">您的<ph name="BEGIN_LINK" />浏览器<ph name="END_LINK" />由 <ph name="ENROLLMENT_DOMAIN" /> 管理</translation>
 <translation id="1366177842110999534">在 <ph name="DEVICE_TYPE" /> 上运行 Linux 工具、编辑器和 IDE。&lt;a target="_blank" href="<ph name="URL" />"&gt;了解详情&lt;/a&gt;</translation>
 <translation id="1367951781824006909">选择文件</translation>
+<translation id="1370749010280229230">与基座相连的显示器存在问题</translation>
 <translation id="1371301976177520732">在您的所有设备上都能访问您的书签、密码、历史记录等信息</translation>
 <translation id="1372841398847029212">同步到您的帐号中</translation>
 <translation id="1374844444528092021">网络“<ph name="NETWORK_NAME" />”所需的证书尚未安装或已无效。请获取新的证书并尝试重新连接。</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">网页(单个文件)</translation>
 <translation id="1451917004835509682">添加受监管用户</translation>
 <translation id="1454223536435069390">屏幕截图(&amp;A)</translation>
+<translation id="1458243790901188746">{0,plural, =1{文件夹:<ph name="DIRECTORIES" />}other{文件夹:<ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">由扩展程序添加的搜索引擎</translation>
 <translation id="146000042969587795">此框架因含某些不安全内容而被拦截。</translation>
 <translation id="146219525117638703">ONC 状态</translation>
@@ -441,6 +444,7 @@
 <translation id="1650371550981945235">显示输入法选项</translation>
 <translation id="1651008383952180276">您两次输入的密码必须相同</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{请将该打印机添加到 Google 云打印,以便您可以随时随地进行打印。}other{请将 # 台打印机添加到 Google 云打印,以便您可以随时随地进行打印。}}</translation>
+<translation id="1656528038316521561">背景不透明度</translation>
 <translation id="1657406563541664238">将使用情况统计信息和崩溃报告自动发送给 Google,帮助我们完善 <ph name="PRODUCT_NAME" /></translation>
 <translation id="1658424621194652532">此网页正在使用您的麦克风。</translation>
 <translation id="1660204651932907780">允许网站播放声音(推荐)</translation>
@@ -456,6 +460,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> 想查看您的安全密钥的品牌和型号</translation>
 <translation id="1679068421605151609">开发者工具</translation>
 <translation id="1679806121152819234">插件虚拟机</translation>
+<translation id="1679810534535368772">确定要退出吗?</translation>
 <translation id="167983332380191032">管理服务向您发送了一项 HTTP 错误。</translation>
 <translation id="1680849702532889074">安装 Linux 应用时出错。</translation>
 <translation id="16815041330799488">不允许网站查看复制到剪贴板的文字和图片</translation>
@@ -507,6 +512,7 @@
 <translation id="1746402432151920942">受保护的媒体标识符</translation>
 <translation id="175196451752279553">重新打开关闭的标签页(&amp;E)</translation>
 <translation id="1753905327828125965">常去网站</translation>
+<translation id="1755601632425835748">文字大小</translation>
 <translation id="1756681705074952506">输入法</translation>
 <translation id="1757301747492736405">待卸载</translation>
 <translation id="175772926354468439">启用主题背景</translation>
@@ -626,6 +632,7 @@
 <translation id="1918141783557917887">缩小(&amp;S)</translation>
 <translation id="1919345977826869612">广告</translation>
 <translation id="1919814239594435008">已允许使用未经过沙盒屏蔽的插件</translation>
+<translation id="1920390473494685033">通讯录</translation>
 <translation id="1921050530041573580">将手机与“信息”应用配对</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">在 <ph name="IDS_SHORT_PRODUCT_NAME" /> 中畅享 Google 的智能技术</translation>
@@ -782,6 +789,7 @@
 <translation id="2177950615300672361">隐身标签页:<ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> 上的“<ph name="PEPPER_PLUGIN_NAME" />”想访问您的计算机</translation>
 <translation id="2178614541317717477">CA 泄漏</translation>
+<translation id="2179849162388791084">未能从您的安全密钥中获取登录数据。</translation>
 <translation id="218070003709087997">用数字表示要打印多少份(1 到 999 份)。</translation>
 <translation id="2184515124301515068">让 Chrome 选择何时允许网站播放声音(推荐)</translation>
 <translation id="2187895286714876935">服务器证书导入错误</translation>
@@ -860,7 +868,6 @@
 <translation id="2277255602909579701">所有 Cookie 和网站数据</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{已复制 1 项}other{已复制 # 项}}</translation>
 <translation id="2278562042389100163">打开浏览器窗口</translation>
-<translation id="2279874276457403668">一次只能创建一个会话。</translation>
 <translation id="2280486287150724112">右侧页边距</translation>
 <translation id="2282146716419988068">GPU 进程</translation>
 <translation id="2282155092769082568">自动配置网址:</translation>
@@ -872,7 +879,7 @@
 <translation id="2294358108254308676">要安装<ph name="PRODUCT_NAME" />吗?</translation>
 <translation id="2297705863329999812">搜索打印机</translation>
 <translation id="2300383962156589922">自定义和控制<ph name="APP_NAME" /></translation>
-<translation id="2300800387751317588">同步功能已暂停,因为您在启动时清除了 Cookie。请更改<ph name="COOKIE_SETTINGS_LINK" />以继续同步。</translation>
+<translation id="2300800387751317588">同步功能已暂停,因为您会在启动时清除 Cookie。请更改<ph name="COOKIE_SETTINGS_LINK" />以继续同步。</translation>
 <translation id="2301382460326681002">扩展程序根目录无效。</translation>
 <translation id="23030561267973084">“<ph name="EXTENSION_NAME" />”请求获得更多权限。</translation>
 <translation id="2307462900900812319">配置网络</translation>
@@ -913,7 +920,6 @@
 <translation id="2352810082280059586">锁定屏幕记事会自动保存到 <ph name="LOCK_SCREEN_APP_NAME" /> 中。最近的记事将保留在锁定屏幕上。</translation>
 <translation id="2353297238722298836">已允许使用摄像头和麦克风</translation>
 <translation id="2356070529366658676">询问</translation>
-<translation id="2357949918965361754">借助此功能,您可以将 Chrome 上的内容显示在您的电视或其他设备上。</translation>
 <translation id="2359345697448000899">您可以通过点击“工具”菜单中的“扩展程序”,管理您的扩展程序。</translation>
 <translation id="2359808026110333948">继续</translation>
 <translation id="236117173274098341">优化</translation>
@@ -961,6 +967,7 @@
 <translation id="2436720498717686157">贵组织要求立即更新此设备</translation>
 <translation id="2439545803278355377">输入您的新 PIN 码。PIN 码必须包含至少 4 个字符,且可以包含字母、数字和其他字符。</translation>
 <translation id="2440604414813129000">查看源代码(&amp;O)</translation>
+<translation id="2442916515643169563">文字阴影</translation>
 <translation id="2444119669991608829">不是<ph name="LANGUAGE" />网页?</translation>
 <translation id="2445081178310039857">必须指定扩展程序根目录。</translation>
 <translation id="2445484935443597917">创建新的个人资料</translation>
@@ -1175,6 +1182,7 @@
 <translation id="2738771556149464852">不晚于</translation>
 <translation id="2739191690716947896">调试</translation>
 <translation id="2739240477418971307">更改您的无障碍设置</translation>
+<translation id="274029851662193272">凹陷</translation>
 <translation id="2740393541869613458">审核此受监管用户访问过的网站,以及</translation>
 <translation id="2741912629735277980">登录屏幕上的显示界面</translation>
 <translation id="274290345632688601">正在恢复 Linux 应用和文件</translation>
@@ -1223,6 +1231,7 @@
 <translation id="2806891468525657116">快捷方式已存在</translation>
 <translation id="2807517655263062534">您下载的文件会显示在此处</translation>
 <translation id="2809586584051668049">及另外<ph name="NUMBER_ADDITIONAL_DISABLED" />个扩展程序</translation>
+<translation id="2812049959647166806">Thunderbolt 不受支持</translation>
 <translation id="2812944337881233323">请尝试退出并重新登录</translation>
 <translation id="2812989263793994277">不显示任何图片</translation>
 <translation id="281390819046738856">无法签署该请求。</translation>
@@ -1245,7 +1254,6 @@
 <translation id="2841837950101800123">提供方</translation>
 <translation id="2844169650293029770">USB-C 设备(左侧前端端口)</translation>
 <translation id="2845382757467349449">总是显示书签栏</translation>
-<translation id="2847759467426165163">投射到</translation>
 <translation id="284805635805850872">要移除有害软件吗?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">清理失败</translation>
@@ -1292,6 +1300,7 @@
 服务器消息:<ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">按目录添加媒体库</translation>
 <translation id="2910318910161511225">请连接到网络,然后重试</translation>
+<translation id="2910518940971897750">保存到原始文件</translation>
 <translation id="2913331724188855103">允许网站保存和读取 Cookie 数据(推荐)</translation>
 <translation id="2915102088417824677">查看活动日志</translation>
 <translation id="2915873080513663243">自动扫描</translation>
@@ -1356,12 +1365,14 @@
 <translation id="3013291976881901233">MIDI 设备</translation>
 <translation id="3015639418649705390">立即重新启动</translation>
 <translation id="3016329696181678353">无法自动配置<ph name="PRINTER_NAME" />。请指定高级打印机详细信息。</translation>
+<translation id="3016381065346027039">没有日志条目</translation>
 <translation id="3016641847947582299">组件已更新</translation>
 <translation id="3016780570757425217">获取您的位置</translation>
 <translation id="3017079585324758401">背景</translation>
 <translation id="3020183492814296499">快捷键</translation>
 <translation id="3020990233660977256">序列号:<ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">蝴蝶</translation>
+<translation id="3021408157810018664">要将更改保存到原始文件吗?</translation>
 <translation id="3021426244864538700">访问此网站的数据</translation>
 <translation id="3021678814754966447">查看框架的源代码(&amp;V)</translation>
 <translation id="3022978424994383087">无法解析您所说的内容。</translation>
@@ -1454,6 +1465,7 @@
 <translation id="3170072451822350649">您也可以跳过登录步骤,<ph name="LINK_START" />以访客身份浏览<ph name="LINK_END" />。</translation>
 <translation id="3172045848207518317">网站正在使用视频输入</translation>
 <translation id="3177909033752230686">网页语言:</translation>
+<translation id="3179982752812949580">文本字体</translation>
 <translation id="3181954750937456830">安全浏览(保护您和您的设备不受危险网站的侵害)</translation>
 <translation id="3182749001423093222">拼写检查</translation>
 <translation id="3183139917765991655">个人资料导入应用</translation>
@@ -1506,7 +1518,6 @@
 <translation id="3275778913554317645">在窗口中打开</translation>
 <translation id="3278001907972365362">您需要注意自己的 Google 帐号</translation>
 <translation id="3279230909244266691">此过程可能需要几分钟的时间。正在启动虚拟机。</translation>
-<translation id="3279741024917655738">在以下屏幕显示全屏视频</translation>
 <translation id="3280237271814976245">另存为(&amp;A)...</translation>
 <translation id="3280243678470289153">继续使用 Chrome</translation>
 <translation id="3281892622610078515">要隔离的文件和程序:</translation>
@@ -1528,7 +1539,7 @@
 <translation id="3303855915957856445">未找到任何搜索结果</translation>
 <translation id="3305389145870741612">格式化过程可能需要几秒钟的时间,请稍候。</translation>
 <translation id="3305661444342691068">使用预览程序打开 PDF</translation>
-<translation id="3306684685104080068">允许投射到 Google 环聊等此类云端服务。</translation>
+<translation id="3307871847038842490">此页面可以将更改保存到原始文件。</translation>
 <translation id="3308006649705061278">组织单位 (OU)</translation>
 <translation id="3308116878371095290">系统已禁止设置此网页的 Cookie。</translation>
 <translation id="3308134619352333507">隐藏按钮</translation>
@@ -1632,7 +1643,6 @@
 <translation id="3462413494201477527">要取消帐号设置吗?</translation>
 <translation id="3464012987031883895">网站正在使用音频输入</translation>
 <translation id="346431825526753">此帐号是由 <ph name="CUSTODIAN_EMAIL" /> 管理的未成年人帐号。</translation>
-<translation id="3468275649641751422">流式传输视频或音频文件</translation>
 <translation id="3468999815377931311">Android 手机</translation>
 <translation id="3470442499439619530">删除此用户</translation>
 <translation id="3473479545200714844">屏幕放大镜</translation>
@@ -1655,6 +1665,7 @@
 <translation id="3496213124478423963">缩小</translation>
 <translation id="3497560059572256875">分享涂鸦</translation>
 <translation id="3505030558724226696">撤消对设备的访问权限</translation>
+<translation id="3505635633742443645">将 USB C 型端口用于视频输出时,无法使用基座的 HDMI 端口。请让某个显示器使用其他端口。</translation>
 <translation id="3507421388498836150">“<ph name="EXTENSION_NAME" />”目前拥有的权限</translation>
 <translation id="3507888235492474624">重新扫描蓝牙设备</translation>
 <translation id="3508920295779105875">选择其他文件夹...</translation>
@@ -1707,6 +1718,7 @@
 <translation id="3576324189521867626">已成功安装</translation>
 <translation id="3578594933904494462">此标签页的内容正在共享中。</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt;希望与您拥有的以下群组共享打印机&lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt;:&lt;strong&gt;<ph name="GROUP_NAME" />&lt;/strong&gt;。如果您接受,该群组的所有成员都可以将内容发送到该打印机进行打印。</translation>
+<translation id="357889014807611375">按流量计费的 Wi-Fi</translation>
 <translation id="3584169441612580296">读取和更改您计算机上的照片、音乐和其他媒体</translation>
 <translation id="3587482841069643663">全部</translation>
 <translation id="358796204584394954">请在“<ph name="DEVICE_NAME" />”上输入以下代码进行配对:</translation>
@@ -1717,6 +1729,7 @@
 <translation id="359283478042092570">输入</translation>
 <translation id="3593965109698325041">证书名称约束</translation>
 <translation id="3596235046596950091">启用云服务</translation>
+<translation id="3599221874935822507">凸起</translation>
 <translation id="3599863153486145794">清除所有登录过的设备上的历史记录。您的 Google 帐号在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的浏览记录。</translation>
 <translation id="3600051066689725006">网络请求信息</translation>
 <translation id="3600792891314830896">将播放声音的网站静音</translation>
@@ -1731,6 +1744,7 @@
 <translation id="3612673635130633812">由&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;下载</translation>
 <translation id="3613134908380545408">显示“<ph name="FOLDER_NAME" />”</translation>
 <translation id="3613422051106148727">在新标签页中打开(&amp;O)</translation>
+<translation id="3615073365085224194">用手指轻触指纹传感器</translation>
 <translation id="3616113530831147358">音频</translation>
 <translation id="3616741288025931835">清除浏览数据(&amp;C)...</translation>
 <translation id="3617891479562106823">背景不可用。请稍后重试。</translation>
@@ -1812,7 +1826,6 @@
 <translation id="3719826155360621982">首页</translation>
 <translation id="3720996970802414353">确定切换</translation>
 <translation id="3722108462506185496">启动虚拟机服务时出错。请重试。</translation>
-<translation id="3723158278575423087">欢迎体验 Chromium 中的投射功能!</translation>
 <translation id="3725367690636977613">页码</translation>
 <translation id="3726137731714254362">从此处移除文件夹会停止共享但不会删除相应文件。</translation>
 <translation id="3727148787322499904">更改此设置将会影响所有共享网络</translation>
@@ -1847,7 +1860,6 @@
 <translation id="3764314093345384080">详细版本信息</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{可与 1 部 USB 设备通信}other{可与 # 部 USB 设备通信}}</translation>
 <translation id="3765246971671567135">无法读取离线演示模式政策。</translation>
-<translation id="3766223500670287046">远程屏幕</translation>
 <translation id="3768037234834996183">正在同步您的偏好设置…</translation>
 <translation id="377050016711188788">冰淇淋</translation>
 <translation id="3771294271822695279">视频文件</translation>
@@ -1920,7 +1932,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">移开手指,然后再次触摸传感器</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />:已暂停同步</translation>
-<translation id="3862134173397075045">欢迎体验 Chrome 中的投射功能!</translation>
 <translation id="3862693525629180217">通过内置传感器进行验证</translation>
 <translation id="3862788408946266506">具有“kiosk_only”这项清单属性的应用必须在 Chrome 操作系统自助服务终端模式下进行安装</translation>
 <translation id="3865414814144988605">分辨率</translation>
@@ -1969,6 +1980,7 @@
 <translation id="3926002189479431949">Smart Lock 的配对手机已更改</translation>
 <translation id="3927932062596804919">拒绝</translation>
 <translation id="3930737994424905957">正在搜索设备</translation>
+<translation id="3930968231047618417">背景颜色</translation>
 <translation id="3933283459331715412">恢复 <ph name="USERNAME" /> 的已删除密码</translation>
 <translation id="3936390757709632190">在新标签页中打开音频(&amp;O)</translation>
 <translation id="3936925983113350642">以后恢复证书时需要使用您所选择的密码。请将密码记录在安全的地方。</translation>
@@ -1987,6 +1999,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">从 IE 中导入</translation>
 <translation id="3950820424414687140">登录</translation>
+<translation id="3950828138786918475">此标签页可以读取您设备上的某个文件夹。</translation>
 <translation id="3954354850384043518">正在下载</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" />x<ph name="HEIGHT" />(<ph name="REFRESH_RATE" /> 赫兹)</translation>
 <translation id="3954953195017194676">您最近未记录 WebRTC 事件日志。</translation>
@@ -2005,6 +2018,7 @@
 <translation id="397105322502079400">正在计算...</translation>
 <translation id="3975565978598857337">无法连接到指定领域的服务器</translation>
 <translation id="397703832102027365">正在完成...</translation>
+<translation id="3977886311744775419">使用此网络类型时无法下载自动更新,但您可以手动检查是否有更新。</translation>
 <translation id="3979395879372752341">已添加新扩展程序(<ph name="EXTENSION_NAME" />)</translation>
 <translation id="3979748722126423326">启用<ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">输入的保存类型无效。</translation>
@@ -2144,6 +2158,7 @@
 <translation id="4194570336751258953">启用点按单击</translation>
 <translation id="4195643157523330669">在新标签页中打开</translation>
 <translation id="4195814663415092787">从上次停下的地方继续</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> 可以将您所做的更改直接保存到以下文件。只有在此标签页处于打开状态时,该网站才能保存更改。</translation>
 <translation id="4198146608511578238">只需按住“启动器”图标即可与 Google 助理对话。</translation>
 <translation id="4200689466366162458">自定义字词</translation>
 <translation id="4200983522494130825">打开新的标签页(&amp;T)</translation>
@@ -2191,7 +2206,6 @@
 <translation id="4267953847983678297">自动连接到移动网络</translation>
 <translation id="4268025649754414643">密钥加密</translation>
 <translation id="4270393598798225102">版本 <ph name="NUMBER" /></translation>
-<translation id="4271396100647220620">找不到相符的结果</translation>
 <translation id="4275663329226226506">媒体</translation>
 <translation id="4275830172053184480">重启您的设备</translation>
 <translation id="4278101229438943600">Google 助理已准备就绪</translation>
@@ -2272,7 +2286,7 @@
 <translation id="4412698727486357573">帮助中心</translation>
 <translation id="44141919652824029">允许“<ph name="APP_NAME" />”获取您所连接的 USB 设备的列表?</translation>
 <translation id="4414232939543644979">打开新的无痕窗口(&amp;I)</translation>
-<translation id="4414386768539506503">请为您的安全密钥输入 PIN 码以查看其中存储的登录数据。如果您不知道 PIN 码,则需要重置此安全密钥。</translation>
+<translation id="4414386768539506503">请输入安全密钥的 PIN 码以查看其中存储的登录数据。如果您不知道 PIN 码,则需要重置此安全密钥。</translation>
 <translation id="4415245286584082850">找不到设备。请在新的标签页中打开帮助中心文章。</translation>
 <translation id="4415276339145661267">管理您的 Google 帐号</translation>
 <translation id="4415748029120993980">SECG 椭圆曲线 secp384r1(又称 NIST P-384)</translation>
@@ -2340,6 +2354,7 @@
 <translation id="4533985347672295764">CPU 时间</translation>
 <translation id="4534661889221639075">请重试。</translation>
 <translation id="4535127706710932914">默认个人资料</translation>
+<translation id="4535767533210902251">指纹传感器就是键盘右上方的按键。请用任一手指轻触该按键。</translation>
 <translation id="4538684596480161368">一律禁止在 <ph name="HOST" /> 上使用未经过沙盒屏蔽的插件</translation>
 <translation id="4538792345715658285">按企业政策安装。</translation>
 <translation id="4542520061254486227">读取您在 <ph name="WEBSITE_1" /> 和 <ph name="WEBSITE_2" /> 上的数据</translation>
@@ -2373,6 +2388,7 @@
 <translation id="457386861538956877">更多...</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">配对蓝牙设备</translation>
+<translation id="4578012756826807359">已成功删除您的登录数据。</translation>
 <translation id="4579581181964204535">无法投射 <ph name="HOST_NAME" />。</translation>
 <translation id="4581774856936278355">恢复 Linux 容器时出错</translation>
 <translation id="4582563038311694664">重置所有设置</translation>
@@ -2490,7 +2506,6 @@
 <translation id="4763830802490665879">退出时会清除来自多个网站的 Cookie。</translation>
 <translation id="4765582662863429759">允许 Android 信息将短信从手机转送到 Chromebook</translation>
 <translation id="4768332406694066911">您有以下组织发给您的身份证书</translation>
-<translation id="4772404146526168240">本地屏幕和远程屏幕</translation>
 <translation id="4776146737004271126">打开 Android 设置</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> 的密码</translation>
 <translation id="4777825441726637019">Play 商店</translation>
@@ -2598,7 +2613,6 @@
 <translation id="4927846293686536410">您只需登录任一设备,即可轻松获取自己的书签、历史记录、密码和其他设置。在这种情况下,您也会自动登录 Google 服务。</translation>
 <translation id="4929386379796360314">打印目的地</translation>
 <translation id="4930714375720679147">开启</translation>
-<translation id="4931132176527519925">始终使用镜像</translation>
 <translation id="4932733599132424254">日期</translation>
 <translation id="4933484234309072027">嵌入 <ph name="URL" /></translation>
 <translation id="493571969993549666">添加受监管用户</translation>
@@ -2638,6 +2652,7 @@
 <translation id="4992066212339426712">取消静音</translation>
 <translation id="4992458225095111526">确认 Powerwash 操作</translation>
 <translation id="4992473555164495036">您的管理员限制了可用的输入法。</translation>
+<translation id="4992866843815555470">您的基座需要维修。由于没有正常运行的风扇,您的基座将关闭。</translation>
 <translation id="4992926179187649719">开启“Ok Google”</translation>
 <translation id="4994474651455208930">允许网站要求成为协议的默认处理程序</translation>
 <translation id="4994754230098574403">正在设置</translation>
@@ -2776,7 +2791,6 @@
 <translation id="5233231016133573565">进程 ID</translation>
 <translation id="5233638681132016545">打开新的标签页</translation>
 <translation id="5233736638227740678">粘贴(&amp;P)</translation>
-<translation id="5234764350956374838">关闭</translation>
 <translation id="5235050375939235066">要卸载该应用吗?</translation>
 <translation id="5235750401727657667">替换您在打开新标签页时看到的页面</translation>
 <translation id="5238278114306905396">已自动删除应用“<ph name="EXTENSION_NAME" />”。</translation>
@@ -2841,6 +2855,7 @@
 <translation id="5319359161174645648">Google 推荐使用 Chrome</translation>
 <translation id="532247166573571973">可能无法连接到服务器,请稍后重试。</translation>
 <translation id="5324780743567488672">使用您的位置信息自动设置时区</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - 可以将更改保存到原始文件</translation>
 <translation id="5327248766486351172">名称</translation>
 <translation id="5327570636534774768">此设备已被标记为受另一网域管理。您需要取消此设备在该网域中的配置,然后才能设置演示模式。</translation>
 <translation id="532943162177641444">请点按您的 <ph name="PHONE_NAME" /> 设备上的通知,以设置可供此设备使用的移动热点。</translation>
@@ -2983,7 +2998,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> 想要</translation>
 <translation id="5534304873398226603">舍弃照片或视频</translation>
 <translation id="5535941515421698170">一并从这台设备中移除您的现有数据</translation>
-<translation id="5537725057119320332">投射</translation>
 <translation id="5539221284352502426">您输入的密码被服务器拒绝了。可能的原因包括:此密码太短。此密码必须包含数字或符号,且必须不同于旧密码。</translation>
 <translation id="5541687815721799001">使用应用</translation>
 <translation id="5542132724887566711">个人资料</translation>
@@ -3292,7 +3306,6 @@
 <translation id="5997337190805127100">详细了解网站访问权限</translation>
 <translation id="6000758707621254961"><ph name="RESULT_COUNT" /> 个与“<ph name="SEARCH_TEXT" />”相符的搜索结果</translation>
 <translation id="6002458620803359783">首选语音</translation>
-<translation id="6005695835120147974">媒体路由器</translation>
 <translation id="6006484371116297560">经典</translation>
 <translation id="6007240208646052708">不支持使用您所用的语言执行语音搜索。</translation>
 <translation id="6009781704028455063">内置传感器</translation>
@@ -3492,7 +3505,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{您的网络中有 1 台新打印机}other{您的网络中有多台新打印机}}</translation>
 <translation id="6286708577777130801">保存的密码详细信息</translation>
 <translation id="6289452883081499048">体验个性化的 Google 服务(例如 Play)</translation>
-<translation id="6290556621549272952">借助此功能,您可将 Chromium 上的内容显示在您的电视或其他设备上。</translation>
 <translation id="6291949900244949761">当网站要访问 USB 设备时询问您(推荐)</translation>
 <translation id="6291953229176937411">在 Finder 中显示(&amp;S)</translation>
 <translation id="6295158916970320988">所有网站</translation>
@@ -3556,6 +3568,7 @@
 <translation id="6395423953133416962">发送<ph name="BEGIN_LINK1" />系统信息<ph name="END_LINK1" />和<ph name="BEGIN_LINK2" />指标<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">禁止网站使用动态传感器</translation>
 <translation id="6397094776139756010">同步和个性化选项</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> 能够将您所做的更改直接保存到以下文件夹中的文件。只有在此标签页处于打开状态时,该网站才能保存更改。</translation>
 <translation id="6398715114293939307">移除 Google Play 商店</translation>
 <translation id="6398765197997659313">退出全屏模式</translation>
 <translation id="6399774419735315745">间谍</translation>
@@ -3600,11 +3613,13 @@
 <translation id="6455264371803474013">在特定网站上</translation>
 <translation id="6455894534188563617">新建文件夹(&amp;N)</translation>
 <translation id="6456394469623773452">良好</translation>
+<translation id="6456955391422100996">已移除广告。</translation>
 <translation id="645705751491738698">继续拦截 JavaScript</translation>
 <translation id="6458701200018867744">上传失败(<ph name="WEBRTC_LOG_UPLOAD_TIME" />)。</translation>
 <translation id="6459488832681039634">使用所选内容查找</translation>
 <translation id="6459799433792303855">活动窗口已移至另一显示屏。</translation>
 <translation id="6460601847208524483">查找下一个</translation>
+<translation id="6461170143930046705">正在搜索网络…</translation>
 <translation id="6463795194797719782">修改(&amp;E)</translation>
 <translation id="6466988389784393586">打开所有书签(&amp;O)</translation>
 <translation id="6467304607960172345">优化全屏视频</translation>
@@ -3643,6 +3658,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">您已连接到<ph name="NETWORK_TYPE" />网络。</translation>
 <translation id="6527303717912515753">分享</translation>
 <translation id="6528513914570774834">允许此设备的其他用户使用此网络</translation>
 <translation id="652948702951888897">Chrome 历史记录</translation>
@@ -3739,7 +3755,6 @@
 <translation id="6680650203439190394">语速</translation>
 <translation id="6681668084120808868">拍照</translation>
 <translation id="6681964764822470072">系统即将卸载“<ph name="APP_NAME" />”。</translation>
-<translation id="6685083257944113180">停止,<ph name="SINK_NAME" />,<ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">打开 Google Play</translation>
 <translation id="6686490380836145850">关闭右侧标签页</translation>
 <translation id="6686817083349815241">保存您的密码</translation>
@@ -3847,6 +3862,7 @@
 <translation id="6845038076637626672">以最大化模式打开</translation>
 <translation id="6845325883481699275">帮助我们改善 Chrome 安全性</translation>
 <translation id="6848388270925200958">此刻,您有一些卡只能在这部设备上使用</translation>
+<translation id="6850286078059909152">文字颜色</translation>
 <translation id="6851497530878285708">已启用此应用</translation>
 <translation id="6853388645642883916">更新程序处于休眠模式</translation>
 <translation id="68541483639528434">关闭其他标签页</translation>
@@ -3896,7 +3912,6 @@
 <translation id="6923132443355966645">滚动/点击</translation>
 <translation id="6923633482430812883">装载共享时出错。请检查您要连接的文件服务器是否支持 SMBv2 或更高版本。</translation>
 <translation id="6930036377490597025">外部安全密钥或内置传感器</translation>
-<translation id="6930242544192836755">持续时间</translation>
 <translation id="693807610556624488">对“<ph name="DEVICE_NAME" />”执行的写入操作超出属性长度上限。</translation>
 <translation id="6941937518557314510">请登录“<ph name="TOKEN_NAME" />”,使用证书向 <ph name="HOST_NAME" /> 验证身份。</translation>
 <translation id="6943176775188458830">取消打印</translation>
@@ -3910,6 +3925,7 @@
 <translation id="6951153907720526401">付款处理程序</translation>
 <translation id="6951663584153258142">贵组织要求您更新此设备</translation>
 <translation id="6953878494808481632">相关信息</translation>
+<translation id="6953916367503892689">{0,plural, =1{文件:<ph name="FILES" />}other{文件:<ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">审查弹出内容</translation>
 <translation id="6957044667612803194">此安全密钥不支持 PIN 码</translation>
 <translation id="6957231940976260713">服务名称</translation>
@@ -4122,7 +4138,6 @@
 <translation id="7254554697254365959">无法翻译此网页。</translation>
 <translation id="7254951428499890870">确定要以诊断模式启动“<ph name="APP_NAME" />”吗?</translation>
 <translation id="7255002516883565667">此刻,您有 1 张卡只能在这部设备上使用</translation>
-<translation id="7255220508626648026">正在投射:<ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">请再次轻触安全密钥以确认重置。安全密钥上存储的所有信息都会清空,包括它的 PIN 码。</translation>
 <translation id="7255935316994522020">应用</translation>
 <translation id="7256069762010468647">该网站正在使用您的摄像头</translation>
@@ -4256,6 +4271,7 @@
 <translation id="7456142309650173560">开发者版本</translation>
 <translation id="7456847797759667638">打开位置...</translation>
 <translation id="7458168200501453431">使用 Google 搜索所用的拼写检查工具。您在浏览器中输入的文字会被发送给 Google。</translation>
+<translation id="7460045493116006516">您已安装的当前主题背景</translation>
 <translation id="7461924472993315131">固定</translation>
 <translation id="746216226901520237">下次,您只需使用手机就能解锁您的 <ph name="DEVICE_TYPE" /> 了。您可在“设置”中关闭 Smart Lock。</translation>
 <translation id="7463006580194749499">添加用户</translation>
@@ -4315,6 +4331,7 @@
 <translation id="7554791636758816595">新标签页</translation>
 <translation id="7556033326131260574">Smart Lock 无法验证您的帐号,您需要输入密码才能进入。</translation>
 <translation id="7556242789364317684">抱歉,“<ph name="SHORT_PRODUCT_NAME" />”无法恢复您的设置。要更正此错误,“<ph name="SHORT_PRODUCT_NAME" />”必须使用 Powerwash 重置您的设备。</translation>
+<translation id="7559444627302317199">请检查您的网络连接,然后重试。</translation>
 <translation id="7559719679815339381">请稍候…自助服务终端应用正在更新。请不要拔下 U 盘。</translation>
 <translation id="7561196759112975576">永远</translation>
 <translation id="7563991800558061108">要从此错误中恢复,您需要从登录屏幕登录自己的Google帐号。然后,您可以退出Google帐号,并重新尝试创建受监管用户。</translation>
@@ -4555,7 +4572,6 @@
 <translation id="7887334752153342268">复制</translation>
 <translation id="7887864092952184874">蓝牙鼠标已配对</translation>
 <translation id="7889565820482017512">显示大小</translation>
-<translation id="7889966925761734854">进度</translation>
 <translation id="7893008570150657497">通过计算机访问照片、音乐和其他媒体</translation>
 <translation id="7893153962594818789">此 <ph name="DEVICE_TYPE" /> 上的蓝牙处于关闭状态。请输入您的密码,然后开启蓝牙。</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" />(默认)</translation>
@@ -4563,7 +4579,6 @@
 <translation id="7898627924844766532">固定在工具栏中</translation>
 <translation id="7898725031477653577">一律翻译</translation>
 <translation id="790040513076446191">管理隐私相关设置</translation>
-<translation id="7902874111237641165">Smooth Motion [测试版]</translation>
 <translation id="7903345046358933331">该页面已停止响应。您可以等待该页面恢复响应,也可以将其关闭。</translation>
 <translation id="7903742244674067440">您有证书可标识以下证书授权中心</translation>
 <translation id="7903925330883316394">实用程序:<ph name="UTILITY_TYPE" /></translation>
@@ -4675,6 +4690,7 @@
 <translation id="8037117027592400564">读取使用合成语音说出的所有文字</translation>
 <translation id="8037357227543935929">询问(默认)</translation>
 <translation id="803771048473350947">文件</translation>
+<translation id="8042142357103597104">文字不透明度</translation>
 <translation id="8044899503464538266">慢</translation>
 <translation id="8045253504249021590">已通过 Google 信息中心阻止同步。</translation>
 <translation id="8045923671629973368">输入应用 ID 或网上应用店网址</translation>
@@ -4711,7 +4727,6 @@
     <ph name="BEGIN_PARAGRAPH5" />您可在“设置”部分中关闭此服务。<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">两次输入的 PIN 码不一致</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> 使用的是由某款扩展程序指定的代理设置</translation>
-<translation id="8099495042588009598">更多权限</translation>
 <translation id="8101987792947961127">必须在下次重启时执行 Powerwash</translation>
 <translation id="8102159139658438129">转到<ph name="LINK_BEGIN" />设置<ph name="LINK_END" />即可查看与所连手机相关的选项</translation>
 <translation id="8104696615244072556">对您的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 设备执行 Powerwash 操作,使其还原到之前的版本。</translation>
@@ -4762,8 +4777,10 @@
     我不认为该网站应被屏蔽!</translation>
 <translation id="8184288427634747179">改用“<ph name="AVATAR_NAME" />”</translation>
 <translation id="8184318863960255706">更多信息</translation>
+<translation id="8184472985242519288">均匀</translation>
 <translation id="8185331656081929126">在网络中检测到新打印机时显示通知</translation>
 <translation id="8186609076106987817">服务器找不到该文件。</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> 可以读取以下文件夹中的所有文件。只有在此标签页处于打开状态时,该网站才能查看更改。</translation>
 <translation id="8188389033983459049">请检查您的设备设置,并开启蓝牙以继续</translation>
 <translation id="8190193592390505034">正在连接到<ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">管理您的应用、扩展程序和主题背景</translation>
@@ -4867,7 +4884,6 @@
 <translation id="833986336429795709">要打开此链接,请选择一个应用</translation>
 <translation id="8342861492835240085">选择一个集合</translation>
 <translation id="834290227245955730">PIN 码无效。剩余重试次数:<ph name="RETRIES" /> 次。</translation>
-<translation id="8343956361364550006">使用高带宽网络可获得最佳视频或动画效果。网速较慢的其他人可能看不到您的内容。</translation>
 <translation id="8351419472474436977">此扩展程序控制了您的代理设置,也就是说,它可以更改、破坏或窃听您在网上执行的任何操作。如果您不确定出现这种变化的原因,那么这种变化可能并不是您所希望的。</translation>
 <translation id="8351630282875799764">电池无法充电</translation>
 <translation id="835238322900896202">卸载时出错。请通过终端进行卸载。</translation>
@@ -4900,9 +4916,11 @@
 <translation id="839736845446313156">注册</translation>
 <translation id="8398877366907290961">仍然继续</translation>
 <translation id="8400146488506985033">管理用户</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> 可以将您所做的更改直接保存到以下文件夹中的文件。只有在此标签页处于打开状态时,该网站才能保存更改。</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">先询问(推荐)</translation>
 <translation id="8418445294933751433">显示为标签页(&amp;S)</translation>
+<translation id="8418905021510211421">此页面可以读取您设备上的某个文件夹。</translation>
 <translation id="8419098111404128271">与“<ph name="SEARCH_TEXT" />”相符的搜索结果</translation>
 <translation id="8419368276599091549">欢迎使用您的 <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">更改</translation>
@@ -4922,6 +4940,7 @@
 <translation id="8438566539970814960">改善搜索和浏览体验</translation>
 <translation id="8439506636278576865">询问是否翻译此语言的网页</translation>
 <translation id="8440630305826533614">Linux 应用</translation>
+<translation id="844241640324986723">未能删除您的登录数据。</translation>
 <translation id="8443338615972234259">请立即为您的受监管用户创建一个新帐号。</translation>
 <translation id="8446884382197647889">了解详情</translation>
 <translation id="8447409163267621480">必须以 Ctrl 键或 Alt 键开头</translation>
@@ -4937,8 +4956,6 @@
 <translation id="8461914792118322307">代理</translation>
 <translation id="8463215747450521436">此受监管用户可能已被管理员删除或停用。如果您想继续以此用户身份登录,请与管理员联系。</translation>
 <translation id="846374874681391779">下载内容栏</translation>
-<translation id="8463807869745732775">"&gt;
-    存储在安全密钥中的登录数据</translation>
 <translation id="8463955938112983119">“<ph name="PLUGIN_NAME" />”已被停用。</translation>
 <translation id="8464132254133862871">此用户帐号不能使用该服务。</translation>
 <translation id="8465252176946159372">无效</translation>
@@ -5004,6 +5021,7 @@
 <translation id="8569002732135253578">正在打印 <ph name="DOCUMENT_NAME" /></translation>
 <translation id="8569682776816196752">未找到任何目标</translation>
 <translation id="8571213806525832805">近 4 周</translation>
+<translation id="8573403125070227391">对于您的设备来说,此广告使用的资源过多,因此 Chrome 已将其移除。</translation>
 <translation id="8574990355410201600">始终允许 <ph name="HOST" /> 播放声音</translation>
 <translation id="8575286410928791436">按住 <ph name="KEY_EQUIVALENT" /> 键即可退出</translation>
 <translation id="8578639784464423491">不能超过 99 个字母</translation>
@@ -5027,13 +5045,13 @@
 <translation id="8609465669617005112">上移</translation>
 <translation id="8610103157987623234">格式不正确,请重试</translation>
 <translation id="8615618338313291042">隐身模式下使用的应用...<ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">阴影</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />:<ph name="ERROR" /></translation>
 <translation id="8620617069779373398">漫游状态</translation>
 <translation id="8620765578342452535">配置网络连接</translation>
 <translation id="8621866727807194849">您的计算机上存在有害软件。Chrome 正在移除该软件、恢复您的设置并停用扩展程序。这可确保您的浏览器能够重新正常运行。</translation>
 <translation id="8621979332865976405">共享您的整个屏幕</translation>
 <translation id="862542460444371744">扩展程序(&amp;E)</translation>
-<translation id="8627151598708688654">选择来源</translation>
 <translation id="862727964348362408">已暂停</translation>
 <translation id="862750493060684461">CSS 缓存</translation>
 <translation id="8627795981664801467">仅限安全连接</translation>
@@ -5087,6 +5105,7 @@
 <translation id="8688579245973331962">看不到您的姓名?</translation>
 <translation id="8688591111840995413">密码错误</translation>
 <translation id="8688672835843460752">可用</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">打开位置(&amp;L)...</translation>
 <translation id="869884720829132584">应用菜单</translation>
 <translation id="869891660844655955">截止日期</translation>
@@ -5250,6 +5269,7 @@
 <translation id="891365694296252935">发送使用情况数据和诊断数据。目前,此设备会自动向 Google 发送诊断数据、设备数据和应用使用情况数据。这些数据不会被用来辨识您孩子的身份,而是会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。这项设置是由此设备的所有者强制指定的。如果您已为孩子开启“其他网络与应用活动记录”设置,这些数据可能会被保存到其 Google 帐号中。<ph name="BEGIN_LINK1" />了解详情<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">正在加载建议</translation>
 <translation id="8916476537757519021">隐身辅助框架:<ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - 可以读取您设备上的某个文件夹</translation>
 <translation id="8919275547519617350">要想将您的所有密码同步到您的所有设备上,请登录您的帐号并开启同步功能。</translation>
 <translation id="8921366488406707015">正在验证您的安全密钥…</translation>
 <translation id="8922013791253848639">在此网站上始终允许显示广告</translation>
@@ -5279,7 +5299,6 @@
 <translation id="8965037249707889821">输入旧密码</translation>
 <translation id="8966870118594285808">如果您无意中关闭了某个标签页,可将其重新打开</translation>
 <translation id="8967866634928501045">同时按 Alt+Shift+A 即可显示</translation>
-<translation id="8970203673128054105">查看投射模式列表</translation>
 <translation id="89720367119469899">转义</translation>
 <translation id="8972513834460200407">请与您的网络管理员联系,确保防火墙没有阻止系统从 Google 服务器下载内容。</translation>
 <translation id="8973557916016709913">移除缩放级别</translation>
@@ -5428,6 +5447,7 @@
 <translation id="9214520840402538427">糟糕!安装时间属性的初始化已过期,请与您的支持代表联系。</translation>
 <translation id="9214695392875603905">纸杯蛋糕</translation>
 <translation id="9215293857209265904">已添加“<ph name="EXTENSION_NAME" />”</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> 能够将您所做的更改直接保存到以下文件。只有在此标签页处于打开状态时,该网站才能保存更改。</translation>
 <translation id="9218430445555521422">设为默认浏览器</translation>
 <translation id="9219103736887031265">图片</translation>
 <translation id="9220525904950070496">移除帐号</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 5d2fc8d..3da5085 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -69,11 +69,13 @@
 <translation id="1085697365578766383">啟動虛擬機器時發生錯誤,請再試一次。</translation>
 <translation id="1089439967362294234">變更密碼</translation>
 <translation id="1090126737595388931">沒有執行中的背景應用程式</translation>
+<translation id="1090290614672149983">要將變更儲存至原始檔案嗎?</translation>
 <translation id="1090918500949388876">只要在螢幕開啟狀態下說出「Ok Google」,就能隨時存取 Google 助理</translation>
 <translation id="1091767800771861448">按下 ESCAPE 鍵可略過 (僅限非官方版本)。</translation>
 <translation id="1093457606523402488">可偵測到的網路:</translation>
 <translation id="1094607894174825014">在以下裝置上要求的讀取或寫入作業使用了無效的偏移:「<ph name="DEVICE_NAME" />」。</translation>
 <translation id="1097658378307015415">請在登入前以訪客身分進入,啟用網路 <ph name="NETWORK_ID" /></translation>
+<translation id="110029732810301672">這個分頁可以儲存至原始檔案。</translation>
 <translation id="1103523840287552314">一律翻譯<ph name="LANGUAGE" /></translation>
 <translation id="1108600514891325577">停止(&amp;S)</translation>
 <translation id="1110155001042129815">等一下</translation>
@@ -112,7 +114,6 @@
 <translation id="1150565364351027703">太陽眼鏡</translation>
 <translation id="1151917987301063366">一律允許 <ph name="HOST" /> 存取感應器</translation>
 <translation id="1153356358378277386">配對裝置</translation>
-<translation id="1156488781945104845">目前時間</translation>
 <translation id="1161575384898972166">登入 <ph name="TOKEN_NAME" /> 即可匯出用戶端憑證。</translation>
 <translation id="1163931534039071049">檢視框架原始碼(&amp;V)</translation>
 <translation id="1164674268730883318">要關閉 <ph name="DEVICE_TYPE" /> 專用 Smart Lock 嗎?</translation>
@@ -196,7 +197,6 @@
 <translation id="1274977772557788323">Adobe Flash Player 儲存設定</translation>
 <translation id="1274997165432133392">Cookie 和其他網站資料</translation>
 <translation id="127668050356036882">關閉所有視窗</translation>
-<translation id="1277908057200820621">查看裝置清單</translation>
 <translation id="1280820357415527819">正在搜尋行動網路</translation>
 <translation id="1285320974508926690">一律不翻譯此網站</translation>
 <translation id="1285484354230578868">將資料儲存在 Google 雲端硬碟帳戶中</translation>
@@ -223,6 +223,7 @@
 <translation id="131461803491198646">家用網路,非漫遊狀態</translation>
 <translation id="1316136264406804862">搜尋中...</translation>
 <translation id="1316495628809031177">已暫停同步處理</translation>
+<translation id="1317637799698924700">你的座架將以 USB Type-C 相容模式執行。</translation>
 <translation id="1322046419516468189">你可以查看及管理 <ph name="SAVED_PASSWORDS_STORE" />中儲存的密碼</translation>
 <translation id="1326317727527857210">如要存取您在其他裝置上開啟的分頁,請登入 Chrome。</translation>
 <translation id="1327074568633507428">Google 雲端列印中的印表機</translation>
@@ -249,6 +250,7 @@
 <translation id="1365180424462182382">你的<ph name="BEGIN_LINK" />瀏覽器是由 <ph name="ENROLLMENT_DOMAIN" /> 管理<ph name="END_LINK" /></translation>
 <translation id="1366177842110999534">在您的 <ph name="DEVICE_TYPE" /> 上執行 Linux 工具、編輯器和 IDE。&lt;a target="_blank" href="<ph name="URL" />"&gt;瞭解詳情&lt;/a&gt;</translation>
 <translation id="1367951781824006909">選擇檔案</translation>
+<translation id="1370749010280229230">將螢幕連接至座架時發生問題</translation>
 <translation id="1371301976177520732">使用任何裝置均可取得自己的書籤、密碼、歷史記錄及其他設定</translation>
 <translation id="1372841398847029212">同步到你的帳戶</translation>
 <translation id="1374844444528092021">網路「<ph name="NETWORK_NAME" />」要求的憑證尚未安裝或已經無效。請取得新憑證,然後嘗試重新連線。</translation>
@@ -306,6 +308,7 @@
 <translation id="1451375123200651445">另存為單一檔案網頁</translation>
 <translation id="1451917004835509682">新增受監管的使用者</translation>
 <translation id="1454223536435069390">擷取螢幕畫面(&amp;A)</translation>
+<translation id="1458243790901188746">{0,plural, =1{資料夾:<ph name="DIRECTORIES" />}other{資料夾:<ph name="DIRECTORIES" />}}</translation>
 <translation id="1459967076783105826">由擴充功能新增的搜尋引擎</translation>
 <translation id="146000042969587795">此框架由於包含不安全的內容,已被封鎖。</translation>
 <translation id="146219525117638703">ONC 狀態</translation>
@@ -444,6 +447,7 @@
 <translation id="1650371550981945235">顯示輸入選項</translation>
 <translation id="1651008383952180276">你必須輸入兩次相同的通關密語</translation>
 <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{將這台印表機新增至 Google 雲端列印,即可隨時隨地進行列印。}other{將 # 台印表機新增至 Google 雲端列印,即可隨時隨地進行列印。}}</translation>
+<translation id="1656528038316521561">背景不透明度</translation>
 <translation id="1657406563541664238">只要自動傳送使用統計資料及當機報告給 Google,就能助我們一臂之力,讓「<ph name="PRODUCT_NAME" />」更臻完美</translation>
 <translation id="1658424621194652532">這個網頁正在存取你的麥克風。</translation>
 <translation id="1660204651932907780">允許網站播放音訊 (建議)</translation>
@@ -459,6 +463,7 @@
 <translation id="1673137583248014546"><ph name="URL" /> 要求查看安全金鑰的製造商和型號</translation>
 <translation id="1679068421605151609">開發人員工具</translation>
 <translation id="1679806121152819234">Plugin VM</translation>
+<translation id="1679810534535368772">確定要離開嗎?</translation>
 <translation id="167983332380191032">管理服務傳回了 HTTP 錯誤。</translation>
 <translation id="1680849702532889074">安裝 Linux 應用程式的過程中發生錯誤。</translation>
 <translation id="16815041330799488">禁止網站讀取已複製到剪貼簿的文字和圖片</translation>
@@ -510,6 +515,7 @@
 <translation id="1746402432151920942">受保護媒體 ID</translation>
 <translation id="175196451752279553">重新開啟已關閉分頁(&amp;E)</translation>
 <translation id="1753905327828125965">最常造訪</translation>
+<translation id="1755601632425835748">文字大小</translation>
 <translation id="1756681705074952506">輸入法</translation>
 <translation id="1757301747492736405">正在等待解除安裝</translation>
 <translation id="175772926354468439">啟用主題</translation>
@@ -629,6 +635,7 @@
 <translation id="1918141783557917887">縮小(&amp;S)</translation>
 <translation id="1919345977826869612">廣告</translation>
 <translation id="1919814239594435008">已允許無沙箱防護的外掛程式</translation>
+<translation id="1920390473494685033">聯絡人</translation>
 <translation id="1921050530041573580">為手機設定訊息配對</translation>
 <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation>
 <translation id="1924559387127953748">在 <ph name="IDS_SHORT_PRODUCT_NAME" /> 中體驗 Google 強大的智慧功能</translation>
@@ -785,6 +792,7 @@
 <translation id="2177950615300672361">無痕式分頁:<ph name="TAB_NAME" /></translation>
 <translation id="2178098616815594724"><ph name="PEPPER_PLUGIN_DOMAIN" /> 的「<ph name="PEPPER_PLUGIN_NAME" />」要求存取你的電腦</translation>
 <translation id="2178614541317717477">CA 洩露</translation>
+<translation id="2179849162388791084">無法取得安全金鑰中的登入資料。</translation>
 <translation id="218070003709087997">使用數字指定列印份數 (1 至 999)。</translation>
 <translation id="2184515124301515068">讓 Chrome 自行判斷何時允許網站播放音訊 (建議使用)</translation>
 <translation id="2187895286714876935">伺服器憑證匯入錯誤</translation>
@@ -863,7 +871,6 @@
 <translation id="2277255602909579701">所有 Cookie 和網站資料</translation>
 <translation id="2277769717710009150">{COUNT,plural, =1{已複製 1 個項目}other{已複製 # 個項目}}</translation>
 <translation id="2278562042389100163">開啟瀏覽器視窗</translation>
-<translation id="2279874276457403668">一次只能建立一個工作階段。</translation>
 <translation id="2280486287150724112">右邊界</translation>
 <translation id="2282146716419988068">GPU 處理程序</translation>
 <translation id="2282155092769082568">自動設定網址:</translation>
@@ -916,7 +923,6 @@
 <translation id="2352810082280059586">螢幕鎖定記事內容會自動儲存到「<ph name="LOCK_SCREEN_APP_NAME" />」。你最近的記事仍會保留在鎖定畫面上。</translation>
 <translation id="2353297238722298836">可使用攝影機和麥克風</translation>
 <translation id="2356070529366658676">詢問</translation>
-<translation id="2357949918965361754">您可以使用這項功能讓電視或其他裝置顯示 Chrome 的內容。</translation>
 <translation id="2359345697448000899">如要管理擴充功能,只要按一下 [工具] 選單裡的 [擴充功能] 即可。</translation>
 <translation id="2359808026110333948">繼續</translation>
 <translation id="236117173274098341">最佳化</translation>
@@ -964,6 +970,7 @@
 <translation id="2436720498717686157">貴機構要求立即更新這部裝置</translation>
 <translation id="2439545803278355377">請輸入新的 PIN 碼。PIN 碼必須至少包含四個字元,可以使用字母、數字和其他字元。</translation>
 <translation id="2440604414813129000">檢視原始碼(&amp;O)</translation>
+<translation id="2442916515643169563">文字陰影</translation>
 <translation id="2444119669991608829">不是<ph name="LANGUAGE" />網頁嗎?</translation>
 <translation id="2445081178310039857">請指定擴充功能根目錄。</translation>
 <translation id="2445484935443597917">建立新的個人資料</translation>
@@ -1179,6 +1186,7 @@
 <translation id="2738771556149464852">此日期之前:</translation>
 <translation id="2739191690716947896">偵錯</translation>
 <translation id="2739240477418971307">變更你的無障礙設定</translation>
+<translation id="274029851662193272">內凹</translation>
 <translation id="2740393541869613458">查看受監管使用者瀏覽過的網站;以及</translation>
 <translation id="2741912629735277980">在登入畫面上顯示 UI</translation>
 <translation id="274290345632688601">正在還原 Linux 應用程式和檔案</translation>
@@ -1227,6 +1235,7 @@
 <translation id="2806891468525657116">捷徑已經存在</translation>
 <translation id="2807517655263062534">你下載的檔案會顯示在這裡</translation>
 <translation id="2809586584051668049">和另外 <ph name="NUMBER_ADDITIONAL_DISABLED" /> 個</translation>
+<translation id="2812049959647166806">系統不支援 Thunderbolt</translation>
 <translation id="2812944337881233323">請嘗試登出,再重新登入</translation>
 <translation id="2812989263793994277">不顯示任何圖片</translation>
 <translation id="281390819046738856">無法簽署要求。</translation>
@@ -1249,7 +1258,6 @@
 <translation id="2841837950101800123">提供者</translation>
 <translation id="2844169650293029770">USB-C 裝置 (左前方連接埠)</translation>
 <translation id="2845382757467349449">永遠顯示書籤列</translation>
-<translation id="2847759467426165163">投放至</translation>
 <translation id="284805635805850872">要移除有害軟體嗎?</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
 <translation id="284975061945174219">清理失敗</translation>
@@ -1296,6 +1304,7 @@
     伺服器訊息:<ph name="SERVER_MSG" /></translation>
 <translation id="2908162660801918428">依目錄新增媒體庫</translation>
 <translation id="2910318910161511225">請連線至網路,然後再試一次</translation>
+<translation id="2910518940971897750">儲存至原始檔案</translation>
 <translation id="2913331724188855103">允許網站儲存及讀取 Cookie 資料 (建議)</translation>
 <translation id="2915102088417824677">查看活動記錄</translation>
 <translation id="2915873080513663243">自動掃描</translation>
@@ -1360,12 +1369,14 @@
 <translation id="3013291976881901233">MIDI 裝置</translation>
 <translation id="3015639418649705390">立即重新啟動</translation>
 <translation id="3016329696181678353">無法自動設定「<ph name="PRINTER_NAME" />」。請手動設定印表機的進階選項。</translation>
+<translation id="3016381065346027039">沒有記錄項目</translation>
 <translation id="3016641847947582299">元件已更新</translation>
 <translation id="3016780570757425217">存取您的位置資訊</translation>
 <translation id="3017079585324758401">背景</translation>
 <translation id="3020183492814296499">快速鍵</translation>
 <translation id="3020990233660977256">序號:<ph name="SERIAL_NUMBER" /></translation>
 <translation id="3021066826692793094">蝴蝶</translation>
+<translation id="3021408157810018664">要將變更儲存至原始檔案嗎?</translation>
 <translation id="3021426244864538700">正在存取這個網站的資料</translation>
 <translation id="3021678814754966447">檢視頁框原始碼(&amp;V)</translation>
 <translation id="3022978424994383087">無法辨識語音內容。</translation>
@@ -1458,6 +1469,7 @@
 <translation id="3170072451822350649">你也可以略過登入程序,<ph name="LINK_START" />以訪客身分瀏覽<ph name="LINK_END" />。</translation>
 <translation id="3172045848207518317">有某個網站正在存取視訊輸入內容</translation>
 <translation id="3177909033752230686">網頁語言:</translation>
+<translation id="3179982752812949580">文字字型</translation>
 <translation id="3181954750937456830">安全瀏覽 (保護你和你的裝置不受危險網站攻擊)</translation>
 <translation id="3182749001423093222">拼字檢查</translation>
 <translation id="3183139917765991655">設定檔匯入工具</translation>
@@ -1510,7 +1522,6 @@
 <translation id="3275778913554317645">在視窗中開啟</translation>
 <translation id="3278001907972365362">你的 Google 帳戶有狀況需處理</translation>
 <translation id="3279230909244266691">正在啟動虛擬機器,過程可能需要幾分鐘。</translation>
-<translation id="3279741024917655738">在以下位置顯示全螢幕影片</translation>
 <translation id="3280237271814976245">另存新檔(&amp;A)...</translation>
 <translation id="3280243678470289153">繼續使用 Chrome</translation>
 <translation id="3281892622610078515">要隔離的檔案和程式:</translation>
@@ -1532,7 +1543,7 @@
 <translation id="3303855915957856445">找不到相符的搜尋結果</translation>
 <translation id="3305389145870741612">格式化程序可能需要幾秒鐘,請稍候。</translation>
 <translation id="3305661444342691068">在預覽中開啟 PDF</translation>
-<translation id="3306684685104080068">允許投放到 Google Hangouts 這類雲端服務。</translation>
+<translation id="3307871847038842490">這個頁面可以儲存至原始檔案。</translation>
 <translation id="3308006649705061278">組織單位 (OU)</translation>
 <translation id="3308116878371095290">無法為這個網頁設定 Cookie。</translation>
 <translation id="3308134619352333507">隱藏按鈕</translation>
@@ -1638,7 +1649,6 @@
 <translation id="3462413494201477527">取消設定帳戶?</translation>
 <translation id="3464012987031883895">有某個網站正在存取音訊輸入內容</translation>
 <translation id="346431825526753">這是由 <ph name="CUSTODIAN_EMAIL" /> 所管理的兒童專用帳戶。</translation>
-<translation id="3468275649641751422">串流播放影片或音訊檔案</translation>
 <translation id="3468999815377931311">Android 手機</translation>
 <translation id="3470442499439619530">移除這個使用者</translation>
 <translation id="3473479545200714844">畫面放大鏡</translation>
@@ -1661,6 +1671,7 @@
 <translation id="3496213124478423963">縮小</translation>
 <translation id="3497560059572256875">分享 Doodle</translation>
 <translation id="3505030558724226696">撤銷裝置存取權</translation>
+<translation id="3505635633742443645">透過 USB Type-C 通訊埠輸出影片時,無法使用座架的 HDMI 通訊埠。請為其中一個螢幕使用不同的通訊埠。</translation>
 <translation id="3507421388498836150">「<ph name="EXTENSION_NAME" />」目前擁有的權限</translation>
 <translation id="3507888235492474624">重新掃描藍牙裝置</translation>
 <translation id="3508920295779105875">選擇另一個資料夾...</translation>
@@ -1713,6 +1724,7 @@
 <translation id="3576324189521867626">已成功安裝</translation>
 <translation id="3578594933904494462">正在分享這個分頁的內容。</translation>
 <translation id="357886715122934472">&lt;strong&gt;<ph name="SENDER" />&lt;/strong&gt; 想要與你的群組 (<ph name="GROUP_NAME" />) 共用印表機 &lt;strong&gt;<ph name="PRINTER_NAME" />&lt;/strong&gt;。你接受之後,所有群組成員即可使用這台印表機進行列印工作。</translation>
+<translation id="357889014807611375">計量付費的 Wi-Fi</translation>
 <translation id="3584169441612580296">讀取及變更你電腦中的相片、音樂及其他媒體</translation>
 <translation id="3587482841069643663">全部</translation>
 <translation id="358796204584394954">在「<ph name="DEVICE_NAME" />」上輸入此代碼即可配對:</translation>
@@ -1723,6 +1735,7 @@
 <translation id="359283478042092570">輸入</translation>
 <translation id="3593965109698325041">憑證名稱限制</translation>
 <translation id="3596235046596950091">啟用雲端服務</translation>
+<translation id="3599221874935822507">外凸</translation>
 <translation id="3599863153486145794">將歷史記錄從所有登入帳戶的裝置上清除。你的 Google 帳戶可能會儲存其他形式的瀏覽記錄,請參閱 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />。</translation>
 <translation id="3600051066689725006">網路要求資訊</translation>
 <translation id="3600792891314830896">將播放音訊的網站設為靜音</translation>
@@ -1737,6 +1750,7 @@
 <translation id="3612673635130633812">「&lt;a href="<ph name="URL" />"&gt;<ph name="EXTENSION" />&lt;/a&gt;」下載了這個檔案</translation>
 <translation id="3613134908380545408">顯示「<ph name="FOLDER_NAME" />」</translation>
 <translation id="3613422051106148727">在新分頁中開啟(&amp;O)</translation>
+<translation id="3615073365085224194">請以手指輕觸指紋感應器</translation>
 <translation id="3616113530831147358">音訊</translation>
 <translation id="3616741288025931835">清除瀏覽資料(&amp;C)...</translation>
 <translation id="3617891479562106823">目前無法存取背景,請稍後再試。</translation>
@@ -1818,7 +1832,6 @@
 <translation id="3719826155360621982">首頁</translation>
 <translation id="3720996970802414353">確定切換</translation>
 <translation id="3722108462506185496">啟用虛擬機器服務時發生錯誤,請再試一次。</translation>
-<translation id="3723158278575423087">歡迎體驗 Chromium 的 Cast 服務!</translation>
 <translation id="3725367690636977613">頁數</translation>
 <translation id="3726137731714254362">從這裡移除資料夾會停止與他人共用檔案,但不會刪除檔案。</translation>
 <translation id="3727148787322499904">變更這項設定會影響所有共用網路</translation>
@@ -1853,7 +1866,6 @@
 <translation id="3764314093345384080">詳細版本資訊</translation>
 <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{與 1 個 USB 裝置通訊}other{與 # 個 USB 裝置通訊}}</translation>
 <translation id="3765246971671567135">無法讀取離線示範模式的政策。</translation>
-<translation id="3766223500670287046">遠端螢幕</translation>
 <translation id="3768037234834996183">正在處理您的偏好設定...</translation>
 <translation id="377050016711188788">冰淇淋</translation>
 <translation id="3771294271822695279">影片檔</translation>
@@ -1926,7 +1938,6 @@
 <translation id="3857773447683694438">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</translation>
 <translation id="3857807444929313943">移開手指,然後再次輕觸感應器</translation>
 <translation id="3860104611854310167"><ph name="PROFILE_NAME" />:已暫停同步處理</translation>
-<translation id="3862134173397075045">歡迎在 Chrome 中體驗 Cast 服務!</translation>
 <translation id="3862693525629180217">透過內建感應器進行驗證</translation>
 <translation id="3862788408946266506">含有「kiosk_only」資訊清單屬性的應用程式只能在 Chrome 作業系統 Kiosk 模式中安裝</translation>
 <translation id="3865414814144988605">解析度</translation>
@@ -1975,6 +1986,7 @@
 <translation id="3926002189479431949">Smart Lock 手機已變更</translation>
 <translation id="3927932062596804919">拒絕</translation>
 <translation id="3930737994424905957">正在尋找裝置</translation>
+<translation id="3930968231047618417">背景顏色</translation>
 <translation id="3933283459331715412">還原已刪除的 <ph name="USERNAME" /> 密碼</translation>
 <translation id="3936390757709632190">在新分頁中開啟音效(&amp;O)</translation>
 <translation id="3936925983113350642">日後需要還原這個憑證時會用到您選擇的密碼,請將密碼記錄在安全的位置。</translation>
@@ -1993,6 +2005,7 @@
 <translation id="3949790930165450333"><ph name="DEVICE_NAME" /> (<ph name="DEVICE_ID" />)</translation>
 <translation id="394984172568887996">從 IE 匯入</translation>
 <translation id="3950820424414687140">登入</translation>
+<translation id="3950828138786918475">這個分頁可以讀取裝置上的資料夾。</translation>
 <translation id="3954354850384043518">下載中</translation>
 <translation id="3954469006674843813"><ph name="WIDTH" />x<ph name="HEIGHT" /> (<ph name="REFRESH_RATE" /> 赫茲)</translation>
 <translation id="3954953195017194676">你最近並未擷取 WebRTC 事件記錄。</translation>
@@ -2011,6 +2024,7 @@
 <translation id="397105322502079400">計算中…</translation>
 <translation id="3975565978598857337">無法連線至指定領域的伺服器</translation>
 <translation id="397703832102027365">即將完成...</translation>
+<translation id="3977886311744775419">這個網路類型無法下載自動更新,但你可以手動檢查更新。</translation>
 <translation id="3979395879372752341">已新增以下擴充功能:<ph name="EXTENSION_NAME" /></translation>
 <translation id="3979748722126423326">啟用 <ph name="NETWORKDEVICE" /></translation>
 <translation id="3981760180856053153">輸入的儲存類型無效。</translation>
@@ -2150,6 +2164,7 @@
 <translation id="4194570336751258953">啟用點按功能</translation>
 <translation id="4195643157523330669">在新分頁中開啟</translation>
 <translation id="4195814663415092787">繼續瀏覽上次開啟的網頁</translation>
+<translation id="4197940474316761015"><ph name="ORIGIN" /> 可以將你的變更直接儲存至下列檔案。這個網站只有在此分頁開啟時才能儲存變更。</translation>
 <translation id="4198146608511578238">只要按住啟動器圖示即可與 Google 助理交談。</translation>
 <translation id="4200689466366162458">自訂字詞</translation>
 <translation id="4200983522494130825">新增分頁(&amp;T)</translation>
@@ -2197,7 +2212,6 @@
 <translation id="4267953847983678297">自動連線至行動數據網路</translation>
 <translation id="4268025649754414643">金鑰編密</translation>
 <translation id="4270393598798225102">第 <ph name="NUMBER" /> 版</translation>
-<translation id="4271396100647220620">找不到相符的項目</translation>
 <translation id="4275663329226226506">媒體</translation>
 <translation id="4275830172053184480">重新啟動裝置</translation>
 <translation id="4278101229438943600">你的 Google 助理已準備就緒</translation>
@@ -2346,6 +2360,7 @@
 <translation id="4533985347672295764">CPU 時間</translation>
 <translation id="4534661889221639075">請再試一次。</translation>
 <translation id="4535127706710932914">預設設定檔</translation>
+<translation id="4535767533210902251">指紋感應器位於鍵盤右上方,請用任何一隻手指輕觸指紋感應器。</translation>
 <translation id="4538684596480161368">一律禁止在 <ph name="HOST" /> 執行無沙箱防護的外掛程式</translation>
 <translation id="4538792345715658285">由公司政策安裝</translation>
 <translation id="4542520061254486227">讀取你在 <ph name="WEBSITE_1" /> 和 <ph name="WEBSITE_2" /> 上產生的資料</translation>
@@ -2379,6 +2394,7 @@
 <translation id="457386861538956877">更多…</translation>
 <translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4576541033847873020">配對藍牙裝置</translation>
+<translation id="4578012756826807359">已成功刪除你的登入資料。</translation>
 <translation id="4579581181964204535">無法投放 <ph name="HOST_NAME" />。</translation>
 <translation id="4581774856936278355">還原 Linux 時發生錯誤</translation>
 <translation id="4582563038311694664">重設所有設定</translation>
@@ -2496,7 +2512,6 @@
 <translation id="4763830802490665879">系統將於你退出時將多個網站產生的 Cookie 清除。</translation>
 <translation id="4765582662863429759">允許 Android 訊息將簡訊內容從手機轉送到 Chromebook</translation>
 <translation id="4768332406694066911">您有這些機構核發給您的憑證</translation>
-<translation id="4772404146526168240">本機螢幕和遠端螢幕</translation>
 <translation id="4776146737004271126">開啟 Android 設定</translation>
 <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> 的密碼</translation>
 <translation id="4777825441726637019">Play 商店</translation>
@@ -2604,7 +2619,6 @@
 <translation id="4927846293686536410">只要登入帳戶,你在任何裝置上都能取得自己的書籤、歷史記錄和密碼,並套用相同的設定。此外,系統還會自動讓你登入各項 Google 服務。</translation>
 <translation id="4929386379796360314">列印目的地</translation>
 <translation id="4930714375720679147">開啟</translation>
-<translation id="4931132176527519925">一律使用鏡像功能</translation>
 <translation id="4932733599132424254">日期</translation>
 <translation id="4933484234309072027">嵌入至 <ph name="URL" /></translation>
 <translation id="493571969993549666">新增受監管的使用者</translation>
@@ -2644,6 +2658,7 @@
 <translation id="4992066212339426712">取消靜音</translation>
 <translation id="4992458225095111526">確認執行 Powerwash</translation>
 <translation id="4992473555164495036">你的管理員對可用的輸入法設定了限制。</translation>
+<translation id="4992866843815555470">請將你的座架送修。風扇異常將導致座架停止運作。</translation>
 <translation id="4992926179187649719">開啟「Ok Google」功能</translation>
 <translation id="4994474651455208930">允許網站要求成為通訊協定的預設處理常式</translation>
 <translation id="4994754230098574403">設定中</translation>
@@ -2782,7 +2797,6 @@
 <translation id="5233231016133573565">程序 ID</translation>
 <translation id="5233638681132016545">新增分頁</translation>
 <translation id="5233736638227740678">貼上(&amp;P)</translation>
-<translation id="5234764350956374838">關閉</translation>
 <translation id="5235050375939235066">要解除安裝應用程式嗎?</translation>
 <translation id="5235750401727657667">取代新分頁開啟時顯示的網頁</translation>
 <translation id="5238278114306905396">「<ph name="EXTENSION_NAME" />」應用程式已自動移除。</translation>
@@ -2847,6 +2861,7 @@
 <translation id="5319359161174645648">Google 推薦使用 Chrome</translation>
 <translation id="532247166573571973">無法連上伺服器,請稍後再試。</translation>
 <translation id="5324780743567488672">自動使用您的位置資訊設定時區</translation>
+<translation id="5327129740973624286"><ph name="WINDOW_TITLE" /> - 可以儲存至原始檔案</translation>
 <translation id="5327248766486351172">名稱</translation>
 <translation id="5327570636534774768">這個裝置的標記狀態是由其他網域管理。請先從該網域取消佈建裝置,再設定示範模式。</translation>
 <translation id="532943162177641444">在 <ph name="PHONE_NAME" /> 上輕觸通知,即可設定可供這個裝置使用的可攜式無線基地台。</translation>
@@ -2989,7 +3004,6 @@
 <translation id="5533001281916885985"><ph name="SITE_NAME" /> 要求下列權限:</translation>
 <translation id="5534304873398226603">捨棄相片或影片</translation>
 <translation id="5535941515421698170">將你現有的資料從這個裝置上一併移除</translation>
-<translation id="5537725057119320332">投放</translation>
 <translation id="5539221284352502426">輸入的密碼遭到伺服器拒絕。可能的原因包括:密碼長度不足、密碼必須包含數字或符號、新舊密碼必須有所不同。</translation>
 <translation id="5541687815721799001">使用應用程式</translation>
 <translation id="5542132724887566711">設定檔</translation>
@@ -3298,7 +3312,6 @@
 <translation id="5997337190805127100">進一步瞭解網站存取權</translation>
 <translation id="6000758707621254961">有 <ph name="RESULT_COUNT" /> 個與「<ph name="SEARCH_TEXT" />」相符的搜尋結果</translation>
 <translation id="6002458620803359783">聲音偏好</translation>
-<translation id="6005695835120147974">媒體路由器</translation>
 <translation id="6006484371116297560">傳統版</translation>
 <translation id="6007240208646052708">無法使用你的語言進行語音搜尋。</translation>
 <translation id="6009781704028455063">內建感應器</translation>
@@ -3498,7 +3511,6 @@
 <translation id="6285120908535925801">{NUM_PRINTER,plural, =1{您的網路上有一台新印表機}other{您的網路上有多台新印表機}}</translation>
 <translation id="6286708577777130801">已儲存的密碼詳細資料</translation>
 <translation id="6289452883081499048">享有個人化的 Google 服務,例如 Play</translation>
-<translation id="6290556621549272952">您可以使用這項功能讓電視或其他裝置顯示 Chromium 的內容。</translation>
 <translation id="6291949900244949761">網站要求存取 USB 裝置時詢問我 (建議)</translation>
 <translation id="6291953229176937411">在 Finder 中顯示(&amp;S)</translation>
 <translation id="6295158916970320988">所有網站</translation>
@@ -3562,6 +3574,7 @@
 <translation id="6395423953133416962">傳送<ph name="BEGIN_LINK1" />系統資訊<ph name="END_LINK1" />和<ph name="BEGIN_LINK2" />指標<ph name="END_LINK2" /></translation>
 <translation id="6396988158856674517">禁止網站使用動作感應器</translation>
 <translation id="6397094776139756010">同步處理與個人化選項</translation>
+<translation id="6397449385184089588"><ph name="ORIGIN" /> 可以將你的變更直接儲存至下列資料夾的檔案。這個網站只有在此分頁開啟時才能儲存變更。</translation>
 <translation id="6398715114293939307">移除 Google Play 商店</translation>
 <translation id="6398765197997659313">退出全螢幕模式</translation>
 <translation id="6399774419735315745">女間諜</translation>
@@ -3606,11 +3619,13 @@
 <translation id="6455264371803474013">在特定網站上</translation>
 <translation id="6455894534188563617">新增資料夾(&amp;N)</translation>
 <translation id="6456394469623773452">良好</translation>
+<translation id="6456955391422100996">已移除廣告。</translation>
 <translation id="645705751491738698">繼續封鎖 JavaScript</translation>
 <translation id="6458701200018867744">上傳失敗 (<ph name="WEBRTC_LOG_UPLOAD_TIME" />)。</translation>
 <translation id="6459488832681039634">使用所選範圍尋找</translation>
 <translation id="6459799433792303855">使用中的視窗已移至其他畫面。</translation>
 <translation id="6460601847208524483">尋找下一個項目</translation>
+<translation id="6461170143930046705">正在搜尋網路...</translation>
 <translation id="6463795194797719782">編輯(&amp;E)</translation>
 <translation id="6466988389784393586">開啟所有書籤(&amp;O)</translation>
 <translation id="6467304607960172345">針對全螢幕影片進行最佳化處理</translation>
@@ -3649,6 +3664,7 @@
 <translation id="6519437681804756269">[<ph name="TIMESTAMP" />]
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
+<translation id="652492607360843641">你已連上<ph name="NETWORK_TYPE" />網路。</translation>
 <translation id="6527303717912515753">分享</translation>
 <translation id="6528513914570774834">允許這個裝置的其他使用者使用這個網路</translation>
 <translation id="652948702951888897">Chrome 歷史記錄</translation>
@@ -3745,7 +3761,6 @@
 <translation id="6680650203439190394">語速</translation>
 <translation id="6681668084120808868">拍照</translation>
 <translation id="6681964764822470072">系統會解除安裝「<ph name="APP_NAME" />」。</translation>
-<translation id="6685083257944113180">停止,<ph name="SINK_NAME" />,<ph name="SINK_STATUS" /></translation>
 <translation id="668599234725812620">開啟 Google Play</translation>
 <translation id="6686490380836145850">關閉右邊的分頁</translation>
 <translation id="6686817083349815241">儲存你的密碼</translation>
@@ -3853,6 +3868,7 @@
 <translation id="6845038076637626672">最大化開啟</translation>
 <translation id="6845325883481699275">協助改善 Chrome 安全性</translation>
 <translation id="6848388270925200958">目前你有一些卡片只能在這部裝置上使用</translation>
+<translation id="6850286078059909152">文字顏色</translation>
 <translation id="6851497530878285708">應用程式已啟用</translation>
 <translation id="6853388645642883916">更新程式休眠中</translation>
 <translation id="68541483639528434">關閉其他分頁</translation>
@@ -3902,7 +3918,6 @@
 <translation id="6923132443355966645">捲動/點選</translation>
 <translation id="6923633482430812883">掛接共用裝置時發生錯誤。請檢查你要連接的檔案伺服器是否支援 SMBv2 以上版本。</translation>
 <translation id="6930036377490597025">外部的安全金鑰或內建的感應器</translation>
-<translation id="6930242544192836755">持續時間</translation>
 <translation id="693807610556624488">對以下裝置執行的寫入作業超過屬性長度上限:「<ph name="DEVICE_NAME" />」。</translation>
 <translation id="6941937518557314510">登入 <ph name="TOKEN_NAME" /> 即可使用你的憑證為 <ph name="HOST_NAME" /> 進行驗證。</translation>
 <translation id="6943176775188458830">取消列印</translation>
@@ -3916,6 +3931,7 @@
 <translation id="6951153907720526401">付款處理常式</translation>
 <translation id="6951663584153258142">貴機構要求更新這部裝置</translation>
 <translation id="6953878494808481632">相關資訊</translation>
+<translation id="6953916367503892689">{0,plural, =1{檔案:<ph name="FILES" />}other{檔案:<ph name="FILES" />}}</translation>
 <translation id="6955446738988643816">檢查彈出式視窗</translation>
 <translation id="6957044667612803194">這個安全金鑰不支援 PIN 碼</translation>
 <translation id="6957231940976260713">服務名稱</translation>
@@ -4059,7 +4075,7 @@
 <translation id="7143092389027215216">正在啟動示範模式</translation>
 <translation id="7143207342074048698">連線中</translation>
 <translation id="7144878232160441200">重試</translation>
-<translation id="714687768418476028">你的安全金鑰未受 PIN 碼保護。請先建立 PIN 碼以管理登入資料。</translation>
+<translation id="714687768418476028">你的安全金鑰未受 PIN 碼保護,請先建立 PIN 碼,才能管理登入資料。</translation>
 <translation id="7149893636342594995">過去 24 小時</translation>
 <translation id="715118844758971915">傳統印表機</translation>
 <translation id="7152478047064750137">這個擴充功能不需要特殊權限</translation>
@@ -4128,7 +4144,6 @@
 <translation id="7254554697254365959">無法翻譯這個網頁的內容。</translation>
 <translation id="7254951428499890870">你確定要在診斷模式中啟動「<ph name="APP_NAME" />」?</translation>
 <translation id="7255002516883565667">目前你有一張卡片只能在這部裝置上使用</translation>
-<translation id="7255220508626648026">現正投放:<ph name="ROUTETITLE" /></translation>
 <translation id="7255916308560539517">請再次輕觸安全金鑰以確認重設。這個安全金鑰上儲存的所有資訊 (包括 PIN 碼) 都將遭到清除。</translation>
 <translation id="7255935316994522020">套用</translation>
 <translation id="7256069762010468647">網站正在使用你的攝影機</translation>
@@ -4262,6 +4277,7 @@
 <translation id="7456142309650173560">開發人員版</translation>
 <translation id="7456847797759667638">開啟位置...</translation>
 <translation id="7458168200501453431">系統會使用與 Google 搜尋相同的拼字檢查技術,將你在瀏覽器中輸入的文字傳送給 Google。</translation>
+<translation id="7460045493116006516">你目前安裝的主題</translation>
 <translation id="7461924472993315131">固定</translation>
 <translation id="746216226901520237">下次手機會為你的 <ph name="DEVICE_TYPE" /> 解鎖。你可以在「設定」中停用 Smart Lock。</translation>
 <translation id="7463006580194749499">新增使用者</translation>
@@ -4321,6 +4337,7 @@
 <translation id="7554791636758816595">新增分頁</translation>
 <translation id="7556033326131260574">Smart Lock 無法驗證您的帳戶,請輸入您的密碼。</translation>
 <translation id="7556242789364317684">很抱歉,<ph name="SHORT_PRODUCT_NAME" /> 無法復原你的設定。如要修正錯誤,<ph name="SHORT_PRODUCT_NAME" /> 必須透過 Powerwash 重設你的裝置。</translation>
+<translation id="7559444627302317199">請檢查你的網路連線,然後再試一次。</translation>
 <translation id="7559719679815339381">請稍候.... Kiosk 應用程式正在進行更新,請勿移除 USB 隨身碟。</translation>
 <translation id="7561196759112975576">一律使用</translation>
 <translation id="7563991800558061108">如要排除這個錯誤,你必須在登入畫面中登入 Google 帳戶。
@@ -4562,7 +4579,6 @@
 <translation id="7887334752153342268">複製</translation>
 <translation id="7887864092952184874">已配對藍牙滑鼠</translation>
 <translation id="7889565820482017512">顯示大小</translation>
-<translation id="7889966925761734854">搜尋</translation>
 <translation id="7893008570150657497">存取你電腦中的相片、音樂及其他媒體</translation>
 <translation id="7893153962594818789">這部 <ph name="DEVICE_TYPE" /> 的藍牙已關閉。請輸入你的密碼,然後開啟藍牙。</translation>
 <translation id="7893393459573308604"><ph name="ENGINE_NAME" /> (預設)</translation>
@@ -4570,7 +4586,6 @@
 <translation id="7898627924844766532">固定在工具列中</translation>
 <translation id="7898725031477653577">一律翻譯</translation>
 <translation id="790040513076446191">操控隱私權相關設定</translation>
-<translation id="7902874111237641165">流暢動作 [測試版]</translation>
 <translation id="7903345046358933331">網頁無回應。您可以等待網頁回應,或是直接關閉網頁。</translation>
 <translation id="7903742244674067440">您儲存了這些憑證授權單位的識別憑證</translation>
 <translation id="7903925330883316394">公用程式:<ph name="UTILITY_TYPE" /></translation>
@@ -4682,6 +4697,7 @@
 <translation id="8037117027592400564">讀取使用合成語音朗讀的所有文字</translation>
 <translation id="8037357227543935929">詢問 (預設)</translation>
 <translation id="803771048473350947">檔案</translation>
+<translation id="8042142357103597104">文字不透明度</translation>
 <translation id="8044899503464538266">慢</translation>
 <translation id="8045253504249021590">已透過 Google 資訊主頁停止同步功能。</translation>
 <translation id="8045923671629973368">輸入應用程式 ID 或線上應用程式商店網址</translation>
@@ -4718,7 +4734,6 @@
     <ph name="BEGIN_PARAGRAPH5" />你可以在「設定」中停用這項服務。<ph name="END_PARAGRAPH5" /></translation>
 <translation id="80974698889265265">PIN 碼不符</translation>
 <translation id="809792523045608178"><ph name="IDS_SHORT_PRODUCT_NAME" /> 正在使用擴充功能的 Proxy 設定</translation>
-<translation id="8099495042588009598">更多權限</translation>
 <translation id="8101987792947961127">必須在下次重新啟動時執行 Powerwash</translation>
 <translation id="8102159139658438129">如要查看已連結手機的相關選項,請前往「<ph name="LINK_BEGIN" />設定<ph name="LINK_END" />」</translation>
 <translation id="8104696615244072556">為你的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 裝置執行 Powerwash 並還原至上一個版本。</translation>
@@ -4769,8 +4784,10 @@
     我認為不應封鎖這個網站!</translation>
 <translation id="8184288427634747179">切換成<ph name="AVATAR_NAME" /></translation>
 <translation id="8184318863960255706">更多資訊</translation>
+<translation id="8184472985242519288">平均</translation>
 <translation id="8185331656081929126">在網路上偵測到新印表機時顯示通知</translation>
 <translation id="8186609076106987817">伺服器找不到檔案。</translation>
+<translation id="8187950680397073878"><ph name="ORIGIN" /> 可以讀取下列資料夾中的所有檔案。這個網站只有在此分頁開啟時才能查看資料夾的變更。</translation>
 <translation id="8188389033983459049">檢查裝置設定並開啟藍牙功能,以便繼續操作</translation>
 <translation id="8190193592390505034">正在連線至 <ph name="PROVIDER_NAME" /></translation>
 <translation id="8191230140820435481">管理你的應用程式、擴充功能和主題</translation>
@@ -4874,7 +4891,6 @@
 <translation id="833986336429795709">請選擇要用來開啟這個連結的應用程式</translation>
 <translation id="8342861492835240085">選取集合</translation>
 <translation id="834290227245955730">PIN 碼無效。剩餘重試次數:<ph name="RETRIES" /> 次。</translation>
-<translation id="8343956361364550006">使用高頻寬即可享有最佳畫質和動畫效果。其他連線速度較慢的使用者可能無法看見你的內容。</translation>
 <translation id="8351419472474436977">你的 Proxy 設定已受到這個擴充功能控制,該擴充功能可變更、中斷、或監視你在網路上的行為。如果你不確定這項變更的發生原因,建議你停用該擴充功能。</translation>
 <translation id="8351630282875799764">電池無法充電</translation>
 <translation id="835238322900896202">解除安裝時發生錯誤,請透過終端機解除安裝。</translation>
@@ -4907,9 +4923,11 @@
 <translation id="839736845446313156">註冊</translation>
 <translation id="8398877366907290961">仍要繼續</translation>
 <translation id="8400146488506985033">管理使用者</translation>
+<translation id="8400444932218572097"><ph name="ORIGIN" /> 可以將你的變更直接儲存至下列資料夾中的檔案。這個網站只有在此分頁開啟時才能儲存變更。</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">先詢問我 (建議)</translation>
 <translation id="8418445294933751433">顯示為分頁(&amp;S)</translation>
+<translation id="8418905021510211421">這個頁面可以讀取裝置上的資料夾。</translation>
 <translation id="8419098111404128271">「<ph name="SEARCH_TEXT" />」的搜尋結果</translation>
 <translation id="8419368276599091549">歡迎使用你的 <ph name="DEVICE_TYPE" />!</translation>
 <translation id="8425213833346101688">變更</translation>
@@ -4929,6 +4947,7 @@
 <translation id="8438566539970814960">改善搜尋和瀏覽體驗</translation>
 <translation id="8439506636278576865">翻譯這個語言的網頁</translation>
 <translation id="8440630305826533614">Linux 應用程式</translation>
+<translation id="844241640324986723">無法刪除你的登入資料。</translation>
 <translation id="8443338615972234259">請立即為你的受監管使用者建立新帳戶。</translation>
 <translation id="8446884382197647889">瞭解詳情</translation>
 <translation id="8447409163267621480">必須包含 Ctrl 或 Alt 鍵</translation>
@@ -4944,8 +4963,6 @@
 <translation id="8461914792118322307">Proxy</translation>
 <translation id="8463215747450521436">管理員可能已刪除或停用這名受監管使用者。如要繼續以這個使用者的身分登入,請與管理員聯絡。</translation>
 <translation id="846374874681391779">下載內容列</translation>
-<translation id="8463807869745732775">"&gt;
-    已儲存的安全金鑰登入資料</translation>
 <translation id="8463955938112983119"><ph name="PLUGIN_NAME" /> 已停用。</translation>
 <translation id="8464132254133862871">這個使用者帳戶不符合使用服務的資格。</translation>
 <translation id="8465252176946159372">無效</translation>
@@ -5011,6 +5028,7 @@
 <translation id="8569002732135253578">正在列印「<ph name="DOCUMENT_NAME" />」</translation>
 <translation id="8569682776816196752">找不到目的地</translation>
 <translation id="8571213806525832805">過去 4 週</translation>
+<translation id="8573403125070227391">這個廣告使用太多裝置資源,因此 Chrome 已將其移除。</translation>
 <translation id="8574990355410201600">一律允許 <ph name="HOST" /> 播放聲音</translation>
 <translation id="8575286410928791436">按住 <ph name="KEY_EQUIVALENT" /> 鍵即可結束</translation>
 <translation id="8578639784464423491">不可超過 99 個英文字母</translation>
@@ -5034,13 +5052,13 @@
 <translation id="8609465669617005112">上移</translation>
 <translation id="8610103157987623234">格式不正確,請再試一次</translation>
 <translation id="8615618338313291042">無痕模式應用程式:<ph name="APP_NAME" /></translation>
+<translation id="8619803522055190423">投射陰影</translation>
 <translation id="8619892228487928601"><ph name="CERTIFICATE_NAME" />:<ph name="ERROR" /></translation>
 <translation id="8620617069779373398">漫遊狀態</translation>
 <translation id="8620765578342452535">設定網路連線</translation>
 <translation id="8621866727807194849">你的電腦安裝了有害軟體。Chrome 已著手移除該軟體、復原設定及停用擴充功能。這樣一來,你的瀏覽器就能恢復正常運作。</translation>
 <translation id="8621979332865976405">分享整個螢幕畫面</translation>
 <translation id="862542460444371744">擴充功能(&amp;E)</translation>
-<translation id="8627151598708688654">選取來源</translation>
 <translation id="862727964348362408">已暫停</translation>
 <translation id="862750493060684461">CSS 快取</translation>
 <translation id="8627795981664801467">僅傳送安全性連線的 Cookie</translation>
@@ -5094,6 +5112,7 @@
 <translation id="8688579245973331962">找不到你的名稱嗎?</translation>
 <translation id="8688591111840995413">密碼錯誤</translation>
 <translation id="8688672835843460752">可用空間</translation>
+<translation id="8689998525144040851">100</translation>
 <translation id="8695825812785969222">開啟位置(&amp;L)...</translation>
 <translation id="869884720829132584">應用程式選單</translation>
 <translation id="869891660844655955">到期日</translation>
@@ -5257,6 +5276,7 @@
 <translation id="891365694296252935">傳送使用狀況與診斷資料。這個裝置目前會自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google。這些資料將有助於系統和應用程式提高穩定性及做出其他改善,並不會用於識別貴子女的身分。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。這項設定是由裝置擁有者執行。如果貴子女的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到他們的 Google 帳戶。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation>
 <translation id="8915370057835397490">正在載入建議</translation>
 <translation id="8916476537757519021">無痕模式子頁框:<ph name="SUBFRAME_SITE" /></translation>
+<translation id="8917541523214115780"><ph name="WINDOW_TITLE" /> - 可以讀取裝置上的資料夾</translation>
 <translation id="8919275547519617350">如要將密碼同步到所有裝置,請登入並開啟同步處理功能。</translation>
 <translation id="8921366488406707015">正在驗證安全金鑰...</translation>
 <translation id="8922013791253848639">一律允許在這個網站中顯示廣告</translation>
@@ -5286,7 +5306,6 @@
 <translation id="8965037249707889821">輸入先前的密碼</translation>
 <translation id="8966870118594285808">你可以重新開啟不小心關閉的分頁</translation>
 <translation id="8967866634928501045">按下 Alt + Shift + A 鍵即可顯示</translation>
-<translation id="8970203673128054105">查看投放模式清單</translation>
 <translation id="89720367119469899">Escape</translation>
 <translation id="8972513834460200407">請與網路管理員聯絡,確認防火牆並未封鎖從 Google 伺服器下載的內容。</translation>
 <translation id="8973557916016709913">重設為預設縮放比例</translation>
@@ -5435,6 +5454,7 @@
 <translation id="9214520840402538427">糟糕!系統嘗試初始設定安裝時間 (installation-time) 屬性,但是動作已逾時。請洽詢你的支援代表。</translation>
 <translation id="9214695392875603905">杯子蛋糕</translation>
 <translation id="9215293857209265904">已新增「<ph name="EXTENSION_NAME" />」</translation>
+<translation id="9216712190298404438"><ph name="ORIGIN" /> 可以將你的變更直接儲存至下列檔案。這個網站只有在此分頁開啟時才能儲存變更。</translation>
 <translation id="9218430445555521422">設定為預設瀏覽器</translation>
 <translation id="9219103736887031265">圖片</translation>
 <translation id="9220525904950070496">移除帳戶</translation>
diff --git a/chrome/app/vector_icons/BUILD.gn b/chrome/app/vector_icons/BUILD.gn
index 39e942a..c6bcef6 100644
--- a/chrome/app/vector_icons/BUILD.gn
+++ b/chrome/app/vector_icons/BUILD.gn
@@ -75,6 +75,7 @@
     "photo_camera.icon",
     "picture_in_picture_control_background.icon",
     "picture_in_picture_alt.icon",
+    "reader_mode.icon",
     "reload_touch.icon",
     "remove.icon",
     "remove_box.icon",
diff --git a/chrome/app/vector_icons/reader_mode.icon b/chrome/app/vector_icons/reader_mode.icon
new file mode 100644
index 0000000..69c5de06
--- /dev/null
+++ b/chrome/app/vector_icons/reader_mode.icon
@@ -0,0 +1,21 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// TODO(https://crbug.com/952042): Replace placeholder design.
+CANVAS_DIMENSIONS, 16,
+MOVE_TO, 2, 2,
+R_H_LINE_TO, 12,
+R_V_LINE_TO, 3,
+H_LINE_TO, 2,
+CLOSE,
+MOVE_TO, 2, 7,
+R_H_LINE_TO, 12,
+R_V_LINE_TO, 3,
+H_LINE_TO, 2,
+CLOSE,
+MOVE_TO, 2, 12,
+R_H_LINE_TO, 8,
+R_V_LINE_TO, 3,
+H_LINE_TO, 2,
+CLOSE
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 62122c3..af606cf 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2846,6 +2846,8 @@
       "apps/app_service/app_icon_factory.h",
       "apps/app_service/app_icon_source.cc",
       "apps/app_service/app_icon_source.h",
+      "apps/app_service/app_launch_params.cc",
+      "apps/app_service/app_launch_params.h",
       "apps/app_service/app_service_proxy_factory.cc",
       "apps/app_service/app_service_proxy_factory.h",
       "apps/app_service/app_service_proxy_impl.cc",
@@ -2872,8 +2874,6 @@
       "badging/badge_manager_delegate.h",
       "badging/badge_manager_factory.cc",
       "badging/badge_manager_factory.h",
-      "badging/badge_service_impl.cc",
-      "badging/badge_service_impl.h",
       "banners/app_banner_manager_desktop.cc",
       "banners/app_banner_manager_desktop.h",
       "bookmarks/bookmark_html_writer.cc",
@@ -3559,6 +3559,7 @@
       "//ash/public/cpp",
       "//chrome/browser/chromeos",
       "//chrome/services/cups_proxy",
+      "//chromeos/components/account_manager",
       "//chromeos/services/assistant/public:feature_flags",
       "//chromeos/services/cellular_setup",
       "//chromeos/services/device_sync",
diff --git a/chrome/browser/OWNERS b/chrome/browser/OWNERS
index da1bb12..72305f3 100644
--- a/chrome/browser/OWNERS
+++ b/chrome/browser/OWNERS
@@ -62,8 +62,6 @@
 per-file *_mac.h=rsesek@chromium.org
 per-file *_mac.h=thakis@chromium.org
 
-per-file media_router_resources.grdp=file://chrome/browser/media/router/OWNERS
-
 per-file shell_integration_win*=gab@chromium.org
 per-file shell_integration_win*=grt@chromium.org
 per-file shell_integration_linux*=thomasanderson@chromium.org
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index d59ef407f..9c0059d1 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2705,11 +2705,6 @@
      flag_descriptions::kEnableNetworkServiceInProcessDescription, kOsAll,
      FEATURE_VALUE_TYPE(features::kNetworkServiceInProcess)},
 
-    {"allow-starting-service-manager-only",
-     flag_descriptions::kAllowStartingServiceManagerOnlyName,
-     flag_descriptions::kAllowStartingServiceManagerOnlyDescription, kOsAll,
-     FEATURE_VALUE_TYPE(features::kAllowStartingServiceManagerOnly)},
-
     {"out-of-blink-cors", flag_descriptions::kEnableOutOfBlinkCorsName,
      flag_descriptions::kEnableOutOfBlinkCorsDescription, kOsAll,
      FEATURE_VALUE_TYPE(network::features::kOutOfBlinkCors)},
diff --git a/chrome/browser/accessibility/accessibility_extension_api.cc b/chrome/browser/accessibility/accessibility_extension_api.cc
index e694731..6d4b05a 100644
--- a/chrome/browser/accessibility/accessibility_extension_api.cc
+++ b/chrome/browser/accessibility/accessibility_extension_api.cc
@@ -378,8 +378,14 @@
 
 ExtensionFunction::ResponseAction
 AccessibilityPrivateOnScrollableBoundsForPointFoundFunction::Run() {
-  // TODO(crbug.com/978163) When this occurs the bounds should be sent to the
-  // autoclick_controller for processing.
+  std::unique_ptr<
+      accessibility_private::OnScrollableBoundsForPointFound::Params>
+      params = accessibility_private::OnScrollableBoundsForPointFound::Params::
+          Create(*args_);
+  EXTENSION_FUNCTION_VALIDATE(params);
+  accessibility_private::ScreenRect rect = std::move(params->rect);
+  gfx::Rect bounds(rect.left, rect.top, rect.width, rect.height);
+  ash::AccessibilityController::Get()->OnAutoclickScrollableBoundsFound(bounds);
   return RespondNow(NoArguments());
 }
 
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.cc b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
index 99cf812..b7902c7 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android.cc
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
@@ -542,6 +542,20 @@
 }
 
 void UiControllerAndroid::SetOverlayState(OverlayState state) {
+  desired_overlay_state_ = state;
+
+  // Ensure that we don't set partial state if the touchable area is empty. This
+  // is important because a partial overlay will be hidden if TalkBack is
+  // enabled, and we want to completely prevent TalkBack from accessing the web
+  // page if there is no touchable area.
+  if (state == OverlayState::PARTIAL) {
+    std::vector<RectF> area;
+    ui_delegate_->GetTouchableArea(&area);
+    if (area.empty()) {
+      state = OverlayState::FULL;
+    }
+  }
+
   Java_AssistantOverlayModel_setState(AttachCurrentThread(), GetOverlayModel(),
                                       state);
   Java_AssistantModel_setAllowTalkbackOnWebsite(
@@ -552,6 +566,11 @@
     const RectF& visual_viewport,
     const std::vector<RectF>& touchable_areas,
     const std::vector<RectF>& restricted_areas) {
+  if (!touchable_areas.empty() &&
+      desired_overlay_state_ == OverlayState::PARTIAL) {
+    SetOverlayState(OverlayState::PARTIAL);
+  }
+
   JNIEnv* env = AttachCurrentThread();
   Java_AssistantOverlayModel_setVisualViewport(
       env, GetOverlayModel(), visual_viewport.left, visual_viewport.top,
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.h b/chrome/browser/android/autofill_assistant/ui_controller_android.h
index 0d1a654..5422c61 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android.h
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android.h
@@ -187,6 +187,7 @@
   // Java-side AutofillAssistantUiController object.
   base::android::ScopedJavaGlobalRef<jobject> java_object_;
 
+  OverlayState desired_overlay_state_ = OverlayState::FULL;
   base::WeakPtrFactory<UiControllerAndroid> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(UiControllerAndroid);
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
index b197dc0a..9aa7a66 100644
--- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
@@ -156,7 +156,7 @@
   if (partner_bookmarks_shim_->IsLoaded())
       return;
   partner_bookmarks_shim_->SetPartnerBookmarksRoot(
-      std::make_unique<BookmarkPermanentNode>(0));
+      std::make_unique<BookmarkPermanentNode>(0, BookmarkNode::FOLDER));
   DCHECK(partner_bookmarks_shim_->IsLoaded());
 }
 
diff --git a/chrome/browser/android/bookmarks/partner_bookmarks_reader.cc b/chrome/browser/android/bookmarks/partner_bookmarks_reader.cc
index 5507ad73..4307331 100644
--- a/chrome/browser/android/bookmarks/partner_bookmarks_reader.cc
+++ b/chrome/browser/android/bookmarks/partner_bookmarks_reader.cc
@@ -144,6 +144,9 @@
   wip_next_available_id_ = 0;
 }
 
+// TODO (crbug.com/980464): This method could theoretically accept contradicting
+// parameters for type (is_folder) and URL validity (jurl) and should therefore
+// be changed.
 jlong PartnerBookmarksReader::AddPartnerBookmark(
     JNIEnv* env,
     const JavaParamRef<jobject>& obj,
@@ -158,8 +161,10 @@
     const JavaParamRef<jobject>& j_callback) {
   base::string16 url;
   base::string16 title;
-  if (jurl)
+  if (jurl) {
+    DCHECK(!is_folder);
     url = ConvertJavaStringToUTF16(env, jurl);
+  }
   if (jtitle)
     title = ConvertJavaStringToUTF16(env, jtitle);
 
@@ -167,7 +172,6 @@
   if (wip_partner_bookmarks_root_.get()) {
     std::unique_ptr<BookmarkNode> node =
         std::make_unique<BookmarkNode>(wip_next_available_id_++, GURL(url));
-    node->set_type(is_folder ? BookmarkNode::FOLDER : BookmarkNode::URL);
     node->SetTitle(title);
 
     // Handle favicon and touchicon
@@ -207,7 +211,8 @@
     const_cast<BookmarkNode*>(parent)->Add(std::move(node));
   } else {
     std::unique_ptr<BookmarkPermanentNode> node =
-        std::make_unique<BookmarkPermanentNode>(wip_next_available_id_++);
+        std::make_unique<BookmarkPermanentNode>(wip_next_available_id_++,
+                                                BookmarkNode::FOLDER);
     node_id = node->id();
     node->SetTitle(title);
     wip_partner_bookmarks_root_ = std::move(node);
diff --git a/chrome/browser/android/bookmarks/partner_bookmarks_shim_unittest.cc b/chrome/browser/android/bookmarks/partner_bookmarks_shim_unittest.cc
index bd404cd..e767f73 100644
--- a/chrome/browser/android/bookmarks/partner_bookmarks_shim_unittest.cc
+++ b/chrome/browser/android/bookmarks/partner_bookmarks_shim_unittest.cc
@@ -89,23 +89,19 @@
 
 TEST_F(PartnerBookmarksShimTest, GetNodeByID) {
   std::unique_ptr<BookmarkPermanentNode> root_partner_node =
-      std::make_unique<BookmarkPermanentNode>(0);
+      std::make_unique<BookmarkPermanentNode>(0, BookmarkNode::FOLDER);
   BookmarkPermanentNode* root_partner_node_ptr = root_partner_node.get();
   BookmarkNode* partner_folder1 =
       root_partner_node->Add(std::make_unique<BookmarkNode>(1, GURL()));
-  partner_folder1->set_type(BookmarkNode::FOLDER);
 
   BookmarkNode* partner_folder2 =
       partner_folder1->Add(std::make_unique<BookmarkNode>(2, GURL()));
-  partner_folder2->set_type(BookmarkNode::FOLDER);
 
-  BookmarkNode* partner_bookmark1 = partner_folder1->Add(
+  partner_folder1->Add(
       std::make_unique<BookmarkNode>(3, GURL("http://www.a.com")));
-  partner_bookmark1->set_type(BookmarkNode::URL);
 
   BookmarkNode* partner_bookmark2 = partner_folder2->Add(
       std::make_unique<BookmarkNode>(4, GURL("http://www.b.com")));
-  partner_bookmark2->set_type(BookmarkNode::URL);
 
   PartnerBookmarksShim* shim = partner_bookmarks_shim();
   ASSERT_FALSE(shim->IsLoaded());
@@ -131,11 +127,10 @@
   EXPECT_CALL(observer_, PartnerShimLoaded(_)).Times(0);
   int64_t id = 5;
   std::unique_ptr<BookmarkPermanentNode> root_partner_node =
-      std::make_unique<BookmarkPermanentNode>(id++);
+      std::make_unique<BookmarkPermanentNode>(id++, BookmarkNode::FOLDER);
 
-  BookmarkNode* partner_bookmark1 = root_partner_node->Add(
+  root_partner_node->Add(
       std::make_unique<BookmarkNode>(id++, GURL("http://www.a.com")));
-  partner_bookmark1->set_type(BookmarkNode::URL);
 
   PartnerBookmarksShim* shim = partner_bookmarks_shim();
   shim->AddObserver(&observer_);
@@ -152,33 +147,33 @@
   EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0);
 
   std::unique_ptr<BookmarkPermanentNode> root_partner_node =
-      std::make_unique<BookmarkPermanentNode>(0);
+      std::make_unique<BookmarkPermanentNode>(0, BookmarkNode::FOLDER);
   BookmarkPermanentNode* root_partner_node_ptr = root_partner_node.get();
   root_partner_node->SetTitle(base::ASCIIToUTF16("Partner bookmarks"));
 
-  BookmarkNode* partner_folder1 = root_partner_node->Add(
-      std::make_unique<BookmarkNode>(1, GURL("http://www.a.net")));
-  partner_folder1->set_type(BookmarkNode::FOLDER);
+  BookmarkNode* partner_folder1 =
+      root_partner_node->Add(std::make_unique<BookmarkNode>(1, GURL()));
+  partner_folder1->SetTitle(base::ASCIIToUTF16("a.net"));
 
-  BookmarkNode* partner_folder2 = root_partner_node->Add(
-      std::make_unique<BookmarkNode>(2, GURL("http://www.b.net")));
-  partner_folder2->set_type(BookmarkNode::FOLDER);
+  BookmarkNode* partner_folder2 =
+      root_partner_node->Add(std::make_unique<BookmarkNode>(2, GURL()));
+  partner_folder2->SetTitle(base::ASCIIToUTF16("b.net"));
 
   BookmarkNode* partner_bookmark1 = partner_folder1->Add(
       std::make_unique<BookmarkNode>(3, GURL("http://www.a.com")));
-  partner_bookmark1->set_type(BookmarkNode::URL);
+  partner_bookmark1->SetTitle(base::ASCIIToUTF16("a.com"));
 
   BookmarkNode* partner_bookmark2 = partner_folder2->Add(
       std::make_unique<BookmarkNode>(4, GURL("http://www.b.com")));
-  partner_bookmark2->set_type(BookmarkNode::URL);
+  partner_bookmark2->SetTitle(base::ASCIIToUTF16("b.com"));
 
-  BookmarkNode* partner_folder3 = partner_folder2->Add(
-      std::make_unique<BookmarkNode>(5, GURL("http://www.c.net")));
-  partner_folder3->set_type(BookmarkNode::FOLDER);
+  BookmarkNode* partner_folder3 =
+      partner_folder2->Add(std::make_unique<BookmarkNode>(5, GURL()));
+  partner_folder3->SetTitle(base::ASCIIToUTF16("c.net"));
 
   BookmarkNode* partner_bookmark3 = partner_folder3->Add(
       std::make_unique<BookmarkNode>(6, GURL("http://www.c.com")));
-  partner_bookmark3->set_type(BookmarkNode::URL);
+  partner_bookmark3->SetTitle(base::ASCIIToUTF16("c.com"));
 
   ASSERT_FALSE(shim->IsLoaded());
   EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1);
@@ -240,28 +235,24 @@
   EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0);
 
   std::unique_ptr<BookmarkPermanentNode> root_partner_node =
-      std::make_unique<BookmarkPermanentNode>(0);
+      std::make_unique<BookmarkPermanentNode>(0, BookmarkNode::FOLDER);
   BookmarkPermanentNode* root_partner_node_ptr = root_partner_node.get();
   root_partner_node->SetTitle(base::ASCIIToUTF16("Partner bookmarks"));
 
-  BookmarkNode* partner_folder1 = root_partner_node->Add(
-      std::make_unique<BookmarkNode>(1, GURL("http://www.a.net")));
-  partner_folder1->set_type(BookmarkNode::FOLDER);
+  BookmarkNode* partner_folder1 =
+      root_partner_node->Add(std::make_unique<BookmarkNode>(1, GURL()));
   partner_folder1->SetTitle(base::ASCIIToUTF16("a.net"));
 
-  BookmarkNode* partner_folder2 = root_partner_node->Add(
-      std::make_unique<BookmarkNode>(2, GURL("http://www.b.net")));
-  partner_folder2->set_type(BookmarkNode::FOLDER);
+  BookmarkNode* partner_folder2 =
+      root_partner_node->Add(std::make_unique<BookmarkNode>(2, GURL()));
   partner_folder2->SetTitle(base::ASCIIToUTF16("b.net"));
 
   BookmarkNode* partner_bookmark1 = partner_folder1->Add(
       std::make_unique<BookmarkNode>(3, GURL("http://www.a.com")));
-  partner_bookmark1->set_type(BookmarkNode::URL);
   partner_bookmark1->SetTitle(base::ASCIIToUTF16("a.com"));
 
   BookmarkNode* partner_bookmark2 = partner_folder2->Add(
       std::make_unique<BookmarkNode>(4, GURL("http://www.b.com")));
-  partner_bookmark2->set_type(BookmarkNode::URL);
   partner_bookmark2->SetTitle(base::ASCIIToUTF16("b.com"));
 
   ASSERT_FALSE(shim->IsLoaded());
@@ -326,22 +317,19 @@
     EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0);
 
     std::unique_ptr<BookmarkPermanentNode> root_partner_node =
-        std::make_unique<BookmarkPermanentNode>(0);
+        std::make_unique<BookmarkPermanentNode>(0, BookmarkNode::FOLDER);
     root_partner_node->SetTitle(base::ASCIIToUTF16("Partner bookmarks"));
 
-    BookmarkNode* partner_folder1 = root_partner_node->Add(
-        std::make_unique<BookmarkNode>(1, GURL("http://a.net")));
-    partner_folder1->set_type(BookmarkNode::FOLDER);
+    BookmarkNode* partner_folder1 =
+        root_partner_node->Add(std::make_unique<BookmarkNode>(1, GURL()));
     partner_folder1->SetTitle(base::ASCIIToUTF16("a.net"));
 
     BookmarkNode* partner_bookmark1 = partner_folder1->Add(
         std::make_unique<BookmarkNode>(3, GURL("http://a.com")));
-    partner_bookmark1->set_type(BookmarkNode::URL);
     partner_bookmark1->SetTitle(base::ASCIIToUTF16("a.com"));
 
     BookmarkNode* partner_bookmark2 = partner_folder1->Add(
         std::make_unique<BookmarkNode>(5, GURL("http://b.com")));
-    partner_bookmark2->set_type(BookmarkNode::URL);
     partner_bookmark2->SetTitle(base::ASCIIToUTF16("b.com"));
 
     ASSERT_FALSE(shim->IsLoaded());
@@ -382,17 +370,15 @@
   EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0);
 
   std::unique_ptr<BookmarkPermanentNode> root_partner_node =
-      std::make_unique<BookmarkPermanentNode>(0);
+      std::make_unique<BookmarkPermanentNode>(0, BookmarkNode::FOLDER);
   root_partner_node->SetTitle(base::ASCIIToUTF16("Partner bookmarks"));
 
   BookmarkNode* partner_bookmark1 = root_partner_node->Add(
       std::make_unique<BookmarkNode>(3, GURL("http://a")));
-  partner_bookmark1->set_type(BookmarkNode::URL);
   partner_bookmark1->SetTitle(base::ASCIIToUTF16("a"));
 
   BookmarkNode* partner_bookmark2 = root_partner_node->Add(
       std::make_unique<BookmarkNode>(3, GURL("http://b")));
-  partner_bookmark2->set_type(BookmarkNode::URL);
   partner_bookmark2->SetTitle(base::ASCIIToUTF16("b"));
 
   ASSERT_FALSE(shim->IsLoaded());
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
index da09193..ecd94cd5 100644
--- a/chrome/browser/android/chrome_feature_list.cc
+++ b/chrome/browser/android/chrome_feature_list.cc
@@ -62,7 +62,6 @@
     &autofill_assistant::features::kAutofillAssistantDirectActions,
     &download::features::kDownloadAutoResumptionNative,
     &download::features::kUseDownloadOfflineContentProvider,
-    &features::kAllowStartingServiceManagerOnly,
     &features::kAppNotificationStatusMessaging,
     &features::kCaptionSettings,
     &features::kClearOldBrowsingData,
@@ -128,9 +127,10 @@
     &kDelegateOverscrollSwipes,
     &kDirectActions,
     &kDownloadLocationShowImageInGallery,
-    &kDownloadProgressInfoBar,
+    &kDownloadFileProvider,
     &kDownloadHomeV2,
     &kDownloadHomeShowStorageInfo,
+    &kDownloadProgressInfoBar,
     &kDownloadRename,
     &kDownloadTabManagementModule,
     &kDrawVerticallyEdgeToEdge,
@@ -392,6 +392,9 @@
 const base::Feature kDownloadProgressInfoBar{"DownloadProgressInfoBar",
                                              base::FEATURE_ENABLED_BY_DEFAULT};
 
+const base::Feature kDownloadFileProvider{"DownloadFileProvider",
+                                          base::FEATURE_ENABLED_BY_DEFAULT};
+
 const base::Feature kDownloadHomeV2{"DownloadHomeV2",
                                     base::FEATURE_DISABLED_BY_DEFAULT};
 
diff --git a/chrome/browser/android/chrome_feature_list.h b/chrome/browser/android/chrome_feature_list.h
index a395f60..69091a31 100644
--- a/chrome/browser/android/chrome_feature_list.h
+++ b/chrome/browser/android/chrome_feature_list.h
@@ -62,10 +62,11 @@
 extern const base::Feature kDirectActions;
 extern const base::Feature kDontPrefetchLibraries;
 extern const base::Feature kDownloadAutoResumptionThrottling;
-extern const base::Feature kDownloadLocationShowImageInGallery;
-extern const base::Feature kDownloadProgressInfoBar;
+extern const base::Feature kDownloadFileProvider;
 extern const base::Feature kDownloadHomeV2;
 extern const base::Feature kDownloadHomeShowStorageInfo;
+extern const base::Feature kDownloadLocationShowImageInGallery;
+extern const base::Feature kDownloadProgressInfoBar;
 extern const base::Feature kDownloadRename;
 extern const base::Feature kDownloadTabManagementModule;
 extern const base::Feature kDrawVerticallyEdgeToEdge;
diff --git a/chrome/browser/apps/app_service/app_launch_params.cc b/chrome/browser/apps/app_service/app_launch_params.cc
new file mode 100644
index 0000000..c67cdca
--- /dev/null
+++ b/chrome/browser/apps/app_service/app_launch_params.cc
@@ -0,0 +1,24 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/apps/app_service/app_launch_params.h"
+
+AppLaunchParams::AppLaunchParams(Profile* profile,
+                                 const std::string& app_id,
+                                 apps::mojom::LaunchContainer container,
+                                 WindowOpenDisposition disposition,
+                                 apps::mojom::AppLaunchSource source,
+                                 int64_t display_id)
+    : profile(profile),
+      app_id(app_id),
+      container(container),
+      disposition(disposition),
+      command_line(base::CommandLine::NO_PROGRAM),
+      source(source),
+      display_id(display_id),
+      opener(nullptr) {}
+
+AppLaunchParams::AppLaunchParams(const AppLaunchParams& other) = default;
+
+AppLaunchParams::~AppLaunchParams() = default;
diff --git a/chrome/browser/apps/app_service/app_launch_params.h b/chrome/browser/apps/app_service/app_launch_params.h
new file mode 100644
index 0000000..e50d280
--- /dev/null
+++ b/chrome/browser/apps/app_service/app_launch_params.h
@@ -0,0 +1,84 @@
+// Copyright (c) 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_APPS_APP_SERVICE_APP_LAUNCH_PARAMS_H_
+#define CHROME_BROWSER_APPS_APP_SERVICE_APP_LAUNCH_PARAMS_H_
+
+#include <string>
+
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "components/services/app_service/public/mojom/types.mojom.h"
+#include "ui/base/window_open_disposition.h"
+#include "ui/display/types/display_constants.h"
+#include "ui/gfx/geometry/rect.h"
+#include "url/gurl.h"
+
+class Profile;
+
+namespace content {
+class RenderFrameHost;
+}
+
+struct AppLaunchParams {
+  AppLaunchParams(Profile* profile,
+                  const std::string& app_id,
+                  apps::mojom::LaunchContainer container,
+                  WindowOpenDisposition disposition,
+                  apps::mojom::AppLaunchSource source,
+                  int64_t display_id = display::kInvalidDisplayId);
+
+  AppLaunchParams(const AppLaunchParams& other);
+
+  ~AppLaunchParams();
+
+  // The profile to load the application from.
+  Profile* profile;
+
+  // The app to launch.
+  std::string app_id;
+
+  // An id that can be passed to an app when launched in order to support
+  // multiple shelf items per app.
+  std::string launch_id;
+
+  // The container type to launch the application in.
+  apps::mojom::LaunchContainer container;
+
+  // If container is TAB, this field controls how the tab is opened.
+  WindowOpenDisposition disposition;
+
+  // If non-empty, use override_url in place of the application's launch url.
+  GURL override_url;
+
+  // If non-empty, use override_boudns in place of the application's default
+  // position and dimensions.
+  gfx::Rect override_bounds;
+
+  // If non-empty, use override_app_name in place of generating one normally.
+  std::string override_app_name;
+
+  // If non-empty, information from the command line may be passed on to the
+  // application.
+  base::CommandLine command_line;
+
+  // If non-empty, the current directory from which any relative paths on the
+  // command line should be expanded from.
+  base::FilePath current_directory;
+
+  // Record where the app is launched from for tracking purpose.
+  // Different app may have their own enumeration of sources.
+  apps::mojom::AppLaunchSource source;
+
+  // The id of the display from which the app is launched.
+  // display::kInvalidDisplayId means that the display does not exist or is not
+  // set.
+  int64_t display_id;
+
+  // The frame that initiated the open. May be null. If set, the new app will
+  // have |opener| as its window.opener.
+  content::RenderFrameHost* opener;
+};
+
+#endif  // CHROME_BROWSER_APPS_APP_SERVICE_APP_LAUNCH_PARAMS_H_
diff --git a/chrome/browser/apps/app_service/extension_apps.cc b/chrome/browser/apps/app_service/extension_apps.cc
index f4765638..2dea4674 100644
--- a/chrome/browser/apps/app_service/extension_apps.cc
+++ b/chrome/browser/apps/app_service/extension_apps.cc
@@ -24,6 +24,8 @@
 #include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/web_applications/components/externally_installed_web_app_prefs.h"
 #include "chrome/browser/web_applications/components/web_app_constants.h"
+#include "chrome/browser/web_applications/system_web_app_manager.h"
+#include "chrome/browser/web_applications/web_app_provider.h"
 #include "chrome/common/extensions/extension_metrics.h"
 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
 #include "chrome/services/app_service/public/mojom/types.mojom.h"
@@ -414,6 +416,22 @@
     app->show_in_launcher = show;
     app->show_in_search = show;
     app->show_in_management = show;
+
+    if (show == apps::mojom::OptionalBool::kFalse) {
+      return;
+    }
+
+    auto* web_app_provider = web_app::WebAppProvider::Get(profile);
+
+    // WebAppProvider is null for SignInProfile
+    if (!web_app_provider) {
+      return;
+    }
+
+    if (web_app_provider->system_web_app_manager().IsSystemWebApp(
+            extension->id())) {
+      app->show_in_management = apps::mojom::OptionalBool::kFalse;
+    }
   } else {
     app->show_in_launcher = apps::mojom::OptionalBool::kFalse;
     app->show_in_search = apps::mojom::OptionalBool::kFalse;
diff --git a/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc b/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc
index 4931ec4..954f760 100644
--- a/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc
+++ b/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc
@@ -229,7 +229,7 @@
     const base::FilePath capture_file_path =
         GetReplayFilesDirectory().AppendASCII(GetParam().c_str());
     SetServerUrlLoader(std::make_unique<test::ServerUrlLoader>(
-        absl::make_unique<test::ServerCacheReplayer>(
+        std::make_unique<test::ServerCacheReplayer>(
             capture_file_path,
             test::ServerCacheReplayer::kOptionFailOnInvalidJsonRecord)));
   }
diff --git a/chrome/browser/badging/badge_manager.cc b/chrome/browser/badging/badge_manager.cc
index 5ac63d5..5211100 100644
--- a/chrome/browser/badging/badge_manager.cc
+++ b/chrome/browser/badging/badge_manager.cc
@@ -7,12 +7,15 @@
 #include <utility>
 
 #include "base/i18n/number_formatting.h"
-#include "base/logging.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
+#include "chrome/browser/badging/badge_manager_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/extensions/hosted_app_browser_controller.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/web_applications/app_browser_controller.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/render_process_host.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/strings/grit/ui_strings.h"
 
@@ -46,26 +49,96 @@
 
 BadgeManager::~BadgeManager() = default;
 
-void BadgeManager::UpdateBadge(const extensions::ExtensionId& extension_id,
-                               base::Optional<uint64_t> contents) {
-  badged_apps_[extension_id] = contents;
-
-  if (!delegate_)
-    return;
-
-  delegate_->OnBadgeSet(extension_id, contents);
-}
-
-void BadgeManager::ClearBadge(const extensions::ExtensionId& extension_id) {
-  badged_apps_.erase(extension_id);
-  if (!delegate_)
-    return;
-
-  delegate_->OnBadgeCleared(extension_id);
-}
-
 void BadgeManager::SetDelegate(std::unique_ptr<BadgeManagerDelegate> delegate) {
   delegate_ = std::move(delegate);
 }
 
+void BadgeManager::BindRequest(blink::mojom::BadgeServiceRequest request,
+                               content::RenderFrameHost* frame) {
+  Profile* profile = Profile::FromBrowserContext(
+      content::WebContents::FromRenderFrameHost(frame)->GetBrowserContext());
+
+  badging::BadgeManager* badge_manager =
+      badging::BadgeManagerFactory::GetInstance()->GetForProfile(profile);
+  badge_manager->bindings_.AddBinding(
+      badge_manager, std::move(request),
+      {frame->GetProcess()->GetID(), frame->GetRoutingID()});
+}
+
+void BadgeManager::UpdateAppBadge(const std::string& app_id,
+                                  base::Optional<uint64_t> content) {
+  // Badge content should never be 0 (it should be translated into a clear).
+  DCHECK_NE(content.value_or(1), 0u);
+
+  badged_apps_[app_id] = content;
+
+  if (!delegate_)
+    return;
+
+  delegate_->OnBadgeSet(app_id, content);
+}
+
+void BadgeManager::ClearAppBadge(const std::string& app_id) {
+  badged_apps_.erase(app_id);
+  if (!delegate_)
+    return;
+
+  delegate_->OnBadgeCleared(app_id);
+}
+
+void BadgeManager::SetInteger(uint64_t content) {
+  auto app_id = GetAppIdToBadge(bindings_.dispatch_context());
+  if (!app_id) {
+    delegate_->OnBadgeChangeIgnoredForTesting();
+    return;
+  }
+
+  UpdateAppBadge(app_id.value(), content);
+}
+
+void BadgeManager::SetFlag() {
+  auto app_id = GetAppIdToBadge(bindings_.dispatch_context());
+  if (!app_id) {
+    delegate_->OnBadgeChangeIgnoredForTesting();
+    return;
+  }
+
+  UpdateAppBadge(app_id.value(), base::nullopt);
+}
+
+void BadgeManager::ClearBadge() {
+  auto app_id = GetAppIdToBadge(bindings_.dispatch_context());
+  if (!app_id) {
+    delegate_->OnBadgeChangeIgnoredForTesting();
+    return;
+  }
+
+  ClearAppBadge(app_id.value());
+}
+
+base::Optional<std::string> BadgeManager::GetAppIdToBadge(
+    const BindingContext& context) {
+  content::RenderFrameHost* frame =
+      content::RenderFrameHost::FromID(context.process_id, context.frame_id);
+  if (!frame)
+    return base::nullopt;
+
+  content::WebContents* contents =
+      content::WebContents::FromRenderFrameHost(frame);
+  Browser* browser = chrome::FindBrowserWithWebContents(contents);
+  if (!browser)
+    return base::nullopt;
+
+  web_app::AppBrowserController* app_controller = browser->app_controller();
+  if (!app_controller)
+    return base::nullopt;
+
+  // If the frame is not in scope, don't apply a badge.
+  if (!app_controller->IsUrlInAppScope(frame->GetLastCommittedURL())) {
+    return base::nullopt;
+  }
+
+  return app_controller->GetAppId();
+}
+
 }  // namespace badging
diff --git a/chrome/browser/badging/badge_manager.h b/chrome/browser/badging/badge_manager.h
index f849949..7463fef 100644
--- a/chrome/browser/badging/badge_manager.h
+++ b/chrome/browser/badging/badge_manager.h
@@ -13,11 +13,15 @@
 #include "base/optional.h"
 #include "chrome/browser/badging/badge_manager_delegate.h"
 #include "components/keyed_service/core/keyed_service.h"
-#include "extensions/common/extension_id.h"
+#include "mojo/public/cpp/bindings/binding_set.h"
+#include "third_party/blink/public/mojom/badging/badging.mojom.h"
 
-class KeyedService;
 class Profile;
 
+namespace content {
+class RenderFrameHost;
+}  // namespace content
+
 namespace badging {
 
 // The maximum value of badge contents before saturation occurs.
@@ -28,26 +32,56 @@
 
 // Maintains a record of badge contents and dispatches badge changes to a
 // delegate.
-class BadgeManager : public KeyedService {
+class BadgeManager : public KeyedService, public blink::mojom::BadgeService {
  public:
   explicit BadgeManager(Profile* profile);
   ~BadgeManager() override;
 
-  // Records badge contents for an app and notifies the delegate if the badge
-  // contents have changed.
-  void UpdateBadge(const extensions::ExtensionId&, base::Optional<uint64_t>);
-
-  // Clears badge contents for an app (if existing) and notifies the delegate.
-  void ClearBadge(const extensions::ExtensionId&);
-
   // Sets the delegate used for setting/clearing badges.
   void SetDelegate(std::unique_ptr<BadgeManagerDelegate> delegate);
 
+  static void BindRequest(blink::mojom::BadgeServiceRequest request,
+                          content::RenderFrameHost* frame);
+
+  // Sets the badge for |app_id| to be |content|. Note: If content is set, it
+  // must be non-zero.
+  void UpdateAppBadge(const std::string& app_id,
+                      base::Optional<uint64_t> content);
+
+  // Clears the badge for |app_id|.
+  void ClearAppBadge(const std::string& app_id);
+
  private:
+  // The BindingContext of a mojo request. Allows mojo calls to be tied back to
+  // the |RenderFrameHost| they belong to without trusting the renderer for that
+  // information.
+  struct BindingContext {
+    BindingContext(int process_id, int frame_id)
+        : process_id(process_id), frame_id(frame_id) {}
+    int process_id;
+    int frame_id;
+  };
+
+  // blink::mojom::BadgeService:
+  // Note: These are private to stop them being called outside of mojo as they
+  // require a mojo binding context.
+  void SetInteger(uint64_t content) override;
+  void SetFlag() override;
+  void ClearBadge() override;
+
+  // Examines |context| to determine which app, if any, should be badged.
+  base::Optional<std::string> GetAppIdToBadge(const BindingContext& context);
+
+  // All the mojo bindings for the BadgeManager. Keeps track of the
+  // render_frame the binding is associated with, so as to not have to rely
+  // on the renderer passing it in.
+  mojo::BindingSet<blink::mojom::BadgeService, BindingContext> bindings_;
+
+  // Delegate which handles actual setting and clearing of the badge.
   std::unique_ptr<BadgeManagerDelegate> delegate_;
 
-  // Maps extension id to badge contents.
-  std::map<extensions::ExtensionId, base::Optional<uint64_t>> badged_apps_;
+  // Maps app id to badge contents.
+  std::map<std::string, base::Optional<uint64_t>> badged_apps_;
 
   DISALLOW_COPY_AND_ASSIGN(BadgeManager);
 };
diff --git a/chrome/browser/badging/badge_manager_delegate.h b/chrome/browser/badging/badge_manager_delegate.h
index 0a6d86c4..f048d69 100644
--- a/chrome/browser/badging/badge_manager_delegate.h
+++ b/chrome/browser/badging/badge_manager_delegate.h
@@ -28,6 +28,10 @@
   // Called when a app's badge has been cleared.
   virtual void OnBadgeCleared(const std::string& app_id) = 0;
 
+  // Called when a page attempts to set or clear a badge but the badge service
+  // determines that the page should not able to change the badge.
+  virtual void OnBadgeChangeIgnoredForTesting() {}
+
  protected:
   // The profile the badge manager delegate is associated with.
   Profile* profile_;
diff --git a/chrome/browser/badging/badge_manager_unittest.cc b/chrome/browser/badging/badge_manager_unittest.cc
index 9c1db5ee..3b3e57e 100644
--- a/chrome/browser/badging/badge_manager_unittest.cc
+++ b/chrome/browser/badging/badge_manager_unittest.cc
@@ -90,7 +90,7 @@
 };
 
 TEST_F(BadgeManagerUnittest, SetFlagBadgeForApp) {
-  badge_manager()->UpdateBadge(kExtensionId, base::nullopt);
+  badge_manager()->UpdateAppBadge(kExtensionId, base::nullopt);
 
   EXPECT_EQ(1UL, delegate()->set_badges().size());
   EXPECT_EQ(kExtensionId, delegate()->set_badges().front().first);
@@ -98,7 +98,7 @@
 }
 
 TEST_F(BadgeManagerUnittest, SetBadgeForApp) {
-  badge_manager()->UpdateBadge(kExtensionId, kBadgeContents);
+  badge_manager()->UpdateAppBadge(kExtensionId, kBadgeContents);
 
   EXPECT_EQ(1UL, delegate()->set_badges().size());
   EXPECT_EQ(kExtensionId, delegate()->set_badges().front().first);
@@ -109,8 +109,8 @@
   const extensions::ExtensionId otherId("other");
   int otherContents = 2;
 
-  badge_manager()->UpdateBadge(kExtensionId, kBadgeContents);
-  badge_manager()->UpdateBadge(otherId, otherContents);
+  badge_manager()->UpdateAppBadge(kExtensionId, kBadgeContents);
+  badge_manager()->UpdateAppBadge(otherId, otherContents);
 
   EXPECT_EQ(2UL, delegate()->set_badges().size());
 
@@ -122,9 +122,9 @@
 }
 
 TEST_F(BadgeManagerUnittest, SetBadgeForAppAfterClear) {
-  badge_manager()->UpdateBadge(kExtensionId, kBadgeContents);
-  badge_manager()->ClearBadge(kExtensionId);
-  badge_manager()->UpdateBadge(kExtensionId, kBadgeContents);
+  badge_manager()->UpdateAppBadge(kExtensionId, kBadgeContents);
+  badge_manager()->ClearAppBadge(kExtensionId);
+  badge_manager()->UpdateAppBadge(kExtensionId, kBadgeContents);
 
   EXPECT_EQ(2UL, delegate()->set_badges().size());
 
@@ -136,9 +136,9 @@
 }
 
 TEST_F(BadgeManagerUnittest, ClearBadgeForBadgedApp) {
-  badge_manager()->UpdateBadge(kExtensionId, kBadgeContents);
+  badge_manager()->UpdateAppBadge(kExtensionId, kBadgeContents);
 
-  badge_manager()->ClearBadge(kExtensionId);
+  badge_manager()->ClearAppBadge(kExtensionId);
 
   EXPECT_EQ(1UL, delegate()->cleared_badges().size());
   EXPECT_EQ(kExtensionId, delegate()->cleared_badges().front());
@@ -153,12 +153,12 @@
   auto* other_delegate = owned_other_delegate.get();
   other_badge_manager->SetDelegate(std::move(owned_other_delegate));
 
-  other_badge_manager->UpdateBadge(kExtensionId, base::nullopt);
-  other_badge_manager->UpdateBadge(kExtensionId, kBadgeContents);
-  other_badge_manager->UpdateBadge(kExtensionId, base::nullopt);
-  other_badge_manager->ClearBadge(kExtensionId);
+  other_badge_manager->UpdateAppBadge(kExtensionId, base::nullopt);
+  other_badge_manager->UpdateAppBadge(kExtensionId, kBadgeContents);
+  other_badge_manager->UpdateAppBadge(kExtensionId, base::nullopt);
+  other_badge_manager->ClearAppBadge(kExtensionId);
 
-  badge_manager()->ClearBadge(kExtensionId);
+  badge_manager()->ClearAppBadge(kExtensionId);
 
   EXPECT_EQ(3UL, other_delegate->set_badges().size());
   EXPECT_EQ(0UL, delegate()->set_badges().size());
diff --git a/chrome/browser/badging/badge_service_impl.cc b/chrome/browser/badging/badge_service_impl.cc
deleted file mode 100644
index f74851d2..0000000
--- a/chrome/browser/badging/badge_service_impl.cc
+++ /dev/null
@@ -1,91 +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 "chrome/browser/badging/badge_service_impl.h"
-
-#include <utility>
-
-#include "base/logging.h"
-#include "chrome/browser/badging/badge_manager.h"
-#include "chrome/browser/badging/badge_manager_factory.h"
-#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser_finder.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/extensions/hosted_app_browser_controller.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/web_contents.h"
-#include "extensions/common/extension.h"
-
-// static
-void BadgeServiceImpl::Create(blink::mojom::BadgeServiceRequest request,
-                              content::RenderFrameHost* render_frame_host) {
-  DCHECK(render_frame_host);
-
-  // Lifetime managed through FrameServiceBase.
-  new BadgeServiceImpl(render_frame_host, std::move(request));
-}
-
-void BadgeServiceImpl::SetInteger(uint64_t content) {
-  SetBadge(base::Optional<uint64_t>(content));
-}
-
-void BadgeServiceImpl::SetFlag() {
-  SetBadge(base::nullopt);
-}
-
-void BadgeServiceImpl::SetBadge(base::Optional<uint64_t> content) {
-  if (!IsInApp())
-    return;
-
-  const extensions::Extension* extension = ExtensionFromLastUrl();
-
-  if (!extension)
-    return;
-
-  badge_manager_->UpdateBadge(extension->id(), content);
-}
-
-void BadgeServiceImpl::ClearBadge() {
-  if (!IsInApp())
-    return;
-
-  const extensions::Extension* extension = ExtensionFromLastUrl();
-
-  if (!extension)
-    return;
-
-  badge_manager_->ClearBadge(extension->id());
-}
-
-BadgeServiceImpl::BadgeServiceImpl(content::RenderFrameHost* render_frame_host,
-                                   blink::mojom::BadgeServiceRequest request)
-    : content::FrameServiceBase<blink::mojom::BadgeService>(render_frame_host,
-                                                            std::move(request)),
-      render_frame_host_(render_frame_host) {
-  web_contents_ = content::WebContents::FromRenderFrameHost(render_frame_host_);
-  browser_context_ = web_contents_->GetBrowserContext();
-  badge_manager_ = badging::BadgeManagerFactory::GetInstance()->GetForProfile(
-      Profile::FromBrowserContext(browser_context_));
-}
-
-BadgeServiceImpl::~BadgeServiceImpl() = default;
-
-const extensions::Extension* BadgeServiceImpl::ExtensionFromLastUrl() {
-  DCHECK(browser_context_);
-
-  return extensions::util::GetInstalledPwaForUrl(
-      browser_context_, render_frame_host_->GetLastCommittedURL());
-}
-
-bool BadgeServiceImpl::IsInApp() {
-  Browser* browser = chrome::FindBrowserWithWebContents(web_contents_);
-  if (!browser)
-    return false;
-  web_app::AppBrowserController* app_controller = browser->app_controller();
-  return app_controller &&
-         extensions::IsSameScope(app_controller->GetAppLaunchURL(),
-                                 web_contents_->GetLastCommittedURL(),
-                                 web_contents_->GetBrowserContext());
-}
diff --git a/chrome/browser/badging/badge_service_impl.h b/chrome/browser/badging/badge_service_impl.h
deleted file mode 100644
index 05abe4f..0000000
--- a/chrome/browser/badging/badge_service_impl.h
+++ /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.
-
-#ifndef CHROME_BROWSER_BADGING_BADGE_SERVICE_IMPL_H_
-#define CHROME_BROWSER_BADGING_BADGE_SERVICE_IMPL_H_
-
-#include "base/optional.h"
-#include "content/public/browser/frame_service_base.h"
-#include "third_party/blink/public/mojom/badging/badging.mojom.h"
-
-namespace content {
-class RenderFrameHost;
-class BrowserContext;
-class WebContents;
-}  // namespace content
-
-namespace extensions {
-class Extension;
-}
-
-namespace badging {
-class BadgeManager;
-}
-
-// Desktop implementation of the BadgeService mojo service.
-class BadgeServiceImpl
-    : public content::FrameServiceBase<blink::mojom::BadgeService> {
- public:
-  static void Create(blink::mojom::BadgeServiceRequest request,
-                     content::RenderFrameHost* render_frame_host);
-
-  // blink::mojom::BadgeService overrides.
-  void SetInteger(uint64_t content) override;
-  void SetFlag() override;
-  void ClearBadge() override;
-
- private:
-  BadgeServiceImpl(content::RenderFrameHost* render_frame_host,
-                   blink::mojom::BadgeServiceRequest request);
-  ~BadgeServiceImpl() override;
-
-  void SetBadge(base::Optional<uint64_t> content);
-  const extensions::Extension* ExtensionFromLastUrl();
-  bool IsInApp();
-
-  content::RenderFrameHost* render_frame_host_;
-  content::BrowserContext* browser_context_;
-  content::WebContents* web_contents_;
-  badging::BadgeManager* badge_manager_;
-};
-
-#endif  // CHROME_BROWSER_BADGING_BADGE_SERVICE_IMPL_H_
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index 4936f45..b829f54 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -98,12 +98,12 @@
 #include "components/metrics_services_manager/metrics_services_manager.h"
 #include "components/metrics_services_manager/metrics_services_manager_client.h"
 #include "components/network_time/network_time_tracker.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_service.h"
 #include "components/policy/core/common/policy_service.h"
 #include "components/prefs/json_pref_store.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
-#include "components/previews/core/previews_experiments.h"
 #include "components/rappor/public/rappor_utils.h"
 #include "components/rappor/rappor_service_impl.h"
 #include "components/safe_browsing/safe_browsing_service_interface.h"
@@ -1281,7 +1281,7 @@
   DCHECK(!optimization_guide_service_);
   created_optimization_guide_service_ = true;
 
-  if (!previews::params::IsOptimizationHintsEnabled())
+  if (!optimization_guide::features::IsOptimizationHintsEnabled())
     return;
 
   optimization_guide_service_ =
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
index f168e0c..70dd18d0 100644
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -629,7 +629,11 @@
         </if>
         <include name="IDR_BRAILLE_MANIFEST" file="resources\chromeos\braille_ime\manifest.json" type="BINDATA" />
       </if>
-      <part file="media_router_resources.grdp" />
+      <if expr="not is_android">
+        <include name="IDR_MEDIA_ROUTER_INTERNALS_HTML" file="resources\media_router\media_router_internals.html" type="BINDATA" />
+        <include name="IDR_MEDIA_ROUTER_INTERNALS_CSS" file="resources\media_router\media_router_internals.css" type="BINDATA" />
+        <include name="IDR_MEDIA_ROUTER_INTERNALS_JS" file="resources\media_router\media_router_internals.js" type="BINDATA" />
+      </if>
       <if expr="chromeos or is_win or is_macosx">
         <include name="IDR_CAST_HTML" file="resources\cast\cast.html" type="BINDATA" />
         <include name="IDR_CAST_CSS" file="resources\cast\cast.css" type="BINDATA" />
diff --git a/chrome/browser/captive_portal/captive_portal_browsertest.cc b/chrome/browser/captive_portal/captive_portal_browsertest.cc
index e03ae78..d4ecc244 100644
--- a/chrome/browser/captive_portal/captive_portal_browsertest.cc
+++ b/chrome/browser/captive_portal/captive_portal_browsertest.cc
@@ -2659,8 +2659,9 @@
 // The second check finds no captive portal. The reloader triggers a reload at
 // the same time SSL error handler tries to show an interstitial. Should result
 // in an SSL interstitial.
+// TODO(crbug.com/981992): Reenable this after de-flaking it.
 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest,
-                       InterstitialTimerCertErrorAfterSlowLoad) {
+                       DISABLED_InterstitialTimerCertErrorAfterSlowLoad) {
   net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
 
   GURL cert_error_url;
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index ee9702c..986aee4 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -466,7 +466,7 @@
 #endif
 
 #if !defined(OS_ANDROID)
-#include "chrome/browser/badging/badge_service_impl.h"
+#include "chrome/browser/badging/badge_manager.h"
 #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h"
 #include "chrome/browser/devtools/devtools_window.h"
 #include "chrome/browser/media/unified_autoplay_config.h"
@@ -3911,10 +3911,10 @@
   }
 }
 
-void ChromeContentBrowserClient::BindCredentialManagerRequest(
+void ChromeContentBrowserClient::BindCredentialManagerReceiver(
     content::RenderFrameHost* render_frame_host,
-    blink::mojom::CredentialManagerRequest request) {
-  ChromePasswordManagerClient::BindCredentialManager(std::move(request),
+    mojo::PendingReceiver<blink::mojom::CredentialManager> receiver) {
+  ChromePasswordManagerClient::BindCredentialManager(std::move(receiver),
                                                      render_frame_host);
 }
 
@@ -4575,7 +4575,7 @@
 
 #if !defined(OS_ANDROID)
   frame_interfaces_parameterized_->AddInterface(
-      base::BindRepeating(&BadgeServiceImpl::Create));
+      base::BindRepeating(&badging::BadgeManager::BindRequest));
 #endif
 
   frame_interfaces_parameterized_->AddInterface(
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
index 3944a88..74944f0 100644
--- a/chrome/browser/chrome_content_browser_client.h
+++ b/chrome/browser/chrome_content_browser_client.h
@@ -402,9 +402,9 @@
       content::RenderFrameHost* render_frame_host,
       const std::string& interface_name,
       mojo::ScopedMessagePipeHandle interface_pipe) override;
-  void BindCredentialManagerRequest(
+  void BindCredentialManagerReceiver(
       content::RenderFrameHost* render_frame_host,
-      blink::mojom::CredentialManagerRequest request) override;
+      mojo::PendingReceiver<blink::mojom::CredentialManager> receiver) override;
   bool BindAssociatedInterfaceRequestFromFrame(
       content::RenderFrameHost* render_frame_host,
       const std::string& interface_name,
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 4b9d58b..6c1e12f3 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -771,6 +771,8 @@
     "dbus/kiosk_info_service_provider.h",
     "dbus/libvda_service_provider.cc",
     "dbus/libvda_service_provider.h",
+    "dbus/machine_learning_decision_service_provider.cc",
+    "dbus/machine_learning_decision_service_provider.h",
     "dbus/metrics_event_service_provider.cc",
     "dbus/metrics_event_service_provider.h",
     "dbus/plugin_vm_service_provider.cc",
@@ -1633,6 +1635,8 @@
     "policy/external_data_handlers/device_wilco_dtc_configuration_external_data_handler.h",
     "policy/external_data_handlers/native_printers_external_data_handler.cc",
     "policy/external_data_handlers/native_printers_external_data_handler.h",
+    "policy/external_data_handlers/print_servers_external_data_handler.cc",
+    "policy/external_data_handlers/print_servers_external_data_handler.h",
     "policy/external_data_handlers/user_avatar_image_external_data_handler.cc",
     "policy/external_data_handlers/user_avatar_image_external_data_handler.h",
     "policy/external_data_handlers/wallpaper_image_external_data_handler.cc",
@@ -1857,6 +1861,12 @@
     "printing/ppd_resolution_state.h",
     "printing/ppd_resolution_tracker.cc",
     "printing/ppd_resolution_tracker.h",
+    "printing/print_server.cc",
+    "printing/print_server.h",
+    "printing/print_servers_provider.cc",
+    "printing/print_servers_provider.h",
+    "printing/print_servers_provider_factory.cc",
+    "printing/print_servers_provider_factory.h",
     "printing/printer_configurer.cc",
     "printing/printer_configurer.h",
     "printing/printer_detector.h",
@@ -2162,6 +2172,7 @@
     "dbus/org.chromium.DriveFileStreamService.conf",
     "dbus/org.chromium.KioskAppService.conf",
     "dbus/org.chromium.LibvdaService.conf",
+    "dbus/org.chromium.MachineLearningDecisionService.conf",
     "dbus/org.chromium.MetricsEventService.conf",
     "dbus/org.chromium.NetworkProxyService.conf",
     "dbus/org.chromium.PluginVmService.conf",
@@ -2619,6 +2630,7 @@
     "printing/cups_printers_manager_unittest.cc",
     "printing/ppd_resolution_state_unittest.cc",
     "printing/ppd_resolution_tracker_unittest.cc",
+    "printing/print_servers_provider_unittest.cc",
     "printing/printer_detector_test_util.h",
     "printing/printer_event_tracker_unittest.cc",
     "printing/printers_map_unittest.cc",
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.cc b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
index 15436b0..feeb0134 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
@@ -699,6 +699,24 @@
   }
 }
 
+void AccessibilityManager::RequestAutoclickScrollableBoundsForPoint(
+    gfx::Point& point_in_screen) {
+  extensions::EventRouter* event_router =
+      extensions::EventRouter::Get(profile_);
+  std::unique_ptr<base::ListValue> event_args =
+      extensions::api::accessibility_private::FindScrollableBoundsForPoint::
+          Create(point_in_screen.x(), point_in_screen.y());
+  std::unique_ptr<extensions::Event> event =
+      std::make_unique<extensions::Event>(
+          extensions::events::
+              ACCESSIBILITY_PRIVATE_FIND_SCROLLABLE_BOUNDS_FOR_POINT,
+          extensions::api::accessibility_private::FindScrollableBoundsForPoint::
+              kEventName,
+          std::move(event_args));
+  event_router->DispatchEventWithLazyListener(
+      extension_misc::kAutoclickExtensionId, std::move(event));
+}
+
 void AccessibilityManager::EnableVirtualKeyboard(bool enabled) {
   if (!profile_)
     return;
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.h b/chrome/browser/chromeos/accessibility/accessibility_manager.h
index b7d7582..132fa90 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_manager.h
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.h
@@ -153,6 +153,10 @@
   // Returns true if autoclick is enabled.
   bool IsAutoclickEnabled() const;
 
+  // Requests the Autoclick extension find the bounds of the nearest scrollable
+  // ancestor to the point in the screen, as given in screen coordinates.
+  void RequestAutoclickScrollableBoundsForPoint(gfx::Point& point_in_screen);
+
   // Enables or disables the virtual keyboard.
   void EnableVirtualKeyboard(bool enabled);
   // Returns true if the virtual keyboard is enabled, otherwise false.
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index 549df91..cdc46dd2 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -52,6 +52,7 @@
 #include "chrome/browser/chromeos/dbus/drive_file_stream_service_provider.h"
 #include "chrome/browser/chromeos/dbus/kiosk_info_service_provider.h"
 #include "chrome/browser/chromeos/dbus/libvda_service_provider.h"
+#include "chrome/browser/chromeos/dbus/machine_learning_decision_service_provider.h"
 #include "chrome/browser/chromeos/dbus/metrics_event_service_provider.h"
 #include "chrome/browser/chromeos/dbus/plugin_vm_service_provider.h"
 #include "chrome/browser/chromeos/dbus/proxy_resolution_service_provider.h"
@@ -91,7 +92,6 @@
 #include "chrome/browser/chromeos/power/freezer_cgroup_process_manager.h"
 #include "chrome/browser/chromeos/power/idle_action_warning_observer.h"
 #include "chrome/browser/chromeos/power/ml/adaptive_screen_brightness_manager.h"
-#include "chrome/browser/chromeos/power/ml/user_activity_controller.h"
 #include "chrome/browser/chromeos/power/power_data_collector.h"
 #include "chrome/browser/chromeos/power/power_metrics_reporter.h"
 #include "chrome/browser/chromeos/power/process_data_collector.h"
@@ -296,6 +296,9 @@
                                 ? nullptr
                                 : DBusThreadManager::Get()->GetSystemBus();
 
+    // See also PostBrowserStart() where machine_learning_decision_service_ is
+    // initialized.
+
     proxy_resolution_service_ = CrosDBusService::Create(
         system_bus, kNetworkProxyServiceName,
         dbus::ObjectPath(kNetworkProxyServicePath),
@@ -394,6 +397,19 @@
         OwnerSettingsServiceChromeOSFactory::GetInstance()->GetOwnerKeyUtil());
   }
 
+  void CreateMachineLearningDecisionProvider() {
+    dbus::Bus* system_bus = DBusThreadManager::Get()->IsUsingFakes()
+                                ? nullptr
+                                : DBusThreadManager::Get()->GetSystemBus();
+    // TODO(alanlxl): update Ml here to MachineLearning after powerd is
+    // uprevved.
+    machine_learning_decision_service_ = CrosDBusService::Create(
+        system_bus, machine_learning::kMlDecisionServiceName,
+        dbus::ObjectPath(machine_learning::kMlDecisionServicePath),
+        CrosDBusService::CreateServiceProviderList(
+            std::make_unique<MachineLearningDecisionServiceProvider>()));
+  }
+
   ~DBusServices() {
     NetworkHandler::Shutdown();
     cryptohome::AsyncMethodCaller::Shutdown();
@@ -411,6 +427,7 @@
     vm_applications_service_.reset();
     drive_file_stream_service_.reset();
     cryptohome_key_delegate_service_.reset();
+    machine_learning_decision_service_.reset();
     ProcessDataCollector::Shutdown();
     PowerDataCollector::Shutdown();
     PowerPolicyController::Shutdown();
@@ -430,6 +447,7 @@
   std::unique_ptr<CrosDBusService> drive_file_stream_service_;
   std::unique_ptr<CrosDBusService> cryptohome_key_delegate_service_;
   std::unique_ptr<CrosDBusService> libvda_service_;
+  std::unique_ptr<CrosDBusService> machine_learning_decision_service_;
 
   DISALLOW_COPY_AND_ASSIGN(DBusServices);
 };
@@ -1036,8 +1054,10 @@
   }
 
   if (base::FeatureList::IsEnabled(::features::kUserActivityEventLogging)) {
-    user_activity_controller_ =
-        std::make_unique<power::ml::UserActivityController>();
+    // MachineLearningDecisionServiceProvider needs to be created after
+    // UserActivityController which depends on UserActivityDetector, not
+    // available until PostBrowserStart.
+    dbus_services_->CreateMachineLearningDecisionProvider();
   }
 
   auto_screen_brightness_controller_ =
@@ -1108,7 +1128,6 @@
   ScreenLocker::ShutDownClass();
   low_disk_notification_.reset();
   demo_mode_resources_remover_.reset();
-  user_activity_controller_.reset();
   adaptive_screen_brightness_manager_.reset();
   scheduler_configuration_manager_.reset();
   auto_screen_brightness_controller_.reset();
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.h b/chrome/browser/chromeos/chrome_browser_main_chromeos.h
index b89d8bcb45..653ec18 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.h
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.h
@@ -70,7 +70,6 @@
 namespace power {
 namespace ml {
 class AdaptiveScreenBrightnessManager;
-class UserActivityController;
 }  // namespace ml
 
 namespace auto_screen_brightness {
@@ -156,7 +155,6 @@
   std::unique_ptr<power::ml::AdaptiveScreenBrightnessManager>
       adaptive_screen_brightness_manager_;
 
-  std::unique_ptr<power::ml::UserActivityController> user_activity_controller_;
   std::unique_ptr<power::auto_screen_brightness::Controller>
       auto_screen_brightness_controller_;
 
diff --git a/chrome/browser/chromeos/dbus/machine_learning_decision_service_provider.cc b/chrome/browser/chromeos/dbus/machine_learning_decision_service_provider.cc
new file mode 100644
index 0000000..0ad7a32f
--- /dev/null
+++ b/chrome/browser/chromeos/dbus/machine_learning_decision_service_provider.cc
@@ -0,0 +1,74 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/dbus/machine_learning_decision_service_provider.h"
+
+#include "base/bind.h"
+#include "chrome/browser/chromeos/power/ml/user_activity_controller.h"
+#include "chromeos/constants/devicetype.h"
+#include "dbus/bus.h"
+#include "dbus/message.h"
+#include "third_party/cros_system_api/dbus/service_constants.h"
+
+namespace chromeos {
+
+MachineLearningDecisionServiceProvider::MachineLearningDecisionServiceProvider()
+    : user_activity_controller_(
+          std::make_unique<power::ml::UserActivityController>()),
+      weak_ptr_factory_(this) {}
+
+MachineLearningDecisionServiceProvider::
+    ~MachineLearningDecisionServiceProvider() = default;
+
+void MachineLearningDecisionServiceProvider::Start(
+    scoped_refptr<dbus::ExportedObject> exported_object) {
+  exported_object->ExportMethod(
+      machine_learning::kMlDecisionServiceInterface,
+      machine_learning::kShouldDeferScreenDimMethod,
+      base::BindRepeating(
+          &MachineLearningDecisionServiceProvider::ShouldDeferScreenDim,
+          weak_ptr_factory_.GetWeakPtr()),
+      base::BindRepeating(&MachineLearningDecisionServiceProvider::OnExported,
+                          weak_ptr_factory_.GetWeakPtr()));
+}
+
+void MachineLearningDecisionServiceProvider::OnExported(
+    const std::string& interface_name,
+    const std::string& method_name,
+    bool success) {
+  if (!success) {
+    LOG(ERROR) << "Failed to export " << interface_name << "." << method_name;
+  }
+}
+
+void MachineLearningDecisionServiceProvider::ShouldDeferScreenDim(
+    dbus::MethodCall* method_call,
+    dbus::ExportedObject::ResponseSender response_sender) {
+  std::unique_ptr<dbus::Response> response =
+      dbus::Response::FromMethodCall(method_call);
+
+  // Smart dim only works on chromebook devices. Simply return false on other
+  // device types.
+  if (chromeos::GetDeviceType() != chromeos::DeviceType::kChromebook) {
+    SendSmartDimDecision(std::move(response), std::move(response_sender),
+                         false);
+    return;
+  }
+
+  user_activity_controller_->ShouldDeferScreenDim(base::BindOnce(
+      &MachineLearningDecisionServiceProvider::SendSmartDimDecision,
+      weak_ptr_factory_.GetWeakPtr(), std::move(response),
+      std::move(response_sender)));
+}
+
+void MachineLearningDecisionServiceProvider::SendSmartDimDecision(
+    std::unique_ptr<dbus::Response> response,
+    dbus::ExportedObject::ResponseSender response_sender,
+    bool defer_dimming) {
+  dbus::MessageWriter writer(response.get());
+  writer.AppendBool(defer_dimming);
+  response_sender.Run(std::move(response));
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/dbus/machine_learning_decision_service_provider.h b/chrome/browser/chromeos/dbus/machine_learning_decision_service_provider.h
new file mode 100644
index 0000000..74d479be
--- /dev/null
+++ b/chrome/browser/chromeos/dbus/machine_learning_decision_service_provider.h
@@ -0,0 +1,86 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_DBUS_MACHINE_LEARNING_DECISION_SERVICE_PROVIDER_H_
+#define CHROME_BROWSER_CHROMEOS_DBUS_MACHINE_LEARNING_DECISION_SERVICE_PROVIDER_H_
+
+#include <memory>
+#include <string>
+
+#include "base/macros.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
+#include "chromeos/dbus/services/cros_dbus_service.h"
+#include "dbus/exported_object.h"
+
+namespace dbus {
+
+class MethodCall;
+
+}  // namespace dbus
+
+namespace chromeos {
+namespace power {
+namespace ml {
+
+class UserActivityController;
+
+}  // namespace ml
+}  // namespace power
+
+// This class processes machine learning decision requests from Chrome OS side.
+//
+// ShouldDeferScreenDim:
+// % dbus-send --system --type=method_call --print-reply
+//     --dest=org.chromium.MlDecisionService
+//     /org/chromium/MlDecisionService
+//     org.chromium.MlDecisionService.ShouldDeferScreenDim
+//     boolean: true or false
+//
+// % (True means smart dim decides to defer the imminent screen dimming.)
+//
+// Now it only exports ShouldDeferScreenDim for powerd. New machine learning
+// related methods can be added when required.
+class MachineLearningDecisionServiceProvider
+    : public CrosDBusService::ServiceProviderInterface {
+ public:
+  MachineLearningDecisionServiceProvider();
+  ~MachineLearningDecisionServiceProvider() override;
+
+  // CrosDBusService::ServiceProviderInterface overrides:
+  void Start(scoped_refptr<dbus::ExportedObject> exported_object) override;
+
+ private:
+  // Called from ExportedObject when a handler is exported as a D-Bus
+  // method or failed to be exported.
+  void OnExported(const std::string& interface_name,
+                  const std::string& method_name,
+                  bool success);
+
+  // Called on UI thread in response to D-Bus requests.
+  void ShouldDeferScreenDim(
+      dbus::MethodCall* method_call,
+      dbus::ExportedObject::ResponseSender response_sender);
+
+  // Sends |defer_dimming| as the response to a ShouldDeferScreenDim method
+  // call.
+  void SendSmartDimDecision(
+      std::unique_ptr<dbus::Response> response,
+      dbus::ExportedObject::ResponseSender response_sender,
+      bool defer_dimming);
+
+  // The real provider of ShouldDeferScreenDim
+  std::unique_ptr<power::ml::UserActivityController> user_activity_controller_;
+
+  // Keep this last so that all weak pointers will be invalidated at the
+  // beginning of destruction.
+  base::WeakPtrFactory<MachineLearningDecisionServiceProvider>
+      weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(MachineLearningDecisionServiceProvider);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_DBUS_MACHINE_LEARNING_DECISION_SERVICE_PROVIDER_H_
diff --git a/chrome/browser/chromeos/dbus/org.chromium.MachineLearningDecisionService.conf b/chrome/browser/chromeos/dbus/org.chromium.MachineLearningDecisionService.conf
new file mode 100644
index 0000000..09f45ee
--- /dev/null
+++ b/chrome/browser/chromeos/dbus/org.chromium.MachineLearningDecisionService.conf
@@ -0,0 +1,29 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+  "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<!--
+  Copyright 2019 The Chromium Authors. All rights reserved.
+  Use of this source code is governed by a BSD-style license that can be
+  found in the LICENSE file.
+-->
+<busconfig>
+  <policy user="chronos">
+    <allow own="org.chromium.MlDecisionService"/>
+  </policy>
+
+  <!--
+    powerd uses this service to ask Chrome whether to defer the imminent screen
+    dimming.
+  -->
+  <policy user="power">
+    <allow send_destination="org.chromium.MlDecisionService"
+           send_interface="org.chromium.MlDecisionService"/>
+  </policy>
+
+  <!--
+    upstart and tast run as root.
+  -->
+  <policy user="root">
+    <allow send_destination="org.chromium.MlDecisionService"
+           send_interface="org.chromium.MlDecisionService"/>
+  </policy>
+</busconfig>
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
index ecb64d3d..0dff8c8 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -805,30 +805,37 @@
   if (!prefs)
     return RespondNow(Error("ARC is not available"));
 
-  const std::unique_ptr<ArcAppListPrefs::AppInfo> app_info =
-      prefs->GetApp(params->app_id);
-  if (!app_info)
-    return RespondNow(Error("App is not available"));
+  std::unique_ptr<base::DictionaryValue> app_value;
+  {
+    const std::unique_ptr<ArcAppListPrefs::AppInfo> app_info =
+        prefs->GetApp(params->app_id);
+    if (!app_info)
+      return RespondNow(Error("App is not available"));
 
-  auto app_value = std::make_unique<base::DictionaryValue>();
+    app_value = std::make_unique<base::DictionaryValue>();
 
-  app_value->SetKey("name", base::Value(app_info->name));
-  app_value->SetKey("packageName", base::Value(app_info->package_name));
-  app_value->SetKey("activity", base::Value(app_info->activity));
-  app_value->SetKey("intentUri", base::Value(app_info->intent_uri));
-  app_value->SetKey("iconResourceId", base::Value(app_info->icon_resource_id));
-  app_value->SetKey("lastLaunchTime",
-                    base::Value(app_info->last_launch_time.ToJsTime()));
-  app_value->SetKey("installTime",
-                    base::Value(app_info->install_time.ToJsTime()));
-  app_value->SetKey("sticky", base::Value(app_info->sticky));
-  app_value->SetKey("notificationsEnabled",
-                    base::Value(app_info->notifications_enabled));
-  app_value->SetKey("ready", base::Value(app_info->ready));
-  app_value->SetKey("suspended", base::Value(app_info->suspended));
-  app_value->SetKey("showInLauncher", base::Value(app_info->show_in_launcher));
-  app_value->SetKey("shortcut", base::Value(app_info->shortcut));
-  app_value->SetKey("launchable", base::Value(app_info->launchable));
+    app_value->SetKey("name", base::Value(std::move(app_info->name)));
+    app_value->SetKey("packageName",
+                      base::Value(std::move(app_info->package_name)));
+    app_value->SetKey("activity", base::Value(std::move(app_info->activity)));
+    app_value->SetKey("intentUri",
+                      base::Value(std::move(app_info->intent_uri)));
+    app_value->SetKey("iconResourceId",
+                      base::Value(std::move(app_info->icon_resource_id)));
+    app_value->SetKey("lastLaunchTime",
+                      base::Value(app_info->last_launch_time.ToJsTime()));
+    app_value->SetKey("installTime",
+                      base::Value(app_info->install_time.ToJsTime()));
+    app_value->SetKey("sticky", base::Value(app_info->sticky));
+    app_value->SetKey("notificationsEnabled",
+                      base::Value(app_info->notifications_enabled));
+    app_value->SetKey("ready", base::Value(app_info->ready));
+    app_value->SetKey("suspended", base::Value(app_info->suspended));
+    app_value->SetKey("showInLauncher",
+                      base::Value(app_info->show_in_launcher));
+    app_value->SetKey("shortcut", base::Value(app_info->shortcut));
+    app_value->SetKey("launchable", base::Value(app_info->launchable));
+  }
 
   return RespondNow(OneArgument(std::move(app_value)));
 }
@@ -851,26 +858,31 @@
   if (!prefs)
     return RespondNow(Error("ARC is not available"));
 
-  const std::unique_ptr<ArcAppListPrefs::PackageInfo> package_info =
-      prefs->GetPackage(params->package_name);
-  if (!package_info)
-    return RespondNow(Error("Package is not available"));
+  std::unique_ptr<base::DictionaryValue> package_value;
+  {
+    const std::unique_ptr<ArcAppListPrefs::PackageInfo> package_info =
+        prefs->GetPackage(params->package_name);
+    if (!package_info)
+      return RespondNow(Error("Package is not available"));
 
-  auto package_value = std::make_unique<base::DictionaryValue>();
-  package_value->SetKey("packageName", base::Value(package_info->package_name));
-  package_value->SetKey("packageVersion",
-                        base::Value(package_info->package_version));
-  package_value->SetKey(
-      "lastBackupAndroidId",
-      base::Value(base::NumberToString(package_info->last_backup_android_id)));
-  package_value->SetKey("lastBackupTime",
-                        base::Value(base::Time::FromDeltaSinceWindowsEpoch(
-                                        base::TimeDelta::FromMicroseconds(
-                                            package_info->last_backup_time))
-                                        .ToJsTime()));
-  package_value->SetKey("shouldSync", base::Value(package_info->should_sync));
-  package_value->SetKey("system", base::Value(package_info->system));
-  package_value->SetKey("vpnProvider", base::Value(package_info->vpn_provider));
+    package_value = std::make_unique<base::DictionaryValue>();
+    package_value->SetKey("packageName",
+                          base::Value(std::move(package_info->package_name)));
+    package_value->SetKey("packageVersion",
+                          base::Value(package_info->package_version));
+    package_value->SetKey("lastBackupAndroidId",
+                          base::Value(base::NumberToString(
+                              package_info->last_backup_android_id)));
+    package_value->SetKey("lastBackupTime",
+                          base::Value(base::Time::FromDeltaSinceWindowsEpoch(
+                                          base::TimeDelta::FromMicroseconds(
+                                              package_info->last_backup_time))
+                                          .ToJsTime()));
+    package_value->SetKey("shouldSync", base::Value(package_info->should_sync));
+    package_value->SetKey("system", base::Value(package_info->system));
+    package_value->SetKey("vpnProvider",
+                          base::Value(package_info->vpn_provider));
+  }
   return RespondNow(OneArgument(std::move(package_value)));
 }
 
@@ -1157,7 +1169,7 @@
     std::string base64Png(png_data->front(),
                           png_data->front() + png_data->size());
     base::Base64Encode(base64Png, &base64Png);
-    Respond(OneArgument(std::make_unique<base::Value>(base64Png)));
+    Respond(OneArgument(std::make_unique<base::Value>(std::move(base64Png))));
   } else {
     Respond(Error(base::StrCat(
         {"Error taking screenshot ",
@@ -1221,11 +1233,11 @@
     std::vector<chromeos::Printer> printer_list =
         printers_manager_->GetPrinters(type);
     for (const auto& printer : printer_list) {
-      vresults.push_back(base::Value(base::Value::Type::DICTIONARY));
-      base::Value& result = vresults.back();
+      base::Value result(base::Value::Type::DICTIONARY);
       result.SetKey("printerName", base::Value(printer.display_name()));
       result.SetKey("printerId", base::Value(printer.id()));
       result.SetKey("printerType", base::Value(GetPrinterType(type)));
+      vresults.push_back(std::move(result));
     }
   }
   // We have to respond in separate task, because it will cause a destruction of
@@ -1641,7 +1653,8 @@
       // SHELF_AUTO_HIDE_ALWAYS_HIDDEN not supported by shelf_prefs.cc
       return RespondNow(Error("SHELF_AUTO_HIDE_ALWAYS_HIDDEN not supported"));
   }
-  return RespondNow(OneArgument(std::make_unique<base::Value>(str_behavior)));
+  return RespondNow(
+      OneArgument(std::make_unique<base::Value>(std::move(str_behavior))));
 }
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digester.cc b/chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digester.cc
index d75f086..0df94032 100644
--- a/chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digester.cc
+++ b/chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digester.cc
@@ -58,7 +58,7 @@
     base::MD5Digest digest;
     base::MD5Final(&digest, &md5_context_);
     std::string result = base::MD5DigestToBase16(digest);
-    std::move(callback_).Run(result);
+    std::move(callback_).Run(std::move(result));
     return;
   }
 
diff --git a/chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digester.h b/chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digester.h
index 0e37e4e..a0c5c6b 100644
--- a/chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digester.h
+++ b/chrome/browser/chromeos/extensions/file_manager/file_stream_md5_digester.h
@@ -24,7 +24,7 @@
 // stream.
 class FileStreamMd5Digester {
  public:
-  using ResultCallback = base::OnceCallback<void(const std::string&)>;
+  using ResultCallback = base::OnceCallback<void(std::string)>;
 
   FileStreamMd5Digester();
   ~FileStreamMd5Digester();
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
index f97024d6e..13175bc 100644
--- a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
+++ b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
@@ -257,11 +257,12 @@
 // Calls a response callback (on the UI thread) with a file content hash
 // computed on the IO thread.
 void ComputeChecksumRespondOnUIThread(
-    base::OnceCallback<void(const std::string&)> callback,
-    const std::string& hash) {
+    base::OnceCallback<void(std::string)> callback,
+    std::string hash) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI},
-                           base::BindOnce(std::move(callback), hash));
+  base::PostTaskWithTraits(
+      FROM_HERE, {BrowserThread::UI},
+      base::BindOnce(std::move(callback), std::move(hash)));
 }
 
 // Calls a response callback on the UI thread.
@@ -1061,9 +1062,9 @@
 }
 
 void FileManagerPrivateInternalComputeChecksumFunction::RespondWith(
-    const std::string& hash) {
+    std::string hash) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  Respond(OneArgument(std::make_unique<base::Value>(hash)));
+  Respond(OneArgument(std::make_unique<base::Value>(std::move(hash))));
 }
 
 FileManagerPrivateSearchFilesByHashesFunction::
@@ -1232,7 +1233,7 @@
     return;
   }
   const std::string fs_name = my_files_virtual_path.value();
-  const auto fs_root = base::StrCat({url.spec(), "/"});
+  const std::string fs_root = base::StrCat({url.spec(), "/"});
 
   auto entries = std::make_unique<base::ListValue>();
   entries->GetList().reserve(results.size());
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.h b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.h
index 205df85..e03f7f2d 100644
--- a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.h
+++ b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.h
@@ -328,7 +328,7 @@
  private:
   std::unique_ptr<drive::util::FileStreamMd5Digester> digester_;
 
-  void RespondWith(const std::string& hash);
+  void RespondWith(std::string hash);
 };
 
 // Implements the chrome.fileManagerPrivate.searchFilesByHashes method.
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc
index 93b1643..6ad4a7b 100644
--- a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc
+++ b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc
@@ -1086,8 +1086,8 @@
   std::string input = net::HexDecode(params->bytes);
   std::string encoding;
   bool success = base::DetectEncoding(input, &encoding);
-  return RespondNow(OneArgument(
-      std::make_unique<base::Value>(success ? encoding : std::string())));
+  return RespondNow(OneArgument(std::make_unique<base::Value>(
+      success ? std::move(encoding) : std::string())));
 }
 
 }  // namespace extensions
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
index 54cf33dc..be06474 100644
--- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
+++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_service.cc
@@ -119,18 +119,6 @@
     adapter_ = adapter;
     adapter_->AddObserver(this);
     service_->OnBluetoothAdapterPresentChanged();
-
-    // TODO(tengs): At the moment, there is no way for Bluetooth discoverability
-    // to be turned on except through the Easy Unlock setup. If we step on any
-    // toes in the future then we need to revisit this guard.
-    if (adapter_->IsDiscoverable())
-      TurnOffBluetoothDiscoverability();
-  }
-
-  void TurnOffBluetoothDiscoverability() {
-    if (adapter_) {
-      adapter_->SetDiscoverable(false, base::DoNothing(), base::DoNothing());
-    }
   }
 
   // Owner of this class and should out-live this class.
diff --git a/chrome/browser/chromeos/login/enable_debugging_browsertest.cc b/chrome/browser/chromeos/login/enable_debugging_browsertest.cc
index 6b80b7c0..14135e38 100644
--- a/chrome/browser/chromeos/login/enable_debugging_browsertest.cc
+++ b/chrome/browser/chromeos/login/enable_debugging_browsertest.cc
@@ -306,7 +306,7 @@
   debug_daemon_client_->ResetWait();
   ClickEnableButton();
   debug_daemon_client_->WaitUntilCalled();
-  test::OobeJS().CreateHasClassWaiter(true, "done-view", {"debugging"});
+  test::OobeJS().CreateHasClassWaiter(true, "done-view", {"debugging"})->Wait();
   EXPECT_EQ(debug_daemon_client_->num_enable_debugging_features(), 1);
   EXPECT_EQ(debug_daemon_client_->num_remove_protection(), 0);
 }
@@ -320,7 +320,7 @@
   test::OobeJS().TypeIntoPath("test0000", {"enable-debugging-password2"});
   ClickEnableButton();
   debug_daemon_client_->WaitUntilCalled();
-  test::OobeJS().CreateHasClassWaiter(true, "done-view", {"debugging"});
+  test::OobeJS().CreateHasClassWaiter(true, "done-view", {"debugging"})->Wait();
 
   EXPECT_EQ(debug_daemon_client_->num_enable_debugging_features(), 1);
   EXPECT_EQ(debug_daemon_client_->num_remove_protection(), 0);
@@ -335,7 +335,9 @@
   test::OobeJS().TypeIntoPath("test0000", {"enable-debugging-password"});
   test::OobeJS().TypeIntoPath("test9999", {"enable-debugging-password2"});
   ClickEnableButton();
-  test::OobeJS().CreateHasClassWaiter(false, "done-view", {"debugging"});
+  test::OobeJS()
+      .CreateHasClassWaiter(false, "done-view", {"debugging"})
+      ->Wait();
 
   EXPECT_EQ(debug_daemon_client_->num_enable_debugging_features(), 0);
   EXPECT_EQ(debug_daemon_client_->num_remove_protection(), 0);
@@ -343,7 +345,7 @@
   test::OobeJS().TypeIntoPath("test0000", {"enable-debugging-password2"});
   ClickEnableButton();
   debug_daemon_client_->WaitUntilCalled();
-  test::OobeJS().CreateHasClassWaiter(true, "done-view", {"debugging"});
+  test::OobeJS().CreateHasClassWaiter(true, "done-view", {"debugging"})->Wait();
 
   EXPECT_EQ(debug_daemon_client_->num_enable_debugging_features(), 1);
   EXPECT_EQ(debug_daemon_client_->num_remove_protection(), 0);
@@ -412,7 +414,9 @@
   test::OobeJS().ExpectHidden("debugging");
   InvokeEnableDebuggingScreen();
   test::OobeJS().ExpectVisible("debugging");
-  test::OobeJS().CreateHasClassWaiter(true, "error-view", {"debugging"});
+  test::OobeJS()
+      .CreateHasClassWaiter(true, "error-view", {"debugging"})
+      ->Wait();
   test::OobeJS().ExpectHasNoClass("remove-protection-view", {"debugging"});
   test::OobeJS().ExpectHasNoClass("setup-view", {"debugging"});
   test::OobeJS().ExpectHasNoClass("done-view", {"debugging"});
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_local_policy_server_browsertest.cc b/chrome/browser/chromeos/login/enrollment/enrollment_local_policy_server_browsertest.cc
index ef992b12..baf06b56 100644
--- a/chrome/browser/chromeos/login/enrollment/enrollment_local_policy_server_browsertest.cc
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_local_policy_server_browsertest.cc
@@ -46,11 +46,6 @@
 
 namespace {
 
-constexpr char kTestDomain[] = "test-domain.com";
-constexpr char kTestRlzBrandCodeKey[] = "TEST";
-constexpr char kTestSerialNumber[] = "111111";
-constexpr char kTestHardwareClass[] = "hw";
-
 std::string GetDmTokenFromPolicy(const std::string& blob) {
   enterprise_management::PolicyFetchResponse policy;
   CHECK(policy.ParseFromString(blob));
@@ -150,7 +145,7 @@
     // AutoEnrollmentController assumes that VPD is in valid state if
     // "serial_number" or "Product_S/N" could be read from it.
     fake_statistics_provider_.SetMachineStatistic(
-        system::kSerialNumberKeyForTest, kTestSerialNumber);
+        system::kSerialNumberKeyForTest, test::kTestSerialNumber);
   }
 
   ~AutoEnrollmentWithStatistics() override = default;
@@ -195,12 +190,8 @@
 class InitialEnrollmentTest : public EnrollmentLocalPolicyServerBase {
  public:
   InitialEnrollmentTest() {
-    fake_statistics_provider_.SetMachineStatistic(system::kRlzBrandCodeKey,
-                                                  kTestRlzBrandCodeKey);
-    fake_statistics_provider_.SetMachineStatistic(
-        system::kSerialNumberKeyForTest, kTestSerialNumber);
-    fake_statistics_provider_.SetMachineStatistic(system::kHardwareClassKey,
-                                                  kTestHardwareClass);
+    policy_server_.ConfigureFakeStatisticsForZeroTouch(
+        &fake_statistics_provider_);
   }
 
   void SetUpCommandLine(base::CommandLine* command_line) override {
@@ -491,7 +482,7 @@
   EXPECT_TRUE(policy_server_.SetDeviceStateRetrievalResponse(
       state_keys_broker(),
       enterprise_management::DeviceStateRetrievalResponse::RESTORE_MODE_NONE,
-      kTestDomain));
+      test::kTestDomain));
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(GaiaView::kScreenId).Wait();
 }
@@ -502,7 +493,7 @@
       state_keys_broker(),
       enterprise_management::DeviceStateRetrievalResponse::
           RESTORE_MODE_REENROLLMENT_REQUESTED,
-      kTestDomain));
+      test::kTestDomain));
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(EnrollmentScreenView::kScreenId).Wait();
   enrollment_screen()->OnCancel();
@@ -515,7 +506,7 @@
       state_keys_broker(),
       enterprise_management::DeviceStateRetrievalResponse::
           RESTORE_MODE_REENROLLMENT_ENFORCED,
-      kTestDomain));
+      test::kTestDomain));
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(EnrollmentScreenView::kScreenId).Wait();
   enrollment_ui_.SetExitHandler();
@@ -529,7 +520,7 @@
       state_keys_broker(),
       enterprise_management::DeviceStateRetrievalResponse::
           RESTORE_MODE_DISABLED,
-      kTestDomain));
+      test::kTestDomain));
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(DeviceDisabledScreenView::kScreenId).Wait();
 }
@@ -541,7 +532,7 @@
       state_keys_broker(),
       enterprise_management::DeviceStateRetrievalResponse::
           RESTORE_MODE_REENROLLMENT_ZERO_TOUCH,
-      kTestDomain));
+      test::kTestDomain));
 
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   enrollment_ui_.WaitForStep(test::ui::kEnrollmentStepSuccess);
@@ -576,7 +567,7 @@
       state_keys_broker(),
       enterprise_management::DeviceStateRetrievalResponse::
           RESTORE_MODE_REENROLLMENT_ENFORCED,
-      kTestDomain));
+      test::kTestDomain));
 
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(GaiaView::kScreenId).Wait();
@@ -589,7 +580,7 @@
       state_keys_broker(),
       enterprise_management::DeviceStateRetrievalResponse::
           RESTORE_MODE_REENROLLMENT_ENFORCED,
-      kTestDomain));
+      test::kTestDomain));
 
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(GaiaView::kScreenId).Wait();
@@ -603,7 +594,7 @@
       state_keys_broker(),
       enterprise_management::DeviceStateRetrievalResponse::
           RESTORE_MODE_REENROLLMENT_ENFORCED,
-      kTestDomain));
+      test::kTestDomain));
 
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(EnrollmentScreenView::kScreenId).Wait();
@@ -617,7 +608,7 @@
       state_keys_broker(),
       enterprise_management::DeviceStateRetrievalResponse::
           RESTORE_MODE_REENROLLMENT_ENFORCED,
-      kTestDomain));
+      test::kTestDomain));
 
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(EnrollmentScreenView::kScreenId).Wait();
@@ -687,8 +678,8 @@
       enterprise_management::DeviceInitialEnrollmentStateResponse::
           INITIAL_ENROLLMENT_MODE_ENROLLMENT_ENFORCED;
   policy_server_.SetDeviceInitialEnrollmentResponse(
-      kTestRlzBrandCodeKey, kTestSerialNumber, initial_enrollment, kTestDomain,
-      base::nullopt /* is_license_packaged_with_device */);
+      test::kTestRlzBrandCodeKey, test::kTestSerialNumber, initial_enrollment,
+      test::kTestDomain, base::nullopt /* is_license_packaged_with_device */);
 
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(EnrollmentScreenView::kScreenId).Wait();
@@ -714,8 +705,8 @@
       enterprise_management::DeviceInitialEnrollmentStateResponse::
           INITIAL_ENROLLMENT_MODE_ZERO_TOUCH_ENFORCED;
   policy_server_.SetDeviceInitialEnrollmentResponse(
-      kTestRlzBrandCodeKey, kTestSerialNumber, initial_enrollment, kTestDomain,
-      base::nullopt /* is_license_packaged_with_device */);
+      test::kTestRlzBrandCodeKey, test::kTestSerialNumber, initial_enrollment,
+      test::kTestDomain, base::nullopt /* is_license_packaged_with_device */);
 
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   OobeScreenWaiter(EnrollmentScreenView::kScreenId).Wait();
@@ -746,13 +737,7 @@
 
 IN_PROC_BROWSER_TEST_F(InitialEnrollmentTest,
                        ZeroTouchForcedAttestationSuccess) {
-  policy_server_.SetFakeAttestationFlow();
-  auto initial_enrollment =
-      enterprise_management::DeviceInitialEnrollmentStateResponse::
-          INITIAL_ENROLLMENT_MODE_ZERO_TOUCH_ENFORCED;
-  policy_server_.SetDeviceInitialEnrollmentResponse(
-      kTestRlzBrandCodeKey, kTestSerialNumber, initial_enrollment, kTestDomain,
-      base::nullopt /* is_license_packaged_with_device */);
+  policy_server_.SetupZeroTouchForcedEnrollment();
 
   host()->StartWizard(AutoEnrollmentCheckScreenView::kScreenId);
   enrollment_ui_.WaitForStep(test::ui::kEnrollmentStepSuccess);
diff --git a/chrome/browser/chromeos/login/eula_browsertest.cc b/chrome/browser/chromeos/login/eula_browsertest.cc
index 8878daae..b85809b 100644
--- a/chrome/browser/chromeos/login/eula_browsertest.cc
+++ b/chrome/browser/chromeos/login/eula_browsertest.cc
@@ -272,8 +272,10 @@
   test::OobeJS().ExpectVisiblePath(
       {"oobe-eula-md", "installationSettingsDialog"});
 
-  test::OobeJS().CreateWaiter(
-      "$('oobe-eula-md').$$('#eula-password').textContent.trim() !== ''");
+  test::OobeJS()
+      .CreateWaiter(
+          "$('oobe-eula-md').$$('#eula-password').textContent.trim() !== ''")
+      ->Wait();
   test::OobeJS().ExpectEQ(
       "$('oobe-eula-md').$$('#eula-password').textContent.trim()",
       std::string(FakeCryptohomeClient::kStubTpmPassword));
diff --git a/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc b/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
index 40942958..c7e67c4a 100644
--- a/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
+++ b/chrome/browser/chromeos/login/oobe_interactive_ui_test.cc
@@ -18,8 +18,10 @@
 #include "chrome/browser/chromeos/login/screens/recommend_apps/scoped_test_recommend_apps_fetcher_factory.h"
 #include "chrome/browser/chromeos/login/test/device_state_mixin.h"
 #include "chrome/browser/chromeos/login/test/embedded_test_server_mixin.h"
+#include "chrome/browser/chromeos/login/test/enrollment_ui_mixin.h"
 #include "chrome/browser/chromeos/login/test/fake_gaia_mixin.h"
 #include "chrome/browser/chromeos/login/test/js_checker.h"
+#include "chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h"
 #include "chrome/browser/chromeos/login/test/login_manager_mixin.h"
 #include "chrome/browser/chromeos/login/test/oobe_base_test.h"
 #include "chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.h"
@@ -38,6 +40,7 @@
 #include "chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h"
 #include "chromeos/constants/chromeos_switches.h"
 #include "chromeos/dbus/update_engine_client.h"
+#include "chromeos/system/fake_statistics_provider.h"
 #include "components/arc/arc_service_manager.h"
 #include "components/arc/arc_util.h"
 #include "components/arc/session/arc_session_runner.h"
@@ -491,6 +494,11 @@
     LOG(INFO) << "OobeInteractiveUITest: LoginDisplayHost is down.";
   }
 
+  void PerformStepsBeforeEnrollmentCheck();
+  void PerformSessionSignInSteps(
+      const ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver&
+          get_auth_token_observer);
+
   void SimpleEndToEnd();
 
   const OobeEndToEndTestSetupMixin* test_setup() const { return &setup_; }
@@ -505,9 +513,7 @@
   DISALLOW_COPY_AND_ASSIGN(OobeInteractiveUITest);
 };
 
-void OobeInteractiveUITest::SimpleEndToEnd() {
-  ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver get_auth_token_observer;
-
+void OobeInteractiveUITest::PerformStepsBeforeEnrollmentCheck() {
   test::WaitForWelcomeScreen();
   RunWelcomeScreenChecks();
   test::TapWelcomeNext();
@@ -524,7 +530,11 @@
 
   test::WaitForUpdateScreen();
   test::ExitUpdateScreenNoUpdate();
+}
 
+void OobeInteractiveUITest::PerformSessionSignInSteps(
+    const ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver&
+        get_auth_token_observer) {
   WaitForGaiaSignInScreen(test_setup()->arc_state() != ArcState::kNotAvailable);
   LogInAsRegularUser();
 
@@ -561,6 +571,12 @@
   }
 
   HandleAssistantOptInScreen();
+}
+
+void OobeInteractiveUITest::SimpleEndToEnd() {
+  ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver get_auth_token_observer;
+  PerformStepsBeforeEnrollmentCheck();
+  PerformSessionSignInSteps(get_auth_token_observer);
 
   WaitForLoginDisplayHostShutdown();
 }
@@ -578,6 +594,64 @@
                                      ArcState::kAcceptTerms,
                                      ArcState::kDeclineTerms)));
 
+class OobeZeroTouchInteractiveUITest : public OobeInteractiveUITest {
+ public:
+  OobeZeroTouchInteractiveUITest() = default;
+  ~OobeZeroTouchInteractiveUITest() override = default;
+
+  void SetUpOnMainThread() override {
+    OobeInteractiveUITest::SetUpOnMainThread();
+    policy_server_.ConfigureFakeStatisticsForZeroTouch(
+        &fake_statistics_provider_);
+  }
+
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    OobeInteractiveUITest::SetUpCommandLine(command_line);
+
+    command_line->AppendSwitchASCII(
+        switches::kEnterpriseEnableInitialEnrollment,
+        AutoEnrollmentController::kInitialEnrollmentAlways);
+  }
+
+  void ZeroTouchEndToEnd();
+
+ private:
+  LocalPolicyTestServerMixin policy_server_{&mixin_host_};
+  test::EnrollmentUIMixin enrollment_ui_{&mixin_host_};
+  system::ScopedFakeStatisticsProvider fake_statistics_provider_;
+
+  DISALLOW_COPY_AND_ASSIGN(OobeZeroTouchInteractiveUITest);
+};
+
+void OobeZeroTouchInteractiveUITest::ZeroTouchEndToEnd() {
+  policy_server_.SetupZeroTouchForcedEnrollment();
+
+  ScopedQuickUnlockPrivateGetAuthTokenFunctionObserver get_auth_token_observer;
+
+  PerformStepsBeforeEnrollmentCheck();
+
+  test::WaitForEnrollmentScreen();
+  enrollment_ui_.WaitForStep(test::ui::kEnrollmentStepSuccess);
+  enrollment_ui_.LeaveSuccessScreen();
+
+  PerformSessionSignInSteps(get_auth_token_observer);
+
+  WaitForLoginDisplayHostShutdown();
+}
+
+IN_PROC_BROWSER_TEST_P(OobeZeroTouchInteractiveUITest, EndToEnd) {
+  ZeroTouchEndToEnd();
+}
+
+INSTANTIATE_TEST_SUITE_P(
+    OobeZeroTouchInteractiveUITestImpl,
+    OobeZeroTouchInteractiveUITest,
+    testing::Combine(testing::Bool(),
+                     testing::Bool(),
+                     testing::Values(ArcState::kNotAvailable,
+                                     ArcState::kAcceptTerms,
+                                     ArcState::kDeclineTerms)));
+
 class PublicSessionOobeTest
     : public MixinBasedInProcessBrowserTest,
       public ::testing::WithParamInterface<std::tuple<bool, bool, ArcState>> {
diff --git a/chrome/browser/chromeos/login/password_change_browsertest.cc b/chrome/browser/chromeos/login/password_change_browsertest.cc
index ff00d937..5cb9abab 100644
--- a/chrome/browser/chromeos/login/password_change_browsertest.cc
+++ b/chrome/browser/chromeos/login/password_change_browsertest.cc
@@ -137,8 +137,10 @@
   SetUpStubAuthentcatorAndAttemptLogin("old user password");
   OobeScreenWaiter(OobeScreen::SCREEN_PASSWORD_CHANGED).Wait();
   OobeWindowVisibilityWaiter(true).Wait();
-  test::OobeJS().CreateVisibilityWaiter(
-      true, {"gaia-password-changed", "oldPasswordCard"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true,
+                              {"gaia-password-changed", "oldPasswordCard"})
+      ->Wait();
 
   // Fill out and submit the old password passed to the stub authenticator.
   test::OobeJS().TypeIntoPath("old user password",
@@ -163,8 +165,10 @@
   SetUpStubAuthentcatorAndAttemptLogin("old user password");
   OobeScreenWaiter(OobeScreen::SCREEN_PASSWORD_CHANGED).Wait();
   OobeWindowVisibilityWaiter(true).Wait();
-  test::OobeJS().CreateVisibilityWaiter(
-      true, {"gaia-password-changed", "oldPasswordCard"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true,
+                              {"gaia-password-changed", "oldPasswordCard"})
+      ->Wait();
 
   // Fill out and submit the old password passed to the stub authenticator.
   test::OobeJS().TypeIntoPath("incorrect old user password",
@@ -209,14 +213,18 @@
   SetUpStubAuthentcatorAndAttemptLogin("old user password");
   OobeScreenWaiter(OobeScreen::SCREEN_PASSWORD_CHANGED).Wait();
   OobeWindowVisibilityWaiter(true).Wait();
-  test::OobeJS().CreateVisibilityWaiter(
-      true, {"gaia-password-changed", "oldPasswordCard"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true,
+                              {"gaia-password-changed", "oldPasswordCard"})
+      ->Wait();
 
   // Click forgot password link.
   test::OobeJS().ClickOnPath({"gaia-password-changed", "forgot-password-link"});
 
-  test::OobeJS().CreateVisibilityWaiter(
-      false, {"gaia-password-changed", "oldPasswordCard"});
+  test::OobeJS()
+      .CreateDisplayedWaiter(false,
+                             {"gaia-password-changed", "oldPasswordCard"})
+      ->Wait();
 
   test::OobeJS().ExpectVisiblePath({"gaia-password-changed", "try-again-link"});
   test::OobeJS().ExpectVisiblePath(
@@ -242,14 +250,17 @@
   SetUpStubAuthentcatorAndAttemptLogin("old user password");
   OobeScreenWaiter(OobeScreen::SCREEN_PASSWORD_CHANGED).Wait();
   OobeWindowVisibilityWaiter(true).Wait();
-  test::OobeJS().CreateVisibilityWaiter(
-      true, {"gaia-password-changed", "oldPasswordCard"});
+  test::OobeJS()
+      .CreateDisplayedWaiter(true, {"gaia-password-changed", "oldPasswordCard"})
+      ->Wait();
 
   // Click forgot password link.
   test::OobeJS().ClickOnPath({"gaia-password-changed", "forgot-password-link"});
 
-  test::OobeJS().CreateVisibilityWaiter(
-      false, {"gaia-password-changed", "oldPasswordCard"});
+  test::OobeJS()
+      .CreateDisplayedWaiter(false,
+                             {"gaia-password-changed", "oldPasswordCard"})
+      ->Wait();
 
   test::OobeJS().ExpectVisiblePath({"gaia-password-changed", "try-again-link"});
   test::OobeJS().ExpectVisiblePath(
@@ -258,8 +269,9 @@
   // Go back to old password input by clicking Try Again.
   test::OobeJS().ClickOnPath({"gaia-password-changed", "try-again-link"});
 
-  test::OobeJS().CreateVisibilityWaiter(
-      true, {"gaia-password-changed", "oldPasswordCard"});
+  test::OobeJS()
+      .CreateDisplayedWaiter(true, {"gaia-password-changed", "oldPasswordCard"})
+      ->Wait();
 
   // Enter and submit the correct password.
   test::OobeJS().TypeIntoPath("old user password",
@@ -283,8 +295,10 @@
 IN_PROC_BROWSER_TEST_F(PasswordChangeTest, ClosePasswordChangedDialog) {
   SetUpStubAuthentcatorAndAttemptLogin("old user password");
   OobeScreenWaiter(OobeScreen::SCREEN_PASSWORD_CHANGED).Wait();
-  test::OobeJS().CreateVisibilityWaiter(
-      true, {"gaia-password-changed", "oldPasswordCard"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true,
+                              {"gaia-password-changed", "oldPasswordCard"})
+      ->Wait();
 
   test::OobeJS().TypeIntoPath("old user password",
                               {"gaia-password-changed", "oldPasswordInput"});
diff --git a/chrome/browser/chromeos/login/reset_browsertest.cc b/chrome/browser/chromeos/login/reset_browsertest.cc
index 2c05b4d..41c7e498 100644
--- a/chrome/browser/chromeos/login/reset_browsertest.cc
+++ b/chrome/browser/chromeos/login/reset_browsertest.cc
@@ -270,7 +270,7 @@
   test::OobeJS().ExpectVisible("reset");
 
   CloseResetScreen();
-  test::OobeJS().CreateVisibilityWaiter(false, {"reset"});
+  test::OobeJS().CreateVisibilityWaiter(false, {"reset"})->Wait();
 }
 
 IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforePowerwash) {
@@ -331,22 +331,22 @@
   InvokeResetScreen();
   EXPECT_TRUE(login_prompt_visible_observer_->signal_emitted());
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"reset"});
+  test::OobeJS().CreateVisibilityWaiter(true, {"reset"})->Wait();
   test::OobeJS().ExpectHidden("overlay-reset");
   CloseResetScreen();
-  test::OobeJS().CreateVisibilityWaiter(false, {"reset"});
+  test::OobeJS().CreateVisibilityWaiter(false, {"reset"})->Wait();
 
   // Go to confirmation phase, cancel from there in 2 steps.
   prefs->SetBoolean(prefs::kFactoryResetRequested, true);
   InvokeResetScreen();
-  test::OobeJS().CreateVisibilityWaiter(false, {"overlay-reset"});
+  test::OobeJS().CreateVisibilityWaiter(false, {"overlay-reset"})->Wait();
   ClickToConfirmButton();
-  test::OobeJS().CreateVisibilityWaiter(true, {"overlay-reset"});
+  test::OobeJS().CreateVisibilityWaiter(true, {"overlay-reset"})->Wait();
   ClickDismissConfirmationButton();
-  test::OobeJS().CreateVisibilityWaiter(false, {"overlay-reset"});
-  test::OobeJS().CreateVisibilityWaiter(true, {"reset"});
+  test::OobeJS().CreateVisibilityWaiter(false, {"overlay-reset"})->Wait();
+  test::OobeJS().CreateVisibilityWaiter(true, {"reset"})->Wait();
   CloseResetScreen();
-  test::OobeJS().CreateVisibilityWaiter(false, {"reset"});
+  test::OobeJS().CreateVisibilityWaiter(false, {"reset"})->Wait();
 
   // Rollback available. Show and cancel from confirmation screen.
   update_engine_client_->set_can_rollback_check_result(true);
@@ -355,12 +355,12 @@
   InvokeRollbackOption();
   test::OobeJS().ExpectHidden("overlay-reset");
   ClickToConfirmButton();
-  test::OobeJS().CreateVisibilityWaiter(true, {"overlay-reset"});
+  test::OobeJS().CreateVisibilityWaiter(true, {"overlay-reset"})->Wait();
   ClickDismissConfirmationButton();
-  test::OobeJS().CreateVisibilityWaiter(false, {"overlay-reset"});
+  test::OobeJS().CreateVisibilityWaiter(false, {"overlay-reset"})->Wait();
   test::OobeJS().ExpectVisible("reset");
   CloseResetScreen();
-  test::OobeJS().CreateVisibilityWaiter(false, {"reset"});
+  test::OobeJS().CreateVisibilityWaiter(false, {"reset"})->Wait();
 }
 
 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShowAfterBootIfRequested) {
diff --git a/chrome/browser/chromeos/login/saml/in_session_password_change_manager.cc b/chrome/browser/chromeos/login/saml/in_session_password_change_manager.cc
index f9bb28e..23602b9 100644
--- a/chrome/browser/chromeos/login/saml/in_session_password_change_manager.cc
+++ b/chrome/browser/chromeos/login/saml/in_session_password_change_manager.cc
@@ -8,7 +8,7 @@
 #include "chrome/browser/chromeos/login/saml/saml_password_expiry_notification.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/webui/chromeos/insession_password_change_ui.h"
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/login/auth/user_context.h"
 #include "components/prefs/pref_service.h"
@@ -22,8 +22,11 @@
   if (primary_profile->GetPrefs()->GetBoolean(
           prefs::kSamlInSessionPasswordChangeEnabled)) {
     return std::make_unique<InSessionPasswordChangeManager>(primary_profile);
+  } else {
+    // If the policy is disabled, clear the SAML password attributes.
+    SamlPasswordAttributes::DeleteFromPrefs(primary_profile->GetPrefs());
+    return nullptr;
   }
-  return nullptr;
 }
 
 InSessionPasswordChangeManager::InSessionPasswordChangeManager(
@@ -41,6 +44,32 @@
   PasswordChangeDialog::Show(primary_profile_);
 }
 
+void InSessionPasswordChangeManager::OnSamlPasswordChanged(
+    const std::string& scraped_old_password,
+    const std::string& scraped_new_password) {
+  user_manager::UserManager::Get()->SaveForceOnlineSignin(
+      primary_user_->GetAccountId(), true);
+  PasswordChangeDialog::Dismiss();
+
+  const bool both_passwords_scraped =
+      !scraped_old_password.empty() && !scraped_new_password.empty();
+  if (both_passwords_scraped) {
+    // Both passwords scraped so we try to change cryptohome password now.
+    // Show the confirm dialog but initially showing a spinner. If the change
+    // fails, then the dialog will hide the spinner and show a prompt.
+    // If the change succeeds, the dialog and spinner will just disappear.
+    ConfirmPasswordChangeDialog::Show(scraped_old_password,
+                                      scraped_new_password,
+                                      /*show_spinner_initially=*/true);
+    ChangePassword(scraped_old_password, scraped_new_password);
+  } else {
+    // Failed to scrape passwords - prompt for passwords immediately.
+    ConfirmPasswordChangeDialog::Show(scraped_old_password,
+                                      scraped_new_password,
+                                      /*show_spinner_initially=*/false);
+  }
+}
+
 void InSessionPasswordChangeManager::ChangePassword(
     const std::string& old_password,
     const std::string& new_password) {
@@ -49,11 +78,12 @@
   authenticator_->MigrateKey(user_context, old_password);
 }
 
-void InSessionPasswordChangeManager::HandlePasswordScrapeFailure() {
-  // TODO(https://crbug.com/930109): Show different versions of the dialog
-  // depending on whether any usable passwords were scraped.
-  PasswordChangeDialog::Dismiss();
-  ConfirmPasswordChangeDialog::Show();
+void InSessionPasswordChangeManager::AddObserver(Observer* observer) {
+  observer_list_.AddObserver(observer);
+}
+
+void InSessionPasswordChangeManager::RemoveObserver(Observer* observer) {
+  observer_list_.RemoveObserver(observer);
 }
 
 void InSessionPasswordChangeManager::OnAuthSuccess(
@@ -77,8 +107,14 @@
 }
 
 void InSessionPasswordChangeManager::OnAuthFailure(const AuthFailure& error) {
-  // TODO(https://crbug.com/930109): Ask user for the old password.
   VLOG(1) << "Failed to change cryptohome password: " << error.GetErrorString();
+  NotifyObservers(CHANGE_PASSWORD_AUTH_FAILURE);
+}
+
+void InSessionPasswordChangeManager::NotifyObservers(Event event) {
+  for (auto& observer : observer_list_) {
+    observer.OnEvent(event);
+  }
 }
 
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/saml/in_session_password_change_manager.h b/chrome/browser/chromeos/login/saml/in_session_password_change_manager.h
index 34b47ea..041fe69 100644
--- a/chrome/browser/chromeos/login/saml/in_session_password_change_manager.h
+++ b/chrome/browser/chromeos/login/saml/in_session_password_change_manager.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/memory/scoped_refptr.h"
+#include "base/observer_list.h"
 #include "chromeos/login/auth/auth_status_consumer.h"
 
 class Profile;
@@ -25,6 +26,18 @@
 // response from dialogs, and callbacks from subsystems.
 class InSessionPasswordChangeManager : public AuthStatusConsumer {
  public:
+  // Events in the in-session SAML password change flow.
+  enum Event {
+    CHANGE_PASSWORD_AUTH_FAILURE,
+    // TODO(https://crbug.com/930109): Add more useful events.
+  };
+
+  // Observers of InSessionPasswordChangeManager are notified of certain events.
+  class Observer : public base::CheckedObserver {
+   public:
+    virtual void OnEvent(Event event) = 0;
+  };
+
   // Returns null if in-session password change is disabled.
   static std::unique_ptr<InSessionPasswordChangeManager> CreateIfEnabled(
       Profile* primary_profile);
@@ -36,6 +49,12 @@
   // the user's SAML IdP change-password page:
   void StartInSessionPasswordChange();
 
+  // Handle a SAML password change. |old_password| and |new_password| can be
+  // empty if scraping failed, in which case the user will be prompted to enter
+  // them again. If they are scraped, this calls ChangePassword immediately,
+  void OnSamlPasswordChanged(const std::string& scraped_old_password,
+                             const std::string& scraped_new_password);
+
   // Change cryptohome password for primary user.
   void ChangePassword(const std::string& old_password,
                       const std::string& new_password);
@@ -44,13 +63,19 @@
   // by showing a dialog for the user to confirm their old + new password.
   void HandlePasswordScrapeFailure();
 
+  void AddObserver(Observer* observer);
+  void RemoveObserver(Observer* observer);
+
   // AuthStatusConsumer:
   void OnAuthFailure(const AuthFailure& error) override;
   void OnAuthSuccess(const UserContext& user_context) override;
 
  private:
+  void NotifyObservers(Event event);
+
   Profile* primary_profile_;
   const user_manager::User* primary_user_;
+  base::ObserverList<Observer> observer_list_;
 
   scoped_refptr<CryptohomeAuthenticator> authenticator_;
 
diff --git a/chrome/browser/chromeos/login/saml/saml_password_expiry_notification.cc b/chrome/browser/chromeos/login/saml/saml_password_expiry_notification.cc
index bc28e4b..697e69bc 100644
--- a/chrome/browser/chromeos/login/saml/saml_password_expiry_notification.cc
+++ b/chrome/browser/chromeos/login/saml/saml_password_expiry_notification.cc
@@ -19,7 +19,7 @@
 #include "chrome/browser/notifications/notification_display_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/ui/webui/chromeos/insession_password_change_ui.h"
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/login/auth/saml_password_attributes.h"
 #include "chromeos/strings/grit/chromeos_strings.h"
@@ -78,7 +78,7 @@
 const int kCriticalWarningDays = 3;
 
 base::string16 GetTitleText(int less_than_n_days) {
-  return l10n_util::GetPluralStringFUTF16(IDS_PASSWORD_EXPIRY_DAYS_BODY,
+  return l10n_util::GetPluralStringFUTF16(IDS_PASSWORD_EXPIRY_DAYS_TITLE,
                                           less_than_n_days);
 }
 
diff --git a/chrome/browser/chromeos/login/saml/saml_password_expiry_notification_unittest.cc b/chrome/browser/chromeos/login/saml/saml_password_expiry_notification_unittest.cc
index 50f46943..077b9df3 100644
--- a/chrome/browser/chromeos/login/saml/saml_password_expiry_notification_unittest.cc
+++ b/chrome/browser/chromeos/login/saml/saml_password_expiry_notification_unittest.cc
@@ -104,10 +104,8 @@
   ShowSamlPasswordExpiryNotification(profile_, 0);
   ASSERT_TRUE(Notification().has_value());
 
-  EXPECT_EQ(utf16("Your current password has expired!"),
-            Notification()->title());
-  EXPECT_EQ(utf16("Please choose a new password immediately"),
-            Notification()->message());
+  EXPECT_EQ(utf16("Password is expired"), Notification()->title());
+  EXPECT_EQ(utf16("Choose a new one immediately"), Notification()->message());
 
   DismissSamlPasswordExpiryNotification(profile_);
   EXPECT_FALSE(Notification().has_value());
@@ -117,10 +115,9 @@
   ShowSamlPasswordExpiryNotification(profile_, 14);
   ASSERT_TRUE(Notification().has_value());
 
-  EXPECT_EQ(utf16("Your current password will expire in less than 14 days!"),
+  EXPECT_EQ(utf16("Password expires in less than 14 days"),
             Notification()->title());
-  EXPECT_EQ(utf16("Please choose a new password now"),
-            Notification()->message());
+  EXPECT_EQ(utf16("Choose a new one now"), Notification()->message());
 
   DismissSamlPasswordExpiryNotification(profile_);
   EXPECT_FALSE(Notification().has_value());
@@ -151,8 +148,7 @@
 
   // Notification is shown immediately since password has expired.
   EXPECT_TRUE(Notification().has_value());
-  EXPECT_EQ(utf16("Your current password has expired!"),
-            Notification()->title());
+  EXPECT_EQ(utf16("Password is expired"), Notification()->title());
 }
 
 TEST_F(SamlPasswordExpiryNotificationTest, MaybeShow_WillSoonExpire) {
@@ -161,7 +157,7 @@
 
   // Notification is shown immediately since password will soon expire.
   EXPECT_TRUE(Notification().has_value());
-  EXPECT_EQ(utf16("Your current password will expire in less than 7 days!"),
+  EXPECT_EQ(utf16("Password expires in less than 7 days"),
             Notification()->title());
 }
 
@@ -175,7 +171,7 @@
   // But, it will be shown once we are in the advance warning window:
   test_environment_.FastForwardBy(kOneYear + kOneHour);
   EXPECT_TRUE(Notification().has_value());
-  EXPECT_EQ(utf16("Your current password will expire in less than 14 days!"),
+  EXPECT_EQ(utf16("Password expires in less than 14 days"),
             Notification()->title());
 }
 
@@ -198,7 +194,7 @@
 
   // Notification is shown immediately since password will soon expire.
   EXPECT_TRUE(Notification().has_value());
-  EXPECT_EQ(utf16("Your current password will expire in less than 7 days!"),
+  EXPECT_EQ(utf16("Password expires in less than 7 days"),
             Notification()->title());
 
   // Password is changed and notification is dismissed.
@@ -243,32 +239,26 @@
   // But the next day, the notification is shown.
   test_environment_.FastForwardBy(kOneDay);
   EXPECT_TRUE(Notification().has_value());
-  EXPECT_EQ(utf16("Your current password will expire in less than 14 days!"),
+  EXPECT_EQ(utf16("Password expires in less than 14 days"),
             Notification()->title());
-  EXPECT_EQ(utf16("Please choose a new password now"),
-            Notification()->message());
+  EXPECT_EQ(utf16("Choose a new one now"), Notification()->message());
 
   // As time passes, the notification updates each day.
   test_environment_.FastForwardBy(kAdvanceWarningTime / 2);
   EXPECT_TRUE(Notification().has_value());
-  EXPECT_EQ(utf16("Your current password will expire in less than 7 days!"),
+  EXPECT_EQ(utf16("Password expires in less than 7 days"),
             Notification()->title());
-  EXPECT_EQ(utf16("Please choose a new password now"),
-            Notification()->message());
+  EXPECT_EQ(utf16("Choose a new one now"), Notification()->message());
 
   test_environment_.FastForwardBy(kAdvanceWarningTime / 2);
   EXPECT_TRUE(Notification().has_value());
-  EXPECT_EQ(utf16("Your current password has expired!"),
-            Notification()->title());
-  EXPECT_EQ(utf16("Please choose a new password immediately"),
-            Notification()->message());
+  EXPECT_EQ(utf16("Password is expired"), Notification()->title());
+  EXPECT_EQ(utf16("Choose a new one immediately"), Notification()->message());
 
   test_environment_.FastForwardBy(kOneYear);
   EXPECT_TRUE(Notification().has_value());
-  EXPECT_EQ(utf16("Your current password has expired!"),
-            Notification()->title());
-  EXPECT_EQ(utf16("Please choose a new password immediately"),
-            Notification()->message());
+  EXPECT_EQ(utf16("Password is expired"), Notification()->title());
+  EXPECT_EQ(utf16("Choose a new one immediately"), Notification()->message());
 }
 
 TEST_F(SamlPasswordExpiryNotificationTest, TimePasses_NotificationDismissed) {
diff --git a/chrome/browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc
index fcecfdf..093b871 100644
--- a/chrome/browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc
@@ -238,7 +238,9 @@
   screen_waiter.Wait();
 
   // Wait for loading screen.
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-loading"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-screen");
 
   std::vector<FakeAppInfo> test_apps = {
@@ -247,7 +249,9 @@
       FakeAppInfo("test.app.foo.app3", "Test app 3")};
   recommend_apps_fetcher_->SimulateSuccess(test_apps);
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-loading");
 
   const std::string webview_path =
@@ -305,7 +309,9 @@
   screen_waiter.Wait();
 
   // Wait for loading screen.
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-loading"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-screen");
 
   std::vector<FakeAppInfo> test_apps = {
@@ -314,7 +320,9 @@
       FakeAppInfo("test.app.foo.app3", "Test app 3")};
   recommend_apps_fetcher_->SimulateSuccess(test_apps);
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-loading");
 
   const std::string webview_path =
@@ -373,7 +381,9 @@
   screen_waiter.Wait();
 
   // Wait for loading screen.
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-loading"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-screen");
 
   std::vector<FakeAppInfo> test_apps = {
@@ -382,7 +392,9 @@
       FakeAppInfo("test.app.foo.app3", "Test app 3")};
   recommend_apps_fetcher_->SimulateSuccess(test_apps);
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-loading");
 
   const std::string webview_path =
@@ -435,7 +447,9 @@
   screen_waiter.Wait();
 
   // Wait for loading screen.
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-loading"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-screen");
 
   std::vector<FakeAppInfo> test_apps = {
@@ -444,7 +458,9 @@
       FakeAppInfo("test.app.foo.app3", "Test app 3")};
   recommend_apps_fetcher_->SimulateSuccess(test_apps);
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-loading");
 
   const std::string webview_path =
@@ -503,14 +519,18 @@
   screen_waiter.Wait();
 
   // Wait for loading screen.
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-loading"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-screen");
 
   std::vector<FakeAppInfo> test_apps = {
       FakeAppInfo("test.app.foo.app1", "Test app 1")};
   recommend_apps_fetcher_->SimulateSuccess(test_apps);
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-loading");
 
   const std::string webview_path =
@@ -545,12 +565,16 @@
   screen_waiter.Wait();
 
   // Wait for loading screen.
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-loading"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-screen");
 
   recommend_apps_fetcher_->SimulateSuccess(std::vector<FakeAppInfo>());
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-loading");
 
   const std::initializer_list<base::StringPiece> install_button = {
@@ -588,7 +612,9 @@
   screen_waiter.Wait();
 
   // Wait for loading screen.
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-loading"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-screen");
 
   recommend_apps_fetcher_->SimulateParseError();
@@ -606,12 +632,16 @@
   screen_waiter.Wait();
 
   // Wait for loading screen.
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-loading"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-screen");
 
   recommend_apps_fetcher_->SimulateLoadError();
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-loading");
 
   const std::initializer_list<base::StringPiece> install_button = {
@@ -648,12 +678,16 @@
   screen_waiter.Wait();
 
   // Wait for loading screen.
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-loading"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-loading"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-screen");
 
   recommend_apps_fetcher_->SimulateLoadError();
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-loading");
 
   const std::initializer_list<base::StringPiece> install_button = {
@@ -673,14 +707,18 @@
 
   EXPECT_EQ(1, recommend_apps_fetcher_->retries());
 
-  test::OobeJS().CreateVisibilityWaiter(false, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(false, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectVisible("recommend-apps-loading");
 
   std::vector<FakeAppInfo> test_apps = {
       FakeAppInfo("test.app.foo.app1", "Test app 1")};
   recommend_apps_fetcher_->SimulateSuccess(test_apps);
 
-  test::OobeJS().CreateVisibilityWaiter(true, {"recommend-apps-screen"});
+  test::OobeJS()
+      .CreateVisibilityWaiter(true, {"recommend-apps-screen"})
+      ->Wait();
   test::OobeJS().ExpectHidden("recommend-apps-loading");
 
   const std::string webview_path =
diff --git a/chrome/browser/chromeos/login/screens/supervision_transition_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/supervision_transition_screen_browsertest.cc
index 9a48344..19f1459 100644
--- a/chrome/browser/chromeos/login/screens/supervision_transition_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/supervision_transition_screen_browsertest.cc
@@ -80,9 +80,13 @@
     if (user.user_type == user_manager::USER_TYPE_CHILD) {
       fake_gaia_.SetupFakeGaiaForChildUser(
           user.account_id.GetUserEmail(), user.account_id.GetGaiaId(),
-          "refresh-token", false /*issue_any_scope_token*/);
-      user_context.SetRefreshToken("refresh-token");
+          FakeGaiaMixin::kFakeRefreshToken, false /*issue_any_scope_token*/);
+    } else {
+      fake_gaia_.SetupFakeGaiaForLogin(user.account_id.GetUserEmail(),
+                                       user.account_id.GetGaiaId(),
+                                       FakeGaiaMixin::kFakeRefreshToken);
     }
+    user_context.SetRefreshToken(FakeGaiaMixin::kFakeRefreshToken);
     login_manager_.AttemptLoginUsingAuthenticator(
         user_context, std::make_unique<StubAuthenticatorBuilder>(user_context));
   }
diff --git a/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
index 6f1c4fc..3a6a4d0 100644
--- a/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/screens/welcome_screen_browsertest.cc
@@ -41,7 +41,7 @@
   js.ExpectVisiblePath({"connect", feature_name, "button"});
   EXPECT_FALSE(js.GetBool(feature_toggle));
   js.TapOnPath({"connect", feature_name, "button"});
-  js.CreateWaiter(feature_toggle);
+  js.CreateWaiter(feature_toggle)->Wait();
 }
 
 }  // namespace
diff --git a/chrome/browser/chromeos/login/test/enrollment_ui_mixin.cc b/chrome/browser/chromeos/login/test/enrollment_ui_mixin.cc
index 3ea80fd..bb299bb 100644
--- a/chrome/browser/chromeos/login/test/enrollment_ui_mixin.cc
+++ b/chrome/browser/chromeos/login/test/enrollment_ui_mixin.cc
@@ -55,6 +55,9 @@
 const std::initializer_list<base::StringPiece> kEnrollmentErrorButtonPath = {
     kEnrollmentUI, "oauth-enroll-error-card", "submitButton"};
 
+const std::initializer_list<base::StringPiece> kEnrollmentSuccessButtonPath = {
+    kEnrollmentUI, "success-done-button"};
+
 }  // namespace
 
 EnrollmentUIMixin::EnrollmentUIMixin(InProcessBrowserTestMixinHost* host)
@@ -116,6 +119,10 @@
   OobeJS().ClickOnPath(kEnrollmentErrorButtonPath);
 }
 
+void EnrollmentUIMixin::LeaveSuccessScreen() {
+  OobeJS().ClickOnPath(kEnrollmentSuccessButtonPath);
+}
+
 void EnrollmentUIMixin::SubmitDeviceAttributes(const std::string& asset_id,
                                                const std::string& location) {
   OobeJS().TypeIntoPath(asset_id, {kEnrollmentUI, "oauth-enroll-asset-id"});
diff --git a/chrome/browser/chromeos/login/test/enrollment_ui_mixin.h b/chrome/browser/chromeos/login/test/enrollment_ui_mixin.h
index 5319574..59f3b6a 100644
--- a/chrome/browser/chromeos/login/test/enrollment_ui_mixin.h
+++ b/chrome/browser/chromeos/login/test/enrollment_ui_mixin.h
@@ -65,6 +65,8 @@
 
   void LeaveDeviceAttributeErrorScreen();
 
+  void LeaveSuccessScreen();
+
   // Selects enrollment license.
   void SelectEnrollmentLicense(const std::string& license_type);
 
diff --git a/chrome/browser/chromeos/login/test/js_checker.h b/chrome/browser/chromeos/login/test/js_checker.h
index 3c2ae92..de5104d3 100644
--- a/chrome/browser/chromeos/login/test/js_checker.h
+++ b/chrome/browser/chromeos/login/test/js_checker.h
@@ -9,6 +9,7 @@
 #include <memory>
 #include <string>
 
+#include "base/compiler_specific.h"
 #include "base/memory/weak_ptr.h"
 #include "base/strings/string_piece.h"
 
@@ -57,28 +58,28 @@
 
   // Checks test waiter that would await until |js_condition| evaluates
   // to true.
-  std::unique_ptr<TestConditionWaiter> CreateWaiter(
+  WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter> CreateWaiter(
       const std::string& js_condition);
 
   // Waiter that waits until specified element is (not) hidden.
-  std::unique_ptr<TestConditionWaiter> CreateVisibilityWaiter(
-      bool visibility,
-      std::initializer_list<base::StringPiece> element_ids);
+  WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter>
+  CreateVisibilityWaiter(bool visibility,
+                         std::initializer_list<base::StringPiece> element_ids);
 
   // Waiter that waits until specified element is (not) displayed with non-zero
   // size.
-  std::unique_ptr<TestConditionWaiter> CreateDisplayedWaiter(
+  WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter> CreateDisplayedWaiter(
       bool displayed,
       std::initializer_list<base::StringPiece> element_ids);
 
   // Waiter that waits until an element is enabled or disabled.
-  std::unique_ptr<TestConditionWaiter> CreateEnabledWaiter(
+  WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter> CreateEnabledWaiter(
       bool enabled,
       std::initializer_list<base::StringPiece> element_ids);
 
   // Waiter that waits until the specified element's class list contains, or
   // doesn't contain the specified class.
-  std::unique_ptr<TestConditionWaiter> CreateHasClassWaiter(
+  WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter> CreateHasClassWaiter(
       bool has_class,
       const std::string& css_class,
       std::initializer_list<base::StringPiece> element_ids);
@@ -173,7 +174,7 @@
 
 // Creates a waiter that allows to wait until screen with |oobe_screen_id| is
 // shown in webui.
-std::unique_ptr<TestConditionWaiter> CreateOobeScreenWaiter(
+WARN_UNUSED_RESULT std::unique_ptr<TestConditionWaiter> CreateOobeScreenWaiter(
     const std::string& oobe_screen_id);
 
 }  // namespace test
diff --git a/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.cc b/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.cc
index f6fb18bfe..c4c2241 100644
--- a/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.cc
+++ b/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.cc
@@ -14,6 +14,7 @@
 #include "chromeos/attestation/mock_attestation_flow.h"
 #include "chromeos/cryptohome/async_method_caller.h"
 #include "chromeos/dbus/cryptohome/fake_cryptohome_client.h"
+#include "chromeos/system/fake_statistics_provider.h"
 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
 #include "components/policy/core/common/cloud/policy_builder.h"
 #include "components/policy/core/common/policy_switches.h"
@@ -235,6 +236,27 @@
   return true;
 }
 
+void LocalPolicyTestServerMixin::SetupZeroTouchForcedEnrollment() {
+  SetFakeAttestationFlow();
+  auto initial_enrollment =
+      enterprise_management::DeviceInitialEnrollmentStateResponse::
+          INITIAL_ENROLLMENT_MODE_ZERO_TOUCH_ENFORCED;
+  SetUpdateDeviceAttributesPermission(false);
+  SetDeviceInitialEnrollmentResponse(
+      test::kTestRlzBrandCodeKey, test::kTestSerialNumber, initial_enrollment,
+      test::kTestDomain, base::nullopt /* is_license_packaged_with_device */);
+}
+
+void LocalPolicyTestServerMixin::ConfigureFakeStatisticsForZeroTouch(
+    system::ScopedFakeStatisticsProvider* provider) {
+  provider->SetMachineStatistic(system::kRlzBrandCodeKey,
+                                test::kTestRlzBrandCodeKey);
+  provider->SetMachineStatistic(system::kSerialNumberKeyForTest,
+                                test::kTestSerialNumber);
+  provider->SetMachineStatistic(system::kHardwareClassKey,
+                                test::kTestHardwareClass);
+}
+
 LocalPolicyTestServerMixin::~LocalPolicyTestServerMixin() = default;
 
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h b/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h
index 5f3c458..7da645e 100644
--- a/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h
+++ b/chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h
@@ -19,6 +19,20 @@
 
 namespace chromeos {
 
+namespace system {
+class ScopedFakeStatisticsProvider;
+}  // namespace system
+
+namespace test {
+
+// Test constants used during enrollment wherever appropriate.
+constexpr char kTestDomain[] = "test-domain.com";
+constexpr char kTestRlzBrandCodeKey[] = "TEST";
+constexpr char kTestSerialNumber[] = "111111";
+constexpr char kTestHardwareClass[] = "hw";
+
+}  // namespace test
+
 // This test mixin covers setting up LocalPolicyTestServer and adding a
 // command-line flag to use it. Please see SetUp function for default settings.
 // Server is started after SetUp execution.
@@ -88,6 +102,16 @@
       const base::Optional<std::string>& management_domain,
       const base::Optional<bool> is_license_packaged_with_device);
 
+  // Utility function that configures server parameters for zero-touch
+  // enrollment. Should be used in conjunction with enabling zero-touch
+  // via command line and calling |ConfigureFakeStatisticsForZeroTouch|.
+  void SetupZeroTouchForcedEnrollment();
+
+  // Configures fake statistics provider with values that can be used with
+  // zero-touch enrollment.
+  void ConfigureFakeStatisticsForZeroTouch(
+      system::ScopedFakeStatisticsProvider* provider);
+
  private:
   std::unique_ptr<policy::LocalPolicyTestServer> policy_test_server_;
   base::Value server_config_;
diff --git a/chrome/browser/chromeos/login/test/oobe_screens_utils.cc b/chrome/browser/chromeos/login/test/oobe_screens_utils.cc
index 1300183..e7b7038 100644
--- a/chrome/browser/chromeos/login/test/oobe_screens_utils.cc
+++ b/chrome/browser/chromeos/login/test/oobe_screens_utils.cc
@@ -137,6 +137,10 @@
   WaitFor(EnrollmentScreenView::kScreenId);
 }
 
+void WaitForEnrollmentScreen() {
+  WaitFor(EnrollmentScreenView::kScreenId);
+}
+
 #if defined(GOOGLE_CHROME_BUILD)
 void WaitForEulaScreen() {
   WaitFor(EulaView::kScreenId);
diff --git a/chrome/browser/chromeos/login/test/oobe_screens_utils.h b/chrome/browser/chromeos/login/test/oobe_screens_utils.h
index 678cdc6..8e3943b 100644
--- a/chrome/browser/chromeos/login/test/oobe_screens_utils.h
+++ b/chrome/browser/chromeos/login/test/oobe_screens_utils.h
@@ -20,6 +20,7 @@
 void WaitForDiscoverScreen();
 void ExitDiscoverPinSetupScreen();
 void SkipToEnrollmentOnRecovery();
+void WaitForEnrollmentScreen();
 
 #if defined(GOOGLE_CHROME_BUILD)
 void WaitForEulaScreen();
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
index c8f4db3..fd21a6f 100644
--- a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
@@ -52,9 +52,12 @@
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
 #include "chrome/browser/chromeos/policy/device_network_configuration_updater.h"
 #include "chrome/browser/chromeos/policy/external_data_handlers/native_printers_external_data_handler.h"
+#include "chrome/browser/chromeos/policy/external_data_handlers/print_servers_external_data_handler.h"
 #include "chrome/browser/chromeos/policy/external_data_handlers/user_avatar_image_external_data_handler.h"
 #include "chrome/browser/chromeos/policy/external_data_handlers/wallpaper_image_external_data_handler.h"
 #include "chrome/browser/chromeos/printing/bulk_printers_calculator_factory.h"
+#include "chrome/browser/chromeos/printing/print_servers_provider.h"
+#include "chrome/browser/chromeos/printing/print_servers_provider_factory.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/chromeos/session_length_limiter.h"
 #include "chrome/browser/chromeos/settings/cros_settings.h"
@@ -392,6 +395,9 @@
   cloud_external_data_policy_handlers_.emplace_back(
       std::make_unique<policy::NativePrintersExternalDataHandler>(
           cros_settings_, device_local_account_policy_service));
+  cloud_external_data_policy_handlers_.emplace_back(
+      std::make_unique<policy::PrintServersExternalDataHandler>(
+          cros_settings_, device_local_account_policy_service));
 
   // Record the stored session length for enrolled device.
   if (IsEnterpriseManaged())
diff --git a/chrome/browser/chromeos/night_light/night_light_client.cc b/chrome/browser/chromeos/night_light/night_light_client.cc
index 559dacbb..9209c0bb 100644
--- a/chrome/browser/chromeos/night_light/night_light_client.cc
+++ b/chrome/browser/chromeos/night_light/night_light_client.cc
@@ -6,13 +6,11 @@
 
 #include <algorithm>
 
-#include "ash/public/interfaces/constants.mojom.h"
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/time/clock.h"
 #include "content/public/browser/system_connector.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
-#include "services/service_manager/public/cpp/connector.h"
 
 namespace {
 
@@ -36,11 +34,13 @@
     : provider_(
           std::move(factory),
           chromeos::SimpleGeolocationProvider::DefaultGeolocationProviderURL()),
-      binding_(this),
+      night_light_controller_(ash::NightLightController::GetInstance()),
       backoff_delay_(kMinimumDelayAfterFailure),
       timer_(std::make_unique<base::OneShotTimer>()) {}
 
 NightLightClient::~NightLightClient() {
+  if (night_light_controller_)
+    night_light_controller_->RemoveObserver(this);
   chromeos::system::TimezoneSettings::GetInstance()->RemoveObserver(this);
 }
 
@@ -48,20 +48,12 @@
   auto* timezone_settings = chromeos::system::TimezoneSettings::GetInstance();
   current_timezone_id_ = timezone_settings->GetCurrentTimezoneID();
   timezone_settings->AddObserver(this);
-
-  if (!night_light_controller_) {
-    content::GetSystemConnector()->BindInterface(ash::mojom::kServiceName,
-                                                 &night_light_controller_);
-  }
-  ash::mojom::NightLightClientPtr client;
-  binding_.Bind(mojo::MakeRequest(&client));
-  night_light_controller_->SetClient(std::move(client));
+  night_light_controller_->AddObserver(this);
 }
 
 void NightLightClient::OnScheduleTypeChanged(
-    ash::mojom::NightLightController::ScheduleType new_type) {
-  if (new_type !=
-      ash::mojom::NightLightController::ScheduleType::kSunsetToSunrise) {
+    ash::NightLightController::ScheduleType new_type) {
+  if (new_type != ash::NightLightController::ScheduleType::kSunsetToSunrise) {
     using_geoposition_ = false;
     timer_->Stop();
     return;
@@ -106,15 +98,6 @@
   return kNextRequestDelayAfterSuccess;
 }
 
-void NightLightClient::SetNightLightControllerPtrForTesting(
-    ash::mojom::NightLightControllerPtr controller) {
-  night_light_controller_ = std::move(controller);
-}
-
-void NightLightClient::FlushNightLightControllerForTesting() {
-  night_light_controller_.FlushForTesting();
-}
-
 void NightLightClient::SetTimerForTesting(
     std::unique_ptr<base::OneShotTimer> timer) {
   timer_ = std::move(timer);
@@ -169,7 +152,7 @@
 
 void NightLightClient::SendCurrentGeoposition() {
   night_light_controller_->SetCurrentGeoposition(
-      ash::mojom::SimpleGeoposition::New(latitude_, longitude_));
+      ash::NightLightController::SimpleGeoposition{latitude_, longitude_});
 }
 
 void NightLightClient::ScheduleNextRequest(base::TimeDelta delay) {
diff --git a/chrome/browser/chromeos/night_light/night_light_client.h b/chrome/browser/chromeos/night_light/night_light_client.h
index d6f144c..6377d5df 100644
--- a/chrome/browser/chromeos/night_light/night_light_client.h
+++ b/chrome/browser/chromeos/night_light/night_light_client.h
@@ -7,14 +7,14 @@
 
 #include <memory>
 
-#include "ash/public/interfaces/night_light_controller.mojom.h"
+#include "ash/public/cpp/night_light_controller.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/strings/string16.h"
+#include "base/time/time.h"
 #include "base/timer/timer.h"
 #include "chromeos/geolocation/simple_geolocation_provider.h"
 #include "chromeos/settings/timezone_settings.h"
-#include "mojo/public/cpp/bindings/binding.h"
 
 namespace base {
 class Clock;
@@ -26,7 +26,7 @@
 
 // Periodically requests the IP-based geolocation and provides it to the
 // NightLightController running in ash.
-class NightLightClient : public ash::mojom::NightLightClient,
+class NightLightClient : public ash::NightLightController::Observer,
                          public chromeos::system::TimezoneSettings::Observer {
  public:
   explicit NightLightClient(
@@ -38,9 +38,9 @@
   // long as the type is set to "sunset to sunrise".
   void Start();
 
-  // ash::mojom::NightLightClient:
+  // ash::NightLightController::Observer:
   void OnScheduleTypeChanged(
-      ash::mojom::NightLightController::ScheduleType new_type) override;
+      ash::NightLightController::ScheduleType new_type) override;
 
   // chromeos::system::TimezoneSettings::Observer:
   void TimezoneChanged(const icu::TimeZone& timezone) override;
@@ -59,11 +59,6 @@
 
   static base::TimeDelta GetNextRequestDelayAfterSuccessForTesting();
 
-  void SetNightLightControllerPtrForTesting(
-      ash::mojom::NightLightControllerPtr controller);
-
-  void FlushNightLightControllerForTesting();
-
   void SetTimerForTesting(std::unique_ptr<base::OneShotTimer> timer);
 
   void SetClockForTesting(base::Clock* clock);
@@ -90,8 +85,7 @@
   // The IP-based geolocation provider.
   chromeos::SimpleGeolocationProvider provider_;
 
-  ash::mojom::NightLightControllerPtr night_light_controller_;
-  mojo::Binding<ash::mojom::NightLightClient> binding_;
+  ash::NightLightController* night_light_controller_ = nullptr;
 
   // Delay after which a new request is retried after a failed one.
   base::TimeDelta backoff_delay_;
diff --git a/chrome/browser/chromeos/night_light/night_light_client_unittest.cc b/chrome/browser/chromeos/night_light/night_light_client_unittest.cc
index db2e911..5b92bb8 100644
--- a/chrome/browser/chromeos/night_light/night_light_client_unittest.cc
+++ b/chrome/browser/chromeos/night_light/night_light_client_unittest.cc
@@ -4,13 +4,12 @@
 
 #include "chrome/browser/chromeos/night_light/night_light_client.h"
 
-#include "ash/public/interfaces/night_light_controller.mojom.h"
+#include "ash/public/cpp/night_light_controller.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_task_environment.h"
 #include "base/time/clock.h"
 #include "base/time/tick_clock.h"
 #include "base/timer/timer.h"
-#include "mojo/public/cpp/bindings/binding.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/icu/source/common/unicode/unistr.h"
@@ -18,7 +17,8 @@
 
 namespace {
 
-using ScheduleType = ash::mojom::NightLightController::ScheduleType;
+using ScheduleType = ash::NightLightController::ScheduleType;
+using SimpleGeoposition = ash::NightLightController::SimpleGeoposition;
 
 // Constructs a TimeZone object from the given |timezone_id|.
 std::unique_ptr<icu::TimeZone> CreateTimezone(const char* timezone_id) {
@@ -31,41 +31,28 @@
 }
 
 // A fake implementation of NightLightController for testing.
-class FakeNightLightController : public ash::mojom::NightLightController {
+class FakeNightLightController : public ash::NightLightController {
  public:
-  FakeNightLightController() : binding_(this) {}
+  FakeNightLightController() = default;
   ~FakeNightLightController() override = default;
 
-  const ash::mojom::SimpleGeopositionPtr& position() const { return position_; }
+  const SimpleGeoposition& position() const { return position_; }
 
   int position_pushes_num() const { return position_pushes_num_; }
 
-  ash::mojom::NightLightControllerPtr CreateInterfacePtrAndBind() {
-    ash::mojom::NightLightControllerPtr ptr;
-    binding_.Bind(mojo::MakeRequest(&ptr));
-    return ptr;
-  }
-
-  // ash::mojom::NightLightController:
-  void SetCurrentGeoposition(
-      ash::mojom::SimpleGeopositionPtr position) override {
-    position_ = std::move(position);
+  // ash::NightLightController:
+  void SetCurrentGeoposition(const SimpleGeoposition& position) override {
+    position_ = position;
     ++position_pushes_num_;
   }
 
-  void SetClient(ash::mojom::NightLightClientPtr client) override {
-    client_ = std::move(client);
-  }
-
   void NotifyScheduleTypeChanged(ScheduleType type) {
-    client_->OnScheduleTypeChanged(type);
-    client_.FlushForTesting();
+    for (auto& observer : observers_)
+      observer.OnScheduleTypeChanged(type);
   }
 
  private:
-  ash::mojom::SimpleGeopositionPtr position_;
-  ash::mojom::NightLightClientPtr client_;
-  mojo::Binding<ash::mojom::NightLightController> binding_;
+  SimpleGeoposition position_;
 
   // The number of times a new position is pushed to this controller.
   int position_pushes_num_ = 0;
@@ -134,10 +121,7 @@
     client_.set_fake_now(base::Time::Now());
     client_.set_fake_now_ticks(base::TimeTicks::Now());
 
-    client_.SetNightLightControllerPtrForTesting(
-        controller_.CreateInterfacePtrAndBind());
     client_.Start();
-    client_.FlushNightLightControllerForTesting();
   }
 
   base::test::ScopedTaskEnvironment scoped_task_environment_;
@@ -158,7 +142,6 @@
   controller_.NotifyScheduleTypeChanged(ScheduleType::kCustom);
   controller_.NotifyScheduleTypeChanged(ScheduleType::kSunsetToSunrise);
   scoped_task_environment_.RunUntilIdle();
-  client_.FlushNightLightControllerForTesting();
   EXPECT_TRUE(client_.using_geoposition());
 
   // Client should stop retrieving geopositions when schedule type changes to
@@ -179,7 +162,6 @@
   client_.set_position_to_send(position);
   controller_.NotifyScheduleTypeChanged(ScheduleType::kSunsetToSunrise);
   scoped_task_environment_.RunUntilIdle();
-  client_.FlushNightLightControllerForTesting();
   EXPECT_EQ(1, client_.geoposition_requests_num());
   EXPECT_EQ(0, controller_.position_pushes_num());
 }
@@ -199,7 +181,6 @@
   client_.set_position_to_send(position1);
   controller_.NotifyScheduleTypeChanged(ScheduleType::kSunsetToSunrise);
   scoped_task_environment_.RunUntilIdle();
-  client_.FlushNightLightControllerForTesting();
   EXPECT_EQ(1, client_.geoposition_requests_num());
   EXPECT_EQ(1, controller_.position_pushes_num());
   EXPECT_EQ(client_.Now(), client_.last_successful_geo_request_time());
@@ -216,14 +197,13 @@
   client_.set_position_to_send(position2);
   controller_.NotifyScheduleTypeChanged(ScheduleType::kSunsetToSunrise);
   scoped_task_environment_.RunUntilIdle();
-  client_.FlushNightLightControllerForTesting();
   // No new request has been triggered, however the same old valid position was
   // pushed to the controller.
   EXPECT_EQ(1, client_.geoposition_requests_num());
   EXPECT_EQ(2, controller_.position_pushes_num());
-  EXPECT_TRUE(ash::mojom::SimpleGeoposition::New(position1.latitude,
-                                                 position1.longitude)
-                  .Equals(controller_.position()));
+  SimpleGeoposition simple_geoposition1{position1.latitude,
+                                        position1.longitude};
+  EXPECT_EQ(simple_geoposition1, controller_.position());
 
   // The timer should be running scheduling a next request that is a
   // kNextRequestDelayAfterSuccess from the last successful request time.
@@ -246,7 +226,6 @@
   // in geoposition requests.
   controller_.NotifyScheduleTypeChanged(ScheduleType::kNone);
   scoped_task_environment_.RunUntilIdle();
-  client_.FlushNightLightControllerForTesting();
   EXPECT_FALSE(client_.using_geoposition());
   auto timezone = CreateTimezone("Africa/Cairo");
   client_.TimezoneChanged(*timezone);
@@ -268,7 +247,6 @@
   // will be pushed.
   controller_.NotifyScheduleTypeChanged(ScheduleType::kSunsetToSunrise);
   scoped_task_environment_.RunUntilIdle();
-  client_.FlushNightLightControllerForTesting();
   EXPECT_EQ(1, controller_.position_pushes_num());
   EXPECT_EQ(1, client_.geoposition_requests_num());
 
diff --git a/chrome/browser/chromeos/policy/external_data_handlers/print_servers_external_data_handler.cc b/chrome/browser/chromeos/policy/external_data_handlers/print_servers_external_data_handler.cc
new file mode 100644
index 0000000..a6560d0
--- /dev/null
+++ b/chrome/browser/chromeos/policy/external_data_handlers/print_servers_external_data_handler.cc
@@ -0,0 +1,64 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/policy/external_data_handlers/print_servers_external_data_handler.h"
+
+#include <utility>
+
+#include "base/memory/weak_ptr.h"
+#include "chrome/browser/chromeos/printing/print_servers_provider.h"
+#include "chrome/browser/chromeos/printing/print_servers_provider_factory.h"
+#include "chrome/browser/chromeos/settings/cros_settings.h"
+#include "components/policy/policy_constants.h"
+
+namespace policy {
+
+namespace {
+
+base::WeakPtr<chromeos::PrintServersProvider> GetPrintServersProvider(
+    const std::string& user_id) {
+  return chromeos::PrintServersProviderFactory::Get()->GetForAccountId(
+      CloudExternalDataPolicyHandler::GetAccountId(user_id));
+}
+
+}  // namespace
+
+PrintServersExternalDataHandler::PrintServersExternalDataHandler(
+    chromeos::CrosSettings* cros_settings,
+    DeviceLocalAccountPolicyService* policy_service)
+    : print_servers_observer_(cros_settings,
+                              policy_service,
+                              key::kExternalPrintServers,
+                              this) {
+  print_servers_observer_.Init();
+}
+
+PrintServersExternalDataHandler::~PrintServersExternalDataHandler() = default;
+
+void PrintServersExternalDataHandler::OnExternalDataSet(
+    const std::string& policy,
+    const std::string& user_id) {
+  GetPrintServersProvider(user_id)->ClearData();
+}
+
+void PrintServersExternalDataHandler::OnExternalDataCleared(
+    const std::string& policy,
+    const std::string& user_id) {
+  GetPrintServersProvider(user_id)->ClearData();
+}
+
+void PrintServersExternalDataHandler::OnExternalDataFetched(
+    const std::string& policy,
+    const std::string& user_id,
+    std::unique_ptr<std::string> data,
+    const base::FilePath& file_path) {
+  GetPrintServersProvider(user_id)->SetData(std::move(data));
+}
+
+void PrintServersExternalDataHandler::RemoveForAccountId(
+    const AccountId& account_id) {
+  chromeos::PrintServersProviderFactory::Get()->RemoveForAccountId(account_id);
+}
+
+}  // namespace policy
diff --git a/chrome/browser/chromeos/policy/external_data_handlers/print_servers_external_data_handler.h b/chrome/browser/chromeos/policy/external_data_handlers/print_servers_external_data_handler.h
new file mode 100644
index 0000000..18c6b1e4
--- /dev/null
+++ b/chrome/browser/chromeos/policy/external_data_handlers/print_servers_external_data_handler.h
@@ -0,0 +1,49 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_POLICY_EXTERNAL_DATA_HANDLERS_PRINT_SERVERS_EXTERNAL_DATA_HANDLER_H_
+#define CHROME_BROWSER_CHROMEOS_POLICY_EXTERNAL_DATA_HANDLERS_PRINT_SERVERS_EXTERNAL_DATA_HANDLER_H_
+
+#include <memory>
+#include <string>
+
+#include "chrome/browser/chromeos/policy/external_data_handlers/cloud_external_data_policy_handler.h"
+
+namespace chromeos {
+class CrosSettings;
+}  // namespace chromeos
+
+namespace policy {
+
+class DeviceLocalAccountPolicyService;
+
+// This class observes the user setting "ExternalPrintServers" and propagates
+// data loaded from this external policy to appropriate objects.
+class PrintServersExternalDataHandler : public CloudExternalDataPolicyHandler {
+ public:
+  PrintServersExternalDataHandler(
+      chromeos::CrosSettings* cros_settings,
+      DeviceLocalAccountPolicyService* policy_service);
+  ~PrintServersExternalDataHandler() override;
+
+  // CloudExternalDataPolicyHandler:
+  void OnExternalDataSet(const std::string& policy,
+                         const std::string& user_id) override;
+  void OnExternalDataCleared(const std::string& policy,
+                             const std::string& user_id) override;
+  void OnExternalDataFetched(const std::string& policy,
+                             const std::string& user_id,
+                             std::unique_ptr<std::string> data,
+                             const base::FilePath& file_path) override;
+  void RemoveForAccountId(const AccountId& account_id) override;
+
+ private:
+  CloudExternalDataPolicyObserver print_servers_observer_;
+
+  DISALLOW_COPY_AND_ASSIGN(PrintServersExternalDataHandler);
+};
+
+}  // namespace policy
+
+#endif  // CHROME_BROWSER_CHROMEOS_POLICY_EXTERNAL_DATA_HANDLERS_PRINT_SERVERS_EXTERNAL_DATA_HANDLER_H_
diff --git a/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc b/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc
index ee234e8..cb3c6c0 100644
--- a/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc
+++ b/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc
@@ -210,7 +210,7 @@
   oauth_success_callback_ = std::move(success_callback);
   error_callback_ = std::move(error_callback);
 
-  oauth_request_ = oauth_service->StartRequest(
+  oauth_request_ = oauth_service->StartAccessTokenRequest(
       oauth_service->GetRobotAccountId(), scopes, this);
 }
 
diff --git a/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc b/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc
index d43054c..f3d30bb 100644
--- a/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc
+++ b/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc
@@ -17,12 +17,14 @@
 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
 #include "chrome/browser/chromeos/login/session/user_session_manager_test_api.h"
 #include "chrome/browser/chromeos/login/test/device_state_mixin.h"
+#include "chrome/browser/chromeos/login/test/fake_gaia_mixin.h"
+#include "chrome/browser/chromeos/login/test/login_manager_mixin.h"
+#include "chrome/browser/chromeos/login/test/oobe_base_test.h"
 #include "chrome/browser/chromeos/login/test/user_policy_mixin.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
 #include "chrome/browser/chromeos/login/users/chrome_user_manager_impl.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
-#include "chrome/browser/chromeos/policy/login_policy_test_base.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/chromeos/settings/cros_settings.h"
 #include "chrome/browser/chromeos/settings/scoped_testing_cros_settings.h"
@@ -220,7 +222,7 @@
 
   void SetUpOnMainThread() override {
     fake_gaia_.SetupFakeGaiaForLogin(kTestUserAccountId, kTestUserGaiaId,
-                                     "fake-refresh-token");
+                                     FakeGaiaMixin::kFakeRefreshToken);
 
     OobeBaseTest::SetUpOnMainThread();
 
@@ -278,11 +280,16 @@
       &mixin_host_,
       AccountId::FromUserEmailGaiaId(kTestUserAccountId, kTestUserGaiaId)};
 
-  chromeos::FakeGaiaMixin fake_gaia_{&mixin_host_, embedded_test_server()};
+  LoginManagerMixin::TestUserInfo user_{
+      AccountId::FromUserEmailGaiaId(kTestUserAccountId, kTestUserGaiaId)};
+  LoginManagerMixin login_manager_{&mixin_host_, {user_}};
+
+  FakeGaiaMixin fake_gaia_{&mixin_host_, embedded_test_server()};
 
   // Observes for user session start.
   std::unique_ptr<content::WindowedNotificationObserver>
       user_session_started_observer_;
+
   DISALLOW_COPY_AND_ASSIGN(SiteIsolationFlagHandlingTest);
 };
 
diff --git a/chrome/browser/chromeos/power/ml/idle_event_notifier.cc b/chrome/browser/chromeos/power/ml/idle_event_notifier.cc
index ebfc464a..ac19405 100644
--- a/chrome/browser/chromeos/power/ml/idle_event_notifier.cc
+++ b/chrome/browser/chromeos/power/ml/idle_event_notifier.cc
@@ -92,16 +92,6 @@
   boot_clock_ = std::move(test_boot_clock);
 }
 
-void IdleEventNotifier::AddObserver(Observer* observer) {
-  DCHECK(observer);
-  observers_.AddObserver(observer);
-}
-
-void IdleEventNotifier::RemoveObserver(Observer* observer) {
-  DCHECK(observer);
-  observers_.RemoveObserver(observer);
-}
-
 void IdleEventNotifier::LidEventReceived(
     chromeos::PowerManagerClient::LidState state,
     const base::TimeTicks& /* timestamp */) {
@@ -119,15 +109,6 @@
   }
 }
 
-void IdleEventNotifier::ScreenDimImminent() {
-  // powerd should not dim the screen if video is playing.
-  DCHECK(!video_playing_);
-  const ActivityData data = ConvertActivityData(*internal_data_);
-
-  for (auto& observer : observers_)
-    observer.OnIdleEventObserved(data);
-  ResetTimestampsForRecentActivity();
-}
 
 void IdleEventNotifier::SuspendDone(const base::TimeDelta& sleep_duration) {
   // SuspendDone is triggered by user opening the lid (or other user
@@ -188,6 +169,16 @@
   UpdateActivityData(ActivityType::VIDEO);
 }
 
+IdleEventNotifier::ActivityData IdleEventNotifier::GetActivityDataAndReset() {
+  const ActivityData data = ConvertActivityData(*internal_data_);
+  ResetTimestampsForRecentActivity();
+  return data;
+}
+
+IdleEventNotifier::ActivityData IdleEventNotifier::GetActivityData() const {
+  return ConvertActivityData(*internal_data_);
+}
+
 IdleEventNotifier::ActivityData IdleEventNotifier::ConvertActivityData(
     const ActivityDataInternal& internal_data) const {
   const base::TimeDelta time_since_boot = boot_clock_->GetTimeSinceBoot();
diff --git a/chrome/browser/chromeos/power/ml/idle_event_notifier.h b/chrome/browser/chromeos/power/ml/idle_event_notifier.h
index cbd0adb..5b70648 100644
--- a/chrome/browser/chromeos/power/ml/idle_event_notifier.h
+++ b/chrome/browser/chromeos/power/ml/idle_event_notifier.h
@@ -95,15 +95,6 @@
     int touch_events_in_last_hour = 0;
   };
 
-  class Observer {
-   public:
-    // Called when an idle event is observed.
-    virtual void OnIdleEventObserved(const ActivityData& activity_data) = 0;
-
-   protected:
-    virtual ~Observer() {}
-  };
-
   IdleEventNotifier(PowerManagerClient* power_client,
                     ui::UserActivityDetector* detector,
                     viz::mojom::VideoDetectorObserverRequest request);
@@ -114,15 +105,10 @@
                           base::Clock* test_clock,
                           std::unique_ptr<BootClock> test_boot_clock);
 
-  // Adds or removes an observer.
-  void AddObserver(Observer* observer);
-  void RemoveObserver(Observer* observer);
-
   // chromeos::PowerManagerClient::Observer overrides:
   void LidEventReceived(chromeos::PowerManagerClient::LidState state,
                         const base::TimeTicks& timestamp) override;
   void PowerChanged(const power_manager::PowerSupplyProperties& proto) override;
-  void ScreenDimImminent() override;
   void SuspendDone(const base::TimeDelta& sleep_duration) override;
 
   // ui::UserActivityObserver overrides:
@@ -132,6 +118,14 @@
   void OnVideoActivityStarted() override;
   void OnVideoActivityEnded() override;
 
+  // Called in UserActivityController::ShouldDeferScreenDim to prepare activity
+  // data for making Smart Dim decision.
+  ActivityData GetActivityDataAndReset();
+
+  // Get activity data only, do not mutate the class, may be used by machine
+  // learning internal page.
+  ActivityData GetActivityData() const;
+
  private:
   FRIEND_TEST_ALL_PREFIXES(IdleEventNotifierTest, CheckInitialValues);
   friend class IdleEventNotifierTest;
diff --git a/chrome/browser/chromeos/power/ml/idle_event_notifier_unittest.cc b/chrome/browser/chromeos/power/ml/idle_event_notifier_unittest.cc
index 0cd10063..16d42a7 100644
--- a/chrome/browser/chromeos/power/ml/idle_event_notifier_unittest.cc
+++ b/chrome/browser/chromeos/power/ml/idle_event_notifier_unittest.cc
@@ -24,6 +24,19 @@
 
 namespace {
 
+base::TimeDelta GetTimeSinceMidnight(base::Time time) {
+  return time - time.LocalMidnight();
+}
+
+UserActivityEvent_Features_DayOfWeek GetDayOfWeek(base::Time time) {
+  base::Time::Exploded exploded;
+  time.LocalExplode(&exploded);
+  return static_cast<UserActivityEvent_Features_DayOfWeek>(
+      exploded.day_of_week);
+}
+
+}  // namespace
+
 bool operator==(const IdleEventNotifier::ActivityData& x,
                 const IdleEventNotifier::ActivityData& y) {
   return x.last_activity_day == y.last_activity_day &&
@@ -40,42 +53,6 @@
          x.touch_events_in_last_hour == y.touch_events_in_last_hour;
 }
 
-base::TimeDelta GetTimeSinceMidnight(base::Time time) {
-  return time - time.LocalMidnight();
-}
-
-UserActivityEvent_Features_DayOfWeek GetDayOfWeek(base::Time time) {
-  base::Time::Exploded exploded;
-  time.LocalExplode(&exploded);
-  return static_cast<UserActivityEvent_Features_DayOfWeek>(
-      exploded.day_of_week);
-}
-
-class TestObserver : public IdleEventNotifier::Observer {
- public:
-  TestObserver() : idle_event_count_(0) {}
-  ~TestObserver() override {}
-
-  int idle_event_count() const { return idle_event_count_; }
-  const IdleEventNotifier::ActivityData& activity_data() const {
-    return activity_data_;
-  }
-
-  // IdleEventNotifier::Observer overrides:
-  void OnIdleEventObserved(
-      const IdleEventNotifier::ActivityData& activity_data) override {
-    ++idle_event_count_;
-    activity_data_ = activity_data;
-  }
-
- private:
-  int idle_event_count_;
-  IdleEventNotifier::ActivityData activity_data_;
-  DISALLOW_COPY_AND_ASSIGN(TestObserver);
-};
-
-}  // namespace
-
 class IdleEventNotifierTest : public testing::Test {
  public:
   IdleEventNotifierTest()
@@ -97,7 +74,6 @@
         const_cast<base::Clock*>(scoped_task_env_.GetMockClock()),
         std::make_unique<FakeBootClock>(&scoped_task_env_,
                                         base::TimeDelta::FromSeconds(10)));
-    idle_event_notifier_->AddObserver(&test_observer_);
     ac_power_.set_external_power(
         power_manager::PowerSupplyProperties_ExternalPower_AC);
     disconnected_power_.set_external_power(
@@ -110,21 +86,8 @@
   }
 
  protected:
-  void ReportScreenDimImminent() {
-    FakePowerManagerClient::Get()->SendScreenDimImminent();
-  }
-
-  void ReportIdleEventAndCheckResults(
-      int expected_idle_count,
-      const IdleEventNotifier::ActivityData& expected_activity_data) {
-    ReportScreenDimImminent();
-    EXPECT_EQ(expected_idle_count, test_observer_.idle_event_count());
-    EXPECT_TRUE(expected_activity_data == test_observer_.activity_data());
-  }
-
   base::test::ScopedTaskEnvironment scoped_task_env_;
 
-  TestObserver test_observer_;
   std::unique_ptr<IdleEventNotifier> idle_event_notifier_;
   power_manager::PowerSupplyProperties ac_power_;
   power_manager::PowerSupplyProperties disconnected_power_;
@@ -151,7 +114,7 @@
   data.last_activity_time_of_day = time_of_day;
   data.last_user_activity_time_of_day = time_of_day;
   data.recent_time_active = base::TimeDelta();
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 // PowerChanged signal is received but source isn't changed, so it won't change
@@ -165,11 +128,11 @@
   data.last_activity_time_of_day = time_of_day;
   data.last_user_activity_time_of_day = time_of_day;
   data.recent_time_active = base::TimeDelta();
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(10));
   idle_event_notifier_->PowerChanged(ac_power_);
-  ReportIdleEventAndCheckResults(2, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 // PowerChanged signal is received and source is changed, so a different
@@ -183,7 +146,7 @@
   data_1.last_activity_time_of_day = time_of_day_1;
   data_1.last_user_activity_time_of_day = time_of_day_1;
   data_1.recent_time_active = base::TimeDelta();
-  ReportIdleEventAndCheckResults(1, data_1);
+  EXPECT_EQ(data_1, idle_event_notifier_->GetActivityDataAndReset());
 
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(100));
   base::Time now_2 = scoped_task_env_.GetMockClock()->Now();
@@ -194,7 +157,7 @@
   data_2.last_activity_time_of_day = time_of_day_2;
   data_2.last_user_activity_time_of_day = time_of_day_2;
   data_2.recent_time_active = base::TimeDelta();
-  ReportIdleEventAndCheckResults(2, data_2);
+  EXPECT_EQ(data_2, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 // Short sleep duration does not break up recent time active.
@@ -215,7 +178,7 @@
   data.last_activity_time_of_day = time_of_day;
   data.last_user_activity_time_of_day = time_of_day;
   data.recent_time_active = now_2 - now_1;
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 // Long sleep duration recalc recent time active.
@@ -238,7 +201,7 @@
   data.last_activity_time_of_day = time_of_day;
   data.last_user_activity_time_of_day = time_of_day;
   data.recent_time_active = now_2 - now_1;
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, UserActivityKey) {
@@ -254,7 +217,7 @@
   data.time_since_last_key = base::TimeDelta::FromSeconds(10);
   data.key_events_in_last_hour = 1;
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(10));
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, UserActivityMouse) {
@@ -272,7 +235,7 @@
   data.time_since_last_mouse = base::TimeDelta::FromSeconds(10);
   data.mouse_events_in_last_hour = 1;
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(10));
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, UserActivityOther) {
@@ -288,7 +251,7 @@
   data.last_user_activity_time_of_day = time_of_day;
   data.recent_time_active = base::TimeDelta();
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(10));
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 // Two consecutive activities separated by 2sec only. Only 1 idle event with
@@ -316,7 +279,7 @@
   data.key_events_in_last_hour = 1;
   data.mouse_events_in_last_hour = 1;
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(10));
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, ActivityAfterVideoStarts) {
@@ -343,7 +306,7 @@
   data.time_since_video_ended = base::TimeDelta::FromSeconds(10);
   data.mouse_events_in_last_hour = 1;
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(10));
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, IdleEventFieldReset) {
@@ -368,7 +331,7 @@
   data_1.key_events_in_last_hour = 1;
   data_1.mouse_events_in_last_hour = 1;
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(10));
-  ReportIdleEventAndCheckResults(1, data_1);
+  EXPECT_EQ(data_1, idle_event_notifier_->GetActivityDataAndReset());
 
   idle_event_notifier_->PowerChanged(ac_power_);
   base::Time now_3 = scoped_task_env_.GetMockClock()->Now();
@@ -385,7 +348,7 @@
   data_2.key_events_in_last_hour = 1;
   data_2.mouse_events_in_last_hour = 1;
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(20));
-  ReportIdleEventAndCheckResults(2, data_2);
+  EXPECT_EQ(data_2, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, TwoConsecutiveVideoPlaying) {
@@ -421,7 +384,7 @@
   data.time_since_video_ended =
       base::TimeDelta::FromSeconds(25) + now_3 - now_2;
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(25));
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, TwoVideoPlayingFarApartOneIdleEvent) {
@@ -456,7 +419,7 @@
   data.video_playing_time = now_3 - now_2;
   data.time_since_video_ended = base::TimeDelta::FromSeconds(25);
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(25));
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, TwoVideoPlayingFarApartTwoIdleEvents) {
@@ -478,7 +441,7 @@
       IdleEventNotifier::kIdleDelay + base::TimeDelta::FromSeconds(10);
   scoped_task_env_.FastForwardBy(IdleEventNotifier::kIdleDelay +
                                  base::TimeDelta::FromSeconds(10));
-  ReportIdleEventAndCheckResults(1, data_1);
+  EXPECT_EQ(data_1, idle_event_notifier_->GetActivityDataAndReset());
 
   base::Time now_3 = scoped_task_env_.GetMockClock()->Now();
   idle_event_notifier_->OnVideoActivityStarted();
@@ -492,7 +455,7 @@
   data_2.recent_time_active = now_4 - now_3;
   data_2.video_playing_time = now_4 - now_3;
   data_2.time_since_video_ended = base::TimeDelta();
-  ReportIdleEventAndCheckResults(2, data_2);
+  EXPECT_EQ(data_2, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, TwoVideoPlayingSeparatedByAnIdleEvent) {
@@ -512,7 +475,7 @@
   data_1.video_playing_time = kNow2 - kNow1;
   data_1.time_since_video_ended = base::TimeDelta::FromSeconds(1);
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(1));
-  ReportIdleEventAndCheckResults(1, data_1);
+  EXPECT_EQ(data_1, idle_event_notifier_->GetActivityDataAndReset());
 
   const base::Time kNow3 = scoped_task_env_.GetMockClock()->Now();
   idle_event_notifier_->OnVideoActivityStarted();
@@ -526,7 +489,7 @@
   data_2.recent_time_active = kNow4 - kNow3;
   data_2.video_playing_time = kNow4 - kNow3;
   data_2.time_since_video_ended = base::TimeDelta();
-  ReportIdleEventAndCheckResults(2, data_2);
+  EXPECT_EQ(data_2, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, VideoPlayingPausedByShortSuspend) {
@@ -548,7 +511,7 @@
   data.recent_time_active = now_3 - now_1;
   data.video_playing_time = now_3 - now_1;
   data.time_since_video_ended = base::TimeDelta();
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, VideoPlayingPausedByLongSuspend) {
@@ -569,7 +532,7 @@
   data.recent_time_active = now_2 - now_1;
   data.video_playing_time = now_2 - now_1;
   data.time_since_video_ended = base::TimeDelta();
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, UserInputEventsOneIdleEvent) {
@@ -632,7 +595,7 @@
   data.touch_events_in_last_hour = 3;
 
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(30));
-  ReportIdleEventAndCheckResults(1, data);
+  EXPECT_EQ(data, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 TEST_F(IdleEventNotifierTest, UserInputEventsTwoIdleEvents) {
@@ -654,7 +617,7 @@
   data_1.time_since_last_key = base::TimeDelta::FromSeconds(30);
   data_1.key_events_in_last_hour = 1;
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromSeconds(30));
-  ReportIdleEventAndCheckResults(1, data_1);
+  EXPECT_EQ(data_1, idle_event_notifier_->GetActivityDataAndReset());
 
   scoped_task_env_.FastForwardBy(base::TimeDelta::FromMinutes(11));
   base::Time last_key_time = scoped_task_env_.GetMockClock()->Now();
@@ -701,7 +664,7 @@
   data_2.mouse_events_in_last_hour = 2;
   data_2.touch_events_in_last_hour = 3;
 
-  ReportIdleEventAndCheckResults(2, data_2);
+  EXPECT_EQ(data_2, idle_event_notifier_->GetActivityDataAndReset());
 }
 
 }  // namespace ml
diff --git a/chrome/browser/chromeos/power/ml/user_activity_controller.cc b/chrome/browser/chromeos/power/ml/user_activity_controller.cc
index 32345e5..d4b1bb08 100644
--- a/chrome/browser/chromeos/power/ml/user_activity_controller.cc
+++ b/chrome/browser/chromeos/power/ml/user_activity_controller.cc
@@ -44,9 +44,8 @@
 
   viz::mojom::VideoDetectorObserverPtr video_observer_user_logger;
   user_activity_manager_ = std::make_unique<UserActivityManager>(
-      &user_activity_ukm_logger_, idle_event_notifier_.get(), detector,
-      power_manager_client, session_manager,
-      mojo::MakeRequest(&video_observer_user_logger),
+      &user_activity_ukm_logger_, detector, power_manager_client,
+      session_manager, mojo::MakeRequest(&video_observer_user_logger),
       chromeos::ChromeUserManager::Get(), &smart_dim_model_);
   aura::Env::GetInstance()
       ->context_factory_private()
@@ -56,6 +55,12 @@
 
 UserActivityController::~UserActivityController() = default;
 
+void UserActivityController::ShouldDeferScreenDim(
+    base::OnceCallback<void(bool)> callback) {
+  user_activity_manager_->UpdateAndGetSmartDimDecision(
+      idle_event_notifier_->GetActivityDataAndReset(), std::move(callback));
+}
+
 }  // namespace ml
 }  // namespace power
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/power/ml/user_activity_controller.h b/chrome/browser/chromeos/power/ml/user_activity_controller.h
index e1c3325..30e2ba0 100644
--- a/chrome/browser/chromeos/power/ml/user_activity_controller.h
+++ b/chrome/browser/chromeos/power/ml/user_activity_controller.h
@@ -7,6 +7,7 @@
 
 #include <memory>
 
+#include "base/callback.h"
 #include "chrome/browser/chromeos/power/ml/idle_event_notifier.h"
 #include "chrome/browser/chromeos/power/ml/smart_dim/model_impl.h"
 #include "chrome/browser/chromeos/power/ml/user_activity_manager.h"
@@ -24,6 +25,10 @@
   UserActivityController();
   ~UserActivityController();
 
+  // Prepares features, makes smart dim decision and returns the result via
+  // |callback|.
+  void ShouldDeferScreenDim(base::OnceCallback<void(bool)> callback);
+
  private:
   std::unique_ptr<IdleEventNotifier> idle_event_notifier_;
   UserActivityUkmLoggerImpl user_activity_ukm_logger_;
diff --git a/chrome/browser/chromeos/power/ml/user_activity_manager.cc b/chrome/browser/chromeos/power/ml/user_activity_manager.cc
index aee7c9c..a752563 100644
--- a/chrome/browser/chromeos/power/ml/user_activity_manager.cc
+++ b/chrome/browser/chromeos/power/ml/user_activity_manager.cc
@@ -88,6 +88,9 @@
 
 }  // namespace
 
+// TODO(alanlxl): Fix the variable names and comments related to screen dim
+// imminent signals, because after powerd refactor (https://crrev.com/c/1601992)
+// ScreenDimImminent signals are deprecated.
 struct UserActivityManager::PreviousIdleEventData {
   // Gap between two ScreenDimImminent signals.
   base::TimeDelta dim_imminent_signal_interval;
@@ -101,7 +104,6 @@
 
 UserActivityManager::UserActivityManager(
     UserActivityUkmLogger* ukm_logger,
-    IdleEventNotifier* idle_event_notifier,
     ui::UserActivityDetector* detector,
     chromeos::PowerManagerClient* power_manager_client,
     session_manager::SessionManager* session_manager,
@@ -111,7 +113,6 @@
     : boot_clock_(std::make_unique<RealBootClock>()),
       ukm_logger_(ukm_logger),
       smart_dim_model_(smart_dim_model),
-      idle_event_observer_(this),
       user_activity_observer_(this),
       power_manager_client_observer_(this),
       session_manager_observer_(this),
@@ -121,8 +122,6 @@
       power_manager_client_(power_manager_client),
       weak_ptr_factory_(this) {
   DCHECK(ukm_logger_);
-  DCHECK(idle_event_notifier);
-  idle_event_observer_.Add(idle_event_notifier);
 
   DCHECK(detector);
   user_activity_observer_.Add(detector);
@@ -237,16 +236,17 @@
                 UserActivityEvent::Event::VIDEO_ACTIVITY);
 }
 
-void UserActivityManager::OnIdleEventObserved(
-    const IdleEventNotifier::ActivityData& activity_data) {
+void UserActivityManager::UpdateAndGetSmartDimDecision(
+    const IdleEventNotifier::ActivityData& activity_data,
+    base::OnceCallback<void(bool)> callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   base::TimeDelta now = boot_clock_->GetTimeSinceBoot();
   if (waiting_for_final_action_) {
     if (waiting_for_model_decision_) {
       CancelDimDecisionRequest();
     } else {
-      // ScreenDimImminent is received again after an earlier ScreenDimImminent
-      // event without any user action/suspend in between.
+      // Smart dim request comes again after an earlier request event without
+      // any user action/suspend in between.
       PopulatePreviousEventData(now);
     }
   }
@@ -273,13 +273,15 @@
     waiting_for_model_decision_ = true;
     time_dim_decision_requested_ = base::TimeTicks::Now();
     smart_dim_model_->RequestDimDecision(
-        features_, base::Bind(&UserActivityManager::ApplyDimDecision,
-                              weak_ptr_factory_.GetWeakPtr()));
+        features_,
+        base::BindOnce(&UserActivityManager::HandleSmartDimDecision,
+                       weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
   }
   waiting_for_final_action_ = true;
 }
 
-void UserActivityManager::ApplyDimDecision(
+void UserActivityManager::HandleSmartDimDecision(
+    base::OnceCallback<void(bool)> callback,
     UserActivityEvent::ModelPrediction prediction) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   waiting_for_model_decision_ = false;
@@ -291,7 +293,6 @@
   // previously deferred.
   if (prediction.response() == UserActivityEvent::ModelPrediction::NO_DIM &&
       !dim_deferred_) {
-    power_manager_client_->DeferScreenDim();
     dim_deferred_ = true;
     prediction.set_model_applied(true);
   } else {
@@ -301,8 +302,8 @@
                                      UserActivityEvent::ModelPrediction::DIM &&
                                  !dim_deferred_);
   }
-
   model_prediction_ = prediction;
+  std::move(callback).Run(dim_deferred_);
 }
 
 void UserActivityManager::OnSessionStateChanged() {
diff --git a/chrome/browser/chromeos/power/ml/user_activity_manager.h b/chrome/browser/chromeos/power/ml/user_activity_manager.h
index 7d72f605..d0f2a9b 100644
--- a/chrome/browser/chromeos/power/ml/user_activity_manager.h
+++ b/chrome/browser/chromeos/power/ml/user_activity_manager.h
@@ -74,13 +74,11 @@
 // Logs user activity after an idle event is observed.
 // TODO(renjieliu): Add power-related activity as well.
 class UserActivityManager : public ui::UserActivityObserver,
-                            public IdleEventNotifier::Observer,
                             public PowerManagerClient::Observer,
                             public viz::mojom::VideoDetectorObserver,
                             public session_manager::SessionManagerObserver {
  public:
   UserActivityManager(UserActivityUkmLogger* ukm_logger,
-                      IdleEventNotifier* idle_event_notifier,
                       ui::UserActivityDetector* detector,
                       chromeos::PowerManagerClient* power_manager_client,
                       session_manager::SessionManager* session_manager,
@@ -108,13 +106,15 @@
   void OnVideoActivityStarted() override;
   void OnVideoActivityEnded() override {}
 
-  // IdleEventNotifier::Observer overrides.
-  void OnIdleEventObserved(
-      const IdleEventNotifier::ActivityData& data) override;
+  // Called in UserActivityController::ShouldDeferScreenDim to make smart dim
+  // decision and response via |callback|.
+  void UpdateAndGetSmartDimDecision(const IdleEventNotifier::ActivityData& data,
+                                    base::OnceCallback<void(bool)> callback);
 
-  // Decides whether or not to instruct the power manager to dim the screen
-  // given a |prediction| from the Smart Dim predictor.
-  void ApplyDimDecision(UserActivityEvent::ModelPrediction prediction);
+  // Converts a Smart Dim model |prediction| into a yes/no decision about
+  // whether to defer the screen dim and provides the result via |callback|.
+  void HandleSmartDimDecision(base::OnceCallback<void(bool)> callback,
+                              UserActivityEvent::ModelPrediction prediction);
 
   // session_manager::SessionManagerObserver overrides:
   void OnSessionStateChanged() override;
@@ -193,8 +193,6 @@
 
   SmartDimModel* const smart_dim_model_;
 
-  ScopedObserver<IdleEventNotifier, IdleEventNotifier::Observer>
-      idle_event_observer_;
   ScopedObserver<ui::UserActivityDetector, ui::UserActivityObserver>
       user_activity_observer_;
   ScopedObserver<chromeos::PowerManagerClient,
diff --git a/chrome/browser/chromeos/power/ml/user_activity_manager_unittest.cc b/chrome/browser/chromeos/power/ml/user_activity_manager_unittest.cc
index 7e59d7a1c..97ccaa427 100644
--- a/chrome/browser/chromeos/power/ml/user_activity_manager_unittest.cc
+++ b/chrome/browser/chromeos/power/ml/user_activity_manager_unittest.cc
@@ -183,13 +183,10 @@
 
     PowerManagerClient::InitializeFake();
     viz::mojom::VideoDetectorObserverPtr observer;
-    idle_event_notifier_ = std::make_unique<IdleEventNotifier>(
-        PowerManagerClient::Get(), &user_activity_detector_,
-        mojo::MakeRequest(&observer));
     activity_logger_ = std::make_unique<UserActivityManager>(
-        &delegate_, idle_event_notifier_.get(), &user_activity_detector_,
-        PowerManagerClient::Get(), &session_manager_,
-        mojo::MakeRequest(&observer), &fake_user_manager_, &model_);
+        &delegate_, &user_activity_detector_, PowerManagerClient::Get(),
+        &session_manager_, mojo::MakeRequest(&observer), &fake_user_manager_,
+        &model_);
     activity_logger_->SetTaskRunnerForTesting(
         thread_bundle()->GetMainThreadTaskRunner(),
         std::make_unique<FakeBootClock>(thread_bundle(),
@@ -198,7 +195,6 @@
 
   void TearDown() override {
     activity_logger_.reset();
-    idle_event_notifier_.reset();
     PowerManagerClient::Shutdown();
     ChromeRenderViewHostTestHarness::TearDown();
   }
@@ -208,8 +204,17 @@
     activity_logger_->OnUserActivity(event);
   }
 
-  void ReportIdleEvent(const IdleEventNotifier::ActivityData& data) {
-    activity_logger_->OnIdleEventObserved(data);
+  // Requests a smart dim decision from UserActivityManager based on |data|.
+  // Populates |*should_defer| with the result once it is provided.
+  void ReportIdleEvent(const IdleEventNotifier::ActivityData& data,
+                       bool* should_defer = nullptr) {
+    activity_logger_->UpdateAndGetSmartDimDecision(
+        data, base::BindOnce(
+                  [](bool* should_defer, bool decision) {
+                    if (should_defer)
+                      *should_defer = decision;
+                  },
+                  should_defer));
   }
 
   void ReportLidEvent(chromeos::PowerManagerClient::LidState state) {
@@ -259,10 +264,6 @@
     FakePowerManagerClient::Get()->SetInactivityDelays(proto);
   }
 
-  int GetNumberOfDeferredDims() {
-    return FakePowerManagerClient::Get()->num_defer_screen_dim_calls();
-  }
-
   TabProperty UpdateOpenTabURL() {
     return activity_logger_->UpdateOpenTabURL();
   }
@@ -985,10 +986,11 @@
   model_.set_decision_threshold(65);
 
   const IdleEventNotifier::ActivityData data;
-  ReportIdleEvent(data);
+  bool should_defer = false;
+  ReportIdleEvent(data, &should_defer);
   thread_bundle()->RunUntilIdle();
   ReportUserActivity(nullptr);
-  EXPECT_EQ(1, GetNumberOfDeferredDims());
+  EXPECT_TRUE(should_defer);
 
   std::string histogram("PowerML.SmartDimModel.RequestCompleteDuration");
   histogram_tester.ExpectTotalCount(histogram, 1);
@@ -1025,9 +1027,10 @@
   model_.set_decision_threshold(65);
 
   const IdleEventNotifier::ActivityData data;
-  ReportIdleEvent(data);
+  bool should_defer = false;
+  ReportIdleEvent(data, &should_defer);
   thread_bundle()->RunUntilIdle();
-  EXPECT_EQ(1, GetNumberOfDeferredDims());
+  EXPECT_TRUE(should_defer);
 
   std::string histogram("PowerML.SmartDimModel.RequestCompleteDuration");
   histogram_tester.ExpectTotalCount(histogram, 1);
@@ -1050,12 +1053,13 @@
   model_.set_decision_threshold(65);
 
   const IdleEventNotifier::ActivityData data;
-  ReportIdleEvent(data);
+  bool should_defer = false;
+  ReportIdleEvent(data, &should_defer);
   // Report user activity immediately after the idle event, so that
   // the SmartDimModel doesn't get a chance to run.
   ReportUserActivity(nullptr);
   thread_bundle()->RunUntilIdle();
-  EXPECT_EQ(0, GetNumberOfDeferredDims());
+  EXPECT_FALSE(should_defer);
 
   std::string hist_complete("PowerML.SmartDimModel.RequestCompleteDuration");
   histogram_tester.ExpectTotalCount(hist_complete, 0);
@@ -1082,11 +1086,13 @@
   model_.set_decision_threshold(65);
 
   const IdleEventNotifier::ActivityData data;
-  ReportIdleEvent(data);
-  ReportIdleEvent(data);
+  bool should_defer_1 = false;
+  bool should_defer_2 = false;
+  ReportIdleEvent(data, &should_defer_1);
+  ReportIdleEvent(data, &should_defer_2);
   thread_bundle()->RunUntilIdle();
   ReportUserActivity(nullptr);
-  EXPECT_EQ(1, GetNumberOfDeferredDims());
+  EXPECT_NE(should_defer_1, should_defer_2);
 
   std::string hist_complete("PowerML.SmartDimModel.RequestCompleteDuration");
   histogram_tester.ExpectTotalCount(hist_complete, 1);
@@ -1125,10 +1131,11 @@
   model_.set_decision_threshold(50);
 
   const IdleEventNotifier::ActivityData data;
-  ReportIdleEvent(data);
+  bool should_defer = false;
+  ReportIdleEvent(data, &should_defer);
   thread_bundle()->RunUntilIdle();
   ReportUserActivity(nullptr);
-  EXPECT_EQ(0, GetNumberOfDeferredDims());
+  EXPECT_FALSE(should_defer);
 
   std::string histogram("PowerML.SmartDimModel.RequestCompleteDuration");
   histogram_tester.ExpectTotalCount(histogram, 1);
@@ -1158,9 +1165,10 @@
   model_.set_inactivity_score(40);
 
   const IdleEventNotifier::ActivityData data;
-  ReportIdleEvent(data);
+  bool should_defer = false;
+  ReportIdleEvent(data, &should_defer);
   thread_bundle()->RunUntilIdle();
-  EXPECT_EQ(1, GetNumberOfDeferredDims());
+  EXPECT_TRUE(should_defer);
 
   thread_bundle()->FastForwardBy(base::TimeDelta::FromSeconds(6));
   ReportSuspend(power_manager::SuspendImminent_Reason_IDLE,
@@ -1169,9 +1177,9 @@
   // 2nd ScreenDimImminent is not deferred despite model score says so.
   model_.set_inactivity_score(20);
   thread_bundle()->FastForwardBy(base::TimeDelta::FromSeconds(10));
-  ReportIdleEvent(data);
+  ReportIdleEvent(data, &should_defer);
   thread_bundle()->RunUntilIdle();
-  EXPECT_EQ(1, GetNumberOfDeferredDims());
+  EXPECT_FALSE(should_defer);
 
   std::string histogram("PowerML.SmartDimModel.RequestCompleteDuration");
   histogram_tester.ExpectTotalCount(histogram, 2);
@@ -1232,16 +1240,17 @@
   // 1st ScreenDimImminent gets deferred
   model_.set_inactivity_score(40);
   const IdleEventNotifier::ActivityData data;
-  ReportIdleEvent(data);
+  bool should_defer = false;
+  ReportIdleEvent(data, &should_defer);
   thread_bundle()->RunUntilIdle();
-  EXPECT_EQ(1, GetNumberOfDeferredDims());
+  EXPECT_TRUE(should_defer);
 
   // 2nd ScreenDimImminent is not deferred despite model score says so.
   model_.set_inactivity_score(20);
   thread_bundle()->FastForwardBy(base::TimeDelta::FromSeconds(10));
-  ReportIdleEvent(data);
+  ReportIdleEvent(data, &should_defer);
   thread_bundle()->RunUntilIdle();
-  EXPECT_EQ(1, GetNumberOfDeferredDims());
+  EXPECT_FALSE(should_defer);
 
   std::string histogram("PowerML.SmartDimModel.RequestCompleteDuration");
   histogram_tester.ExpectTotalCount(histogram, 2);
@@ -1298,10 +1307,11 @@
   model_.set_decision_threshold(65);
 
   const IdleEventNotifier::ActivityData data;
-  ReportIdleEvent(data);
+  bool should_defer = false;
+  ReportIdleEvent(data, &should_defer);
   thread_bundle()->RunUntilIdle();
   ReportUserActivity(nullptr);
-  EXPECT_EQ(0, GetNumberOfDeferredDims());
+  EXPECT_FALSE(should_defer);
 
   std::string histogram("PowerML.SmartDimModel.RequestCompleteDuration");
   histogram_tester.ExpectTotalCount(histogram, 1);
diff --git a/chrome/browser/chromeos/printing/print_server.cc b/chrome/browser/chromeos/printing/print_server.cc
new file mode 100644
index 0000000..c5bab92
--- /dev/null
+++ b/chrome/browser/chromeos/printing/print_server.cc
@@ -0,0 +1,14 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/printing/print_server.h"
+
+#include <string>
+
+namespace chromeos {
+
+PrintServer::PrintServer(const GURL& url, const std::string& name)
+    : url_(url), name_(name) {}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/printing/print_server.h b/chrome/browser/chromeos/printing/print_server.h
new file mode 100644
index 0000000..f2301bb6
--- /dev/null
+++ b/chrome/browser/chromeos/printing/print_server.h
@@ -0,0 +1,37 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_PRINTING_PRINT_SERVER_H_
+#define CHROME_BROWSER_CHROMEOS_PRINTING_PRINT_SERVER_H_
+
+#include <string>
+
+#include "url/gurl.h"
+
+namespace chromeos {
+
+// Simple class representing Print Server.
+class PrintServer {
+ public:
+  PrintServer(const GURL& url, const std::string& name);
+
+  // Returns server's URL, used for communication over IPP protocol.
+  const GURL& GetUrl() const { return url_; }
+
+  // Returns server's name for end-users.
+  const std::string& GetName() const { return name_; }
+
+  // Comparison operator.
+  bool operator==(const PrintServer& obj) const {
+    return url_ == obj.url_ && name_ == obj.name_;
+  }
+
+ private:
+  GURL url_;
+  std::string name_;
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_PRINTING_PRINT_SERVER_H_
diff --git a/chrome/browser/chromeos/printing/print_servers_provider.cc b/chrome/browser/chromeos/printing/print_servers_provider.cc
new file mode 100644
index 0000000..5520720c
--- /dev/null
+++ b/chrome/browser/chromeos/printing/print_servers_provider.cc
@@ -0,0 +1,244 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/printing/print_servers_provider.h"
+
+#include <memory>
+#include <set>
+#include <vector>
+
+#include "base/json/json_reader.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "base/observer_list.h"
+#include "base/sequenced_task_runner.h"
+#include "base/task/post_task.h"
+#include "base/task_runner_util.h"
+#include "base/threading/scoped_blocking_call.h"
+#include "base/values.h"
+#include "chrome/browser/chromeos/printing/print_server.h"
+#include "content/public/browser/browser_thread.h"
+#include "url/gurl.h"
+
+namespace chromeos {
+
+namespace {
+
+constexpr int kMaxRecords = 16;
+
+struct TaskResults {
+  int task_id;
+  std::vector<PrintServer> servers;
+};
+
+// Parses |data|, a JSON blob, into a vector of PrintServers.  If |data| cannot
+// be parsed, returns data with empty list of servers.
+// This needs to run on a sequence that may block as it can be very slow.
+TaskResults ParseData(int task_id, std::unique_ptr<std::string> data) {
+  TaskResults task_data;
+  task_data.task_id = task_id;
+
+  if (!data) {
+    LOG(WARNING) << "Received null data";
+    return task_data;
+  }
+
+  // This could be really slow.
+  base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+                                                base::BlockingType::MAY_BLOCK);
+  base::JSONReader::ValueWithError value_with_error =
+      base::JSONReader::ReadAndReturnValueWithError(
+          *data, base::JSONParserOptions::JSON_PARSE_RFC);
+  if (value_with_error.error_code != base::JSONReader::JSON_NO_ERROR) {
+    LOG(WARNING) << "Failed to parse print servers policy ("
+                 << value_with_error.error_message << ") on line "
+                 << value_with_error.error_line << " at position "
+                 << value_with_error.error_column;
+    return task_data;
+  }
+
+  base::Value& json_blob = value_with_error.value.value();
+  if (!json_blob.is_list()) {
+    LOG(WARNING) << "Failed to parse print servers policy "
+                 << "(an array was expected)";
+    return task_data;
+  }
+
+  base::Value::ListStorage& json_list = json_blob.GetList();
+  if (json_list.size() > kMaxRecords) {
+    LOG(WARNING) << "Too many records in print servers policy: "
+                 << json_list.size() << ". Only the first " << kMaxRecords
+                 << " records will be read.";
+    json_list.resize(kMaxRecords);
+  }
+
+  std::set<GURL> print_server_urls;
+  task_data.servers.reserve(json_list.size());
+  for (const base::Value& val : json_list) {
+    if (!val.is_dict()) {
+      LOG(WARNING) << "Entry in print servers policy skipped. "
+                   << "Not a dictionary.";
+      continue;
+    }
+    const std::string* url = val.FindStringKey("url");
+    const std::string* name = val.FindStringKey("display_name");
+    if (url == nullptr || name == nullptr) {
+      LOG(WARNING) << "Entry in print servers policy skipped. The following "
+                   << "fields are required: url, display_name.";
+      continue;
+    }
+    GURL gurl(*url);
+    if (!gurl.is_valid()) {
+      LOG(WARNING) << "Entry in print servers policy skipped. "
+                   << "The following URL is invalid: " << *url;
+      continue;
+    }
+    if (!gurl.SchemeIsHTTPOrHTTPS() && !gurl.SchemeIs("ipp") &&
+        !gurl.SchemeIs("ipps")) {
+      LOG(WARNING) << "Entry in print servers policy skipped. "
+                   << "URL has unsupported scheme. Only the following "
+                   << "schemes are supported: http, https, ipp, ipps";
+      continue;
+    }
+    // Replaces ipp/ipps by http/https. IPP standard describes protocol built
+    // on top of HTTP, so both types of addresses have the same meaning in the
+    // context of IPP interface. Moreover, the URL must have http/https scheme
+    // to pass IsStandard() test from GURL library (see "Validation of the URL
+    // address" below).
+    if (gurl.SchemeIs("ipp")) {
+      gurl = GURL("http" + url->substr(url->find_first_of(':')));
+    } else if (gurl.SchemeIs("ipps")) {
+      gurl = GURL("https" + url->substr(url->find_first_of(':')));
+    }
+    // Validation of the URL address.
+    if (!gurl.is_valid()) {
+      LOG(WARNING) << "Entry in print servers policy skipped. "
+                   << "The following URL is invalid: " << *url;
+      continue;
+    }
+    // Checks if a set of URLs contains this URL. If not, the URL is added to
+    // the set. Otherwise, a warning is emitted and the record is skipped.
+    if (!print_server_urls.insert(gurl).second) {
+      // The set already contained this URL. It means that a duplicate record
+      // was found.
+      LOG(WARNING) << "Entry in print servers policy skipped. There is "
+                   << "already a record with the same URL: " << gurl.spec();
+      continue;
+    }
+    task_data.servers.emplace_back(gurl, *name);
+  }
+
+  return task_data;
+}
+
+class PrintServersProviderImpl : public PrintServersProvider {
+ public:
+  PrintServersProviderImpl()
+      : task_runner_(base::CreateSequencedTaskRunnerWithTraits(
+            {base::TaskPriority::BEST_EFFORT, base::MayBlock(),
+             base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
+        weak_ptr_factory_(this) {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  }
+
+  ~PrintServersProviderImpl() override {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  }
+
+  void AddObserver(PrintServersProvider::Observer* observer) override {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+    observers_.AddObserver(observer);
+    observer->OnServersChanged(IsCompleted(), servers_);
+  }
+
+  void RemoveObserver(PrintServersProvider::Observer* observer) override {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+    observers_.RemoveObserver(observer);
+  }
+
+  void ClearData() override {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+    const bool was_complete = IsCompleted();
+    const bool was_empty = servers_.empty();
+    last_processed_task_ = ++last_received_task_;
+    servers_.clear();
+    if (!(was_complete && was_empty)) {
+      // Notify observers.
+      for (auto& observer : observers_)
+        observer.OnServersChanged(true, servers_);
+    }
+  }
+
+  void SetData(std::unique_ptr<std::string> data) override {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+    const bool was_complete = IsCompleted();
+    base::PostTaskAndReplyWithResult(
+        task_runner_.get(), FROM_HERE,
+        base::BindOnce(&ParseData, ++last_received_task_, std::move(data)),
+        base::BindOnce(&PrintServersProviderImpl::OnComputationComplete,
+                       weak_ptr_factory_.GetWeakPtr()));
+    if (was_complete) {
+      // Notify observers.
+      for (auto& observer : observers_)
+        observer.OnServersChanged(false, servers_);
+    }
+  }
+
+ private:
+  // Returns true <=> there is no tasks being processed and there was at least
+  // one call to SetData(...) or ClearData(...).
+  bool IsCompleted() const {
+    // The case when there is no calls to SetData(...) or ClearData(...).
+    if (last_received_task_ == 0)
+      return false;
+    // The case when there is at least one unfinished task.
+    if (last_processed_task_ != last_received_task_)
+      return false;
+    return true;
+  }
+
+  // Called on computation completion. |task_data| corresponds to finalized
+  // task.
+  void OnComputationComplete(TaskResults&& task_data) {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+    if (task_data.task_id <= last_processed_task_) {
+      // The task is outdated (e.g.: ClearData() was called in the meantime).
+      return;
+    }
+    last_processed_task_ = task_data.task_id;
+    const bool is_complete = IsCompleted();
+    if (!is_complete && servers_ == task_data.servers) {
+      // No changes in the object's state.
+      return;
+    }
+    servers_ = std::move(task_data.servers);
+    // Notifies observers about changes.
+    for (auto& observer : observers_)
+      observer.OnServersChanged(is_complete, servers_);
+  }
+
+  // The sequence used for parsing JSON and computing the list of servers.
+  scoped_refptr<base::SequencedTaskRunner> task_runner_;
+
+  // Id of the last scheduled task.
+  int last_received_task_ = 0;
+  // Id of the last completed task.
+  int last_processed_task_ = 0;
+  // The current list of servers.
+  std::vector<PrintServer> servers_;
+
+  base::ObserverList<PrintServersProvider::Observer>::Unchecked observers_;
+  base::WeakPtrFactory<PrintServersProviderImpl> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(PrintServersProviderImpl);
+};
+
+}  // namespace
+
+// static
+std::unique_ptr<PrintServersProvider> PrintServersProvider::Create() {
+  return std::make_unique<PrintServersProviderImpl>();
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/printing/print_servers_provider.h b/chrome/browser/chromeos/printing/print_servers_provider.h
new file mode 100644
index 0000000..7b3f0eda
--- /dev/null
+++ b/chrome/browser/chromeos/printing/print_servers_provider.h
@@ -0,0 +1,60 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_PRINTING_PRINT_SERVERS_PROVIDER_H_
+#define CHROME_BROWSER_CHROMEOS_PRINTING_PRINT_SERVERS_PROVIDER_H_
+
+#include <memory>
+#include <vector>
+
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "chrome/browser/chromeos/printing/print_server.h"
+
+namespace chromeos {
+
+// This class observes values of policies related to external print servers
+// and calculates resultant list of available print servers. This list is
+// propagated to Observers.
+// All methods must be called from the same sequence (UI) and all observers'
+// notifications will be called from this sequence.
+class PrintServersProvider
+    : public base::SupportsWeakPtr<PrintServersProvider> {
+ public:
+  class Observer {
+   public:
+    virtual ~Observer() = default;
+    // |complete| is true if all policies have been parsed and applied (even
+    // when parsing errors occurred), false means that a new list of available
+    // print servers is being calculated or that no calls to SetData(...) or
+    // ClearData(...) were made. |servers| contains the current list of
+    // available print servers; every server has valid and unique URL. This
+    // notification is called when value of any of these two parameters changes.
+    virtual void OnServersChanged(bool complete,
+                                  const std::vector<PrintServer>& servers) = 0;
+  };
+
+  static std::unique_ptr<PrintServersProvider> Create();
+  virtual ~PrintServersProvider() = default;
+
+  // This method also calls directly OnServersChanged(...) from |observer|.
+  virtual void AddObserver(Observer* observer) = 0;
+  virtual void RemoveObserver(Observer* observer) = 0;
+
+  // Sets the content from the policy. |data| is a list of all print servers in
+  // JSON format.
+  virtual void SetData(std::unique_ptr<std::string> data) = 0;
+  // Clears the content of the policy.
+  virtual void ClearData() = 0;
+
+ protected:
+  PrintServersProvider() = default;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(PrintServersProvider);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_PRINTING_PRINT_SERVERS_PROVIDER_H_
diff --git a/chrome/browser/chromeos/printing/print_servers_provider_factory.cc b/chrome/browser/chromeos/printing/print_servers_provider_factory.cc
new file mode 100644
index 0000000..5ae54d3
--- /dev/null
+++ b/chrome/browser/chromeos/printing/print_servers_provider_factory.cc
@@ -0,0 +1,60 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/printing/print_servers_provider_factory.h"
+
+#include "base/no_destructor.h"
+#include "chrome/browser/chromeos/printing/print_servers_provider.h"
+#include "chrome/browser/chromeos/profiles/profile_helper.h"
+#include "chrome/browser/profiles/profile.h"
+#include "components/account_id/account_id.h"
+#include "components/user_manager/user.h"
+#include "content/public/browser/browser_thread.h"
+
+namespace chromeos {
+
+// static
+PrintServersProviderFactory* PrintServersProviderFactory::Get() {
+  static base::NoDestructor<PrintServersProviderFactory> instance;
+  return instance.get();
+}
+
+base::WeakPtr<PrintServersProvider>
+PrintServersProviderFactory::GetForAccountId(const AccountId& account_id) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  auto found = providers_by_user_.find(account_id);
+  if (found != providers_by_user_.end()) {
+    return found->second->AsWeakPtr();
+  }
+
+  providers_by_user_[account_id] = PrintServersProvider::Create();
+  return providers_by_user_[account_id]->AsWeakPtr();
+}
+
+base::WeakPtr<PrintServersProvider> PrintServersProviderFactory::GetForProfile(
+    Profile* profile) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  const user_manager::User* user =
+      ProfileHelper::Get()->GetUserByProfile(profile);
+  if (!user)
+    return nullptr;
+
+  return GetForAccountId(user->GetAccountId());
+}
+
+void PrintServersProviderFactory::RemoveForAccountId(
+    const AccountId& account_id) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  providers_by_user_.erase(account_id);
+}
+
+void PrintServersProviderFactory::Shutdown() {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  providers_by_user_.clear();
+}
+
+PrintServersProviderFactory::PrintServersProviderFactory() = default;
+PrintServersProviderFactory::~PrintServersProviderFactory() = default;
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/printing/print_servers_provider_factory.h b/chrome/browser/chromeos/printing/print_servers_provider_factory.h
new file mode 100644
index 0000000..acbd881
--- /dev/null
+++ b/chrome/browser/chromeos/printing/print_servers_provider_factory.h
@@ -0,0 +1,57 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_PRINTING_PRINT_SERVERS_PROVIDER_FACTORY_H_
+#define CHROME_BROWSER_CHROMEOS_PRINTING_PRINT_SERVERS_PROVIDER_FACTORY_H_
+
+#include <map>
+#include <memory>
+
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+
+class AccountId;
+class Profile;
+
+namespace chromeos {
+
+class PrintServersProvider;
+
+// Dispenses PrintServersProvider objects based on account id.  Access to this
+// object should be sequenced. All methods are called from UI thread.
+class PrintServersProviderFactory {
+ public:
+  static PrintServersProviderFactory* Get();
+
+  PrintServersProviderFactory();
+
+  // Returns a WeakPtr to the PrintServersProvider registered for
+  // |account_id|. If an PrintServersProvider does not exist, one will be
+  // created for |account_id|. The returned object remains valid until
+  // RemoveForUserId or Shutdown is called.
+  base::WeakPtr<PrintServersProvider> GetForAccountId(
+      const AccountId& account_id);
+
+  // Returns a WeakPtr to the PrintServersProvider registered for |profile|
+  // which could be nullptr if |profile| does not map to a valid AccountId. The
+  // returned object remains valid until RemoveForUserId or Shutdown is called.
+  base::WeakPtr<PrintServersProvider> GetForProfile(Profile* profile);
+
+  // Deletes the PrintServersProvider registered for |account_id|.
+  void RemoveForAccountId(const AccountId& account_id);
+
+  // Tear down all PrintServersProviders.
+  void Shutdown();
+
+ private:
+  ~PrintServersProviderFactory();
+
+  std::map<AccountId, std::unique_ptr<PrintServersProvider>> providers_by_user_;
+
+  DISALLOW_COPY_AND_ASSIGN(PrintServersProviderFactory);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_PRINTING_PRINT_SERVERS_PROVIDER_FACTORY_H_
diff --git a/chrome/browser/chromeos/printing/print_servers_provider_unittest.cc b/chrome/browser/chromeos/printing/print_servers_provider_unittest.cc
new file mode 100644
index 0000000..dfb5babe1
--- /dev/null
+++ b/chrome/browser/chromeos/printing/print_servers_provider_unittest.cc
@@ -0,0 +1,264 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/printing/print_servers_provider.h"
+
+#include <string>
+#include <vector>
+
+#include "chrome/browser/chromeos/printing/print_server.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+namespace chromeos {
+namespace {
+
+// An example of configuration file with print servers.
+constexpr char kPrintServersPolicyJson1[] = R"json(
+[
+  {
+    "display_name": "MyPrintServer",
+    "url": "ipp://192.168.1.5"
+  }, {
+    "display_name": "Server API",
+    "url":"ipps://print-server.intra.example.com:443/ipp/cl2k4"
+  }, {
+    "display_name": "YaLP",
+    "url": "http://192.168.1.8/bleble/print"
+  }
+])json";
+
+// Corresponding vector with PrintServers.
+const std::vector<PrintServer> kPrintServersPolicyData1 = {
+    {GURL("http://192.168.1.5"), "MyPrintServer"},
+    {GURL("https://print-server.intra.example.com:443/ipp/cl2k4"),
+     "Server API"},
+    {GURL("http://192.168.1.8/bleble/print"), "YaLP"}};
+
+// A different configuration file with print servers.
+constexpr char kPrintServersPolicyJson2[] = R"json(
+[
+  {
+    "display_name": "CUPS",
+    "url": "ipp://192.168.1.15"
+  }
+])json";
+
+// Corresponding vector with PrintServers.
+const std::vector<PrintServer> kPrintServersPolicyData2 = {
+    {GURL("http://192.168.1.15"), "CUPS"}};
+
+// Another configuration file with print servers, this time with invalid URLs.
+constexpr char kPrintServersPolicyJson3[] = R"json(
+[
+  {
+    "display_name": "server_1",
+    "url": "ipp://aaa.bbb.ccc:666/xx"
+  }, {
+    "display_name": "server_2",
+    "url":"ipps:/print.server.intra.example.com:443z/ipp"
+  }, {
+    "display_name": "server_3",
+    "url": "file://192.168.1.8/bleble/print"
+  }, {
+    "display_name": "server_4",
+    "url": "http://aaa.bbb.ccc:666/xx"
+  }, {
+    "display_name": "server_5",
+    "url": "\n \t ipps://aaa.bbb.ccc:666/yy"
+  }, {
+    "display_name": "server_6",
+    "url":"ipps:/print.server^.intra.example.com/ipp"
+  }
+])json";
+
+// Corresponding vector with PrintServers. Only the first record is included,
+// because other ones are invalid:
+// server_2 - invalid URL - invalid port number
+// server_3 - unsupported scheme
+// server_4 - duplicate of server_1
+// server_5 - leading whitespaces, they should be trimmed
+// server_6 - invalid URL - forbidden character
+const std::vector<PrintServer> kPrintServersPolicyData3 = {
+    {GURL("http://aaa.bbb.ccc:666/xx"), "server_1"},
+    {GURL("https://aaa.bbb.ccc:666/yy"), "server_5"}};
+
+// Observer that stores all its calls.
+class TestObserver : public PrintServersProvider::Observer {
+ public:
+  struct ObserverCall {
+    bool complete;
+    std::vector<PrintServer> servers;
+    ObserverCall(bool complete, const std::vector<PrintServer>& servers)
+        : complete(complete), servers(servers) {}
+  };
+
+  ~TestObserver() override = default;
+
+  // Callback from PrintServersProvider::Observer.
+  void OnServersChanged(bool complete,
+                        const std::vector<PrintServer>& servers) override {
+    calls_.emplace_back(complete, servers);
+  }
+
+  // Returns history of all calls to OnServersChanged(...).
+  const std::vector<ObserverCall>& GetCalls() const { return calls_; }
+
+ private:
+  // history of all callbacks
+  std::vector<ObserverCall> calls_;
+};
+
+class PrintServersProviderTest : public testing::Test {
+ public:
+  PrintServersProviderTest()
+      : external_servers_(PrintServersProvider::Create()) {}
+
+ protected:
+  // everything must be called on Chrome_UIThread
+  content::TestBrowserThreadBundle scoped_task_environment_;
+  std::unique_ptr<PrintServersProvider> external_servers_;
+};
+
+// Verify that the object can be destroyed while parsing is in progress.
+TEST_F(PrintServersProviderTest, DestructionIsSafe) {
+  {
+    std::unique_ptr<PrintServersProvider> servers =
+        PrintServersProvider::Create();
+    servers->SetData(std::make_unique<std::string>(kPrintServersPolicyJson1));
+    // Data is valid.  Computation is proceeding.
+  }
+  // servers is out of scope.  Destructor has run.  Pump the message queue to
+  // see if anything strange happens.
+  scoped_task_environment_.RunUntilIdle();
+}
+
+// Verify that we're initially unset and empty.
+// After initialization "complete" flags = false.
+TEST_F(PrintServersProviderTest, InitialConditions) {
+  TestObserver obs;
+  external_servers_->AddObserver(&obs);
+  ASSERT_EQ(obs.GetCalls().size(), 1u);
+  EXPECT_EQ(obs.GetCalls().back().complete, false);
+  EXPECT_TRUE(obs.GetCalls().back().servers.empty());
+  external_servers_->RemoveObserver(&obs);
+}
+
+// Verify two ClearData() calls.
+// ClearData() sets empty list and "complete" flag = true.
+TEST_F(PrintServersProviderTest, ClearData2) {
+  TestObserver obs;
+  external_servers_->AddObserver(&obs);
+  external_servers_->ClearData();
+  ASSERT_EQ(obs.GetCalls().size(), 2u);
+  EXPECT_EQ(obs.GetCalls().back().complete, true);
+  EXPECT_TRUE(obs.GetCalls().back().servers.empty());
+  external_servers_->ClearData();
+  // no changes, because observed object's state is the same
+  ASSERT_EQ(obs.GetCalls().size(), 2u);
+  external_servers_->RemoveObserver(&obs);
+}
+
+// Verifies SetData().
+// SetData(...) sets "complete" flag = false, then parse given data in the
+// background and sets resultant list with "complete" flag = true.
+TEST_F(PrintServersProviderTest, SetData) {
+  auto blob1 = std::make_unique<std::string>(kPrintServersPolicyJson1);
+  TestObserver obs;
+  external_servers_->AddObserver(&obs);
+  external_servers_->SetData(std::move(blob1));
+  // single call from AddObserver, since SetData(...) is not processed yet
+  ASSERT_EQ(obs.GetCalls().size(), 1u);
+  // make sure that SetData(...) is processed
+  scoped_task_environment_.RunUntilIdle();
+  // now the call from SetData(...) is there also
+  ASSERT_EQ(obs.GetCalls().size(), 2u);
+  EXPECT_EQ(obs.GetCalls().back().complete, true);
+  EXPECT_EQ(obs.GetCalls().back().servers, kPrintServersPolicyData1);
+  external_servers_->RemoveObserver(&obs);
+}
+
+// Verify two SetData() calls.
+TEST_F(PrintServersProviderTest, SetData2) {
+  auto blob1 = std::make_unique<std::string>(kPrintServersPolicyJson1);
+  auto blob2 = std::make_unique<std::string>(kPrintServersPolicyJson2);
+  TestObserver obs;
+  external_servers_->AddObserver(&obs);
+  external_servers_->SetData(std::move(blob1));
+  // single call from AddObserver, since SetData(...) is not processed yet
+  ASSERT_EQ(obs.GetCalls().size(), 1u);
+  external_servers_->SetData(std::move(blob2));
+  // no changes, because nothing was processed yet
+  ASSERT_EQ(obs.GetCalls().size(), 1u);
+  scoped_task_environment_.RunUntilIdle();
+  // both calls from SetData(...) should be reported
+  ASSERT_EQ(obs.GetCalls().size(), 3u);
+  EXPECT_EQ(obs.GetCalls()[1].complete, false);
+  EXPECT_EQ(obs.GetCalls()[1].servers, kPrintServersPolicyData1);
+  EXPECT_EQ(obs.GetCalls()[2].complete, true);
+  EXPECT_EQ(obs.GetCalls()[2].servers, kPrintServersPolicyData2);
+  external_servers_->RemoveObserver(&obs);
+}
+
+// Verifies SetData() + ClearData() before SetData() completes.
+TEST_F(PrintServersProviderTest, SetDataClearData) {
+  auto blob1 = std::make_unique<std::string>(kPrintServersPolicyJson1);
+  TestObserver obs;
+  external_servers_->AddObserver(&obs);
+  external_servers_->SetData(std::move(blob1));
+  // single call from AddObserver, since SetData(...) is not processed yet
+  ASSERT_EQ(obs.GetCalls().size(), 1u);
+  external_servers_->ClearData();
+  // a call from ClearData() was added, SetData(...) is not processed yet
+  ASSERT_EQ(obs.GetCalls().size(), 2u);
+  EXPECT_EQ(obs.GetCalls().back().complete, true);
+  EXPECT_TRUE(obs.GetCalls().back().servers.empty());
+  // process SetData(...)
+  scoped_task_environment_.RunUntilIdle();
+  // no changes, effects of SetData(...) were already replaced by ClearData()
+  ASSERT_EQ(obs.GetCalls().size(), 2u);
+  external_servers_->RemoveObserver(&obs);
+}
+
+// Verifies ClearData() before AddObserver() + SetData() after.
+TEST_F(PrintServersProviderTest, ClearDataSetData) {
+  auto blob1 = std::make_unique<std::string>(kPrintServersPolicyJson1);
+  TestObserver obs;
+  external_servers_->ClearData();
+  external_servers_->AddObserver(&obs);
+  // single call from AddObserver, but with effects of ClearData()
+  ASSERT_EQ(obs.GetCalls().size(), 1u);
+  EXPECT_EQ(obs.GetCalls().back().complete, true);
+  EXPECT_TRUE(obs.GetCalls().back().servers.empty());
+  external_servers_->SetData(std::move(blob1));
+  // SetData(...) is not completed, but generates a call switching "complete"
+  // flag to false
+  ASSERT_EQ(obs.GetCalls().size(), 2u);
+  EXPECT_EQ(obs.GetCalls().back().complete, false);
+  EXPECT_TRUE(obs.GetCalls().back().servers.empty());
+  // process SetData(...)
+  scoped_task_environment_.RunUntilIdle();
+  // next call with results from processed SetData(...)
+  ASSERT_EQ(obs.GetCalls().size(), 3u);
+  EXPECT_EQ(obs.GetCalls().back().complete, true);
+  EXPECT_EQ(obs.GetCalls().back().servers, kPrintServersPolicyData1);
+  external_servers_->RemoveObserver(&obs);
+}
+
+// Verify that invalid URLs are filtered out.
+TEST_F(PrintServersProviderTest, InvalidURLs) {
+  auto blob3 = std::make_unique<std::string>(kPrintServersPolicyJson3);
+  TestObserver obs;
+  external_servers_->AddObserver(&obs);
+  external_servers_->SetData(std::move(blob3));
+  scoped_task_environment_.RunUntilIdle();
+  ASSERT_EQ(obs.GetCalls().size(), 2u);
+  EXPECT_EQ(obs.GetCalls().back().complete, true);
+  EXPECT_EQ(obs.GetCalls().back().servers, kPrintServersPolicyData3);
+  external_servers_->RemoveObserver(&obs);
+}
+
+}  // namespace
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/settings/device_identity_provider.cc b/chrome/browser/chromeos/settings/device_identity_provider.cc
index 9dcf3e0..1bd1f6c 100644
--- a/chrome/browser/chromeos/settings/device_identity_provider.cc
+++ b/chrome/browser/chromeos/settings/device_identity_provider.cc
@@ -56,7 +56,7 @@
     : OAuth2AccessTokenManager::Consumer(oauth_consumer_name),
       callback_(std::move(callback)) {
   access_token_request_ =
-      token_service->StartRequest(active_account_id, scopes, this);
+      token_service->StartAccessTokenRequest(active_account_id, scopes, this);
 }
 
 ActiveAccountAccessTokenFetcherImpl::~ActiveAccountAccessTokenFetcherImpl() {}
diff --git a/chrome/browser/chromeos/settings/device_oauth2_token_service.cc b/chrome/browser/chromeos/settings/device_oauth2_token_service.cc
index 6a37baa..c1bc597 100644
--- a/chrome/browser/chromeos/settings/device_oauth2_token_service.cc
+++ b/chrome/browser/chromeos/settings/device_oauth2_token_service.cc
@@ -17,6 +17,7 @@
 #include "chrome/common/pref_names.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "google_apis/gaia/google_service_auth_error.h"
+#include "google_apis/gaia/oauth2_access_token_fetcher.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 
 namespace chromeos {
@@ -47,13 +48,19 @@
 }
 
 DeviceOAuth2TokenService::DeviceOAuth2TokenService(
-    std::unique_ptr<DeviceOAuth2TokenServiceDelegate> delegate)
-    : OAuth2TokenService(std::move(delegate)) {
-  GetDeviceDelegate()->InitializeWithValidationStatusDelegate(this);
+    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
+    PrefService* local_state) {
+  delegate_ = std::make_unique<DeviceOAuth2TokenServiceDelegate>(
+      url_loader_factory, local_state, this);
+  delegate_->AddObserver(this);
+  token_manager_ = std::make_unique<OAuth2AccessTokenManager>(
+      this /* OAuth2AccessTokenManager::Delegate* */);
+  delegate_->InitializeWithValidationStatusDelegate(this);
 }
 
 DeviceOAuth2TokenService::~DeviceOAuth2TokenService() {
-  GetDeviceDelegate()->ClearValidationStatusDelegate();
+  delegate_->RemoveObserver(this);
+  delegate_->ClearValidationStatusDelegate();
   FlushPendingRequests(false, GoogleServiceAuthError::REQUEST_CANCELED);
 }
 
@@ -66,16 +73,16 @@
 void DeviceOAuth2TokenService::SetAndSaveRefreshToken(
     const std::string& refresh_token,
     const StatusCallback& result_callback) {
-  GetDeviceDelegate()->SetAndSaveRefreshToken(refresh_token, result_callback);
+  delegate_->SetAndSaveRefreshToken(refresh_token, result_callback);
 }
 
 std::string DeviceOAuth2TokenService::GetRobotAccountId() const {
-  return GetDeviceDelegate()->GetRobotAccountId();
+  return delegate_->GetRobotAccountId();
 }
 
 void DeviceOAuth2TokenService::set_robot_account_id_for_testing(
     const CoreAccountId& account_id) {
-  GetDeviceDelegate()->set_robot_account_id_for_testing(account_id);
+  delegate_->set_robot_account_id_for_testing(account_id);
 }
 
 void DeviceOAuth2TokenService::SetRefreshTokenAvailableCallback(
@@ -88,16 +95,78 @@
   on_refresh_token_revoked_callback_ = std::move(callback);
 }
 
+std::unique_ptr<OAuth2AccessTokenManager::Request>
+DeviceOAuth2TokenService::StartAccessTokenRequest(
+    const CoreAccountId& account_id,
+    const OAuth2AccessTokenManager::ScopeSet& scopes,
+    OAuth2AccessTokenManager::Consumer* consumer) {
+  return token_manager_->StartRequest(account_id, scopes, consumer);
+}
+
+void DeviceOAuth2TokenService::InvalidateAccessToken(
+    const CoreAccountId& account_id,
+    const OAuth2AccessTokenManager::ScopeSet& scopes,
+    const std::string& access_token) {
+  token_manager_->InvalidateAccessToken(account_id, scopes, access_token);
+}
+
+bool DeviceOAuth2TokenService::RefreshTokenIsAvailable(
+    const CoreAccountId& account_id) const {
+  return delegate_->RefreshTokenIsAvailable(account_id);
+}
+
+OAuth2AccessTokenManager* DeviceOAuth2TokenService::GetAccessTokenManager() {
+  return token_manager_.get();
+}
+
+std::unique_ptr<OAuth2AccessTokenFetcher>
+DeviceOAuth2TokenService::CreateAccessTokenFetcher(
+    const CoreAccountId& account_id,
+    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
+    OAuth2AccessTokenConsumer* consumer) {
+  return delegate_->CreateAccessTokenFetcher(account_id, url_loader_factory,
+                                             consumer);
+}
+
+bool DeviceOAuth2TokenService::HasRefreshToken(
+    const CoreAccountId& account_id) const {
+  return RefreshTokenIsAvailable(account_id);
+}
+
+bool DeviceOAuth2TokenService::FixRequestErrorIfPossible() {
+  return delegate_->FixRequestErrorIfPossible();
+}
+
+scoped_refptr<network::SharedURLLoaderFactory>
+DeviceOAuth2TokenService::GetURLLoaderFactory() const {
+  return delegate_->GetURLLoaderFactory();
+}
+
+void DeviceOAuth2TokenService::OnAccessTokenInvalidated(
+    const CoreAccountId& account_id,
+    const std::string& client_id,
+    const std::set<std::string>& scopes,
+    const std::string& access_token) {
+  delegate_->OnAccessTokenInvalidated(account_id, client_id, scopes,
+                                      access_token);
+}
+
+void DeviceOAuth2TokenService::OnAccessTokenFetched(
+    const CoreAccountId& account_id,
+    const GoogleServiceAuthError& error) {
+  // Update the auth error state so auth errors are appropriately communicated
+  // to the user.
+  delegate_->UpdateAuthError(account_id, error);
+}
+
 void DeviceOAuth2TokenService::OnRefreshTokenAvailable(
     const CoreAccountId& account_id) {
-  OAuth2TokenService::OnRefreshTokenAvailable(account_id);
   if (on_refresh_token_available_callback_)
     on_refresh_token_available_callback_.Run(account_id);
 }
 
 void DeviceOAuth2TokenService::OnRefreshTokenRevoked(
     const CoreAccountId& account_id) {
-  OAuth2TokenService::OnRefreshTokenRevoked(account_id);
   if (on_refresh_token_revoked_callback_)
     on_refresh_token_revoked_callback_.Run(account_id);
 }
@@ -109,17 +178,17 @@
     const std::string& client_id,
     const std::string& client_secret,
     const OAuth2AccessTokenManager::ScopeSet& scopes) {
-  switch (GetDeviceDelegate()->state_) {
+  switch (delegate_->state_) {
     case DeviceOAuth2TokenServiceDelegate::STATE_VALIDATION_PENDING:
       // If this is the first request for a token, start validation.
-      GetDeviceDelegate()->StartValidation();
+      delegate_->StartValidation();
       FALLTHROUGH;
     case DeviceOAuth2TokenServiceDelegate::STATE_LOADING:
     case DeviceOAuth2TokenServiceDelegate::STATE_VALIDATION_STARTED:
       // Add a pending request that will be satisfied once validation completes.
       pending_requests_.push_back(new PendingRequest(
           request->AsWeakPtr(), client_id, client_secret, scopes));
-      GetDeviceDelegate()->RequestValidation();
+      delegate_->RequestValidation();
       return true;
     case DeviceOAuth2TokenServiceDelegate::STATE_NO_TOKEN:
       FailRequest(request, GoogleServiceAuthError::USER_NOT_SIGNED_UP);
@@ -132,7 +201,7 @@
       return false;
   }
 
-  NOTREACHED() << "Unexpected state " << GetDeviceDelegate()->state_;
+  NOTREACHED() << "Unexpected state " << delegate_->state_;
   return false;
 }
 
@@ -149,10 +218,10 @@
       continue;
 
     if (token_is_valid) {
-      GetAccessTokenManager()->FetchOAuth2Token(
+      token_manager_->FetchOAuth2Token(
           scoped_request->request.get(),
           scoped_request->request->GetAccountId(),
-          GetDeviceDelegate()->GetURLLoaderFactory(), scoped_request->client_id,
+          delegate_->GetURLLoaderFactory(), scoped_request->client_id,
           scoped_request->client_secret, scoped_request->scopes);
     } else {
       FailRequest(scoped_request->request.get(), error);
@@ -175,15 +244,4 @@
                      request->AsWeakPtr(), auth_error,
                      OAuth2AccessTokenConsumer::TokenResponse()));
 }
-
-DeviceOAuth2TokenServiceDelegate*
-DeviceOAuth2TokenService::GetDeviceDelegate() {
-  return static_cast<DeviceOAuth2TokenServiceDelegate*>(GetDelegate());
-}
-
-const DeviceOAuth2TokenServiceDelegate*
-DeviceOAuth2TokenService::GetDeviceDelegate() const {
-  return static_cast<const DeviceOAuth2TokenServiceDelegate*>(GetDelegate());
-}
-
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/settings/device_oauth2_token_service.h b/chrome/browser/chromeos/settings/device_oauth2_token_service.h
index f0ac3dd..0732921 100644
--- a/chrome/browser/chromeos/settings/device_oauth2_token_service.h
+++ b/chrome/browser/chromeos/settings/device_oauth2_token_service.h
@@ -11,24 +11,31 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "chrome/browser/chromeos/settings/device_oauth2_token_service_delegate.h"
-#include "google_apis/gaia/oauth2_token_service.h"
+#include "google_apis/gaia/core_account_id.h"
+#include "google_apis/gaia/google_service_auth_error.h"
+#include "google_apis/gaia/oauth2_access_token_consumer.h"
+#include "google_apis/gaia/oauth2_access_token_manager.h"
+#include "google_apis/gaia/oauth2_token_service_observer.h"
+
+namespace network {
+class SharedURLLoaderFactory;
+}
 
 class PrefRegistrySimple;
+class PrefService;
 
 namespace chromeos {
 
 // DeviceOAuth2TokenService retrieves OAuth2 access tokens for a given
 // set of scopes using the device-level OAuth2 any-api refresh token
 // obtained during enterprise device enrollment.
-//
-// See |OAuth2TokenService| for usage details.
-//
 // When using DeviceOAuth2TokenService, a value of |GetRobotAccountId| should
 // be used in places where API expects |account_id|.
 //
 // Note that requests must be made from the UI thread.
 class DeviceOAuth2TokenService
-    : public OAuth2TokenService,
+    : public OAuth2TokenServiceObserver,
+      public OAuth2AccessTokenManager::Delegate,
       public DeviceOAuth2TokenServiceDelegate::ValidationStatusDelegate {
  public:
   typedef base::RepeatingCallback<void(const CoreAccountId& /* account_id */)>
@@ -62,14 +69,45 @@
   // If set, this callback will be invoked when a refresh token is revoked.
   void SetRefreshTokenRevokedCallback(RefreshTokenRevokedCallback callback);
 
-  // OAuth2TokenServiceObserver:
-  // NOTE: OAuth2TokenService already adds itself as an observer, so this class
-  // doesn't actually need to add/remove itself as an O2TSObserver.
-  void OnRefreshTokenAvailable(const CoreAccountId& account_id) override;
-  void OnRefreshTokenRevoked(const CoreAccountId& account_id) override;
+  // Checks in the cache for a valid access token for a specified |account_id|
+  // and |scopes|, and if not found starts a request for an OAuth2 access token
+  // using the OAuth2 refresh token maintained by this instance for that
+  // |account_id|. The caller owns the returned Request.
+  // |scopes| is the set of scopes to get an access token for, |consumer| is
+  // the object that will be called back with results if the returned request
+  // is not deleted.
+  std::unique_ptr<OAuth2AccessTokenManager::Request> StartAccessTokenRequest(
+      const CoreAccountId& account_id,
+      const OAuth2AccessTokenManager::ScopeSet& scopes,
+      OAuth2AccessTokenManager::Consumer* consumer);
 
- protected:
-  // Implementation of OAuth2AccessTokenManager::Delegate
+  // Mark an OAuth2 |access_token| issued for |account_id| and |scopes| as
+  // invalid. This should be done if the token was received from this class,
+  // but was not accepted by the server (e.g., the server returned
+  // 401 Unauthorized). The token will be removed from the cache for the given
+  // scopes.
+  void InvalidateAccessToken(const CoreAccountId& account_id,
+                             const OAuth2AccessTokenManager::ScopeSet& scopes,
+                             const std::string& access_token);
+
+  bool RefreshTokenIsAvailable(const CoreAccountId& account_id) const;
+
+  OAuth2AccessTokenManager* GetAccessTokenManager();
+
+ private:
+  friend class DeviceOAuth2TokenServiceFactory;
+  friend class DeviceOAuth2TokenServiceTest;
+  struct PendingRequest;
+
+  // OAuth2AccessTokenManager::Delegate:
+  std::unique_ptr<OAuth2AccessTokenFetcher> CreateAccessTokenFetcher(
+      const CoreAccountId& account_id,
+      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
+      OAuth2AccessTokenConsumer* consumer) override;
+  bool HasRefreshToken(const CoreAccountId& account_id) const override;
+  bool FixRequestErrorIfPossible() override;
+  scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory()
+      const override;
   bool HandleAccessTokenFetch(
       OAuth2AccessTokenManager::RequestImpl* request,
       const CoreAccountId& account_id,
@@ -77,11 +115,16 @@
       const std::string& client_id,
       const std::string& client_secret,
       const OAuth2AccessTokenManager::ScopeSet& scopes) override;
+  void OnAccessTokenInvalidated(const CoreAccountId& account_id,
+                                const std::string& client_id,
+                                const std::set<std::string>& scopes,
+                                const std::string& access_token) override;
+  void OnAccessTokenFetched(const CoreAccountId& account_id,
+                            const GoogleServiceAuthError& error) override;
 
- private:
-  friend class DeviceOAuth2TokenServiceFactory;
-  friend class DeviceOAuth2TokenServiceTest;
-  struct PendingRequest;
+  // OAuth2TokenServiceObserver:
+  void OnRefreshTokenAvailable(const CoreAccountId& account_id) override;
+  void OnRefreshTokenRevoked(const CoreAccountId& account_id) override;
 
   // Implementation of
   // DeviceOAuth2TokenServiceDelegate::ValidationStatusDelegate.
@@ -89,7 +132,8 @@
 
   // Use DeviceOAuth2TokenServiceFactory to get an instance of this class.
   explicit DeviceOAuth2TokenService(
-      std::unique_ptr<DeviceOAuth2TokenServiceDelegate> delegate);
+      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
+      PrefService* local_state);
   ~DeviceOAuth2TokenService() override;
 
   // Flushes |pending_requests_|, indicating the specified result.
@@ -100,8 +144,10 @@
   void FailRequest(OAuth2AccessTokenManager::RequestImpl* request,
                    GoogleServiceAuthError::State error);
 
-  DeviceOAuth2TokenServiceDelegate* GetDeviceDelegate();
-  const DeviceOAuth2TokenServiceDelegate* GetDeviceDelegate() const;
+  // TODO(https://crbug.com/967598): Merge DeviceOAuth2TokenServiceDelegate
+  // into DeviceOAuth2TokenService.
+  std::unique_ptr<DeviceOAuth2TokenServiceDelegate> delegate_;
+  std::unique_ptr<OAuth2AccessTokenManager> token_manager_;
 
   // Currently open requests that are waiting while loading the system salt or
   // validating the token.
diff --git a/chrome/browser/chromeos/settings/device_oauth2_token_service_delegate.cc b/chrome/browser/chromeos/settings/device_oauth2_token_service_delegate.cc
index 997e68f8..6be3110 100644
--- a/chrome/browser/chromeos/settings/device_oauth2_token_service_delegate.cc
+++ b/chrome/browser/chromeos/settings/device_oauth2_token_service_delegate.cc
@@ -33,7 +33,8 @@
 
 DeviceOAuth2TokenServiceDelegate::DeviceOAuth2TokenServiceDelegate(
     scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-    PrefService* local_state)
+    PrefService* local_state,
+    DeviceOAuth2TokenService* service)
     : url_loader_factory_(url_loader_factory),
       local_state_(local_state),
       state_(STATE_LOADING),
diff --git a/chrome/browser/chromeos/settings/device_oauth2_token_service_delegate.h b/chrome/browser/chromeos/settings/device_oauth2_token_service_delegate.h
index 5c547151..6251482 100644
--- a/chrome/browser/chromeos/settings/device_oauth2_token_service_delegate.h
+++ b/chrome/browser/chromeos/settings/device_oauth2_token_service_delegate.h
@@ -30,13 +30,16 @@
 
 namespace chromeos {
 
+class DeviceOAuth2TokenService;
+
 class DeviceOAuth2TokenServiceDelegate
     : public OAuth2TokenServiceDelegate,
       public gaia::GaiaOAuthClient::Delegate {
  public:
   DeviceOAuth2TokenServiceDelegate(
       scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
-      PrefService* local_state);
+      PrefService* local_state,
+      DeviceOAuth2TokenService* service);
   ~DeviceOAuth2TokenServiceDelegate() override;
 
   typedef base::Callback<void(bool)> StatusCallback;
diff --git a/chrome/browser/chromeos/settings/device_oauth2_token_service_factory.cc b/chrome/browser/chromeos/settings/device_oauth2_token_service_factory.cc
index 2ce3103..590fe10 100644
--- a/chrome/browser/chromeos/settings/device_oauth2_token_service_factory.cc
+++ b/chrome/browser/chromeos/settings/device_oauth2_token_service_factory.cc
@@ -33,9 +33,8 @@
     PrefService* local_state) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   DCHECK(!g_device_oauth2_token_service_);
-  g_device_oauth2_token_service_ = new DeviceOAuth2TokenService(
-      std::make_unique<DeviceOAuth2TokenServiceDelegate>(url_loader_factory,
-                                                         local_state));
+  g_device_oauth2_token_service_ =
+      new DeviceOAuth2TokenService(url_loader_factory, local_state);
 }
 
 // static
diff --git a/chrome/browser/chromeos/settings/device_oauth2_token_service_unittest.cc b/chrome/browser/chromeos/settings/device_oauth2_token_service_unittest.cc
index 81de19a..4654e73 100644
--- a/chrome/browser/chromeos/settings/device_oauth2_token_service_unittest.cc
+++ b/chrome/browser/chromeos/settings/device_oauth2_token_service_unittest.cc
@@ -90,8 +90,9 @@
   }
 
   std::unique_ptr<OAuth2AccessTokenManager::Request> StartTokenRequest() {
-    return oauth2_service_->StartRequest(oauth2_service_->GetRobotAccountId(),
-                                         std::set<std::string>(), &consumer_);
+    return oauth2_service_->StartAccessTokenRequest(
+        oauth2_service_->GetRobotAccountId(), std::set<std::string>(),
+        &consumer_);
   }
 
   void SetUp() override {
@@ -120,12 +121,12 @@
   }
 
   void CreateService() {
-    auto delegate = std::make_unique<DeviceOAuth2TokenServiceDelegate>(
+    oauth2_service_.reset(new DeviceOAuth2TokenService(
         test_url_loader_factory_.GetSafeWeakWrapper(),
-        scoped_testing_local_state_.Get());
-    delegate->max_refresh_token_validation_retries_ = 0;
-    oauth2_service_.reset(new DeviceOAuth2TokenService(std::move(delegate)));
-    oauth2_service_->set_max_authorization_token_fetch_retries_for_testing(0);
+        scoped_testing_local_state_.Get()));
+    oauth2_service_->delegate_->max_refresh_token_validation_retries_ = 0;
+    oauth2_service_->GetAccessTokenManager()
+        ->set_max_authorization_token_fetch_retries_for_testing(0);
   }
 
   // Utility method to set a value in Local State for the device refresh token
@@ -141,6 +142,10 @@
            "  \"user_id\": \"1234567890\" }";
   }
 
+  DeviceOAuth2TokenServiceDelegate* GetDelegate() {
+    return oauth2_service_->delegate_.get();
+  }
+
   bool RefreshTokenIsAvailable() {
     return oauth2_service_->RefreshTokenIsAvailable(
         oauth2_service_->GetRobotAccountId());
@@ -150,9 +155,7 @@
     if (!RefreshTokenIsAvailable())
       return std::string();
 
-    return static_cast<DeviceOAuth2TokenServiceDelegate*>(
-               oauth2_service_->GetDelegate())
-        ->GetRefreshToken();
+    return GetDelegate()->GetRefreshToken();
   }
 
   // A utility method to return fake URL results, for testing the refresh token
@@ -460,7 +463,7 @@
   CreateService();
 
   testing::StrictMock<MockOAuth2TokenServiceObserver> observer;
-  oauth2_service_->AddObserver(&observer);
+  GetDelegate()->AddObserver(&observer);
 
   // Make a token available during enrollment. Verify that the token is not
   // announced yet.
@@ -475,7 +478,7 @@
   SetRobotAccountId("robot@example.com");
   testing::Mock::VerifyAndClearExpectations(&observer);
 
-  oauth2_service_->RemoveObserver(&observer);
+  GetDelegate()->RemoveObserver(&observer);
 }
 
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/usb/cros_usb_detector.cc b/chrome/browser/chromeos/usb/cros_usb_detector.cc
index 97a98d1..0357d18 100644
--- a/chrome/browser/chromeos/usb/cros_usb_detector.cc
+++ b/chrome/browser/chromeos/usb/cros_usb_detector.cc
@@ -18,6 +18,7 @@
 #include "chrome/common/webui_url_constants.h"
 #include "chrome/grit/generated_resources.h"
 #include "chromeos/constants/chromeos_features.h"
+#include "components/arc/arc_util.h"
 #include "components/prefs/scoped_user_pref_update.h"
 #include "components/vector_icons/vector_icons.h"
 #include "content/public/browser/system_connector.h"
@@ -36,6 +37,23 @@
 
 const char kNotifierUsb[] = "crosusb.connected";
 
+// ARCVM (Android VM) is considered as the "default" VM here in the sense that
+// the Android runtime is enabled by default on Chrome OS and is always running.
+// Android also has its own mechanisms/permissions ultimately relying on Chrome
+// OS for granting access to the USB devices attached in ARCVM/ARC++.
+// This means that unclaimed devices get auto-attached to ARCVM on connect until
+// the user decides otherwise by e.g. disconnecting them or explicitly sharing
+// them with another VM such as Crostini.
+// Note that attaching a device to a VM makes it visible by the guest kernel in
+// that VM but doesn't actually claim/open the device by itself, i.e. a device
+// attached in a VM (and not open there) can still be opened outside that VM.
+const char* const kDefaultVmName = arc::kArcVmName;
+
+// Helper free function used with BindOnce() below for convenience.
+void IgnoreBool(base::OnceClosure closure, bool) {
+  std::move(closure).Run();
+}
+
 void RecordNotificationClosure(CrosUsbNotificationClosed disposition) {
   UMA_HISTOGRAM_ENUMERATION("CrosUsb.NotificationClosed", disposition);
 }
@@ -73,7 +91,8 @@
       device::mojom::UsbDeviceInfoPtr device_info)
       : notification_id_(notification_id),
         device_info_(std::move(device_info)),
-        disposition_(CrosUsbNotificationClosed::kUnknown) {}
+        disposition_(CrosUsbNotificationClosed::kUnknown),
+        weak_ptr_factory_(this) {}
 
   void Click(const base::Optional<int>& button_index,
              const base::Optional<base::string16>& reply) override {
@@ -113,6 +132,7 @@
   std::string notification_id_;
   device::mojom::UsbDeviceInfoPtr device_info_;
   CrosUsbNotificationClosed disposition_;
+  base::WeakPtrFactory<CrosUsbNotificationDelegate> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(CrosUsbNotificationDelegate);
 };
@@ -182,6 +202,11 @@
 SharedUsbDeviceInfo::SharedUsbDeviceInfo(const SharedUsbDeviceInfo&) = default;
 SharedUsbDeviceInfo::~SharedUsbDeviceInfo() = default;
 
+SharedUsbDeviceInfo::VmSharingInfo::VmSharingInfo() = default;
+SharedUsbDeviceInfo::VmSharingInfo::VmSharingInfo(const VmSharingInfo&) =
+    default;
+SharedUsbDeviceInfo::VmSharingInfo::~VmSharingInfo() = default;
+
 std::string CrosUsbDetector::MakeNotificationId(const std::string& guid) {
   return "cros:" + guid;
 }
@@ -317,16 +342,18 @@
   }
 
   SharedUsbDeviceInfo new_device;
-  new_device.vm_name = crostini::kCrostiniDefaultVmName;
   new_device.guid = device_info->guid;
   new_device.label = ProductLabelFromDevice(device_info);
-  new_device.shared = false;
-  new_device.guest_port = base::nullopt;
 
   shared_usb_devices_.push_back(new_device);
   available_device_info_.emplace(device_info->guid, device_info.Clone());
   SignalSharedUsbDeviceObservers();
 
+  // USB devices not claimed by Chrome OS get automatically attached to the
+  // default VM. Note that this relies on the underlying VM (ARCVM) having its
+  // own permission model to restrict access to the device.
+  AttachUsbDeviceToVm(kDefaultVmName, new_device.guid, base::DoNothing());
+
   // Some devices should not trigger the notification.
   if (hide_notification || !ShouldShowNotification(*device_info)) {
     return;
@@ -358,7 +385,10 @@
   std::string guid = device_info->guid;
   for (const auto& device : shared_usb_devices_) {
     if (device.guid == guid) {
-      DetachUsbDeviceFromVm(device.vm_name, guid, base::DoNothing());
+      for (const auto& sharing_info_pair : device.vm_sharing_info) {
+        DetachUsbDeviceFromVmInternal(sharing_info_pair.first, guid,
+                                      base::DoNothing());
+      }
     }
   }
   const auto& start =
@@ -382,9 +412,15 @@
 void CrosUsbDetector::ConnectSharedDevicesOnVmStartup() {
   // Reattach shared devices when the VM becomes available.
   for (auto& device : shared_usb_devices_) {
-    if (device.shared) {
-      AttachUsbDeviceToVm(crostini::kCrostiniDefaultVmName, device.guid,
-                          base::DoNothing());
+    bool attached_device = false;
+    for (const auto& sharing_pair : device.vm_sharing_info) {
+      if (sharing_pair.second.shared) {
+        attached_device = true;
+        AttachUsbDeviceToVm(sharing_pair.first, device.guid, base::DoNothing());
+      }
+    }
+    if (!attached_device) {
+      AttachUsbDeviceToVm(kDefaultVmName, device.guid, base::DoNothing());
     }
   }
 }
@@ -393,19 +429,38 @@
     const std::string& vm_name,
     const std::string& guid,
     base::OnceCallback<void(bool success)> callback) {
+  for (auto& device : shared_usb_devices_) {
+    if (device.guid == guid) {
+      // Mark the USB device shared so that we know to reattach it on VM
+      // restart.
+      // Setting this flag early also allows the UI not to flicker because of
+      // the notification resulting from the default VM detach below.
+      device.vm_sharing_info[vm_name].shared = true;
+      // The guest port will be set on completion.
+      break;
+    }
+  }
+  if (vm_name == kDefaultVmName) {
+    AttachUsbDeviceToVmInternal(kDefaultVmName, guid, std::move(callback));
+    return;
+  }
+  auto attach_internal = base::BindOnce(
+      &CrosUsbDetector::AttachUsbDeviceToVmInternal,
+      weak_ptr_factory_.GetWeakPtr(), vm_name, guid, std::move(callback));
+  DetachUsbDeviceFromVm(
+      kDefaultVmName, guid,
+      base::BindOnce(&IgnoreBool, std::move(attach_internal)));
+}
+
+void CrosUsbDetector::AttachUsbDeviceToVmInternal(
+    const std::string& vm_name,
+    const std::string& guid,
+    base::OnceCallback<void(bool success)> callback) {
   auto it = available_device_info_.find(guid);
   if (it == available_device_info_.end()) {
     return;
   }
 
-  for (auto& device : shared_usb_devices_) {
-    if (device.guid == guid) {
-      // Mark the USB Device shared so that we know to reattach it on VM
-      // restart.
-      device.shared = true;
-    }
-  }
-
   const auto& device_info = it->second;
   // Close any associated notifications (the user isn't using them).
   SystemNotificationHelper::GetInstance()->Close(
@@ -421,6 +476,23 @@
     const std::string& vm_name,
     const std::string& guid,
     base::OnceCallback<void(bool success)> callback) {
+  if (vm_name == kDefaultVmName) {
+    DetachUsbDeviceFromVmInternal(vm_name, guid, std::move(callback));
+    return;
+  }
+  auto attach_to_default_vm =
+      base::BindOnce(&CrosUsbDetector::AttachUsbDeviceToVmInternal,
+                     weak_ptr_factory_.GetWeakPtr(), kDefaultVmName, guid,
+                     std::move(callback));
+  DetachUsbDeviceFromVmInternal(
+      vm_name, guid,
+      base::BindOnce(&IgnoreBool, std::move(attach_to_default_vm)));
+}
+
+void CrosUsbDetector::DetachUsbDeviceFromVmInternal(
+    const std::string& vm_name,
+    const std::string& guid,
+    base::OnceCallback<void(bool success)> callback) {
   const auto& it = available_device_info_.find(guid);
   if (it == available_device_info_.end()) {
     // If there wasn't an existing attachment, then removal is a no-op and
@@ -433,8 +505,11 @@
   base::Optional<uint8_t> guest_port;
   for (const auto& device : shared_usb_devices_) {
     if (device.guid == guid) {
-      guest_port = device.guest_port;
-      break;
+      const auto it = device.vm_sharing_info.find(vm_name);
+      if (it != device.vm_sharing_info.end()) {
+        guest_port = it->second.guest_port;
+        break;
+      }
     }
   }
 
@@ -446,7 +521,7 @@
       vm_name, device_info.Clone(), *guest_port,
       base::BindOnce(&CrosUsbDetector::OnUsbDeviceDetachFinished,
                      weak_ptr_factory_.GetWeakPtr(), vm_name, guid,
-                     std::move(callback), *guest_port));
+                     std::move(callback)));
 }
 
 void CrosUsbDetector::OnListAttachedDevices(
@@ -466,9 +541,26 @@
     std::move(callback).Run(/*success=*/false);
     return;
   }
-
   base::ScopedFD fd(file.TakePlatformFile());
-
+  if (!manager()) {
+    LOG(ERROR) << "Attaching device without Crostini manager instance";
+    std::move(callback).Run(/*success=*/false);
+    return;
+  }
+  for (const auto& device : shared_usb_devices_) {
+    if (device.guid == device_info->guid) {
+      const auto it = device.vm_sharing_info.find(vm_name);
+      if (it != device.vm_sharing_info.end() && it->second.guest_port) {
+        // The device is already attached.
+        std::move(callback).Run(/*success=*/true);
+        return;
+      }
+    }
+  }
+  // TODO(b/123374026): Ideally CrostiniManager wouldn't be used for
+  // attaching/detaching USB devices from non-Crostini VMs, e.g. ARCVM. It works
+  // currently since CrostiniManager is mostly delegating to ConciergeClient but
+  // it's a little confusing and fragile.
   const std::string guid = device_info->guid;
   manager()->AttachUsbDevice(
       vm_name, std::move(device_info), std::move(fd),
@@ -486,7 +578,10 @@
   if (success) {
     for (auto& device : shared_usb_devices_) {
       if (device.guid == guid) {
-        device.guest_port = guest_port;
+        auto& vm_sharing_info = device.vm_sharing_info[vm_name];
+        vm_sharing_info.shared = true;
+        vm_sharing_info.guest_port = guest_port;
+        break;
       }
     }
   }
@@ -498,12 +593,10 @@
     const std::string& vm_name,
     const std::string& guid,
     base::OnceCallback<void(bool success)> callback,
-    uint8_t guest_port,
     bool success) {
   for (auto& device : shared_usb_devices_) {
     if (device.guid == guid) {
-      device.guest_port = base::nullopt;
-      device.shared = false;
+      device.vm_sharing_info.erase(vm_name);
       break;
     }
   }
diff --git a/chrome/browser/chromeos/usb/cros_usb_detector.h b/chrome/browser/chromeos/usb/cros_usb_detector.h
index 5b0621b..25cf73c 100644
--- a/chrome/browser/chromeos/usb/cros_usb_detector.h
+++ b/chrome/browser/chromeos/usb/cros_usb_detector.h
@@ -11,6 +11,7 @@
 #include <utility>
 #include <vector>
 
+#include "base/containers/flat_map.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "chrome/browser/chromeos/crostini/crostini_manager.h"
@@ -44,11 +45,23 @@
   SharedUsbDeviceInfo(const SharedUsbDeviceInfo&);
   ~SharedUsbDeviceInfo();
 
-  std::string vm_name;
+  struct VmSharingInfo {
+    VmSharingInfo();
+    VmSharingInfo(const VmSharingInfo&);
+    ~VmSharingInfo();
+
+    // Whether the device is shared with the VM. Note that the device may be
+    // shared but not attached (yet) in which case |guest_port| below would be
+    // unset.
+    bool shared = false;
+    base::Optional<uint8_t> guest_port;
+  };
+
+  // Maps a VM name to the sharing/attach information of the device in the VM
+  // identified by that name.
+  base::flat_map<std::string, VmSharingInfo> vm_sharing_info;
   std::string guid;
   base::string16 label;
-  bool shared = false;
-  base::Optional<uint8_t> guest_port;
   // TODO(nverne): Add current state and errors etc.
 };
 
@@ -88,9 +101,16 @@
   void OnDeviceAdded(device::mojom::UsbDeviceInfoPtr device) override;
   void OnDeviceRemoved(device::mojom::UsbDeviceInfoPtr device) override;
 
+  // Attaches the device identified by |guid| into the VM identified by
+  // |vm_name|. Note that this may detach the device from the default VM
+  // (=ARCVM) beforehand.
   void AttachUsbDeviceToVm(const std::string& vm_name,
                            const std::string& guid,
                            base::OnceCallback<void(bool success)> callback);
+
+  // Detaches the device identified by |guid| from the VM identified by
+  // |vm_name|. Note that this may attach the device (back) into the default VM
+  // (=ARCVM) as a result.
   void DetachUsbDeviceFromVm(const std::string& vm_name,
                              const std::string& guid,
                              base::OnceCallback<void(bool success)> callback);
@@ -102,6 +122,16 @@
   std::vector<SharedUsbDeviceInfo> GetSharedUsbDevices();
 
  private:
+  void AttachUsbDeviceToVmInternal(
+      const std::string& vm_name,
+      const std::string& guid,
+      base::OnceCallback<void(bool success)> callback);
+
+  void DetachUsbDeviceFromVmInternal(
+      const std::string& vm_name,
+      const std::string& guid,
+      base::OnceCallback<void(bool success)> callback);
+
   // Called after USB device access has been checked.
   void OnDeviceChecked(device::mojom::UsbDeviceInfoPtr device,
                        bool hide_notification,
@@ -134,7 +164,6 @@
       const std::string& vm_name,
       const std::string& guid,
       base::OnceCallback<void(bool success)> callback,
-      uint8_t guest_port,
       bool success);
 
   // Returns true when a device should show a notification when attached.
diff --git a/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc b/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc
index 0ed732b..fb45a380 100644
--- a/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc
+++ b/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc
@@ -2,9 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <algorithm>
 #include <memory>
 #include <string>
 #include <utility>
+#include <vector>
 
 #include "base/macros.h"
 #include "base/strings/string16.h"
@@ -26,6 +28,7 @@
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/fake_cicerone_client.h"
 #include "chromeos/dbus/fake_concierge_client.h"
+#include "components/arc/arc_util.h"
 #include "services/device/public/cpp/test/fake_usb_device_info.h"
 #include "services/device/public/cpp/test/fake_usb_device_manager.h"
 #include "services/device/public/mojom/usb_device.mojom.h"
@@ -98,6 +101,22 @@
                                    {InterfaceCodes(device_class, 0xff, 0xff)});
 }
 
+class TestSharedUsbDeviceObserver : public chromeos::SharedUsbDeviceObserver {
+ public:
+  void OnSharedUsbDevicesChanged(
+      std::vector<chromeos::SharedUsbDeviceInfo> shared_devices) override {
+    std::move(shared_devices.begin(), shared_devices.end(),
+              std::back_inserter(shared_devices_));
+  }
+
+  const std::vector<chromeos::SharedUsbDeviceInfo>& shared_devices() const {
+    return shared_devices_;
+  }
+
+ private:
+  std::vector<chromeos::SharedUsbDeviceInfo> shared_devices_;
+};
+
 }  // namespace
 
 class CrosUsbDetectorTest : public BrowserWithTestWindowTest {
@@ -117,18 +136,6 @@
     return profile_manager()->CreateTestingProfile(kProfileName);
   }
 
-  void AttachUsbDeviceToVmSuccessCallback(base::OnceClosure closure,
-                                          crostini::CrostiniResult result) {
-    EXPECT_TRUE(fake_concierge_client_->attach_usb_device_called());
-    std::move(closure).Run();
-  }
-
-  void DetachUsbDeviceToVmSuccessCallback(base::OnceClosure closure,
-                                          crostini::CrostiniResult result) {
-    EXPECT_TRUE(fake_concierge_client_->detach_usb_device_called());
-    std::move(closure).Run();
-  }
-
   void SetUp() override {
     BrowserWithTestWindowTest::SetUp();
     crostini_test_helper_.reset(new crostini::CrostiniTestHelper(profile()));
@@ -164,6 +171,12 @@
     chromeos::CrosUsbDetector::Get()->ConnectToDeviceManager();
   }
 
+  void AttachDeviceToVm(const std::string& vm_name, const std::string& guid) {
+    cros_usb_detector_->AttachUsbDeviceToVm(
+        vm_name, guid, base::Bind([](bool result) { EXPECT_TRUE(result); }));
+    base::RunLoop().RunUntilIdle();
+  }
+
  protected:
   base::string16 connection_message(const char* product_name) {
     return base::ASCIIToUTF16(base::StringPrintf(
@@ -181,6 +194,7 @@
   chromeos::FakeCiceroneClient* fake_cicerone_client_;
   chromeos::FakeConciergeClient* fake_concierge_client_;
 
+  TestSharedUsbDeviceObserver shared_usb_device_observer_;
   std::unique_ptr<chromeos::CrosUsbDetector> cros_usb_detector_;
 
   base::test::ScopedFeatureList scoped_feature_list_;
@@ -643,3 +657,130 @@
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(display_service_->GetNotification(notification_id_3));
 }
+
+TEST_F(CrosUsbDetectorTest, AttachDeviceToVmSetsGuestPort) {
+  ConnectToDeviceManager();
+  base::RunLoop().RunUntilIdle();
+
+  auto device_1 = base::MakeRefCounted<device::FakeUsbDeviceInfo>(
+      0, 1, kManufacturerName, kProductName_1, "002");
+  device_manager_.AddDevice(device_1);
+  base::RunLoop().RunUntilIdle();
+  auto devices = cros_usb_detector_->GetSharedUsbDevices();
+  ASSERT_EQ(1U, devices.size());
+
+  AttachDeviceToVm(crostini::kCrostiniDefaultVmName, devices[0].guid);
+  EXPECT_FALSE(
+      chromeos::SharedUsbDeviceInfo::VmSharingInfo().guest_port.has_value());
+  devices = cros_usb_detector_->GetSharedUsbDevices();
+  ASSERT_EQ(1U, devices.size());
+  EXPECT_EQ(1U, devices[0].vm_sharing_info.size());
+  auto crostini_info =
+      devices[0].vm_sharing_info[crostini::kCrostiniDefaultVmName];
+  EXPECT_TRUE(crostini_info.shared);
+  EXPECT_TRUE(crostini_info.guest_port.has_value());
+  EXPECT_EQ(0U, *crostini_info.guest_port);
+}
+
+TEST_F(CrosUsbDetectorTest, DeviceGetsAutoAttachedToArcVmOnConnect) {
+  cros_usb_detector_->AddSharedUsbDeviceObserver(&shared_usb_device_observer_);
+  ConnectToDeviceManager();
+  base::RunLoop().RunUntilIdle();
+
+  auto device_1 = base::MakeRefCounted<device::FakeUsbDeviceInfo>(
+      0, 1, kManufacturerName, kProductName_1, "002");
+  device_manager_.AddDevice(device_1);
+  base::RunLoop().RunUntilIdle();
+  auto notifications = shared_usb_device_observer_.shared_devices();
+  ASSERT_EQ(2U, notifications.size());
+  EXPECT_EQ(0U, notifications[0].vm_sharing_info.size());
+  EXPECT_TRUE(notifications[1].vm_sharing_info[arc::kArcVmName].shared);
+
+  auto devices = cros_usb_detector_->GetSharedUsbDevices();
+  ASSERT_EQ(1U, devices.size());
+  EXPECT_TRUE(devices[0].vm_sharing_info[arc::kArcVmName].shared);
+}
+
+TEST_F(CrosUsbDetectorTest, AttachingDeviceToCrostiniDetachesItFromArcVm) {
+  ConnectToDeviceManager();
+  base::RunLoop().RunUntilIdle();
+
+  auto device_1 = base::MakeRefCounted<device::FakeUsbDeviceInfo>(
+      0, 1, kManufacturerName, kProductName_1, "002");
+  device_manager_.AddDevice(device_1);
+  base::RunLoop().RunUntilIdle();
+
+  auto devices = cros_usb_detector_->GetSharedUsbDevices();
+  ASSERT_EQ(1U, devices.size());
+  EXPECT_TRUE(devices[0].vm_sharing_info[arc::kArcVmName].shared);
+
+  cros_usb_detector_->AddSharedUsbDeviceObserver(&shared_usb_device_observer_);
+  AttachDeviceToVm(crostini::kCrostiniDefaultVmName, devices[0].guid);
+  auto notifications = shared_usb_device_observer_.shared_devices();
+  ASSERT_EQ(2U, notifications.size());
+  EXPECT_EQ(1U, notifications[0].vm_sharing_info.size());
+  EXPECT_TRUE(notifications[1]
+                  .vm_sharing_info[crostini::kCrostiniDefaultVmName]
+                  .shared);
+
+  devices = cros_usb_detector_->GetSharedUsbDevices();
+  ASSERT_EQ(1U, devices.size());
+  EXPECT_EQ(1U, devices[0].vm_sharing_info.size());
+  EXPECT_TRUE(
+      devices[0].vm_sharing_info[crostini::kCrostiniDefaultVmName].shared);
+}
+
+TEST_F(CrosUsbDetectorTest, DetachingDeviceFromCrostiniAttachesItToArcVm) {
+  ConnectToDeviceManager();
+  base::RunLoop().RunUntilIdle();
+
+  auto device_1 = base::MakeRefCounted<device::FakeUsbDeviceInfo>(
+      0, 1, kManufacturerName, kProductName_1, "002");
+  device_manager_.AddDevice(device_1);
+  base::RunLoop().RunUntilIdle();
+
+  auto devices = cros_usb_detector_->GetSharedUsbDevices();
+  ASSERT_EQ(1U, devices.size());
+  AttachDeviceToVm(crostini::kCrostiniDefaultVmName, devices[0].guid);
+  cros_usb_detector_->AddSharedUsbDeviceObserver(&shared_usb_device_observer_);
+  cros_usb_detector_->DetachUsbDeviceFromVm(
+      crostini::kCrostiniDefaultVmName, devices[0].guid,
+      base::Bind([](bool result) { EXPECT_TRUE(result); }));
+  base::RunLoop().RunUntilIdle();
+
+  auto notifications = shared_usb_device_observer_.shared_devices();
+  ASSERT_EQ(2U, notifications.size());
+  auto sharing_info = notifications[0].vm_sharing_info;
+  EXPECT_EQ(0U, sharing_info.count(crostini::kCrostiniDefaultVmName));
+  EXPECT_TRUE(notifications[1].vm_sharing_info[arc::kArcVmName].shared);
+
+  devices = cros_usb_detector_->GetSharedUsbDevices();
+  ASSERT_EQ(1U, devices.size());
+  EXPECT_EQ(1U, devices[0].vm_sharing_info.size());
+  EXPECT_TRUE(devices[0].vm_sharing_info[arc::kArcVmName].shared);
+}
+
+TEST_F(CrosUsbDetectorTest, AttachingAlreadyAttachedDeviceIsANoOp) {
+  ConnectToDeviceManager();
+  base::RunLoop().RunUntilIdle();
+
+  auto device_1 = base::MakeRefCounted<device::FakeUsbDeviceInfo>(
+      0, 1, kManufacturerName, kProductName_1, "002");
+  device_manager_.AddDevice(device_1);
+  base::RunLoop().RunUntilIdle();
+
+  auto devices = cros_usb_detector_->GetSharedUsbDevices();
+  ASSERT_EQ(1U, devices.size());
+  EXPECT_TRUE(devices[0].vm_sharing_info[arc::kArcVmName].shared);
+
+  AttachDeviceToVm(crostini::kCrostiniDefaultVmName, devices[0].guid);
+  cros_usb_detector_->AddSharedUsbDeviceObserver(&shared_usb_device_observer_);
+  AttachDeviceToVm(crostini::kCrostiniDefaultVmName, devices[0].guid);
+  auto notifications = shared_usb_device_observer_.shared_devices();
+  EXPECT_EQ(0U, notifications.size());
+  devices = cros_usb_detector_->GetSharedUsbDevices();
+  ASSERT_EQ(1U, devices.size());
+  EXPECT_EQ(1U, devices[0].vm_sharing_info.size());
+  EXPECT_TRUE(
+      devices[0].vm_sharing_info[crostini::kCrostiniDefaultVmName].shared);
+}
diff --git a/chrome/browser/component_updater/optimization_hints_component_installer.cc b/chrome/browser/component_updater/optimization_hints_component_installer.cc
index 9c13b22..abfa63d 100644
--- a/chrome/browser/component_updater/optimization_hints_component_installer.cc
+++ b/chrome/browser/component_updater/optimization_hints_component_installer.cc
@@ -15,9 +15,9 @@
 #include "components/component_updater/component_updater_paths.h"
 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h"
 #include "components/optimization_guide/optimization_guide_constants.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_service.h"
 #include "components/prefs/pref_service.h"
-#include "components/previews/core/previews_experiments.h"
 
 using component_updater::ComponentUpdateService;
 
@@ -137,7 +137,7 @@
 
 void RegisterOptimizationHintsComponent(ComponentUpdateService* cus,
                                         PrefService* profile_prefs) {
-  if (!previews::params::IsOptimizationHintsEnabled()) {
+  if (!optimization_guide::features::IsOptimizationHintsEnabled()) {
     return;
   }
 
diff --git a/chrome/browser/component_updater/optimization_hints_component_installer_unittest.cc b/chrome/browser/component_updater/optimization_hints_component_installer_unittest.cc
index 0dabb1f..c9f0150 100644
--- a/chrome/browser/component_updater/optimization_hints_component_installer_unittest.cc
+++ b/chrome/browser/component_updater/optimization_hints_component_installer_unittest.cc
@@ -20,10 +20,10 @@
 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_pref_names.h"
 #include "components/optimization_guide/optimization_guide_constants.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_service.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/testing_pref_service.h"
-#include "components/previews/core/previews_features.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
@@ -168,7 +168,8 @@
 TEST_F(OptimizationHintsComponentInstallerTest,
        ComponentRegistrationWhenFeatureDisabled) {
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndDisableFeature(previews::features::kOptimizationHints);
+  scoped_list.InitAndDisableFeature(
+      optimization_guide::features::kOptimizationHints);
   std::unique_ptr<OptimizationHintsMockComponentUpdateService> cus(
       new OptimizationHintsMockComponentUpdateService());
   EXPECT_CALL(*cus, RegisterComponent(testing::_)).Times(0);
@@ -179,7 +180,8 @@
 TEST_F(OptimizationHintsComponentInstallerTest,
        ComponentRegistrationWhenFeatureEnabledButDataSaverDisabled) {
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndEnableFeature(previews::features::kOptimizationHints);
+  scoped_list.InitAndEnableFeature(
+      optimization_guide::features::kOptimizationHints);
   SetDataSaverEnabled(false);
   std::unique_ptr<OptimizationHintsMockComponentUpdateService> cus(
       new OptimizationHintsMockComponentUpdateService());
@@ -191,7 +193,8 @@
 TEST_F(OptimizationHintsComponentInstallerTest,
        ComponentRegistrationWhenFeatureEnabledButNoProfilePrefs) {
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndEnableFeature(previews::features::kOptimizationHints);
+  scoped_list.InitAndEnableFeature(
+      optimization_guide::features::kOptimizationHints);
   std::unique_ptr<OptimizationHintsMockComponentUpdateService> cus(
       new OptimizationHintsMockComponentUpdateService());
   EXPECT_CALL(*cus, RegisterComponent(testing::_)).Times(0);
@@ -202,7 +205,8 @@
 TEST_F(OptimizationHintsComponentInstallerTest,
        ComponentRegistrationWhenFeatureEnabledAndDataSaverEnabled) {
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndEnableFeature(previews::features::kOptimizationHints);
+  scoped_list.InitAndEnableFeature(
+      optimization_guide::features::kOptimizationHints);
   SetDataSaverEnabled(true);
   std::unique_ptr<OptimizationHintsMockComponentUpdateService> cus(
       new OptimizationHintsMockComponentUpdateService());
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
index 718537f..c33a121 100644
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
@@ -52,6 +52,7 @@
 #include "chrome/common/pref_names.h"
 #include "chrome/common/safe_browsing/file_type_policies.h"
 #include "chrome/grit/generated_resources.h"
+#include "components/download/public/common/download_danger_type.h"
 #include "components/download/public/common/download_features.h"
 #include "components/download/public/common/download_interrupt_reasons.h"
 #include "components/download/public/common/download_item.h"
@@ -1138,11 +1139,14 @@
 
   DVLOG(2) << __func__ << "() download = " << item->DebugString(false)
            << " verdict = " << static_cast<int>(result);
+  bool is_pending_scanning = false;
+
   // We only mark the content as being dangerous if the download's safety state
   // has not been set to DANGEROUS yet.  We don't want to show two warnings.
   if (item->GetDangerType() == download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS ||
       item->GetDangerType() ==
-          download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT) {
+          download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT ||
+      item->GetDangerType() == download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING) {
     download::DownloadDangerType danger_type =
         download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS;
     switch (result) {
@@ -1182,6 +1186,10 @@
       case safe_browsing::DownloadCheckResult::WHITELISTED_BY_POLICY:
         danger_type = download::DOWNLOAD_DANGER_TYPE_WHITELISTED_BY_POLICY;
         break;
+      case safe_browsing::DownloadCheckResult::ASYNC_SCANNING:
+        is_pending_scanning = true;
+        danger_type = download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING;
+        break;
     }
     DCHECK_NE(danger_type,
               download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT);
@@ -1200,9 +1208,11 @@
     }
   }
 
-  SafeBrowsingState* state = static_cast<SafeBrowsingState*>(
-      item->GetUserData(&kSafeBrowsingUserDataKey));
-  state->CompleteDownload();
+  if (!is_pending_scanning) {
+    SafeBrowsingState* state = static_cast<SafeBrowsingState*>(
+        item->GetUserData(&kSafeBrowsingUserDataKey));
+    state->CompleteDownload();
+  }
 }
 #endif  // FULL_SAFE_BROWSING
 
diff --git a/chrome/browser/download/download_danger_prompt.cc b/chrome/browser/download/download_danger_prompt.cc
index bc30380..ab62e13 100644
--- a/chrome/browser/download/download_danger_prompt.cc
+++ b/chrome/browser/download/download_danger_prompt.cc
@@ -37,6 +37,8 @@
       return "UncommonContent";
     case download::DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED:
       return "PotentiallyUnwanted";
+    case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
+      return "AsyncScanning";
     case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT:
     case download::DOWNLOAD_DANGER_TYPE_USER_VALIDATED:
diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/download/download_item_model.cc
index 96b07e9..142fe86 100644
--- a/chrome/browser/download/download_item_model.cc
+++ b/chrome/browser/download/download_item_model.cc
@@ -223,6 +223,7 @@
     case download::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT:
     case download::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST:
     case download::DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED:
+    case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
       return true;
 
     case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
@@ -262,6 +263,7 @@
       NOTREACHED();
       FALLTHROUGH;
     case download::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT:
+    case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
       return false;
   }
   NOTREACHED();
diff --git a/chrome/browser/download/download_ui_model.cc b/chrome/browser/download/download_ui_model.cc
index 3de56e0..7f17091 100644
--- a/chrome/browser/download/download_ui_model.cc
+++ b/chrome/browser/download/download_ui_model.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/safe_browsing/advanced_protection_status_manager.h"
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
+#include "components/download/public/common/download_danger_type.h"
 #include "net/base/mime_util.h"
 #include "net/url_request/url_request_status.h"
 #include "third_party/blink/public/common/mime_util/mime_util.h"
@@ -288,6 +289,7 @@
       return l10n_util::GetStringFUTF16(IDS_PROMPT_DOWNLOAD_CHANGES_SETTINGS,
                                         elided_filename);
     }
+    case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
     case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT:
     case download::DOWNLOAD_DANGER_TYPE_USER_VALIDATED:
diff --git a/chrome/browser/download/notification/download_item_notification.cc b/chrome/browser/download/notification/download_item_notification.cc
index c83a877..a2ed6cbc 100644
--- a/chrome/browser/download/notification/download_item_notification.cc
+++ b/chrome/browser/download/notification/download_item_notification.cc
@@ -29,6 +29,7 @@
 #include "chrome/common/url_constants.h"
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
+#include "components/download/public/common/download_danger_type.h"
 #include "components/download/public/common/download_interrupt_reasons.h"
 #include "components/download/public/common/download_item.h"
 #include "components/strings/grit/components_strings.h"
@@ -722,6 +723,7 @@
       return l10n_util::GetStringFUTF16(IDS_PROMPT_DOWNLOAD_CHANGES_SETTINGS,
                                         elided_filename);
     }
+    case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
     case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT:
     case download::DOWNLOAD_DANGER_TYPE_USER_VALIDATED:
diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn
index 4c75fe17..cf65a236 100644
--- a/chrome/browser/extensions/BUILD.gn
+++ b/chrome/browser/extensions/BUILD.gn
@@ -816,6 +816,7 @@
     "//components/omnibox/browser",
     "//components/onc",
     "//components/password_manager/core/browser",
+    "//components/password_manager/core/browser:affiliation",
     "//components/payments/core",
     "//components/pdf/browser",
     "//components/policy:generated",
diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/browser/extensions/api/downloads/downloads_api.cc
index e9237e6..69a76d3 100644
--- a/chrome/browser/extensions/api/downloads/downloads_api.cc
+++ b/chrome/browser/extensions/api/downloads/downloads_api.cc
@@ -148,6 +148,7 @@
 const char kDangerUncommon[] = "uncommon";
 const char kDangerUnwanted[] = "unwanted";
 const char kDangerWhitelistedByPolicy[] = "whitelistedByPolicy";
+const char kDangerAsyncScanning[] = "asyncScanning";
 const char kDangerUrl[] = "url";
 const char kEndTimeKey[] = "endTime";
 const char kEndedAfterKey[] = "endedAfter";
@@ -182,11 +183,12 @@
 // Note: Any change to the danger type strings, should be accompanied by a
 // corresponding change to downloads.json.
 const char* const kDangerStrings[] = {
-    kDangerSafe,     kDangerFile,
-    kDangerUrl,      kDangerContent,
-    kDangerSafe,     kDangerUncommon,
-    kDangerAccepted, kDangerHost,
-    kDangerUnwanted, kDangerWhitelistedByPolicy};
+    kDangerSafe,         kDangerFile,
+    kDangerUrl,          kDangerContent,
+    kDangerSafe,         kDangerUncommon,
+    kDangerAccepted,     kDangerHost,
+    kDangerUnwanted,     kDangerWhitelistedByPolicy,
+    kDangerAsyncScanning};
 static_assert(base::size(kDangerStrings) == download::DOWNLOAD_DANGER_TYPE_MAX,
               "kDangerStrings should have DOWNLOAD_DANGER_TYPE_MAX elements");
 
diff --git a/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
index 3ee0400..9ef98cc 100644
--- a/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
+++ b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
@@ -740,8 +740,8 @@
   // request access token for [any-api] instead of login.
   OAuth2AccessTokenManager::ScopeSet scopes;
   scopes.insert(GaiaConstants::kAnyApiOAuth2Scope);
-  device_access_token_request_ =
-      service->StartRequest(service->GetRobotAccountId(), scopes, this);
+  device_access_token_request_ = service->StartAccessTokenRequest(
+      service->GetRobotAccountId(), scopes, this);
 }
 
 bool IdentityGetAuthTokenFunction::IsOriginWhitelistedInPublicSession() {
diff --git a/chrome/browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc b/chrome/browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc
index 50dee6a..d8121216 100644
--- a/chrome/browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc
+++ b/chrome/browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc
@@ -649,7 +649,7 @@
 
 IN_PROC_BROWSER_TEST_F(NetworkingPrivateChromeOSApiTest,
                        CreateNetworkForPolicyControlledNetwork) {
-  const std::string user_policy_blob =
+  constexpr char kUserPolicyBlob[] =
       R"({
            "NetworkConfigurations": [{
              "GUID": "stub_wifi2",
@@ -670,7 +670,7 @@
   policy.Set(policy::key::kOpenNetworkConfiguration,
              policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
              policy::POLICY_SOURCE_CLOUD,
-             base::WrapUnique(new base::Value(user_policy_blob)), nullptr);
+             std::make_unique<base::Value>(kUserPolicyBlob), nullptr);
   provider_.UpdateChromePolicy(policy);
 
   content::RunAllPendingInMessageLoop();
@@ -684,7 +684,7 @@
 
 IN_PROC_BROWSER_TEST_F(NetworkingPrivateChromeOSApiTest,
                        ForgetPolicyControlledNetwork) {
-  const std::string user_policy_blob =
+  constexpr char kUserPolicyBlob[] =
       R"({
            "NetworkConfigurations": [{
              "GUID": "stub_wifi2",
@@ -705,7 +705,7 @@
   policy.Set(policy::key::kOpenNetworkConfiguration,
              policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
              policy::POLICY_SOURCE_CLOUD,
-             base::WrapUnique(new base::Value(user_policy_blob)), nullptr);
+             std::make_unique<base::Value>(kUserPolicyBlob), nullptr);
   provider_.UpdateChromePolicy(policy);
 
   content::RunAllPendingInMessageLoop();
@@ -715,14 +715,14 @@
 
 // TODO(stevenjb): Find a better way to set this up on Chrome OS.
 IN_PROC_BROWSER_TEST_F(NetworkingPrivateChromeOSApiTest, GetManagedProperties) {
-  const std::string uidata_blob =
-      "{ \"user_settings\": {"
-      "      \"WiFi\": {"
-      "        \"Passphrase\": \"FAKE_CREDENTIAL_VPaJDV9x\" }"
-      "    }"
-      "}";
+  constexpr char kUidataBlob[] =
+      R"({
+        "user_settings": {
+          "WiFi": {"Passphrase": "FAKE_CREDENTIAL_VPaJDV9x"}
+        }
+      })";
   service_test_->SetServiceProperty(kWifi2ServicePath, shill::kUIDataProperty,
-                                    base::Value(uidata_blob));
+                                    base::Value(kUidataBlob));
   service_test_->SetServiceProperty(
       kWifi2ServicePath, shill::kAutoConnectProperty, base::Value(false));
 
@@ -731,27 +731,27 @@
 
   content::RunAllPendingInMessageLoop();
 
-  const std::string user_policy_blob =
-      "{ \"NetworkConfigurations\": ["
-      "    { \"GUID\": \"stub_wifi2\","
-      "      \"Type\": \"WiFi\","
-      "      \"Name\": \"My WiFi Network\","
-      "      \"WiFi\": {"
-      "        \"HexSSID\": \"77696669325F50534B\","  // "wifi2_PSK"
-      "        \"Passphrase\": \"passphrase\","
-      "        \"Recommended\": [ \"AutoConnect\", \"Passphrase\" ],"
-      "        \"Security\": \"WPA-PSK\" }"
-      "    }"
-      "  ],"
-      "  \"Certificates\": [],"
-      "  \"Type\": \"UnencryptedConfiguration\""
-      "}";
+  constexpr char kUserPolicyBlob[] = R"({
+      "NetworkConfigurations": [
+          { "GUID": "stub_wifi2",
+            "Type": "WiFi",
+            "Name": "My WiFi Network",
+            "WiFi": {
+              "HexSSID": "77696669325F50534B",
+              "Passphrase": "passphrase",
+              "Recommended": [ "AutoConnect", "Passphrase" ],
+              "Security": "WPA-PSK" }
+          }
+        ],
+        "Certificates": [],
+        "Type": "UnencryptedConfiguration"
+      })";
 
   policy::PolicyMap policy;
   policy.Set(policy::key::kOpenNetworkConfiguration,
              policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
              policy::POLICY_SOURCE_CLOUD,
-             base::WrapUnique(new base::Value(user_policy_blob)), nullptr);
+             std::make_unique<base::Value>(kUserPolicyBlob), nullptr);
   provider_.UpdateChromePolicy(policy);
 
   content::RunAllPendingInMessageLoop();
diff --git a/chrome/browser/extensions/api/storage/settings_sync_unittest.cc b/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
index 29cdc5a..3d81dd4 100644
--- a/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
+++ b/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
@@ -1320,11 +1320,7 @@
   Manifest::Type type = Manifest::TYPE_LEGACY_PACKAGED_APP;
 
   // This value should be larger than the limit in sync_storage_backend.cc.
-  std::string string_10k;
-  for (size_t i = 0; i < 10000; ++i) {
-    string_10k.append("a");
-  }
-  base::Value large_value(string_10k);
+  base::Value large_value(std::string(10000, 'a'));
 
   PostOnBackendSequenceAndWait(FROM_HERE, [&, this]() {
     GetSyncableService(model_type)
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc
index 8004a6c..7433a57 100644
--- a/chrome/browser/extensions/api/tabs/tabs_api.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_api.cc
@@ -1693,7 +1693,7 @@
     return;
   }
 
-  Respond(OneArgument(std::make_unique<base::Value>(base64_result)));
+  Respond(OneArgument(std::make_unique<base::Value>(std::move(base64_result))));
 }
 
 void TabsCaptureVisibleTabFunction::OnCaptureFailure(CaptureResult result) {
diff --git a/chrome/browser/file_select_helper.cc b/chrome/browser/file_select_helper.cc
index 55dca40..d32c89c 100644
--- a/chrome/browser/file_select_helper.cc
+++ b/chrome/browser/file_select_helper.cc
@@ -112,6 +112,12 @@
     case Result::DANGEROUS_HOST:
     case Result::POTENTIALLY_UNWANTED:
       return false;
+
+    // Safe Browsing should only return ASYNC_SCANNING results for client
+    // downloads, not for PPAPI downloads.
+    case Result::ASYNC_SCANNING:
+      NOTREACHED();
+      return true;
   }
   NOTREACHED();
   return false;
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 3cad9f99..286341c 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -59,12 +59,6 @@
     "a blob and the verification process of the signed exchange is skipped for "
     "the succeeding navigation.";
 
-const char kAllowStartingServiceManagerOnlyName[] =
-    "Allow starting service manager only";
-const char kAllowStartingServiceManagerOnlyDescription[] =
-    "Allows running a lightweight service-manager-only mode, in which services "
-    "can run without the browser process.";
-
 const char kAudioWorkletRealtimeThreadName[] =
     "Use realtime priority thread for Audio Worklet";
 const char kAudioWorkletRealtimeThreadDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 8658045..8441f905 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -64,9 +64,6 @@
 extern const char kEnableSignedExchangePrefetchCacheForNavigationsName[];
 extern const char kEnableSignedExchangePrefetchCacheForNavigationsDescription[];
 
-extern const char kAllowStartingServiceManagerOnlyName[];
-extern const char kAllowStartingServiceManagerOnlyDescription[];
-
 extern const char kAudioWorkletRealtimeThreadName[];
 extern const char kAudioWorkletRealtimeThreadDescription[];
 
diff --git a/chrome/browser/google/google_url_tracker_factory.cc b/chrome/browser/google/google_url_tracker_factory.cc
index 25a3461..3cc8450 100644
--- a/chrome/browser/google/google_url_tracker_factory.cc
+++ b/chrome/browser/google/google_url_tracker_factory.cc
@@ -40,10 +40,7 @@
   auto client = std::make_unique<ChromeGoogleURLTrackerClient>(
       Profile::FromBrowserContext(context));
   return std::make_unique<GoogleURLTracker>(
-      std::move(client),
-      base::FeatureList::IsEnabled(GoogleURLTracker::kNoSearchDomainCheck)
-          ? GoogleURLTracker::ALWAYS_DOT_COM_MODE
-          : GoogleURLTracker::NORMAL_MODE,
+      std::move(client), GoogleURLTracker::ALWAYS_DOT_COM_MODE,
       content::GetNetworkConnectionTracker());
 }
 
diff --git a/chrome/browser/google/google_url_tracker_factory_unittest.cc b/chrome/browser/google/google_url_tracker_factory_unittest.cc
index fc1fd5b..4a5c079d 100644
--- a/chrome/browser/google/google_url_tracker_factory_unittest.cc
+++ b/chrome/browser/google/google_url_tracker_factory_unittest.cc
@@ -30,7 +30,7 @@
   base::test::ScopedFeatureList scoped_feature_list_;
 };
 
-TEST_F(GoogleURLTrackerFactoryTest, UsesDotComByDefault) {
+TEST_F(GoogleURLTrackerFactoryTest, AlwaysUsesDotCom) {
   profile_.GetPrefs()->SetString(prefs::kLastKnownGoogleURL,
                                  "https://www.google.co.uk/");
   GoogleURLTracker* tracker =
@@ -39,15 +39,3 @@
   ASSERT_NE(nullptr, tracker);
   EXPECT_EQ(GURL("https://www.google.com/"), tracker->google_url());
 }
-
-TEST_F(GoogleURLTrackerFactoryTest, UsesLocalDomainWithSearchDomainCheck) {
-  profile_.GetPrefs()->SetString(prefs::kLastKnownGoogleURL,
-                                 "https://www.google.co.uk/");
-  scoped_feature_list_.InitAndDisableFeature(
-      GoogleURLTracker::kNoSearchDomainCheck);
-  GoogleURLTracker* tracker =
-      GoogleURLTrackerFactory::GetInstance()->GetForProfile(&profile_);
-
-  ASSERT_NE(nullptr, tracker);
-  EXPECT_EQ(GURL("https://www.google.co.uk/"), tracker->google_url());
-}
diff --git a/chrome/browser/media/media_engagement_service.cc b/chrome/browser/media/media_engagement_service.cc
index 7383f18..c7201f2 100644
--- a/chrome/browser/media/media_engagement_service.cc
+++ b/chrome/browser/media/media_engagement_service.cc
@@ -27,9 +27,6 @@
 #include "media/base/media_switches.h"
 #include "url/origin.h"
 
-const char MediaEngagementService::kHistogramURLsDeletedScoreReductionName[] =
-    "Media.Engagement.URLsDeletedScoreReduction";
-
 const char MediaEngagementService::kHistogramClearName[] =
     "Media.Engagement.Clear";
 
@@ -71,15 +68,6 @@
   return playback_time >= delete_begin && playback_time <= delete_end;
 }
 
-void RecordURLsDeletedScoreReduction(double previous_score,
-                                     double current_score) {
-  int difference = round((previous_score * 100) - (current_score * 100));
-  DCHECK_GE(difference, 0);
-  UMA_HISTOGRAM_PERCENTAGE(
-      MediaEngagementService::kHistogramURLsDeletedScoreReductionName,
-      difference);
-}
-
 void RecordClear(MediaEngagementClearReason reason) {
   UMA_HISTOGRAM_ENUMERATION(MediaEngagementService::kHistogramClearName, reason,
                             MediaEngagementClearReason::kCount);
@@ -228,7 +216,6 @@
     // If this results in zero visits then clear the score.
     if (score.visits() <= 0) {
       // Score is now set to 0 so the reduction is equal to the original score.
-      RecordURLsDeletedScoreReduction(original_score, 0);
       Clear(kv.first);
       continue;
     }
@@ -237,8 +224,6 @@
     // MEI score consistent.
     score.SetMediaPlaybacks(original_score * score.visits());
     score.Commit();
-
-    RecordURLsDeletedScoreReduction(original_score, score.actual_score());
   }
 }
 
diff --git a/chrome/browser/media/media_engagement_service.h b/chrome/browser/media/media_engagement_service.h
index 15e2068..8492e900 100644
--- a/chrome/browser/media/media_engagement_service.h
+++ b/chrome/browser/media/media_engagement_service.h
@@ -92,10 +92,6 @@
 
   Profile* profile() const;
 
-  // The name of the histogram that records the reduction in score when history
-  // is cleared.
-  static const char kHistogramURLsDeletedScoreReductionName[];
-
   // The name of the histogram that records the reason why the engagement was
   // cleared, either partially or fully.
   static const char kHistogramClearName[];
diff --git a/chrome/browser/media/media_engagement_service_unittest.cc b/chrome/browser/media/media_engagement_service_unittest.cc
index 4b733cd..01deeea 100644
--- a/chrome/browser/media/media_engagement_service_unittest.cc
+++ b/chrome/browser/media/media_engagement_service_unittest.cc
@@ -528,13 +528,6 @@
                  TimeNotSet());
 
     histogram_tester.ExpectTotalCount(
-        MediaEngagementService::kHistogramURLsDeletedScoreReductionName, 3);
-    histogram_tester.ExpectBucketCount(
-        MediaEngagementService::kHistogramURLsDeletedScoreReductionName, 5, 2);
-    histogram_tester.ExpectBucketCount(
-        MediaEngagementService::kHistogramURLsDeletedScoreReductionName, 4, 1);
-
-    histogram_tester.ExpectTotalCount(
         MediaEngagementService::kHistogramClearName, 1);
     histogram_tester.ExpectBucketCount(
         MediaEngagementService::kHistogramClearName, 3, 1);
@@ -564,11 +557,6 @@
                  TimeNotSet());
 
     histogram_tester.ExpectTotalCount(
-        MediaEngagementService::kHistogramURLsDeletedScoreReductionName, 1);
-    histogram_tester.ExpectBucketCount(
-        MediaEngagementService::kHistogramURLsDeletedScoreReductionName, 5, 1);
-
-    histogram_tester.ExpectTotalCount(
         MediaEngagementService::kHistogramClearName, 1);
     histogram_tester.ExpectBucketCount(
         MediaEngagementService::kHistogramClearName, 3, 1);
@@ -600,11 +588,6 @@
                  TimeNotSet());
 
     histogram_tester.ExpectTotalCount(
-        MediaEngagementService::kHistogramURLsDeletedScoreReductionName, 1);
-    histogram_tester.ExpectBucketCount(
-        MediaEngagementService::kHistogramURLsDeletedScoreReductionName, 0, 1);
-
-    histogram_tester.ExpectTotalCount(
         MediaEngagementService::kHistogramClearName, 1);
     histogram_tester.ExpectBucketCount(
         MediaEngagementService::kHistogramClearName, 3, 1);
@@ -736,9 +719,6 @@
     ExpectScores(origin4, 0.0, 0, 0, TimeNotSet());
 
     histogram_tester.ExpectTotalCount(
-        MediaEngagementService::kHistogramURLsDeletedScoreReductionName, 0);
-
-    histogram_tester.ExpectTotalCount(
         MediaEngagementService::kHistogramClearName, 1);
     histogram_tester.ExpectBucketCount(
         MediaEngagementService::kHistogramClearName, 2, 1);
@@ -796,8 +776,6 @@
     EXPECT_EQ(0.5, GetActualScore(origin4));
 
     histogram_tester.ExpectTotalCount(
-        MediaEngagementService::kHistogramURLsDeletedScoreReductionName, 0);
-    histogram_tester.ExpectTotalCount(
         MediaEngagementService::kHistogramClearName, 0);
   }
 }
diff --git a/chrome/browser/media_router_resources.grdp b/chrome/browser/media_router_resources.grdp
deleted file mode 100644
index df55acce..0000000
--- a/chrome/browser/media_router_resources.grdp
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<grit-part>
-  <!-- General -->
-  <include name="IDR_MEDIA_ROUTER_COMMON_CSS" file="resources\media_router\media_router_common.css" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_CSS" file="resources\media_router\media_router.css" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_DATA_JS" file="resources\media_router\media_router_data.js" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_JS" file="resources\media_router\media_router.js" flattenhtml="true" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_HTML" file="resources\media_router\media_router.html" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_INTERNALS_HTML" file="resources\media_router\media_router_internals.html" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_INTERNALS_CSS" file="resources\media_router\media_router_internals.css" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_INTERNALS_JS" file="resources\media_router\media_router_internals.js" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_UI_INTERFACE_JS" file="resources\media_router\media_router_ui_interface.js" type="BINDATA" />
-
-  <!-- Polymer -->
-  <if expr="_google_chrome">
-    <include name="IDR_MEDIA_ROUTER_ICONS_HTML" file="resources\media_router_internal\icons\media_router_icons.html" type="BINDATA" />
-  </if>
-  <if expr="not _google_chrome">
-    <include name="IDR_MEDIA_ROUTER_ICONS_HTML" file="resources\media_router\icons\media_router_icons.html" type="BINDATA" />
-  </if>
-  <include name="IDR_ISSUE_BANNER_HTML" file="resources\media_router\elements\issue_banner\issue_banner.html" type="BINDATA" />
-  <include name="IDR_ISSUE_BANNER_JS" file="resources\media_router\elements\issue_banner\issue_banner.js" type="BINDATA" />
-  <include name="IDR_ISSUE_BANNER_CSS" file="resources\media_router\elements\issue_banner\issue_banner.css" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_CONTAINER_HTML" file="resources\media_router\elements\media_router_container\media_router_container.html" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_CONTAINER_CSS" file="resources\media_router\elements\media_router_container\media_router_container.css" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_CONTAINER_JS" file="resources\media_router\elements\media_router_container\media_router_container.js" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_HEADER_HTML" file="resources\media_router\elements\media_router_header\media_router_header.html" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_HEADER_CSS" file="resources\media_router\elements\media_router_header\media_router_header.css" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_HEADER_JS" file="resources\media_router\elements\media_router_header\media_router_header.js" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_SEARCH_HIGHLIGHTER_CSS" file="resources\media_router\elements\media_router_search_highlighter\media_router_search_highlighter.css" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_SEARCH_HIGHLIGHTER_HTML" file="resources\media_router\elements\media_router_search_highlighter\media_router_search_highlighter.html" type="BINDATA" />
-  <include name="IDR_MEDIA_ROUTER_SEARCH_HIGHLIGHTER_JS" file="resources\media_router\elements\media_router_search_highlighter\media_router_search_highlighter.js" type="BINDATA" />
-  <include name="IDR_ROUTE_CONTROLS_HTML" file="resources\media_router\elements\route_controls\route_controls.html" type="BINDATA" />
-  <include name="IDR_ROUTE_CONTROLS_CSS" file="resources\media_router\elements\route_controls\route_controls.css" type="BINDATA" />
-  <include name="IDR_ROUTE_CONTROLS_JS" file="resources\media_router\elements\route_controls\route_controls.js" type="BINDATA" />
-  <include name="IDR_ROUTE_DETAILS_HTML" file="resources\media_router\elements\route_details\route_details.html" type="BINDATA" />
-  <include name="IDR_ROUTE_DETAILS_CSS" file="resources\media_router\elements\route_details\route_details.css" type="BINDATA" />
-  <include name="IDR_ROUTE_DETAILS_JS" file="resources\media_router\elements\route_details\route_details.js" type="BINDATA" />
-  <include name="IDR_PSEUDO_SINK_SEARCH_STATE_JS" file="resources\media_router\elements\media_router_container\pseudo_sink_search_state.js" type="BINDATA" />
-</grit-part>
diff --git a/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager.cc b/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager.cc
index e6b726b1..539d6ff6 100644
--- a/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager.cc
+++ b/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager.cc
@@ -12,6 +12,7 @@
 #include "base/guid.h"
 #include "base/memory/weak_ptr.h"
 #include "chrome/browser/notifications/scheduler/internal/notification_entry.h"
+#include "chrome/browser/notifications/scheduler/internal/scheduler_config.h"
 #include "chrome/browser/notifications/scheduler/public/notification_params.h"
 
 namespace notifications {
@@ -30,10 +31,12 @@
 
   ScheduledNotificationManagerImpl(
       Store store,
-      const std::vector<SchedulerClientType>& clients)
+      const std::vector<SchedulerClientType>& clients,
+      const SchedulerConfig& config)
       : store_(std::move(store)),
         clients_(clients.begin(), clients.end()),
         delegate_(nullptr),
+        config_(config),
         weak_ptr_factory_(this) {}
 
  private:
@@ -160,11 +163,20 @@
       return;
     }
 
-    for (auto it = entries.begin(); it != entries.end(); ++it) {
-      std::string guid = (*it)->guid;
-      auto type = (*it)->type;
-      if (clients_.count(type))
-        notifications_[type].emplace(guid, std::move(*it));
+    for (auto it = entries.begin(); it != entries.end(); it++) {
+      auto* entry = it->get();
+      // Prune expired notifications. Also delete them in db.
+      bool expired = entry->create_time + config_.notification_expiration <=
+                     base::Time::Now();
+      if (expired) {
+        store_->Delete(
+            entry->guid,
+            base::BindOnce(
+                &ScheduledNotificationManagerImpl::OnNotificationDeleted,
+                weak_ptr_factory_.GetWeakPtr()));
+      } else if (clients_.count(entry->type)) {
+        notifications_[entry->type].emplace(entry->guid, std::move(*it));
+      }
     }
     SyncRegisteredClients();
     std::move(callback).Run(true);
@@ -180,7 +192,7 @@
   std::map<SchedulerClientType,
            std::map<std::string, std::unique_ptr<NotificationEntry>>>
       notifications_;
-
+  const SchedulerConfig& config_;
   base::WeakPtrFactory<ScheduledNotificationManagerImpl> weak_ptr_factory_;
   DISALLOW_COPY_AND_ASSIGN(ScheduledNotificationManagerImpl);
 };
@@ -190,9 +202,10 @@
 std::unique_ptr<ScheduledNotificationManager>
 ScheduledNotificationManager::Create(
     std::unique_ptr<CollectionStore<NotificationEntry>> store,
-    const std::vector<SchedulerClientType>& clients) {
+    const std::vector<SchedulerClientType>& clients,
+    const SchedulerConfig& config) {
   return std::make_unique<ScheduledNotificationManagerImpl>(std::move(store),
-                                                            clients);
+                                                            clients, config);
 }
 
 ScheduledNotificationManager::ScheduledNotificationManager() = default;
diff --git a/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager.h b/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager.h
index f2eeb7e..1d100882f 100644
--- a/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager.h
+++ b/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager.h
@@ -18,6 +18,7 @@
 
 struct NotificationEntry;
 struct NotificationParams;
+struct SchedulerConfig;
 
 // Class to manage in-memory scheduled notifications loaded from the storage.
 class ScheduledNotificationManager {
@@ -43,7 +44,8 @@
   // Creates the instance.
   static std::unique_ptr<ScheduledNotificationManager> Create(
       std::unique_ptr<CollectionStore<NotificationEntry>> store,
-      const std::vector<SchedulerClientType>& clients);
+      const std::vector<SchedulerClientType>& clients,
+      const SchedulerConfig& config);
 
   // Initializes the notification store.
   virtual void Init(Delegate* delegate, InitCallback callback) = 0;
diff --git a/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager_unittest.cc b/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager_unittest.cc
index 5026dfd..c4d91e2 100644
--- a/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager_unittest.cc
+++ b/chrome/browser/notifications/scheduler/internal/scheduled_notification_manager_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/test/scoped_task_environment.h"
 #include "chrome/browser/notifications/scheduler/internal/collection_store.h"
 #include "chrome/browser/notifications/scheduler/internal/notification_entry.h"
+#include "chrome/browser/notifications/scheduler/internal/scheduler_config.h"
 #include "chrome/browser/notifications/scheduler/public/notification_params.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -68,17 +69,19 @@
     delegate_ = std::make_unique<MockDelegate>();
     auto store = std::make_unique<MockNotificationStore>();
     store_ = store.get();
+    config_.notification_expiration = base::TimeDelta::FromDays(1);
     manager_ = ScheduledNotificationManager::Create(
         std::move(store),
         {SchedulerClientType::kTest1, SchedulerClientType::kTest2,
-         SchedulerClientType::kTest3});
+         SchedulerClientType::kTest3},
+        config_);
   }
 
  protected:
   ScheduledNotificationManager* manager() { return manager_.get(); }
   MockNotificationStore* store() { return store_; }
   MockDelegate* delegate() { return delegate_.get(); }
-
+  const SchedulerConfig& config() const { return config_; }
   // Initializes the manager with predefined data in the store.
   void InitWithData(std::vector<NotificationEntry> data) {
     Entries entries;
@@ -111,6 +114,8 @@
   MockNotificationStore* store_;
   std::vector<SchedulerClientType> clients_;
   std::unique_ptr<ScheduledNotificationManager> manager_;
+  SchedulerConfig config_;
+
   DISALLOW_COPY_AND_ASSIGN(ScheduledNotificationManagerTest);
 };
 
@@ -283,5 +288,35 @@
   manager()->GetAllNotifications(&notifications);
   EXPECT_EQ(notifications.size(), 0u);
 }
+
+TEST_F(ScheduledNotificationManagerTest, PruneExpiredNotifications) {
+  // Type1: entry0
+  // Type2: entry1, entry2(expired), entry3
+  // Type3: entry4(expired), entry5(expired)
+  auto now = base::Time::Now();
+  auto entry0 = CreateNotificationEntry(SchedulerClientType::kTest1);
+  entry0.create_time = now - base::TimeDelta::FromHours(12);
+  auto entry1 = CreateNotificationEntry(SchedulerClientType::kTest2);
+  entry1.create_time = now - base::TimeDelta::FromHours(14);
+  auto entry2 = CreateNotificationEntry(SchedulerClientType::kTest2);
+  entry2.create_time = now - base::TimeDelta::FromHours(24);
+  auto entry3 = CreateNotificationEntry(SchedulerClientType::kTest2);
+  entry3.create_time = now - base::TimeDelta::FromHours(23);
+  auto entry4 = CreateNotificationEntry(SchedulerClientType::kTest3);
+  entry4.create_time = now - base::TimeDelta::FromHours(25);
+  auto entry5 = CreateNotificationEntry(SchedulerClientType::kTest3);
+  entry5.create_time =
+      now - base::TimeDelta::FromDays(1) - base::TimeDelta::FromMicroseconds(1);
+
+  EXPECT_CALL(*store(), Delete(_, _)).Times(3).RetiresOnSaturation();
+  InitWithData(std::vector<NotificationEntry>(
+      {entry0, entry1, entry2, entry3, entry4, entry5}));
+  ScheduledNotificationManager::Notifications notifications;
+  manager()->GetAllNotifications(&notifications);
+  EXPECT_EQ(notifications.size(), 2u);
+  EXPECT_EQ(notifications[SchedulerClientType::kTest1].size(), 1u);
+  EXPECT_EQ(notifications[SchedulerClientType::kTest2].size(), 2u);
+}
+
 }  // namespace
 }  // namespace notifications
diff --git a/chrome/browser/notifications/scheduler/internal/scheduler_config.cc b/chrome/browser/notifications/scheduler/internal/scheduler_config.cc
index f087ffc1..7af43bd 100644
--- a/chrome/browser/notifications/scheduler/internal/scheduler_config.cc
+++ b/chrome/browser/notifications/scheduler/internal/scheduler_config.cc
@@ -6,6 +6,10 @@
 
 namespace notifications {
 
+// The notification data is hold for one week.
+constexpr base::TimeDelta kDefaultNotificationExpiration =
+    base::TimeDelta::FromDays(7);
+
 // The impression history is hold for 4 weeks.
 constexpr base::TimeDelta kDefaultImpressionExpiration =
     base::TimeDelta::FromDays(28);
@@ -37,6 +41,7 @@
     : max_daily_shown_all_type(3),
       max_daily_shown_per_type(10),
       initial_daily_shown_per_type(2),
+      notification_expiration(kDefaultNotificationExpiration),
       impression_expiration(kDefaultImpressionExpiration),
       suppression_duration(kDefaultSuppressionDuration),
       dismiss_count(3),
diff --git a/chrome/browser/notifications/scheduler/internal/scheduler_config.h b/chrome/browser/notifications/scheduler/internal/scheduler_config.h
index 3f4ff858..0c23b106 100644
--- a/chrome/browser/notifications/scheduler/internal/scheduler_config.h
+++ b/chrome/browser/notifications/scheduler/internal/scheduler_config.h
@@ -30,6 +30,10 @@
   // type.
   int initial_daily_shown_per_type;
 
+  // The time for a notification entry to expire. The
+  // notification entry will be deleted then.
+  base::TimeDelta notification_expiration;
+
   // The time for a notification impression history data to expire. The
   // impression history will be deleted then.
   base::TimeDelta impression_expiration;
diff --git a/chrome/browser/notifications/scheduler/schedule_service_factory_helper.cc b/chrome/browser/notifications/scheduler/schedule_service_factory_helper.cc
index 3610349..d9b9b1fd 100644
--- a/chrome/browser/notifications/scheduler/schedule_service_factory_helper.cc
+++ b/chrome/browser/notifications/scheduler/schedule_service_factory_helper.cc
@@ -79,7 +79,7 @@
   auto notification_store =
       std::make_unique<NotificationStore>(std::move(notification_db));
   auto notification_manager = ScheduledNotificationManager::Create(
-      std::move(notification_store), registered_clients);
+      std::move(notification_store), registered_clients, *config.get());
 
   auto context = std::make_unique<NotificationSchedulerContext>(
       std::move(client_registrar), std::move(background_task_scheduler),
diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrome/browser/offline_pages/android/offline_page_bridge.cc
index 07c8431..2ee0400 100644
--- a/chrome/browser/offline_pages/android/offline_page_bridge.cc
+++ b/chrome/browser/offline_pages/android/offline_page_bridge.cc
@@ -352,14 +352,10 @@
   DCHECK(j_result_obj);
   DCHECK(j_callback_obj);
 
-  ScopedJavaGlobalRef<jobject> j_result_ref;
-  j_result_ref.Reset(env, j_result_obj);
-
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
-
-  offline_page_model_->GetAllPages(base::BindOnce(
-      &MultipleOfflinePageItemCallback, j_result_ref, j_callback_ref));
+  offline_page_model_->GetAllPages(
+      base::BindOnce(&MultipleOfflinePageItemCallback,
+                     ScopedJavaGlobalRef<jobject>(j_result_obj),
+                     ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 void OfflinePageBridge::GetPageByOfflineId(
@@ -367,11 +363,9 @@
     const JavaParamRef<jobject>& obj,
     jlong offline_id,
     const JavaParamRef<jobject>& j_callback_obj) {
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
   offline_page_model_->GetPageByOfflineId(
-      offline_id,
-      base::BindOnce(&SingleOfflinePageItemCallback, j_callback_ref));
+      offline_id, base::BindOnce(&SingleOfflinePageItemCallback,
+                                 ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 std::vector<ClientId> getClientIdsFromObjectArrays(
@@ -402,13 +396,12 @@
     const JavaParamRef<jobjectArray>& j_namespaces_array,
     const JavaParamRef<jobjectArray>& j_ids_array,
     const JavaParamRef<jobject>& j_callback_obj) {
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
   PageCriteria criteria;
   criteria.client_ids =
       getClientIdsFromObjectArrays(env, j_namespaces_array, j_ids_array);
   offline_page_model_->DeletePagesWithCriteria(
-      criteria, base::BindOnce(&DeletePageCallback, j_callback_ref));
+      criteria, base::BindOnce(&DeletePageCallback,
+                               ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 void OfflinePageBridge::DeletePagesByClientIdAndOrigin(
@@ -418,14 +411,13 @@
     const base::android::JavaParamRef<jobjectArray>& j_ids_array,
     const base::android::JavaParamRef<jstring>& j_origin,
     const base::android::JavaParamRef<jobject>& j_callback_obj) {
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
   PageCriteria criteria;
   criteria.client_ids =
       getClientIdsFromObjectArrays(env, j_namespaces_array, j_ids_array);
   criteria.request_origin = ConvertJavaStringToUTF8(j_origin);
   offline_page_model_->DeletePagesWithCriteria(
-      criteria, base::BindOnce(&DeletePageCallback, j_callback_ref));
+      criteria, base::BindOnce(&DeletePageCallback,
+                               ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 void OfflinePageBridge::DeletePagesByOfflineId(
@@ -433,8 +425,6 @@
     const JavaParamRef<jobject>& obj,
     const JavaParamRef<jlongArray>& j_offline_ids_array,
     const JavaParamRef<jobject>& j_callback_obj) {
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
   std::vector<int64_t> offline_ids;
   base::android::JavaLongArrayToInt64Vector(env, j_offline_ids_array,
                                             &offline_ids);
@@ -442,7 +432,8 @@
   PageCriteria criteria;
   criteria.offline_ids = std::move(offline_ids);
   offline_page_model_->DeletePagesWithCriteria(
-      criteria, base::BindOnce(&DeletePageCallback, j_callback_ref));
+      criteria, base::BindOnce(&DeletePageCallback,
+                               ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 void OfflinePageBridge::GetPagesByClientId(
@@ -452,18 +443,14 @@
     const JavaParamRef<jobjectArray>& j_namespaces_array,
     const JavaParamRef<jobjectArray>& j_ids_array,
     const JavaParamRef<jobject>& j_callback_obj) {
-  ScopedJavaGlobalRef<jobject> j_result_ref;
-  j_result_ref.Reset(env, j_result_obj);
-
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
   std::vector<ClientId> client_ids =
       getClientIdsFromObjectArrays(env, j_namespaces_array, j_ids_array);
   PageCriteria criteria;
   criteria.client_ids = client_ids;
   offline_page_model_->GetPagesWithCriteria(
-      criteria, base::BindOnce(&MultipleOfflinePageItemCallback, j_result_ref,
-                               j_callback_ref));
+      criteria, base::BindOnce(&MultipleOfflinePageItemCallback,
+                               ScopedJavaGlobalRef<jobject>(j_result_obj),
+                               ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 void OfflinePageBridge::GetPagesByRequestOrigin(
@@ -472,17 +459,12 @@
     const JavaParamRef<jobject>& j_result_obj,
     const JavaParamRef<jstring>& j_request_origin,
     const JavaParamRef<jobject>& j_callback_obj) {
-  ScopedJavaGlobalRef<jobject> j_result_ref;
-  j_result_ref.Reset(env, j_result_obj);
-
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
-
   PageCriteria criteria;
   criteria.request_origin = ConvertJavaStringToUTF8(env, j_request_origin);
   offline_page_model_->GetPagesWithCriteria(
-      criteria, base::BindOnce(&MultipleOfflinePageItemCallback, j_result_ref,
-                               j_callback_ref));
+      criteria, base::BindOnce(&MultipleOfflinePageItemCallback,
+                               ScopedJavaGlobalRef<jobject>(j_result_obj),
+                               ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 void OfflinePageBridge::GetPagesByNamespace(
@@ -491,17 +473,13 @@
     const JavaParamRef<jobject>& j_result_obj,
     const JavaParamRef<jstring>& j_namespace,
     const JavaParamRef<jobject>& j_callback_obj) {
-  ScopedJavaGlobalRef<jobject> j_result_ref(env, j_result_obj);
-
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
-
   PageCriteria criteria;
   criteria.client_namespaces =
       std::vector<std::string>{ConvertJavaStringToUTF8(env, j_namespace)};
   offline_page_model_->GetPagesWithCriteria(
-      criteria, base::BindOnce(&MultipleOfflinePageItemCallback, j_result_ref,
-                               j_callback_ref));
+      criteria, base::BindOnce(&MultipleOfflinePageItemCallback,
+                               ScopedJavaGlobalRef<jobject>(j_result_obj),
+                               ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 void OfflinePageBridge::SelectPageForOnlineUrl(
@@ -512,12 +490,10 @@
     const JavaParamRef<jobject>& j_callback_obj) {
   DCHECK(j_callback_obj);
 
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
-
   OfflinePageUtils::SelectPagesForURL(
       key_, GURL(ConvertJavaStringToUTF8(env, j_online_url)), tab_id,
-      base::BindOnce(&SelectPageCallback, j_callback_ref));
+      base::BindOnce(&SelectPageCallback,
+                     ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 void OfflinePageBridge::SavePage(JNIEnv* env,
@@ -530,9 +506,6 @@
   DCHECK(j_callback_obj);
   DCHECK(j_web_contents);
 
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
-
   OfflinePageModel::SavePageParams save_page_params;
   std::unique_ptr<OfflinePageArchiver> archiver;
 
@@ -551,7 +524,9 @@
 
   offline_page_model_->SavePage(
       save_page_params, std::move(archiver), web_contents,
-      base::Bind(&SavePageCallback, j_callback_ref, save_page_params.url));
+      base::Bind(&SavePageCallback,
+                 ScopedJavaGlobalRef<jobject>(j_callback_obj),
+                 save_page_params.url));
 }
 
 void OfflinePageBridge::PublishInternalPageByOfflineId(
@@ -559,9 +534,6 @@
     const base::android::JavaParamRef<jobject>& obj,
     const jlong j_offline_id,
     const base::android::JavaParamRef<jobject>& j_published_callback) {
-  ScopedJavaGlobalRef<jobject> j_published_callback_ref;
-  j_published_callback_ref.Reset(env, j_published_callback);
-
   OfflinePageModel* offline_page_model =
       OfflinePageModelFactory::GetForKey(key_);
   DCHECK(offline_page_model);
@@ -569,7 +541,8 @@
   offline_page_model->GetPageByOfflineId(
       j_offline_id,
       base::Bind(&OfflinePageBridge::PublishInternalArchive,
-                 weak_ptr_factory_.GetWeakPtr(), j_published_callback_ref,
+                 weak_ptr_factory_.GetWeakPtr(),
+                 ScopedJavaGlobalRef<jobject>(j_published_callback),
                  PublishSource::kPublishByOfflineId));
 }
 
@@ -578,9 +551,6 @@
     const base::android::JavaParamRef<jobject>& obj,
     const base::android::JavaParamRef<jstring>& j_guid,
     const base::android::JavaParamRef<jobject>& j_published_callback) {
-  ScopedJavaGlobalRef<jobject> j_published_callback_ref;
-  j_published_callback_ref.Reset(env, j_published_callback);
-
   OfflinePageModel* offline_page_model =
       OfflinePageModelFactory::GetForKey(key_);
   DCHECK(offline_page_model);
@@ -590,7 +560,8 @@
   offline_page_model->GetPagesWithCriteria(
       criteria,
       base::BindOnce(&OfflinePageBridge::PublishInternalArchiveOfFirstItem,
-                     weak_ptr_factory_.GetWeakPtr(), j_published_callback_ref,
+                     weak_ptr_factory_.GetWeakPtr(),
+                     ScopedJavaGlobalRef<jobject>(j_published_callback),
                      PublishSource::kPublishByGuid));
 }
 
diff --git a/chrome/browser/offline_pages/android/request_coordinator_bridge.cc b/chrome/browser/offline_pages/android/request_coordinator_bridge.cc
index bbe6699..b57a10f 100644
--- a/chrome/browser/offline_pages/android/request_coordinator_bridge.cc
+++ b/chrome/browser/offline_pages/android/request_coordinator_bridge.cc
@@ -132,8 +132,6 @@
     const JavaParamRef<jstring>& j_origin,
     jboolean user_requested) {
   DCHECK(j_callback_obj);
-  ScopedJavaGlobalRef<jobject> j_callback_ref;
-  j_callback_ref.Reset(env, j_callback_obj);
 
   offline_pages::ClientId client_id;
   client_id.name_space = ConvertJavaStringToUTF8(env, j_namespace);
@@ -156,7 +154,8 @@
   params.request_origin = ConvertJavaStringToUTF8(env, j_origin);
 
   coordinator->SavePageLater(
-      params, base::BindOnce(&SavePageLaterCallback, j_callback_ref));
+      params, base::BindOnce(&SavePageLaterCallback,
+                             ScopedJavaGlobalRef<jobject>(j_callback_obj)));
 }
 
 JNI_EXPORT void JNI_RequestCoordinatorBridge_GetRequestsInQueue(
diff --git a/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc
index bb2c15fa..644f92cf 100644
--- a/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc
@@ -1023,8 +1023,8 @@
         page_load_metrics::PageEndReason::END_NEW_NAVIGATION, 2);
 }
 
-// TODO(crbug.com/981058): Re-enable this test on Linux.
-#if defined(OS_LINUX)
+// TODO(crbug.com/981058): Re-enable this test on Linux and Windows.
+#if defined(OS_LINUX) || defined(OS_WIN)
 #define MAYBE_TestPageEndReasonUMACoinFlipHoldback \
   DISABLED_TestPageEndReasonUMACoinFlipHoldback
 #else
diff --git a/chrome/browser/page_load_metrics/observers/use_counter/ukm_features.cc b/chrome/browser/page_load_metrics/observers/use_counter/ukm_features.cc
index 32e005e..050d1344 100644
--- a/chrome/browser/page_load_metrics/observers/use_counter/ukm_features.cc
+++ b/chrome/browser/page_load_metrics/observers/use_counter/ukm_features.cc
@@ -108,6 +108,7 @@
           WebFeature::kLinearAccelerationSensorConstructor,
           WebFeature::kAccelerometerConstructor,
           WebFeature::kGyroscopeConstructor,
+          WebFeature::kServiceWorkerInterceptedRequestFromOriginDirtyStyleSheet,
       }));
   return *opt_in_features;
 }
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc
index b6b48be..61a8ced 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -969,7 +969,7 @@
 
 // static
 void ChromePasswordManagerClient::BindCredentialManager(
-    blink::mojom::CredentialManagerRequest request,
+    mojo::PendingReceiver<blink::mojom::CredentialManager> receiver,
     content::RenderFrameHost* render_frame_host) {
   // Only valid for the main frame.
   if (render_frame_host->GetParent())
@@ -993,7 +993,7 @@
   if (!instance)
     return;
 
-  instance->content_credential_manager_.BindRequest(std::move(request));
+  instance->content_credential_manager_.BindRequest(std::move(receiver));
 }
 
 // static
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.h b/chrome/browser/password_manager/chrome_password_manager_client.h
index 5dcfcea..12c4c6c7 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client.h
+++ b/chrome/browser/password_manager/chrome_password_manager_client.h
@@ -180,7 +180,7 @@
   void SetTestObserver(PasswordGenerationPopupObserver* observer);
 
   static void BindCredentialManager(
-      blink::mojom::CredentialManagerRequest request,
+      mojo::PendingReceiver<blink::mojom::CredentialManager> receiver,
       content::RenderFrameHost* render_frame_host);
 
   // A helper method to determine whether a save/update bubble can be shown
diff --git a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
index 48082183..2d3c4bd 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
@@ -56,6 +56,7 @@
 #include "content/public/test/navigation_simulator.h"
 #include "content/public/test/web_contents_tester.h"
 #include "mojo/public/cpp/bindings/associated_binding.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -646,7 +647,7 @@
 
   // This call should not crash.
   ChromePasswordManagerClient::BindCredentialManager(
-      blink::mojom::CredentialManagerRequest(), web_contents->GetMainFrame());
+      mojo::NullReceiver(), web_contents->GetMainFrame());
 }
 
 TEST_F(ChromePasswordManagerClientTest, CanShowBubbleOnURL) {
diff --git a/chrome/browser/password_manager/password_manager_captured_sites_interactive_uitest.cc b/chrome/browser/password_manager/password_manager_captured_sites_interactive_uitest.cc
index 4da5b754..edefa261 100644
--- a/chrome/browser/password_manager/password_manager_captured_sites_interactive_uitest.cc
+++ b/chrome/browser/password_manager/password_manager_captured_sites_interactive_uitest.cc
@@ -208,8 +208,8 @@
         GetReplayFilesRootDirectory()
             .AppendASCII(GetParam().scenarioDir.c_str())
             .AppendASCII(GetParam().siteName.c_str());
-    SetServerUrlLoader(std::make_unique<ServerUrlLoader>(
-        absl::make_unique<ServerCacheReplayer>(
+    SetServerUrlLoader(
+        std::make_unique<ServerUrlLoader>(std::make_unique<ServerCacheReplayer>(
             capture_file_path,
             ServerCacheReplayer::kOptionFailOnInvalidJsonRecord)));
   }
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index 47251c8f..6da4353 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -1420,6 +1420,8 @@
       std::make_unique<ExternalDataPolicyHandler>(key::kWallpaperImage));
   handlers->AddHandler(std::make_unique<ExternalDataPolicyHandler>(
       key::kNativePrintersBulkConfiguration));
+  handlers->AddHandler(
+      std::make_unique<ExternalDataPolicyHandler>(key::kExternalPrintServers));
   handlers->AddHandler(std::make_unique<ExternalDataPolicyHandler>(
       key::kDeviceWilcoDtcConfiguration));
   handlers->AddHandler(std::make_unique<SimpleSchemaValidatingPolicyHandler>(
diff --git a/chrome/browser/prefs/chrome_pref_model_associator_client.cc b/chrome/browser/prefs/chrome_pref_model_associator_client.cc
index e61ceeb4..09a1057 100644
--- a/chrome/browser/prefs/chrome_pref_model_associator_client.cc
+++ b/chrome/browser/prefs/chrome_pref_model_associator_client.cc
@@ -7,6 +7,7 @@
 #include <cstdint>
 
 #include "base/memory/singleton.h"
+#include "chrome/browser/sharing/sharing_sync_preference.h"
 #include "chrome/common/pref_names.h"
 #include "components/content_settings/core/browser/website_settings_info.h"
 #include "components/content_settings/core/browser/website_settings_registry.h"
@@ -52,5 +53,14 @@
     return std::make_unique<base::Value>(
         static_cast<int>(std::max(local_high_score, server_high_score)));
   }
+
+  if (pref_name == prefs::kSharingVapidKey)
+    return SharingSyncPreference::MaybeMergeVapidKey(local_value, server_value);
+
+  if (pref_name == prefs::kSharingSyncedDevices) {
+    return SharingSyncPreference::MaybeMergeSyncedDevices(local_value,
+                                                          server_value);
+  }
+
   return nullptr;
 }
diff --git a/chrome/browser/previews/defer_all_script_browsertest.cc b/chrome/browser/previews/defer_all_script_browsertest.cc
index 2037eee..2a9832b2 100644
--- a/chrome/browser/previews/defer_all_script_browsertest.cc
+++ b/chrome/browser/previews/defer_all_script_browsertest.cc
@@ -24,6 +24,7 @@
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_features.h"
 #include "components/optimization_guide/hints_component_info.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_service.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/optimization_guide/test_hints_component_creator.h"
@@ -76,7 +77,7 @@
     scoped_feature_list_.InitWithFeatures(
         {previews::features::kPreviews,
          previews::features::kDeferAllScriptPreviews,
-         previews::features::kOptimizationHints,
+         optimization_guide::features::kOptimizationHints,
          data_reduction_proxy::features::
              kDataReductionProxyEnabledWithNetworkService},
         {});
diff --git a/chrome/browser/previews/hints_fetcher_browsertest.cc b/chrome/browser/previews/hints_fetcher_browsertest.cc
index 46a231c..3c4a87e 100644
--- a/chrome/browser/previews/hints_fetcher_browsertest.cc
+++ b/chrome/browser/previews/hints_fetcher_browsertest.cc
@@ -25,8 +25,10 @@
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_features.h"
 #include "components/optimization_guide/hints_component_info.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_prefs.h"
 #include "components/optimization_guide/optimization_guide_service.h"
+#include "components/optimization_guide/optimization_guide_switches.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/optimization_guide/test_hints_component_creator.h"
 #include "components/previews/content/previews_decider_impl.h"
@@ -133,9 +135,10 @@
 
     // Set up OptimizationGuideServiceURL, this does not enable HintsFetching,
     // only provides the URL.
-    cmd->AppendSwitchASCII(previews::switches::kOptimizationGuideServiceURL,
-                           hints_server_->base_url().spec());
-    cmd->AppendSwitchASCII(previews::switches::kFetchHintsOverride,
+    cmd->AppendSwitchASCII(
+        optimization_guide::switches::kOptimizationGuideServiceURL,
+        hints_server_->base_url().spec());
+    cmd->AppendSwitchASCII(optimization_guide::switches::kFetchHintsOverride,
                            "example1.com, example2.com");
   }
 
@@ -303,9 +306,9 @@
     // Enable OptimizationHintsFetching with |kOptimizationHintsFetching|.
     scoped_feature_list_.InitWithFeatures(
         {previews::features::kPreviews, previews::features::kNoScriptPreviews,
-         previews::features::kOptimizationHints,
+         optimization_guide::features::kOptimizationHints,
          previews::features::kResourceLoadingHints,
-         previews::features::kOptimizationHintsFetching,
+         optimization_guide::features::kOptimizationHintsFetching,
          data_reduction_proxy::features::
              kDataReductionProxyEnabledWithNetworkService},
         {});
@@ -598,9 +601,9 @@
   const base::HistogramTester* histogram_tester = GetHistogramTester();
   GURL url = https_url();
   base::CommandLine::ForCurrentProcess()->RemoveSwitch(
-      previews::switches::kFetchHintsOverride);
+      optimization_guide::switches::kFetchHintsOverride);
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
-      previews::switches::kFetchHintsOverrideTimer);
+      optimization_guide::switches::kFetchHintsOverrideTimer);
 
   SeedSiteEngagementService();
 
diff --git a/chrome/browser/previews/previews_browsertest.cc b/chrome/browser/previews/previews_browsertest.cc
index f8cef31..95d2175 100644
--- a/chrome/browser/previews/previews_browsertest.cc
+++ b/chrome/browser/previews/previews_browsertest.cc
@@ -23,6 +23,7 @@
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_features.h"
 #include "components/optimization_guide/hints_component_info.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_service.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/optimization_guide/test_hints_component_creator.h"
@@ -224,7 +225,8 @@
 
   void SetUp() override {
     scoped_feature_list_.InitWithFeatures(
-        {previews::features::kPreviews, previews::features::kOptimizationHints,
+        {previews::features::kPreviews,
+         optimization_guide::features::kOptimizationHints,
          previews::features::kNoScriptPreviews,
          data_reduction_proxy::features::
              kDataReductionProxyEnabledWithNetworkService},
diff --git a/chrome/browser/previews/previews_lite_page_browsertest.cc b/chrome/browser/previews/previews_lite_page_browsertest.cc
index 39f1461..583714e9 100644
--- a/chrome/browser/previews/previews_lite_page_browsertest.cc
+++ b/chrome/browser/previews/previews_lite_page_browsertest.cc
@@ -56,6 +56,7 @@
 #include "components/infobars/core/confirm_infobar_delegate.h"
 #include "components/infobars/core/infobar.h"
 #include "components/optimization_guide/hints_component_info.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_service.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/optimization_guide/test_hints_component_creator.h"
@@ -283,7 +284,8 @@
         previews::features::kLitePageServerPreviews, feature_parameters);
 
     scoped_feature_list_.InitWithFeatures(
-        {previews::features::kPreviews, previews::features::kOptimizationHints,
+        {previews::features::kPreviews,
+         optimization_guide::features::kOptimizationHints,
          previews::features::kResourceLoadingHints,
          data_reduction_proxy::features::
              kDataReductionProxyEnabledWithNetworkService,
diff --git a/chrome/browser/previews/previews_top_host_provider_impl.cc b/chrome/browser/previews/previews_top_host_provider_impl.cc
index 3f9209b7..ebb57fb 100644
--- a/chrome/browser/previews/previews_top_host_provider_impl.cc
+++ b/chrome/browser/previews/previews_top_host_provider_impl.cc
@@ -10,10 +10,10 @@
 #include "chrome/browser/engagement/site_engagement_score.h"
 #include "chrome/browser/engagement/site_engagement_service.h"
 #include "chrome/browser/profiles/profile.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/prefs/pref_service.h"
 #include "components/prefs/scoped_user_pref_update.h"
 #include "components/previews/content/previews_hints_util.h"
-#include "components/previews/core/previews_experiments.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/web_contents.h"
@@ -69,7 +69,7 @@
 
   for (const auto& detail : engagement_details) {
     if (top_host_blacklist->size() >=
-        previews::params::MaxHintsFetcherTopHostBlacklistSize()) {
+        optimization_guide::features::MaxHintsFetcherTopHostBlacklistSize()) {
       break;
     }
     if (detail.origin.SchemeIsHTTPOrHTTPS()) {
diff --git a/chrome/browser/previews/previews_top_host_provider_impl_unittest.cc b/chrome/browser/previews/previews_top_host_provider_impl_unittest.cc
index f6ad6914..b3892b2 100644
--- a/chrome/browser/previews/previews_top_host_provider_impl_unittest.cc
+++ b/chrome/browser/previews/previews_top_host_provider_impl_unittest.cc
@@ -9,10 +9,10 @@
 #include "chrome/browser/engagement/site_engagement_service.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "chrome/test/base/testing_profile.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_prefs.h"
 #include "components/prefs/pref_service.h"
 #include "components/previews/content/previews_hints_util.h"
-#include "components/previews/core/previews_experiments.h"
 #include "content/public/test/mock_navigation_handle.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -301,9 +301,9 @@
 TEST_F(PreviewsTopHostProviderImplTest,
        IntializeTopHostBlacklistWithMaxTopSites) {
   size_t engaged_hosts =
-      previews::params::MaxHintsFetcherTopHostBlacklistSize() + 1;
+      optimization_guide::features::MaxHintsFetcherTopHostBlacklistSize() + 1;
   size_t max_top_hosts =
-      previews::params::MaxHintsFetcherTopHostBlacklistSize() + 1;
+      optimization_guide::features::MaxHintsFetcherTopHostBlacklistSize() + 1;
   AddEngagedHosts(engaged_hosts);
 
   // Blacklist should be populated on the first request.
@@ -314,7 +314,8 @@
   hosts = top_host_provider()->GetTopHosts(max_top_hosts);
   EXPECT_EQ(
       hosts.size(),
-      engaged_hosts - previews::params::MaxHintsFetcherTopHostBlacklistSize());
+      engaged_hosts -
+          optimization_guide::features::MaxHintsFetcherTopHostBlacklistSize());
   EXPECT_EQ(GetCurrentTopHostBlacklistState(),
             optimization_guide::prefs::HintsFetcherTopHostBlacklistState::
                 kInitialized);
@@ -325,15 +326,15 @@
   // hosts by engagement score.
   EXPECT_TRUE(IsHostBlacklisted(base::StringPrintf(
       "domain%zu.com",
-      previews::params::MaxHintsFetcherTopHostBlacklistSize())));
+      optimization_guide::features::MaxHintsFetcherTopHostBlacklistSize())));
   EXPECT_FALSE(IsHostBlacklisted(base::StringPrintf("domain%u.com", 1u)));
 }
 
 TEST_F(PreviewsTopHostProviderImplTest, TopHostsFilteredByEngagementThreshold) {
   size_t engaged_hosts =
-      previews::params::MaxHintsFetcherTopHostBlacklistSize() + 1;
+      optimization_guide::features::MaxHintsFetcherTopHostBlacklistSize() + 1;
   size_t max_top_hosts =
-      previews::params::MaxHintsFetcherTopHostBlacklistSize() + 1;
+      optimization_guide::features::MaxHintsFetcherTopHostBlacklistSize() + 1;
 
   AddEngagedHosts(engaged_hosts);
   // Add two hosts with very low engagement scores that should not be returned
@@ -349,7 +350,8 @@
   hosts = top_host_provider()->GetTopHosts(max_top_hosts);
   EXPECT_EQ(
       hosts.size(),
-      engaged_hosts - previews::params::MaxHintsFetcherTopHostBlacklistSize());
+      engaged_hosts -
+          optimization_guide::features::MaxHintsFetcherTopHostBlacklistSize());
   EXPECT_EQ(GetCurrentTopHostBlacklistState(),
             optimization_guide::prefs::HintsFetcherTopHostBlacklistState::
                 kInitialized);
diff --git a/chrome/browser/previews/previews_ui_tab_helper.cc b/chrome/browser/previews/previews_ui_tab_helper.cc
index 04b7bef..0e1917e1 100644
--- a/chrome/browser/previews/previews_ui_tab_helper.cc
+++ b/chrome/browser/previews/previews_ui_tab_helper.cc
@@ -26,6 +26,7 @@
 #include "components/network_time/network_time_tracker.h"
 #include "components/offline_pages/buildflags/buildflags.h"
 #include "components/offline_pages/core/offline_page_item.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/previews/content/previews_decider_impl.h"
 #include "components/previews/content/previews_ui_service.h"
 #include "components/previews/core/previews_experiments.h"
@@ -252,7 +253,7 @@
 
 void PreviewsUITabHelper::MaybeShowInfoBarForHintsFetcher() {
   if (!base::FeatureList::IsEnabled(
-          previews::features::kOptimizationHintsFetching))
+          optimization_guide::features::kOptimizationHintsFetching))
     return;
 
   PreviewsService* previews_service = PreviewsServiceFactory::GetForProfile(
diff --git a/chrome/browser/previews/previews_ui_tab_helper_unittest.cc b/chrome/browser/previews/previews_ui_tab_helper_unittest.cc
index 714fa90..c8541a8 100644
--- a/chrome/browser/previews/previews_ui_tab_helper_unittest.cc
+++ b/chrome/browser/previews/previews_ui_tab_helper_unittest.cc
@@ -33,6 +33,7 @@
 #include "components/offline_pages/buildflags/buildflags.h"
 #include "components/offline_pages/core/offline_page_item.h"
 #include "components/offline_pages/core/request_header/offline_page_header.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/previews/content/previews_user_data.h"
 #include "components/previews/core/previews_features.h"
@@ -378,7 +379,7 @@
 TEST_F(PreviewsUITabHelperUnitTest, TestInfoBarShownOnHintsFetcherEnabled) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
-      {previews::features::kOptimizationHintsFetching}, {});
+      {optimization_guide::features::kOptimizationHintsFetching}, {});
 
   data_reduction_proxy::DataReductionProxySettings::
       SetDataSaverEnabledForTesting(drp_test_context_->pref_service(), true);
diff --git a/chrome/browser/previews/resource_loading_hints/resource_loading_hints_browsertest.cc b/chrome/browser/previews/resource_loading_hints/resource_loading_hints_browsertest.cc
index a3570d10..b6d3275 100644
--- a/chrome/browser/previews/resource_loading_hints/resource_loading_hints_browsertest.cc
+++ b/chrome/browser/previews/resource_loading_hints/resource_loading_hints_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/run_loop.h"
+#include "base/strings/strcat.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool/thread_pool.h"
 #include "base/test/metrics/histogram_tester.h"
@@ -25,6 +26,7 @@
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_features.h"
 #include "components/optimization_guide/hints_component_info.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_service.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/optimization_guide/test_hints_component_creator.h"
@@ -38,14 +40,19 @@
 #include "components/previews/core/previews_switches.h"
 #include "components/ukm/test_ukm_recorder.h"
 #include "content/public/browser/browser_task_traits.h"
+#include "content/public/browser/render_process_host.h"
 #include "content/public/test/browser_test_utils.h"
+#include "net/dns/mock_host_resolver.h"
 #include "net/test/embedded_test_server/http_request.h"
 #include "net/test/embedded_test_server/http_response.h"
 #include "services/metrics/public/cpp/ukm_builders.h"
 #include "services/network/public/cpp/network_quality_tracker.h"
+#include "third_party/blink/public/common/features.h"
 
 namespace {
 
+constexpr char kMockHost[] = "mock.host";
+
 // Retries fetching |histogram_name| until it contains at least |count| samples.
 void RetryForHistogramUntilCountReached(base::HistogramTester* histogram_tester,
                                         const std::string& histogram_name,
@@ -78,6 +85,8 @@
   ~ResourceLoadingNoFeaturesBrowserTest() override = default;
 
   void SetUpOnMainThread() override {
+    host_resolver()->AddRule("*", "127.0.0.1");
+
     g_browser_process->network_quality_tracker()
         ->ReportEffectiveConnectionTypeForTesting(
             net::EFFECTIVE_CONNECTION_TYPE_2G);
@@ -161,6 +170,10 @@
     cmd->AppendSwitch("enable-spdy-proxy-auth");
 
     cmd->AppendSwitch("optimization-guide-disable-installer");
+
+    // Needed so that the browser can connect to kMockHost.
+    cmd->AppendSwitch("ignore-certificate-errors");
+
     cmd->AppendSwitch("purge_hint_cache_store");
 
     // Due to race conditions, it's possible that blacklist data is not loaded
@@ -222,7 +235,8 @@
     ProcessHintsComponent(
         test_hints_component_creator_.CreateHintsComponentInfoWithPageHints(
             optimization_guide::proto::RESOURCE_LOADING,
-            {hint_setup_url.host()}, page_pattern, resource_patterns));
+            {hint_setup_url.host(), kMockHost}, page_pattern,
+            resource_patterns));
     LoadHintsForUrl(hint_setup_url);
   }
 
@@ -296,9 +310,20 @@
     subresource_expected_["/baz.woff2"] = expect_woff_requested;
   }
 
+  int GetProcessID() const {
+    return browser()
+        ->tab_strip_model()
+        ->GetActiveWebContents()
+        ->GetMainFrame()
+        ->GetProcess()
+        ->GetID();
+  }
+
  protected:
   base::test::ScopedFeatureList scoped_feature_list_;
 
+  std::unique_ptr<net::EmbeddedTestServer> https_server_;
+
  private:
   void TearDownOnMainThread() override {
     EXPECT_TRUE(https_server_->ShutdownAndWaitUntilComplete());
@@ -349,7 +374,6 @@
   optimization_guide::testing::TestHintsComponentCreator
       test_hints_component_creator_;
 
-  std::unique_ptr<net::EmbeddedTestServer> https_server_;
   std::unique_ptr<net::EmbeddedTestServer> http_server_;
   GURL https_url_;
   GURL https_url_preload_;
@@ -372,50 +396,82 @@
 };
 
 // This test class enables ResourceLoadingHints with OptimizationHints.
-// Parameter is true if the test should be run with a webpage that preloads
-// resources in the HTML head using link-rel preload.
+// First parameter is true if the test should be run with a webpage that
+// preloads resources in the HTML head using link-rel preload.
+// Second parameter is true if the blink feature
+// kSendPreviewsLoadingHintsBeforeCommit should be enabled.
 class ResourceLoadingHintsBrowserTest
-    : public ::testing::WithParamInterface<bool>,
+    : public ::testing::WithParamInterface<std::tuple<bool, bool>>,
       public ResourceLoadingNoFeaturesBrowserTest {
  public:
-  ResourceLoadingHintsBrowserTest() = default;
+  ResourceLoadingHintsBrowserTest()
+      : use_preload_resources_webpage_(std::get<0>(GetParam())),
+        use_render_frame_observer_(std::get<1>(GetParam())) {}
 
   ~ResourceLoadingHintsBrowserTest() override = default;
 
   void SetUp() override {
     // Enabling NoScript should have no effect since resource loading takes
     // priority over NoScript.
-    scoped_feature_list_.InitWithFeatures(
-        {previews::features::kPreviews, previews::features::kNoScriptPreviews,
-         previews::features::kOptimizationHints,
-         previews::features::kResourceLoadingHints,
-         data_reduction_proxy::features::
-             kDataReductionProxyEnabledWithNetworkService},
-        {});
+    if (!use_render_frame_observer_) {
+      scoped_feature_list_.InitWithFeatures(
+          {previews::features::kPreviews, previews::features::kNoScriptPreviews,
+           optimization_guide::features::kOptimizationHints,
+           previews::features::kResourceLoadingHints,
+           data_reduction_proxy::features::
+               kDataReductionProxyEnabledWithNetworkService},
+          {});
+    } else {
+      scoped_feature_list_.InitWithFeatures(
+          {blink::features::kSendPreviewsLoadingHintsBeforeCommit,
+           previews::features::kPreviews, previews::features::kNoScriptPreviews,
+           optimization_guide::features::kOptimizationHints,
+           previews::features::kResourceLoadingHints,
+           data_reduction_proxy::features::
+               kDataReductionProxyEnabledWithNetworkService},
+          {});
+    }
     ResourceLoadingNoFeaturesBrowserTest::SetUp();
   }
 
+  GURL GetURLWithMockHost(const net::EmbeddedTestServer& server,
+                          const std::string& relative_url) const {
+    return server.GetURL(kMockHost, relative_url);
+  }
+
   const GURL& https_url() const override {
-    if (GetParam())
+    if (use_preload_resources_webpage_)
       return ResourceLoadingNoFeaturesBrowserTest::https_url_preload();
     return ResourceLoadingNoFeaturesBrowserTest::https_url();
   }
 
   const GURL& https_url_iframe() const override {
-    if (GetParam())
+    if (use_preload_resources_webpage_)
       return ResourceLoadingNoFeaturesBrowserTest::https_url_iframe_preload();
     return ResourceLoadingNoFeaturesBrowserTest::https_url_iframe();
   }
 
+  bool use_preload_resources_webpage() const {
+    return use_preload_resources_webpage_;
+  }
+
+  bool use_render_frame_observer() const { return use_render_frame_observer_; }
+
  private:
+  const bool use_preload_resources_webpage_;
+  const bool use_render_frame_observer_;
+
   DISALLOW_COPY_AND_ASSIGN(ResourceLoadingHintsBrowserTest);
 };
 
-// Parameter is true if the test should be run with a webpage that preloads
-// resources in the HTML head using link-rel preload.
+// First parameter is true if the test should be run with a webpage that
+// preloads resources in the HTML head using link-rel preload. Second parameter
+// is true if the blink feature kSendPreviewsLoadingHintsBeforeCommit
+// should be enabled.
 INSTANTIATE_TEST_SUITE_P(,
                          ResourceLoadingHintsBrowserTest,
-                         ::testing::Values(false, true));
+                         ::testing::Combine(::testing::Bool(),
+                                            ::testing::Bool()));
 
 // Previews InfoBar (which these tests triggers) does not work on Mac.
 // See https://crbug.com/782322 for details. Also occasional flakes on win7
@@ -429,9 +485,7 @@
 IN_PROC_BROWSER_TEST_P(
     ResourceLoadingHintsBrowserTest,
     DISABLE_ON_WIN_MAC_CHROMESOS(ResourceLoadingHintsHttpsWhitelisted)) {
-  // TODO(https://crbug.com/891328): The test does not pass when resources are
-  // loaded using link-rel preload.
-  if (GetParam())
+  if (use_preload_resources_webpage() && !use_render_frame_observer())
     return;
 
   GURL url = https_url();
@@ -484,6 +538,28 @@
   // SetDefaultOnlyResourceLoadingHints sets 3 resource loading hints patterns.
   histogram_tester.ExpectBucketCount(
       "ResourceLoadingHints.CountBlockedSubresourcePatterns", 3, 2);
+
+  int previous_process_id = GetProcessID();
+
+  {
+    // Navigate to a cross-origin URL. Ensure that (i) there is no browser
+    // crash; and (ii) web contents observer sends the hints to the correct
+    // agent on the renderer side.
+    SetExpectedFooJpgRequest(false);
+    SetExpectedBarJpgRequest(true);
+
+    base::HistogramTester histogram_tester_2;
+    ui_test_utils::NavigateToURL(
+        browser(),
+        GetURLWithMockHost(*https_server_, "/resource_loading_hints.html"));
+
+    int current_process_id = GetProcessID();
+    EXPECT_NE(previous_process_id, current_process_id);
+    base::RunLoop().RunUntilIdle();
+    RetryForHistogramUntilCountReached(
+        &histogram_tester_2,
+        "ResourceLoadingHints.CountBlockedSubresourcePatterns", 1);
+  }
 }
 
 // The test loads https_url_iframe() which is whitelisted for resource blocking.
@@ -588,15 +664,13 @@
 IN_PROC_BROWSER_TEST_P(
     ResourceLoadingHintsBrowserTest,
     DISABLE_ON_WIN_MAC_CHROMESOS(ExperimentalHints_ExperimentIsEnabled)) {
-  // TODO(https://crbug.com/891328): The test does not pass when resources are
-  // loaded using link-rel preload.
-  if (GetParam())
+  if (use_preload_resources_webpage() && !use_render_frame_observer())
     return;
 
   base::test::ScopedFeatureList scoped_list;
   scoped_list.InitAndEnableFeatureWithParameters(
-      previews::features::kOptimizationHintsExperiments,
-      {{previews::features::kOptimizationHintsExperimentNameParam,
+      optimization_guide::features::kOptimizationHintsExperiments,
+      {{optimization_guide::features::kOptimizationHintsExperimentNameParam,
         optimization_guide::testing::kFooExperimentName}});
 
   GURL url = https_url();
@@ -634,14 +708,13 @@
 IN_PROC_BROWSER_TEST_P(
     ResourceLoadingHintsBrowserTest,
     DISABLE_ON_WIN_MAC_CHROMESOS(MixExperimentalHints_ExperimentIsEnabled)) {
-  // TODO(https://crbug.com/891328): The test does not pass when resources are
-  // loaded using link-rel preload.
-  if (GetParam())
+  if (use_preload_resources_webpage() && !use_render_frame_observer())
     return;
+
   base::test::ScopedFeatureList scoped_list;
   scoped_list.InitAndEnableFeatureWithParameters(
-      previews::features::kOptimizationHintsExperiments,
-      {{previews::features::kOptimizationHintsExperimentNameParam,
+      optimization_guide::features::kOptimizationHintsExperiments,
+      {{optimization_guide::features::kOptimizationHintsExperimentNameParam,
         optimization_guide::testing::kFooExperimentName}});
 
   GURL url = https_url();
@@ -716,9 +789,7 @@
 IN_PROC_BROWSER_TEST_P(
     ResourceLoadingHintsBrowserTest,
     DISABLE_ON_WIN_MAC_CHROMESOS(SameOriginDifferentPattern)) {
-  // TODO(https://crbug.com/891328): The test does not pass when resources are
-  // loaded using link-rel preload.
-  if (GetParam())
+  if (use_preload_resources_webpage() && !use_render_frame_observer())
     return;
   // Whitelist resource loading hints for https_url()'s' host and pattern.
   SetDefaultOnlyResourceLoadingHintsWithPagePattern(https_url(),
@@ -779,14 +850,12 @@
 IN_PROC_BROWSER_TEST_P(
     ResourceLoadingHintsBrowserTest,
     DISABLE_ON_WIN_MAC_CHROMESOS(MixExperimentalHints_ExperimentIsNotEnabled)) {
-  // TODO(https://crbug.com/891328): The test does not pass when resources are
-  // loaded using link-rel preload.
-  if (GetParam())
+  if (use_preload_resources_webpage() && !use_render_frame_observer())
     return;
   base::test::ScopedFeatureList scoped_list;
   scoped_list.InitAndEnableFeatureWithParameters(
-      previews::features::kOptimizationHintsExperiments,
-      {{previews::features::kOptimizationHintsExperimentNameParam,
+      optimization_guide::features::kOptimizationHintsExperiments,
+      {{optimization_guide::features::kOptimizationHintsExperimentNameParam,
         "some_other_experiment"}});
 
   GURL url = https_url();
@@ -817,9 +886,7 @@
     ResourceLoadingHintsBrowserTest,
     DISABLE_ON_WIN_MAC_CHROMESOS(
         ResourceLoadingHintsHttpsWhitelistedRedirectToHttps)) {
-  // TODO(https://crbug.com/891328): The test does not pass when resources are
-  // loaded using link-rel preload.
-  if (GetParam())
+  if (use_preload_resources_webpage() && !use_render_frame_observer())
     return;
   GURL url = redirect_url();
 
diff --git a/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.cc b/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.cc
index ffb3240..3c979b94 100644
--- a/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.cc
+++ b/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.cc
@@ -21,6 +21,7 @@
 #include "content/public/browser/web_contents.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom.h"
 #include "url/gurl.h"
 
@@ -35,15 +36,49 @@
   profile_ = Profile::FromBrowserContext(web_contents->GetBrowserContext());
 }
 
+void ResourceLoadingHintsWebContentsObserver::ReadyToCommitNavigation(
+    content::NavigationHandle* navigation_handle) {
+  DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+
+  // When kSendPreviewsLoadingHintsBeforeCommit is disabled, resource
+  // loading hints are sent in DidFinishNavigation.
+  if (!base::FeatureList::IsEnabled(
+          blink::features::kSendPreviewsLoadingHintsBeforeCommit)) {
+    return;
+  }
+
+  if (!navigation_handle->IsInMainFrame() ||
+      navigation_handle->IsSameDocument() || navigation_handle->IsErrorPage()) {
+    return;
+  }
+
+  SendResourceLoadingHints(navigation_handle);
+}
+
 void ResourceLoadingHintsWebContentsObserver::DidFinishNavigation(
     content::NavigationHandle* navigation_handle) {
   DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+
+  // When kSendPreviewsLoadingHintsBeforeCommit is enabled, resource
+  // loading hints are sent in ReadyToCommitNavigation.
+  if (base::FeatureList::IsEnabled(
+          blink::features::kSendPreviewsLoadingHintsBeforeCommit)) {
+    return;
+  }
+
   if (!navigation_handle->IsInMainFrame() ||
       !navigation_handle->HasCommitted() ||
       navigation_handle->IsSameDocument() || navigation_handle->IsErrorPage()) {
     return;
   }
 
+  SendResourceLoadingHints(navigation_handle);
+}
+
+void ResourceLoadingHintsWebContentsObserver::SendResourceLoadingHints(
+    content::NavigationHandle* navigation_handle) {
+  DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+
   PreviewsUITabHelper* ui_tab_helper =
       PreviewsUITabHelper::FromWebContents(navigation_handle->GetWebContents());
   if (!ui_tab_helper)
@@ -59,21 +94,19 @@
   }
 
   DCHECK(previews::params::IsResourceLoadingHintsEnabled());
-  SendResourceLoadingHints(navigation_handle,
-                           previews_user_data->is_redirect());
-}
-
-void ResourceLoadingHintsWebContentsObserver::SendResourceLoadingHints(
-    content::NavigationHandle* navigation_handle,
-    bool is_redirect) const {
-  // Hints should be sent only after the renderer frame has committed.
-  DCHECK(navigation_handle->HasCommitted());
-  DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
   DCHECK(navigation_handle->GetURL().SchemeIsHTTPOrHTTPS());
 
+  bool is_redirect = previews_user_data->is_redirect();
+
   blink::mojom::PreviewsResourceLoadingHintsReceiverPtr hints_receiver_ptr;
-  web_contents()->GetMainFrame()->GetRemoteInterfaces()->GetInterface(
-      &hints_receiver_ptr);
+
+  if (!base::FeatureList::IsEnabled(
+          blink::features::kSendPreviewsLoadingHintsBeforeCommit)) {
+    // Hints should be sent only after the renderer frame has committed.
+    DCHECK(navigation_handle->HasCommitted());
+    web_contents()->GetMainFrame()->GetRemoteInterfaces()->GetInterface(
+        &hints_receiver_ptr);
+  }
   blink::mojom::PreviewsResourceLoadingHintsPtr hints_ptr =
       blink::mojom::PreviewsResourceLoadingHints::New();
 
@@ -97,7 +130,16 @@
   for (const std::string& hint : hints)
     hints_ptr->subresources_to_block.push_back(hint);
 
-  hints_receiver_ptr->SetResourceLoadingHints(std::move(hints_ptr));
+  if (!base::FeatureList::IsEnabled(
+          blink::features::kSendPreviewsLoadingHintsBeforeCommit)) {
+    hints_receiver_ptr->SetResourceLoadingHints(std::move(hints_ptr));
+  } else {
+    blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedPtr
+        hints_receiver_associated_ptr =
+            GetResourceLoadingHintsReceiver(navigation_handle);
+    hints_receiver_associated_ptr->SetResourceLoadingHints(
+        std::move(hints_ptr));
+  }
 }
 
 const std::vector<std::string> ResourceLoadingHintsWebContentsObserver::
@@ -114,4 +156,19 @@
       document_gurl);
 }
 
+blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedPtr
+ResourceLoadingHintsWebContentsObserver::GetResourceLoadingHintsReceiver(
+    content::NavigationHandle* navigation_handle) {
+  blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedPtr
+      loading_hints_agent;
+
+  if (navigation_handle->GetRenderFrameHost()
+          ->GetRemoteAssociatedInterfaces()) {
+    navigation_handle->GetRenderFrameHost()
+        ->GetRemoteAssociatedInterfaces()
+        ->GetInterface(&loading_hints_agent);
+  }
+  return loading_hints_agent;
+}
+
 WEB_CONTENTS_USER_DATA_KEY_IMPL(ResourceLoadingHintsWebContentsObserver)
diff --git a/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.h b/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.h
index 2b9da44..cae0f1e 100644
--- a/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.h
+++ b/chrome/browser/previews/resource_loading_hints/resource_loading_hints_web_contents_observer.h
@@ -11,6 +11,9 @@
 #include "base/macros.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "content/public/browser/web_contents_user_data.h"
+#include "services/service_manager/public/cpp/interface_provider.h"
+#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
+#include "third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom.h"
 
 class Profile;
 
@@ -32,13 +35,19 @@
 
   // Overridden from content::WebContentsObserver. If the navigation is of type
   // resource loading hints preview, then this method sends the resource loading
-  // hints mojo message to the renderer.
+  // hints mojo message to the renderer before the commit occurs. This ensures
+  // that the hints will be available to the renderer as soon as the document
+  // starts rendering.
+  void ReadyToCommitNavigation(
+      content::NavigationHandle* navigation_handle) override;
+
+  // TODO(https://crbug.com/891328): Clean up older interfaces once
+  // kUseRenderFrameObserverForPreviewsLoadingHints is enabled by default.
   void DidFinishNavigation(
       content::NavigationHandle* navigation_handle) override;
 
   // Sends resource loading hints to the renderer.
-  void SendResourceLoadingHints(content::NavigationHandle* navigation_handle,
-                                bool is_reload) const;
+  void SendResourceLoadingHints(content::NavigationHandle* navigation_handle);
 
   // Returns the pattern of resources that should be blocked when loading
   // |document_gurl|. The pattern may be a single substring to match against the
@@ -51,6 +60,9 @@
   // Set in constructor.
   Profile* profile_ = nullptr;
 
+  blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedPtr
+  GetResourceLoadingHintsReceiver(content::NavigationHandle* navigation_handle);
+
   WEB_CONTENTS_USER_DATA_KEY_DECL();
 
   DISALLOW_COPY_AND_ASSIGN(ResourceLoadingHintsWebContentsObserver);
diff --git a/chrome/browser/profiles/profile_metrics.cc b/chrome/browser/profiles/profile_metrics.cc
index 99e998de..48ac2cb4 100644
--- a/chrome/browser/profiles/profile_metrics.cc
+++ b/chrome/browser/profiles/profile_metrics.cc
@@ -560,7 +560,9 @@
 
 void ProfileMetrics::LogTimeToOpenUserManager(
     const base::TimeDelta& time_to_open) {
-  UMA_HISTOGRAM_TIMES("Profile.TimeToOpenUserManager", time_to_open);
+  UMA_HISTOGRAM_CUSTOM_TIMES("Profile.TimeToOpenUserManagerUpTo1min",
+                             time_to_open, base::TimeDelta::FromMilliseconds(1),
+                             base::TimeDelta::FromMinutes(1), 50);
 }
 
 #if defined(OS_ANDROID)
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn
index 3c7fd2d..2e445b96 100644
--- a/chrome/browser/resources/BUILD.gn
+++ b/chrome/browser/resources/BUILD.gn
@@ -22,7 +22,6 @@
         "local_ntp:closure_compile",
         "local_state:closure_compile",
         "management:closure_compile",
-        "media_router:closure_compile",
         "ntp4:closure_compile",
         "omnibox:closure_compile",
         "pdf:closure_compile",
diff --git a/chrome/browser/resources/bookmarks/BUILD.gn b/chrome/browser/resources/bookmarks/BUILD.gn
index 84672ac..3fc62cd 100644
--- a/chrome/browser/resources/bookmarks/BUILD.gn
+++ b/chrome/browser/resources/bookmarks/BUILD.gn
@@ -155,6 +155,7 @@
     ":command_manager",
     ":store_client",
     "//ui/webui/resources/js:icon",
+    "//ui/webui/resources/js/cr/ui:focus_without_ink",
   ]
   externs_list = [ "$externs_path/chrome_extensions.js" ]
 }
diff --git a/chrome/browser/resources/bookmarks/item.html b/chrome/browser/resources/bookmarks/item.html
index 07b1429..c4fc5e0 100644
--- a/chrome/browser/resources/bookmarks/item.html
+++ b/chrome/browser/resources/bookmarks/item.html
@@ -3,6 +3,7 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_icons_css.html">
 <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
+<link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html">
 <link rel="import" href="chrome://resources/html/icon.html">
 <link rel="import" href="actions.html">
 <link rel="import" href="shared_style.html">
diff --git a/chrome/browser/resources/bookmarks/item.js b/chrome/browser/resources/bookmarks/item.js
index e4d8147..f013a780 100644
--- a/chrome/browser/resources/bookmarks/item.js
+++ b/chrome/browser/resources/bookmarks/item.js
@@ -71,7 +71,7 @@
   },
 
   focusMenuButton: function() {
-    this.$.menuButton.focus();
+    cr.ui.focusWithoutInk(this.$.menuButton);
   },
 
   /** @return {BookmarksItemElement} */
@@ -247,7 +247,8 @@
    */
   updateFavicon_: function(url) {
     this.$.icon.className = url ? 'website-icon' : 'folder-icon';
-    this.$.icon.style.backgroundImage = url ? cr.icon.getFavicon(url) : null;
+    this.$.icon.style.backgroundImage =
+        url ? cr.icon.getFavicon(url, false) : null;
   },
 
   /** @private */
diff --git a/chrome/browser/resources/chromeos/BUILD.gn b/chrome/browser/resources/chromeos/BUILD.gn
index cb82aaf..be07fb1a 100644
--- a/chrome/browser/resources/chromeos/BUILD.gn
+++ b/chrome/browser/resources/chromeos/BUILD.gn
@@ -39,6 +39,7 @@
     "add_supervision:closure_compile",
     "bluetooth_pairing_dialog:closure_compile",
     "braille_ime:closure_compile",
+    "camera/src/js:closure_compile",
     "internet_config_dialog:closure_compile",
     "internet_detail_dialog:closure_compile",
     "login:closure_compile",
diff --git a/chrome/browser/resources/chromeos/camera/BUILD.gn b/chrome/browser/resources/chromeos/camera/BUILD.gn
index daaf9c4d..e79271d 100644
--- a/chrome/browser/resources/chromeos/camera/BUILD.gn
+++ b/chrome/browser/resources/chromeos/camera/BUILD.gn
@@ -4,6 +4,12 @@
 
 chrome_camera_app_dir = "$root_out_dir/resources/chromeos/camera"
 
+group("closure_compile") {
+  deps = [
+    "src/js:closure_compile",
+  ]
+}
+
 group("chrome_camera_app") {
   # According to crbug.com/855747, we should list all the files we want to copy
   # rather than list only the folders to avoid potential building issue and ease
@@ -17,6 +23,7 @@
     ":chrome_camera_app_css",
     ":chrome_camera_app_images",
     ":chrome_camera_app_js",
+    ":chrome_camera_app_js_browser_proxy",
     ":chrome_camera_app_js_models",
     ":chrome_camera_app_js_mojo",
     ":chrome_camera_app_js_views",
@@ -123,6 +130,16 @@
   ]
 }
 
+copy("chrome_camera_app_js_browser_proxy") {
+  sources = [
+    "src/js/browser_proxy/browser_proxy.js",
+  ]
+
+  outputs = [
+    "$chrome_camera_app_dir/js/browser_proxy/{{source_file_part}}",
+  ]
+}
+
 copy("chrome_camera_app_js_models") {
   sources = [
     "src/js/models/filenamer.js",
diff --git a/chrome/browser/resources/chromeos/camera/Makefile b/chrome/browser/resources/chromeos/camera/Makefile
index 0dcb67a..dab0ca8 100644
--- a/chrome/browser/resources/chromeos/camera/Makefile
+++ b/chrome/browser/resources/chromeos/camera/Makefile
@@ -117,13 +117,14 @@
 	src/images/settings_timer_duration.svg \
 	src/images/spinner.svg \
 	src/js/background.js \
+	src/js/browser_proxy/browser_proxy.js \
 	src/js/gallerybutton.js \
 	src/js/google-analytics-bundle.js \
 	src/js/main.js \
 	src/js/metrics.js \
-	src/js/models/gallery.js \
 	src/js/models/filenamer.js \
 	src/js/models/filesystem.js \
+	src/js/models/gallery.js \
 	src/js/mojo/imagecapture.js \
 	src/js/nav.js \
 	src/js/resolution_event_broker.js \
diff --git a/chrome/browser/resources/chromeos/camera/src/js/BUILD.gn b/chrome/browser/resources/chromeos/camera/src/js/BUILD.gn
new file mode 100644
index 0000000..48f350a
--- /dev/null
+++ b/chrome/browser/resources/chromeos/camera/src/js/BUILD.gn
@@ -0,0 +1,35 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+group("closure_compile") {
+  deps = [
+    ":compile_resources",
+    "browser_proxy:closure_compile",
+    "models:closure_compile",
+  ]
+}
+
+js_type_check("compile_resources") {
+  deps = [
+    ":state",
+    ":tooltip",
+    ":util",
+  ]
+}
+
+js_library("state") {
+}
+
+js_library("tooltip") {
+}
+
+js_library("util") {
+  deps = [
+    ":tooltip",
+    "browser_proxy:browser_proxy",
+  ]
+  externs_list = [ "$externs_path/chrome_extensions.js" ]
+}
diff --git a/chrome/browser/resources/chromeos/camera/src/js/background.js b/chrome/browser/resources/chromeos/camera/src/js/background.js
index 8fa77cc2..977c0bd 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/background.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/background.js
@@ -26,7 +26,7 @@
  * @type {number}
  * @const
  */
-cca.bg.INITIAL_ASPECT_RATIO = 1.3333333333;
+cca.bg.INITIAL_ASPECT_RATIO = 1.7777777777;
 
 /**
  * Top bar color of the window.
diff --git a/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/BUILD.gn b/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/BUILD.gn
new file mode 100644
index 0000000..aa71df4
--- /dev/null
+++ b/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/BUILD.gn
@@ -0,0 +1,20 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+js_type_check("closure_compile") {
+  deps = [
+    ":browser_proxy",
+  ]
+}
+
+js_library("browser_proxy") {
+  sources = [
+    "browser_proxy.js",
+    "browser_proxy_interface.js",
+    "webui_browser_proxy.js",
+  ]
+  externs_list = [ "$externs_path/chrome_extensions.js" ]
+}
diff --git a/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/browser_proxy.js b/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/browser_proxy.js
new file mode 100644
index 0000000..8dff1b1
--- /dev/null
+++ b/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/browser_proxy.js
@@ -0,0 +1,54 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+'use strict';
+
+/**
+ * Namespace for the Camera app.
+ */
+var cca = cca || {};
+
+/**
+ * Namespace for proxy.
+ */
+cca.proxy = cca.proxy || {};
+
+(function() {
+/**
+ * The Chrome App implementation of the CCA's interaction with the browser.
+ * @implements {cca.proxy.BrowserProxy}
+ */
+class ChromeAppBrowserProxy {
+  /** @override */
+  getVolumeList(callback) {
+    chrome.fileSystem.getVolumeList(callback);
+  }
+
+  /** @override */
+  requestFileSystem(options, callback) {
+    chrome.fileSystem.requestFileSystem(options, callback);
+  }
+
+  /** @override */
+  localStorageGet(keys, callback) {
+    chrome.storage.local.get(keys, callback);
+  }
+
+  /** @override */
+  localStorageSet(items, callback) {
+    chrome.storage.local.set(items, callback);
+  }
+
+  /** @override */
+  localStorageRemove(items, callback) {
+    chrome.storage.local.remove(items, callback);
+  }
+}
+
+/**
+ * Namespace for browser functions.
+ * @type {cca.proxy.BrowserProxy}
+ */
+cca.proxy.browserProxy = new ChromeAppBrowserProxy();
+})();
diff --git a/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/browser_proxy_interface.js b/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/browser_proxy_interface.js
new file mode 100644
index 0000000..22367be
--- /dev/null
+++ b/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/browser_proxy_interface.js
@@ -0,0 +1,48 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+'use strict';
+
+/**
+ * Namespace for the Camera app.
+ */
+var cca = cca || {};
+
+/**
+ * Namespace for proxy.
+ */
+cca.proxy = cca.proxy || {};
+
+/**
+ * The abstract interface for the CCA's interaction with the browser.
+ * @interface
+ */
+cca.proxy.BrowserProxy = class {
+  /** @param {function(!Array<!chrome.fileSystem.Volume>=)} callback */
+  getVolumeList(callback) {}
+
+  /**
+   * @param {!chrome.fileSystem.RequestFileSystemOptions} options
+   * @param {function(!FileSystem=)} callback
+   */
+  requestFileSystem(options, callback) {}
+
+  /**
+   * @param {(string|!Array<string>|!Object)} keys
+   * @param {function(!Object)=} callback
+   */
+  localStorageGet(keys, callback) {}
+
+  /**
+   * @param {!Object<string>} items
+   * @param {function()=} callback
+   */
+  localStorageSet(items, callback) {}
+
+  /**
+   * @param {(string|!Array<string>)} items
+   * @param {function()=} callback
+   */
+  localStorageRemove(items, callback) {}
+};
diff --git a/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/webui_browser_proxy.js b/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/webui_browser_proxy.js
new file mode 100644
index 0000000..cb5720b
--- /dev/null
+++ b/chrome/browser/resources/chromeos/camera/src/js/browser_proxy/webui_browser_proxy.js
@@ -0,0 +1,63 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+'use strict';
+
+/**
+ * Namespace for the Camera app.
+ */
+var cca = cca || {};
+
+/**
+ * Namespace for proxy.
+ */
+cca.proxy = cca.proxy || {};
+
+(function() {
+/* eslint-disable new-cap */
+
+/** @throws {Error} */
+function NOTIMPLEMENTED() {
+  throw Error('Browser proxy method not implemented!');
+}
+
+/**
+ * The WebUI implementation of the CCA's interaction with the browser.
+ * @implements {cca.proxy.BrowserProxy}
+ */
+class WebUIBrowserProxy {
+  /** @override */
+  getVolumeList(callback) {
+    NOTIMPLEMENTED();
+  }
+
+  /** @override */
+  requestFileSystem(options, callback) {
+    NOTIMPLEMENTED();
+  }
+
+  /** @override */
+  localStorageGet(keys, callback) {
+    NOTIMPLEMENTED();
+  }
+
+  /** @override */
+  localStorageSet(items, callback) {
+    NOTIMPLEMENTED();
+  }
+
+  /** @override */
+  localStorageRemove(items, callback) {
+    NOTIMPLEMENTED();
+  }
+}
+
+/* eslint-enable new-cap */
+
+/**
+ * Namespace for browser functions.
+ * @type {cca.proxy.BrowserProxy}
+ */
+cca.proxy.browserProxy = new WebUIBrowserProxy();
+})();
diff --git a/chrome/browser/resources/chromeos/camera/src/js/main.js b/chrome/browser/resources/chromeos/camera/src/js/main.js
index 0ec9335e..148dbffb 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/main.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/main.js
@@ -111,12 +111,12 @@
       element.dispatchEvent(new Event('change')); // Trigger toggling css.
     };
     element.save = () => {
-      return key && chrome.storage.local.set(payload());
+      return key && cca.proxy.browserProxy.localStorageSet(payload());
     };
     if (key) {
       // Restore the previously saved state on startup.
-      chrome.storage.local.get(payload(),
-          (values) => element.toggleChecked(values[key]));
+      cca.proxy.browserProxy.localStorageGet(
+          payload(), (values) => element.toggleChecked(values[key]));
     }
   });
 };
diff --git a/chrome/browser/resources/chromeos/camera/src/js/models/BUILD.gn b/chrome/browser/resources/chromeos/camera/src/js/models/BUILD.gn
new file mode 100644
index 0000000..89ebf568
--- /dev/null
+++ b/chrome/browser/resources/chromeos/camera/src/js/models/BUILD.gn
@@ -0,0 +1,28 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/closure_compiler/compile_js.gni")
+
+js_type_check("closure_compile") {
+  deps = [
+    ":filenamer",
+    ":filesystem",
+    ":gallery",
+  ]
+}
+
+js_library("filenamer") {
+}
+
+js_library("filesystem") {
+  deps = [
+    "..:util",
+  ]
+}
+
+js_library("gallery") {
+  deps = [
+    ":filesystem",
+  ]
+}
diff --git a/chrome/browser/resources/chromeos/camera/src/js/models/filesystem.js b/chrome/browser/resources/chromeos/camera/src/js/models/filesystem.js
index d6d8b4b..ee6183c 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/models/filesystem.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/models/filesystem.js
@@ -65,14 +65,14 @@
       resolve([null, null]);
       return;
     }
-    chrome.fileSystem.getVolumeList((volumes) => {
+    cca.proxy.browserProxy.getVolumeList((volumes) => {
       if (volumes) {
         for (var i = 0; i < volumes.length; i++) {
           var volumeId = volumes[i].volumeId;
           if (volumeId.indexOf('downloads:Downloads') !== -1 ||
               volumeId.indexOf('downloads:MyFiles') !== -1) {
-            chrome.fileSystem.requestFileSystem(volumes[i],
-                (fs) => resolve([fs && fs.root, volumeId]));
+            cca.proxy.browserProxy.requestFileSystem(
+                volumes[i], (fs) => resolve([fs && fs.root, volumeId]));
             return;
           }
         }
@@ -101,7 +101,8 @@
   var checkAcked = new Promise((resolve) => {
     // ack 0: User has not yet acknowledged to migrate pictures.
     // ack 1: User acknowledges to migrate pictures to Downloads.
-    chrome.storage.local.get({ackMigratePictures: 0},
+    cca.proxy.browserProxy.localStorageGet(
+        {ackMigratePictures: 0},
         (values) => resolve(values.ackMigratePictures >= 1));
   });
   var checkMigrated = new Promise((resolve) => {
@@ -112,7 +113,8 @@
       resolve(false);
     }
   });
-  var ackMigrate = () => chrome.storage.local.set({ackMigratePictures: 1});
+  var ackMigrate = () =>
+      cca.proxy.browserProxy.localStorageSet({ackMigratePictures: 1});
   var doneMigrate = () => chrome.chromeosInfoPrivate &&
       chrome.chromeosInfoPrivate.set('cameraMediaConsolidated', true);
 
@@ -256,7 +258,7 @@
  * might be different from the given file name if the file already exists.
  * @param {DirectoryEntry} dir Directory to be written into.
  * @param {string} name Name of the file.
- * @param {Blob} blob Data of the file to be saved.
+ * @param {!Blob} blob Data of the file to be saved.
  * @return {!Promise<FileEntry>} Promise for the result.
  * @private
  */
@@ -274,7 +276,7 @@
 
 /**
  * Saves photo blob into predefined default location.
- * @param {Blob} blob Data of the photo to be saved.
+ * @param {!Blob} blob Data of the photo to be saved.
  * @param {string} filename Filename of the photo to be saved.
  * @return {!Promise<FileEntry>} Promise for the result.
  */
@@ -286,8 +288,7 @@
 
 /**
  * Creates a file for saving temporary video recording result.
- * @return {FileEntry} Newly created temporary file.
- * @async
+ * @return {Promise<?FileEntry>} Newly created temporary file.
  */
 cca.models.FileSystem.createTempVideoFile = async function() {
   const dir =
@@ -300,17 +301,24 @@
  * Saves temporary video file to predefined default location.
  * @param {FileEntry} tempfile Temporary video file to be saved.
  * @param {string} filename Filename to be saved.
- * @return {FileEntry} Saved video file.
- * @async
+ * @return {Promise<?FileEntry>} Saved video file.
  */
 cca.models.FileSystem.saveVideo = async function(tempfile, filename) {
   var dir =
       cca.models.FileSystem.externalDir || cca.models.FileSystem.internalDir;
+  if (!dir) {
+    return await null;
+  }
+
+  // Non-null version for the Closure Compiler.
+  let nonNullDir = dir;
+
   // Assuming content of tempfile contains all recorded chunks appended together
   // and is a well-formed video. The work needed here is just to move the file
   // to the correct directory and rename as the specified filename.
-  return await new Promise(
-      (resolve, reject) => tempfile.moveTo(dir, filename, resolve, reject));
+  return new Promise(
+      (resolve, reject) =>
+          tempfile.moveTo(nonNullDir, filename, resolve, reject));
 };
 
 /**
@@ -383,7 +391,6 @@
  * Checks if the entry's name has the video prefix.
  * @param {FileEntry} entry File entry.
  * @return {boolean} Has the video prefix or not.
- * @private
  */
 cca.models.FileSystem.hasVideoPrefix = function(entry) {
   return entry.name.startsWith(cca.models.Filenamer.VIDEO_PREFIX);
diff --git a/chrome/browser/resources/chromeos/camera/src/js/models/gallery.js b/chrome/browser/resources/chromeos/camera/src/js/models/gallery.js
index 7e0efc86..bb28746 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/models/gallery.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/models/gallery.js
@@ -286,7 +286,7 @@
 
 /**
  * Saves photo capture result into persistent storage and adds it into gallery.
- * @param {Blob} blob Data of the photo to be added.
+ * @param {!Blob} blob Data of the photo to be added.
  * @param {string} filename Filename of photo to be added.
  * @return {!Promise} Promise for the operation.
  */
@@ -324,7 +324,6 @@
 /**
  * Adds a picture into gallery.
  * @param {cca.models.Gallery.Picture} picture Picture to be added.
- * @async
  * @private
  */
 cca.models.Gallery.prototype.addPicture_ = async function(picture) {
diff --git a/chrome/browser/resources/chromeos/camera/src/js/tooltip.js b/chrome/browser/resources/chromeos/camera/src/js/tooltip.js
index 8435f9c..7e664dbe 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/tooltip.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/tooltip.js
@@ -16,13 +16,13 @@
 
 /**
  * Wrapper element that shows tooltip.
- * @type {HTMLElement}
+ * @private {HTMLElement}
  */
 cca.tooltip.wrapper_ = null;
 
 /**
  * Hovered element whose tooltip to be shown.
- * @type {HTMLElement}
+ * @private {HTMLElement}
  */
 cca.tooltip.hovered_ = null;
 
@@ -32,18 +32,19 @@
  * @return {NodeList<Element>} Elements whose tooltips have been set up.
  */
 cca.tooltip.setup = function(elements) {
-  cca.tooltip.wrapper_ = document.querySelector('#tooltip');
+  cca.tooltip.wrapper_ =
+      /** @type {HTMLElement} */ (document.querySelector('#tooltip'));
   elements.forEach((element) => {
+    const el = /** @type {HTMLElement} */ (element);
     var handler = () => {
       // Handler hides tooltip only when it's for the element.
-      if (element == cca.tooltip.hovered_) {
+      if (el == cca.tooltip.hovered_) {
         cca.tooltip.hide();
       }
     };
-    element.addEventListener('mouseout', handler);
-    element.addEventListener('click', handler);
-    element.addEventListener('mouseover',
-        cca.tooltip.show_.bind(undefined, element));
+    el.addEventListener('mouseout', handler);
+    el.addEventListener('click', handler);
+    el.addEventListener('mouseover', cca.tooltip.show_.bind(undefined, el));
   });
   return elements;
 };
diff --git a/chrome/browser/resources/chromeos/camera/src/js/util.js b/chrome/browser/resources/chromeos/camera/src/js/util.js
index 386b590..7303b6cf 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/util.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/util.js
@@ -17,7 +17,7 @@
 /**
  * Gets the clockwise rotation and flip that can orient a photo to its upright
  * position.
- * @param {Blob} blob JPEG blob that might contain EXIF orientation field.
+ * @param {!Blob} blob JPEG blob that might contain EXIF orientation field.
  * @return {Promise<Object<number, boolean>>}
  */
 cca.util.getPhotoOrientation = function(blob) {
@@ -89,7 +89,7 @@
 
 /**
  * Orients a photo to the upright orientation.
- * @param {Blob} blob Photo as a blob.
+ * @param {!Blob} blob Photo as a blob.
  * @param {function(Blob)} onSuccess Success callback with the result photo as
  *     a blob.
  * @param {function()} onFailure Failure callback.
@@ -182,7 +182,8 @@
  */
 cca.util.animateOnce = function(element, callback) {
   element.classList.remove('animate');
-  element.offsetWidth; // Force calculation to re-apply animation.
+  /** @suppress {suspiciousCode} */
+  element.offsetWidth;  // Force calculation to re-apply animation.
   element.classList.add('animate');
   cca.util.waitAnimationCompleted(element, () => {
     element.classList.remove('animate');
@@ -693,12 +694,12 @@
 
 /**
  * Makes an element scrollable by dragging with a mouse.
- * @param {cca.util.Scroller} scroller Scroller for the element.
+ * @param {cca.util.SmoothScroller} scroller SmoothScroller for the element.
  * @constructor
  */
 cca.util.MouseScroller = function(scroller) {
   /**
-   * @type {cca.util.Scroller}
+   * @type {cca.util.SmoothScroller}
    * @private
    */
   this.scroller_ = scroller;
@@ -890,9 +891,9 @@
 
 /**
  * Reads blob into Image.
- * @param {Blob} blob
+ * @param {!Blob} blob
  * @return {Promise<HTMLImageElement>}
- * @throw {Error}
+ * @throws {Error}
  */
 cca.util.blobToImage = function(blob) {
   return new Promise((resolve, reject) => {
diff --git a/chrome/browser/resources/chromeos/camera/src/js/views/camera.js b/chrome/browser/resources/chromeos/camera/src/js/views/camera.js
index ed5f6be..bc02a66b 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/views/camera.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/views/camera.js
@@ -178,10 +178,11 @@
 cca.views.Camera.prototype.focus = function() {
   (async () => {
     const values = await new Promise((resolve) => {
-      chrome.storage.local.get(['isIntroShown'], resolve);
+      cca.proxy.browserProxy.localStorageGet(['isIntroShown'], resolve);
     });
+    await this.started_;
     if (!values.isIntroShown) {
-      chrome.storage.local.set({isIntroShown: true});
+      cca.proxy.browserProxy.localStorageSet({isIntroShown: true});
       cca.util.animateOnce(this.banner_);
       this.bannerLearnMore_.focus({preventScroll: true});
     } else {
diff --git a/chrome/browser/resources/chromeos/camera/src/js/views/camera/options.js b/chrome/browser/resources/chromeos/camera/src/js/views/camera/options.js
index d5d45826..87fd7d2 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/views/camera/options.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/views/camera/options.js
@@ -194,7 +194,8 @@
   chrome.storage.local.get({mirroringToggles: {}},
       (values) => this.mirroringToggles_ = values.mirroringToggles);
   // Remove the deprecated values.
-  chrome.storage.local.remove(['effectIndex', 'toggleMulti', 'toggleMirror']);
+  cca.proxy.browserProxy.localStorageRemove(
+      ['effectIndex', 'toggleMulti', 'toggleMirror']);
 
   this.maybeRefreshVideoDeviceIds_();
   navigator.mediaDevices.addEventListener('devicechange', () => {
diff --git a/chrome/browser/resources/chromeos/camera/src/js/views/camera/preview.js b/chrome/browser/resources/chromeos/camera/src/js/views/camera/preview.js
index b721614..5232c56 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/views/camera/preview.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/views/camera/preview.js
@@ -120,9 +120,9 @@
     };
     this.video_.parentElement.replaceChild(video, this.video_).cleanup();
     this.video_ = video;
-    this.onIntrinsicSizeChanged_();
     video.addEventListener('resize', () => this.onIntrinsicSizeChanged_());
     video.addEventListener('click', (event) => this.onFocusClicked_(event));
+    return this.onIntrinsicSizeChanged_();
   });
 };
 
@@ -189,8 +189,34 @@
 };
 
 /**
+ * Sets CCA window inner bound to specified size.
+ * @param {number} width Width and min width of new window inner bound.
+ * @param {number} height Height and min height of new window inner bound.
+ * @return {Promise} Promise which is resolved when size change actually happen.
+ * @private
+ */
+cca.views.camera.Preview.prototype.setWindowSize_ = function(width, height) {
+  return new Promise((resolve) => {
+    const listener = () => {
+      chrome.app.window.current().onBoundsChanged.removeListener(listener);
+      resolve();
+    };
+    chrome.app.window.current().onBoundsChanged.addListener(listener);
+    const inner = chrome.app.window.current().innerBounds;
+    const prevW = inner.width;
+    const prevH = inner.height;
+    inner.minWidth = inner.width = width;
+    inner.minHeight = inner.height = height;
+    if (prevW == width && prevH == height) {
+      listener();
+    }
+  });
+};
+
+/**
  * Handles resizing the window for preview's aspect ratio changes.
  * @param {number=} aspectRatio Aspect ratio changed.
+ * @return {Promise}
  * @private
  */
 cca.views.camera.Preview.prototype.onWindowResize_ = function(aspectRatio) {
@@ -198,45 +224,42 @@
     clearTimeout(this.resizeWindowTimeout_);
     this.resizeWindowTimeout_ = null;
   }
+  cca.nav.onWindowResized();
+
   // Resize window for changed preview's aspect ratio or restore window size by
   // the last known window's aspect ratio.
-  new Promise((resolve) => {
-    if (aspectRatio) {
-      this.aspectRatio_ = aspectRatio;
-      resolve();
-    } else {
-      this.resizeWindowTimeout_ = setTimeout(() => {
-        this.resizeWindowTimeout_ = null;
-        resolve();
-      }, 500);  // Delay further resizing for smooth UX.
-    }
-  }).then(() => {
-    // Resize window by aspect ratio only if it's not maximized or fullscreen.
-    if (cca.util.isWindowFullSize()) {
-      return;
-    }
-    // Keep the width fixed and calculate the height by the aspect ratio.
-    // TODO(yuli): Update min-width for resizing at portrait orientation.
-    var inner = chrome.app.window.current().innerBounds;
-    var innerW = inner.minWidth;
-    var innerH = Math.round(innerW * 9 / 16);
-
-    // Limit window resizing capability by setting min-height. Don't limit
-    // max-height here as it may disable maximize/fullscreen capabilities.
-    inner.minHeight = innerH;
-    inner.width = innerW;
-    inner.height = innerH;
-  });
-  cca.nav.onWindowResized();
+  return new Promise((resolve) => {
+           if (aspectRatio) {
+             this.aspectRatio_ = aspectRatio;
+             resolve();
+           } else {
+             this.resizeWindowTimeout_ = setTimeout(() => {
+               this.resizeWindowTimeout_ = null;
+               resolve();
+             }, 500);  // Delay further resizing for smooth UX.
+           }
+         })
+      .then(() => {
+        // Resize window by aspect ratio only if it's not maximized or
+        // fullscreen.
+        if (cca.util.isWindowFullSize()) {
+          return;
+        }
+        const width = chrome.app.window.current().innerBounds.minWidth;
+        const height = Math.round(width * 9 / 16);
+        return this.setWindowSize_(width, height);
+      });
 };
 
 /**
  * Handles changed intrinsic size (first loaded or orientation changes).
+ * @async
  * @private
  */
-cca.views.camera.Preview.prototype.onIntrinsicSizeChanged_ = function() {
+cca.views.camera.Preview.prototype.onIntrinsicSizeChanged_ = async function() {
   if (this.video_.videoWidth && this.video_.videoHeight) {
-    this.onWindowResize_(this.video_.videoWidth / this.video_.videoHeight);
+    await this.onWindowResize_(
+        this.video_.videoWidth / this.video_.videoHeight);
   }
   this.cancelFocus_();
 };
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_am.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_am.xtb
index 6341daba..1d99a27 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_am.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_am.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 በ 4</translation>
 <translation id="7649070708921625228">እገዛ</translation>
 <translation id="7658239707568436148">ይቅር</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">ሰዓት ቆጣሪ</translation>
 <translation id="8145038249676204903">ፎቶ ለማንሳት ይቀይሩ</translation>
 <translation id="8261506727792406068">ሰርዝ</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ar.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ar.xtb
index aba9809..6ba73f4 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ar.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ar.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 × 4</translation>
 <translation id="7649070708921625228">مساعدة</translation>
 <translation id="7658239707568436148">إلغاء</translation>
+<translation id="7670511624014457267">60 صورة في الثانية</translation>
 <translation id="8049189770492311300">مؤقت</translation>
 <translation id="8145038249676204903">التبديل لالتقاط صورة</translation>
 <translation id="8261506727792406068">حذف</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_bg.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_bg.xtb
index b179de4..5cc86c94 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_bg.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_bg.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 на 4</translation>
 <translation id="7649070708921625228">Помощ</translation>
 <translation id="7658239707568436148">Отказ</translation>
+<translation id="7670511624014457267">60 кдр/сек</translation>
 <translation id="8049189770492311300">Таймер</translation>
 <translation id="8145038249676204903">Превключване към режима за правене на снимки</translation>
 <translation id="8261506727792406068">Изтриване</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_bn.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_bn.xtb
index 967aa601..1bd518f 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_bn.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_bn.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">৪ x ৪</translation>
 <translation id="7649070708921625228">সহায়তা</translation>
 <translation id="7658239707568436148">বাতিল</translation>
+<translation id="7670511624014457267">৬০ FPS</translation>
 <translation id="8049189770492311300">টাইমার</translation>
 <translation id="8145038249676204903">ফটো মোডে পাল্টান</translation>
 <translation id="8261506727792406068">মুছুন</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ca.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ca.xtb
index ae7d26e..c257631 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ca.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ca.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 per 4</translation>
 <translation id="7649070708921625228">Ajuda</translation>
 <translation id="7658239707568436148">Cancel·la</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Temporitzador</translation>
 <translation id="8145038249676204903">Canvia al mode per fer fotos</translation>
 <translation id="8261506727792406068">Suprimeix</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_cs.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_cs.xtb
index 4eb5565..a5c5ddb 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_cs.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_cs.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 krát 4</translation>
 <translation id="7649070708921625228">Nápověda</translation>
 <translation id="7658239707568436148">Zrušit</translation>
+<translation id="7670511624014457267">60 snímků/s</translation>
 <translation id="8049189770492311300">Časovač</translation>
 <translation id="8145038249676204903">Přepnout na focení</translation>
 <translation id="8261506727792406068">Smazat</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_da.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_da.xtb
index f49e1ad..11261b1 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_da.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_da.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 gange 4</translation>
 <translation id="7649070708921625228">Hjælp</translation>
 <translation id="7658239707568436148">Annuller</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Timer</translation>
 <translation id="8145038249676204903">Skift for at tage et billede</translation>
 <translation id="8261506727792406068">Slet</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_de.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_de.xtb
index 65626eb..6bc93bb6 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_de.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_de.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 mal 4</translation>
 <translation id="7649070708921625228">Hilfe</translation>
 <translation id="7658239707568436148">Abbrechen</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Timer</translation>
 <translation id="8145038249676204903">Zu Fotomodus wechseln</translation>
 <translation id="8261506727792406068">Löschen</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_el.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_el.xtb
index cd8af70..27764aaa 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_el.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_el.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 επί 4</translation>
 <translation id="7649070708921625228">Βοήθεια</translation>
 <translation id="7658239707568436148">Ακύρωση</translation>
+<translation id="7670511624014457267">60 καρέ ανά δευτερόλεπτο</translation>
 <translation id="8049189770492311300">Χρονόμετρο</translation>
 <translation id="8145038249676204903">Μετάβαση στη λειτουργία λήψης φωτογραφίας</translation>
 <translation id="8261506727792406068">Διαγραφή</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_en-GB.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_en-GB.xtb
index 142c46b..5fb0663 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_en-GB.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_en-GB.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 by 4</translation>
 <translation id="7649070708921625228">Help</translation>
 <translation id="7658239707568436148">Cancel</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Timer</translation>
 <translation id="8145038249676204903">Switch to take photo</translation>
 <translation id="8261506727792406068">Delete</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_es-419.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_es-419.xtb
index fd9f220..ffa2baf 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_es-419.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_es-419.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 por 4</translation>
 <translation id="7649070708921625228">Ayuda</translation>
 <translation id="7658239707568436148">Cancelar</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Temporizador</translation>
 <translation id="8145038249676204903">Cambiar al modo para tomar fotos</translation>
 <translation id="8261506727792406068">Borrar</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_es.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_es.xtb
index 3c712a4..e5235553 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_es.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_es.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">Cuatro por cuatro</translation>
 <translation id="7649070708921625228">Ayuda</translation>
 <translation id="7658239707568436148">Cancelar</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Temporizador</translation>
 <translation id="8145038249676204903">Cambiar al modo de cámara de fotos</translation>
 <translation id="8261506727792406068">Eliminar</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_et.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_et.xtb
index a19988d..8c9c4f8f 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_et.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_et.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 korda 4</translation>
 <translation id="7649070708921625228">Abi</translation>
 <translation id="7658239707568436148">Tühista</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Taimer</translation>
 <translation id="8145038249676204903">Vaheta foto jäädvustamise režiimile</translation>
 <translation id="8261506727792406068">Kustuta</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fa.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fa.xtb
index 904e177..da370ae 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fa.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fa.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">۴ در ۴</translation>
 <translation id="7649070708921625228">راهنما</translation>
 <translation id="7658239707568436148">لغو</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">تایمر</translation>
 <translation id="8145038249676204903">رفتن به حالت عکس‌برداری</translation>
 <translation id="8261506727792406068">حذف</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fi.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fi.xtb
index 754452b..852fce0 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fi.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fi.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4x4</translation>
 <translation id="7649070708921625228">Ohje</translation>
 <translation id="7658239707568436148">Peruuta</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Ajastin</translation>
 <translation id="8145038249676204903">Vaihda kuvan ottamiseen</translation>
 <translation id="8261506727792406068">Poista</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fil.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fil.xtb
index cfc877d..faf616d 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fil.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fil.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 by 4</translation>
 <translation id="7649070708921625228">Tulong</translation>
 <translation id="7658239707568436148">Kanselahin</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Timer</translation>
 <translation id="8145038249676204903">Lumipat sa pagkuha ng larawan</translation>
 <translation id="8261506727792406068">I-delete</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fr.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fr.xtb
index dfc9123c..1d447b1 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fr.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_fr.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 par 4</translation>
 <translation id="7649070708921625228">Aide</translation>
 <translation id="7658239707568436148">Annuler</translation>
+<translation id="7670511624014457267">60 IPS</translation>
 <translation id="8049189770492311300">Horloge</translation>
 <translation id="8145038249676204903">Passer à la prise de photo</translation>
 <translation id="8261506727792406068">Supprimer</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_gu.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_gu.xtb
index 6310f37..f896c30 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_gu.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_gu.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 બાય 4</translation>
 <translation id="7649070708921625228">સહાય</translation>
 <translation id="7658239707568436148">રદ કરો</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">ટાઇમર</translation>
 <translation id="8145038249676204903">ફોટો લેવા માટે સ્વિચ કરો</translation>
 <translation id="8261506727792406068">ડિલીટ કરો</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hi.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hi.xtb
index 91b2229f..ce2fa0c 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hi.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hi.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 गुणा 4</translation>
 <translation id="7649070708921625228">सहायता</translation>
 <translation id="7658239707568436148">अभी नहीं</translation>
+<translation id="7670511624014457267">60 FPS (फ़्रेम प्रति सेकंड)</translation>
 <translation id="8049189770492311300">टाइमर</translation>
 <translation id="8145038249676204903">फ़ोटो खींचने वाले मोड पर जाएं</translation>
 <translation id="8261506727792406068">मिटाएं</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hr.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hr.xtb
index 79bd294..ee360b4 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hr.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hr.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 puta 4</translation>
 <translation id="7649070708921625228">Pomoć</translation>
 <translation id="7658239707568436148">Odustani</translation>
+<translation id="7670511624014457267">60 okv/s</translation>
 <translation id="8049189770492311300">Brojač vremena</translation>
 <translation id="8145038249676204903">Prijeđi na snimanje fotografije</translation>
 <translation id="8261506727792406068">Izbriši</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hu.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hu.xtb
index d0ed095..f321e87 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hu.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_hu.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">Négyszer négyes</translation>
 <translation id="7649070708921625228">Súgó</translation>
 <translation id="7658239707568436148">Mégse</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Időzítő</translation>
 <translation id="8145038249676204903">Váltás fotókészítésre</translation>
 <translation id="8261506727792406068">Törlés</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_id.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_id.xtb
index a26c41ef..1a93f32 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_id.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_id.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 kali 4</translation>
 <translation id="7649070708921625228">Bantuan</translation>
 <translation id="7658239707568436148">Batal</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Timer</translation>
 <translation id="8145038249676204903">Beralih ke mode mengambil foto</translation>
 <translation id="8261506727792406068">Hapus</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_it.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_it.xtb
index 79b16fc..7982b24 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_it.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_it.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 x 4</translation>
 <translation id="7649070708921625228">Guida</translation>
 <translation id="7658239707568436148">Annulla</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Timer</translation>
 <translation id="8145038249676204903">Passa alla modalità foto</translation>
 <translation id="8261506727792406068">Elimina</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_iw.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_iw.xtb
index 3d90a70..cee367ff 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_iw.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_iw.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 על 4</translation>
 <translation id="7649070708921625228">עזרה</translation>
 <translation id="7658239707568436148">ביטול</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">טיימר</translation>
 <translation id="8145038249676204903">מעבר לצילום תמונות</translation>
 <translation id="8261506727792406068">מחיקה</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ja.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ja.xtb
index 92347f1..ea27f829 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ja.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ja.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4x4</translation>
 <translation id="7649070708921625228">ヘルプ</translation>
 <translation id="7658239707568436148">キャンセル</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">タイマー</translation>
 <translation id="8145038249676204903">写真の撮影に切り替え</translation>
 <translation id="8261506727792406068">削除</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_kn.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_kn.xtb
index f8bcbbb..9935f1c 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_kn.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_kn.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 x 4</translation>
 <translation id="7649070708921625228">ಸಹಾಯ</translation>
 <translation id="7658239707568436148">ರದ್ದುಮಾಡಿ</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">ಟೈಮರ್</translation>
 <translation id="8145038249676204903">ಫೋಟೋ ತೆಗೆದುಕೊಳ್ಳಿ ಮೋಡ್‌ಗೆ ಬದಲಿಸಿ</translation>
 <translation id="8261506727792406068">ಅಳಿಸಿ</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ko.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ko.xtb
index 12e33ba..41a7016 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ko.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ko.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4x4</translation>
 <translation id="7649070708921625228">도움말</translation>
 <translation id="7658239707568436148">취소</translation>
+<translation id="7670511624014457267">60FPS</translation>
 <translation id="8049189770492311300">타이머</translation>
 <translation id="8145038249676204903">사진 촬영 모드로 전환</translation>
 <translation id="8261506727792406068">삭제</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_lt.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_lt.xtb
index cf86894f..40d3de7 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_lt.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_lt.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 iš 4</translation>
 <translation id="7649070708921625228">Žinynas</translation>
 <translation id="7658239707568436148">Atšaukti</translation>
+<translation id="7670511624014457267">60 KPS</translation>
 <translation id="8049189770492311300">Laikmatis</translation>
 <translation id="8145038249676204903">Perjungti į fotografavimo režimą</translation>
 <translation id="8261506727792406068">Ištrinti</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_lv.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_lv.xtb
index 5491770c..4b750d4 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_lv.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_lv.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 pa 4</translation>
 <translation id="7649070708921625228">Palīdzība</translation>
 <translation id="7658239707568436148">Atcelt</translation>
+<translation id="7670511624014457267">60 kadri/s</translation>
 <translation id="8049189770492311300">Taimeris</translation>
 <translation id="8145038249676204903">Pārslēgt, lai uzņemtu fotoattēlu</translation>
 <translation id="8261506727792406068">Dzēst</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ml.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ml.xtb
index 1b6c44b..75a76fd 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ml.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ml.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 ബൈ 4</translation>
 <translation id="7649070708921625228">സഹായം</translation>
 <translation id="7658239707568436148">റദ്ദാക്കൂ</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">ടൈമർ</translation>
 <translation id="8145038249676204903">ഫോട്ടോ എടുക്കുന്നതിലേക്ക് മാറുക</translation>
 <translation id="8261506727792406068">ഇല്ലാതാക്കുക</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_mr.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_mr.xtb
index 8d4fac9..5e16299e 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_mr.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_mr.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">४ बाय ४</translation>
 <translation id="7649070708921625228">मदत</translation>
 <translation id="7658239707568436148">रद्द करा</translation>
+<translation id="7670511624014457267">६० FPS</translation>
 <translation id="8049189770492311300">टायमर</translation>
 <translation id="8145038249676204903">फोटो घेण्यासाठी स्विच करा</translation>
 <translation id="8261506727792406068">हटवा</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ms.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ms.xtb
index ca50a4e..4e691a0 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ms.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ms.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 kali 4</translation>
 <translation id="7649070708921625228">Bantuan</translation>
 <translation id="7658239707568436148">Batal</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Pemasa</translation>
 <translation id="8145038249676204903">Beralih kepada mengambil foto</translation>
 <translation id="8261506727792406068">Padam</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_nl.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_nl.xtb
index fdc54b6..d84885ac 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_nl.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_nl.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 bij 4</translation>
 <translation id="7649070708921625228">Hulp</translation>
 <translation id="7658239707568436148">Annuleren</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Timer</translation>
 <translation id="8145038249676204903">Naar foto maken</translation>
 <translation id="8261506727792406068">Verwijderen</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_no.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_no.xtb
index 1902aa98..987691e 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_no.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_no.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 ganger 4</translation>
 <translation id="7649070708921625228">Hjelp</translation>
 <translation id="7658239707568436148">Avbryt</translation>
+<translation id="7670511624014457267">60 bilder per sekund</translation>
 <translation id="8049189770492311300">Nedtelling</translation>
 <translation id="8145038249676204903">Bytt til foto</translation>
 <translation id="8261506727792406068">Slett</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pl.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pl.xtb
index 3a58b690..d87058a1 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pl.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pl.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 na 4</translation>
 <translation id="7649070708921625228">Pomoc</translation>
 <translation id="7658239707568436148">Anuluj</translation>
+<translation id="7670511624014457267">60 klatek na sekundę</translation>
 <translation id="8049189770492311300">Licznik czasu</translation>
 <translation id="8145038249676204903">Przełącz, by zrobić zdjęcie</translation>
 <translation id="8261506727792406068">Usuń</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pt-BR.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pt-BR.xtb
index 98360b9..081c599 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pt-BR.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pt-BR.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 por 4</translation>
 <translation id="7649070708921625228">Ajuda</translation>
 <translation id="7658239707568436148">Cancelar</translation>
+<translation id="7670511624014457267">60 QPS</translation>
 <translation id="8049189770492311300">Timer</translation>
 <translation id="8145038249676204903">Alternar para tirar foto</translation>
 <translation id="8261506727792406068">Excluir</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pt-PT.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pt-PT.xtb
index 2b2d39d..6f204c5 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pt-PT.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_pt-PT.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 por 4</translation>
 <translation id="7649070708921625228">Ajuda</translation>
 <translation id="7658239707568436148">Cancelar</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Temporizador</translation>
 <translation id="8145038249676204903">Mudar para tirar foto</translation>
 <translation id="8261506727792406068">Eliminar</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ro.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ro.xtb
index 8db0735..e584ce8 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ro.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ro.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 pe 4</translation>
 <translation id="7649070708921625228">Ajutor</translation>
 <translation id="7658239707568436148">Anulează</translation>
+<translation id="7670511624014457267">60 CPS</translation>
 <translation id="8049189770492311300">Temporizator</translation>
 <translation id="8145038249676204903">Comută pentru a fotografia</translation>
 <translation id="8261506727792406068">Șterge</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ru.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ru.xtb
index 9fd3006..cf9fe97 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ru.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ru.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 на 4</translation>
 <translation id="7649070708921625228">Справка</translation>
 <translation id="7658239707568436148">Отмена</translation>
+<translation id="7670511624014457267">60 кадров/с</translation>
 <translation id="8049189770492311300">Таймер</translation>
 <translation id="8145038249676204903">Переключиться на фотосъемку</translation>
 <translation id="8261506727792406068">Удалить</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sk.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sk.xtb
index 1b48e7f6..b50b8b9 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sk.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sk.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 na 4</translation>
 <translation id="7649070708921625228">Pomocník</translation>
 <translation id="7658239707568436148">Zrušiť</translation>
+<translation id="7670511624014457267">60 sním./s</translation>
 <translation id="8049189770492311300">Časovač</translation>
 <translation id="8145038249676204903">Prepnúť na fotenie</translation>
 <translation id="8261506727792406068">Odstrániť</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sl.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sl.xtb
index 36ae5fe..507dfdc 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sl.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sl.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 x 4</translation>
 <translation id="7649070708921625228">Pomoč</translation>
 <translation id="7658239707568436148">Prekliči</translation>
+<translation id="7670511624014457267">60 sličic/s</translation>
 <translation id="8049189770492311300">Časovnik</translation>
 <translation id="8145038249676204903">Preklop na fotografiranje</translation>
 <translation id="8261506727792406068">Izbriši</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sr.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sr.xtb
index 92c1ccc..71f2145 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sr.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sr.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 са 4</translation>
 <translation id="7649070708921625228">Помоћ</translation>
 <translation id="7658239707568436148">Откажи</translation>
+<translation id="7670511624014457267">60 кадр/с</translation>
 <translation id="8049189770492311300">Тајмер</translation>
 <translation id="8145038249676204903">Пређи на режим за снимање слика</translation>
 <translation id="8261506727792406068">Избриши</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sv.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sv.xtb
index 1336426..60dfc49 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sv.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sv.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">Fyra gånger fyra</translation>
 <translation id="7649070708921625228">Hjälp</translation>
 <translation id="7658239707568436148">Avbryt</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Timer</translation>
 <translation id="8145038249676204903">Byt till fotoläge</translation>
 <translation id="8261506727792406068">Radera</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sw.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sw.xtb
index 84438a84..b224eda7 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sw.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_sw.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 kwa 4</translation>
 <translation id="7649070708921625228">Usaidizi</translation>
 <translation id="7658239707568436148">Ghairi</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Kipima muda</translation>
 <translation id="8145038249676204903">Piga picha</translation>
 <translation id="8261506727792406068">Futa</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ta.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ta.xtb
index 6d057773..902616f 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ta.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_ta.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 x 4</translation>
 <translation id="7649070708921625228">உதவி</translation>
 <translation id="7658239707568436148">ரத்து செய்</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">டைமர்</translation>
 <translation id="8145038249676204903">படமெடுக்கும் பயன்முறைக்கு மாறு</translation>
 <translation id="8261506727792406068">நீக்கு</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_te.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_te.xtb
index 37aab9d..2f3f896 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_te.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_te.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 బై 4</translation>
 <translation id="7649070708921625228">సహాయం</translation>
 <translation id="7658239707568436148">రద్దు చేయి</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">టైమర్</translation>
 <translation id="8145038249676204903">ఫోటోను తీయడానికి మార్చు</translation>
 <translation id="8261506727792406068">తొలగించు</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_th.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_th.xtb
index 8cf22e9f..d2a5140e 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_th.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_th.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 x 4</translation>
 <translation id="7649070708921625228">ช่วยเหลือ</translation>
 <translation id="7658239707568436148">ยกเลิก</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">ตัวจับเวลา</translation>
 <translation id="8145038249676204903">เปลี่ยนเป็นโหมดถ่ายภาพ</translation>
 <translation id="8261506727792406068">ลบ</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_tr.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_tr.xtb
index 9ad3776..a643981 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_tr.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_tr.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4'e 4</translation>
 <translation id="7649070708921625228">Yardım</translation>
 <translation id="7658239707568436148">İptal</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">Zamanlayıcı</translation>
 <translation id="8145038249676204903">Fotoğraf çekme moduna geç</translation>
 <translation id="8261506727792406068">Sil</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_uk.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_uk.xtb
index 67281cf..022298d7 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_uk.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_uk.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 на 4</translation>
 <translation id="7649070708921625228">Довідка</translation>
 <translation id="7658239707568436148">Скасувати</translation>
+<translation id="7670511624014457267">60 кадрів/с</translation>
 <translation id="8049189770492311300">Таймер</translation>
 <translation id="8145038249676204903">Перейти в режим фотозйомки</translation>
 <translation id="8261506727792406068">Видалити</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_vi.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_vi.xtb
index db0d34e..1c91caf2 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_vi.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_vi.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 x 4</translation>
 <translation id="7649070708921625228">Trợ giúp</translation>
 <translation id="7658239707568436148">Hủy</translation>
+<translation id="7670511624014457267">60 khung hình/giây</translation>
 <translation id="8049189770492311300">Bộ tính giờ</translation>
 <translation id="8145038249676204903">Chuyển sang chụp ảnh</translation>
 <translation id="8261506727792406068">Xóa</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_zh-CN.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_zh-CN.xtb
index d041da6..58cf6b1 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_zh-CN.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_zh-CN.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 x 4</translation>
 <translation id="7649070708921625228">帮助</translation>
 <translation id="7658239707568436148">取消</translation>
+<translation id="7670511624014457267">60 FPS</translation>
 <translation id="8049189770492311300">定时器</translation>
 <translation id="8145038249676204903">切换到拍照模式</translation>
 <translation id="8261506727792406068">删除</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_zh-TW.xtb b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_zh-TW.xtb
index 93f95754..50e24dbe 100644
--- a/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_zh-TW.xtb
+++ b/chrome/browser/resources/chromeos/camera/src/strings/camera_strings_zh-TW.xtb
@@ -60,6 +60,7 @@
 <translation id="7608223098072244877">4 乘 4</translation>
 <translation id="7649070708921625228">說明</translation>
 <translation id="7658239707568436148">取消</translation>
+<translation id="7670511624014457267">每秒畫格數:60</translation>
 <translation id="8049189770492311300">計時器</translation>
 <translation id="8145038249676204903">切換為拍照模式</translation>
 <translation id="8261506727792406068">刪除</translation>
diff --git a/chrome/browser/resources/chromeos/camera/src/views/main.html b/chrome/browser/resources/chromeos/camera/src/views/main.html
index 3e2f55f..8027d02 100644
--- a/chrome/browser/resources/chromeos/camera/src/views/main.html
+++ b/chrome/browser/resources/chromeos/camera/src/views/main.html
@@ -9,6 +9,7 @@
     <title>&#xfeff;</title>
     <meta charset="utf-8">
     <link rel="stylesheet" href="../css/main.css">
+    <script src="../js/browser_proxy/browser_proxy.js"></script>
     <script src="../js/google-analytics-bundle.js"></script>
     <script src="../js/metrics.js"></script>
     <script src="../js/util.js"></script>
diff --git a/chrome/browser/resources/chromeos/chromevox/BUILD.gn b/chrome/browser/resources/chromeos/chromevox/BUILD.gn
index ccc37a1..32d9da3e 100644
--- a/chrome/browser/resources/chromeos/chromevox/BUILD.gn
+++ b/chrome/browser/resources/chromeos/chromevox/BUILD.gn
@@ -341,7 +341,7 @@
   ]
 }
 
-# TODO: refactor this into another file like generate_manifest.gni
+# TODO(crbug/978200): refactor this into another file like generate_manifest.gni
 # to share with other extensions.
 template("manifest") {
   version_file = "//chrome/VERSION"
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb
index 5c8fc5c..52bcc9e 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_am.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">ብቅ-ባይ አዝራር</translation>
 <translation id="3241052487511142956">ቀዳሚ የተጎበኘ አገናኝ</translation>
 <translation id="3241638166094654466">በእያንዳንዱ መስመር ላይ ያሉ ሕዋሶች፦</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">የምስል ፍሬ</translation>
 <translation id="3286390186030710347">ተንሸራታች</translation>
 <translation id="3299925995433437805">ምንም ቀጣይ የተጎበኘ አገናኝ የለም።</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb
index 51a5d720..78a05a04 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ar.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">زر بقائمة منبثقة</translation>
 <translation id="3241052487511142956">الرابط السابق الذي تمّ الانتقال إليه</translation>
 <translation id="3241638166094654466">الخلايا في كل سطر:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">صورة أشخاص</translation>
 <translation id="3286390186030710347">شريط تمرير</translation>
 <translation id="3299925995433437805">ليس هناك رابط تالٍ تم الانتقال إليه.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb
index 6655193..0addc08 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bg.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Бутон с изскачащ прозорец</translation>
 <translation id="3241052487511142956">Предишна посетена връзка</translation>
 <translation id="3241638166094654466">Клетки във всеки ред:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">вертикална ориентация</translation>
 <translation id="3286390186030710347">Плъзгач</translation>
 <translation id="3299925995433437805">Няма следваща посетена връзка.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
index 377fcbf8..a5c4381 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_bn.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">একটি পপ আপ বোতাম</translation>
 <translation id="3241052487511142956">আগে ঘুরে দেখা লিঙ্ক</translation>
 <translation id="3241638166094654466">প্রতিটি লাইনে কক্ষের সংখ্যা:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">পোর্ট্রেট</translation>
 <translation id="3286390186030710347">স্লাইডার</translation>
 <translation id="3299925995433437805">কোনও পরবর্তী ঘুরে দেখা লিঙ্ক নেই</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
index 008e36d..94b28b1 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ca.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Un botó emergent</translation>
 <translation id="3241052487511142956">Enllaç visitat anterior</translation>
 <translation id="3241638166094654466">Cel·les en cada línia:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">vertical</translation>
 <translation id="3286390186030710347">Control lliscant</translation>
 <translation id="3299925995433437805">No hi ha cap enllaç visitat següent.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb
index 4f8224b9..e72ed4f 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_cs.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Tlačítko s vyskakovacím oknem</translation>
 <translation id="3241052487511142956">Předchozí navštívený odkaz</translation>
 <translation id="3241638166094654466">Buňky na každém řádku:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">na výšku</translation>
 <translation id="3286390186030710347">Posuvník</translation>
 <translation id="3299925995433437805">Žádný další navštívený odkaz není.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb
index a3864ae7..fe580db 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_da.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">En pop op-knap</translation>
 <translation id="3241052487511142956">Tidligere besøgt link</translation>
 <translation id="3241638166094654466">Celler i hver linje:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">stående</translation>
 <translation id="3286390186030710347">Skyder</translation>
 <translation id="3299925995433437805">Intet næste besøgte link.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
index 81ec00e9..04ad05d 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_de.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Eine Pop-up-Schaltfläche</translation>
 <translation id="3241052487511142956">Vorheriger besuchter Link</translation>
 <translation id="3241638166094654466">Zellen in jeder Zeile:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">Hochformat</translation>
 <translation id="3286390186030710347">Schieberegler</translation>
 <translation id="3299925995433437805">Kein nächster besuchter Link</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb
index 82ef8f9..f87b2d3 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_el.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Ένα αναδυόμενο κουμπί</translation>
 <translation id="3241052487511142956">Προηγούμενος σύνδεσμος που έχετε επισκεφτεί</translation>
 <translation id="3241638166094654466">Κελιά σε κάθε γραμμή:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">κατακόρυφος προσανατολισμός</translation>
 <translation id="3286390186030710347">Ρυθμιστικό</translation>
 <translation id="3299925995433437805">Δεν υπάρχει επόμενος σύνδεσμος που έχετε επισκεφτεί.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_en-GB.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_en-GB.xtb
index 9c6bd41..6c0ba94 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_en-GB.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_en-GB.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">A pop-up button</translation>
 <translation id="3241052487511142956">Previous visited link</translation>
 <translation id="3241638166094654466">Cells in each line:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">portrait</translation>
 <translation id="3286390186030710347">Slider</translation>
 <translation id="3299925995433437805">No next visited link.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb
index 35c80c34..93f308a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es-419.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Un botón con ventana emergente</translation>
 <translation id="3241052487511142956">Vínculo visitado anterior</translation>
 <translation id="3241638166094654466">Celdas en cada línea:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">vertical</translation>
 <translation id="3286390186030710347">Control deslizante</translation>
 <translation id="3299925995433437805">No hay ningún vínculo visitado posterior.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
index 21b910a..d012829 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_es.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Un botón emergente</translation>
 <translation id="3241052487511142956">Anterior enlace visitado</translation>
 <translation id="3241638166094654466">Celdas en cada línea:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">vertical</translation>
 <translation id="3286390186030710347">Control deslizante</translation>
 <translation id="3299925995433437805">No hay ningún enlace siguiente visitado.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb
index 308f766..1d9ee6ff 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_et.xtb
@@ -69,7 +69,7 @@
 <translation id="1383876407941801731">Otsi</translation>
 <translation id="1385214448885562192">Nõustumiseks vajutage sisestusklahvi Enter, tühistamiseks paoklahvi Escape, järgmise juurde liikumiseks vajutage alla ja eelmise juurde liikumiseks üles.</translation>
 <translation id="1396114365388024581">tablst</translation>
-<translation id="139902759009894363">Rikasteksti atribuutide määramine</translation>
+<translation id="139902759009894363">Loe rikasteksti atribuudid ette</translation>
 <translation id="1405567553485452995">Heleroheline</translation>
 <translation id="1417889266572670458">Meresinine</translation>
 <translation id="1431911867058218151">Ploomililla</translation>
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Hüpiknupp</translation>
 <translation id="3241052487511142956">Eelmine külastatud link</translation>
 <translation id="3241638166094654466">Igal real olevad lahtrid:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">vertikaalpaigutus</translation>
 <translation id="3286390186030710347">Liugur</translation>
 <translation id="3299925995433437805">Järgmist külastatud linki pole.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb
index 7371bd5..fb744b9 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fa.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">دکمه بازشو</translation>
 <translation id="3241052487511142956">پیوند بازدید شده قبلی</translation>
 <translation id="3241638166094654466">تعداد سلول‌ها در هر خط:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">چهره</translation>
 <translation id="3286390186030710347">اسلایدر</translation>
 <translation id="3299925995433437805">پیوند بازدید شده بعدی وجود ندارد.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb
index 519f369..c21e6aa6 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fi.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Ponnahduspainike</translation>
 <translation id="3241052487511142956">Edellinen käyty linkki</translation>
 <translation id="3241638166094654466">Kunkin rivin solut:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">pystysuunta</translation>
 <translation id="3286390186030710347">Liukusäädin</translation>
 <translation id="3299925995433437805">Ei seuraavia käytyjä linkkejä.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb
index 6d8f002..56a6ed33 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fil.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Isang pop up na button</translation>
 <translation id="3241052487511142956">Nakaraang binisitang link</translation>
 <translation id="3241638166094654466">Mga cell sa bawat linya:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">portrait</translation>
 <translation id="3286390186030710347">Slider</translation>
 <translation id="3299925995433437805">Walang sunod na binisitang link.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb
index 4cb6c1d..5937dfe 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_fr.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Un bouton de fenêtre pop-up</translation>
 <translation id="3241052487511142956">Lien consulté précédent</translation>
 <translation id="3241638166094654466">Cellules sur chaque ligne :</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" /> : <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">portrait</translation>
 <translation id="3286390186030710347">Curseur</translation>
 <translation id="3299925995433437805">Aucun lien consulté suivant.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb
index 7b4de96..6cf02c2 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_gu.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">પૉપ અપ બટન</translation>
 <translation id="3241052487511142956">પાછલી મુલાકાત લીધેલી લિંક</translation>
 <translation id="3241638166094654466">દરેક લાઇનમાંનાં કોષોની સંખ્યા:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">પોર્ટ્રેટ</translation>
 <translation id="3286390186030710347">સ્લાઇડર</translation>
 <translation id="3299925995433437805">કોઈ આગલી મુલાકાત લીધેલી લિંક નથી.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
index d6c8036..0fdd92f5 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">पॉप-अप बटन</translation>
 <translation id="3241052487511142956">पहले देखा गया लिंक</translation>
 <translation id="3241638166094654466">हर एक पंक्ति में सेल:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">पोर्ट्रेट</translation>
 <translation id="3286390186030710347">स्लाइडर</translation>
 <translation id="3299925995433437805">बाद में देखा गया कोई लिंक नहीं.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb
index 1aca100f..20e395fe 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hr.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Gumb skočnog prozora</translation>
 <translation id="3241052487511142956">Prethodna posjećena veza</translation>
 <translation id="3241638166094654466">Ćelije u svakom retku:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">portret</translation>
 <translation id="3286390186030710347">Klizač</translation>
 <translation id="3299925995433437805">Nema sljedeće posjećene veze.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb
index 2b03a43..8619b14 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hu.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Előugró gomb</translation>
 <translation id="3241052487511142956">Előző felkeresett link</translation>
 <translation id="3241638166094654466">Az egyes sorokban található cellák száma:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">álló</translation>
 <translation id="3286390186030710347">Csúszka</translation>
 <translation id="3299925995433437805">Nincs következő felkeresett link.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
index 12d3775..fd7cbc7 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_id.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Tombol pop-up</translation>
 <translation id="3241052487511142956">Tautan yang dikunjungi sebelumnya</translation>
 <translation id="3241638166094654466">Sel di tiap baris:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">potret</translation>
 <translation id="3286390186030710347">Penggeser</translation>
 <translation id="3299925995433437805">Tidak ada link yang dikunjungi selanjutnya.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb
index 02c99a0..1f9cbc8 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_it.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Un pulsante popup</translation>
 <translation id="3241052487511142956">Link visitato precedente</translation>
 <translation id="3241638166094654466">Celle in ogni riga:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">verticale</translation>
 <translation id="3286390186030710347">Dispositivo di scorrimento</translation>
 <translation id="3299925995433437805">Nessun link visitato successivo.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb
index 85f02bf..27f91561 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_iw.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">לחצן קופץ</translation>
 <translation id="3241052487511142956">הקישור הקודם שבו ביקרת</translation>
 <translation id="3241638166094654466">תאים בכל שורה:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">לאורך</translation>
 <translation id="3286390186030710347">מחוון</translation>
 <translation id="3299925995433437805">אין עוד קישורים שבהם ביקרת.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb
index f3c494f..c1e88c14 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ja.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">ポップアップ ボタン</translation>
 <translation id="3241052487511142956">前にアクセスしたリンク</translation>
 <translation id="3241638166094654466">各行のセル数:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">縦向き</translation>
 <translation id="3286390186030710347">スライダ</translation>
 <translation id="3299925995433437805">次にアクセスしたリンクはありません。</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
index 018ef7a..5aa4660 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">ಪಾಪ್-ಅಪ್ ಬಟನ್</translation>
 <translation id="3241052487511142956">ಹಿಂದಿನ ಭೇಟಿ ನೀಡಿದ ಲಿಂಕ್</translation>
 <translation id="3241638166094654466">ಪ್ರತಿಯೊಂದು ಸಾಲಿನಲ್ಲಿರುವ ಸೆಲ್‌ಗಳು:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">ಪೋರ್ಟ್ರೇಟ್</translation>
 <translation id="3286390186030710347">ಸ್ಲೈಡರ್</translation>
 <translation id="3299925995433437805">ಮುಂದೆ ಯಾವುದೇ ಭೇಟಿ ನೀಡಿದ ಲಿಂಕ್ ಇಲ್ಲ.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
index 5ab9508..61de6ac 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ko.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">팝업 버튼</translation>
 <translation id="3241052487511142956">이전 방문한 링크</translation>
 <translation id="3241638166094654466">각 행의 셀 수:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">세로 모드</translation>
 <translation id="3286390186030710347">슬라이더</translation>
 <translation id="3299925995433437805">다음 방문한 링크가 없습니다.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb
index 809017c..f14f380 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lt.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Iššokantysis mygtukas</translation>
 <translation id="3241052487511142956">Ankstesnė aplankyta nuoroda</translation>
 <translation id="3241638166094654466">Langelių kiekvienoje eilutėje:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">stačia</translation>
 <translation id="3286390186030710347">Šliaužiklis</translation>
 <translation id="3299925995433437805">Nėra kitos aplankytos nuorodos.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb
index 4530fa4a..f3d18ef 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_lv.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Uznirstoša poga</translation>
 <translation id="3241052487511142956">Iepriekšējā apmeklētā saite</translation>
 <translation id="3241638166094654466">Šūnas katrā rindā:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">portrets</translation>
 <translation id="3286390186030710347">Slīdnis</translation>
 <translation id="3299925995433437805">Tālāk nav nevienas apmeklētās saites.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb
index 1d2957e..bc9d57a 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ml.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">ഒരു പോപ്പ് അപ്പ് ബട്ടൺ</translation>
 <translation id="3241052487511142956">സന്ദർശിച്ച മുമ്പത്തെ ലിങ്ക്</translation>
 <translation id="3241638166094654466">ഓരോ വരിയിലെയും കളങ്ങൾ:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">പോർട്രെയ്‌റ്റ്</translation>
 <translation id="3286390186030710347">സ്ലൈഡർ</translation>
 <translation id="3299925995433437805">സന്ദർശിച്ച അടുത്ത ലിങ്കൊന്നുമില്ല.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
index 8515e9f4..58b79eb 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">एक पॉप अप बटण</translation>
 <translation id="3241052487511142956">मागील भेट दिलेली लिंक</translation>
 <translation id="3241638166094654466">प्रत्येक रेषेतील सेल:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">पोट्रेट</translation>
 <translation id="3286390186030710347">स्‍लायडर</translation>
 <translation id="3299925995433437805">पुढील भेट दिलेली लिंक नाही.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb
index 4e1ef87..6c606b2 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ms.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Butang timbul</translation>
 <translation id="3241052487511142956">Pautan yang dilawati sebelumnya</translation>
 <translation id="3241638166094654466">Sel dalam setiap baris:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">potret</translation>
 <translation id="3286390186030710347">Peluncur</translation>
 <translation id="3299925995433437805">Tiada pautan yang dilawati seterusnya.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb
index cef576a..4ddb29e 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_nl.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Een pop-upknop</translation>
 <translation id="3241052487511142956">Vorige bezochte link</translation>
 <translation id="3241638166094654466">Cellen in elke regel:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">staand</translation>
 <translation id="3286390186030710347">Schuifregelaar</translation>
 <translation id="3299925995433437805">Geen volgende bezochte link.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb
index 5dea6c8..cc8c486f 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_no.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">En forgrunnsknapp</translation>
 <translation id="3241052487511142956">Tidligere besøkt link</translation>
 <translation id="3241638166094654466">Celler i hver linje:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">stående</translation>
 <translation id="3286390186030710347">Glidebryter</translation>
 <translation id="3299925995433437805">Ingen neste besøkte link.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb
index 9888cdb..e4f112f 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pl.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Przycisk wyskakującego okienka</translation>
 <translation id="3241052487511142956">Poprzedni kliknięty link</translation>
 <translation id="3241638166094654466">Komórki w każdym wierszu:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">orientacja pionowa</translation>
 <translation id="3286390186030710347">Suwak</translation>
 <translation id="3299925995433437805">Brak następnego klikniętego linku.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb
index c8db85b708..76fdff1 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-BR.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Um botão pop-up</translation>
 <translation id="3241052487511142956">Link anterior visitado</translation>
 <translation id="3241638166094654466">Células em cada linha:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">retrato</translation>
 <translation id="3286390186030710347">Slide</translation>
 <translation id="3299925995433437805">Não há próximo link visitado.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-PT.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-PT.xtb
index 5d2806b..a6f69b1 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-PT.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_pt-PT.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Um botão pop-up</translation>
 <translation id="3241052487511142956">Link visitado anterior</translation>
 <translation id="3241638166094654466">Células em cada linha:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">retrato</translation>
 <translation id="3286390186030710347">Controlo de deslize</translation>
 <translation id="3299925995433437805">Não existe nenhum link visitado seguinte.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
index 3593552..adb2ef5 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ro.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Un buton pop-up</translation>
 <translation id="3241052487511142956">Link accesat anterior</translation>
 <translation id="3241638166094654466">Celule pe fiecare rând:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">portret</translation>
 <translation id="3286390186030710347">Glisor</translation>
 <translation id="3299925995433437805">Nu există un link accesat următor.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
index 8d2398e..4f908bb 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Всплывающая кнопка</translation>
 <translation id="3241052487511142956">Перейти к предыдущей открытой ссылке</translation>
 <translation id="3241638166094654466">Ячеек в каждой строке:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">вертикальная ориентация</translation>
 <translation id="3286390186030710347">Ползунок</translation>
 <translation id="3299925995433437805">Следующей открытой ссылки нет.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb
index 29cffa49..9226e3cc 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sk.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Kontextové tlačidlo</translation>
 <translation id="3241052487511142956">Predchádzajúci navštívený odkaz</translation>
 <translation id="3241638166094654466">Bunky v každom riadku:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">na výšku</translation>
 <translation id="3286390186030710347">Posuvník</translation>
 <translation id="3299925995433437805">Žiadny ďalší navštívený odkaz</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb
index e2d003f2..6fd78f9 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sl.xtb
@@ -69,7 +69,7 @@
 <translation id="1383876407941801731">Išči</translation>
 <translation id="1385214448885562192">Pritisnite »enter« za sprejetje ali »escape« za preklic, dol za naprej in gor za nazaj.</translation>
 <translation id="1396114365388024581">sezzav</translation>
-<translation id="139902759009894363">Najava atributov obogatenega besedila</translation>
+<translation id="139902759009894363">Izgovorjava atributov obogatenega besedila</translation>
 <translation id="1405567553485452995">Svetlo zelena</translation>
 <translation id="1417889266572670458">Mornarsko modra</translation>
 <translation id="1431911867058218151">Slivova</translation>
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Pojavni gumb</translation>
 <translation id="3241052487511142956">Prejšnja obiskana povezava</translation>
 <translation id="3241638166094654466">Celice v posamezni vrstici:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">pokončno</translation>
 <translation id="3286390186030710347">Drsnik</translation>
 <translation id="3299925995433437805">Ni naslednje obiskane povezave</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb
index 55c1c0fa..056c377 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sr.xtb
@@ -69,7 +69,7 @@
 <translation id="1383876407941801731">Претражи</translation>
 <translation id="1385214448885562192">Притисните enter да бисте прихватили или escape да бисте отказали, стрелицу надоле за следеће и стрелицу нагоре за претходно.</translation>
 <translation id="1396114365388024581">листа картица</translation>
-<translation id="139902759009894363">Најави атрибуте обогаћеног текста</translation>
+<translation id="139902759009894363">Описуј атрибуте обогаћеног текста</translation>
 <translation id="1405567553485452995">Светлозелена</translation>
 <translation id="1417889266572670458">Морнарскоплава</translation>
 <translation id="1431911867058218151">Плавољубичаста</translation>
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Искачуће дугме</translation>
 <translation id="3241052487511142956">Претходни посећени линк</translation>
 <translation id="3241638166094654466">Ћелија у свакој линији:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">усправно</translation>
 <translation id="3286390186030710347">Клизач</translation>
 <translation id="3299925995433437805">Нема следећег посећеног линка.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb
index 17f5eb3..9ec335f 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sv.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">En popup-knapp</translation>
 <translation id="3241052487511142956">Föregående länk som har besökts</translation>
 <translation id="3241638166094654466">Celler i varje rad:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">stående</translation>
 <translation id="3286390186030710347">Skjutreglage</translation>
 <translation id="3299925995433437805">Det finns inga fler länkar som har besökts.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb
index da52319..d8a928f5 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_sw.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Kitufe ibukizi</translation>
 <translation id="3241052487511142956">Kiungo kilichotembelewa kilichotangulia</translation>
 <translation id="3241638166094654466">Visanduku katika kila mstari:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">wima</translation>
 <translation id="3286390186030710347">Kitelezi</translation>
 <translation id="3299925995433437805">Hakuna kiungo kilichotembelewa kinachofuata.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb
index 8cf99d3..bfeadeb 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ta.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">பாப் அப் பட்டன்</translation>
 <translation id="3241052487511142956">முந்தையதாக பார்வையிட்ட இணைப்பு</translation>
 <translation id="3241638166094654466">ஒவ்வொரு வரியிலும் உள்ள கலங்கள்:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">போர்ட்ரெயிட்</translation>
 <translation id="3286390186030710347">ஸ்லைடர்</translation>
 <translation id="3299925995433437805">அடுத்ததாக பார்வையிட்ட இணைப்பு இல்லை.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb
index f34dae0..c1967a0c 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_te.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">పాప్ అప్ బటన్</translation>
 <translation id="3241052487511142956">మునుపు సందర్శించిన లింక్</translation>
 <translation id="3241638166094654466">ప్రతి పంక్తిలో గడులు:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">పోర్ట్రెయిట్‌లో ఉంది</translation>
 <translation id="3286390186030710347">స్లయిడర్</translation>
 <translation id="3299925995433437805">తర్వాత సందర్శించిన లింక్ ఏదీ లేదు.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb
index ca46db6..5fb8cfd7 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_th.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">ปุ่มป๊อปอัป</translation>
 <translation id="3241052487511142956">ลิงก์ที่เคยเข้าชมก่อนหน้า</translation>
 <translation id="3241638166094654466">จำนวนเซลล์ในแต่ละบรรทัด:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">แนวตั้ง</translation>
 <translation id="3286390186030710347">แถบเลื่อน</translation>
 <translation id="3299925995433437805">ไม่มีลิงก์ที่เคยเข้าชมถัดไป</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
index 2cce5e5..43959138 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_tr.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Pop-up düğme</translation>
 <translation id="3241052487511142956">Ziyaret edilmiş olan önceki bağlantı</translation>
 <translation id="3241638166094654466">Her satırdaki hücre sayısı:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">dikey</translation>
 <translation id="3286390186030710347">Kaydırma çubuğu</translation>
 <translation id="3299925995433437805">Ziyaret edilmiş başka sonraki bağlantı yok.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb
index 728e7b1..1ddc892f 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_uk.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">Кнопка спливаючої підказки</translation>
 <translation id="3241052487511142956">Попереднє натиснуте посилання</translation>
 <translation id="3241638166094654466">Клітинок у кожному рядку:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">книжкова</translation>
 <translation id="3286390186030710347">Повзунок</translation>
 <translation id="3299925995433437805">Немає наступного натиснутого посилання.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb
index f25d21b6..a8a671e 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_vi.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">Nút bật lên</translation>
 <translation id="3241052487511142956">Liên kết đã truy cập trước đó</translation>
 <translation id="3241638166094654466">Số ô mỗi dòng:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />: <ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">dọc</translation>
 <translation id="3286390186030710347">Thanh trượt</translation>
 <translation id="3299925995433437805">Không có liên kết đã truy cập tiếp theo nào.</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb
index 811f16b9..ce64dad 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-CN.xtb
@@ -319,6 +319,7 @@
 <translation id="3232388865800379423">弹出式按钮</translation>
 <translation id="3241052487511142956">上一个访问过的链接</translation>
 <translation id="3241638166094654466">每行中的单元格数:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />:<ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">纵向</translation>
 <translation id="3286390186030710347">滑块</translation>
 <translation id="3299925995433437805">不存在下一个访问过的链接。</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb
index 811ecec..01688a0 100644
--- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb
+++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_zh-TW.xtb
@@ -320,6 +320,7 @@
 <translation id="3232388865800379423">彈出式按鈕</translation>
 <translation id="3241052487511142956">上一個造訪過的連結</translation>
 <translation id="3241638166094654466">各行儲存格數目:</translation>
+<translation id="3244209481693235975"><ph name="LANGUAGE" />:<ph name="CONTENT" /></translation>
 <translation id="3286372614333682499">縱向</translation>
 <translation id="3286390186030710347">滑桿</translation>
 <translation id="3299925995433437805">沒有下一個造訪過的連結。</translation>
diff --git a/chrome/browser/resources/chromeos/password_change/confirm_password_change.html b/chrome/browser/resources/chromeos/password_change/confirm_password_change.html
index b599ceb..8a7e0071 100644
--- a/chrome/browser/resources/chromeos/password_change/confirm_password_change.html
+++ b/chrome/browser/resources/chromeos/password_change/confirm_password_change.html
@@ -7,14 +7,14 @@
   <link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
   <link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
   <link rel="import" href="chrome://resources/cr_elements/cr_input/cr_input.html">
-  <link rel="import" href="chrome://resources/cr_elements/icons.html">
   <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
   <link rel="import" href="chrome://resources/html/load_time_data.html">
   <link rel="import" href="chrome://resources/html/i18n_behavior.html">
   <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
-  <link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
+  <link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html">
   <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css">
 
+
   <script src="confirm_password_change.js"></script>
   <script src="strings.js"></script>
 
@@ -41,20 +41,18 @@
           font-size: 20px;
         }
 
-        #password-match-error-container {
-          margin-top: -16px;
-        }
-
-        #error-icon {
-        --iron-icon-fill-color: var(--google-red-600);
-        }
-
-        #password-match-error {
-          color: var(--google-red-600);
-          display: inline-block;
+        paper-spinner-lite {
+          height: 44px;
+          left: 50%;
+          margin: -22px;
+          position: fixed;
+          top: 50%;
+          width: 44px;
         }
       </style>
 
+     <paper-spinner-lite active></paper-spinner-lite>
+
       <cr-dialog id="dialog" exportparts="dialog">
         <div slot="title">[[i18n('title')]]</div>
 
@@ -64,27 +62,24 @@
           <div>
             <cr-input type="password" value="{{old_password_}}"
                 label="[[i18n('oldPassword')]]"
-                invalid="[[invalidOldPassword_(currentValidationError_)]]">
+                invalid="[[invalidOldPassword_(currentValidationError_)]]"
+                error-message="[[errorString_]]">
             </cr-input>
           </div>
 
           <div>
             <cr-input type="password" value="{{new_password_}}"
                 label="[[i18n('newPassword')]]"
-                invalid="[[invalidNewPassword_(currentValidationError_)]]">
+                invalid="[[invalidNewPassword_(currentValidationError_)]]"
+                error-message="[[errorString_]]">
             </cr-input>
             <cr-input type="password" value="{{confirm_new_password_}}"
                 label="[[i18n('confirmNewPassword')]]"
                 invalid=
-                    "[[invalidConfirmNewPassword_(currentValidationError_)]]">
+                    "[[invalidConfirmNewPassword_(currentValidationError_)]]"
+                error-message="[[errorString_]]">
             </cr-input>
           </div>
-
-          <div id="password-match-error-container"
-              hidden="[[!passwordsDoNotMatch_(currentValidationError_)]]">
-            <iron-icon id="error-icon" icon="cr:warning"></iron-icon>
-            <div id="password-match-error">[[i18n('matchError')]]</div>
-          </div>
         </div>
 
         <div slot="button-container">
diff --git a/chrome/browser/resources/chromeos/password_change/confirm_password_change.js b/chrome/browser/resources/chromeos/password_change/confirm_password_change.js
index 9a8a904..9ab60355c 100644
--- a/chrome/browser/resources/chromeos/password_change/confirm_password_change.js
+++ b/chrome/browser/resources/chromeos/password_change/confirm_password_change.js
@@ -6,11 +6,14 @@
  * @fileoverview 'confirm-password-change' is a dialog so that the user can
  * either confirm their old password, or confirm their new password (twice),
  * or both, as part of an in-session password change.
+ * The dialog shows a spinner while it tries to change the password. This
+ * spinner is also shown immediately in the case we are trying to change the
+ * password using scraped data, and if this fails the spinner is hidden and
+ * the main confirm dialog is shown.
  */
 
-// TODO(https://crbug.com/930109): Logic is not done. Need to add logic to
-// show a spinner, to show only some of the password fields,
-// and to handle clicks on the save button.
+// TODO(https://crbug.com/930109): Add logic to show only some of the passwords
+// fields if some of the passwords were successfully scraped.
 
 /** @enum{number} */
 const ValidationErrorType = {
@@ -19,6 +22,12 @@
   MISSING_NEW_PASSWORD: 2,
   MISSING_CONFIRM_NEW_PASSWORD: 3,
   PASSWORDS_DO_NOT_MATCH: 4,
+  INCORRECT_OLD_PASSWORD: 5,
+};
+
+/** Default arguments that are used when not embedded in a dialog. */
+const DefaultArgs = {
+  showSpinnerInitially: false,
 };
 
 Polymer({
@@ -50,11 +59,34 @@
       type: Number,
       value: ValidationErrorType.NO_ERROR,
     },
+
+    errorString_:
+        {type: String, computed: 'getErrorString(currentValidationError_)'}
   },
 
   /** @override */
   attached: function() {
-    this.$.dialog.showModal();
+    // WebDialogUI class stores extra parameters in JSON in 'dialogArguments'
+    // variable, if this webui is being rendered in a dialog.
+    const argsJson = chrome.getVariableValue('dialogArguments');
+    const args = argsJson ? JSON.parse(argsJson) : DefaultArgs;
+
+    this.showSpinner_(args.showSpinnerInitially);
+
+    this.addWebUIListener('incorrect-old-password', () => {
+      this.onIncorrectOldPassword_();
+    });
+  },
+
+  /**
+   * @private
+   */
+  showSpinner_: function(showSpinner) {
+    // Dialog is on top, spinner is underneath, so showing dialog hides spinner.
+    if (showSpinner)
+      this.$.dialog.close();
+    else
+      this.$.dialog.showModal();
   },
 
   /**
@@ -64,10 +96,25 @@
     this.currentValidationError_ = this.findFirstError_();
     if (this.currentValidationError_ == ValidationErrorType.NO_ERROR) {
       chrome.send('changePassword', [this.old_password_, this.new_password_]);
+      this.showSpinner_(true);
     }
   },
 
   /**
+   * @private
+   */
+  onIncorrectOldPassword_: function() {
+    // Only show the error if the user had previously typed an old password.
+    // This is also called when an incorrect password was scraped. In that case
+    // we hide the spinner and show the dialog so they can confirm.
+    if (this.old_password_) {
+      this.currentValidationError_ = ValidationErrorType.INCORRECT_OLD_PASSWORD;
+      this.old_password_ = '';
+    }
+    this.showSpinner_(false);
+  },
+
+  /**
    * @return {!ValidationErrorType}
    * @private
    */
@@ -92,8 +139,9 @@
    * @private
    */
   invalidOldPassword_: function() {
-    return this.currentValidationError_ ==
-        ValidationErrorType.MISSING_OLD_PASSWORD;
+    const err = this.currentValidationError_;
+    return err == ValidationErrorType.MISSING_OLD_PASSWORD ||
+        err == ValidationErrorType.INCORRECT_OLD_PASSWORD;
   },
 
   /**
@@ -110,17 +158,23 @@
    * @private
    */
   invalidConfirmNewPassword_: function() {
-    return this.currentValidationError_ ==
-        ValidationErrorType.MISSING_CONFIRM_NEW_PASSWORD ||
-        this.passwordsDoNotMatch_();
+    const err = this.currentValidationError_;
+    return err == ValidationErrorType.MISSING_CONFIRM_NEW_PASSWORD ||
+        err == ValidationErrorType.PASSWORDS_DO_NOT_MATCH;
   },
 
   /**
-   * @return {boolean}
+   * @return {string}
    * @private
    */
-  passwordsDoNotMatch_: function() {
-    return this.currentValidationError_ ==
-        ValidationErrorType.PASSWORDS_DO_NOT_MATCH;
+  getErrorString_: function() {
+    switch (this.currentValidationError_) {
+      case ValidationErrorType.INCORRECT_OLD_PASSWORD:
+        return this.i18n('incorrectPassword');
+      case ValidationErrorType.PASSWORDS_DO_NOT_MATCH:
+        return this.i18n('matchError');
+      default:
+        return '';
+    }
   },
 });
diff --git a/chrome/browser/resources/chromeos/select_to_speak/BUILD.gn b/chrome/browser/resources/chromeos/select_to_speak/BUILD.gn
index 4c55ed5..e73875a 100644
--- a/chrome/browser/resources/chromeos/select_to_speak/BUILD.gn
+++ b/chrome/browser/resources/chromeos/select_to_speak/BUILD.gn
@@ -58,7 +58,7 @@
   ]
 }
 
-# TODO: refactor this into another file like generate_manifest.gni
+# TODO(crbug/978200): refactor this into another file like generate_manifest.gni
 # to share with other extensions.
 template("manifest") {
   version_file = "//chrome/VERSION"
diff --git a/chrome/browser/resources/chromeos/switch_access/BUILD.gn b/chrome/browser/resources/chromeos/switch_access/BUILD.gn
index dd881a9..f0406109b 100644
--- a/chrome/browser/resources/chromeos/switch_access/BUILD.gn
+++ b/chrome/browser/resources/chromeos/switch_access/BUILD.gn
@@ -115,7 +115,7 @@
   defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
 }
 
-# TODO: refactor this into another file like generate_manifest.gni
+# TODO(crbug/978200): refactor this into another file like generate_manifest.gni
 # to share with other extensions.
 template("manifest") {
   version_file = "//chrome/VERSION"
diff --git a/chrome/browser/resources/discards/discards_tab.js b/chrome/browser/resources/discards/discards_tab.js
index 24bed7a9..a2856fbc 100644
--- a/chrome/browser/resources/discards/discards_tab.js
+++ b/chrome/browser/resources/discards/discards_tab.js
@@ -287,7 +287,7 @@
    * @private
    */
   getFavIconStyle_: function(item) {
-    return 'background-image:' + cr.icon.getFavicon(item.tabUrl);
+    return 'background-image:' + cr.icon.getFavicon(item.tabUrl, false);
   },
 
   /**
diff --git a/chrome/browser/resources/history/externs.js b/chrome/browser/resources/history/externs.js
index 91ffe03..d772532 100644
--- a/chrome/browser/resources/history/externs.js
+++ b/chrome/browser/resources/history/externs.js
@@ -12,6 +12,7 @@
  * chrome/browser/ui/webui/browsing_history_handler.cc:
  *     BrowsingHistoryHandler::HistoryEntry::ToValue()
  * @typedef {{allTimestamps: Array<number>,
+ *            isUrlInRemoteUserData: boolean,
  *            blockedVisit: boolean,
  *            dateRelativeDay: string,
  *            dateShort: string,
diff --git a/chrome/browser/resources/history/history_item.js b/chrome/browser/resources/history/history_item.js
index 3e48c93..ad4a3f2a 100644
--- a/chrome/browser/resources/history/history_item.js
+++ b/chrome/browser/resources/history/history_item.js
@@ -254,7 +254,8 @@
      * @private
      */
     itemChanged_: function() {
-      this.$.icon.style.backgroundImage = cr.icon.getFavicon(this.item.url);
+      this.$.icon.style.backgroundImage =
+          cr.icon.getFavicon(this.item.url, this.item.isUrlInRemoteUserData);
       this.listen(this.$['time-accessed'], 'mouseover', 'addTimeTitle_');
     },
 
diff --git a/chrome/browser/resources/history/synced_device_card.js b/chrome/browser/resources/history/synced_device_card.js
index 083d18f..d1a1f8d 100644
--- a/chrome/browser/resources/history/synced_device_card.js
+++ b/chrome/browser/resources/history/synced_device_card.js
@@ -113,7 +113,10 @@
       const icons = this.shadowRoot.querySelectorAll('.website-icon');
 
       for (let i = 0; i < this.tabs.length; i++) {
-        icons[i].style.backgroundImage = cr.icon.getFavicon(this.tabs[i].url);
+        // Entries on this UI are coming strictly from sync, so we can set
+        // |isSyncedUrlForHistoryUi| to true on the getFavicon call below.
+        icons[i].style.backgroundImage =
+            cr.icon.getFavicon(this.tabs[i].url, true);
       }
     });
   },
diff --git a/chrome/browser/resources/local_ntp/doodles.css b/chrome/browser/resources/local_ntp/doodles.css
index f767928..e2472dd 100644
--- a/chrome/browser/resources/local_ntp/doodles.css
+++ b/chrome/browser/resources/local_ntp/doodles.css
@@ -30,7 +30,8 @@
 }
 
 #logo-doodle-container,
-#logo-doodle-iframe {
+#logo-doodle-iframe,
+#logo-doodle-wrapper {
   display: none;
 }
 
@@ -46,6 +47,18 @@
   display: inline-block;
 }
 
+.show-logo #logo-doodle-wrapper {
+  display: inline-block;
+}
+
+@media (prefers-color-scheme: dark) {
+  .show-logo #logo-doodle-wrapper {
+    border-radius: 20px;
+    display: inline-block;
+    padding: 16px 24px 16px 24px;
+  }
+}
+
 #logo-doodle-image {
   outline: none;
 }
diff --git a/chrome/browser/resources/local_ntp/doodles.js b/chrome/browser/resources/local_ntp/doodles.js
index 7481631..864132e7 100644
--- a/chrome/browser/resources/local_ntp/doodles.js
+++ b/chrome/browser/resources/local_ntp/doodles.js
@@ -44,6 +44,7 @@
   LOGO_DOODLE_CONTAINER: 'logo-doodle-container',
   LOGO_DOODLE_BUTTON: 'logo-doodle-button',
   LOGO_DOODLE_NOTIFIER: 'logo-doodle-notifier',
+  LOGO_DOODLE_WRAPPER: 'logo-doodle-wrapper',
 };
 
 /**
@@ -139,8 +140,12 @@
       return;
     }
 
+    const darkMode = window.matchMedia('(prefers-color-scheme: dark)');
+    darkMode.addListener(doodles.fadeToLogoOrDoodle);
+
     // Got a (possibly empty) ddl object. Show logo or doodle.
     doodles.targetDoodle.image = ddl.image || null;
+    doodles.targetDoodle.dark_image = ddl.dark_image || null;
     doodles.targetDoodle.metadata = ddl.metadata || null;
     doodles.showLogoOrDoodle(/*fromCache=*/ true);
     // Never hide an interactive doodle if it was already shown.
@@ -152,6 +157,7 @@
       doodles.loadDoodle(ddl.v, function(ddl2) {
         if (ddl2.usable) {
           doodles.targetDoodle.image = ddl2.image || null;
+          doodles.targetDoodle.dark_image = ddl2.dark_image || null;
           doodles.targetDoodle.metadata = ddl2.metadata || null;
           doodles.fadeToLogoOrDoodle();
         }
@@ -176,6 +182,19 @@
 };
 
 /**
+ * Get the doodle image for the current color scheme, either light or dark.
+ */
+doodles.getImageForColorScheme = function() {
+  // Only use a dark image if the browser is in dark mode and a dark image
+  // actually exists.
+  if (window.matchMedia('(prefers-color-scheme: dark)').matches &&
+      doodles.targetDoodle.dark_image) {
+    return doodles.targetDoodle.dark_image;
+  }
+  return doodles.targetDoodle.image;
+};
+
+/**
  * Loads the Doodle. On success, the loaded script declares a global variable
  * ddl, which onload() receives as its single argument. On failure, onload() is
  * called with null as the argument. If v is null, then the call requests a
@@ -314,7 +333,7 @@
   const haveDoodle = ($(doodles.IDS.LOGO_DOODLE)
                           .classList.contains(doodles.CLASSES.SHOW_LOGO));
   const wantDoodle = (doodles.targetDoodle.metadata !== null) &&
-      (doodles.targetDoodle.image !== null ||
+      (doodles.getImageForColorScheme() !== null ||
        doodles.targetDoodle.metadata.type === doodles.LOGO_TYPE.INTERACTIVE);
   if (!haveDoodle || !wantDoodle) {
     return haveDoodle === wantDoodle;
@@ -329,7 +348,7 @@
     const logoDoodleImage = $(doodles.IDS.LOGO_DOODLE_IMAGE);
     const logoDoodleContainer = $(doodles.IDS.LOGO_DOODLE_CONTAINER);
     return logoDoodleContainer.classList.contains(doodles.CLASSES.SHOW_LOGO) &&
-        ((logoDoodleImage.src === doodles.targetDoodle.image) ||
+        ((logoDoodleImage.src === doodles.getImageForColorScheme()) ||
          (logoDoodleImage.src === doodles.targetDoodle.metadata.animatedUrl));
   }
 };
@@ -372,7 +391,14 @@
       $(doodles.IDS.LOGO_DOODLE_IFRAME)
           .classList.add(doodles.CLASSES.SHOW_LOGO);
     } else {
-      $(doodles.IDS.LOGO_DOODLE_IMAGE).src = doodles.targetDoodle.image;
+      const isDarkModeEnabled =
+          window.matchMedia('(prefers-color-scheme: dark)').matches;
+      if (isDarkModeEnabled) {
+        document.body.style.setProperty('--logo-margin-bottom', '34px');
+        $(doodles.IDS.LOGO_DOODLE_WRAPPER).style.backgroundColor =
+            doodles.targetDoodle.metadata.darkBackgroundColor;
+      }
+      $(doodles.IDS.LOGO_DOODLE_IMAGE).src = doodles.getImageForColorScheme();
       $(doodles.IDS.LOGO_DOODLE_CONTAINER)
           .classList.add(doodles.CLASSES.SHOW_LOGO);
       $(doodles.IDS.LOGO_DOODLE_IFRAME)
@@ -557,12 +583,23 @@
  * dialog upon click.
  */
 doodles.insertShareButton = function() {
-  // Terminates early if share button data are missing or incomplete.
-  if (!doodles.targetDoodle.metadata ||
-      !doodles.targetDoodle.metadata.shareButtonX ||
-      !doodles.targetDoodle.metadata.shareButtonY ||
-      !doodles.targetDoodle.metadata.shareButtonBg ||
-      !doodles.targetDoodle.metadata.shareButtonIcon) {
+  // Terminates early if share button data for the current color scheme is
+  // missing or incomplete.
+  const isDarkModeEnabled =
+      window.matchMedia('(prefers-color-scheme: dark)').matches;
+  const lightShareButtonMissing = !isDarkModeEnabled &&
+      (!doodles.targetDoodle.metadata ||
+       !doodles.targetDoodle.metadata.shareButtonX ||
+       !doodles.targetDoodle.metadata.shareButtonY ||
+       !doodles.targetDoodle.metadata.shareButtonBg ||
+       !doodles.targetDoodle.metadata.shareButtonIcon);
+  const darkShareButtonMissing = isDarkModeEnabled &&
+      (!doodles.targetDoodle.metadata ||
+       !doodles.targetDoodle.metadata.darkShareButtonX ||
+       !doodles.targetDoodle.metadata.darkShareButtonY ||
+       !doodles.targetDoodle.metadata.darkShareButtonBg ||
+       !doodles.targetDoodle.metadata.darkShareButtonIcon);
+  if (lightShareButtonMissing || darkShareButtonMissing) {
     return;
   }
   const shareDialog = $(doodles.IDS.DOODLE_SHARE_DIALOG);
@@ -574,27 +611,36 @@
   shareButtonWrapper.appendChild(shareButtonImg);
   shareButtonWrapper.title = configData.translatedStrings.shareDoodle;
 
-  shareButtonWrapper.style.left =
-      doodles.targetDoodle.metadata.shareButtonX + 'px';
-  shareButtonWrapper.style.top =
-      doodles.targetDoodle.metadata.shareButtonY + 'px';
+  const shareButtonX = isDarkModeEnabled ?
+      doodles.targetDoodle.metadata.darkShareButtonX :
+      doodles.targetDoodle.metadata.shareButtonX;
+  shareButtonWrapper.style.left = shareButtonX + 'px';
+  const shareButtonY = isDarkModeEnabled ?
+      doodles.targetDoodle.metadata.darkShareButtonY :
+      doodles.targetDoodle.metadata.shareButtonY;
+  shareButtonWrapper.style.top = shareButtonY + 'px';
 
   // Alpha-less background color represented as an RGB HEX string.
   // Share button opacity represented as a double between 0 to 1.
   // Final background color is an RGBA HEX string created by combining
   // both.
-  let backgroundColor = doodles.targetDoodle.metadata.shareButtonBg;
-  if (!!doodles.targetDoodle.metadata.shareButtonOpacity ||
-      doodles.targetDoodle.metadata.shareButtonOpacity == 0) {
+  let backgroundColor = isDarkModeEnabled ?
+      doodles.targetDoodle.metadata.darkShareButtonBg :
+      doodles.targetDoodle.metadata.shareButtonBg;
+  const shareButtonOpacity = isDarkModeEnabled ?
+      doodles.targetDoodle.metadata.darkShareButtonOpacity :
+      doodles.targetDoodle.metadata.shareButtonOpacity;
+  if (!!shareButtonOpacity || shareButtonOpacity == 0) {
     const backgroundOpacityHex =
-        parseInt(doodles.targetDoodle.metadata.shareButtonOpacity * 255, 10)
-            .toString(16);
+        parseInt(shareButtonOpacity * 255, 10).toString(16);
     backgroundColor += backgroundOpacityHex;
   }
 
   shareButtonWrapper.style.backgroundColor = backgroundColor;
-  shareButtonImg.src =
-      'data:image/png;base64,' + doodles.targetDoodle.metadata.shareButtonIcon;
+  const shareButtonIcon = isDarkModeEnabled ?
+      doodles.targetDoodle.metadata.darkShareButtonIcon :
+      doodles.targetDoodle.metadata.shareButtonIcon;
+  shareButtonImg.src = 'data:image/png;base64,' + shareButtonIcon;
   shareButtonWrapper.onclick = function() {
     shareDialog.showModal();
   };
diff --git a/chrome/browser/resources/local_ntp/local_ntp.css b/chrome/browser/resources/local_ntp/local_ntp.css
index f544efa3..bf46f48 100644
--- a/chrome/browser/resources/local_ntp/local_ntp.css
+++ b/chrome/browser/resources/local_ntp/local_ntp.css
@@ -1047,10 +1047,8 @@
 
 #backgrounds-default.bg-sel-tile-bg {
   background-color: white;
-  border: 1px solid rgb(var(--GG300-rgb));
-  height: 174px;
-  margin-inline-end: 6px;
-  width: 174px;
+  height: 176px;
+  width: 176px;
 }
 
 #customization-menu .bg-sel-tile-bg.selected  {
@@ -1064,13 +1062,14 @@
   }
 }
 
+#backgrounds-menu {
+  /* Remove extra spacing between inline-block elements. */
+  font-size: 0;
+}
+
 #backgrounds-upload.bg-sel-tile-bg {
   background-color: white;
-  border: 1px solid rgb(var(--GG300-rgb));
-  height: 174px;
-  margin-inline-end: 6px;
   vertical-align: top;
-  width: 174px;
 }
 
 #menu-back-wrapper {
@@ -1137,6 +1136,8 @@
 }
 
 #backgrounds-upload-wrapper {
+  border: 1px solid rgb(var(--GG300-rgb));
+  box-sizing: border-box;
   display: inline-block;
   left: 0;
   opacity: 1;
@@ -1158,6 +1159,7 @@
 
 #backgrounds-upload-text {
   color: rgb(var(--GG700-rgb));
+  font-size: 13px;
   text-align: center;
   width: 100%;
 }
@@ -1191,6 +1193,8 @@
 #backgrounds-default-icon {
   background-color: white;
   background-repeat: no-repeat;
+  border: 1px solid rgb(var(--GG300-rgb));
+  box-sizing: border-box;
   margin: auto;
   opacity: 1;
 }
diff --git a/chrome/browser/resources/local_ntp/local_ntp.html b/chrome/browser/resources/local_ntp/local_ntp.html
index e99b7ddd..2783c39 100644
--- a/chrome/browser/resources/local_ntp/local_ntp.html
+++ b/chrome/browser/resources/local_ntp/local_ntp.html
@@ -45,9 +45,11 @@
       <!-- A doodle, if any: its link and image. -->
       <div id="logo-doodle">
         <div id="logo-doodle-container">
-          <button id="logo-doodle-button">
-            <img id="logo-doodle-image" tabindex="-1"></img>
-          </button>
+          <div id="logo-doodle-wrapper">
+            <button id="logo-doodle-button">
+              <img id="logo-doodle-image" tabindex="-1"></img>
+            </button>
+          </div>
         </div>
         <iframe id="logo-doodle-iframe" scrolling="no"></iframe>
         <!-- A spinner, prompting the doodle. Visible on NTPs with customized
diff --git a/chrome/browser/resources/media_router/BUILD.gn b/chrome/browser/resources/media_router/BUILD.gn
deleted file mode 100644
index ad4aebea..0000000
--- a/chrome/browser/resources/media_router/BUILD.gn
+++ /dev/null
@@ -1,58 +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("//third_party/closure_compiler/compile_js.gni")
-
-group("closure_compile") {
-  deps = [
-    ":media_router_resources",
-    "elements/issue_banner:closure_compile",
-    "elements/media_router_container:closure_compile",
-    "elements/media_router_header:closure_compile",
-    "elements/media_router_search_highlighter:closure_compile",
-    "elements/route_controls:closure_compile",
-    "elements/route_details:closure_compile",
-  ]
-}
-
-js_type_check("media_router_resources") {
-  deps = [
-    ":media_router",
-    ":media_router_browser_api",
-    ":media_router_data",
-    ":media_router_ui_interface",
-  ]
-}
-
-js_library("media_router") {
-  deps = [
-    ":media_router_ui_interface",
-    "elements/media_router_container:media_router_container_interface",
-    "elements/media_router_header:media_router_header",
-    "//ui/webui/resources/js:cr",
-  ]
-}
-
-js_library("media_router_browser_api") {
-  deps = [
-    ":media_router_data",
-  ]
-  externs_list = [ "$externs_path/chrome_send.js" ]
-}
-
-js_library("media_router_data") {
-  deps = [
-    "//ui/webui/resources/js:cr",
-    "//ui/webui/resources/js:load_time_data",
-  ]
-}
-
-js_library("media_router_ui_interface") {
-  deps = [
-    ":media_router_browser_api",
-    "elements/media_router_container:media_router_container_interface",
-    "elements/media_router_header:media_router_header",
-    "elements/route_controls:route_controls_interface",
-  ]
-}
diff --git a/chrome/browser/resources/media_router/elements/issue_banner/BUILD.gn b/chrome/browser/resources/media_router/elements/issue_banner/BUILD.gn
deleted file mode 100644
index 0994f8c..0000000
--- a/chrome/browser/resources/media_router/elements/issue_banner/BUILD.gn
+++ /dev/null
@@ -1,18 +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("//third_party/closure_compiler/compile_js.gni")
-
-js_type_check("closure_compile") {
-  deps = [
-    ":issue_banner",
-  ]
-}
-
-js_library("issue_banner") {
-  deps = [
-    "../..:media_router_data",
-    "//ui/webui/resources/js:i18n_behavior",
-  ]
-}
diff --git a/chrome/browser/resources/media_router/elements/issue_banner/issue_banner.css b/chrome/browser/resources/media_router/elements/issue_banner/issue_banner.css
deleted file mode 100644
index fb779b6a..0000000
--- a/chrome/browser/resources/media_router/elements/issue_banner/issue_banner.css
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright 2015 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-.blocking {
-  background-color: white;
-  overflow: hidden;
-  position: relative;
-  text-align: center;
-}
-
-.blocking > #buttons {
-  padding-bottom: 24px;
-  padding-top: 20px;
-}
-
-.blocking > div > #title {
-  color: rgba(0, 0, 0, 0.87);
-  line-height: 1.125em;
-  padding: 10px;
-  vertical-align: middle;
-}
-
-#blocking-icon {
-  color: var(--google-red-500);
-  height: 75px;
-  padding-top: 24px;
-  width: 75px;
-}
-
-.non-blocking {
-  background-color: var(--paper-grey-800);
-  padding: 16px;
-  width: inherit;
-}
-
-.non-blocking > #buttons {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-end;
-  width: 100%;
-}
-
-.non-blocking > #buttons > .button {
-  color: var(--paper-blue-300);
-}
-
-.non-blocking > #buttons > #default-button {
-  margin-inline-end: 24px;
-}
-
-.non-blocking > div > #title {
-  color: rgba(255, 255, 255, 0.87);
-  margin-inline-end: 12px;
-  overflow: hidden;
-  padding-inline-end: 12px;
-}
diff --git a/chrome/browser/resources/media_router/elements/issue_banner/issue_banner.html b/chrome/browser/resources/media_router/elements/issue_banner/issue_banner.html
deleted file mode 100644
index 996d5313..0000000
--- a/chrome/browser/resources/media_router/elements/issue_banner/issue_banner.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/icons.html">
-<link rel="import" href="chrome://resources/html/polymer.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<dom-module id="issue-banner">
-  <link rel="import" type="css" href="../../media_router_common.css">
-  <link rel="import" type="css" href="issue_banner.css">
-  <template>
-    <div class$="[[computeIssueClass_(issue)]]">
-      <div>
-        <div hidden$="[[computeIsBlockingIssueHidden_(issue)]]">
-          <iron-icon icon="cr:error-outline" id="blocking-icon">
-          </iron-icon>
-        </div>
-        <div id="title" aria-live="polite" tabindex="0">[[issue.title]]</div>
-      </div>
-      <div id="buttons">
-        <cr-button flat id="opt-button" class="button"
-            on-click="onClickOptAction_"
-            hidden$="[[computeOptionalActionHidden_(issue)]]">
-          <span>[[secondaryActionButtonText_]]</span>
-        </cr-button>
-        <cr-button flat id="default-button"
-            class="button action" on-click="onClickDefaultAction_">
-          <span>[[defaultActionButtonText_]]</span>
-        </cr-button>
-      </div>
-    </div>
-  </template>
-<script src="issue_banner.js"></script>
-</dom-module>
diff --git a/chrome/browser/resources/media_router/elements/issue_banner/issue_banner.js b/chrome/browser/resources/media_router/elements/issue_banner/issue_banner.js
deleted file mode 100644
index 21bed91..0000000
--- a/chrome/browser/resources/media_router/elements/issue_banner/issue_banner.js
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This Polymer element is used to show information about issues related
-// to casting.
-Polymer({
-  is: 'issue-banner',
-
-  properties: {
-    /**
-     * Maps an issue action type to the resource identifier of the text shown
-     * in the action button.
-     * This is a property of issue-banner because it is used in tests. This
-     * property should always be set before |issue| is set or updated.
-     * @private {!Array<string>}
-     */
-    actionTypeToButtonTextResource_: {
-      type: Array,
-      readOnly: true,
-      value: function() {
-        return ['dismissButton', 'learnMoreText'];
-      },
-    },
-
-    /**
-     * The text shown in the default action button.
-     * @private {string|undefined}
-     */
-    defaultActionButtonText_: {
-      type: String,
-    },
-
-    /**
-     * The issue to show.
-     * @type {?media_router.Issue|undefined}
-     */
-    issue: {
-      type: Object,
-      observer: 'updateActionButtonText_',
-    },
-
-    /**
-     * The text shown in the secondary action button.
-     * @private {string|undefined}
-     */
-    secondaryActionButtonText_: {
-      type: String,
-    },
-  },
-
-  behaviors: [
-    I18nBehavior,
-  ],
-
-  /**
-   * @param {?media_router.Issue} issue
-   * @return {boolean} Whether or not to hide the blocking issue UI.
-   * @private
-   */
-  computeIsBlockingIssueHidden_: function(issue) {
-    return !issue || !issue.isBlocking;
-  },
-
-  /**
-   * @param {?media_router.Issue} issue The current issue.
-   * @return {string} The class for the overall issue-banner.
-   * @private
-   */
-  computeIssueClass_: function(issue) {
-    if (!issue) {
-      return '';
-    }
-
-    return issue.isBlocking ? 'blocking' : 'non-blocking';
-  },
-
-  /**
-   * @param {?media_router.Issue} issue
-   * @return {boolean} Whether or not to hide the non-blocking issue UI.
-   * @private
-   */
-  computeOptionalActionHidden_: function(issue) {
-    return !issue || issue.secondaryActionType === undefined;
-  },
-
-  /**
-   * Fires an issue-action-click event.
-   *
-   * @param {number} actionType The type of issue action.
-   * @private
-   */
-  fireIssueActionClick_: function(actionType) {
-    this.fire('issue-action-click', {
-      id: this.issue.id,
-      actionType: actionType,
-      helpPageId: this.issue.helpPageId
-    });
-  },
-
-  /**
-   * Called when a default issue action is clicked.
-   *
-   * @param {!Event} event The event object.
-   * @private
-   */
-  onClickDefaultAction_: function(event) {
-    this.fireIssueActionClick_(this.issue.defaultActionType);
-  },
-
-  /**
-   * Called when an optional issue action is clicked.
-   *
-   * @param {!Event} event The event object.
-   * @private
-   */
-  onClickOptAction_: function(event) {
-    this.fireIssueActionClick_(
-        /** @type {number} */ (this.issue.secondaryActionType));
-  },
-
-  /**
-   * Called when |issue| is updated. This updates the default and secondary
-   * action button text.
-   *
-   * @private
-   */
-  updateActionButtonText_: function() {
-    var defaultText = '';
-    var secondaryText = '';
-    if (this.issue) {
-      defaultText = this.i18n(
-          this.actionTypeToButtonTextResource_[this.issue.defaultActionType]);
-
-      if (this.issue.secondaryActionType !== undefined) {
-        secondaryText = this.i18n(
-            this.actionTypeToButtonTextResource_[this.issue
-                                                     .secondaryActionType]);
-      }
-    }
-
-    this.defaultActionButtonText_ = defaultText;
-    this.secondaryActionButtonText_ = secondaryText;
-  },
-});
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/BUILD.gn b/chrome/browser/resources/media_router/elements/media_router_container/BUILD.gn
deleted file mode 100644
index be701f7..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_container/BUILD.gn
+++ /dev/null
@@ -1,39 +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("//third_party/closure_compiler/compile_js.gni")
-
-js_type_check("closure_compile") {
-  deps = [
-    ":media_router_container",
-    ":media_router_container_interface",
-    ":pseudo_sink_search_state",
-  ]
-}
-
-js_library("media_router_container") {
-  deps = [
-    ":pseudo_sink_search_state",
-    "../..:media_router_browser_api",
-    "../..:media_router_data",
-    "../../elements/issue_banner:issue_banner",
-    "../../elements/media_router_header:media_router_header",
-    "../../elements/media_router_search_highlighter:media_router_search_highlighter",
-    "../../elements/route_details:route_details",
-  ]
-  externs_list = [ "../../externs.js" ]
-}
-
-js_library("media_router_container_interface") {
-  deps = [
-    "../..:media_router_data",
-    "../../elements/media_router_header:media_router_header",
-  ]
-}
-
-js_library("pseudo_sink_search_state") {
-  deps = [
-    "../..:media_router_data",
-  ]
-}
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.css b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.css
deleted file mode 100644
index 88adc75c..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.css
+++ /dev/null
@@ -1,279 +0,0 @@
-/* Copyright 2015 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-.active-sink {
-  color: var(--paper-blue-700);
-}
-
-.cast-mode-icon,
-.sink-icon {
-  height: var(--non-navigation-icon-size);
-  padding-inline-end: 12px;
-  padding-inline-start: var(--dialog-padding-start);
-  width: var(--non-navigation-icon-size);
-}
-
-#container-header {
-  position: fixed;
-  width: 100%;
-}
-
-#content {
-  position: relative;
-}
-
-#device-missing {
-  align-items: center;
-  background-color: white;
-  display: flex;
-  justify-content: center;
-  padding: 60px 0;
-}
-
-#device-missing a {
-  color: var(--paper-blue-700);
-  margin: 8px 0;
-  text-align: center;
-  text-decoration: none;
-}
-
-#first-run-button {
-  background-color: white;
-}
-
-#first-run-button-container {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-end;
-}
-
-#first-run-cloud-checkbox,
-#first-run-flow-cloud-pref,
-#first-run-text {
-  font-size: 1.0em;
-  line-height: 1.5em;
-}
-
-#first-run-cloud-checkbox,
-#first-run-text,
-#first-run-title {
-  color: white;
-  padding-bottom: 24px;
-}
-
-#first-run-cloud-checkbox::shadow #checkboxLabel {
-  padding-inline-start: var(-dialog-padding-start);
-}
-
-#first-run-flow {
-  background-color: var(--paper-blue-700);
-  box-sizing: border-box;
-  padding: 24px 16px 4px 16px;
-  position: fixed;
-  width: 100%;
-}
-
-#first-run-flow a {
-  color: white;
-  text-decoration: none;
-}
-
-#first-run-flow-cloud-pref {
-  color: white;
-  display: flex;
-}
-
-.first-run-learn-more {
-  font-weight: bold;
-  text-transform: uppercase;
-}
-
-#first-run-title {
-  font-size: 1.25em;
-}
-
-#issue-banner {
-  width: 100%;
-}
-
-#issue-banner.non-blocking {
-  bottom: 0;
-  display: block;
-  margin-top: 0;
-}
-
-#no-search-matches {
-  color: rgb(112, 112, 112);
-  display: block;
-  font-size: 1.2 em;
-  padding-bottom: 20px;
-  padding-top: 20px;
-  text-align: center;
-}
-
-cr-checkbox {
-  --cr-checkbox-checked-box-color: white;
-  --cr-checkbox-label-color: white;
-  --cr-checkbox-mark-color: var(--paper-blue-700);
-  --cr-checkbox-ripple-checked-color: white;
-  --cr-checkbox-ripple-unchecked-color: white;
-  --cr-checkbox-unchecked-box-color: white;
-  --cr-checkbox-ripple-opacity: 0.25;
-}
-
-.selectable-item {
-  -webkit-appearance: none;
-  align-items: center;
-  background: none;
-  border: none;
-  cursor: pointer;
-  display: flex;
-  font-family: inherit;
-  font-size: 1.0em;
-  line-height: 0;
-  min-height: 0;
-  outline: 0;
-  padding: 12px 0;
-  text-align: initial;
-  width: 100%;
-}
-
-.selectable-item:hover,
-.selectable-item:focus {
-  background-color: rgb(238, 238, 238);
-  border: 0;
-}
-
-.selectable-item.iron-selected {
-  font-weight: bold;
-}
-
-iron-selector {
-  color: rgba(0, 0, 0, 0.87);
-  display: block;
-  overflow-x: hidden;
-  overflow-y: auto;
-  padding-bottom: 0;
-  padding-top: 4px;
-  user-select: none;
-}
-
-iron-selector#cast-mode-list {
-  padding-bottom: 12px;
-  padding-top: 4px;
-}
-
-#search-input-container {
-  flex-grow: 1;
-}
-
-#search-results {
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-
-#search-results-container {
-  bottom: 0;
-  left: 0;
-  overflow-x: hidden;
-  overflow-y: hidden;
-  position: absolute;
-  right: 0;
-  top: 100%;
-}
-
-#searching-devices-spinner {
-  height: 30px;
-  width: 30px;
-}
-
-.subheading-text {
-  color: var(--paper-grey-600);
-  cursor: default;
-  font-weight: normal;
-  padding-bottom: 4px;
-  padding-inline-start: var(--dialog-padding-start);
-  padding-top: 12px;
-}
-
-#share-screen-text::after {
-  background-color: white;
-  font-weight: normal;
-}
-
-.sink-content {
-  display: flex;
-  flex-direction: row;
-  font-weight: normal;
-}
-
-.sink-domain {
-  color: var(--paper-grey-600);
-  padding-inline-start: 6px;
-  /* TODO(crbug/589697): Handle overflow of very long domain names. */
-}
-
-#sink-list {
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-
-#sink-list-view {
-  margin-bottom: 12px;
-  position: relative;
-}
-
-.sink-name {
-  min-width: 10%;
-}
-
-#search-input-container {
-  flex-grow: 1;
-}
-
-#sink-search {
-  padding-bottom: 0;
-  padding-top: 4px;
-  position: absolute;
-  top: 100%;
-  width: 100%;
-  z-index: 1;
-}
-
-/* Separate icon class is a consequence of box-sizing: border-box set by
- * paper-icon-button. This should achieve the same dimensions as .sink-icon. */
-#sink-search-icon {
-  margin-inline-start: 4px;
-  padding-inline-end: 12px;
-  padding-inline-start: 12px;
-}
-
-#sink-search-input {
-  --cr-input-background-color: white;
-  --cr-input-border-bottom: 1px solid var(--paper-grey-800);
-  --cr-input-border-radius: 0;
-  --cr-input-error-display: none;
-  --cr-input-padding-end: 0;
-  --cr-input-padding-start: 0;
-  --cr-input-padding-bottom: 2px;
-  --cr-input-padding-top: 2px;
-  align-self: center;
-  flex-grow: 1;
-  font-size: 12px;
-  margin-inline-end: 31px;
-}
-
-.sink-subtext {
-  color: var(--paper-grey-600);
-  padding-top: 8px;
-}
-
-.sink-text {
-  flex-flow: row nowrap;
-  line-height: normal;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  width: 275px;
-}
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
deleted file mode 100644
index 5f277f2..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.html
+++ /dev/null
@@ -1,241 +0,0 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_checkbox/cr_checkbox.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_input/cr_input.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-selector/iron-selector.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html">
-<link rel="import" href="../media_router_header/media_router_header.html">
-<link rel="import" href="../route_details/route_details.html">
-<link rel="import" href="../../icons/media_router_icons.html">
-<dom-module id="media-router-container">
-  <link rel="import" type="css" href="../../media_router_common.css">
-  <link rel="import" type="css" href="media_router_container.css">
-  <template>
-    <div id="focus-placeholder" tabindex="0"></div>
-    <template is="dom-if"
-        if="[[computeShowFirstRunFlow_(showFirstRunFlow, currentView_)]]">
-      <div id="first-run-flow">
-        <div id="first-run-title">[[i18n('firstRunFlowTitle')]]</div>
-        <div id="first-run-text">
-          <span>[[i18n('firstRunFlowText')]]</span>
-          <a href="[[firstRunFlowLearnMoreUrl]]" class="first-run-learn-more"
-              target="_blank">
-            [[i18n('learnMoreText')]]
-          </a>
-        </div>
-        <div id="first-run-flow-cloud-pref"
-            hidden$="[[!showFirstRunFlowCloudPref]]">
-          <cr-checkbox checked id="first-run-cloud-checkbox">
-            <span>[[getFirstRunFlowCloudPrefText_()]]</span>
-            <a href="[[firstRunFlowCloudPrefLearnMoreUrl]]"
-                class="first-run-learn-more" target="_blank">
-              [[i18n('learnMoreText')]]
-            </a>
-          </cr-checkbox>
-        </div>
-        <div id="first-run-button-container">
-          <cr-button id="first-run-button" class="button"
-              on-click="acknowledgeFirstRunFlow_">
-            <span>[[i18n('firstRunFlowButtonText')]]</span>
-          </cr-button>
-        </div>
-      </div>
-    </template>
-    <media-router-header id="container-header"
-        class$="[[currentView_]]" view="[[currentView_]]"
-        heading-text="[[computeHeaderText_(currentView_, headerText)]]"
-        arrow-drop-icon-disabled="[[computeIsLaunching_(currentLaunchingSinkId_)]]"
-        tooltip="[[computeHeaderTooltip_(currentView_, headerTextTooltip)]]"
-        on-back-click="showSinkList_">
-    </media-router-header>
-    <div id="content">
-      <template is="dom-if" if="[[!computeCastModeListHidden_(currentView_)]]">
-        <iron-selector id="cast-mode-list" role="presentation"
-            selectable=".selectable-item"
-            selected="{{selectedCastModeMenuItem_}}">
-          <template is="dom-repeat" id="presentationCastModeList"
-              items="[[computePresentationCastModeList_(castModeList)]]">
-            <button class="selectable-item" on-click="onCastModeClick_">
-              <iron-icon class="cast-mode-icon"
-                  icon="[[computeCastModeIcon_(item)]]">
-              </iron-icon>
-              <div><span>[[item.host]]</span></div>
-            </button>
-          </template>
-          <div id="share-screen-text" class="subheading-text"
-              hidden$="[[computeShareScreenSubheadingHidden_(castModeList)]]">
-            <span>[[i18n('shareYourScreenSubheadingText')]]</span>
-          </div>
-          <template is="dom-repeat" id="shareScreenCastModeList"
-              items="[[computeShareScreenCastModeList_(castModeList)]]">
-            <button class="selectable-item" on-click="onCastModeClick_">
-              <iron-icon class="cast-mode-icon"
-                  icon="[[computeCastModeIcon_(item)]]">
-              </iron-icon>
-              <div><span>[[item.description]]</span></div>
-            </button>
-          </template>
-          <div id="cast-local-media-text" class="subheading-text"
-              hidden$="[[computeLocalMediaSubheadingHidden_(castModeList)]]">
-            <span>[[i18n('castLocalMediaSubheadingText')]]</span>
-          </div>
-          <template is="dom-repeat" id="localMediaCastModeList"
-              items="[[computeLocalMediaCastModeList_(castModeList)]]">
-            <button class="selectable-item" on-click="onCastModeClick_">
-              <iron-icon class="cast-mode-icon"
-                  icon="[[computeCastModeIcon_(item)]]">
-              </iron-icon>
-              <div><span>[[item.description]]</span></div>
-            </button>
-          </template>
-        </iron-selector>
-      </template>
-      <template is="dom-if"
-          if="[[!computeRouteDetailsHidden_(currentView_, issue)]]">
-        <route-details id="route-details" route="[[currentRoute_]]"
-            shown-cast-mode-value="[[shownCastModeValue_]]"
-            sink="[[getSinkForRoute_(currentRoute_)]]"
-            is-any-sink-currently-launching=
-                "[[computeIsLaunching_(currentLaunchingSinkId_)]]"
-            on-change-route-source-click="onChangeRouteSourceClick_"
-            on-close-route="onCloseRoute_">
-        </route-details>
-      </template>
-      <div id="sink-list-view"
-          hidden$="[[computeSinkListViewHidden_(currentView_, issue)]]">
-        <div id="device-missing"
-             hidden$="[[computeDeviceMissingHidden_(sinksToShow_)]]">
-          <paper-spinner-lite id="searching-devices-spinner" active
-              hidden$="[[computeSpinnerHidden_(justOpened_)]]">
-          </paper-spinner-lite>
-          <a href="[[deviceMissingUrl]]" target="_blank"
-              hidden$="[[!computeSpinnerHidden_(justOpened_)]]">
-            [[i18n('destinationMissingText')]]
-          </a>
-        </div>
-        <template is="dom-if" if="[[!computeSinkListHidden_(sinksToShow_)]]">
-          <div id="sink-list" hidden$="[[hideSinkListForAnimation_]]">
-            <iron-selector id="sink-list-paper-menu" role="presentation"
-                selectable=".selectable-item">
-              <template is="dom-repeat" id="sinkList" items="[[sinksToShow_]]">
-                <button class="selectable-item" on-click="onSinkClick_">
-                  <div class="sink-content">
-                    <div>
-                      <iron-icon icon="[[computeSinkIcon_(item)]]"
-                          hidden$="[[computeSinkIsLaunching_(currentLaunchingSinkId_, item.id)]]"
-                          class$="[[computeSinkIconClass_(item.id, sinkToRouteMap_)]]">
-                      </iron-icon>
-                      <template is="dom-if"
-                          if="[[computeSinkIsLaunching_(currentLaunchingSinkId_, item.id)]]">
-                        <paper-spinner-lite class="sink-icon" active>
-                        </paper-spinner-lite>
-                      </template>
-                    </div>
-                    <div>
-                      <div class="sink-text">
-                        <span dir="auto" class="sink-name" title="[[item.name]]">
-                          [[item.name]]
-                        </span>
-                        <template is="dom-if"
-                            if="[[!computeSinkDomainHidden_(item)]]">
-                          <span class="sink-domain" title="[[item.domain]]">
-                            [[item.domain]]
-                          </span>
-                        </template>
-                      </div>
-                      <template is="dom-if"
-                          if="[[!computeSinkSubtextHidden_(item, sinkToRouteMap_)]]">
-                        <div class="sink-text sink-subtext">
-                          <span>[[computeSinkSubtext_(item, sinkToRouteMap_)]]</span>
-                        </div>
-                      </template>
-                    </div>
-                  </div>
-                </button>
-              </template>
-            </iron-selector>
-          </div>
-        </template>
-        <template is="dom-if" if="[[searchEnabled_]]">
-          <div id="sink-search">
-            <div class="sink-content">
-              <cr-icon-button id="sink-search-icon"
-                  iron-icon="media-router:search" on-tap="searchButtonClick_"
-                  title="[[i18n('searchButtonTitle')]]">
-              </cr-icon-button>
-              <cr-input id="sink-search-input" value="{{searchInputText_}}"
-                  placeholder="[[i18n('searchInputLabel')]]">
-              </cr-input>
-            </div>
-          </div>
-        </template>
-        <template is="dom-if" if="[[!isSearchListHidden_]]">
-          <div id="search-results-container">
-            <div id="no-search-matches"
-                hidden$="[[computeNoMatchesHidden_(searchResultsToShow_, isSearchListHidden_)]]">
-              <span>[[i18n('searchNoMatchesText')]]</span>
-            </div>
-            <div id="search-results"
-                hidden$="[[computeSearchResultsHidden_(searchResultsToShow_, isSearchListHidden_)]]">
-              <iron-selector id="search-results-paper-menu" selected="0"
-                  role="presentation" selectable=".selectable-item">
-                <template is="dom-repeat" id="searchResults"
-                    items="[[searchResultsToShow_]]">
-                  <button class="search-item selectable-item"
-                      on-click="onSinkClick_">
-                    <div class="sink-content">
-                      <div>
-                        <iron-icon icon="[[computeSinkIcon_(item.sinkItem)]]"
-                            hidden$="[[computeSinkIsLaunching_(currentLaunchingSinkId_, item.sinkItem.id)]]"
-                            class$="[[computeSinkIconClass_(item.sinkItem.id, sinkToRouteMap_)]]">
-                        </iron-icon>
-                        <template is="dom-if"
-                            if="[[computeSinkIsLaunching_(currentLaunchingSinkId_, item.sinkItem.id)]]">
-                          <paper-spinner-lite class="sink-icon" active>
-                          </paper-spinner-lite>
-                        </template>
-                      </div>
-                      <div>
-                        <div class="sink-text">
-                          <media-router-search-highlighter class="sink-name"
-                              data="[[computeSinkMatchingText_(item)]]"
-                              title="[[item.sinkItem.name]]">
-                          </media-router-search-highlighter>
-                          <template is="dom-if"
-                              if="[[!computeSinkDomainHidden_(item.sinkItem)]]">
-                            <span class="sink-domain" title="[[item.sinkItem.domain]]">
-                              [[item.sinkItem.domain]]
-                            </span>
-                          </template>
-                        </div>
-                        <template is="dom-if"
-                            if="[[!computeSinkSubtextHidden_(item.sinkItem, sinkToRouteMap_)]]">
-                          <div class="sink-text sink-subtext">
-                            <span>
-                              [[computeSinkSubtext_(item.sinkItem, sinkToRouteMap_)]]
-                            </span>
-                          </div>
-                        </template>
-                      </div>
-                    </div>
-                  </button>
-                </template>
-              </iron-selector>
-            </div>
-          </div>
-        </template>
-      </div>
-      <template is="dom-if"
-          if="[[computeIssueBannerShown_(currentView_, issue)]]">
-        <issue-banner id="issue-banner" issue="[[issue]]"
-            class$="[[computeIssueBannerClass_(issue)]]">
-        </issue-banner>
-      </template>
-    </div>
-  </template>
-  <script src="pseudo_sink_search_state.js"></script>
-  <script src="media_router_container.js"></script>
-</dom-module>
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.js b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.js
deleted file mode 100644
index 830b41b..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container.js
+++ /dev/null
@@ -1,2624 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * This Polymer element contains the entire media router interface. It handles
- * hiding and showing specific components.
- * @implements {MediaRouterContainerInterface}
- */
-Polymer({
-  is: 'media-router-container',
-
-  properties: {
-    /**
-     * The list of available sinks.
-     * @type {!Array<!media_router.Sink>}
-     */
-    allSinks: {
-      type: Array,
-      value: [],
-      observer: 'reindexSinksAndRebuildSinksToShow_',
-    },
-
-    /**
-     * The last promise in a chain that will be fulfilled when the current
-     * animation has finished. It does not return a value; it is strictly a
-     * synchronization mechanism.
-     * @private {!Promise}
-     */
-    animationPromise_: {
-      type: Object,
-      value: function() {
-        return Promise.resolve();
-      },
-    },
-
-    /**
-     * The list of CastModes to show.
-     * @type {!Array<!media_router.CastMode>|undefined}
-     */
-    castModeList: {
-      type: Array,
-      observer: 'checkCurrentCastMode_',
-    },
-
-    /**
-     * The ID of the Sink currently being launched.
-     * @private {string}
-     * TODO(crbug.com/616604): Use per-sink route creation state.
-     */
-    currentLaunchingSinkId_: {
-      type: String,
-      value: '',
-    },
-
-    /**
-     * The current route.
-     * @private {?media_router.Route|undefined}
-     */
-    currentRoute_: {
-      type: Object,
-    },
-
-    /**
-     * The current view to be shown.
-     * @private {?media_router.MediaRouterView|undefined}
-     */
-    currentView_: {
-      type: String,
-      observer: 'currentViewChanged_',
-    },
-
-    /**
-     * The URL to open when the device missing link is clicked.
-     * @type {string|undefined}
-     */
-    deviceMissingUrl: {
-      type: String,
-    },
-
-    /**
-     * The height of the dialog.
-     * @private {number}
-     */
-    dialogHeight_: {
-      type: Number,
-      value: 330,
-    },
-
-    /**
-     * The time |this| element calls ready().
-     * @private {number|undefined}
-     */
-    elementReadyTimeMs_: {
-      type: Number,
-    },
-
-    /**
-     * Animation player used for running filter transition animations.
-     * @private {?Animation}
-     */
-    filterTransitionPlayer_: {
-      type: Object,
-      value: null,
-    },
-
-    /**
-     * The URL to open when the cloud services pref learn more link is clicked.
-     * @type {string|undefined}
-     */
-    firstRunFlowCloudPrefLearnMoreUrl: {
-      type: String,
-    },
-
-    /**
-     * The URL to open when the first run flow learn more link is clicked.
-     * @type {string|undefined}
-     */
-    firstRunFlowLearnMoreUrl: {
-      type: String,
-    },
-
-    /**
-     * The header text for the sink list.
-     * @type {string|undefined}
-     */
-    headerText: {
-      type: String,
-    },
-
-    /**
-     * The header text tooltip. This would be descriptive of the
-     * source origin, whether a host name, tab URL, etc.
-     * @type {string|undefined}
-     */
-    headerTextTooltip: {
-      type: String,
-    },
-
-    /**
-     * An animation player that is used for running dialog height adjustments.
-     * @private {?Animation}
-     */
-    heightAdjustmentPlayer_: {
-      type: Object,
-      value: null,
-    },
-
-    /**
-     * Whether the sink list is being hidden for animation purposes.
-     * @private {boolean}
-     */
-    hideSinkListForAnimation_: {
-      type: Boolean,
-      value: false,
-    },
-
-    /**
-     * Records whether the search input is focused when a window blur event is
-     * received. This is used to handle search focus edge cases. See
-     * |setSearchFocusHandlers_| for details.
-     * @private {boolean}
-     */
-    isSearchFocusedOnWindowBlur_: {
-      type: Boolean,
-      value: false,
-    },
-
-    /**
-     * Whether the search list is currently hidden.
-     * @private {boolean}
-     */
-    isSearchListHidden_: {
-      type: Boolean,
-      value: true,
-    },
-
-    /**
-     * The issue to show.
-     * @type {?media_router.Issue}
-     */
-    issue: {
-      type: Object,
-      value: null,
-      observer: 'maybeShowIssueView_',
-    },
-
-    /**
-     * Whether the MR UI was just opened.
-     * @private {boolean}
-     */
-    justOpened_: {
-      type: Boolean,
-      value: true,
-    },
-
-    /**
-     * Whether the user's mouse is positioned over the dialog.
-     * @private {boolean|undefined}
-     */
-    mouseIsPositionedOverDialog_: {
-      type: Boolean,
-    },
-
-    /**
-     * The ID of the route that is currently being created. This is set when
-     * route creation is resolved but not ready for its controls to be
-     * displayed.
-     * @private {string|undefined}
-     */
-    pendingCreatedRouteId_: {
-      type: String,
-    },
-
-    /**
-     * The time the sink list was shown and populated with at least one sink.
-     * This is reset whenever the user switches views or there are no sinks
-     * available for display.
-     * @private {number}
-     */
-    populatedSinkListSeenTimeMs_: {
-      type: Number,
-      value: -1,
-    },
-
-    /**
-     * Pseudo sinks from MRPs that represent their ability to accept sink search
-     * requests.
-     * @private {!Array<!media_router.Sink>}
-     */
-    pseudoSinks_: {
-      type: Array,
-      value: [],
-    },
-
-    /**
-     * Helps manage the state of creating a sink and a route from a pseudo sink.
-     * @private {PseudoSinkSearchState|undefined}
-     */
-    pseudoSinkSearchState_: {
-      type: Object,
-    },
-
-    /**
-     * Whether the next character input should cause a filter action metric to
-     * be sent.
-     * @type {boolean}
-     * @private
-     */
-    reportFilterOnInput_: {
-      type: Boolean,
-      value: false,
-    },
-
-    /**
-     * The list of current routes.
-     * @type {!Array<!media_router.Route>|undefined}
-     */
-    routeList: {
-      type: Array,
-      observer: 'rebuildRouteMaps_',
-    },
-
-    /**
-     * Maps media_router.Route.id to corresponding media_router.Route.
-     * @private {!Object<!string, !media_router.Route>|undefined}
-     */
-    routeMap_: {
-      type: Object,
-    },
-
-    /**
-     * Whether the search feature is enabled and we should show the search
-     * input.
-     * @private {boolean}
-     */
-    searchEnabled_: {
-      type: Boolean,
-      value: false,
-      observer: 'searchEnabledChanged_',
-    },
-
-    /**
-     * Search text entered by the user into the sink search input.
-     * @private {string}
-     */
-    searchInputText_: {
-      type: String,
-      value: '',
-      observer: 'searchInputTextChanged_',
-    },
-
-    /**
-     * Sinks to display that match |searchInputText_|.
-     * @private {!Array<!{sinkItem: !media_router.Sink,
-     *                    substrings: Array<!Array<number>>}>|undefined}
-     */
-    searchResultsToShow_: {
-      type: Array,
-    },
-
-    /**
-     * The selected cast mode menu item. The item with this index is bolded in
-     * the cast mode menu.
-     * @private {number|undefined}
-     */
-    selectedCastModeMenuItem_: {
-      type: Number,
-      observer: 'updateSelectedCastModeMenuItem_',
-    },
-
-    /**
-     * Whether to show the user domain of sinks associated with identity.
-     * @type {boolean|undefined}
-     */
-    showDomain: {
-      type: Boolean,
-    },
-
-    /**
-     * Whether to show the first run flow.
-     * @type {boolean|undefined}
-     */
-    showFirstRunFlow: {
-      type: Boolean,
-      observer: 'updateElementPositioning_',
-    },
-
-    /**
-     * Whether to show the cloud preference setting in the first run flow.
-     * @type {boolean|undefined}
-     */
-    showFirstRunFlowCloudPref: {
-      type: Boolean,
-    },
-
-    /**
-     * The cast mode shown to the user. Initially populated within
-     * |rebuildSinksToShow_()|.
-     * This value may be changed in one of the following ways:
-     * 1) The user explicitly selected a cast mode.
-     * 2) The user selected cast mode is no longer available for the associated
-     *    WebContents. In this case, the container will reset to auto mode. Note
-     *    that |userHasSelectedCastMode_| will switch back to false.
-     * 3) The sink list changed, and the user had not explicitly selected a cast
-     *    mode. If the sinks support exactly 1 cast mode, the container will
-     *    switch to that cast mode. Otherwise, the container will reset to auto
-     *    mode.
-     * @private {number}
-     */
-    shownCastModeValue_: Number,
-
-    /**
-     * Max height for the sink list.
-     * @private {number}
-     */
-    sinkListMaxHeight_: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * Maps media_router.Sink.id to corresponding media_router.Sink.
-     * @private {!Object<!string, !media_router.Sink>|undefined}
-     */
-    sinkMap_: {
-      type: Object,
-    },
-
-    /**
-     * Maps media_router.Sink.id to corresponding media_router.Route.
-     * @private {!Object<!string, !media_router.Route>}
-     */
-    sinkToRouteMap_: {
-      type: Object,
-      value: {},
-    },
-
-    /**
-     * Sinks to show for the currently selected cast mode.
-     * @private {!Array<!media_router.Sink>|undefined}
-     */
-    sinksToShow_: {
-      type: Array,
-      observer: 'updateElementPositioning_',
-    },
-
-    /**
-     * Whether the user has explicitly selected a cast mode.
-     * @private {boolean}
-     */
-    userHasSelectedCastMode_: {
-      type: Boolean,
-      value: false,
-    },
-
-    /**
-     * Whether the user has already taken an action.
-     * @type {boolean}
-     */
-    userHasTakenInitialAction_: {
-      type: Boolean,
-      value: false,
-    },
-  },
-
-  behaviors: [
-    I18nBehavior,
-  ],
-
-  observers: [
-    'maybeUpdateStartSinkDisplayStartTime_(currentView_, sinksToShow_)',
-  ],
-
-  ready: function() {
-    this.elementReadyTimeMs_ = window.performance.now();
-    this.showSinkList_();
-
-    Polymer.RenderStatus.afterNextRender(this, function() {
-      // Import the elements that aren't needed at startup. This reduces
-      // initial load time. Delayed loading interferes with getting the
-      // offsetHeight of the first-run-flow element in updateElementPositioning_
-      // though, so we also make sure it is called after the last load.
-      var that = this;
-      var loadsRemaining = 3;
-      var onload = function() {
-        loadsRemaining--;
-        if (loadsRemaining > 0) {
-          return;
-        }
-        that.updateElementPositioning_();
-        if (that.currentView_ == media_router.MediaRouterView.SINK_LIST) {
-          that.putSearchAtBottom_();
-        }
-      };
-      this.importHref(
-          'chrome://resources/polymer/v1_0/neon-animation/' +
-              'web-animations.html',
-          onload);
-      this.importHref(
-          this.resolveUrl('../issue_banner/issue_banner.html'), onload);
-      this.importHref(
-          this.resolveUrl(
-              '../media_router_search_highlighter/' +
-              'media_router_search_highlighter.html'),
-          onload);
-
-      // If this is not on a Mac platform, remove the placeholder. See
-      // onFocus_() for more details. ready() is only called once, so no need
-      // to check if the placeholder exist before removing.
-      if (!cr.isMac) {
-        this.$$('#focus-placeholder').remove();
-      }
-
-      document.addEventListener('keydown', this.onKeydown_.bind(this), true);
-      this.listen(this, 'focus', 'onFocus_');
-      this.listen(this, 'header-height-changed', 'updateElementPositioning_');
-      this.listen(this, 'header-or-arrow-click', 'toggleCastModeHidden_');
-      this.listen(this, 'mouseleave', 'onMouseLeave_');
-      this.listen(this, 'mouseenter', 'onMouseEnter_');
-
-      // Turn off the spinner after 3 seconds, then report the current number of
-      // sinks.
-      this.async(function() {
-        this.justOpened_ = false;
-        // |pseudoSinks_| does not contain pseudo sinks without a domain, so it
-        // cannot be used for calculating the number of real sinks.
-        var realSinks = this.allSinks.filter(function(sink) {
-          return !sink.isPseudoSink;
-        });
-        this.fire('report-sink-count', {
-          sinkCount: realSinks.length,
-        });
-      }, 3000 /* 3 seconds */);
-
-      // For Mac platforms, request data after a short delay after load. This
-      // appears to speed up initial data load time on Mac.
-      if (cr.isMac) {
-        this.async(function() {
-          this.fire('request-initial-data');
-        }, 25 /* 0.025 seconds */);
-      }
-    });
-  },
-
-  /**
-   * Fires an acknowledge-first-run-flow event and hides the first run flow.
-   * This is call when the first run flow button is clicked.
-   *
-   * @private
-   */
-  acknowledgeFirstRunFlow_: function() {
-    // Only set |userOptedIntoCloudServices| if the user was shown the cloud
-    // services preferences option.
-    var userOptedIntoCloudServices = this.showFirstRunFlowCloudPref ?
-        this.$$('#first-run-cloud-checkbox').checked :
-        undefined;
-    this.fire('acknowledge-first-run-flow', {
-      optedIntoCloudServices: userOptedIntoCloudServices,
-    });
-
-    this.showFirstRunFlow = false;
-    this.showFirstRunFlowCloudPref = false;
-  },
-
-  /**
-   * Fires a 'report-initial-action' event when the user takes their first
-   * action after the dialog opens. Also fires a 'report-initial-action-close'
-   * event if that initial action is to close the dialog.
-   * @param {!media_router.MediaRouterUserAction} initialAction
-   */
-  maybeReportUserFirstAction: function(initialAction) {
-    if (this.userHasTakenInitialAction_) {
-      return;
-    }
-
-    this.fire('report-initial-action', {
-      action: initialAction,
-    });
-
-    if (initialAction == media_router.MediaRouterUserAction.CLOSE) {
-      var timeToClose = window.performance.now() - this.elementReadyTimeMs_;
-      this.fire('report-initial-action-close', {
-        timeMs: timeToClose,
-      });
-    }
-
-    this.userHasTakenInitialAction_ = true;
-  },
-
-  get header() {
-    return this.$['container-header'];
-  },
-
-  /**
-   * Calls all the functions to set the UI to a given cast mode.
-   * @param {!media_router.CastMode} castMode The cast mode to set things to.
-   * @private
-   */
-  castModeSelected_(castMode) {
-    this.selectCastMode(castMode.type);
-    this.fire('cast-mode-selected', {castModeType: castMode.type});
-    this.showSinkList_();
-    this.maybeReportUserFirstAction(
-        media_router.MediaRouterUserAction.CHANGE_MODE);
-  },
-
-  /**
-   * Checks that the currently selected cast mode is still in the
-   * updated list of available cast modes. If not, then update the selected
-   * cast mode to the first available cast mode on the list.
-   */
-  checkCurrentCastMode_: function() {
-    if (!this.castModeList.length) {
-      return;
-    }
-
-    // If there is a forced mode make sure it is shown.
-    if (this.findForcedCastMode_()) {
-      this.rebuildSinksToShow_();
-    }
-
-    // If we are currently showing auto mode, then nothing needs to be done.
-    // Otherwise, if the cast mode currently shown no longer exists (regardless
-    // of whether it was selected by user), then switch back to auto cast mode.
-    if (this.shownCastModeValue_ != media_router.CastModeType.AUTO &&
-        !this.findCastModeByType_(this.shownCastModeValue_)) {
-      this.setShownCastMode_(media_router.AUTO_CAST_MODE);
-      this.rebuildSinksToShow_();
-    }
-  },
-
-  /**
-   * Compares two search match objects for sorting. Earlier and longer matches
-   * are prioritized.
-   *
-   * @param {!{sinkItem: !media_router.Sink,
-   *           substrings: Array<!Array<number>>}} resultA
-   * Parameters in |resultA|:
-   *   sinkItem - sink object.
-   *   substrings - start-end index pairs of substring matches.
-   * @param {!{sinkItem: !media_router.Sink,
-   *           substrings: Array<!Array<number>>}} resultB
-   * Parameters in |resultB|:
-   *   sinkItem - sink object.
-   *   substrings - start-end index pairs of substring matches.
-   * @return {number} -1 if |resultA| should come before |resultB|, 1 if
-   *     |resultB| should come before |resultA|, and 0 if they are considered
-   *     equal.
-   */
-  compareSearchMatches_: function(resultA, resultB) {
-    var substringsA = resultA.substrings;
-    var substringsB = resultB.substrings;
-    var numberSubstringsA = substringsA.length;
-    var numberSubstringsB = substringsB.length;
-
-    if (numberSubstringsA == 0 && numberSubstringsB == 0) {
-      return 0;
-    } else if (numberSubstringsA == 0) {
-      return 1;
-    } else if (numberSubstringsB == 0) {
-      return -1;
-    }
-
-    var loopMax = Math.min(numberSubstringsA, numberSubstringsB);
-    for (var i = 0; i < loopMax; ++i) {
-      var [matchStartA, matchEndA] = substringsA[i];
-      var [matchStartB, matchEndB] = substringsB[i];
-
-      if (matchStartA < matchStartB) {
-        return -1;
-      } else if (matchStartA > matchStartB) {
-        return 1;
-      }
-
-      if (matchEndA > matchEndB) {
-        return -1;
-      } else if (matchEndA < matchEndB) {
-        return 1;
-      }
-    }
-
-    if (numberSubstringsA > numberSubstringsB) {
-      return -1;
-    } else if (numberSubstringsA < numberSubstringsB) {
-      return 1;
-    }
-    return 0;
-  },
-
-  /**
-   * Returns a duration in ms from a distance in pixels using a default speed of
-   * 1000 pixels per second.
-   * @param {number} distance Number of pixels that will be traveled.
-   * @private
-   */
-  computeAnimationDuration_: function(distance) {
-    // The duration of the animation can be found by abs(distance)/speed, where
-    // speed is fixed at 1000 pixels per second, or 1 pixel per millisecond.
-    return Math.abs(distance);
-  },
-
-  /**
-   * If there is a forced cast mode, returns that cast mode.  If |allSinks|
-   * supports only a single cast mode, returns that cast mode.  Otherwise,
-   * returns AUTO_MODE. Only called if |userHasSelectedCastMode_| is |false|.
-   *
-   * @return {!media_router.CastMode} The single cast mode supported by
-   *                                  |allSinks|, or AUTO_MODE.
-   */
-  computeCastMode_: function() {
-    /** @const */ var forcedMode = this.findForcedCastMode_();
-    if (forcedMode) {
-      return forcedMode;
-    }
-
-    var allCastModes = this.allSinks.reduce(function(castModesSoFar, sink) {
-      // Ignore pseudo sinks in the cast mode computation.
-      return castModesSoFar | (sink.isPseudoSink ? 0 : sink.castModes);
-    }, 0);
-
-    // This checks whether |castModes| does not consist of exactly 1 cast mode.
-    if (!allCastModes || allCastModes & (allCastModes - 1)) {
-      return media_router.AUTO_CAST_MODE;
-    }
-
-    var castMode = this.findCastModeByType_(allCastModes);
-    if (castMode) {
-      return castMode;
-    }
-
-    console.error('Cast mode ' + allCastModes + ' not in castModeList');
-    return media_router.AUTO_CAST_MODE;
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @return {boolean} Whether or not to hide the cast mode list.
-   * @private
-   */
-  computeCastModeListHidden_: function(view) {
-    return view != media_router.MediaRouterView.CAST_MODE_LIST;
-  },
-
-  /**
-   * @param {!media_router.CastMode} castMode The cast mode to determine an
-   *     icon for.
-   * @return {string} The icon to use.
-   * @private
-   */
-  computeCastModeIcon_: function(castMode) {
-    switch (castMode.type) {
-      case media_router.CastModeType.PRESENTATION:
-        return 'media-router:web';
-      case media_router.CastModeType.TAB_MIRROR:
-        return 'media-router:tab';
-      case media_router.CastModeType.DESKTOP_MIRROR:
-        return 'media-router:laptop';
-      case media_router.CastModeType.LOCAL_FILE:
-        return 'media-router:folder';
-      default:
-        return '';
-    }
-  },
-
-  /**
-   * @param {!Array<!media_router.CastMode>} castModeList The current list of
-   *     cast modes.
-   * @return {!Array<!media_router.CastMode>} The list of PRESENTATION cast
-   *     modes.
-   * @private
-   */
-  computePresentationCastModeList_: function(castModeList) {
-    return castModeList.filter(function(mode) {
-      return mode.type == media_router.CastModeType.PRESENTATION;
-    });
-  },
-
-  /**
-   * @param {!Array<!media_router.Sink>} sinksToShow The list of sinks.
-   * @return {boolean} Whether or not to hide the 'devices missing' message.
-   * @private
-   */
-  computeDeviceMissingHidden_: function(sinksToShow) {
-    return sinksToShow.length != 0;
-  },
-
-  /**
-   * @param {?Element} element Element to compute padding for.
-   * @return {number} Computes the amount of vertical padding (top + bottom) on
-   *     |element|.
-   * @private
-   */
-  computeElementVerticalPadding_: function(element) {
-    var paddingBottom, paddingTop;
-    [paddingBottom, paddingTop] = this.getElementVerticalPadding_(element);
-    return paddingBottom + paddingTop;
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @param {?media_router.Issue} issue The current issue.
-   * @return {boolean} Whether or not to hide the header.
-   * @private
-   */
-  computeHeaderHidden_: function(view, issue) {
-    return view == media_router.MediaRouterView.ROUTE_DETAILS ||
-        (view == media_router.MediaRouterView.SINK_LIST && !!issue &&
-         issue.isBlocking);
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @param {string} headerText The header text for the sink list.
-   * @return {string|undefined} The text for the header.
-   * @private
-   */
-  computeHeaderText_: function(view, headerText) {
-    switch (view) {
-      case media_router.MediaRouterView.CAST_MODE_LIST:
-        return this.i18n('selectCastModeHeaderText');
-      case media_router.MediaRouterView.ISSUE:
-        return this.i18n('issueHeaderText');
-      case media_router.MediaRouterView.ROUTE_DETAILS:
-        return this.currentRoute_ && this.sinkMap_[this.currentRoute_.sinkId] ?
-            this.sinkMap_[this.currentRoute_.sinkId].name :
-            '';
-      case media_router.MediaRouterView.SINK_LIST:
-      case media_router.MediaRouterView.FILTER:
-        return this.headerText;
-      default:
-        return '';
-    }
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @param {string} headerTooltip The tooltip for the header for the sink
-   *     list.
-   * @return {string} The tooltip for the header.
-   * @private
-   */
-  computeHeaderTooltip_: function(view, headerTooltip) {
-    return view == media_router.MediaRouterView.SINK_LIST ? headerTooltip : '';
-  },
-
-  /**
-   * @param {string} currentLaunchingSinkId ID of the sink that is currently
-   *     launching, or empty string if none exists.
-   * @private
-   */
-  computeIsLaunching_: function(currentLaunchingSinkId) {
-    return currentLaunchingSinkId != '';
-  },
-
-  /**
-   * @param {?media_router.Issue} issue The current issue.
-   * @return {string} The class for the issue banner.
-   * @private
-   */
-  computeIssueBannerClass_: function(issue) {
-    return issue && !issue.isBlocking ? 'non-blocking' : '';
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @param {?media_router.Issue} issue The current issue.
-   * @return {boolean} Whether or not to show the issue banner.
-   * @private
-   */
-  computeIssueBannerShown_: function(view, issue) {
-    return !!issue &&
-        (view == media_router.MediaRouterView.CAST_MODE_LIST ||
-         view == media_router.MediaRouterView.SINK_LIST ||
-         view == media_router.MediaRouterView.FILTER ||
-         view == media_router.MediaRouterView.ISSUE);
-  },
-
-  /**
-   * @param {!Array<!{sinkItem: !media_router.Sink,
-   *                  substrings: Array<!Array<number>>}>} searchResultsToShow
-   *     The sinks currently matching the search text.
-   * @param {boolean} isSearchListHidden Whether the search list is hidden.
-   * @return {boolean} Whether or not the 'no matches' message is hidden.
-   * @private
-   */
-  computeNoMatchesHidden_: function(searchResultsToShow, isSearchListHidden) {
-    return isSearchListHidden || this.searchInputText_.length == 0 ||
-        searchResultsToShow.length != 0;
-  },
-
-  /**
-   * @param {!Array<!media_router.CastMode>} castModeList The current list of
-   *     cast modes.
-   * @return {!Array<!media_router.CastMode>} The list of non-PRESENTATION cast
-   *     modes. Also excludes LOCAL_FILE.
-   * @private
-   */
-  computeShareScreenCastModeList_: function(castModeList) {
-    return castModeList.filter(function(mode) {
-      return mode.type == media_router.CastModeType.DESKTOP_MIRROR ||
-          mode.type == media_router.CastModeType.TAB_MIRROR;
-    });
-  },
-
-  /**
-   * @param {!Array<!media_router.CastMode>} castModeList The current list of
-   *     cast modes.
-   * @return {!Array<!media_router.CastMode>} The list of local media cast
-   *     modes.
-   * @private
-   */
-  computeLocalMediaCastModeList_: function(castModeList) {
-    return castModeList.filter(function(mode) {
-      return mode.type == media_router.CastModeType.LOCAL_FILE;
-    });
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @param {?media_router.Issue} issue The current issue.
-   * @return {boolean} Whether or not to hide the route details.
-   * @private
-   */
-  computeRouteDetailsHidden_: function(view, issue) {
-    return view != media_router.MediaRouterView.ROUTE_DETAILS ||
-        (!!issue && issue.isBlocking);
-  },
-
-  /**
-   * Computes an array of substring indices that mark where substrings of
-   * |searchString| occur in |sinkName|.
-   *
-   * @param {string} searchString Search string entered by user.
-   * @param {string} sinkName Sink name being filtered.
-   * @return {Array<!Array<number>>} Array of substring start-end (inclusive)
-   *     index pairs if every character in |searchString| was matched, in order,
-   *     in |sinkName|. Otherwise it returns null.
-   * @private
-   */
-  computeSearchMatches_: function(searchString, sinkName) {
-    var i = 0;
-    var matchStart = -1;
-    var matchEnd = -1;
-    var matchPairs = [];
-    for (var j = 0; i < searchString.length && j < sinkName.length; ++j) {
-      if (searchString[i].toLocaleLowerCase() ==
-          sinkName[j].toLocaleLowerCase()) {
-        if (matchStart == -1) {
-          matchStart = j;
-        }
-        ++i;
-      } else if (matchStart != -1) {
-        matchEnd = j - 1;
-        matchPairs.push([matchStart, matchEnd]);
-        matchStart = -1;
-      }
-    }
-    if (matchStart != -1) {
-      matchEnd = j - 1;
-      matchPairs.push([matchStart, matchEnd]);
-    }
-    return (i == searchString.length) ? matchPairs : null;
-  },
-
-  /**
-   * Computes whether the search results list should be hidden.
-   * @param {!Array<!{sinkItem: !media_router.Sink,
-   *                  substrings: Array<!Array<number>>}>} searchResultsToShow
-   *     The sinks currently matching the search text.
-   * @param {boolean} isSearchListHidden Whether the search list is hidden.
-   * @return {boolean} Whether the search results list should be hidden.
-   * @private
-   */
-  computeSearchResultsHidden_: function(
-      searchResultsToShow, isSearchListHidden) {
-    return isSearchListHidden || searchResultsToShow.length == 0;
-  },
-
-  /**
-   * @param {!Array<!media_router.CastMode>} castModeList The current list of
-   *     cast modes.
-   * @return {boolean} Whether or not to hide the share screen subheading text.
-   * @private
-   */
-  computeShareScreenSubheadingHidden_: function(castModeList) {
-    return this.computeShareScreenCastModeList_(castModeList).length == 0;
-  },
-
-  /**
-   * @param {!Array<!media_router.CastMode>} castModeList The current list of
-   *     cast modes.
-   * @return {boolean} Whether or not to hide the local media subheading text.
-   * @private
-   */
-  computeLocalMediaSubheadingHidden_: function(castModeList) {
-    return this.computeLocalMediaCastModeList_(castModeList).length == 0;
-  },
-
-  /**
-   * @param {boolean} showFirstRunFlow Whether or not to show the first run
-   *     flow.
-   * @param {?media_router.MediaRouterView} currentView The current view.
-   * @private
-   */
-  computeShowFirstRunFlow_: function(showFirstRunFlow, currentView) {
-    return showFirstRunFlow &&
-        currentView == media_router.MediaRouterView.SINK_LIST;
-  },
-
-  /**
-   * @param {!media_router.Sink} sink The sink to determine an icon for.
-   * @return {string} The icon to use.
-   * @private
-   */
-  computeSinkIcon_: function(sink) {
-    switch (sink.iconType) {
-      case media_router.SinkIconType.CAST:
-        return 'media-router:chromecast';
-      case media_router.SinkIconType.CAST_AUDIO_GROUP:
-        return 'media-router:speaker-group';
-      case media_router.SinkIconType.CAST_AUDIO:
-        return 'media-router:speaker';
-      case media_router.SinkIconType.MEETING:
-        return 'media-router:meeting';
-      case media_router.SinkIconType.HANGOUT:
-        return 'media-router:hangout';
-      case media_router.SinkIconType.EDUCATION:
-        return 'media-router:education';
-      case media_router.SinkIconType.WIRED_DISPLAY:
-        return 'media-router:tv';
-      case media_router.SinkIconType.GENERIC:
-        return 'media-router:tv';
-      default:
-        return 'media-router:tv';
-    }
-  },
-
-  /**
-   * @param {!string} sinkId A sink ID.
-   * @param {!Object<!string, ?media_router.Route>} sinkToRouteMap
-   *     Maps media_router.Sink.id to corresponding media_router.Route.
-   * @return {string} The class for the sink icon.
-   * @private
-   */
-  computeSinkIconClass_: function(sinkId, sinkToRouteMap) {
-    return sinkToRouteMap[sinkId] ? 'sink-icon active-sink' : 'sink-icon';
-  },
-
-  /**
-   * @param {!string} currentLaunchingSinkId The ID of the sink that is
-   *     currently launching.
-   * @param {!string} sinkId A sink ID.
-   * @return {boolean} |true| if given sink is currently launching.
-   * @private
-   */
-  computeSinkIsLaunching_: function(currentLaunchingSinkId, sinkId) {
-    return currentLaunchingSinkId == sinkId;
-  },
-
-  /**
-   * @param {!Array<!media_router.Sink>} sinksToShow The list of sinks.
-   * @return {boolean} Whether or not to hide the sink list.
-   * @private
-   */
-  computeSinkListHidden_: function(sinksToShow) {
-    return sinksToShow.length == 0;
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @param {?media_router.Issue} issue The current issue.
-   * @return {boolean} Whether or not to hide entire the sink list view.
-   * @private
-   */
-  computeSinkListViewHidden_: function(view, issue) {
-    return (view != media_router.MediaRouterView.SINK_LIST &&
-            view != media_router.MediaRouterView.FILTER) ||
-        (!!issue && issue.isBlocking);
-  },
-
-  /**
-   * Returns whether the sink domain for |sink| should be hidden.
-   * @param {!media_router.Sink} sink
-   * @return {boolean} |true| if the domain should be hidden.
-   * @private
-   */
-  computeSinkDomainHidden_: function(sink) {
-    return !this.showDomain || this.isEmptyOrWhitespace_(sink.domain);
-  },
-
-  /**
-   * Computes which portions of a sink name, if any, should be highlighted when
-   * displayed in the filter view. Any substrings matching the search text
-   * should be highlighted.
-   *
-   * The order the strings are combined is plainText[0] highlightedText[0]
-   * plainText[1] highlightedText[1] etc.
-   *
-   * @param {!{sinkItem: !media_router.Sink,
-   *           substrings: !Array<!Array<number>>}} matchedItem
-   * Parameters in matchedItem:
-   *   sinkItem - Original !media_router.Sink from the sink list.
-   *   substrings - List of index pairs denoting substrings of sinkItem.name
-   *       that match |searchInputText_|.
-   * @return {!{highlightedText: !Array<string>, plainText: !Array<string>}}
-   *   highlightedText - Array of strings that should be displayed highlighted.
-   *   plainText - Array of strings that should be displayed normally.
-   * @private
-   */
-  computeSinkMatchingText_: function(matchedItem) {
-    if (!matchedItem.substrings) {
-      return {highlightedText: [null], plainText: [matchedItem.sinkItem.name]};
-    }
-    var lastMatchIndex = -1;
-    var nameIndex = 0;
-    var sinkName = matchedItem.sinkItem.name;
-    var highlightedText = [];
-    var plainText = [];
-    for (var i = 0; i < matchedItem.substrings.length; ++i) {
-      var [matchStart, matchEnd] = matchedItem.substrings[i];
-      if (lastMatchIndex + 1 < matchStart) {
-        plainText.push(sinkName.substring(lastMatchIndex + 1, matchStart));
-      } else {
-        plainText.push(null);
-      }
-      highlightedText.push(sinkName.substring(matchStart, matchEnd + 1));
-      lastMatchIndex = matchEnd;
-    }
-    if (lastMatchIndex + 1 < sinkName.length) {
-      highlightedText.push(null);
-      plainText.push(sinkName.substring(lastMatchIndex + 1));
-    }
-    return {highlightedText: highlightedText, plainText: plainText};
-  },
-
-  /**
-   * Returns the subtext to be shown for |sink|. Only called if
-   * |computeSinkSubtextHidden_| returns false for the same |sink| and
-   * |sinkToRouteMap|.
-   * @param {!media_router.Sink} sink
-   * @param {!Object<!string, ?media_router.Route>} sinkToRouteMap
-   * @return {?string} The subtext to be shown.
-   * @private
-   */
-  computeSinkSubtext_: function(sink, sinkToRouteMap) {
-    var route = sinkToRouteMap[sink.id];
-    if (route && !this.isEmptyOrWhitespace_(route.description)) {
-      return route.description;
-    }
-
-    return sink.description;
-  },
-
-  /**
-   * Returns whether the sink subtext for |sink| should be hidden.
-   * @param {!media_router.Sink} sink
-   * @param {!Object<!string, ?media_router.Route>} sinkToRouteMap
-   * @return {boolean} |true| if the subtext should be hidden.
-   * @private
-   */
-  computeSinkSubtextHidden_: function(sink, sinkToRouteMap) {
-    if (!this.isEmptyOrWhitespace_(sink.description)) {
-      return false;
-    }
-
-    var route = sinkToRouteMap[sink.id];
-    return !route || this.isEmptyOrWhitespace_(route.description);
-  },
-
-  /**
-   * @param {boolean} justOpened Whether the MR UI was just opened.
-   * @return {boolean} Whether or not to hide the spinner.
-   * @private
-   */
-  computeSpinnerHidden_: function(justOpened) {
-    return !justOpened;
-  },
-
-  /**
-   * Computes the height of the sink list view element when search results are
-   * being shown.
-   *
-   * @param {?Element} deviceMissing No devices message element.
-   * @param {?Element} noMatches No search matches element.
-   * @param {?Element} results Search results list element.
-   * @param {number} searchOffsetHeight Search input container element height.
-   * @param {number} maxHeight Max height of the list elements.
-   * @return {number} The height of the sink list view when search results are
-   *     being shown.
-   * @private
-   */
-  computeTotalSearchHeight_: function(
-      deviceMissing, noMatches, results, searchOffsetHeight, maxHeight) {
-    var contentHeight = deviceMissing.offsetHeight +
-        ((noMatches.hasAttribute('hidden')) ? results.offsetHeight :
-                                              noMatches.offsetHeight);
-    return Math.min(contentHeight, maxHeight) + searchOffsetHeight;
-  },
-
-  /**
-   * Updates element positioning when the view changes and possibly triggers
-   * reporting of a user filter action. If there is no filter text, it defers
-   * the reporting until some text is entered, but otherwise it reports the
-   * filter action here.
-   * @param {?media_router.MediaRouterView} currentView The current view of the
-   *     dialog.
-   * @param {?media_router.MediaRouterView} previousView The previous
-   *     |currentView|.
-   * @private
-   */
-  currentViewChanged_: function(currentView, previousView) {
-    if (currentView == media_router.MediaRouterView.FILTER) {
-      this.reportFilterOnInput_ = true;
-      this.maybeReportFilter_();
-    }
-    this.updateElementPositioning_();
-
-    if (previousView == media_router.MediaRouterView.ROUTE_DETAILS) {
-      media_router.browserApi.onMediaControllerClosed();
-      if (this.$$('route-details')) {
-        this.$$('route-details').onClosed();
-      }
-    }
-  },
-
-  /**
-   * Filters all sinks based on fuzzy matching to the currently entered search
-   * text.
-   * @param {string} searchInputText The currently entered search text.
-   * @private
-   */
-  filterSinks_: function(searchInputText) {
-    if (searchInputText.length == 0) {
-      this.searchResultsToShow_ = this.sinksToShow_.map(function(item) {
-        return {sinkItem: item, substrings: null};
-      });
-      return;
-    }
-
-    var searchResultsToShow = [];
-    for (var i = 0; i < this.sinksToShow_.length; ++i) {
-      var matchSubstrings = this.computeSearchMatches_(
-          searchInputText, this.sinksToShow_[i].name);
-      if (!matchSubstrings) {
-        continue;
-      }
-      searchResultsToShow.push(
-          {sinkItem: this.sinksToShow_[i], substrings: matchSubstrings});
-    }
-    searchResultsToShow.sort(this.compareSearchMatches_);
-
-    var pendingPseudoSink = (this.pseudoSinkSearchState_) ?
-        this.pseudoSinkSearchState_.getPseudoSink() :
-        null;
-    // We may need to add pseudo sinks to the filter results. A pseudo sink will
-    // be shown if there is no real sink with the same icon and name exactly
-    // matching the filter text. The map() call transforms any pseudo sink
-    // objects that will be shown to the search result format, where we know
-    // that the entire sink name will be a match.
-    //
-    // The exception to this is when there is a pending pseudo sink search. Then
-    // the pseudo sink for the search will be treated like a real sink because
-    // it will actually be in |sinksToShow_| until a real sink is returned by
-    // search. So the filter here shouldn't treat it like a pseudo sink.
-    searchResultsToShow =
-        this.pseudoSinks_
-            .filter(function(pseudoSink) {
-              return (!pendingPseudoSink ||
-                      pseudoSink.id != pendingPseudoSink.id) &&
-                  !searchResultsToShow.find(function(searchResult) {
-                    return searchResult.sinkItem.name == searchInputText &&
-                        searchResult.sinkItem.iconType == pseudoSink.iconType;
-                  });
-            })
-            .map(function(pseudoSink) {
-              pseudoSink.name = searchInputText;
-              return {
-                sinkItem: pseudoSink,
-                substrings: [[0, searchInputText.length - 1]]
-              };
-            })
-            .concat(searchResultsToShow);
-    this.searchResultsToShow_ = searchResultsToShow;
-  },
-
-  /**
-   * Helper function to locate the CastMode object with the given type in
-   * castModeList.
-   *
-   * @param {number} castModeType Type of cast mode to look for.
-   * @return {media_router.CastMode|undefined} CastMode object with the given
-   *     type in castModeList, or undefined if not found.
-   * @private
-   */
-  findCastModeByType_: function(castModeType) {
-    return this.castModeList.find(function(element, index, array) {
-      return element.type == castModeType;
-    });
-  },
-
-  /**
-   * Helper function to locate the position in the |castModeList| of the
-   * CastMode object with the given type.
-   *
-   * @param {number} castModeType Type of cast mode to look for.
-   * @return {number} index of the given type, or -1 if not found.
-   * @private
-   */
-  findCastModeIndexByType_: function(castModeType) {
-    return this.castModeList
-        .map(function(element) {
-          return element.type;
-        })
-        .indexOf(castModeType);
-  },
-
-
-  /**
-   * Helper function to return a forced CastMode, if any.
-   *
-   * @return {media_router.CastMode|undefined} CastMode object with
-   *     isForced = true, or undefined if not found.
-   * @private
-   */
-  findForcedCastMode_: function() {
-    return this.castModeList &&
-        this.castModeList.find(element => element.isForced);
-  },
-
-  /**
-   * @param {?Element} element Element to compute padding for.
-   * @return {!Array<number>} Array containing the element's bottom padding
-   *     value and the element's top padding value, in that order.
-   * @private
-   */
-  getElementVerticalPadding_: function(element) {
-    var style = window.getComputedStyle(element);
-    return [
-      parseInt(style.getPropertyValue('padding-bottom'), 10) || 0,
-      parseInt(style.getPropertyValue('padding-top'), 10) || 0
-    ];
-  },
-
-  /**
-   * Retrieves the first run flow cloud preferences text, if it exists. On
-   * non-officially branded builds, the string is not defined.
-   *
-   * @return {string} Cloud preferences text.
-   */
-  getFirstRunFlowCloudPrefText_: function() {
-    return loadTimeData.valueExists('firstRunFlowCloudPrefText') ?
-        this.i18n('firstRunFlowCloudPrefText') :
-        '';
-  },
-
-  /**
-   * @param {?media_router.Route} route Route to get the sink for.
-   * @return {?media_router.Sink} Sink associated with |route| or
-   *     undefined if we don't have data for the sink.
-   */
-  getSinkForRoute_: function(route) {
-    return route ? this.sinkMap_[route.sinkId] : null;
-  },
-
-  /**
-   * @param {?Element} element Conditionally-templated element to check.
-   * @return {boolean} Whether |element| is considered present in the document
-   *     as a conditionally-templated element. This does not check the |hidden|
-   *     attribute.
-   */
-  hasConditionalElement_: function(element) {
-    return !!element &&
-        (!element.style.display || element.style.display != 'none');
-  },
-
-  /**
-   * Returns whether given string is undefined, null, empty, or whitespace only.
-   * @param {?string} str String to be tested.
-   * @return {boolean} |true| if the string is undefined, null, empty, or
-   *     whitespace.
-   * @private
-   */
-  isEmptyOrWhitespace_: function(str) {
-    return str === undefined || str === null || (/^\s*$/).test(str);
-  },
-
-  /**
-   * Reports a user filter action if |searchInputText_| is not empty and the
-   * filter action hasn't been reported since the view changed to the filter
-   * view.
-   * @private
-   */
-  maybeReportFilter_: function() {
-    if (this.reportFilterOnInput_ && this.searchInputText_.length != 0) {
-      this.reportFilterOnInput_ = false;
-      this.fire('report-filter');
-    }
-  },
-
-  /**
-   * Updates |currentView_| if the dialog had just opened and there's
-   * only one local route.
-   */
-  maybeShowRouteDetailsOnOpen: function() {
-    var localRoute = null;
-    for (var i = 0; i < this.routeList.length; i++) {
-      var route = this.routeList[i];
-      if (!route.isLocal) {
-        continue;
-      }
-      if (!localRoute) {
-        localRoute = route;
-      } else {
-        // Don't show route details if there are more than one local route.
-        localRoute = null;
-        break;
-      }
-    }
-
-    if (localRoute) {
-      this.showRouteDetails_(localRoute);
-    }
-    this.fire('show-initial-state', {currentView: this.currentView_});
-  },
-
-  /**
-   * Updates |currentView_| if there is a new blocking issue or a blocking
-   * issue is resolved. Clears any pending route creation properties if the
-   * issue corresponds with |pendingCreatedRouteId_|.
-   *
-   * @param {?media_router.Issue} issue The new issue, or null if the
-   *                              blocking issue was resolved.
-   * @private
-   */
-  maybeShowIssueView_: function(issue) {
-    if (issue) {
-      if (issue.isBlocking) {
-        this.currentView_ = media_router.MediaRouterView.ISSUE;
-      } else if (this.currentView_ == media_router.MediaRouterView.SINK_LIST) {
-        // Make space for the non-blocking issue in the sink list.
-        this.updateElementPositioning_();
-      }
-    } else if (this.currentView_ == media_router.MediaRouterView.ISSUE) {
-      // Switch back to the sink list if the issue was cleared and it was
-      // showing an issue. It is expected that the only way to clear an issue is
-      // by user action; the IssueManager (C++ side) does not clear issues in
-      // the UI.
-      this.showSinkList_();
-    }
-
-    if (this.pendingCreatedRouteId_ && issue &&
-        issue.routeId == this.pendingCreatedRouteId_) {
-      this.resetRouteCreationProperties_(false);
-    }
-  },
-
-  /**
-   * If an element in the search results list has keyboard focus when we are
-   * transitioning from the filter view to the sink list view, give focus to the
-   * same sink in the sink list. Otherwise we leave the keyboard focus where it
-   * is.
-   * @private
-   */
-  maybeUpdateFocusOnFilterViewExit_: function() {
-    var searchSinks =
-        this.$$('#search-results').querySelectorAll('.selectable-item');
-    var focusedElem = Array.prototype.find.call(searchSinks, function(sink) {
-      return sink.matches(':focus');
-    });
-    if (!focusedElem) {
-      return;
-    }
-    var focusedSink =
-        this.$$('#searchResults').itemForElement(focusedElem).sinkItem;
-    setTimeout(function() {
-      var sinkListPaperMenu = this.$$('#sink-list-paper-menu');
-      var sinks = sinkListPaperMenu.children;
-      var sinkList = this.$$('#sinkList');
-      for (var i = 0; i < sinks.length; i++) {
-        if (sinkList.itemForElement(sinks[i]).id == focusedSink.id) {
-          sinkListPaperMenu.selectIndex(i);
-          break;
-        }
-      }
-    }.bind(this));
-  },
-
-  /**
-   * May update |populatedSinkListSeenTimeMs_| depending on |currentView| and
-   * |sinksToShow|.
-   * Called when |currentView_| or |sinksToShow_| is updated.
-   *
-   * @param {?media_router.MediaRouterView} currentView The current view of the
-   *                                        dialog.
-   * @param {!Array<!media_router.Sink>} sinksToShow The sinks to display.
-   * @private
-   */
-  maybeUpdateStartSinkDisplayStartTime_: function(currentView, sinksToShow) {
-    if (currentView == media_router.MediaRouterView.SINK_LIST &&
-        sinksToShow.length != 0) {
-      // Only set |populatedSinkListSeenTimeMs_| if it has not already been set.
-      if (this.populatedSinkListSeenTimeMs_ == -1) {
-        this.populatedSinkListSeenTimeMs_ = window.performance.now();
-      }
-    } else {
-      // Reset |populatedSinkListLastSeen_| if the sink list isn't being shown
-      // or if there aren't any sinks available for display.
-      this.populatedSinkListSeenTimeMs_ = -1;
-    }
-  },
-
-  /**
-   * Animates the transition from the filter view, where the search field is at
-   * the top of the list, to the sink list view, where the search field is at
-   * the bottom of the list.
-   *
-   * If this is called while another animation is in progress, it queues itself
-   * to be run at the end of the current animation.
-   *
-   * @param {!function()} resolve Resolves the animation promise that is waiting
-   *     on this animation.
-   * @private
-   */
-  moveSearchToBottom_: function(resolve) {
-    var deviceMissing = this.$['device-missing'];
-    var list = this.$$('#sink-list');
-    var resultsContainer = this.$$('#search-results-container');
-    var search = this.$$('#sink-search');
-    var view = this.$['sink-list-view'];
-
-    var hasList = this.hasConditionalElement_(list);
-    var initialHeight = view.offsetHeight;
-    // Force the view height to be max dialog height.
-    view.style['overflow'] = 'hidden';
-
-    var searchInitialOffsetHeight = search.offsetHeight;
-    var searchInitialPaddingBottom, searchInitialPaddingTop;
-    [searchInitialPaddingBottom, searchInitialPaddingTop] =
-        this.getElementVerticalPadding_(search);
-    var searchPadding = searchInitialPaddingBottom + searchInitialPaddingTop;
-    var searchHeight = search.offsetHeight - searchPadding;
-    var searchFinalPaddingBottom, searchFinalPaddingTop;
-    [searchFinalPaddingBottom, searchFinalPaddingTop] =
-        this.getElementVerticalPadding_(search);
-    var searchFinalOffsetHeight =
-        searchHeight + searchFinalPaddingBottom + searchFinalPaddingTop;
-
-    var resultsInitialTop = 0;
-    var finalHeight = 0;
-    // Get final view height ahead of animation.
-    if (hasList) {
-      list.style['position'] = 'absolute';
-      list.style['opacity'] = '0';
-      this.hideSinkListForAnimation_ = false;
-      finalHeight += list.offsetHeight;
-      list.style['position'] = 'relative';
-    } else {
-      resultsInitialTop +=
-          deviceMissing.offsetHeight + searchInitialOffsetHeight;
-      finalHeight += deviceMissing.offsetHeight;
-    }
-
-    var searchInitialTop = hasList ? 0 : deviceMissing.offsetHeight;
-    var searchFinalTop = hasList ? list.offsetHeight - search.offsetHeight :
-                                   deviceMissing.offsetHeight;
-    resultsContainer.style['position'] = 'absolute';
-
-    var duration =
-        this.computeAnimationDuration_(searchFinalTop - searchInitialTop);
-    var timing = {duration: duration, easing: 'ease-in-out', fill: 'forwards'};
-
-    // This GroupEffect does the reverse of |moveSearchToTop_|. It fades the
-    // sink list in while sliding the search input and search results list down.
-    // The dialog height is also adjusted smoothly to the sink list height.
-    var deviceMissingEffect = new KeyframeEffect(
-        deviceMissing,
-        [
-          {'marginBottom': searchInitialOffsetHeight},
-          {'marginBottom': searchFinalOffsetHeight}
-        ],
-        timing);
-    var listEffect =
-        new KeyframeEffect(list, [{'opacity': '0'}, {'opacity': '1'}], timing);
-    var resultsEffect = new KeyframeEffect(
-        resultsContainer,
-        [
-          {
-            'top': resultsInitialTop + 'px',
-            'paddingTop': resultsContainer.style['padding-top']
-          },
-          {'top': '100%', 'paddingTop': '0px'}
-        ],
-        timing);
-    var searchEffect = new KeyframeEffect(
-        search,
-        [
-          {
-            'top': searchInitialTop + 'px',
-            'marginTop': '0px',
-            'paddingBottom': searchInitialPaddingBottom + 'px',
-            'paddingTop': searchInitialPaddingTop + 'px'
-          },
-          {
-            'top': '100%',
-            'marginTop': '-' + searchFinalOffsetHeight + 'px',
-            'paddingBottom': searchFinalPaddingBottom + 'px',
-            'paddingTop': searchFinalPaddingTop + 'px'
-          }
-        ],
-        timing);
-    var viewEffect = new KeyframeEffect(
-        view,
-        [
-          {'height': initialHeight + 'px', 'paddingBottom': '0px'}, {
-            'height': finalHeight + 'px',
-            'paddingBottom': searchFinalOffsetHeight + 'px'
-          }
-        ],
-        timing);
-    var player = document.timeline.play(new GroupEffect(
-        hasList ?
-            [listEffect, resultsEffect, searchEffect, viewEffect] :
-            [deviceMissingEffect, resultsEffect, searchEffect, viewEffect]));
-
-    var that = this;
-    var finalizeAnimation = function() {
-      view.style['overflow'] = '';
-      that.putSearchAtBottom_();
-      that.filterTransitionPlayer_.cancel();
-      that.filterTransitionPlayer_ = null;
-      that.isSearchListHidden_ = true;
-      resolve();
-    };
-
-    player.finished.then(finalizeAnimation);
-    this.filterTransitionPlayer_ = player;
-  },
-
-  /**
-   * Animates the transition from the sink list view, where the search field is
-   * at the bottom of the list, to the filter view, where the search field is at
-   * the top of the list.
-   *
-   * If this is called while another animation is in progress, it queues itself
-   * to be run at the end of the current animation.
-   *
-   * @param {!function()} resolve Resolves the animation promise that is waiting
-   *     on this animation.
-   * @private
-   */
-  moveSearchToTop_: function(resolve) {
-    var deviceMissing = this.$['device-missing'];
-    var list = this.$$('#sink-list');
-    var noMatches = this.$$('#no-search-matches');
-    var results = this.$$('#search-results');
-    var resultsContainer = this.$$('#search-results-container');
-    var search = this.$$('#sink-search');
-    var view = this.$['sink-list-view'];
-
-    // Set the max height for the results list before it's shown.
-    results.style.maxHeight = this.sinkListMaxHeight_ + 'px';
-
-    // Saves current search container |offsetHeight| which includes bottom
-    // padding.
-    var searchInitialOffsetHeight = search.offsetHeight;
-    var hasList = this.hasConditionalElement_(list);
-    var searchInitialTop = hasList ?
-        list.offsetHeight - searchInitialOffsetHeight :
-        deviceMissing.offsetHeight;
-    var searchFinalTop = hasList ? 0 : deviceMissing.offsetHeight;
-    var searchInitialPaddingBottom, searchInitialPaddingTop;
-    [searchInitialPaddingBottom, searchInitialPaddingTop] =
-        this.getElementVerticalPadding_(search);
-    var searchPadding = searchInitialPaddingBottom + searchInitialPaddingTop;
-    var searchHeight = search.offsetHeight - searchPadding;
-    var searchFinalPaddingBottom, searchFinalPaddingTop;
-    [searchFinalPaddingBottom, searchFinalPaddingTop] =
-        this.getElementVerticalPadding_(search);
-    var searchFinalOffsetHeight =
-        searchHeight + searchFinalPaddingBottom + searchFinalPaddingTop;
-
-    // Omitting |search.offsetHeight| because it is handled by view animation
-    // separately.
-    var initialHeight =
-        hasList ? list.offsetHeight : deviceMissing.offsetHeight;
-    view.style['overflow'] = 'hidden';
-
-    var resultsPadding = this.computeElementVerticalPadding_(results);
-    var finalHeight = this.computeTotalSearchHeight_(
-        deviceMissing, noMatches, results, searchFinalOffsetHeight,
-        this.sinkListMaxHeight_ + resultsPadding);
-
-    var duration =
-        this.computeAnimationDuration_(searchFinalTop - searchInitialTop);
-    var timing = {duration: duration, easing: 'ease-in-out', fill: 'forwards'};
-
-    // This GroupEffect will cause the sink list to fade out while the search
-    // input and search results list slide up. The dialog will also resize
-    // smoothly to the new search result list height.
-    var deviceMissingEffect = new KeyframeEffect(
-        deviceMissing,
-        [
-          {'marginBottom': searchInitialOffsetHeight},
-          {'marginBottom': searchFinalOffsetHeight}
-        ],
-        timing);
-    var listEffect =
-        new KeyframeEffect(list, [{'opacity': '1'}, {'opacity': '0'}], timing);
-    var resultsEffect = new KeyframeEffect(
-        resultsContainer,
-        [
-          {'top': '100%', 'paddingTop': '0px'}, {
-            'top': searchFinalTop + 'px',
-            'paddingTop': searchFinalOffsetHeight + 'px'
-          }
-        ],
-        timing);
-    var searchEffect = new KeyframeEffect(
-        search,
-        [
-          {
-            'top': '100%',
-            'marginTop': '-' + searchInitialOffsetHeight + 'px',
-            'paddingBottom': searchInitialPaddingBottom + 'px',
-            'paddingTop': searchInitialPaddingTop + 'px'
-          },
-          {
-            'top': searchFinalTop + 'px',
-            'marginTop': '0px',
-            'paddingBottom': searchFinalPaddingBottom + 'px',
-            'paddingTop': searchFinalPaddingTop + 'px'
-          }
-        ],
-        timing);
-    var viewEffect = new KeyframeEffect(
-        view,
-        [
-          {
-            'height': initialHeight + 'px',
-            'paddingBottom': searchInitialOffsetHeight + 'px'
-          },
-          {'height': finalHeight + 'px', 'paddingBottom': '0px'}
-        ],
-        timing);
-    var player = document.timeline.play(new GroupEffect(
-        hasList ?
-            [listEffect, resultsEffect, searchEffect, viewEffect] :
-            [deviceMissingEffect, resultsEffect, searchEffect, viewEffect]));
-
-    var that = this;
-    var finalizeAnimation = function() {
-      // When we are moving the search results up into view, the user may type
-      // more text or delete text which may change the height of the search
-      // results list. In this case, the dialog height that the animation ends
-      // on will now be wrong. In order to correct this smoothly,
-      // |putSearchAtTop_| will queue another animation just to adjust the
-      // dialog height.
-      //
-      // The |filterTransitionPlayer_| will hold all of the animated elements in
-      // their final keyframe state until it is canceled or another player
-      // overrides it because we used |fill: 'forwards'| in all of the effects.
-      // So unlike |moveSearchToBottom_|, we don't know for sure whether we want
-      // to cancel |filterTransitionPlayer_| after |putSearchAtTop_| because
-      // another animation may have been run to correct the dialog height.
-      //
-      // If |putSearchAtTop_| has to adjust the dialog height, it also queues
-      // itself to run again when that animation is finished. When the height is
-      // finally correct at the end of an animation, it will cancel
-      // |filterTransitionPlayer_| itself.
-      that.putSearchAtTop_(resolve);
-    };
-
-    player.finished.then(finalizeAnimation);
-    this.filterTransitionPlayer_ = player;
-  },
-
-  /**
-   * Handles a cast mode selection. Updates |headerText|, |headerTextTooltip|,
-   * and |shownCastModeValue_|.
-   *
-   * @param {!Event} event The event object.
-   * @private
-   */
-  onCastModeClick_: function(event) {
-    // The clicked cast mode can come from one of three lists,
-    // presentationCastModeList, shareScreenCastModeList, and
-    // localMediaCastModeList.
-    var clickedMode =
-        this.$$('#presentationCastModeList').itemForElement(event.target) ||
-        this.$$('#shareScreenCastModeList').itemForElement(event.target) ||
-        this.$$('#localMediaCastModeList').itemForElement(event.target);
-
-    if (!clickedMode) {
-      return;
-    }
-
-    // If the user selects LOCAL_FILE, some additional steps are required
-    // (selecting the file), before the cast mode has been officially
-    // selected.
-    if (clickedMode.type == media_router.CastModeType.LOCAL_FILE) {
-      this.selectLocalMediaFile_();
-    } else {
-      this.castModeSelected_(clickedMode);
-    }
-  },
-
-  /**
-   * Handles a change-route-source-click event. Sets the currently launching
-   * sink to be the current route's sink and shows the sink list.
-   *
-   * @param {!Event} event The event object.
-   * Parameters in |event|.detail:
-   *   route - route to modify.
-   *   selectedCastMode - cast mode to use for the new source.
-   * @private
-   */
-  onChangeRouteSourceClick_: function(event) {
-    /** @type {{route: !media_router.Route, selectedCastMode: number}} */
-    var detail = event.detail;
-    this.currentLaunchingSinkId_ = detail.route.sinkId;
-    var sink = this.sinkMap_[detail.route.sinkId];
-    this.showSinkList_();
-    this.maybeReportUserFirstAction(
-        media_router.MediaRouterUserAction.REPLACE_LOCAL_ROUTE);
-  },
-
-  /**
-   * Handles a close-route event. Shows the sink list and starts a timer to
-   * close the dialog if there is no click within three seconds.
-   *
-   * @param {!Event} event The event object.
-   * Parameters in |event|.detail:
-   *   route - route to close.
-   * @private
-   */
-  onCloseRoute_: function(event) {
-    /** @type {{route: media_router.Route}} */
-    var detail = event.detail;
-    this.showSinkList_();
-    this.startTapTimer_();
-
-    if (detail.route.isLocal) {
-      this.maybeReportUserFirstAction(
-          media_router.MediaRouterUserAction.STOP_LOCAL);
-    }
-  },
-
-  /**
-   * Handles response of previous create route attempt.
-   *
-   * @param {string} sinkId The ID of the sink to which the Media Route was
-   *     creating a route.
-   * @param {?media_router.Route} route The newly created route that
-   *     corresponds to the sink if route creation succeeded; null otherwise.
-   * @param {boolean} isForDisplay Whether or not |route| is for display.
-   */
-  onCreateRouteResponseReceived: function(sinkId, route, isForDisplay) {
-    // The provider will handle sending an issue for a failed route request.
-    if (!route) {
-      this.resetRouteCreationProperties_(false);
-      this.fire('report-resolved-route', {
-        outcome: media_router.MediaRouterRouteCreationOutcome.FAILURE_NO_ROUTE
-      });
-      return;
-    }
-
-    // Check that |sinkId| exists and corresponds to |currentLaunchingSinkId_|.
-    if (!this.sinkMap_[sinkId] || this.currentLaunchingSinkId_ != sinkId) {
-      this.fire('report-resolved-route', {
-        outcome:
-            media_router.MediaRouterRouteCreationOutcome.FAILURE_INVALID_SINK
-      });
-      return;
-    }
-
-    // Regardless of whether the route is for display, it was resolved
-    // successfully.
-    this.fire(
-        'report-resolved-route',
-        {outcome: media_router.MediaRouterRouteCreationOutcome.SUCCESS});
-
-    if (isForDisplay) {
-      this.showRouteDetails_(route);
-      this.startTapTimer_();
-      this.resetRouteCreationProperties_(true);
-    } else {
-      this.pendingCreatedRouteId_ = route.id;
-    }
-  },
-
-  /**
-   * Sets up the LOCAL_FILE cast mode for display after a specific file has been
-   * selected.
-   *
-   * @param {string} fileName The name of the file that has been selected.
-   */
-  onFileDialogSuccess(fileName) {
-    /** @const */ var mode =
-        this.findCastModeByType_(media_router.CastModeType.LOCAL_FILE);
-
-    if (!mode) {
-      return;
-    }
-
-    this.castModeSelected_(mode);
-    this.headerText =
-        loadTimeData.getStringF('castLocalMediaSelectedFileTitle', fileName);
-
-    this.updateSelectedCastModeMenuItem_();
-  },
-
-  /**
-   * Called when a focus event is triggered.
-   *
-   * @param {!Event} event The event object.
-   * @private
-   */
-  onFocus_: function(event) {
-    // If the focus event was automatically fired by Polymer, remove focus from
-    // the element. This prevents unexpected focusing when the dialog is
-    // initially loaded. This only happens on mac.
-    if (cr.isMac && !event.sourceCapabilities) {
-      // Adding a focus placeholder element is part of the workaround for
-      // handling unexpected focusing, which only happens once on dialog open.
-      // Since the placeholder is focus-enabled as denoted by its tabindex
-      // value, the focus will not appear in other elements.
-      var placeholder = this.$$('#focus-placeholder');
-      // Check that the placeholder is the currently focused element. In some
-      // tests, other elements are non-user-triggered focused.
-      if (placeholder && this.shadowRoot.activeElement == placeholder) {
-        event.path[0].blur();
-        // Remove the placeholder since we have no more use for it.
-        placeholder.remove();
-      }
-    }
-  },
-
-  /**
-   * Called when a keydown event is fired.
-   * @param {!Event} e Keydown event object for the event.
-   */
-  onKeydown_: function(e) {
-    // The ESC key may be pressed with a combination of other keys. It is
-    // handled on the C++ side instead of the JS side on non-mac platforms,
-    // which uses toolkit-views. Handle the expected behavior on all platforms
-    // here.
-    if (e.key == media_router.KEY_ESC && !e.shiftKey && !e.ctrlKey &&
-        !e.altKey && !e.metaKey) {
-      // When searching, allow ESC as a mechanism to leave the filter view.
-      if (this.currentView_ == media_router.MediaRouterView.FILTER) {
-        // If the user tabbed to an item in the search results, or otherwise has
-        // an item in the list focused, focus will seem to vanish when we
-        // transition back to the sink list. Instead we should move focus to the
-        // appropriate item in the sink list.
-        this.maybeUpdateFocusOnFilterViewExit_();
-        this.showSinkList_();
-        e.preventDefault();
-      } else {
-        this.fire('close-dialog', {
-          pressEscToClose: true,
-        });
-      }
-    }
-  },
-
-  /**
-   * Called when a mouseleave event is triggered.
-   *
-   * @private
-   */
-  onMouseLeave_: function() {
-    this.mouseIsPositionedOverDialog_ = false;
-  },
-
-  /**
-   * Called when a mouseenter event is triggered.
-   *
-   * @private
-   */
-  onMouseEnter_: function() {
-    this.mouseIsPositionedOverDialog_ = true;
-  },
-
-  /**
-   * Called when a search has completed up to route creation. |sinkId|
-   * identifies the sink that should be in |allSinks|, if a sink was found.
-   *
-   * @param {string} sinkId The ID of the sink that is the result of the
-   *     currently pending search.
-   */
-  onReceiveSearchResult: function(sinkId) {
-    this.pseudoSinkSearchState_.receiveSinkResponse(sinkId);
-    this.currentLaunchingSinkId_ =
-        this.pseudoSinkSearchState_.checkForRealSink(this.allSinks);
-    this.rebuildSinksToShow_();
-    // If we're in filter view, make sure the |sinksToShow_| change is picked
-    // up.
-    if (this.currentView_ == media_router.MediaRouterView.FILTER) {
-      this.filterSinks_(this.searchInputText_);
-    }
-  },
-
-  /**
-   * Called when the connection to the route controller is invalidated. Switches
-   * from route details view to the sink list view.
-   */
-  onRouteControllerInvalidated: function() {
-    if (this.currentView_ == media_router.MediaRouterView.ROUTE_DETAILS) {
-      this.currentRoute_ = null;
-      this.showSinkList_();
-    }
-  },
-
-  /**
-   * Called when a sink is clicked.
-   *
-   * @param {!Event} event The event object.
-   * @private
-   */
-  onSinkClick_: function(event) {
-    var clickedSink =
-        (this.currentView_ == media_router.MediaRouterView.FILTER) ?
-        this.$$('#searchResults').itemForElement(event.target).sinkItem :
-        this.$$('#sinkList').itemForElement(event.target);
-    this.showOrCreateRoute_(clickedSink);
-    this.fire('sink-click', {index: event['model'].index});
-  },
-
-  /**
-   * Sets the positioning of the sink list, search input, and search results so
-   * that everything is in the correct state for the sink list view.
-   *
-   * @private
-   */
-  putSearchAtBottom_: function() {
-    var search = this.$$('#sink-search');
-    if (!this.hasConditionalElement_(search)) {
-      return;
-    }
-    var deviceMissing = this.$['device-missing'];
-    var list = this.$$('#sink-list');
-    var resultsContainer = this.$$('#search-results-container');
-    var view = this.$['sink-list-view'];
-    search.style['top'] = '';
-    if (resultsContainer) {
-      resultsContainer.style['position'] = '';
-      resultsContainer.style['padding-top'] = '';
-      resultsContainer.style['top'] = '';
-    }
-    this.hideSinkListForAnimation_ = false;
-    var hasList = this.hasConditionalElement_(list);
-    if (hasList) {
-      search.style['margin-top'] = '-' + search.offsetHeight + 'px';
-      view.style['padding-bottom'] = search.offsetHeight + 'px';
-      list.style['opacity'] = '';
-    } else {
-      var bottomMargin = 12;
-      deviceMissing.style['margin-bottom'] =
-          (search.offsetHeight + bottomMargin) + 'px';
-      search.style['margin-top'] = '';
-      view.style['padding-bottom'] = '';
-    }
-  },
-
-  /**
-   * Sets the positioning of the sink list, search input, and search results so
-   * that everything is in the correct state for the filter view.
-   *
-   * If the user was searching while the |moveSearchToTop_| animation was
-   * happening then the dialog height that animation ends at could be different
-   * than the current height of the search results. If this is the case, this
-   * function first spawns a new animation that smoothly corrects the height
-   * problem. This is iterative, but once we enter a call where the heights
-   * match up, the elements will become static again.
-   *
-   * @param {!function()} resolve Resolves the animation promise that is waiting
-   *     on this animation.
-   * @private
-   */
-  putSearchAtTop_: function(resolve) {
-    var deviceMissing = this.$['device-missing'];
-    var list = this.$$('#sink-list');
-    var noMatches = this.$$('#no-search-matches');
-    var results = this.$$('#search-results');
-    var resultsContainer = this.$$('#search-results-container');
-    var search = this.$$('#sink-search');
-    var view = this.$['sink-list-view'];
-
-    // Set the max height for the results list before it's shown.
-    results.style.maxHeight = this.sinkListMaxHeight_ + 'px';
-
-    // If there is a height mismatch between where the animation calculated the
-    // height should be and where it is now because the search results changed
-    // during the animation, correct it with... another animation.
-    var resultsPadding = this.computeElementVerticalPadding_(results);
-    var finalHeight = this.computeTotalSearchHeight_(
-        deviceMissing, noMatches, results, search.offsetHeight,
-        this.sinkListMaxHeight_ + resultsPadding);
-    if (finalHeight != view.offsetHeight) {
-      var viewEffect = new KeyframeEffect(
-          view,
-          [
-            {'height': view.offsetHeight + 'px'},
-            {'height': finalHeight + 'px'}
-          ],
-          {
-            duration:
-                this.computeAnimationDuration_(finalHeight - view.offsetHeight),
-            easing: 'ease-in-out',
-            fill: 'forwards'
-          });
-      var player = document.timeline.play(viewEffect);
-      if (this.heightAdjustmentPlayer_) {
-        this.heightAdjustmentPlayer_.cancel();
-      }
-      this.heightAdjustmentPlayer_ = player;
-      player.finished.then(this.putSearchAtTop_.bind(this, resolve));
-      return;
-    }
-
-    var hasList = this.hasConditionalElement_(list);
-    search.style['margin-top'] = '';
-    deviceMissing.style['margin-bottom'] = search.offsetHeight + 'px';
-    var searchFinalTop = hasList ? 0 : deviceMissing.offsetHeight;
-    var resultsPaddingTop = hasList ? search.offsetHeight + 'px' : '0px';
-    search.style['top'] = searchFinalTop + 'px';
-    this.hideSinkListForAnimation_ = true;
-    resultsContainer.style['position'] = 'relative';
-    resultsContainer.style['padding-top'] = resultsPaddingTop;
-    resultsContainer.style['top'] = '';
-
-    view.style['overflow'] = '';
-    view.style['padding-bottom'] = '';
-    if (this.filterTransitionPlayer_) {
-      this.filterTransitionPlayer_.cancel();
-      this.filterTransitionPlayer_ = null;
-    }
-
-    if (this.heightAdjustmentPlayer_) {
-      this.heightAdjustmentPlayer_.cancel();
-      this.heightAdjustmentPlayer_ = null;
-    }
-
-    resolve();
-  },
-
-  /**
-   * Queues a call to |moveSearchToBottom_| by adding it as a continuation to
-   * |animationPromise_| and updating |animationPromise_|.
-   */
-  queueMoveSearchToBottom_: function() {
-    var oldPromise = this.animationPromise_;
-    var that = this;
-    this.animationPromise_ = new Promise(function(resolve) {
-      oldPromise.then(that.moveSearchToBottom_.bind(that, resolve));
-    });
-  },
-
-  /**
-   * Queues a call to |moveSearchToTop_| by adding it as a continuation to
-   * |animationPromise_| and updating |animationPromise_|. The new promise will
-   * not resolve until |putSearchAtTop_| is finished, including any potential
-   * dialog height adjustment animations.
-   */
-  queueMoveSearchToTop_: function() {
-    var oldPromise = this.animationPromise_;
-    var that = this;
-    this.animationPromise_ = new Promise(function(resolve) {
-      oldPromise.then(function() {
-        that.isSearchListHidden_ = false;
-        setTimeout(that.moveSearchToTop_.bind(that, resolve));
-      });
-    });
-  },
-
-  /**
-   * Queues a call to |putSearchAtTop_| by adding it as a continuation to
-   * |animationPromise_| and updating |animationPromise_|.
-   */
-  queuePutSearchAtTop_: function() {
-    var that = this;
-    var oldPromise = this.animationPromise_;
-    this.animationPromise_ = new Promise(function(resolve) {
-      oldPromise.then(that.putSearchAtTop_.bind(that, resolve));
-    });
-  },
-
-  /**
-   * Called when |routeList| is updated. Rebuilds |routeMap_| and
-   * |sinkToRouteMap_|.
-   *
-   * @private
-   */
-  rebuildRouteMaps_: function() {
-    this.routeMap_ = {};
-
-    // Rebuild |sinkToRouteMap_| with a temporary map to avoid firing the
-    // computed functions prematurely.
-    var tempSinkToRouteMap = {};
-
-    // We expect that each route in |routeList| maps to a unique sink.
-    this.routeList.forEach(function(route) {
-      this.routeMap_[route.id] = route;
-      tempSinkToRouteMap[route.sinkId] = route;
-    }, this);
-
-    // If there is route creation in progress, check if any of the route ids
-    // correspond to |pendingCreatedRouteId_|. If so, the newly created route
-    // is ready to be displayed; switch to route details view.
-    if (this.currentLaunchingSinkId_ != '' &&
-        this.pendingCreatedRouteId_ != '') {
-      var route = tempSinkToRouteMap[this.currentLaunchingSinkId_];
-      if (route && this.pendingCreatedRouteId_ == route.id) {
-        this.showRouteDetails_(route);
-        this.startTapTimer_();
-        this.resetRouteCreationProperties_(true);
-      }
-    } else {
-      // If |currentRoute_| is no longer active, clear |currentRoute_|. Also
-      // switch back to the SINK_PICKER view if the user is currently in the
-      // ROUTE_DETAILS view.
-      if (this.currentRoute_) {
-        this.currentRoute_ = this.routeMap_[this.currentRoute_.id] || null;
-      }
-      if (!this.currentRoute_ &&
-          this.currentView_ == media_router.MediaRouterView.ROUTE_DETAILS) {
-        this.showSinkList_();
-      }
-    }
-
-    this.sinkToRouteMap_ = tempSinkToRouteMap;
-    this.rebuildSinksToShow_();
-  },
-
-  /**
-   * Rebuilds the list of sinks to be shown for the current cast mode.
-   * A sink should be shown if it is compatible with the current cast mode, or
-   * if the sink is associated with a route.  The resulting list is sorted by
-   * name.
-   */
-  rebuildSinksToShow_: function() {
-    var updatedSinkList = this.allSinks.filter(function(sink) {
-      return !sink.isPseudoSink;
-    }, this);
-
-    if (this.pseudoSinkSearchState_) {
-      var pendingPseudoSink = this.pseudoSinkSearchState_.getPseudoSink();
-      // Here we will treat the pseudo sink that launched the search as a real
-      // sink until one is returned by search. This way it isn't possible to
-      // ever reach a UI state where there is no spinner being shown in the sink
-      // list but |currentLaunchingSinkId_| is non-empty (thereby preventing any
-      // other sink from launching).
-      if (pendingPseudoSink.id == this.currentLaunchingSinkId_) {
-        updatedSinkList.unshift(pendingPseudoSink);
-      }
-    }
-    // If user did not select a cast mode, then:
-    // - If there is a forced cast mode, it is shown.
-    // - If all sinks support only a single cast mode, then the cast mode is
-    //   switched to that mode.
-    // - Otherwise, the cast mode becomes AUTO mode.
-    if (!this.userHasSelectedCastMode_) {
-      this.setShownCastMode_(this.computeCastMode_());
-    }
-
-    // Non-AUTO modes may show a subset of sinks based on compatibility with the
-    // shown value.
-    if (this.shownCastModeValue_ != media_router.CastModeType.AUTO) {
-      updatedSinkList = updatedSinkList.filter(function(element) {
-        return (element.castModes & this.shownCastModeValue_) ||
-            this.sinkToRouteMap_[element.id];
-      }, this);
-    }
-
-    // When there's an updated list of sinks, append any new sinks to the end
-    // of the existing list. This prevents sinks randomly jumping around the
-    // dialog, which can surprise users / lead to inadvertently casting to the
-    // wrong sink.
-    if (this.sinksToShow_) {
-      for (var i = this.sinksToShow_.length - 1; i >= 0; i--) {
-        var index = updatedSinkList.findIndex(function(updatedSink) {
-          return this.sinksToShow_[i].id == updatedSink.id;
-        }.bind(this));
-        if (index < 0) {
-          // Remove any sinks that are no longer discovered.
-          this.sinksToShow_.splice(i, 1);
-        } else {
-          // If the sink exists, move it from |updatedSinkList| to
-          // |sinksToShow_| in the same position, as the cast modes or other
-          // fields may have been updated.
-          this.sinksToShow_[i] = updatedSinkList[index];
-          updatedSinkList.splice(index, 1);
-        }
-      }
-
-      updatedSinkList = this.sinksToShow_.concat(updatedSinkList);
-    }
-    this.sinksToShow_ = updatedSinkList;
-  },
-
-  /**
-   * Called when |allSinks| is updated.
-   *
-   * @private
-   */
-  reindexSinksAndRebuildSinksToShow_: function() {
-    this.sinkMap_ = {};
-
-    this.allSinks.forEach(function(sink) {
-      if (!sink.isPseudoSink) {
-        this.sinkMap_[sink.id] = sink;
-      }
-    }, this);
-
-    if (this.pseudoSinkSearchState_) {
-      this.currentLaunchingSinkId_ =
-          this.pseudoSinkSearchState_.checkForRealSink(this.allSinks);
-    }
-    this.pseudoSinks_ = this.allSinks.filter(function(sink) {
-      return sink.isPseudoSink && !!sink.domain;
-    });
-    this.rebuildSinksToShow_();
-    this.searchEnabled_ = this.searchEnabled_ || this.pseudoSinks_.length > 0 ||
-        this.sinksToShow_.length >= media_router.MINIMUM_SINKS_FOR_SEARCH;
-    this.filterSinks_(this.searchInputText_ || '');
-    if (this.currentView_ != media_router.MediaRouterView.FILTER) {
-      // This code is in the unique position of seeing |animationPromise_| as
-      // null on startup. |allSinks| is initialized before |animationPromise_|
-      // and this listener runs when |allSinks| is initialized.
-      if (this.animationPromise_) {
-        this.animationPromise_ =
-            this.animationPromise_.then(this.putSearchAtBottom_.bind(this));
-      } else {
-        this.putSearchAtBottom_();
-      }
-    } else {
-      this.queuePutSearchAtTop_();
-    }
-  },
-
-  /**
-   * Resets the properties relevant to creating a new route. Fires an event
-   * indicating whether or not route creation was successful.
-   * Clearing |currentLaunchingSinkId_| hides the spinner indicating there is
-   * a route creation in progress and show the device icon instead.
-   * @param {boolean} creationSuccess Whether route creation succeeded.
-   *
-   * @private
-   */
-  resetRouteCreationProperties_: function(creationSuccess) {
-    this.pseudoSinkSearchState_ = null;
-    this.currentLaunchingSinkId_ = '';
-    this.pendingCreatedRouteId_ = '';
-    // If it was a search that failed we need to refresh the filtered sinks now
-    // that |pseudoSinkSearchState_| is null.
-    if (!creationSuccess &&
-        this.currentView_ == media_router.MediaRouterView.FILTER) {
-      this.filterSinks_(this.searchInputText_);
-    }
-
-    this.fire('report-route-creation', {success: creationSuccess});
-  },
-
-  /**
-   * Responds to a click on the search button by toggling sink filtering.
-   */
-  searchButtonClick_: function() {
-    // Redundancy needed because focus() only fires event if input is not
-    // already focused. In the case that user typed text, hit escape, then
-    // clicks the search button, a focus event will not fire and so its event
-    // handler from ready() will not run.
-    this.showSearchResults_();
-    this.$$('#sink-search-input').focus();
-  },
-
-  /**
-   * Initializes the position of the search input if search becomes enabled.
-   * @param {boolean} searchEnabled The new value of |searchEnabled_|.
-   * @private
-   */
-  searchEnabledChanged_: function(searchEnabled) {
-    if (searchEnabled) {
-      this.async(function() {
-        this.setSearchFocusHandlers_();
-        this.putSearchAtBottom_();
-      });
-    }
-  },
-
-  /**
-   * Filters the sink list when the input text changes and shows the search
-   * results if |searchInputText| is not empty.
-   * @param {string} searchInputText The currently entered search text.
-   * @private
-   */
-  searchInputTextChanged_: function(searchInputText) {
-    this.filterSinks_(searchInputText);
-    if (searchInputText.length != 0) {
-      this.showSearchResults_();
-      this.maybeReportFilter_();
-    }
-  },
-
-  /**
-   * Sets the selected cast mode to the one associated with |castModeType|,
-   * and rebuilds sinks to reflect the change.
-   * @param {number} castModeType The type of the selected cast mode.
-   */
-  selectCastMode: function(castModeType) {
-    var castMode = this.findCastModeByType_(castModeType);
-    if (castMode && castModeType != this.shownCastModeValue_) {
-      this.setShownCastMode_(castMode);
-      this.userHasSelectedCastMode_ = true;
-      this.rebuildSinksToShow_();
-    }
-  },
-
-  /**
-   * Fires the command to open a file dialog.
-   *
-   * @private
-   */
-  selectLocalMediaFile_() {
-    this.fire('select-local-media-file');
-  },
-
-  /**
-   * Sets various focus and blur event handlers to handle showing search results
-   * when the search input is focused.
-   * @private
-   */
-  setSearchFocusHandlers_: function() {
-    var searchInput = this.$$('#sink-search-input');
-    var that = this;
-
-    // The window can see a blur event for two important cases: the window is
-    // actually losing focus or keyboard focus is wrapping from the end of the
-    // document to the beginning. To handle both cases, we save whether the
-    // search input was focused during the window blur event.
-    //
-    // When the search input receives focus, it could be as part of window
-    // focus. If the search input was also focused on window blur, it shouldn't
-    // show search results if they aren't already being shown. Otherwise,
-    // focusing the search input should activate the FILTER view by calling
-    // |showSearchResults_()|.
-    window.addEventListener('blur', function() {
-      that.isSearchFocusedOnWindowBlur_ =
-          that.shadowRoot.activeElement == searchInput;
-    });
-    searchInput.addEventListener('focus', function() {
-      if (!that.isSearchFocusedOnWindowBlur_) {
-        that.showSearchResults_();
-      }
-    });
-  },
-
-  /**
-   * Updates the shown cast mode, and updates the header text fields
-   * according to the cast mode. If |castMode| type is AUTO, then set
-   * |userHasSelectedCastMode_| to false.
-   *
-   * @param {!media_router.CastMode} castMode
-   */
-  setShownCastMode_: function(castMode) {
-    if (this.shownCastModeValue_ == castMode.type) {
-      return;
-    }
-
-    this.shownCastModeValue_ = castMode.type;
-    this.headerText = castMode.description;
-    this.headerTextTooltip = castMode.host || '';
-    if (castMode.type == media_router.CastModeType.AUTO) {
-      this.userHasSelectedCastMode_ = false;
-    }
-  },
-
-  /**
-   * Shows the cast mode list.
-   *
-   * @private
-   */
-  showCastModeList_: function() {
-    this.currentView_ = media_router.MediaRouterView.CAST_MODE_LIST;
-  },
-
-  /**
-   * Creates a new route if there is no route to the |sink| . Otherwise,
-   * shows the route details.
-   *
-   * @param {!media_router.Sink} sink The sink to use.
-   * @private
-   */
-  showOrCreateRoute_: function(sink) {
-    var route = this.sinkToRouteMap_[sink.id];
-    if (route) {
-      this.showRouteDetails_(route);
-      this.fire('navigate-sink-list-to-details');
-      this.maybeReportUserFirstAction(
-          media_router.MediaRouterUserAction.STATUS_REMOTE);
-    } else if (this.currentLaunchingSinkId_ == '') {
-      // Allow one launch at a time.
-      var selectedCastModeValue =
-          this.shownCastModeValue_ == media_router.CastModeType.AUTO ?
-          sink.castModes & -sink.castModes :
-          this.shownCastModeValue_;
-      if (sink.isPseudoSink) {
-        this.pseudoSinkSearchState_ = new PseudoSinkSearchState(sink);
-        this.fire('search-sinks-and-create-route', {
-          id: sink.id,
-          name: sink.name,
-          domain: sink.domain,
-          selectedCastMode: selectedCastModeValue
-        });
-      } else {
-        this.fire('create-route', {
-          sinkId: sink.id,
-          // If user selected a cast mode, then we will create a route using
-          // that cast mode. Otherwise, the UI is in "auto" cast mode and will
-          // use the preferred cast mode compatible with the sink. The preferred
-          // cast mode value is the least significant bit on the bitset.
-          selectedCastModeValue: selectedCastModeValue
-        });
-
-        var timeToSelectSink =
-            window.performance.now() - this.populatedSinkListSeenTimeMs_;
-        this.fire('report-sink-click-time', {timeMs: timeToSelectSink});
-      }
-      this.currentLaunchingSinkId_ = sink.id;
-      if (sink.isPseudoSink) {
-        this.rebuildSinksToShow_();
-      }
-
-      this.maybeReportUserFirstAction(
-          media_router.MediaRouterUserAction.START_LOCAL);
-    }
-  },
-
-  /**
-   * Shows the route details.
-   *
-   * @param {!media_router.Route} route The route to show.
-   * @private
-   */
-  showRouteDetails_: function(route) {
-    this.currentRoute_ = route;
-    this.currentView_ = media_router.MediaRouterView.ROUTE_DETAILS;
-    if (route.supportsWebUiController) {
-      media_router.browserApi.onMediaControllerAvailable(route.id);
-    }
-    if (this.$$('route-details')) {
-      this.$$('route-details').onOpened();
-    }
-  },
-
-  /**
-   * Shows the search results.
-   *
-   * @private
-   */
-  showSearchResults_: function() {
-    if (this.currentView_ != media_router.MediaRouterView.FILTER) {
-      this.currentView_ = media_router.MediaRouterView.FILTER;
-      this.queueMoveSearchToTop_();
-    }
-  },
-
-  /**
-   * Shows the sink list.
-   *
-   * @private
-   */
-  showSinkList_: function() {
-    if (this.currentView_ == media_router.MediaRouterView.FILTER) {
-      this.queueMoveSearchToBottom_();
-      this.currentView_ = media_router.MediaRouterView.SINK_LIST;
-    } else {
-      this.currentView_ = media_router.MediaRouterView.SINK_LIST;
-      this.putSearchAtBottom_();
-    }
-  },
-
-  /**
-   * Starts a timer which fires a close-dialog event if the user's mouse is
-   * not positioned over the dialog after three seconds.
-   *
-   * @private
-   */
-  startTapTimer_: function() {
-    var id = setTimeout(function() {
-      if (!this.mouseIsPositionedOverDialog_) {
-        this.fire('close-dialog', {
-          pressEscToClose: false,
-        });
-      }
-    }.bind(this), 3000 /* 3 seconds */);
-  },
-
-  /**
-   * Toggles |currentView_| between CAST_MODE_LIST and SINK_LIST.
-   *
-   * @private
-   */
-  toggleCastModeHidden_: function() {
-    if (this.currentView_ == media_router.MediaRouterView.CAST_MODE_LIST) {
-      this.showSinkList_();
-    } else if (this.currentView_ == media_router.MediaRouterView.SINK_LIST) {
-      this.showCastModeList_();
-      this.fire('navigate-to-cast-mode-list');
-    }
-  },
-
-  /**
-   * Update the position-related styling of some elements.
-   *
-   * @private
-   */
-  updateElementPositioning_: function() {
-    // Ensures that conditionally templated elements have finished stamping.
-    this.async(function() {
-      var headerHeight = this.header.offsetHeight;
-      // Unlike the other elements whose heights are fixed, the first-run-flow
-      // element can have a fractional height. So we use getBoundingClientRect()
-      // to avoid rounding errors.
-      var firstRunFlowHeight = this.$$('#first-run-flow') &&
-              this.$$('#first-run-flow').style.display != 'none' ?
-          this.$$('#first-run-flow').getBoundingClientRect().height :
-          0;
-      var issueHeight = this.$$('#issue-banner') &&
-              this.$$('#issue-banner').style.display != 'none' ?
-          this.$$('#issue-banner').offsetHeight :
-          0;
-      var search = this.$$('#sink-search');
-      var hasSearch = this.hasConditionalElement_(search);
-      var searchHeight = hasSearch ? search.offsetHeight : 0;
-      var searchPadding =
-          hasSearch ? this.computeElementVerticalPadding_(search) : 0;
-
-      this.header.style.marginTop = firstRunFlowHeight + 'px';
-      this.$['content'].style.marginTop =
-          firstRunFlowHeight + headerHeight + 'px';
-
-      var sinkList = this.$$('#sink-list');
-      var sinkListPadding =
-          sinkList ? this.computeElementVerticalPadding_(sinkList) : 0;
-
-      this.sinkListMaxHeight_ = this.dialogHeight_ - headerHeight -
-          firstRunFlowHeight - issueHeight - searchHeight + searchPadding -
-          sinkListPadding;
-
-      // Limit the height of the dialog to ten items, including search.
-      var sinkItemHeight = 41;
-      var maxSinkItems = hasSearch ? 9 : 10;
-      this.sinkListMaxHeight_ =
-          Math.min(sinkItemHeight * maxSinkItems, this.sinkListMaxHeight_);
-      if (sinkList) {
-        sinkList.style.maxHeight = this.sinkListMaxHeight_ + 'px';
-      }
-    });
-  },
-
-  /**
-   * Update the max dialog height and update the positioning of the elements.
-   *
-   * @param {number} height The max height of the Media Router dialog.
-   */
-  updateMaxDialogHeight: function(height) {
-    this.dialogHeight_ = height;
-    this.updateElementPositioning_();
-  },
-
-  /**
-   * Sets the selected cast mode menu item to be in sync with the current cast
-   * mode.
-   * @private
-   */
-  updateSelectedCastModeMenuItem_: function() {
-    /** @const */ var curIndex =
-        this.findCastModeIndexByType_(this.shownCastModeValue_);
-    if (this.selectedCastModeMenuItem_ != curIndex) {
-      this.selectedCastModeMenuItem_ = curIndex;
-    }
-  },
-});
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container_interface.js b/chrome/browser/resources/media_router/elements/media_router_container/media_router_container_interface.js
deleted file mode 100644
index 052d81d..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_container/media_router_container_interface.js
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * This Polymer element contains the entire media router interface. It handles
- * hiding and showing specific components.
- * @record
- */
-function MediaRouterContainerInterface() {}
-
-/**
- * The list of available sinks.
- * @type {!Array<!media_router.Sink>}
- */
-MediaRouterContainerInterface.prototype.allSinks;
-
-/**
- * The list of CastModes to show.
- * @type {!Array<!media_router.CastMode>|undefined}
- */
-MediaRouterContainerInterface.prototype.castModeList;
-
-/**
- * The URL to open when the device missing link is clicked.
- * @type {string|undefined}
- */
-MediaRouterContainerInterface.prototype.deviceMissingUrl;
-
-/**
- * The URL to open when the cloud services pref learn more link is clicked.
- * @type {string|undefined}
- */
-MediaRouterContainerInterface.prototype.firstRunFlowCloudPrefLearnMoreUrl;
-
-/**
- * The URL to open when the first run flow learn more link is clicked.
- * @type {string|undefined}
- */
-MediaRouterContainerInterface.prototype.firstRunFlowLearnMoreUrl;
-
-/**
- * The header element.
- * @type {!MediaRouterHeaderElement}
- */
-MediaRouterContainerInterface.prototype.header;
-
-/**
- * The header text for the sink list.
- * @type {string|undefined}
- */
-MediaRouterContainerInterface.prototype.headerText;
-
-/**
- * The header text tooltip. This would be descriptive of the
- * source origin, whether a host name, tab URL, etc.
- * @type {string|undefined}
- */
-MediaRouterContainerInterface.prototype.headerTextTooltip;
-
-/**
- * The issue to show.
- * @type {?media_router.Issue}
- */
-MediaRouterContainerInterface.prototype.issue;
-
-/**
- * The list of current routes.
- * @type {!Array<!media_router.Route>|undefined}
- */
-MediaRouterContainerInterface.prototype.routeList;
-
-/**
- * Whether the search input should be padded as if it were at the bottom of
- * the dialog.
- * @type {boolean}
- */
-MediaRouterContainerInterface.prototype.searchUseBottomPadding;
-
-/**
- * Whether to show the user domain of sinks associated with identity.
- * @type {boolean|undefined}
- */
-MediaRouterContainerInterface.prototype.showDomain;
-
-/**
- * Whether to show the first run flow.
- * @type {boolean|undefined}
- */
-MediaRouterContainerInterface.prototype.showFirstRunFlow;
-
-/**
- * Whether to show the cloud preference setting in the first run flow.
- * @type {boolean|undefined}
- */
-MediaRouterContainerInterface.prototype.showFirstRunFlowCloudPref;
-
-/**
- * Whether the WebUI route controls should be shown instead of the
- * extensionview in the route details view.
- * @type {boolean}
- */
-MediaRouterContainerInterface.prototype.useWebUiRouteControls;
-
-/**
- * Adds an event listener callback for an event.
- * @param {string} eventName
- * @param {function(!Event)} callback
- */
-MediaRouterContainerInterface.prototype.addEventListener = function(
-    eventName, callback) {};
-
-/**
- * Fires a 'report-initial-action' event when the user takes their first
- * action after the dialog opens. Also fires a 'report-initial-action-close'
- * event if that initial action is to close the dialog.
- * @param {!media_router.MediaRouterUserAction} initialAction
- */
-MediaRouterContainerInterface.prototype.maybeReportUserFirstAction = function(
-    initialAction) {};
-
-/**
- * Updates |currentView_| if the dialog had just opened and there's
- * only one local route.
- */
-MediaRouterContainerInterface.prototype.maybeShowRouteDetailsOnOpen =
-    function() {};
-
-/**
- * Handles response of previous create route attempt.
- * @param {string} sinkId The ID of the sink to which the Media Route was
- *     creating a route.
- * @param {?media_router.Route} route The newly created route that
- *     corresponds to the sink if route creation succeeded; null otherwise.
- * @param {boolean} isForDisplay Whether or not |route| is for display.
- */
-MediaRouterContainerInterface.prototype.onCreateRouteResponseReceived =
-    function(sinkId, route, isForDisplay) {};
-
-/**
- * Handles the result of a requested file dialog.
- * @param {string} fileName The name of the file that has been selected.
- */
-MediaRouterContainerInterface.prototype.onFileDialogSuccess = function(
-    fileName) {};
-
-/**
- * Called when a search has completed up to route creation. |sinkId|
- * identifies the sink that should be in |allSinks|, if a sink was found.
- * @param {string} sinkId The ID of the sink that is the result of the
- *     currently pending search.
- */
-MediaRouterContainerInterface.prototype.onReceiveSearchResult = function(
-    sinkId) {};
-
-/**
- * Called when the connection to the route controller is invalidated. Switches
- * from route details view to the sink list view.
- */
-MediaRouterContainerInterface.prototype.onRouteControllerInvalidated =
-    function() {};
-
-/**
- * Sets the selected cast mode to the one associated with |castModeType|,
- * and rebuilds sinks to reflect the change.
- * @param {number} castModeType The type of the selected cast mode.
- */
-MediaRouterContainerInterface.prototype.selectCastMode = function(
-    castModeType) {};
-
-/**
- * Update the max dialog height and update the positioning of the elements.
- * @param {number} height The max height of the Media Router dialog.
- */
-MediaRouterContainerInterface.prototype.updateMaxDialogHeight = function(
-    height) {};
diff --git a/chrome/browser/resources/media_router/elements/media_router_container/pseudo_sink_search_state.js b/chrome/browser/resources/media_router/elements/media_router_container/pseudo_sink_search_state.js
deleted file mode 100644
index b0c97cc..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_container/pseudo_sink_search_state.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * This class holds state that is relevant to the search process from the UI's
- * perspective. It primarily handles the spinner logic while waiting for a
- * search to complete. The spinner first needs to start on the pseudo sink, but
- * when a real sink arrives to replace it the spinner should transfer to the
- * real sink.
- *
- * Additionally, this class provides a method for
- * onCreateRouteResponseReceived() that maps the pseudo sink ID that started the
- * search to the real sink that was produced by the search. This helps check
- * whether a received route is valid.
- *
- * @param {!media_router.Sink} pseudoSink Pseudo sink that started the search.
- * @constructor
- */
-var PseudoSinkSearchState = function(pseudoSink) {
-  /**
-   * Pseudo sink that started the search.
-   * @private {!media_router.Sink}
-   */
-  this.pseudoSink_ = pseudoSink;
-
-  /**
-   * The ID of the sink that is found by search.
-   * @private {string}
-   */
-  this.realSinkId_ = '';
-
-  /**
-   * Whether we have received a sink in the sink list with ID |realSinkId_|.
-   * @private {boolean}
-   */
-  this.hasRealSink_ = false;
-};
-
-/**
- * Record the real sink ID returned from the Media Router.
- * @param {string} sinkId Real sink ID that is the result of the search.
- */
-PseudoSinkSearchState.prototype.receiveSinkResponse = function(sinkId) {
-  this.realSinkId_ = sinkId;
-};
-
-/**
- * Checks whether we have a sink in |sinkList| that is our search result then
- * computes the value for |currentLaunchingSinkId_| based on the state of the
- * search. It should be the pseudo sink ID until the real sink arrives, then the
- * real sink ID.
- * @param {!Array<!media_router.Sink>} sinkList List of all sinks to check.
- * @return {string} New value for |currentLaunchingSinkId_|.
- */
-PseudoSinkSearchState.prototype.checkForRealSink = function(sinkList) {
-  if (!this.hasRealSink_) {
-    this.hasRealSink_ = !!this.realSinkId_ && sinkList.some(function(sink) {
-      return (sink.id == this.realSinkId_);
-    }, this);
-    return !this.hasRealSink_ ? this.pseudoSink_.id : this.realSinkId_;
-  }
-  return this.realSinkId_;
-};
-
-/**
- * Returns the pseudo sink for the current search. This is used to enforce
- * freezing its name in filter view and displaying it in the sink list view.
- * @return {!media_router.Sink}
- */
-PseudoSinkSearchState.prototype.getPseudoSink = function() {
-  return this.pseudoSink_;
-};
diff --git a/chrome/browser/resources/media_router/elements/media_router_header/BUILD.gn b/chrome/browser/resources/media_router/elements/media_router_header/BUILD.gn
deleted file mode 100644
index 2033647..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_header/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("//third_party/closure_compiler/compile_js.gni")
-
-js_type_check("closure_compile") {
-  deps = [
-    ":media_router_header",
-  ]
-}
-
-js_library("media_router_header") {
-  deps = [
-    "../..:media_router_data",
-    "//ui/webui/resources/js:i18n_behavior",
-    "//ui/webui/resources/js:util",
-  ]
-}
diff --git a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.css b/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.css
deleted file mode 100644
index 124b120..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.css
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Copyright 2015 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-#arrow-drop-container {
-  flex-grow: 1;
-}
-
-#arrow-drop-icon {
-  height: var(--navigation-icon-button-size);
-  width: var(--navigation-icon-button-size);
-}
-
-#back-button {
-  height: var(--navigation-icon-button-size);
-  width: var(--navigation-icon-button-size);
-}
-
-#back-button-container {
-  padding-inline-end: 4px;
-}
-
-#close-button {
-  height: 31px;
-  margin-inline-start: auto;
-  width: 31px;
-}
-
-#close-button-container {
-  margin-inline-start: auto;
-  padding-inline-end: 16px;
-  padding-inline-start: 24px;
-}
-
-#header {
-  align-items: center;
-  color: white;
-  padding-inline-start: 8px;
-}
-
-#header-and-arrow-container {
-  display: flex;
-  overflow: hidden;
-  white-space: nowrap;
-}
-
-cr-icon-button {
-  --cr-icon-button-color: currentColor;
-}
-
-#header-text {
-  font-size: 1.175em;
-  line-height: 36px;
-  margin: 0 8px;
-  overflow: hidden;
-  padding-inline-end: 4px;
-  text-overflow: ellipsis;
-}
-
-.issue {
-  background-color: var(--paper-red-700);
-}
-
-#main-container {
-  display: flex;
-  padding-top: 10px;
-}
-
-.cast-mode-list,
-.filter,
-.route-details,
-.sink-list {
-  background-color: var(--paper-blue-700);
-}
-
-#user-email-container {
-  bottom: 0;
-  font-size: 0.917em;
-  left: auto;
-  padding-bottom: 12px;
-  padding-inline-start: 8px;
-  position: absolute;
-}
diff --git a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.html b/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.html
deleted file mode 100644
index 5b9189bf..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/cr_elements/icons.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="../../icons/media_router_icons.html">
-<dom-module id="media-router-header">
-  <link rel="import" type="css" href="../../media_router_common.css">
-  <link rel="import" type="css" href="media_router_header.css">
-  <template>
-    <div id="header" class$="[[view]]">
-      <div id="main-container">
-        <template is="dom-if" if="[[computeBackButtonShown_(view)]]">
-          <div id="back-button-container">
-            <cr-icon-button id="back-button" iron-icon="[[arrowDropIcon_]]"
-                on-tap="onBackButtonClick_" title="[[i18n('backButtonTitle')]]">
-            </cr-icon-button>
-          </div>
-        </template>
-        <div id="header-and-arrow-container" on-tap="onHeaderOrArrowClick_">
-          <span id="header-text" title="[[tooltip]]">
-              [[headingText]]</span>
-          <div id="arrow-drop-container">
-            <cr-icon-button iron-icon="[[computeArrowDropIcon_(view)]]"
-                id="arrow-drop-icon" disabled$="[[arrowDropIconDisabled]]"
-                hidden$="[[computeArrowDropIconHidden_(view)]]"
-                title="[[computeArrowDropTitle_(view)]]">
-            </cr-icon-button>
-          </div>
-        </div>
-        <div id="close-button-container">
-          <cr-icon-button iron-icon="cr:close" id="close-button"
-              on-tap="onCloseButtonClick_" title="[[i18n('closeButtonTitle')]]">
-          </cr-icon-button>
-        </div>
-      </div>
-      <template is="dom-if" if="[[showEmail]]">
-        <div id="user-email-container">[[userEmail]]</div>
-      </template>
-    </div>
-  </template>
-<script src="media_router_header.js"></script>
-</dom-module>
diff --git a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.js b/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.js
deleted file mode 100644
index 138238ac..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_header/media_router_header.js
+++ /dev/null
@@ -1,233 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This Polymer element is used as a header for the media router interface.
-Polymer({
-  is: 'media-router-header',
-
-  properties: {
-    /**
-     * The name of the icon used as the back button. This is set once, when
-     * the |this| is ready.
-     * @private {string|undefined}
-     */
-    arrowDropIcon_: {
-      type: String,
-    },
-
-    /**
-     * Whether or not the arrow drop icon should be disabled.
-     * @type {boolean}
-     */
-    arrowDropIconDisabled: {
-      type: Boolean,
-      value: false,
-    },
-
-    /**
-     * The header text to show.
-     * @type {string|undefined}
-     */
-    headingText: {
-      type: String,
-    },
-
-    /**
-     * The height of the header when it shows the user email.
-     * @private {number}
-     */
-    headerWithEmailHeight_: {
-      type: Number,
-      readOnly: true,
-      value: 62,
-    },
-
-    /**
-     * The height of the header when it doesn't show the user email.
-     * @private {number}
-     */
-    headerWithoutEmailHeight_: {
-      type: Number,
-      readOnly: true,
-      value: 52,
-    },
-
-    /**
-     * Whether to show the user email in the header.
-     * @type {boolean|undefined}
-     */
-    showEmail: {
-      type: Boolean,
-      observer: 'maybeChangeHeaderHeight_',
-    },
-
-    /**
-     * The text to show in the tooltip.
-     * @type {string|undefined}
-     */
-    tooltip: {
-      type: String,
-    },
-
-    /**
-     * The user email if they are signed in.
-     * @type {string|undefined}
-     */
-    userEmail: {
-      type: String,
-    },
-
-    /**
-     * The current view that this header should reflect.
-     * @type {?media_router.MediaRouterView|undefined}
-     */
-    view: {
-      type: String,
-      observer: 'updateHeaderCursorStyle_',
-    },
-  },
-
-  behaviors: [
-    I18nBehavior,
-  ],
-
-  ready: function() {
-    this.$$('#header').style.height = this.headerWithoutEmailHeight_ + 'px';
-  },
-
-  attached: function() {
-    // isRTL() only works after <html dir> is set.
-    // Set the back button icon based on text direction.
-    this.arrowDropIcon_ = isRTL() ? 'cr:arrow-forward' : 'cr:arrow-back';
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @return {string} The icon to use.
-   * @private
-   */
-  computeArrowDropIcon_: function(view) {
-    return view == media_router.MediaRouterView.CAST_MODE_LIST ?
-        'cr:arrow-drop-up' :
-        'cr:arrow-drop-down';
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @return {boolean} Whether or not the arrow drop icon should be hidden.
-   * @private
-   */
-  computeArrowDropIconHidden_: function(view) {
-    return view != media_router.MediaRouterView.SINK_LIST &&
-        view != media_router.MediaRouterView.CAST_MODE_LIST;
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @return {string} The title text for the arrow drop button.
-   * @private
-   */
-  computeArrowDropTitle_: function(view) {
-    return view == media_router.MediaRouterView.CAST_MODE_LIST ?
-        this.i18n('viewDeviceListButtonTitle') :
-        this.i18n('viewCastModeListButtonTitle');
-  },
-
-  /**
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @return {boolean} Whether or not the back button should be shown.
-   * @private
-   */
-  computeBackButtonShown_: function(view) {
-    return view == media_router.MediaRouterView.ROUTE_DETAILS ||
-        view == media_router.MediaRouterView.FILTER;
-  },
-
-  /**
-   * Returns whether given string is undefined, null, empty, or whitespace only.
-   * @param {?string} str String to be tested.
-   * @return {boolean} |true| if the string is undefined, null, empty, or
-   *     whitespace.
-   * @private
-   */
-  isEmptyOrWhitespace_: function(str) {
-    return str === undefined || str === null || (/^\s*$/).test(str);
-  },
-
-  /**
-   * Handles a click on the back button by firing a back-click event.
-   *
-   * @private
-   */
-  onBackButtonClick_: function() {
-    this.fire('back-click');
-  },
-
-  /**
-   * Handles a click on the close button by firing a close-button-click event.
-   *
-   * @private
-   */
-  onCloseButtonClick_: function() {
-    this.fire('close-dialog', {
-      pressEscToClose: false,
-    });
-  },
-
-  /**
-   * Handles a click on the arrow button by firing an arrow-click event.
-   *
-   * @private
-   */
-  onHeaderOrArrowClick_: function() {
-    if (this.view == media_router.MediaRouterView.SINK_LIST ||
-        this.view == media_router.MediaRouterView.CAST_MODE_LIST) {
-      this.fire('header-or-arrow-click');
-    }
-  },
-
-  /**
-   * Updates header height to accomodate email text. This is called on changes
-   * to |showEmail| and will return early if the value has not changed.
-   *
-   * @param {boolean} newValue The new value of |showEmail|.
-   * @param {boolean} oldValue The previous value of |showEmail|.
-   * @private
-   */
-  maybeChangeHeaderHeight_: function(newValue, oldValue) {
-    if (oldValue == newValue) {
-      return;
-    }
-
-    // Ensures conditional templates are stamped.
-    this.async(function() {
-      var currentHeight = this.offsetHeight;
-
-      this.$$('#header').style.height =
-          this.showEmail && !this.isEmptyOrWhitespace_(this.userEmail) ?
-          this.headerWithEmailHeight_ + 'px' :
-          this.headerWithoutEmailHeight_ + 'px';
-
-      // Only fire if height actually changed.
-      if (currentHeight != this.offsetHeight) {
-        this.fire('header-height-changed');
-      }
-    });
-  },
-
-  /**
-   * Updates the cursor style for the header text when the view changes. When
-   * the drop arrow is also shown, the header text is also clickable.
-   *
-   * @param {?media_router.MediaRouterView} view The current view.
-   * @private
-   */
-  updateHeaderCursorStyle_: function(view) {
-    this.$$('#header-text').style.cursor =
-        view == media_router.MediaRouterView.SINK_LIST ||
-            view == media_router.MediaRouterView.CAST_MODE_LIST ?
-        'pointer' :
-        'auto';
-  },
-});
diff --git a/chrome/browser/resources/media_router/elements/media_router_search_highlighter/BUILD.gn b/chrome/browser/resources/media_router/elements/media_router_search_highlighter/BUILD.gn
deleted file mode 100644
index 7881aba..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_search_highlighter/BUILD.gn
+++ /dev/null
@@ -1,17 +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("//third_party/closure_compiler/compile_js.gni")
-
-js_type_check("closure_compile") {
-  deps = [
-    ":media_router_search_highlighter",
-  ]
-}
-
-js_library("media_router_search_highlighter") {
-  deps = [
-    "//ui/webui/resources/js:util",
-  ]
-}
diff --git a/chrome/browser/resources/media_router/elements/media_router_search_highlighter/media_router_search_highlighter.css b/chrome/browser/resources/media_router/elements/media_router_search_highlighter/media_router_search_highlighter.css
deleted file mode 100644
index 39b1c2f..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_search_highlighter/media_router_search_highlighter.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Copyright 2016 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-.highlight {
-  font-weight: bold;
-}
diff --git a/chrome/browser/resources/media_router/elements/media_router_search_highlighter/media_router_search_highlighter.html b/chrome/browser/resources/media_router/elements/media_router_search_highlighter/media_router_search_highlighter.html
deleted file mode 100644
index dbb9334..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_search_highlighter/media_router_search_highlighter.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-<dom-module id="media-router-search-highlighter">
-  <link rel="import" type="css" href="media_router_search_highlighter.css">
-  <template>
-    <span id="text" dir="auto"></span>
-  </template>
-</dom-module>
-<script src="media_router_search_highlighter.js"></script>
diff --git a/chrome/browser/resources/media_router/elements/media_router_search_highlighter/media_router_search_highlighter.js b/chrome/browser/resources/media_router/elements/media_router_search_highlighter/media_router_search_highlighter.js
deleted file mode 100644
index b3d8e17..0000000
--- a/chrome/browser/resources/media_router/elements/media_router_search_highlighter/media_router_search_highlighter.js
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This Polymer element displays text that needs sections of it highlighted.
-// This is useful, for example, for displaying which portions of a string were
-// matched by some filter text.
-Polymer({
-  is: 'media-router-search-highlighter',
-
-  properties: {
-    /**
-     * The text that this element should display, split it into highlighted and
-     * normal text. The displayed text will alternate between plainText and
-     * highlightedText.
-     *
-     * Example: You have a sink with the name 'living room'.
-     * When your seach text is 'living', the resulting arrays will be:
-     *     plainText: [null, ' room'], highlightedText: ['living', null]
-     *
-     * When your search text is 'room', the resulting arrays will be:
-     *     plainText: ['living ', null], highlightedText: [null, 'room']
-     *
-     * null corresponds to an empty string when the arrays are being combined.
-     * So both examples reproduce the text 'living room', but with different
-     * words highlighted.
-     * @type {{highlightedText: !Array<?string>,
-     *         plainText: !Array<?string>}|undefined}
-     */
-    data: {
-      type: Object,
-      observer: 'dataChanged_',
-    },
-
-    /**
-     * The text that this element is displaying as a plain string. The primary
-     * purpose for this property is to make getting this element's textContent
-     * easy for testing.
-     * @type {string|undefined}
-     */
-    text: {
-      type: String,
-      readOnly: true,
-      notify: false,
-    },
-  },
-
-  /**
-   * Update the element text if |data| changes.
-   *
-   * The order the strings are combined is plainText[0] highlightedText[0]
-   * plainText[1] highlightedText[1] etc.
-   *
-   * @param {{highlightedText: !Array<?string>, plainText: !Array<?string>}}
-   *    data
-   * Parameters in |data|:
-   *   highlightedText - Array of strings that should be displayed highlighted.
-   *   plainText - Array of strings that should be displayed normally.
-   */
-  dataChanged_: function(data) {
-    if (!data || !data.highlightedText || !data.plainText) {
-      return;
-    }
-
-    var text = '';
-    for (var i = 0; i < data.highlightedText.length; ++i) {
-      if (data.plainText[i]) {
-        text += HTMLEscape(/** @type {!string} */ (data.plainText[i]));
-      }
-      if (data.highlightedText[i]) {
-        text += '<span class="highlight">' +
-            HTMLEscape(/** @type {!string} */ (data.highlightedText[i])) +
-            '</span>';
-      }
-    }
-    this.$.text.innerHTML = text;
-    this._setText(this.$.text.textContent);
-  },
-});
diff --git a/chrome/browser/resources/media_router/elements/route_controls/BUILD.gn b/chrome/browser/resources/media_router/elements/route_controls/BUILD.gn
deleted file mode 100644
index 0b21078..0000000
--- a/chrome/browser/resources/media_router/elements/route_controls/BUILD.gn
+++ /dev/null
@@ -1,28 +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("//third_party/closure_compiler/compile_js.gni")
-
-js_type_check("closure_compile") {
-  deps = [
-    ":route_controls",
-    ":route_controls_interface",
-  ]
-}
-
-js_library("route_controls") {
-  deps = [
-    "../..:media_router_browser_api",
-    "../..:media_router_data",
-    "../..:media_router_ui_interface",
-    "//ui/webui/resources/js:i18n_behavior",
-    "//ui/webui/resources/js:load_time_data",
-  ]
-}
-
-js_library("route_controls_interface") {
-  deps = [
-    "../..:media_router_data",
-  ]
-}
diff --git a/chrome/browser/resources/media_router/elements/route_controls/route_controls.css b/chrome/browser/resources/media_router/elements/route_controls/route_controls.css
deleted file mode 100644
index 371416a..0000000
--- a/chrome/browser/resources/media_router/elements/route_controls/route_controls.css
+++ /dev/null
@@ -1,112 +0,0 @@
-/* Copyright 2017 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. */
-
-#button-holder {
-  float: left;
-}
-
-#current-time {
-  left: 20px;
-  position: absolute;
-}
-
-#duration {
-  position: absolute;
-  right: 20px;
-}
-
-:host-context([dir='rtl']) #play-pause-volume-hangouts-controls {
-  transform: scaleX(-1);
-}
-
-:host-context([dir='rtl']) #route-play-pause-button {
-  transform: scaleX(-1);
-}
-
-:host-context([dir='rtl']) #volume-holder {
-  transform: scaleX(-1);
-}
-
-#media-controls {
-  font-size: 1.25em;
-  margin: 0 8px;
-}
-
-#play-pause-volume-hangouts-controls {
-  display: block;
-  margin-top: 13px;
-  overflow: hidden;
-}
-
-#route-description {
-  margin: 15px 8px 3px 8px;
-  width: 90%;
-}
-
-#route-time-controls {
-  display: block;
-  margin-top: 3px;
-  overflow: hidden;
-}
-
-#route-time-slider {
-  --cr-slider-active-color: rgb(16, 16, 16);
-  --cr-slider-container-color: rgba(16, 16, 16, .24);
-  --cr-slider-knob-color: rgb(16, 16, 16);
-  width: 100%;
-}
-
-#route-title {
-  color: rgb(125, 125, 125);
-  margin: 3px 8px;
-}
-
-#route-volume-slider {
-  --cr-slider-active-color: rgb(33, 150, 243);
-  --cr-slider-container-color: rgba(16, 16, 16, .24);
-  --cr-slider-knob-color: rgb(16, 16, 16);
-  width: 100%;
-}
-
-#timeline {
-  font-size: 0.75em;
-}
-
-#volume-holder {
-  display: block;
-  overflow: hidden;
-  padding: 0.3em 0;
-}
-
-#hangouts-local-present-controls {
-  cursor: pointer;
-  display: inline-block;
-  float: right;
-  padding-top: 10.5px;
-  white-space: nowrap;
-}
-
-#hangouts-local-present-checkbox {
-  align-items: start;
-  --cr-checkbox-label-padding-start: 14px;
-}
-
-#hangouts-local-present-checkbox-subtitle {
-  display: block;
-  font-size: 0.8em;
-  margin-top: 2px;
-  width: 249px;
-}
-
-#mirroring-fullscreen-video-controls {
-  display: inline-block;
-  font-size: 0.8em;
-  margin: 15px 8px 3px 8px;
-  vertical-align: middle;
-}
-
-#mirroring-fullscreen-video-dropdown {
-  margin-inline-start: 8px;
-  width: auto;
-}
diff --git a/chrome/browser/resources/media_router/elements/route_controls/route_controls.html b/chrome/browser/resources/media_router/elements/route_controls/route_controls.html
deleted file mode 100644
index cb0f988..0000000
--- a/chrome/browser/resources/media_router/elements/route_controls/route_controls.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/cr_elements/cr_checkbox/cr_checkbox.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_slider/cr_slider.html">
-<link rel="import" href="chrome://resources/cr_elements/md_select_css.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-iconset-svg/iron-iconset-svg.html">
-
-<iron-iconset-svg name="route-controls" size="24">
-<svg><defs>
-  <g id="play-arrow"><path d="M8 5v14l11-7z"></path></g>
-  <g id="pause"><path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"></path></g>
-  <g id="volume-off"><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z"></path></g>
-  <g id="volume-up"><path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"></path></g>
-</defs></svg>
-</iron-iconset-svg>
-
-<dom-module id="route-controls">
-  <link rel="import" type="css" href="../../media_router_common.css">
-  <link rel="import" type="css" href="route_controls.css">
-  <template>
-    <style include="md-select"></style>
-    <div id="media-controls">
-      <div class="ellipsis" id="route-description"
-           title="[[routeDescription_]]">
-        [[routeDescription_]]
-      </div>
-      <div class="ellipsis" id="route-title" title="[[routeStatus.title]]"
-           hidden$="[[!shouldShowRouteStatusTitle_]]">
-        [[routeStatus.title]]
-      </div>
-      <div>
-        <div id="route-time-controls" hidden="[[!routeStatus.canSeek]]">
-          <cr-slider
-              aria-valuetext$="[[getTimeSliderValueText_(displayedCurrentTime_)]]"
-              dir="ltr"
-              id="route-time-slider"
-              on-dragging-changed="onSeekingChanged_"
-              on-cr-slider-value-changed="onSeekSliderValueChanged_"
-              min="0" max="[[routeStatus.duration]]"
-              title="[[i18n('seekTitle')]]"
-              value="[[displayedCurrentTime_]]"></cr-slider>
-          <div id="timeline">
-            <span id="current-time"
-                  aria-label$="[[getCurrentTimeLabel_(displayedCurrentTime_)]]">
-              [[getFormattedTime_(displayedCurrentTime_)]]
-            </span>
-            <span id="duration"
-                  aria-label$="[[getDurationLabel_(routeStatus.duration)]]">
-              [[getFormattedTime_(routeStatus.duration)]]
-            </span>
-          </div>
-        </div>
-        <div id="play-pause-volume-hangouts-controls">
-          <span id="button-holder" dir="ltr">
-            <cr-icon-button
-                id="route-play-pause-button"
-                hidden="[[!routeStatus.canPlayPause]]"
-                disabled="[[!routeStatus.canPlayPause]]"
-                iron-icon="[[getPlayPauseIcon_(routeStatus)]]"
-                title="[[getPlayPauseTitle_(routeStatus)]]"
-                on-click="onPlayPause_"></cr-icon-button>
-            <cr-icon-button
-                id="route-volume-button"
-                hidden="[[!routeStatus.canMute]]"
-                disabled="[[!routeStatus.canMute]]"
-                iron-icon="[[getMuteUnmuteIcon_(routeStatus)]]"
-                title="[[getMuteUnmuteTitle_(routeStatus)]]"
-                on-click="onMuteUnmute_"></cr-icon-button>
-          </span>
-          <span id="volume-holder" hidden="[[!routeStatus.canSetVolume]]">
-            <cr-slider
-                aria-valuetext$="[[getVolumeSliderValueText_(displayedVolume_)]]"
-                id="route-volume-slider"
-                disabled="[[!routeStatus.canSetVolume]]"
-                on-cr-slider-value-changed="onVolumeChanged_"
-                on-dragging-changed="onVolumeDraggingChanged_"
-                title="[[i18n('volumeTitle')]]"></cr-slider>
-          </span>
-          <div id="hangouts-local-present-controls"
-               hidden="[[!routeStatus.hangoutsExtraData]]">
-            <cr-checkbox
-                checked="[[hangoutsLocalPresent_]]"
-                id="hangouts-local-present-checkbox"
-                on-change="onHangoutsLocalPresentChange_">
-              <span id='hangouts-local-present-checkbox-title'>
-                [[i18n('hangoutsLocalPresentTitle')]]
-              </span>
-              <span id="hangouts-local-present-checkbox-subtitle">
-                [[i18n('hangoutsLocalPresentSubtitle')]]
-              </span>
-            </cr-checkbox>
-          </div>
-        </div>
-        <div id="mirroring-fullscreen-video-controls"
-            hidden="[[!routeStatus.mirroringExtraData]]">
-          [[i18n('fullscreenVideosDropdownTitle')]]
-          <select class="md-select"
-              id="mirroring-fullscreen-video-dropdown"
-              on-change="onFullscreenVideoDropdownChange_">
-            <option value="[[FullscreenVideoOption_.REMOTE_SCREEN]]">
-              [[i18n('fullscreenVideosRemoteScreen')]]
-            </option>
-            <option value="[[FullscreenVideoOption_.BOTH_SCREENS]]">
-              [[i18n('fullscreenVideosBothScreens')]]
-            </option>
-          </select>
-        </div>
-      </div>
-    </div>
-  </template>
-<script src="route_controls.js"></script>
-</dom-module>
diff --git a/chrome/browser/resources/media_router/elements/route_controls/route_controls.js b/chrome/browser/resources/media_router/elements/route_controls/route_controls.js
deleted file mode 100644
index e6769007..0000000
--- a/chrome/browser/resources/media_router/elements/route_controls/route_controls.js
+++ /dev/null
@@ -1,547 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * This Polymer element shows media controls for a route that is currently cast
- * to a device.
- * @implements {RouteControlsInterface}
- */
-Polymer({
-  is: 'route-controls',
-
-  properties: {
-    /**
-     * Set of possible options for playing fullscreen videos when mirroring.
-     * @private {!Object}
-     */
-    FullscreenVideoOption_: {
-      type: Object,
-      value: {
-        // Play on remote screen only.
-        REMOTE_SCREEN: 'remote_screen',
-        // Play on both remote and local screens.
-        BOTH_SCREENS: 'both_screens'
-      }
-    },
-
-    /**
-     * The current time displayed in seconds, before formatting.
-     * @private {number}
-     */
-    displayedCurrentTime_: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * The volume shown in the volume control, between 0 and 1.
-     * @private {number}
-     */
-    displayedVolume_: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * True if the Hangouts route is currently using local present mode.
-     * Valid for Hangouts routes only.
-     * @private {boolean}
-     */
-    hangoutsLocalPresent_: {
-      type: Boolean,
-      value: false,
-    },
-
-    /**
-     * The timestamp for when the initial media status was loaded.
-     * @private {number}
-     */
-    initialLoadTime_: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * Set to true when the user is dragging the seek bar. Updates for the
-     * current time from the browser will be ignored when set to true.
-     * @private {boolean}
-     */
-    isSeeking_: {
-      type: Boolean,
-      value: false,
-    },
-
-    /**
-     * Set to true when the user is dragging the volume bar. Volume updates from
-     * the browser will be ignored when set to true.
-     * @private
-     */
-    isVolumeChanging_: {
-      type: Boolean,
-      value: false,
-    },
-
-    /**
-     * The timestamp for when the controller last submitted a seek request.
-     * @private
-     */
-    lastSeekByUser_: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * The timestamp for when |routeStatus| was last updated.
-     * @private
-     */
-    lastStatusUpdate_: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * The timestamp for when the controller last submitted a volume change
-     * request.
-     * @private
-     */
-    lastVolumeChangeByUser_: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * Keep in sync with media remoting individual user setting.
-     * @private
-     */
-    mediaRemotingEnabled_: {
-      type: Boolean,
-      value: true,
-    },
-
-    /**
-     * The route currently associated with this controller.
-     * @type {?media_router.Route|undefined}
-     */
-    route: {
-      type: Object,
-      observer: 'onRouteUpdated_',
-    },
-
-    /**
-     * The route description to display. Uses the media route description if
-     * none is provided by the media route status object.
-     * @private {string}
-     */
-    routeDescription_: {
-      type: String,
-      value: '',
-    },
-
-    /**
-     * The timestamp for when the route details view was opened.
-     * @type {number}
-     */
-    routeDetailsOpenTime: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * The status of the media route shown.
-     * @type {!media_router.RouteStatus}
-     */
-    routeStatus: {
-      type: Object,
-      observer: 'onRouteStatusChange_',
-      value: new media_router.RouteStatus(),
-    },
-
-    /**
-     * The ID of the timer currently set to increment the current time of the
-     * media, or 0 if the current time is not being incremented.
-     * @private {number}
-     */
-    timeIncrementsTimeoutId_: {
-      type: Number,
-      value: 0,
-    },
-
-    /**
-     * Whether the controls should show the media title.
-     * @private {boolean}
-     */
-    shouldShowRouteStatusTitle_: {
-      type: Boolean,
-      value: false,
-    },
-  },
-
-  behaviors: [
-    I18nBehavior,
-  ],
-
-  /**
-   * Called by Polymer when the element loads. Registers the element to be
-   * notified of route status updates.
-   */
-  ready: function() {
-    media_router.ui.setRouteControls(
-        /** @type {RouteControlsInterface} */ (this));
-  },
-
-  /**
-   * Current time can be incremented if the media is playing, and either the
-   * duration is 0 or current time is less than the duration.
-   * @return {boolean}
-   * @private
-   */
-  canIncrementCurrentTime_: function() {
-    return !this.isSeeking_ &&
-        this.routeStatus.playState === media_router.PlayState.PLAYING &&
-        (this.routeStatus.duration === 0 ||
-         this.displayedCurrentTime_ < this.routeStatus.duration);
-  },
-
-  /**
-   * Creates an accessibility label for the element showing the media's current
-   * time.
-   * @param {number} displayedCurrentTime
-   * @return {string}
-   * @private
-   */
-  getCurrentTimeLabel_: function(displayedCurrentTime) {
-    return `${
-              this.i18n('currentTimeLabel')
-            } ${this.getFormattedTime_(displayedCurrentTime)}`;
-  },
-
-  /**
-   * Creates an accessibility label for the element showing the media's
-   * duration.
-   * @param {number} duration
-   * @return {string}
-   * @private
-   */
-  getDurationLabel_: function(duration) {
-    return `${this.i18n('durationLabel')} ${this.getFormattedTime_(duration)}`;
-  },
-
-  /**
-   * Converts a number representing an interval of seconds to a string with
-   * HH:MM:SS format.
-   * @param {number} timeInSec Must be non-negative. Intervals longer than 100
-   *     hours get truncated silently.
-   * @return {string}
-   * @private
-   */
-  getFormattedTime_: function(timeInSec) {
-    if (timeInSec < 0) {
-      return '';
-    }
-    var hours = Math.floor(timeInSec / 3600);
-    var minutes = Math.floor(timeInSec / 60) % 60;
-    var seconds = Math.floor(timeInSec) % 60;
-    // Show the hours only if it is nonzero.
-    return (hours ? ('0' + hours).substr(-2) + ':' : '') +
-        ('0' + minutes).substr(-2) + ':' + ('0' + seconds).substr(-2);
-  },
-
-  /**
-   * @param {!media_router.RouteStatus} routeStatus
-   * @return {string} The value for the icon attribute of the mute/unmute
-   *     button.
-   * @private
-   */
-  getMuteUnmuteIcon_: function(routeStatus) {
-    return routeStatus.isMuted ? 'route-controls:volume-off' :
-                                 'route-controls:volume-up';
-  },
-
-  /**
-   * @param {!media_router.RouteStatus} routeStatus
-   * @return {string} Localized title for the mute/unmute button.
-   * @private
-   */
-  getMuteUnmuteTitle_: function(routeStatus) {
-    return routeStatus.isMuted ? this.i18n('unmuteTitle') :
-                                 this.i18n('muteTitle');
-  },
-
-  /**
-   * @param {!media_router.RouteStatus} routeStatus
-   * @return {string}The value for the icon attribute of the play/pause button.
-   * @private
-   */
-  getPlayPauseIcon_: function(routeStatus) {
-    return routeStatus.playState === media_router.PlayState.PAUSED ?
-        'route-controls:play-arrow' :
-        'route-controls:pause';
-  },
-
-  /**
-   * @param {!media_router.RouteStatus} routeStatus
-   * @return {string} Localized title for the play/pause button.
-   * @private
-   */
-  getPlayPauseTitle_: function(routeStatus) {
-    return routeStatus.playState === media_router.PlayState.PAUSED ?
-        this.i18n('playTitle') :
-        this.i18n('pauseTitle');
-  },
-
-  /**
-   * @return {string} Text representing the current position on the seek slider.
-   * @private
-   */
-  getTimeSliderValueText_: function(displayedCurrentTime) {
-    if (!this.routeStatus) {
-      return '';
-    }
-    return `${
-              this.getFormattedTime_(displayedCurrentTime)
-            } / ${this.getFormattedTime_(this.routeStatus.duration)}`;
-  },
-
-  /**
-   * @param {number} volume
-   * @return {string} The volume as a percentage.
-   * @private
-   */
-  getVolumeSliderValueText_: function(volume) {
-    return String(Math.round(volume * 100)) + '%';
-  },
-
-  /**
-   * Checks whether the media is still playing, and if so, sends a media status
-   * update incrementing the current time and schedules another call for a
-   * second later.
-   * @private
-   */
-  maybeIncrementCurrentTime_: function() {
-    if (this.canIncrementCurrentTime_()) {
-      var updatedCurrentTime = this.routeStatus.currentTime +
-          Math.floor((Date.now() - this.lastStatusUpdate_) / 1000);
-      this.displayedCurrentTime_ = this.routeStatus.duration === 0 ?
-          updatedCurrentTime :
-          Math.min(updatedCurrentTime, this.routeStatus.duration);
-      if (this.routeStatus.duration === 0 ||
-          this.displayedCurrentTime_ < this.routeStatus.duration) {
-        this.timeIncrementsTimeoutId_ =
-            setTimeout(() => this.maybeIncrementCurrentTime_(), 1000);
-      }
-    } else {
-      this.timeIncrementsTimeoutId_ = 0;
-    }
-  },
-
-  /**
-   * Called when the "smooth motion" box for Hangouts is changed by the user.
-   * @param {!{target: !HTMLElement}} e
-   * @private
-   */
-  onHangoutsLocalPresentChange_: function(e) {
-    media_router.browserApi.setHangoutsLocalPresent(e.target.checked);
-  },
-
-  /**
-   * Called when the user toggles the mute status of the media. Sends a mute or
-   * unmute command to the browser.
-   * @private
-   */
-  onMuteUnmute_: function() {
-    media_router.browserApi.setCurrentMediaMute(!this.routeStatus.isMuted);
-  },
-
-  /**
-   * Called when the user toggles between playing and pausing the media. Sends a
-   * play or pause command to the browser.
-   * @private
-   */
-  onPlayPause_: function() {
-    if (this.routeStatus.playState === media_router.PlayState.PAUSED) {
-      media_router.browserApi.playCurrentMedia();
-    } else {
-      media_router.browserApi.pauseCurrentMedia();
-    }
-  },
-
-  /**
-   * Updates seek and volume bars if the user is not currently dragging on
-   * them.
-   * @param {!media_router.RouteStatus} newRouteStatus
-   * @private
-   */
-  onRouteStatusChange_: function(newRouteStatus) {
-    this.lastStatusUpdate_ = Date.now();
-    if (this.shouldAcceptCurrentTimeUpdates_()) {
-      this.displayedCurrentTime_ = newRouteStatus.currentTime;
-    }
-    if (this.shouldAcceptVolumeUpdates_()) {
-      const volume = Math.round(newRouteStatus.volume * 100);
-      this.$['route-volume-slider'].value = volume;
-      this.displayedVolume_ = volume / 100;
-    }
-    if (!this.initialLoadTime_) {
-      this.initialLoadTime_ = Date.now();
-      media_router.browserApi.reportWebUIRouteControllerLoaded(
-          this.initialLoadTime_ - this.routeDetailsOpenTime);
-    }
-    this.stopIncrementingCurrentTime_();
-    if (this.canIncrementCurrentTime_()) {
-      this.timeIncrementsTimeoutId_ =
-          setTimeout(() => this.maybeIncrementCurrentTime_(), 1000);
-    }
-    this.hangoutsLocalPresent_ = !!newRouteStatus.hangoutsExtraData &&
-        newRouteStatus.hangoutsExtraData.localPresent;
-    if (newRouteStatus.mirroringExtraData) {
-      // Manually update the selected value on the
-      // mirroring-fullscreen-video-dropdown dropbox.
-      // TODO(imcheng): Avoid doing this by wrapping the dropbox in a Polymer
-      // template, or introduce <paper-dropdown-menu> to the Polymer library.
-      this.$['mirroring-fullscreen-video-dropdown'].value =
-          newRouteStatus.mirroringExtraData.mediaRemotingEnabled ?
-          this.FullscreenVideoOption_.REMOTE_SCREEN :
-          this.FullscreenVideoOption_.BOTH_SCREENS;
-    }
-    this.shouldShowRouteStatusTitle_ = !!newRouteStatus.title &&
-        newRouteStatus.title != '' &&
-        newRouteStatus.title != this.routeDescription_;
-  },
-
-  /**
-   * Called when the route is updated. Updates the description shown if it has
-   * not been provided by status updates.
-   * @param {?media_router.Route} route
-   * @private
-   */
-  onRouteUpdated_: function(route) {
-    if (!route) {
-      this.stopIncrementingCurrentTime_();
-    }
-    if (route) {
-      this.routeDescription_ = route.description;
-    }
-  },
-
-  /** @private */
-  updateTime_: function() {
-    this.stopIncrementingCurrentTime_();
-    this.displayedCurrentTime_ = this.$['route-time-slider'].value;
-    if (!this.isSeeking_) {
-      media_router.browserApi.seekCurrentMedia(this.displayedCurrentTime_);
-      this.lastSeekByUser_ = Date.now();
-    }
-  },
-
-  /**
-   * @param {!CustomEvent<{value: boolean}>} e
-   * @private
-   */
-  onSeekingChanged_: function(e) {
-    this.isSeeking_ = e.detail.value;
-    this.updateTime_();
-  },
-
-  /** @private */
-  onSeekSliderValueChanged_: function() {
-    this.updateTime_();
-  },
-
-  /** @private */
-  updateVolume_: function() {
-    this.lastVolumeChangeByUser_ = Date.now();
-    const volume = this.$['route-volume-slider'].value / 100;
-    if (volume == this.displayedVolume_) {
-      return;
-    }
-    this.displayedVolume_ = volume;
-    media_router.browserApi.setCurrentMediaVolume(volume);
-  },
-
-  /**
-   * Called when the user updates volume with the slider.
-   * @private
-   */
-  onVolumeChanged_: function() {
-    /** @const */ var currentTime = Date.now();
-    // We limit the frequency of volume change requests during dragging to
-    // limit the number of Mojo calls to the component extension.
-    if (currentTime - this.lastVolumeChangeByUser_ < 300) {
-      return;
-    }
-    this.updateVolume_();
-  },
-
-  /**
-   * @param {!CustomEvent<{value: boolean}>} e
-   * @private
-   */
-  onVolumeDraggingChanged_: function(e) {
-    if (!!this.isVolumeChanging_ == !!e.detail.value) {
-      return;
-    }
-    this.isVolumeChanging_ = e.detail.value;
-    if (!this.isVolumeChanging_) {
-      this.updateVolume_();
-    }
-  },
-
-  /**
-   * Called when the value on the mirroring-fullscreen-video-dropdown dropdown
-   * menu changes.
-   * @param {!Event} e
-   * @private
-   */
-  onFullscreenVideoDropdownChange_: function(e) {
-    /** @const */ var dropdownValue =
-        this.$['mirroring-fullscreen-video-dropdown'].value;
-    media_router.browserApi.setMediaRemotingEnabled(
-        dropdownValue == this.FullscreenVideoOption_.REMOTE_SCREEN);
-  },
-
-  /**
-   * Resets the route controls. Called when the route details view is closed.
-   */
-  reset: function() {
-    this.routeStatus = new media_router.RouteStatus();
-    media_router.ui.setRouteControls(null);
-  },
-
-  /**
-   * @return {boolean} Whether external current time updates should be reflected
-   *     on the seek slider.
-   * @private
-   */
-  shouldAcceptCurrentTimeUpdates_: function() {
-    // Ignore external updates immediately after internal updates, because it's
-    // likely to just be internal updates coming back from the device, and could
-    // make the slider knob jump around.
-    return !this.isSeeking_ && Date.now() - this.lastSeekByUser_ > 1000;
-  },
-
-  /**
-   * @return {boolean} Whether external volume updates should be reflected on
-   *     the volume slider.
-   * @private
-   */
-  shouldAcceptVolumeUpdates_: function() {
-    // Ignore external updates immediately after internal updates, because it's
-    // likely to just be internal updates coming back from the device, and could
-    // make the slider knob jump around.
-    return !this.isVolumeChanging_ &&
-        Date.now() - this.lastVolumeChangeByUser_ > 1000;
-  },
-
-  /**
-   * If it is currently incrementing the current time shown, then stops doing
-   * so.
-   * @private
-   */
-  stopIncrementingCurrentTime_: function() {
-    if (this.timeIncrementsTimeoutId_) {
-      clearTimeout(this.timeIncrementsTimeoutId_);
-      this.timeIncrementsTimeoutId_ = 0;
-    }
-  }
-});
diff --git a/chrome/browser/resources/media_router/elements/route_controls/route_controls_interface.js b/chrome/browser/resources/media_router/elements/route_controls/route_controls_interface.js
deleted file mode 100644
index 53e5a48..0000000
--- a/chrome/browser/resources/media_router/elements/route_controls/route_controls_interface.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2017 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.
-
-/**
- * Interface for the Polymer element that shows media controls for a route that
- * is currently cast to a device.
- * @record
- */
-function RouteControlsInterface() {}
-
-/**
- * @type {!media_router.RouteStatus}
- */
-RouteControlsInterface.prototype.routeStatus;
-
-/**
- * Resets the route controls. Called when the route details view is closed.
- */
-RouteControlsInterface.prototype.reset = function() {};
diff --git a/chrome/browser/resources/media_router/elements/route_details/BUILD.gn b/chrome/browser/resources/media_router/elements/route_details/BUILD.gn
deleted file mode 100644
index b7559add..0000000
--- a/chrome/browser/resources/media_router/elements/route_details/BUILD.gn
+++ /dev/null
@@ -1,21 +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("//third_party/closure_compiler/compile_js.gni")
-
-js_type_check("closure_compile") {
-  deps = [
-    ":route_details",
-  ]
-}
-
-js_library("route_details") {
-  deps = [
-    "../..:media_router_data",
-    "../..:media_router_ui_interface",
-    "../route_controls:route_controls",
-    "//ui/webui/resources/js:i18n_behavior",
-    "//ui/webui/resources/js:load_time_data",
-  ]
-}
diff --git a/chrome/browser/resources/media_router/elements/route_details/route_details.css b/chrome/browser/resources/media_router/elements/route_details/route_details.css
deleted file mode 100644
index e48b7c2..0000000
--- a/chrome/browser/resources/media_router/elements/route_details/route_details.css
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2015 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-#route-action-buttons {
-  @apply --layout-horizontal;
-  @apply --layout-end-justified;
-  margin: 0 10px;
-  padding: 0;
-  white-space: nowrap;
-}
-
-.route-button {
-  background-color: white;
-  line-height: 12px;
-  margin: 12px 0;
-  text-align: end;
-}
-
-#route-description {
-  font-size: 1.2em;
-  line-height: 1.5em;
-  margin-top: 16px;
-  padding-inline-end: var(--dialog-padding-end);
-  padding-inline-start: 44px;
-}
diff --git a/chrome/browser/resources/media_router/elements/route_details/route_details.html b/chrome/browser/resources/media_router/elements/route_details/route_details.html
deleted file mode 100644
index 90077fc..0000000
--- a/chrome/browser/resources/media_router/elements/route_details/route_details.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="../route_controls/route_controls.html">
-<dom-module id="route-details">
-  <link rel="import" type="css" href="../../media_router_common.css">
-  <link rel="import" type="css" href="route_details.css">
-  <template>
-    <div class="ellipsis" id="route-description"
-         title="[[routeDescription_]]"
-         hidden$="[[shouldShowWebUiControls_(route)]]">
-      [[routeDescription_]]
-    </div>
-    <template is="dom-if" if="[[shouldShowWebUiControls_(route)]]">
-      <route-controls id="route-controls"
-          route-details-open-time="[[openTime_]]"
-          route="[[route]]"></route-controls>
-    </template>
-    <div id="route-action-buttons" class="layout">
-      <cr-button class="route-button button" id="start-casting-to-route-button"
-          hidden$="[[computeCastButtonHidden_(route,
-              changeRouteSourceAvailable_)]]" on-click="startCastingToRoute_">
-        <span>[[i18n('startCastingButtonText')]]</span>
-      </cr-button>
-      <cr-button class="route-button button" id="close-route-button"
-          on-click="closeRoute_">
-        <span>[[i18n('stopCastingButtonText')]]</span>
-      </cr-button>
-    <div>
-  </template>
-<script src="route_details.js"></script>
-</dom-module>
diff --git a/chrome/browser/resources/media_router/elements/route_details/route_details.js b/chrome/browser/resources/media_router/elements/route_details/route_details.js
deleted file mode 100644
index ec58fd8..0000000
--- a/chrome/browser/resources/media_router/elements/route_details/route_details.js
+++ /dev/null
@@ -1,221 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This Polymer element shows information from media that is currently cast
-// to a device.
-Polymer({
-  is: 'route-details',
-
-  properties: {
-    /**
-     * Description of the current casting activity, e.g. "Casting YouTube".
-     * @private {string|undefined}
-     */
-    routeDescription_: {
-      type: String,
-    },
-
-    /**
-     * Whether the external container will accept change-route-source-click
-     * events.
-     * @private {boolean}
-     */
-    changeRouteSourceAvailable_: {
-      type: Boolean,
-      computed: 'computeChangeRouteSourceAvailable_(route, sink,' +
-          'isAnySinkCurrentlyLaunching, shownCastModeValue)',
-    },
-
-    /**
-     * Whether a sink is currently launching in the container.
-     * @type {boolean}
-     */
-    isAnySinkCurrentlyLaunching: {
-      type: Boolean,
-      value: false,
-    },
-
-    /**
-     * The timestamp for when the route details view was opened. We initialize
-     * the value in a function so that the value is set when the element is
-     * loaded, rather than at page load.
-     * @private {number}
-     */
-    openTime_: {
-      type: Number,
-      value: function() {
-        return Date.now();
-      },
-    },
-
-    /**
-     * The route to show.
-     * @type {?media_router.Route|undefined}
-     */
-    route: {
-      type: Object,
-      observer: 'onRouteChange_',
-    },
-
-    /**
-     * The cast mode shown to the user. Initially set to auto mode. (See
-     * media_router.CastMode documentation for details on auto mode.)
-     * @type {number}
-     */
-    shownCastModeValue: {
-      type: Number,
-      value: media_router.AUTO_CAST_MODE.type,
-    },
-
-    /**
-     * Sink associated with |route|.
-     * @type {?media_router.Sink}
-     */
-    sink: {
-      type: Object,
-      value: null,
-    },
-  },
-
-  behaviors: [
-    I18nBehavior,
-  ],
-
-  /**
-   * Fires a close-route event. This is called when the button to close
-   * the current route is clicked.
-   *
-   * @private
-   */
-  closeRoute_: function() {
-    this.fire('close-route', {route: this.route});
-  },
-
-  /**
-   * @param {?media_router.Route|undefined} route
-   * @param {boolean} changeRouteSourceAvailable
-   * @return {boolean} Whether to show the button that allows casting to the
-   *     current route or the current route's sink.
-   */
-  computeCastButtonHidden_: function(route, changeRouteSourceAvailable) {
-    if (route === undefined || changeRouteSourceAvailable === undefined) {
-      return false;
-    }
-
-    return !((route && route.canJoin) || changeRouteSourceAvailable);
-  },
-
-  /**
-   * @param {?media_router.Route|undefined} route The current route for the
-   *     route details view.
-   * @param {?media_router.Sink|undefined} sink Sink associated with |route|.
-   * @param {boolean} isAnySinkCurrentlyLaunching Whether a sink is launching
-   *     now.
-   * @param {number} shownCastModeValue Currently selected cast mode value or
-   *     AUTO if no value has been explicitly selected.
-   * @return {boolean} Whether the change route source function should be
-   *     available when displaying |currentRoute| in the route details view.
-   *     Changing the route source should not be available when the currently
-   *     selected source that would be cast is the same as the route's current
-   *     source.
-   * @private
-   */
-  computeChangeRouteSourceAvailable_: function(
-      route, sink, isAnySinkCurrentlyLaunching, shownCastModeValue) {
-    if (isAnySinkCurrentlyLaunching || !route || !sink) {
-      return false;
-    }
-    if (!route.currentCastMode) {
-      return true;
-    }
-    var selectedCastMode =
-        this.computeSelectedCastMode_(shownCastModeValue, sink);
-    return (selectedCastMode != 0) &&
-        (selectedCastMode != route.currentCastMode);
-  },
-
-  /**
-   * @param {number} castMode User selected cast mode or AUTO.
-   * @param {?media_router.Sink} sink Sink to which we will cast.
-   * @return {number} The selected cast mode when |castMode| is selected in the
-   *     dialog and casting to |sink|.  Returning 0 means there is no cast mode
-   *     available to |sink| and therefore the start-casting-to-route button
-   *     will not be shown.
-   */
-  computeSelectedCastMode_: function(castMode, sink) {
-    // |sink| can be null when there is a local route, which is shown in the
-    // dialog, but the sink to which it is connected isn't in the current set of
-    // sinks known to the dialog.  This can happen, for example, with DIAL
-    // devices.  A route is created to a DIAL device, but opening the dialog on
-    // a tab that only supports mirroring will not show the DIAL device.  The
-    // route will be shown in route details if it is the only local route, so
-    // you arrive at this function with a null |sink|.
-    if (!sink) {
-      return 0;
-    }
-    if (castMode == media_router.CastModeType.AUTO) {
-      return sink.castModes & -sink.castModes;
-    }
-    return castMode & sink.castModes;
-  },
-
-  /**
-   * Called when the route details view is closed. Resets route-controls.
-   */
-  onClosed: function() {
-    if (this.$$('route-controls')) {
-      this.$$('route-controls').reset();
-    }
-  },
-
-  /**
-   * Called when the route details view is opened.
-   */
-  onOpened: function() {
-    if (this.$$('route-controls')) {
-      media_router.ui.setRouteControls(
-          /** @type {RouteControlsInterface} */ (this.$$('route-controls')));
-    }
-  },
-
-  /**
-   * Updates |routeDescription_| for the default view.
-   * @param {?media_router.Route} route
-   * @private
-   */
-  onRouteChange_: function(route) {
-    this.routeDescription_ = route ? route.description : '';
-  },
-
-  /**
-   * @param {?media_router.Route} route
-   * @return {boolean} Whether the WebUI route controller should be shown
-   *     instead of the default route description element.
-   * @private
-   */
-  shouldShowWebUiControls_: function(route) {
-    return !!route && !!route.supportsWebUiController;
-  },
-
-  /**
-   * Fires a join-route-click event if the current route is joinable, otherwise
-   * it fires a change-route-source-click event, which changes the source of the
-   * current route. This may cause the current route to be closed and a new
-   * route to be started. This is called when the button to start casting to the
-   * current route is clicked.
-   *
-   * @private
-   */
-  startCastingToRoute_: function() {
-    if (this.route.canJoin) {
-      this.fire('join-route-click', {route: this.route});
-    } else {
-      this.fire('change-route-source-click', {
-        route: this.route,
-        selectedCastMode:
-            this.computeSelectedCastMode_(this.shownCastModeValue, this.sink)
-      });
-    }
-  },
-});
diff --git a/chrome/browser/resources/media_router/externs.js b/chrome/browser/resources/media_router/externs.js
deleted file mode 100644
index 9e7ccd8..0000000
--- a/chrome/browser/resources/media_router/externs.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @interface */
-var InputDeviceCapabilities;
-
-/** @type {?InputDeviceCapabilities} */
-Event.prototype.sourceCapabilities;
-
-/**
- * @interface
- */
-var AnimationEffect = function() {};
-
-/**
- * @param {Element} target
- * @param {!Array<!Object>} frames
- * @param {(number|Object)=} timing
- * @constructor
- * @implements {AnimationEffect}
- */
-var KeyframeEffect = function(target, frames, timing) {};
-
-/**
- * @param {!Array<!AnimationEffect>} group
- * @constructor
- * @implements {AnimationEffect}
- */
-var GroupEffect = function(group) {};
-
-/**
- * @interface
- */
-var Animation = function() {};
-
-/**
- * @return {undefined}
- */
-Animation.prototype.cancel = function() {};
-
-/**
- * @type {!Promise}
- */
-Animation.prototype.finished;
-
-document.timeline = {};
-
-/**
- * @param {!AnimationEffect} effect
- * @return {!Animation}
- */
-document.timeline.play = function(effect) {};
-
-/**
- * @param {!number} index
- * @return {undefined}
- */
-Element.prototype.selectIndex = function(index) {};
diff --git a/chrome/browser/resources/media_router/icons/media_router_icons.html b/chrome/browser/resources/media_router/icons/media_router_icons.html
deleted file mode 100644
index 7d98ad6..0000000
--- a/chrome/browser/resources/media_router/icons/media_router_icons.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!-- The following icons are duplicated to avoid pulling in unused icons,
-     e.g. the entire cr_elements/icons.html file. -->
-<link rel="import" href="chrome://resources/html/polymer.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-iconset-svg/iron-iconset-svg.html">
-<iron-iconset-svg name="media-router" size="24">
-<svg><defs>
-  <!-- third_party/polymer/v1_0/components-chromium/iron-icons/iron-icons.html -->
-  <g id="folder"><path d="M0 0h24v24H0z" fill="none"></path><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z"></path></g>
-  <g id="search"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></g>
-  <g id="tab"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h10v4h8v10z"></path></g>
-
-  <!-- third_party/polymer/v1_0/components-chromium/iron-icons/av-icons.html -->
-  <g id="web"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-5 14H4v-4h11v4zm0-5H4V9h11v4zm5 5h-4V9h4v9z"></path></g>
-
-  <!-- third_party/polymer/v1_0/components-chromium/iron-icons/hardware-icons.html -->
-  <g id="laptop"><path d="M20 18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2H0v2h24v-2h-4zM4 6h16v10H4V6z"></path></g>
-  <g id="speaker"><path d="M17 2H7c-1.1 0-2 .9-2 2v16c0 1.1.9 1.99 2 1.99L17 22c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-5 2c1.1 0 2 .9 2 2s-.9 2-2 2c-1.11 0-2-.9-2-2s.89-2 2-2zm0 16c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"></path></g>
-  <g id="speaker-group"><path d="M18.2 1H9.8C8.81 1 8 1.81 8 2.8v14.4c0 .99.81 1.79 1.8 1.79l8.4.01c.99 0 1.8-.81 1.8-1.8V2.8c0-.99-.81-1.8-1.8-1.8zM14 3c1.1 0 2 .89 2 2s-.9 2-2 2-2-.89-2-2 .9-2 2-2zm0 13.5c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"></path><circle cx="14" cy="12.5" r="2.5"></circle><path d="M6 5H4v16c0 1.1.89 2 2 2h10v-2H6V5z"></path></g>
-  <g id="tv"><path d="M21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.1-.9-2-2-2zm0 14H3V5h18v12z"></path></g>
-
-  <!-- Icons below are swapped out in branded builds. -->
-  <!-- copy of third_party/polymer/v1_0/components-chromium/iron-icons/hardware-icons.html hardware:tv icon -->
-  <g id="chromecast"><path d="M21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.1-.9-2-2-2zm0 14H3V5h18v12z"></path></g>
-  <g id="education"><path d="M21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.1-.9-2-2-2zm0 14H3V5h18v12z"></path></g>
-  <!-- copy of third_party/polymer/v1_0/components-chromium/iron-icons/hardware-icons.html communication:message icon -->
-  <g id="hangout"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z"></path></g>
-  <g id="meeting"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z"></path></g>
-</defs></svg>
-</iron-iconset-svg>
diff --git a/chrome/browser/resources/media_router/media_router.css b/chrome/browser/resources/media_router/media_router.css
deleted file mode 100644
index 6b6092e..0000000
--- a/chrome/browser/resources/media_router/media_router.css
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2015 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-html {
-  /* Remove 300ms delay for 'click' event, when using touch interface. */
-  touch-action: manipulation;
-}
-
-body {
-  font-size: 0.75em;
-  margin: 0;
-}
-
-#media-router-container {
-  background-color: white;
-  box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14),
-              0 1px 8px 0 rgba(0, 0, 0, 0.12),
-              0 3px 3px -2px rgba(0, 0, 0, 0.4);
-  display: flex;
-  flex-direction: column;
-  margin-bottom: 1px;
-  width: calc(var(--dialog-width) - 1px);
-}
diff --git a/chrome/browser/resources/media_router/media_router.html b/chrome/browser/resources/media_router/media_router.html
deleted file mode 100644
index f40477a..0000000
--- a/chrome/browser/resources/media_router/media_router.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML>
-<html dir="$i18n{textdirection}" lang="$i18n{language}">
-<head>
-  <meta charset="utf-8">
-  <title>$i18n{mediaRouterTitle}</title>
-
-  <link rel="stylesheet" href="chrome://resources/css/roboto.css">
-  <link rel="stylesheet" href="media_router_common.css">
-  <link rel="stylesheet" href="media_router.css">
-  <link rel="import" href="chrome://resources/html/cr.html">
-  <link rel="import" href="chrome://resources/html/load_time_data.html">
-  <link rel="import" href="chrome://resources/html/util.html">
-  <script src="chrome://media-router/strings.js"></script>
-  <script src="chrome://media-router/media_router.js"></script>
-  <link rel="import" href="chrome://media-router/elements/media_router_container/media_router_container.html">
-</head>
-<body>
-  <media-router-container id="media-router-container"></media-router-container>
-</body>
-</html>
diff --git a/chrome/browser/resources/media_router/media_router.js b/chrome/browser/resources/media_router/media_router.js
deleted file mode 100644
index 79a31235..0000000
--- a/chrome/browser/resources/media_router/media_router.js
+++ /dev/null
@@ -1,397 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// <include src="media_router_browser_api.js">
-// <include src="media_router_data.js">
-// <include src="media_router_ui_interface.js">
-
-// Handles user events for the Media Router UI.
-cr.define('media_router', function() {
-  'use strict';
-
-  /**
-   * The media-router-container element. Initialized after polymer is ready.
-   * @type {?MediaRouterContainerInterface}
-   */
-  var container = null;
-
-  /**
-   * Initializes the Media Router WebUI and requests initial media
-   * router content, such as the media sink and media route lists.
-   */
-  function initialize() {
-    // For non-Mac platforms, request data immediately after initialization.
-    if (!cr.isMac) {
-      onRequestInitialData();
-    }
-
-    container = /** @type {!MediaRouterContainerInterface} */
-        ($('media-router-container'));
-
-    media_router.ui.setElements(container, container.header);
-
-    container.addEventListener(
-        'acknowledge-first-run-flow', onAcknowledgeFirstRunFlow);
-    container.addEventListener('back-click', onNavigateToSinkList);
-    container.addEventListener('cast-mode-selected', onCastModeSelected);
-    container.addEventListener(
-        'change-route-source-click', onChangeRouteSourceClick);
-    container.addEventListener('close-dialog', onCloseDialog);
-    container.addEventListener('close-route', onCloseRoute);
-    container.addEventListener('create-route', onCreateRoute);
-    container.addEventListener('issue-action-click', onIssueActionClick);
-    container.addEventListener('join-route-click', onJoinRouteClick);
-    container.addEventListener(
-        'navigate-sink-list-to-details', onNavigateToDetails);
-    container.addEventListener(
-        'navigate-to-cast-mode-list', onNavigateToCastMode);
-    container.addEventListener(
-        'select-local-media-file', onSelectLocalMediaFile);
-    container.addEventListener('report-filter', onFilter);
-    container.addEventListener('report-initial-action', onInitialAction);
-    container.addEventListener(
-        'report-initial-action-close', onInitialActionClose);
-    container.addEventListener('report-route-creation', onReportRouteCreation);
-    container.addEventListener(
-        'report-sink-click-time', onSinkClickTimeReported);
-    container.addEventListener('report-sink-count', onSinkCountReported);
-    container.addEventListener(
-        'report-resolved-route', onReportRouteCreationOutcome);
-    container.addEventListener('request-initial-data', onRequestInitialData);
-    container.addEventListener(
-        'search-sinks-and-create-route', onSearchSinksAndCreateRoute);
-    container.addEventListener('show-initial-state', onShowInitialState);
-    container.addEventListener('sink-click', onSinkClick);
-
-    window.addEventListener('blur', onWindowBlur);
-  }
-
-  /**
-   * Requests that the Media Router searches for a sink with criteria
-   * |event.detail.name|.
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   id - id of the pseudo sink generating the request.
-   *   name - sink search criteria.
-   *   domain - user's current domain.
-   *   selectedCastMode - type of cast mode selected by the user.
-   */
-  function onSearchSinksAndCreateRoute(event) {
-    /** @type {{id: string, domain: string, name: string,
-     *          selectedCastMode: number}} */
-    var detail = event.detail;
-    media_router.browserApi.searchSinksAndCreateRoute(
-        detail.id, detail.name, detail.domain, detail.selectedCastMode);
-  }
-
-  /**
-   * Reports the selected cast mode.
-   * Called when the user selects a cast mode from the picker.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   castModeType - type of cast mode selected by the user.
-   */
-  function onCastModeSelected(event) {
-    /** @type {{castModeType: number}} */
-    var detail = event.detail;
-    media_router.browserApi.reportSelectedCastMode(detail.castModeType);
-  }
-
-  /**
-   * Reports the route for which the users wants to replace the source and the
-   * cast mode that should be used for the new source.
-   *
-   * @param {!Event} event The event object.
-   * Parameters in |event|.detail:
-   *   route - route to modify.
-   *   selectedCastMode - type of cast mode selected by the user.
-   */
-  function onChangeRouteSourceClick(event) {
-    /** @type {{route: !media_router.Route, selectedCastMode: number}} */
-    var detail = event.detail;
-    media_router.browserApi.changeRouteSource(
-        detail.route, detail.selectedCastMode);
-  }
-
-  /**
-   * Sends a request to the browser to select a local file.
-   */
-  function onSelectLocalMediaFile() {
-    media_router.browserApi.selectLocalMediaFile();
-  }
-
-  /**
-   * Updates the preference that the user has seen the first run flow.
-   * Called when the user clicks on the acknowledgement button on the first run
-   * flow.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   optedIntoCloudServices - whether or not the user opted into cloud
-   *                            services.
-   */
-  function onAcknowledgeFirstRunFlow(event) {
-    /** @type {{optedIntoCloudServices: boolean}} */
-    var detail = event.detail;
-    media_router.browserApi.acknowledgeFirstRunFlow(
-        detail.optedIntoCloudServices);
-  }
-
-  /**
-   * Closes the dialog.
-   * Called when the user clicks the close button on the dialog. Reports
-   * whether the user closed the dialog via the ESC key.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   pressEscToClose - whether or not the user pressed ESC to close the
-   *                     dialog.
-   */
-  function onCloseDialog(event) {
-    /** @type {{pressEscToClose: boolean}} */
-    var detail = event.detail;
-    container.maybeReportUserFirstAction(
-        media_router.MediaRouterUserAction.CLOSE);
-    media_router.browserApi.closeDialog(detail.pressEscToClose);
-  }
-
-  /**
-   * Reports when the user uses the filter input to filter the sink list. This
-   * is reported at most once each time the user enters the filter view, and
-   * only if text is actually entered in the filter input.
-   */
-  function onFilter() {
-    media_router.browserApi.reportFilter();
-  }
-
-  /**
-   * Reports the first action the user takes after opening the dialog.
-   * Called when the user explicitly interacts with the dialog to perform an
-   * action.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   action - the first action taken by the user.
-   */
-  function onInitialAction(event) {
-    /** @type {{action: number}} */
-    var detail = event.detail;
-    media_router.browserApi.reportInitialAction(detail.action);
-  }
-
-  /**
-   * Reports the time it took for the user to close the dialog if that was the
-   * first action the user took after opening the dialog.
-   * Called when the user closes the dialog without taking any other action.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   timeMs - time in ms for the user to close the dialog.
-   */
-  function onInitialActionClose(event) {
-    /** @type {{timeMs: number}} */
-    var detail = event.detail;
-    media_router.browserApi.reportTimeToInitialActionClose(detail.timeMs);
-  }
-
-  /**
-   * Acts on an issue and dismisses it from the UI.
-   * Called when the user performs an action on an issue.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   id - issue ID.
-   *   actionType - type of action performed by the user.
-   *   helpPageId - the numeric help center ID.
-   */
-  function onIssueActionClick(event) {
-    /** @type {{id: number, actionType: number, helpPageId: number}} */
-    var detail = event.detail;
-    media_router.browserApi.actOnIssue(
-        detail.id, detail.actionType, detail.helpPageId);
-    container.issue = null;
-  }
-
-  /**
-   * Creates a media route.
-   * Called when the user requests to create a media route.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   sinkId - sink ID selected by the user.
-   *   selectedCastModeValue - cast mode selected by the user.
-   */
-  function onCreateRoute(event) {
-    /** @type {{sinkId: string, selectedCastModeValue: number}} */
-    var detail = event.detail;
-    media_router.browserApi.requestRoute(
-        detail.sinkId, detail.selectedCastModeValue);
-  }
-
-  /**
-   * Stops a route.
-   * Called when the user requests to stop a media route.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   route - The route to close.
-   */
-  function onCloseRoute(event) {
-    /** @type {{route: !media_router.Route}} */
-    var detail = event.detail;
-    media_router.browserApi.closeRoute(detail.route);
-  }
-
-  /**
-   * Starts casting to an existing route.
-   * Called when the user requests to start casting to a media route that is
-   * joinable.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   route - The route to connect to if possible.
-   */
-  function onJoinRouteClick(event) {
-    /** @type {{route: !media_router.Route}} */
-    var detail = event.detail;
-    media_router.browserApi.joinRoute(detail.route);
-  }
-
-  /**
-   * Reports the user navigation to the cast mode view.
-   * Called when the user clicks the drop arrow to navigate to the cast mode
-   * view on the dialog.
-   */
-  function onNavigateToCastMode() {
-    media_router.browserApi.reportNavigateToView(
-        media_router.MediaRouterView.CAST_MODE_LIST);
-  }
-
-  /**
-   * Reports the user navigation the route details view.
-   * Called when the user clicks on a sink to navigate to the route details
-   * view.
-   */
-  function onNavigateToDetails() {
-    media_router.browserApi.reportNavigateToView(
-        media_router.MediaRouterView.ROUTE_DETAILS);
-  }
-
-  /**
-   * Reports the user navigation the sink list view.
-   * Called when the user clicks on the back button from the route details view
-   * to the sink list view.
-   */
-  function onNavigateToSinkList() {
-    media_router.browserApi.reportNavigateToView(
-        media_router.MediaRouterView.SINK_LIST);
-  }
-
-  /**
-   * Reports whether or not the route creation was successful.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   success - whether or not the route creation was successful.
-   */
-  function onReportRouteCreation(event) {
-    /** @type {{success: boolean}} */
-    var detail = event.detail;
-    media_router.browserApi.reportRouteCreation(detail.success);
-  }
-
-  /**
-   * Reports success or the type of failure for route creation response.
-   * Called when the route is resolved; either the route creation was a success
-   * or if there was no route or the route's corresponding sink is invalid;
-   * either the sink does not exist or was not the sink we were looking for.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   outcome - the outcome of a create route response.
-   *
-   */
-  function onReportRouteCreationOutcome(event) {
-    /** @type {{outcome: number}} */
-    var detail = event.detail;
-    media_router.browserApi.reportRouteCreationOutcome(detail.outcome);
-  }
-
-  /**
-   * Requests for initial data to load into the dialog.
-   */
-  function onRequestInitialData() {
-    media_router.browserApi.requestInitialData();
-  }
-
-  /**
-   * Reports the initial state of the dialog after it is opened.
-   * Called after initial data is populated.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   currentView - the current dialog's current view.
-   */
-  function onShowInitialState(event) {
-    /** @type {{currentView: string}} */
-    var detail = event.detail;
-    media_router.browserApi.reportInitialState(detail.currentView);
-  }
-
-  /**
-   * Reports the index of the sink that was clicked.
-   * Called when the user selects a sink on the sink list.
-   *
-   * @param {!Event} event
-   * Paramters in |event|.detail:
-   *   index - the index of the clicked sink.
-   */
-  function onSinkClick(event) {
-    /** @type {{index: number}} */
-    var detail = event.detail;
-    media_router.browserApi.reportClickedSinkIndex(detail.index);
-  }
-
-  /**
-   * Reports the time it took for the user to select a sink to create a route
-   * after the list was popuated and shown.
-   *
-   * @param {!Event} event
-   * Paramters in |event|.detail:
-   *   timeMs - the time it took for the user to select a sink.
-   */
-  function onSinkClickTimeReported(event) {
-    /** @type {{timeMs: number}} */
-    var detail = event.detail;
-    media_router.browserApi.reportTimeToClickSink(detail.timeMs);
-  }
-
-  /**
-   * Reports the current sink count.
-   * Called 3 seconds after the dialog is initially opened.
-   *
-   * @param {!Event} event
-   * Parameters in |event|.detail:
-   *   sinkCount - the number of sinks.
-   */
-  function onSinkCountReported(event) {
-    /** @type {{sinkCount: number}} */
-    var detail = event.detail;
-    media_router.browserApi.reportSinkCount(detail.sinkCount);
-  }
-
-  /**
-   * Reports when the user clicks outside the dialog.
-   */
-  function onWindowBlur() {
-    media_router.browserApi.reportBlur();
-  }
-
-  return {
-    initialize: initialize,
-  };
-});
-
-window.addEventListener('load', media_router.initialize);
diff --git a/chrome/browser/resources/media_router/media_router_browser_api.js b/chrome/browser/resources/media_router/media_router_browser_api.js
deleted file mode 100644
index 9b5724b..0000000
--- a/chrome/browser/resources/media_router/media_router_browser_api.js
+++ /dev/null
@@ -1,359 +0,0 @@
-// Copyright 2017 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.
-
-// API invoked by this UI to communicate with the browser WebUI message handler.
-cr.define('media_router.browserApi', function() {
-  'use strict';
-
-  /**
-   * Indicates that the user has acknowledged the first run flow.
-   *
-   * @param {boolean} optedIntoCloudServices Whether or not the user opted into
-   *                  cloud services.
-   */
-  function acknowledgeFirstRunFlow(optedIntoCloudServices) {
-    chrome.send('acknowledgeFirstRunFlow', [optedIntoCloudServices]);
-  }
-
-  /**
-   * Acts on the given issue.
-   *
-   * @param {number} issueId
-   * @param {number} actionType Type of action that the user clicked.
-   * @param {?number} helpPageId The numeric help center ID.
-   */
-  function actOnIssue(issueId, actionType, helpPageId) {
-    chrome.send(
-        'actOnIssue',
-        [{issueId: issueId, actionType: actionType, helpPageId: helpPageId}]);
-  }
-
-  /**
-   * Modifies |route| by changing its source to the one identified by
-   * |selectedCastMode|.
-   *
-   * @param {!media_router.Route} route The route being modified.
-   * @param {number} selectedCastMode The value of the cast mode the user
-   *   selected.
-   */
-  function changeRouteSource(route, selectedCastMode) {
-    chrome.send(
-        'requestRoute',
-        [{sinkId: route.sinkId, selectedCastMode: selectedCastMode}]);
-  }
-
-  /**
-   * Closes the dialog.
-   *
-   * @param {boolean} pressEscToClose Whether the user pressed ESC to close the
-   *                  dialog.
-   */
-  function closeDialog(pressEscToClose) {
-    chrome.send('closeDialog', [pressEscToClose]);
-  }
-
-  /**
-   * Closes the given route.
-   *
-   * @param {!media_router.Route} route
-   */
-  function closeRoute(route) {
-    chrome.send('closeRoute', [{routeId: route.id, isLocal: route.isLocal}]);
-  }
-
-  /**
-   * Joins the given route.
-   *
-   * @param {!media_router.Route} route
-   */
-  function joinRoute(route) {
-    chrome.send('joinRoute', [{sinkId: route.sinkId, routeId: route.id}]);
-  }
-
-  /**
-   * Indicates that the initial data has been received.
-   */
-  function onInitialDataReceived() {
-    chrome.send('onInitialDataReceived');
-  }
-
-  /**
-   * Reports that the route details view was closed.
-   */
-  function onMediaControllerClosed() {
-    chrome.send('onMediaControllerClosed');
-  }
-
-  /**
-   * Reports that the route details view was opened for |routeId|.
-   *
-   * @param {string} routeId
-   */
-  function onMediaControllerAvailable(routeId) {
-    chrome.send('onMediaControllerAvailable', [{routeId: routeId}]);
-  }
-
-  /**
-   * Sends a command to pause the route shown in the route details view.
-   */
-  function pauseCurrentMedia() {
-    chrome.send('pauseCurrentMedia');
-  }
-
-  /**
-   * Sends a command to play the route shown in the route details view.
-   */
-  function playCurrentMedia() {
-    chrome.send('playCurrentMedia');
-  }
-
-  /**
-   * Reports when the user clicks outside the dialog.
-   */
-  function reportBlur() {
-    chrome.send('reportBlur');
-  }
-
-  /**
-   * Reports the index of the selected sink.
-   *
-   * @param {number} sinkIndex
-   */
-  function reportClickedSinkIndex(sinkIndex) {
-    chrome.send('reportClickedSinkIndex', [sinkIndex]);
-  }
-
-  /**
-   * Reports that the user used the filter input.
-   */
-  function reportFilter() {
-    chrome.send('reportFilter');
-  }
-
-  /**
-   * Reports the initial dialog view.
-   *
-   * @param {string} view
-   */
-  function reportInitialState(view) {
-    chrome.send('reportInitialState', [view]);
-  }
-
-  /**
-   * Reports the initial action the user took.
-   *
-   * @param {number} action
-   */
-  function reportInitialAction(action) {
-    chrome.send('reportInitialAction', [action]);
-  }
-
-  /**
-   * Reports the navigation to the specified view.
-   *
-   * @param {string} view
-   */
-  function reportNavigateToView(view) {
-    chrome.send('reportNavigateToView', [view]);
-  }
-
-  /**
-   * Reports whether or not a route was created successfully.
-   *
-   * @param {boolean} success
-   */
-  function reportRouteCreation(success) {
-    chrome.send('reportRouteCreation', [success]);
-  }
-
-  /**
-   * Reports the outcome of a create route response.
-   *
-   * @param {number} outcome
-   */
-  function reportRouteCreationOutcome(outcome) {
-    chrome.send('reportRouteCreationOutcome', [outcome]);
-  }
-
-  /**
-   * Reports the cast mode that the user selected.
-   *
-   * @param {number} castModeType
-   */
-  function reportSelectedCastMode(castModeType) {
-    chrome.send('reportSelectedCastMode', [castModeType]);
-  }
-
-  /**
-   * Reports the current number of sinks.
-   *
-   * @param {number} sinkCount
-   */
-  function reportSinkCount(sinkCount) {
-    chrome.send('reportSinkCount', [sinkCount]);
-  }
-
-  /**
-   * Reports the time it took for the user to select a sink after the sink list
-   * is populated and shown.
-   *
-   * @param {number} timeMs
-   */
-  function reportTimeToClickSink(timeMs) {
-    chrome.send('reportTimeToClickSink', [timeMs]);
-  }
-
-  /**
-   * Reports the time, in ms, it took for the user to close the dialog without
-   * taking any other action.
-   *
-   * @param {number} timeMs
-   */
-  function reportTimeToInitialActionClose(timeMs) {
-    chrome.send('reportTimeToInitialActionClose', [timeMs]);
-  }
-
-  /**
-   * Reports the time, in ms, it took the WebUI route controller to load media
-   * status info.
-   *
-   * @param {number} timeMs
-   */
-  function reportWebUIRouteControllerLoaded(timeMs) {
-    chrome.send('reportWebUIRouteControllerLoaded', [timeMs]);
-  }
-
-  /**
-   * Requests data to initialize the WebUI with.
-   * The data will be returned via media_router.ui.setInitialData.
-   */
-  function requestInitialData() {
-    chrome.send('requestInitialData');
-  }
-
-  /**
-   * Requests that a media route be started with the given sink.
-   *
-   * @param {string} sinkId The sink ID.
-   * @param {number} selectedCastMode The value of the cast mode the user
-   *   selected.
-   */
-  function requestRoute(sinkId, selectedCastMode) {
-    chrome.send(
-        'requestRoute', [{sinkId: sinkId, selectedCastMode: selectedCastMode}]);
-  }
-
-  /**
-   * Requests that the media router search all providers for a sink matching
-   * |searchCriteria| that can be used with the media source associated with the
-   * cast mode |selectedCastMode|. If such a sink is found, a route is also
-   * created between the sink and the media source.
-   *
-   * @param {string} sinkId Sink ID of the pseudo sink generating the request.
-   * @param {string} searchCriteria Search criteria for the route providers.
-   * @param {string} domain User's current hosted domain.
-   * @param {number} selectedCastMode The value of the cast mode to be used with
-   *   the sink.
-   */
-  function searchSinksAndCreateRoute(
-      sinkId, searchCriteria, domain, selectedCastMode) {
-    chrome.send('searchSinksAndCreateRoute', [{
-                  sinkId: sinkId,
-                  searchCriteria: searchCriteria,
-                  domain: domain,
-                  selectedCastMode: selectedCastMode
-                }]);
-  }
-
-  /**
-   * Sends a command to seek the route shown in the route details view.
-   *
-   * @param {number} time The new current time in seconds.
-   */
-  function seekCurrentMedia(time) {
-    chrome.send('seekCurrentMedia', [{time: time}]);
-  }
-
-  /**
-   * Sends a command to open a file dialog and allow the user to choose a local
-   * media file.
-   */
-  function selectLocalMediaFile() {
-    chrome.send('selectLocalMediaFile');
-  }
-
-  /**
-   * Sends a command to mute or unmute the route shown in the route details
-   * view.
-   *
-   * @param {boolean} mute Mute the route if true, unmute it if false.
-   */
-  function setCurrentMediaMute(mute) {
-    chrome.send('setCurrentMediaMute', [{mute: mute}]);
-  }
-
-  /**
-   * Sends a command to change the volume of the route shown in the route
-   * details view.
-   *
-   * @param {number} volume The volume between 0 and 1.
-   */
-  function setCurrentMediaVolume(volume) {
-    chrome.send('setCurrentMediaVolume', [{volume: volume}]);
-  }
-
-  /**
-   * Sets the local present mode of the Hangouts associated with the current
-   * route.
-   * @param {boolean} localPresent
-   */
-  function setHangoutsLocalPresent(localPresent) {
-    chrome.send('hangouts.setLocalPresent', [localPresent]);
-  }
-
-  /**
-   * Sends a command to change the Media Remoting enabled value associated with
-   * current route.
-   * @param {boolean} enabled
-   */
-  function setMediaRemotingEnabled(enabled) {
-    chrome.send('setMediaRemotingEnabled', [enabled]);
-  }
-
-  return {
-    acknowledgeFirstRunFlow: acknowledgeFirstRunFlow,
-    actOnIssue: actOnIssue,
-    changeRouteSource: changeRouteSource,
-    closeDialog: closeDialog,
-    closeRoute: closeRoute,
-    joinRoute: joinRoute,
-    onInitialDataReceived: onInitialDataReceived,
-    onMediaControllerClosed: onMediaControllerClosed,
-    onMediaControllerAvailable: onMediaControllerAvailable,
-    pauseCurrentMedia: pauseCurrentMedia,
-    playCurrentMedia: playCurrentMedia,
-    reportBlur: reportBlur,
-    reportClickedSinkIndex: reportClickedSinkIndex,
-    reportFilter: reportFilter,
-    reportInitialAction: reportInitialAction,
-    reportInitialState: reportInitialState,
-    reportNavigateToView: reportNavigateToView,
-    reportRouteCreation: reportRouteCreation,
-    reportRouteCreationOutcome: reportRouteCreationOutcome,
-    reportSelectedCastMode: reportSelectedCastMode,
-    reportSinkCount: reportSinkCount,
-    reportTimeToClickSink: reportTimeToClickSink,
-    reportTimeToInitialActionClose: reportTimeToInitialActionClose,
-    reportWebUIRouteControllerLoaded: reportWebUIRouteControllerLoaded,
-    requestInitialData: requestInitialData,
-    requestRoute: requestRoute,
-    searchSinksAndCreateRoute: searchSinksAndCreateRoute,
-    seekCurrentMedia: seekCurrentMedia,
-    selectLocalMediaFile: selectLocalMediaFile,
-    setCurrentMediaMute: setCurrentMediaMute,
-    setCurrentMediaVolume: setCurrentMediaVolume,
-    setHangoutsLocalPresent: setHangoutsLocalPresent,
-    setMediaRemotingEnabled: setMediaRemotingEnabled
-  };
-});
diff --git a/chrome/browser/resources/media_router/media_router_common.css b/chrome/browser/resources/media_router/media_router_common.css
deleted file mode 100644
index 7dba9da3..0000000
--- a/chrome/browser/resources/media_router/media_router_common.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright 2015 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file. */
-
-:host > * {
-  --dialog-padding-end: 26px;
-  --dialog-padding-start: 16px;
-  --dialog-width: 340px;
-  --navigation-icon-button-size: 36px;
-  --non-navigation-icon-size: 16px;
-  -webkit-font-smoothing: antialiased;
-  -webkit-tap-highlight-color: transparent;
-  font-family: 'Roboto', 'Noto', sans-serif;
-}
-
-.button {
-  color: var(--paper-blue-700);
-  cursor: pointer;
-  text-align: center;
-}
-
-[hidden] {
-  display: none !important;
-}
-
-.ellipsis {
-  overflow: hidden;
-  padding: 0 1%;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-cr-icon-button {
-  --cr-icon-button-color: black;
-  margin: 0;
-}
diff --git a/chrome/browser/resources/media_router/media_router_data.js b/chrome/browser/resources/media_router/media_router_data.js
deleted file mode 100644
index b9944d2..0000000
--- a/chrome/browser/resources/media_router/media_router_data.js
+++ /dev/null
@@ -1,355 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Any strings used here will already be localized. Values such as
-// CastMode.type or IDs will be defined elsewhere and determined later.
-
-cr.exportPath('media_router');
-
-/**
- * This corresponds to the C++ MediaCastMode, with the exception of AUTO.
- * See below for details. Note to support fast bitset operations, the values
- * here are (1 << [corresponding value in MR]).
- * @enum {number}
- */
-media_router.CastModeType = {
-  // Note: AUTO mode is only used to configure the sink list container to show
-  // all sinks. Individual sinks are configured with a specific cast mode
-  // (PRESENTATION, TAB_MIRROR, DESKTOP_MIRROR).
-  AUTO: -1,
-  PRESENTATION: 0x1,
-  TAB_MIRROR: 0x2,
-  DESKTOP_MIRROR: 0x4,
-  LOCAL_FILE: 0x8,
-};
-
-/**
- * The ESC key maps to KeyboardEvent.key value 'Escape'.
- * @const {string}
- */
-media_router.KEY_ESC = 'Escape';
-
-/**
- * This corresponds to the C++ MediaRouterMetrics
- * MediaRouterRouteCreationOutcome.
- * @enum {number}
- */
-media_router.MediaRouterRouteCreationOutcome = {
-  SUCCESS: 0,
-  FAILURE_NO_ROUTE: 1,
-  FAILURE_INVALID_SINK: 2,
-};
-
-/**
- * This corresponds to the C++ MediaRouterMetrics MediaRouterUserAction.
- * @enum {number}
- */
-media_router.MediaRouterUserAction = {
-  CHANGE_MODE: 0,
-  START_LOCAL: 1,
-  STOP_LOCAL: 2,
-  CLOSE: 3,
-  STATUS_REMOTE: 4,
-  REPLACE_LOCAL_ROUTE: 5,
-};
-
-/**
- * The possible states of the Media Router dialog. Used to determine which
- * components to show.
- * @enum {string}
- */
-media_router.MediaRouterView = {
-  CAST_MODE_LIST: 'cast-mode-list',
-  FILTER: 'filter',
-  ISSUE: 'issue',
-  ROUTE_DETAILS: 'route-details',
-  SINK_LIST: 'sink-list',
-};
-
-/**
- * The minimum number of sinks to have to enable the search input strictly for
- * filtering (i.e. the Media Router doesn't support search so the search input
- * only filters existing sinks).
- * @const {number}
- */
-media_router.MINIMUM_SINKS_FOR_SEARCH = 20;
-
-/**
- * The states that media can be in.
- * @enum {number}
- */
-media_router.PlayState = {
-  PLAYING: 0,
-  PAUSED: 1,
-  BUFFERING: 2,
-};
-
-/**
- * This corresponds to the C++ MediaSink IconType, and the order must stay in
- * sync.
- * @enum {number}
- */
-media_router.SinkIconType = {
-  CAST: 0,
-  CAST_AUDIO_GROUP: 1,
-  CAST_AUDIO: 2,
-  MEETING: 3,
-  HANGOUT: 4,
-  EDUCATION: 5,
-  WIRED_DISPLAY: 6,
-  GENERIC: 7,
-};
-
-/**
- * @enum {string}
- */
-media_router.SinkStatus = {
-  IDLE: 'idle',
-  ACTIVE: 'active',
-  REQUEST_PENDING: 'request_pending'
-};
-
-cr.define('media_router', function() {
-  'use strict';
-
-  /**
-   * @param {number} type The type of cast mode.
-   * @param {string} description The description of the cast mode.
-   * @param {?string} host The hostname of the site to cast.
-   * @param {boolean} isForced True if the mode is forced.
-   * @constructor
-   * @struct
-   */
-  var CastMode = function(type, description, host, isForced) {
-    /** @type {number} */
-    this.type = type;
-
-    /** @type {string} */
-    this.description = description;
-
-    /** @type {?string} */
-    this.host = host || null;
-
-    /** @type {boolean} */
-    this.isForced = isForced;
-  };
-
-  /**
-   * Placeholder object for AUTO cast mode. See comment in CastModeType.
-   * @const {!media_router.CastMode}
-   */
-  var AUTO_CAST_MODE = new CastMode(
-      media_router.CastModeType.AUTO, loadTimeData.getString('autoCastMode'),
-      null, false);
-
-  /**
-   * @param {number} id The ID of this issue.
-   * @param {string} title The issue title.
-   * @param {string} message The issue message.
-   * @param {number} defaultActionType The type of default action.
-   * @param {number|undefined} secondaryActionType The type of optional action.
-   * @param {?string} routeId The route ID to which this issue
-   *                  pertains. If not set, this is a global issue.
-   * @param {boolean} isBlocking True if this issue blocks other UI.
-   * @param {?number} helpPageId The numeric help center ID.
-   * @constructor
-   * @struct
-   */
-  var Issue = function(
-      id, title, message, defaultActionType, secondaryActionType, routeId,
-      isBlocking, helpPageId) {
-    /** @type {number} */
-    this.id = id;
-
-    /** @type {string} */
-    this.title = title;
-
-    /** @type {string} */
-    this.message = message;
-
-    /** @type {number} */
-    this.defaultActionType = defaultActionType;
-
-    /** @type {number|undefined} */
-    this.secondaryActionType = secondaryActionType;
-
-    /** @type {?string} */
-    this.routeId = routeId;
-
-    /** @type {boolean} */
-    this.isBlocking = isBlocking;
-
-    /** @type {?number} */
-    this.helpPageId = helpPageId;
-  };
-
-  /**
-   * @param {string} id The media route ID.
-   * @param {string} sinkId The ID of the media sink running this route.
-   * @param {string} description The short description of this route.
-   * @param {?number} tabId The ID of the tab in which web app is running and
-   *                  accessing the route.
-   * @param {boolean} isLocal True if this is a locally created route.
-   * @param {boolean} canJoin True if this route can be joined.
-   * @param {?string} customControllerPath non-empty if this route has custom
-   *                  controller.
-   * @constructor
-   * @struct
-   */
-  var Route = function(
-      id, sinkId, description, tabId, isLocal, canJoin, customControllerPath) {
-    /** @type {string} */
-    this.id = id;
-
-    /** @type {string} */
-    this.sinkId = sinkId;
-
-    /** @type {string} */
-    this.description = description;
-
-    /** @type {?number} */
-    this.tabId = tabId;
-
-    /** @type {boolean} */
-    this.isLocal = isLocal;
-
-    /** @type {boolean} */
-    this.canJoin = canJoin;
-
-    /** @type {number|undefined} */
-    this.currentCastMode = undefined;
-
-    /** @type {?string} */
-    this.customControllerPath = customControllerPath;
-
-    /** @type {boolean} */
-    this.supportsWebUiController = false;
-  };
-
-  /**
-   * @param {string} title The title of the route.
-   * @param {boolean} canPlayPause Whether the route can be played/paused.
-   * @param {boolean} canMute Whether the route can be muted/unmuted.
-   * @param {boolean} canSetVolume Whether the route volume can be changed.
-   * @param {boolean} canSeek Whether the route's playback position can be
-   *     changed.
-   * @param {boolean} isPaused Whether the route is paused.
-   * @param {boolean} isMuted Whether the route is muted.
-   * @param {number} volume The route's volume, between 0 and 1.
-   * @param {number} duration The route's duration in seconds.
-   * @param {number} currentTime The route's current position in seconds.
-   *     Must not be greater than |duration|.
-   * @param {!{mediaRemotingEnabled: boolean}=} mirroringExtraData Only set for
-   *     mirroring routes.
-   * @param {!{localPresent: boolean}=} hangoutsExtraData Only set for Hangouts
-   *     routes.
-   * @constructor
-   * @struct
-   */
-  var RouteStatus = function(
-      title = '', canPlayPause = false, canMute = false, canSetVolume = false,
-      canSeek = false, playState = media_router.PlayState.PLAYING,
-      isPaused = false, isMuted = false, volume = 0, duration = 0,
-      currentTime = 0, hangoutsExtraData = undefined,
-      mirroringExtraData = undefined) {
-
-    /** @type {string} */
-    this.title = title;
-
-    /** @type {boolean} */
-    this.canPlayPause = canPlayPause;
-
-    /** @type {boolean} */
-    this.canMute = canMute;
-
-    /** @type {boolean} */
-    this.canSetVolume = canSetVolume;
-
-    /** @type {boolean} */
-    this.canSeek = canSeek;
-
-    /** @type {media_router.PlayState} */
-    this.playState = playState;
-
-    /** @type {boolean} */
-    this.isMuted = isMuted;
-
-    /** @type {number} */
-    this.volume = volume;
-
-    /** @type {number} */
-    this.duration = duration;
-
-    /** @type {number} */
-    this.currentTime = currentTime;
-
-    /** @type {!{localPresent: boolean}|undefined} */
-    this.hangoutsExtraData = hangoutsExtraData;
-
-    /** @type {!{mediaRemotingEnabled: boolean}|undefined} */
-    this.mirroringExtraData = mirroringExtraData;
-  };
-
-  /**
-   * @param {string} id The ID of the media sink.
-   * @param {string} name The name of the sink.
-   * @param {?string} description Optional description of the sink.
-   * @param {?string} domain Optional domain of the sink.
-   * @param {media_router.SinkIconType} iconType the type of icon for the sink.
-   * @param {media_router.SinkStatus} status The readiness state of the sink.
-   * @param {number} castModes Bitset of cast modes compatible with the sink.
-   * @constructor
-   * @struct
-   */
-  var Sink = function(
-      id, name, description, domain, iconType, status, castModes) {
-    /** @type {string} */
-    this.id = id;
-
-    /** @type {string} */
-    this.name = name;
-
-    /** @type {?string} */
-    this.description = description;
-
-    /** @type {?string} */
-    this.domain = domain;
-
-    /** @type {!media_router.SinkIconType} */
-    this.iconType = iconType;
-
-    /** @type {!media_router.SinkStatus} */
-    this.status = status;
-
-    /** @type {number} */
-    this.castModes = castModes;
-
-    /** @type {boolean} */
-    this.isPseudoSink = false;
-  };
-
-  /**
-   * @param {number} tabId The current tab ID.
-   * @param {string} domain The domain of the current tab.
-   * @constructor
-   * @struct
-   */
-  var TabInfo = function(tabId, domain) {
-    /** @type {number} */
-    this.tabId = tabId;
-
-    /** @type {string} */
-    this.domain = domain;
-  };
-
-  return {
-    AUTO_CAST_MODE: AUTO_CAST_MODE,
-    CastMode: CastMode,
-    Issue: Issue,
-    Route: Route,
-    RouteStatus: RouteStatus,
-    Sink: Sink,
-    TabInfo: TabInfo,
-  };
-});
diff --git a/chrome/browser/resources/media_router/media_router_ui_interface.js b/chrome/browser/resources/media_router/media_router_ui_interface.js
deleted file mode 100644
index 1ffbb771..0000000
--- a/chrome/browser/resources/media_router/media_router_ui_interface.js
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// API invoked by the browser MediaRouterWebUIMessageHandler to communicate
-// with this UI.
-cr.define('media_router.ui', function() {
-  'use strict';
-
-  // The media-router-container element.
-  var container = null;
-
-  // The media-router-header element.
-  var header = null;
-
-  // The route-controls element. Is null if the route details view isn't open.
-  var routeControls = null;
-
-  // The initial height for |container|.
-  var initialMaxHeight = 0;
-
-  /**
-   * Handles response of previous create route attempt.
-   *
-   * @param {string} sinkId The ID of the sink to which the Media Route was
-   *     creating a route.
-   * @param {?media_router.Route} route The newly created route that
-   *     corresponds to the sink if route creation succeeded; null otherwise.
-   * @param {boolean} isForDisplay Whether or not |route| is for display.
-   */
-  function onCreateRouteResponseReceived(sinkId, route, isForDisplay) {
-    container.onCreateRouteResponseReceived(sinkId, route, isForDisplay);
-  }
-
-  /**
-   * Called when the route controller for the route that is currently selected
-   * is invalidated.
-   */
-  function onRouteControllerInvalidated() {
-    container.onRouteControllerInvalidated();
-  }
-
-  /**
-   * Handles the search response by forwarding |sinkId| to the container.
-   *
-   * @param {string} sinkId The ID of the sink found by search.
-   */
-  function receiveSearchResult(sinkId) {
-    container.onReceiveSearchResult(sinkId);
-  }
-
-  /**
-   * Sets the cast mode list.
-   *
-   * @param {!Array<!media_router.CastMode>} castModeList
-   */
-  function setCastModeList(castModeList) {
-    container.castModeList = castModeList;
-  }
-
-  /**
-   * Sets |container| and |header|.
-   *
-   * @param {!MediaRouterContainerInterface} mediaRouterContainer
-   * @param {!MediaRouterHeaderElement} mediaRouterHeader
-   */
-  function setElements(mediaRouterContainer, mediaRouterHeader) {
-    container = mediaRouterContainer;
-    header = mediaRouterHeader;
-
-    if (initialMaxHeight) {
-      container.updateMaxDialogHeight(initialMaxHeight);
-      initialMaxHeight = 0;
-    }
-  }
-
-  /**
-   * Populates the WebUI with data obtained about the first run flow.
-   *
-   * @param {{firstRunFlowCloudPrefLearnMoreUrl: string,
-   *          firstRunFlowLearnMoreUrl: string,
-   *          wasFirstRunFlowAcknowledged: boolean,
-   *          showFirstRunFlowCloudPref: boolean}} data
-   * Parameters in data:
-   *   firstRunFlowCloudPrefLearnMoreUrl - url to open when the cloud services
-   *       pref learn more link is clicked.
-   *   firstRunFlowLearnMoreUrl - url to open when the first run flow learn
-   *       more link is clicked.
-   *   wasFirstRunFlowAcknowledged - true if first run flow was previously
-   *       acknowledged by user.
-   *   showFirstRunFlowCloudPref - true if the cloud pref option should be
-   *       shown.
-   */
-  function setFirstRunFlowData(data) {
-    container.firstRunFlowCloudPrefLearnMoreUrl =
-        data['firstRunFlowCloudPrefLearnMoreUrl'];
-    container.firstRunFlowLearnMoreUrl = data['firstRunFlowLearnMoreUrl'];
-    container.showFirstRunFlowCloudPref = data['showFirstRunFlowCloudPref'];
-    // Some users acknowledged the first run flow before the cloud prefs
-    // setting was implemented. These users will see the first run flow
-    // again.
-    container.showFirstRunFlow = !data['wasFirstRunFlowAcknowledged'] ||
-        container.showFirstRunFlowCloudPref;
-  }
-
-  /**
-   * Populates the WebUI with data obtained from Media Router.
-   *
-   * @param {{deviceMissingUrl: string,
-   *          sinksAndIdentity: {
-   *            sinks: !Array<!media_router.Sink>,
-   *            showEmail: boolean,
-   *            userEmail: string,
-   *            showDomain: boolean
-   *          },
-   *          routes: !Array<!media_router.Route>,
-   *          castModes: !Array<!media_router.CastMode>,
-   *          useTabMirroring: boolean}} data
-   * Parameters in data:
-   *   deviceMissingUrl - url to be opened on "Device missing?" clicked.
-   *   sinksAndIdentity - list of sinks to be displayed and user identity.
-   *   useWebUiRouteControls - whether new WebUI route controls should be used.
-   *   routes - list of routes that are associated with the sinks.
-   *   castModes - list of available cast modes.
-   *   useTabMirroring - whether the cast mode should be set to TAB_MIRROR.
-   */
-  function setInitialData(data) {
-    container.deviceMissingUrl = data['deviceMissingUrl'];
-    container.castModeList = data['castModes'];
-    this.setSinkListAndIdentity(data['sinksAndIdentity']);
-    container.routeList = data['routes'];
-    container.maybeShowRouteDetailsOnOpen();
-    if (data['useTabMirroring']) {
-      container.selectCastMode(media_router.CastModeType.TAB_MIRROR);
-    }
-    media_router.browserApi.onInitialDataReceived();
-  }
-
-  /**
-   * Sets current issue to |issue|, or clears the current issue if |issue| is
-   * null.
-   *
-   * @param {?media_router.Issue} issue
-   */
-  function setIssue(issue) {
-    container.issue = issue;
-  }
-
-  /**
-   * Sets |routeControls|. The argument may be null if the route details view is
-   * getting closed.
-   *
-   * @param {?RouteControlsInterface} mediaRouterRouteControls
-   */
-  function setRouteControls(mediaRouterRouteControls) {
-    routeControls = mediaRouterRouteControls;
-  }
-
-  /**
-   * Sets the list of currently active routes.
-   *
-   * @param {!Array<!media_router.Route>} routeList
-   */
-  function setRouteList(routeList) {
-    container.routeList = routeList;
-  }
-
-  /**
-   * Sets the list of discovered sinks along with properties of whether to hide
-   * identity of the user email and domain.
-   *
-   * @param {{sinks: !Array<!media_router.Sink>,
-   *          showEmail: boolean,
-   *          userEmail: string,
-   *          showDomain: boolean}} data
-   * Parameters in data:
-   *   sinks - list of sinks to be displayed.
-   *   showEmail - true if the user email should be shown.
-   *   userEmail - email of the user if the user is signed in.
-   *   showDomain - true if the user domain should be shown.
-   */
-  function setSinkListAndIdentity(data) {
-    container.showDomain = data['showDomain'];
-    container.allSinks = data['sinks'];
-    header.userEmail = data['userEmail'];
-    header.showEmail = data['showEmail'];
-  }
-
-  /**
-   * Updates the max height of the dialog
-   *
-   * @param {number} height
-   */
-  function updateMaxHeight(height) {
-    if (container) {
-      container.updateMaxDialogHeight(height);
-    } else {
-      // Update the max height once |container| gets set.
-      initialMaxHeight = height;
-    }
-  }
-
-  /**
-   * Updates the route status shown in the route controls.
-   *
-   * @param {!media_router.RouteStatus} status
-   */
-  function updateRouteStatus(status) {
-    if (routeControls) {
-      routeControls.routeStatus = status;
-    }
-  }
-
-  function userSelectedLocalMediaFile(fileName) {
-    container.onFileDialogSuccess(fileName);
-  }
-
-  return {
-    onCreateRouteResponseReceived: onCreateRouteResponseReceived,
-    onRouteControllerInvalidated: onRouteControllerInvalidated,
-    receiveSearchResult: receiveSearchResult,
-    setCastModeList: setCastModeList,
-    setElements: setElements,
-    setFirstRunFlowData: setFirstRunFlowData,
-    setInitialData: setInitialData,
-    setIssue: setIssue,
-    setRouteControls: setRouteControls,
-    setRouteList: setRouteList,
-    setSinkListAndIdentity: setSinkListAndIdentity,
-    updateMaxHeight: updateMaxHeight,
-    updateRouteStatus: updateRouteStatus,
-    userSelectedLocalMediaFile: userSelectedLocalMediaFile,
-  };
-});
diff --git a/chrome/browser/resources/print_preview/ui/destination_dialog.js b/chrome/browser/resources/print_preview/ui/destination_dialog.js
index 8d28935..06dabe38 100644
--- a/chrome/browser/resources/print_preview/ui/destination_dialog.js
+++ b/chrome/browser/resources/print_preview/ui/destination_dialog.js
@@ -309,7 +309,6 @@
     this.metrics_.record(
         print_preview.Metrics.DestinationSearchBucket.SIGNIN_TRIGGERED);
     print_preview.NativeLayer.getInstance().signIn(false);
-    this.$.searchBox.focus();
   },
 
   /** @private */
@@ -418,6 +417,10 @@
     if (this.shouldShowCloudPrintPromo_) {
       this.metrics_.record(
           print_preview.Metrics.DestinationSearchBucket.SIGNIN_PROMPT);
+    } else {
+      // Since the sign in link/dismiss promo button is disappearing, focus the
+      // search box.
+      this.$.searchBox.focus();
     }
   },
 
diff --git a/chrome/browser/resources/settings/about_page/about_page.html b/chrome/browser/resources/settings/about_page/about_page.html
index 17e2388..ebdeb673 100644
--- a/chrome/browser/resources/settings/about_page/about_page.html
+++ b/chrome/browser/resources/settings/about_page/about_page.html
@@ -179,22 +179,20 @@
             </span>
           </div>
 <if expr="chromeos">
-          <div id="aboutTPMFirmwareUpdate" class="settings-box two-line"
+          <cr-link-row
+              id="aboutTPMFirmwareUpdate"
+              class="hr"
               hidden$="[[!showTPMFirmwareUpdateLineItem_]]"
-              on-click="onTPMFirmwareUpdateTap_" actionable>
-            <div class="start">
-              <div>$i18n{aboutTPMFirmwareUpdateTitle}</div>
-              <div class="secondary">
-                $i18n{aboutTPMFirmwareUpdateDescription}
-                <a href="$i18n{aboutTPMFirmwareUpdateLearnMoreURL}"
-                    target="_blank" on-click="onLearnMoreTap_">
-                  $i18n{learnMore}
-                </a>
-              </div>
+              label="$i18n{aboutTPMFirmwareUpdateTitle}"
+              on-click="onTPMFirmwareUpdateTap_">
+            <div slot="sub-label">
+              $i18n{aboutTPMFirmwareUpdateDescription}
+              <a href="$i18n{aboutTPMFirmwareUpdateLearnMoreURL}"
+                  target="_blank" on-click="onLearnMoreTap_">
+                $i18n{learnMore}
+              </a>
             </div>
-            <cr-icon-button class="subpage-arrow"
-                aria-labelledby="aboutTPMFirmwareUpdate"></cr-icon-button>
-          </div>
+          </cr-link-row>
 </if>
 <if expr="_google_chrome and is_macosx">
           <template is="dom-if" if="[[!promoteUpdaterStatus_.hidden]]">
diff --git a/chrome/browser/resources/settings/appearance_page/appearance_page.html b/chrome/browser/resources/settings/appearance_page/appearance_page.html
index 584f47f..df9863a 100644
--- a/chrome/browser/resources/settings/appearance_page/appearance_page.html
+++ b/chrome/browser/resources/settings/appearance_page/appearance_page.html
@@ -74,7 +74,7 @@
 <if expr="is_linux and not chromeos">
           <div class="settings-row continuation"
               hidden="[[!showThemesSecondary_(
-              prefs.extensions.theme.id.value, useSystemTheme_)]]"
+                  prefs.extensions.theme.id.value, useSystemTheme_)]]"
               id="themesSecondaryActions">
             <div class="separator"></div>
             <template is="dom-if" if="[[showUseClassic_(
@@ -143,7 +143,7 @@
         </settings-toggle-button>
 </if>
         <div class="settings-box">
-          <div class="start">$i18n{fontSize}</div>
+          <div class="start settings-box-text">$i18n{fontSize}</div>
           <settings-dropdown-menu id="defaultFontSize" label="$i18n{fontSize}"
               pref="{{prefs.webkit.webprefs.default_font_size}}"
               menu-options="[[fontSizeOptions_]]">
@@ -153,7 +153,9 @@
             label="$i18n{customizeFonts}" on-click="onCustomizeFontsTap_">
         </cr-link-row>
         <div class="settings-box" hidden="[[!pageVisibility.pageZoom]]">
-          <div id="pageZoom" class="start">$i18n{pageZoom}</div>
+          <div id="pageZoom" class="start settings-box-text">
+            $i18n{pageZoom}
+          </div>
           <select id="zoomLevel" class="md-select" aria-labelledby="pageZoom"
               on-change="onZoomLevelChange_">
             <template is="dom-repeat" items="[[pageZoomLevels_]]">
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.html b/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.html
index 4601d9f..a66a14e 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.html
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.html
@@ -138,22 +138,20 @@
               </cr-button>
             </span>
           </div>
-          <div id="aboutTPMFirmwareUpdate" class="settings-box two-line"
+          <cr-link-row
+              id="aboutTPMFirmwareUpdate"
+              class="hr"
               hidden$="[[!showTPMFirmwareUpdateLineItem_]]"
-              on-click="onTPMFirmwareUpdateClick_" actionable>
-            <div class="start">
-              <div>$i18n{aboutTPMFirmwareUpdateTitle}</div>
-              <div class="secondary">
-                $i18n{aboutTPMFirmwareUpdateDescription}
-                <a href="$i18n{aboutTPMFirmwareUpdateLearnMoreURL}"
-                    target="_blank" on-click="onLearnMoreClick_">
-                  $i18n{learnMore}
-                </a>
-              </div>
+              label="$i18n{aboutTPMFirmwareUpdateTitle}"
+              on-click="onTPMFirmwareUpdateClick_">
+            <div slot="sub-label">
+              $i18n{aboutTPMFirmwareUpdateDescription}
+              <a href="$i18n{aboutTPMFirmwareUpdateLearnMoreURL}"
+                  target="_blank" on-click="onLearnMoreClick_">
+                $i18n{learnMore}
+              </a>
             </div>
-            <cr-icon-button class="subpage-arrow"
-                aria-labelledby="aboutTPMFirmwareUpdate"></cr-icon-button>
-          </div>
+          </cr-link-row>
           <cr-link-row class="hr" id="help" on-click="onHelpClick_"
               label="$i18n{aboutGetHelpUsingChromeOs}" external></cr-link-row>
 <if expr="_google_chrome">
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html b/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html
index e504367..14d235a 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html
+++ b/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html
@@ -26,9 +26,6 @@
 
       a[href],
       #advancedButton {
-        --cr-selectable-focus: {
-          outline: auto 5px -webkit-focus-ring-color;
-        };
         align-items: center;
         color: var(--settings-nav-item-color);
         display: flex;
@@ -45,6 +42,11 @@
         color: var(--cr-link-color);
       }
 
+      a[href]:focus {
+        background: transparent;
+        outline: auto 5px -webkit-focus-ring-color;
+      }
+
       iron-icon {
         --iron-icon-fill-color: var(--settings-nav-icon-color);
         margin-inline-end: 24px;
diff --git a/chrome/browser/resources/settings/downloads_page/downloads_page.html b/chrome/browser/resources/settings/downloads_page/downloads_page.html
index fcb8191..966a88d 100644
--- a/chrome/browser/resources/settings/downloads_page/downloads_page.html
+++ b/chrome/browser/resources/settings/downloads_page/downloads_page.html
@@ -25,7 +25,7 @@
       focus-config="[[focusConfig_]]">
     <div route-path="default">
       <div class="settings-box first two-line">
-        <div class="start">
+        <div class="start settings-box-text">
           <div>$i18n{downloadLocation}</div>
           <div class="secondary" id="defaultDownloadPath">
 <if expr="not chromeos">
diff --git a/chrome/browser/resources/settings/search_page/search_page.html b/chrome/browser/resources/settings/search_page/search_page.html
index b98d0a8..109fe94a 100644
--- a/chrome/browser/resources/settings/search_page/search_page.html
+++ b/chrome/browser/resources/settings/search_page/search_page.html
@@ -46,7 +46,7 @@
         <!-- Omnibox search engine -->
         <div class="settings-box first block">
           <div id="search-wrapper">
-            <div id="searchExplanation" class="start">
+            <div id="searchExplanation" class="start settings-box-text">
               $i18nRaw{searchExplanation}
             </div>
             <template is="dom-if" if="[[isDefaultSearchControlledByPolicy_(
@@ -86,18 +86,14 @@
 <if expr="chromeos">
         <!-- Google Assistant -->
         <template is="dom-if" if="[[isAssistantAllowed_]]">
-          <div id="assistantSubpageTrigger" class="settings-box two-line"
-            on-click="onGoogleAssistantTap_" actionable>
-            <div class="start">
-              $i18n{searchGoogleAssistant}
-              <div class="secondary">
-                [[getAssistantEnabledDisabledLabel_(
-                    prefs.settings.voice_interaction.enabled.value)]]
-              </div>
-            </div>
-            <cr-icon-button class="subpage-arrow"
-                aria-label="$i18n{searchGoogleAssistant}"></cr-icon-button>
-          </div>
+          <cr-link-row
+              class="hr"
+              id="assistantSubpageTrigger"
+              label="$i18n{searchGoogleAssistant}"
+              sub-label="[[getAssistantEnabledDisabledLabel_(
+                  prefs.settings.voice_interaction.enabled.value)]]"
+              on-click="onGoogleAssistantTap_">
+          </cr-link-row>
         </template>
 </if>
       </div>
diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html b/chrome/browser/resources/settings/settings_menu/settings_menu.html
index f1cffcf..305aa50 100644
--- a/chrome/browser/resources/settings/settings_menu/settings_menu.html
+++ b/chrome/browser/resources/settings/settings_menu/settings_menu.html
@@ -26,9 +26,6 @@
 
       a[href],
       #advancedButton {
-        --cr-selectable-focus: {
-          outline: auto 5px -webkit-focus-ring-color;
-        };
         align-items: center;
         color: var(--settings-nav-item-color);
         display: flex;
@@ -45,6 +42,11 @@
         color: var(--cr-link-color);
       }
 
+      a[href]:focus {
+        background: transparent;
+        outline: auto 5px -webkit-focus-ring-color;
+      }
+
       iron-icon {
         --iron-icon-fill-color: var(--settings-nav-icon-color);
         margin-inline-end: 24px;
diff --git a/chrome/browser/resources/settings/site_favicon.js b/chrome/browser/resources/settings/site_favicon.js
index 7c5a812..09f30ef 100644
--- a/chrome/browser/resources/settings/site_favicon.js
+++ b/chrome/browser/resources/settings/site_favicon.js
@@ -22,7 +22,7 @@
   urlChanged_: function() {
     let url = this.removePatternWildcard_(this.url);
     url = this.ensureUrlHasScheme_(url);
-    this.style.backgroundImage = cr.icon.getFavicon(url || '');
+    this.style.backgroundImage = cr.icon.getFavicon(url || '', false);
   },
 
   /**
@@ -58,4 +58,4 @@
     }
     return url.includes('://') ? url : 'http://' + url;
   },
-});
\ No newline at end of file
+});
diff --git a/chrome/browser/resources/webapks/BUILD.gn b/chrome/browser/resources/webapks/BUILD.gn
index 2b91364..6e4c0a5 100644
--- a/chrome/browser/resources/webapks/BUILD.gn
+++ b/chrome/browser/resources/webapks/BUILD.gn
@@ -12,7 +12,9 @@
 
 js_library("about_webapks") {
   deps = [
-    "../../../../ui/webui/resources/js:util",
+    "//ui/webui/resources/js:cr",
+    "//ui/webui/resources/js:load_time_data",
+    "//ui/webui/resources/js:util",
   ]
   externs_list = [ "$externs_path/chrome_send.js" ]
 }
diff --git a/chrome/browser/resources/webapks/about_webapks.html b/chrome/browser/resources/webapks/about_webapks.html
index fb87afd..f09ce2c5d 100644
--- a/chrome/browser/resources/webapks/about_webapks.html
+++ b/chrome/browser/resources/webapks/about_webapks.html
@@ -11,11 +11,10 @@
     <title>About WebAPKs</title>
     <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
     <link rel="stylesheet" href="about_webapks.css">
+    <link rel="import" href="chrome://resources/html/cr.html">
+    <link rel="import" href="chrome://resources/html/load_time_data.html">
+    <link rel="import" href="chrome://resources/html/util.html">
 
-    <script src="chrome://resources/js/cr.js"></script>
-    <script src="chrome://resources/js/load_time_data.js"></script>
-    <script src="chrome://resources/js/parse_html_subset.js"></script>
-    <script src="chrome://resources/js/util.js"></script>
     <script src="chrome://webapks/webapks.js"></script>
     <script src="chrome://webapks/strings.js"></script>
   </head>
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/google_apps/BUILD.gn b/chrome/browser/resources/welcome/onboarding_welcome/google_apps/BUILD.gn
index d903215..7a39dd1 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/google_apps/BUILD.gn
+++ b/chrome/browser/resources/welcome/onboarding_welcome/google_apps/BUILD.gn
@@ -27,7 +27,6 @@
 
 js_library("google_app_proxy") {
   deps = [
-    "../shared:app_proxy",
     "//ui/webui/resources/js:cr",
   ]
   externs_list = [ "$externs_path/chrome_send.js" ]
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/google_apps/google_app_proxy.html b/chrome/browser/resources/welcome/onboarding_welcome/google_apps/google_app_proxy.html
index 88d70dd9..3c50ce8 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/google_apps/google_app_proxy.html
+++ b/chrome/browser/resources/welcome/onboarding_welcome/google_apps/google_app_proxy.html
@@ -1,3 +1,2 @@
 <link rel="import" href="chrome://resources/html/cr.html">
-<link rel="import" href="chrome://welcome/shared/i18n_setup.html">
 <script src="google_app_proxy.js"></script>
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/google_apps/google_app_proxy.js b/chrome/browser/resources/welcome/onboarding_welcome/google_apps/google_app_proxy.js
index fb620e6e..4fc9f24 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/google_apps/google_app_proxy.js
+++ b/chrome/browser/resources/welcome/onboarding_welcome/google_apps/google_app_proxy.js
@@ -19,7 +19,29 @@
     CHROME_WEB_STORE: 5,
   };
 
-  /** @implements {nux.AppProxy} */
+  /** @interface */
+  class GoogleAppProxy {
+    /**
+     * Google app IDs are local to the list of Google apps, so their icon must
+     * be cached by the handler that provided the IDs.
+     * @param {number} appId
+     */
+    cacheBookmarkIcon(appId) {}
+
+    /**
+     * Returns a promise for an array of Google apps.
+     * @return {!Promise<!Array<!nux.BookmarkListItem>>}
+     */
+    getAppList() {}
+
+    /**
+     * @param {number} providerId This should match one of the histogram enum
+     *     value for NuxGoogleAppsSelections.
+     */
+    recordProviderSelected(providerId) {}
+  }
+
+  /** @implements {nux.GoogleAppProxy} */
   class GoogleAppProxyImpl {
     /** @override */
     cacheBookmarkIcon(appId) {
@@ -42,6 +64,7 @@
   cr.addSingletonGetter(GoogleAppProxyImpl);
 
   return {
+    GoogleAppProxy: GoogleAppProxy,
     GoogleAppProxyImpl: GoogleAppProxyImpl,
   };
 });
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/google_apps/nux_google_apps.js b/chrome/browser/resources/welcome/onboarding_welcome/google_apps/nux_google_apps.js
index 2ed67e53..1e37e95 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/google_apps/nux_google_apps.js
+++ b/chrome/browser/resources/welcome/onboarding_welcome/google_apps/nux_google_apps.js
@@ -48,7 +48,7 @@
     },
   },
 
-  /** @private {nux.AppProxy} */
+  /** @private {nux.GoogleAppProxy} */
   appProxy_: null,
 
   /** @private {?nux.ModuleMetricsManager} */
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/shared/BUILD.gn b/chrome/browser/resources/welcome/onboarding_welcome/shared/BUILD.gn
index b3cb8800..d2c36998 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/shared/BUILD.gn
+++ b/chrome/browser/resources/welcome/onboarding_welcome/shared/BUILD.gn
@@ -22,12 +22,6 @@
   ]
 }
 
-js_library("app_proxy") {
-  deps = [
-    "//ui/webui/resources/js:cr",
-  ]
-}
-
 js_library("module_metrics_proxy") {
   deps = [
     "//ui/webui/resources/js:cr",
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/shared/app_proxy.js b/chrome/browser/resources/welcome/onboarding_welcome/shared/app_proxy.js
deleted file mode 100644
index 1b04fd07..0000000
--- a/chrome/browser/resources/welcome/onboarding_welcome/shared/app_proxy.js
+++ /dev/null
@@ -1,31 +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.
-
-cr.define('nux', function() {
-  /** @interface */
-  class AppProxy {
-    /**
-     * Google app IDs are local to the list of Google apps, so their icon must
-     * be cached by the handler that provided the IDs.
-     * @param {number} appId
-     */
-    cacheBookmarkIcon(appId) {}
-
-    /**
-     * Returns a promise for an array of Google apps.
-     * @return {!Promise<!Array<!nux.BookmarkListItem>>}
-     */
-    getAppList() {}
-
-    /**
-     * @param {number} providerId This should match one of the histogram enum
-     *     value for NuxGoogleAppsSelections.
-     */
-    recordProviderSelected(providerId) {}
-  }
-
-  return {
-    AppProxy: AppProxy,
-  };
-});
diff --git a/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.html b/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.html
index 76f7eb4..a520eaa 100644
--- a/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.html
+++ b/chrome/browser/resources/welcome/onboarding_welcome/welcome_app.html
@@ -3,6 +3,7 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_toast/cr_toast.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_view_manager/cr_view_manager.html">
 <link rel="import" href="chrome://resources/cr_elements/hidden_style_css.html">
+<link rel="import" href="chrome://resources/html/assert.html">
 <link rel="import" href="google_apps/nux_google_apps.html">
 <link rel="import" href="landing_view.html">
 <link rel="import" href="navigation_behavior.html">
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_util.h b/chrome/browser/safe_browsing/download_protection/download_protection_util.h
index 0ded35b..4c01350 100644
--- a/chrome/browser/safe_browsing/download_protection/download_protection_util.h
+++ b/chrome/browser/safe_browsing/download_protection/download_protection_util.h
@@ -22,6 +22,7 @@
   DANGEROUS_HOST,
   POTENTIALLY_UNWANTED,
   WHITELISTED_BY_POLICY,
+  ASYNC_SCANNING,
 };
 
 // Enum to keep track why a particular download verdict was chosen.
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
index 793bb904..cd1b84f 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc
@@ -26,7 +26,6 @@
 #include "components/safe_browsing/features.h"
 #include "components/security_interstitials/content/security_interstitial_controller_client.h"
 #include "components/security_interstitials/core/safe_browsing_quiet_error_ui.h"
-#include "components/signin/core/browser/signin_buildflags.h"
 #include "components/strings/grit/components_strings.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
diff --git a/chrome/browser/search/local_ntp_source.cc b/chrome/browser/search/local_ntp_source.cc
index 3b055c2..a1b8659d 100644
--- a/chrome/browser/search/local_ntp_source.cc
+++ b/chrome/browser/search/local_ntp_source.cc
@@ -430,14 +430,16 @@
   return result;
 }
 
-std::string ConvertLogoImageToBase64(const EncodedLogo& logo) {
-  if (!logo.encoded_image)
+std::string ConvertLogoImageToBase64(
+    scoped_refptr<base::RefCountedString> encoded_image,
+    std::string mime_type) {
+  if (!encoded_image)
     return std::string();
 
   std::string base64;
-  base::Base64Encode(logo.encoded_image->data(), &base64);
-  return base::StringPrintf("data:%s;base64,%s",
-                            logo.metadata.mime_type.c_str(), base64.c_str());
+  base::Base64Encode(encoded_image->data(), &base64);
+  return base::StringPrintf("data:%s;base64,%s", mime_type.c_str(),
+                            base64.c_str());
 }
 
 std::string LogoTypeToString(search_provider_logos::LogoType type) {
@@ -460,12 +462,15 @@
   result->SetString("onClickUrl", meta.on_click_url.spec());
   result->SetString("altText", meta.alt_text);
   result->SetString("mimeType", meta.mime_type);
+  result->SetString("darkMimeType", meta.dark_mime_type);
   result->SetString("animatedUrl", meta.animated_url.spec());
+  result->SetString("darkAnimatedUrl", meta.dark_animated_url.spec());
   result->SetInteger("iframeWidthPx", meta.iframe_width_px);
   result->SetInteger("iframeHeightPx", meta.iframe_height_px);
   result->SetString("logUrl", meta.log_url.spec());
   result->SetString("ctaLogUrl", meta.cta_log_url.spec());
   result->SetString("shortLink", meta.short_link.spec());
+  result->SetString("darkBackgroundColor", meta.dark_background_color);
 
   if (meta.share_button_x >= 0 && meta.share_button_y >= 0 &&
       !meta.share_button_icon.empty() && !meta.share_button_bg.empty()) {
@@ -476,6 +481,16 @@
     result->SetString("shareButtonBg", meta.share_button_bg);
   }
 
+  if (meta.dark_share_button_x >= 0 && meta.dark_share_button_y >= 0 &&
+      !meta.dark_share_button_icon.empty() &&
+      !meta.dark_share_button_bg.empty()) {
+    result->SetInteger("darkShareButtonX", meta.dark_share_button_x);
+    result->SetInteger("darkShareButtonY", meta.dark_share_button_y);
+    result->SetDouble("darkShareButtonOpacity", meta.dark_share_button_opacity);
+    result->SetString("darkShareButtonIcon", meta.dark_share_button_icon);
+    result->SetString("darkShareButtonBg", meta.dark_share_button_bg);
+  }
+
   GURL full_page_url = meta.full_page_url;
   result->SetString("fullPageUrl", full_page_url.spec());
 
@@ -692,10 +707,16 @@
     if (type == LogoCallbackReason::DETERMINED) {
       ddl->SetBoolean("usable", true);
       if (logo.has_value()) {
-        ddl->SetString("image", ConvertLogoImageToBase64(logo.value()));
+        ddl->SetString("image",
+                       ConvertLogoImageToBase64(logo->encoded_image,
+                                                logo->metadata.mime_type));
+        ddl->SetString("dark_image",
+                       ConvertLogoImageToBase64(logo->dark_encoded_image,
+                                                logo->metadata.dark_mime_type));
         ddl->Set("metadata", ConvertLogoMetadataToDict(logo->metadata));
       } else {
         ddl->SetKey("image", base::Value());
+        ddl->SetKey("dark_image", base::Value());
         ddl->SetKey("metadata", base::Value());
       }
     } else {
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.cc b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.cc
index 75b7015..4afdb88 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.cc
+++ b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.cc
@@ -9,6 +9,9 @@
 #include "chrome/android/chrome_jni_headers/ClickToCallMessageHandler_jni.h"
 #include "chrome/browser/sharing/proto/click_to_call_message.pb.h"
 
+ClickToCallMessageHandler::ClickToCallMessageHandler() = default;
+ClickToCallMessageHandler::~ClickToCallMessageHandler() = default;
+
 void ClickToCallMessageHandler::OnMessage(
     const chrome_browser_sharing::SharingMessage& message) {
   DCHECK(message.has_click_to_call_message());
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h
index 813d3f7..4880501e 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h
+++ b/chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h
@@ -12,7 +12,8 @@
 // Handles incoming messages for the click to call feature.
 class ClickToCallMessageHandler : public SharingMessageHandler {
  public:
-  ~ClickToCallMessageHandler() override = default;
+  ClickToCallMessageHandler();
+  ~ClickToCallMessageHandler() override;
 
   // SharingMessageHandler
   void OnMessage(
diff --git a/chrome/browser/sharing/click_to_call/click_to_call_sharing_dialog_controller_unittest.cc b/chrome/browser/sharing/click_to_call/click_to_call_sharing_dialog_controller_unittest.cc
index b084191..7ffaae4 100644
--- a/chrome/browser/sharing/click_to_call/click_to_call_sharing_dialog_controller_unittest.cc
+++ b/chrome/browser/sharing/click_to_call/click_to_call_sharing_dialog_controller_unittest.cc
@@ -19,6 +19,7 @@
 #include "components/gcm_driver/fake_gcm_driver.h"
 #include "components/gcm_driver/instance_id/instance_id_driver.h"
 #include "components/sync/driver/fake_sync_service.h"
+#include "components/sync/protocol/sync.pb.h"
 #include "components/sync_device_info/fake_device_info_tracker.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -82,6 +83,7 @@
 // Check the call to sharing service when a device is chosen.
 TEST_F(ClickToCallSharingDialogControllerTest, OnDeviceChosen) {
   SharingDeviceInfo sharing_device_info(kReceiverGuid, kReceiverName,
+                                        sync_pb::SyncEnums::TYPE_PHONE,
                                         base::Time::Now(), 1);
   chrome_browser_sharing::SharingMessage sharing_message;
   sharing_message.mutable_click_to_call_message()->set_phone_number(
diff --git a/chrome/browser/sharing/sharing_device_info.cc b/chrome/browser/sharing/sharing_device_info.cc
index 686d32f..8d60deb 100644
--- a/chrome/browser/sharing/sharing_device_info.cc
+++ b/chrome/browser/sharing/sharing_device_info.cc
@@ -6,10 +6,12 @@
 
 SharingDeviceInfo::SharingDeviceInfo(const std::string& guid,
                                      const std::string& human_readable_name,
+                                     sync_pb::SyncEnums::DeviceType device_type,
                                      base::Time last_online_timestamp,
                                      int capabilities)
     : guid_(guid),
       human_readable_name_(human_readable_name),
+      device_type_(device_type),
       last_online_timestamp_(last_online_timestamp),
       capabilities_(capabilities) {}
 
@@ -25,6 +27,10 @@
   return human_readable_name_;
 }
 
+sync_pb::SyncEnums::DeviceType SharingDeviceInfo::device_type() const {
+  return device_type_;
+}
+
 base::Time SharingDeviceInfo::last_online_timestamp() const {
   return last_online_timestamp_;
 }
diff --git a/chrome/browser/sharing/sharing_device_info.h b/chrome/browser/sharing/sharing_device_info.h
index 963e387..6d0ee18 100644
--- a/chrome/browser/sharing/sharing_device_info.h
+++ b/chrome/browser/sharing/sharing_device_info.h
@@ -9,6 +9,7 @@
 
 #include "base/macros.h"
 #include "base/time/time.h"
+#include "components/sync/protocol/sync.pb.h"
 
 // Capabilities which a device can perform. These are stored in sync preferences
 // when the device is registered, and the values should never be changed. When
@@ -22,6 +23,7 @@
  public:
   SharingDeviceInfo(const std::string& guid,
                     const std::string& human_readable_name,
+                    sync_pb::SyncEnums::DeviceType device_type,
                     base::Time last_online_timestamp,
                     int capabilities);
   ~SharingDeviceInfo();
@@ -33,6 +35,9 @@
   // A human readable name of the device.
   const std::string& human_readable_name() const;
 
+  // Type of the device whether it is a phone, tablet or desktop.
+  sync_pb::SyncEnums::DeviceType device_type() const;
+
   // Returns the time at which this device was last online.
   base::Time last_online_timestamp() const;
 
@@ -45,6 +50,8 @@
 
   const std::string human_readable_name_;
 
+  const sync_pb::SyncEnums::DeviceType device_type_;
+
   const base::Time last_online_timestamp_;
 
   int capabilities_;
diff --git a/chrome/browser/sharing/sharing_device_registration.cc b/chrome/browser/sharing/sharing_device_registration.cc
index 1c56e23ac..a316f52 100644
--- a/chrome/browser/sharing/sharing_device_registration.cc
+++ b/chrome/browser/sharing/sharing_device_registration.cc
@@ -46,13 +46,19 @@
   // Base64PublicKey in library.
   crypto::ECPrivateKey* vapid_key = vapid_key_manager_->GetOrCreateKey();
   if (!vapid_key) {
-    std::move(callback).Run(Result::FAILURE);
+    std::move(callback).Run(Result::FATAL_ERROR);
     return;
   }
 
   std::string public_key;
   if (!gcm::GetRawPublicKey(*vapid_key, &public_key)) {
-    std::move(callback).Run(Result::FAILURE);
+    std::move(callback).Run(Result::FATAL_ERROR);
+    return;
+  }
+
+  if (registered_public_key_ == public_key) {
+    // VAPID key hasn't changed, return success.
+    std::move(callback).Run(Result::SUCCESS);
     return;
   }
 
@@ -61,36 +67,47 @@
                         &base64_public_key);
 
   instance_id_driver_->GetInstanceID(kSharingFCMAppID)
-      ->GetToken(
-          base64_public_key, kFCMScope,
-          /*options=*/{},
-          /*is_lazy=*/false,
-          base::BindOnce(&SharingDeviceRegistration::OnFCMTokenReceived,
-                         weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
+      ->GetToken(base64_public_key, kFCMScope,
+                 /*options=*/{},
+                 /*is_lazy=*/false,
+                 base::BindOnce(&SharingDeviceRegistration::OnFCMTokenReceived,
+                                weak_ptr_factory_.GetWeakPtr(),
+                                std::move(callback), std::move(public_key)));
 }
 
 void SharingDeviceRegistration::OnFCMTokenReceived(
     RegistrationCallback callback,
+    std::string public_key,
     const std::string& fcm_registration_token,
     instance_id::InstanceID::Result result) {
-  if (result != instance_id::InstanceID::SUCCESS) {
-    std::move(callback).Run(Result::FAILURE);
-    return;
+  switch (result) {
+    case instance_id::InstanceID::SUCCESS:
+      gcm_driver_->GetEncryptionInfo(
+          kSharingFCMAppID,
+          base::AdaptCallbackForRepeating(base::BindOnce(
+              &SharingDeviceRegistration::OnEncryptionInfoReceived,
+              weak_ptr_factory_.GetWeakPtr(), std::move(callback),
+              std::move(public_key), fcm_registration_token)));
+      break;
+    case instance_id::InstanceID::NETWORK_ERROR:
+    case instance_id::InstanceID::SERVER_ERROR:
+    case instance_id::InstanceID::ASYNC_OPERATION_PENDING:
+      std::move(callback).Run(Result::TRANSIENT_ERROR);
+      break;
+    case instance_id::InstanceID::INVALID_PARAMETER:
+    case instance_id::InstanceID::UNKNOWN_ERROR:
+    case instance_id::InstanceID::DISABLED:
+      std::move(callback).Run(Result::FATAL_ERROR);
+      break;
   }
-
-  gcm_driver_->GetEncryptionInfo(
-      kSharingFCMAppID,
-      base::AdaptCallbackForRepeating(
-          base::BindOnce(&SharingDeviceRegistration::OnEncryptionInfoReceived,
-                         weak_ptr_factory_.GetWeakPtr(), std::move(callback),
-                         fcm_registration_token)));
 }
 
 void SharingDeviceRegistration::OnEncryptionInfoReceived(
     RegistrationCallback callback,
+    std::string public_key,
     const std::string& fcm_registration_token,
     const std::string& p256dh,
-    const std::string& auth_secret) const {
+    const std::string& auth_secret) {
   int device_capabilities = GetDeviceCapabilities();
   std::string device_guid =
       local_device_info_provider_->GetLocalDeviceInfo()->guid();
@@ -98,6 +115,7 @@
                                        auth_secret, device_capabilities);
 
   sharing_sync_preference_->SetSyncDevice(device_guid, device);
+  registered_public_key_ = std::move(public_key);
   std::move(callback).Run(Result::SUCCESS);
 }
 
diff --git a/chrome/browser/sharing/sharing_device_registration.h b/chrome/browser/sharing/sharing_device_registration.h
index eccfbd0..a000c1a 100644
--- a/chrome/browser/sharing/sharing_device_registration.h
+++ b/chrome/browser/sharing/sharing_device_registration.h
@@ -37,8 +37,10 @@
   enum class Result {
     // Device registered successfully.
     SUCCESS = 0,
-    // Device registration failed.
-    FAILURE = 1
+    // Device registration failed with transient error.
+    TRANSIENT_ERROR = 1,
+    // Device registration failed with fatal error.
+    FATAL_ERROR = 2,
   };
 
   using RegistrationCallback = base::OnceCallback<void(Result)>;
@@ -49,11 +51,11 @@
       VapidKeyManager* vapid_key_manager,
       gcm::GCMDriver* gcm_driver,
       syncer::LocalDeviceInfoProvider* device_info_tracker);
-  ~SharingDeviceRegistration();
+  virtual ~SharingDeviceRegistration();
 
   // Registers device with sharing sync preferences. Takes a |callback| function
   // which receives the result of FCM registration for device.
-  void RegisterDevice(RegistrationCallback callback);
+  virtual void RegisterDevice(RegistrationCallback callback);
 
  private:
   FRIEND_TEST_ALL_PREFIXES(SharingDeviceRegistrationTest,
@@ -64,15 +66,17 @@
   // FCM App ID of Sharing. Also responsible for calling |callback| with
   // |result| of GetToken.
   void OnFCMTokenReceived(RegistrationCallback callback,
+                          std::string public_key,
                           const std::string& fcm_registration_token,
                           instance_id::InstanceID::Result result);
 
   // Callback function responsible for saving device registration information in
   // SharingSyncPreference.
   void OnEncryptionInfoReceived(RegistrationCallback callback,
+                                std::string public_key,
                                 const std::string& fcm_registration_token,
                                 const std::string& p256dh,
-                                const std::string& auth_secret) const;
+                                const std::string& auth_secret);
 
   // Computes and returns a bitmask of all capabilities supported by the device.
   int GetDeviceCapabilities() const;
@@ -81,14 +85,11 @@
   bool IsTelephonySupported() const;
 
   SharingSyncPreference* sharing_sync_preference_;
-
   instance_id::InstanceIDDriver* instance_id_driver_;
-
   VapidKeyManager* vapid_key_manager_;
-
   gcm::GCMDriver* gcm_driver_;
-
   syncer::LocalDeviceInfoProvider* local_device_info_provider_;
+  std::string registered_public_key_;
 
   base::WeakPtrFactory<SharingDeviceRegistration> weak_ptr_factory_;
 
diff --git a/chrome/browser/sharing/sharing_device_registration_unittest.cc b/chrome/browser/sharing/sharing_device_registration_unittest.cc
index 35a159b..8105dc2 100644
--- a/chrome/browser/sharing/sharing_device_registration_unittest.cc
+++ b/chrome/browser/sharing/sharing_device_registration_unittest.cc
@@ -31,6 +31,7 @@
 namespace {
 const char kAppID[] = "test_app_id";
 const char kFCMToken[] = "test_fcm_token";
+const char kFCMToken2[] = "test_fcm_token_2";
 const char kDevicep256dh[] = "test_p256_dh";
 const char kDeviceAuthSecret[] = "test_auth_secret";
 
@@ -61,7 +62,7 @@
                 const std::map<std::string, std::string>& options,
                 bool is_lazy,
                 GetTokenCallback callback) override {
-    std::move(callback).Run(kFCMToken, result_);
+    std::move(callback).Run(fcm_token_, result_);
   }
 
   void ValidateToken(const std::string& authorized_entity,
@@ -81,8 +82,11 @@
 
   void SetFCMResult(InstanceID::Result result) { result_ = result; }
 
+  void SetFCMToken(std::string fcm_token) { fcm_token_ = std::move(fcm_token); }
+
  private:
   InstanceID::Result result_;
+  std::string fcm_token_;
 };
 
 class FakeEncryptionGCMDriver : public FakeGCMDriver {
@@ -132,6 +136,10 @@
     fake_instance_id_.SetFCMResult(result);
   }
 
+  void SetInstanceIDFCMToken(std::string fcm_token) {
+    fake_instance_id_.SetFCMToken(std::move(fcm_token));
+  }
+
  protected:
   content::TestBrowserThreadBundle thread_bundle_;
 
@@ -154,6 +162,7 @@
 
 TEST_F(SharingDeviceRegistrationTest, RegisterDeviceTest_Success) {
   SetInstanceIDFCMResult(InstanceID::Result::SUCCESS);
+  SetInstanceIDFCMToken(kFCMToken);
 
   RegisterDeviceSync();
 
@@ -169,14 +178,55 @@
   EXPECT_EQ(kFCMToken, device.fcm_token);
   EXPECT_EQ(sharing_device_registration_.GetDeviceCapabilities(),
             device.capabilities);
+
+  // Remove VAPId key to force a re-register, which will return a different FCM
+  // token.
+  prefs_.RemoveUserPref("sharing.vapid_key");
+  SetInstanceIDFCMToken(kFCMToken2);
+
+  RegisterDeviceSync();
+
+  EXPECT_EQ(SharingDeviceRegistration::Result::SUCCESS, result_);
+
+  // Device should be re-registered with the new FCM token.
+  it = devices_.find(guid);
+  ASSERT_NE(devices_.end(), it);
+  EXPECT_EQ(kFCMToken2, it->second.fcm_token);
 }
 
-TEST_F(SharingDeviceRegistrationTest, RegisterDeviceTest_Fail) {
+TEST_F(SharingDeviceRegistrationTest, RegisterDeviceTest_VapidKeysUnchanged) {
+  SetInstanceIDFCMResult(InstanceID::Result::SUCCESS);
+
+  RegisterDeviceSync();
+
+  EXPECT_EQ(SharingDeviceRegistration::Result::SUCCESS, result_);
+
+  // Set instance ID result to error. InstanceID shouldn't be invoked.
+  SetInstanceIDFCMResult(InstanceID::Result::UNKNOWN_ERROR);
+  // Register device again without changing VAPID keys.
+  RegisterDeviceSync();
+
+  EXPECT_EQ(SharingDeviceRegistration::Result::SUCCESS, result_);
+}
+
+TEST_F(SharingDeviceRegistrationTest, RegisterDeviceTest_NetworkError) {
   SetInstanceIDFCMResult(InstanceID::Result::NETWORK_ERROR);
 
   RegisterDeviceSync();
 
-  EXPECT_EQ(SharingDeviceRegistration::Result::FAILURE, result_);
+  EXPECT_EQ(SharingDeviceRegistration::Result::TRANSIENT_ERROR, result_);
+  std::string guid =
+      fake_local_device_info_provider_.GetLocalDeviceInfo()->guid();
+  auto it = devices_.find(guid);
+  EXPECT_EQ(devices_.end(), it);
+}
+
+TEST_F(SharingDeviceRegistrationTest, RegisterDeviceTest_FatalError) {
+  SetInstanceIDFCMResult(InstanceID::Result::DISABLED);
+
+  RegisterDeviceSync();
+
+  EXPECT_EQ(SharingDeviceRegistration::Result::FATAL_ERROR, result_);
   std::string guid =
       fake_local_device_info_provider_.GetLocalDeviceInfo()->guid();
   auto it = devices_.find(guid);
diff --git a/chrome/browser/sharing/sharing_fcm_handler.h b/chrome/browser/sharing/sharing_fcm_handler.h
index e0fb725..263e9b6 100644
--- a/chrome/browser/sharing/sharing_fcm_handler.h
+++ b/chrome/browser/sharing/sharing_fcm_handler.h
@@ -31,7 +31,7 @@
   ~SharingFCMHandler() override;
 
   // Registers itself as app handler for sharing messages.
-  void StartListening();
+  virtual void StartListening();
 
   // Unregisters itself as app handler for sharing messages.
   void StopListening();
diff --git a/chrome/browser/sharing/sharing_service.cc b/chrome/browser/sharing/sharing_service.cc
index 99e01b9..e9207ee82 100644
--- a/chrome/browser/sharing/sharing_service.cc
+++ b/chrome/browser/sharing/sharing_service.cc
@@ -11,6 +11,7 @@
 
 #include "base/bind.h"
 #include "base/feature_list.h"
+#include "base/task/post_task.h"
 #include "base/time/time.h"
 #include "chrome/browser/sharing/features.h"
 #include "chrome/browser/sharing/sharing_device_info.h"
@@ -23,10 +24,43 @@
 #include "components/sync/driver/sync_service.h"
 #include "components/sync_device_info/device_info.h"
 #include "components/sync_device_info/device_info_tracker.h"
+#include "content/public/browser/browser_task_traits.h"
 
 namespace {
 // TODO(knollr): Should this be configurable or shared between similar features?
 constexpr base::TimeDelta kDeviceExpiration = base::TimeDelta::FromDays(2);
+constexpr net::BackoffEntry::Policy kRetryBackoffPolicy = {
+    // Number of initial errors (in sequence) to ignore before applying
+    // exponential back-off rules.
+    0,
+
+    // Initial delay.  The interpretation of this value depends on
+    // always_use_initial_delay.  It's either how long we wait between
+    // requests before backoff starts, or how much we delay the first request
+    // after backoff starts.
+    5 * 60 * 1000,
+
+    // Factor by which the waiting time will be multiplied.
+    2.0,
+
+    // Fuzzing percentage. ex: 10% will spread requests randomly
+    // between 90%-100% of the calculated time.
+    0.1,
+
+    // Maximum amount of time we are willing to delay our request, -1
+    // for no maximum.
+    -1,
+
+    // Time to keep an entry from being discarded even when it
+    // has no significant state, -1 to never discard.
+    -1,
+
+    // If true, we always use a delay of initial_delay_ms, even before
+    // we've seen num_errors_to_ignore errors.  Otherwise, initial_delay_ms
+    // is the first delay once we start exponential backoff.
+    false,
+};
+
 }  // namespace
 
 SharingService::SharingService(
@@ -44,6 +78,7 @@
       fcm_handler_(std::move(fcm_handler)),
       device_info_tracker_(device_info_tracker),
       sync_service_(sync_service),
+      backoff_entry_(&kRetryBackoffPolicy),
       weak_ptr_factory_(this) {
   fcm_handler_->AddSharingHandler(
       chrome_browser_sharing::SharingMessage::kAckMessage,
@@ -51,6 +86,11 @@
   fcm_handler_->AddSharingHandler(
       chrome_browser_sharing::SharingMessage::kPingMessage,
       &ping_message_handler_);
+#if defined(OS_ANDROID)
+  fcm_handler_->AddSharingHandler(
+      chrome_browser_sharing::SharingMessage::kClickToCallMessage,
+      &click_to_call_message_handler_);
+#endif  // defined(OS_ANDROID)
 
   if (!sync_service_->HasObserver(this))
     sync_service_->AddObserver(this);
@@ -97,9 +137,9 @@
     // Only insert the first occurrence of each device name.
     auto inserted = device_names.insert(device->client_name());
     if (inserted.second) {
-      device_candidates.emplace_back(device->guid(), device->client_name(),
-                                     device->last_updated_timestamp(),
-                                     device_capabilities);
+      device_candidates.emplace_back(
+          device->guid(), device->client_name(), device->device_type(),
+          device->last_updated_timestamp(), device_capabilities);
     }
   }
 
@@ -128,17 +168,52 @@
   sync_service_ = nullptr;
 }
 
-void SharingService::OnSyncCycleCompleted(syncer::SyncService* sync) {
+void SharingService::OnStateChanged(syncer::SyncService* sync) {
   if (IsEnabled()) {
-    sharing_device_registration_->RegisterDevice(base::BindOnce(
-        &SharingService::OnDeviceRegistered, weak_ptr_factory_.GetWeakPtr()));
+    // Trigger registration first time feature is enabled.
+    if (sync_service_->HasObserver(this))
+      sync_service_->RemoveObserver(this);
+    AttemptRegistration();
   }
 }
 
+void SharingService::AttemptRegistration() {
+  sharing_device_registration_->RegisterDevice(base::BindOnce(
+      &SharingService::OnDeviceRegistered, weak_ptr_factory_.GetWeakPtr()));
+}
+
 void SharingService::OnDeviceRegistered(
     SharingDeviceRegistration::Result result) {
-  fcm_handler_->StartListening();
-  // TODO(himanshujaju) : Add retry logic and logging
+  switch (result) {
+    case SharingDeviceRegistration::Result::SUCCESS:
+      backoff_entry_.InformOfRequest(true);
+      if (!device_registered_) {
+        device_registered_ = true;
+        fcm_handler_->StartListening();
+
+        // Listen for further VAPID key changes for re-registration.
+        sync_prefs_->SetVapidKeyChangeObserver(
+            base::BindRepeating(&SharingService::AttemptRegistration,
+                                weak_ptr_factory_.GetWeakPtr()));
+      }
+      break;
+    case SharingDeviceRegistration::Result::TRANSIENT_ERROR:
+      backoff_entry_.InformOfRequest(false);
+      // Transient error - try again after a delay.
+      LOG(ERROR) << "Device registration failed with transient error";
+      base::PostDelayedTaskWithTraits(
+          FROM_HERE,
+          {base::TaskPriority::BEST_EFFORT, content::BrowserThread::UI},
+          base::BindOnce(&SharingService::AttemptRegistration,
+                         weak_ptr_factory_.GetWeakPtr()),
+          backoff_entry_.GetTimeUntilRelease());
+      break;
+    case SharingDeviceRegistration::Result::FATAL_ERROR:
+      backoff_entry_.InformOfRequest(false);
+      // No need to bother retrying in the case of one of fatal errors.
+      LOG(ERROR) << "Device registration failed with fatal error";
+      break;
+  }
 }
 
 bool SharingService::IsEnabled() const {
diff --git a/chrome/browser/sharing/sharing_service.h b/chrome/browser/sharing/sharing_service.h
index 9e5951bb..5df4180e 100644
--- a/chrome/browser/sharing/sharing_service.h
+++ b/chrome/browser/sharing/sharing_service.h
@@ -12,12 +12,18 @@
 #include "base/memory/weak_ptr.h"
 #include "base/optional.h"
 #include "base/time/time.h"
+#include "build/build_config.h"
 #include "chrome/browser/sharing/ack_message_handler.h"
 #include "chrome/browser/sharing/ping_message_handler.h"
 #include "chrome/browser/sharing/proto/sharing_message.pb.h"
 #include "chrome/browser/sharing/sharing_device_registration.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/sync/driver/sync_service_observer.h"
+#include "net/base/backoff_entry.h"
+
+#if defined(OS_ANDROID)
+#include "chrome/browser/sharing/click_to_call/click_to_call_message_handler_android.h"
+#endif  // defined(OS_ANDROID)
 
 namespace syncer {
 class DeviceInfoTracker;
@@ -71,8 +77,9 @@
  private:
   // Overrides for syncer::SyncServiceObserver.
   void OnSyncShutdown(syncer::SyncService* sync) override;
-  void OnSyncCycleCompleted(syncer::SyncService* sync) override;
+  void OnStateChanged(syncer::SyncService* sync) override;
 
+  void AttemptRegistration();
   void OnDeviceRegistered(SharingDeviceRegistration::Result result);
 
   // Returns true if cross-device Sharing features enabled, false otherwise.
@@ -87,6 +94,12 @@
   syncer::SyncService* sync_service_;
   AckMessageHandler ack_message_handler_;
   PingMessageHandler ping_message_handler_;
+  net::BackoffEntry backoff_entry_;
+  bool device_registered_ = false;
+
+#if defined(OS_ANDROID)
+  ClickToCallMessageHandler click_to_call_message_handler_;
+#endif  // defined(OS_ANDROID)
 
   base::WeakPtrFactory<SharingService> weak_ptr_factory_;
 
diff --git a/chrome/browser/sharing/sharing_service_unittest.cc b/chrome/browser/sharing/sharing_service_unittest.cc
index f88a6f5..ac5a5e320 100644
--- a/chrome/browser/sharing/sharing_service_unittest.cc
+++ b/chrome/browser/sharing/sharing_service_unittest.cc
@@ -9,8 +9,10 @@
 
 #include "base/guid.h"
 #include "base/memory/ptr_util.h"
+#include "base/test/scoped_feature_list.h"
 #include "base/test/scoped_task_environment.h"
 #include "chrome/browser/sharing/fake_local_device_info_provider.h"
+#include "chrome/browser/sharing/features.h"
 #include "chrome/browser/sharing/sharing_device_info.h"
 #include "chrome/browser/sharing/sharing_device_registration.h"
 #include "chrome/browser/sharing/sharing_fcm_handler.h"
@@ -19,10 +21,11 @@
 #include "chrome/browser/sharing/vapid_key_manager.h"
 #include "components/gcm_driver/fake_gcm_driver.h"
 #include "components/gcm_driver/instance_id/instance_id_driver.h"
-#include "components/sync/driver/fake_sync_service.h"
+#include "components/sync/driver/test_sync_service.h"
 #include "components/sync_device_info/device_info.h"
 #include "components/sync_device_info/fake_device_info_tracker.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
+#include "content/public/test/test_browser_thread_bundle.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -64,23 +67,61 @@
   DISALLOW_COPY_AND_ASSIGN(MockInstanceIDDriver);
 };
 
+class MockSharingFCMHandler : public SharingFCMHandler {
+ public:
+  MockSharingFCMHandler() : SharingFCMHandler(nullptr, nullptr) {}
+  ~MockSharingFCMHandler() = default;
+
+  MOCK_METHOD0(StartListening, void());
+};
+
+class FakeSharingDeviceRegistration : public SharingDeviceRegistration {
+ public:
+  FakeSharingDeviceRegistration(
+      SharingSyncPreference* prefs,
+      instance_id::InstanceIDDriver* instance_id_driver,
+      VapidKeyManager* vapid_key_manager,
+      gcm::GCMDriver* gcm_driver,
+      syncer::LocalDeviceInfoProvider* device_info_tracker)
+      : SharingDeviceRegistration(prefs,
+                                  instance_id_driver,
+                                  vapid_key_manager,
+                                  gcm_driver,
+                                  device_info_tracker) {}
+  ~FakeSharingDeviceRegistration() override = default;
+
+  void RegisterDevice(
+      SharingDeviceRegistration::RegistrationCallback callback) override {
+    registration_attempts_++;
+    std::move(callback).Run(result_);
+  }
+
+  void SetResult(SharingDeviceRegistration::Result result) { result_ = result; }
+
+  int registration_attempts() { return registration_attempts_; }
+
+ private:
+  SharingDeviceRegistration::Result result_;
+  int registration_attempts_ = 0;
+};
+
 class SharingServiceTest : public testing::Test {
  public:
   SharingServiceTest() {
     sync_prefs_ = new SharingSyncPreference(&prefs_);
-    sharing_device_registration_ = new SharingDeviceRegistration(
+    sharing_device_registration_ = new FakeSharingDeviceRegistration(
         sync_prefs_, &mock_instance_id_driver_, vapid_key_manager_,
         &mock_gcm_driver_, &fake_local_device_info_provider_);
     vapid_key_manager_ = new VapidKeyManager(sync_prefs_);
     fcm_sender_ = new SharingFCMSender(&mock_gcm_driver_,
                                        &fake_local_device_info_provider_,
                                        sync_prefs_, vapid_key_manager_);
-    fcm_handler_ = new SharingFCMHandler(&mock_gcm_driver_, fcm_sender_);
+    fcm_handler_ = new NiceMock<MockSharingFCMHandler>();
     sharing_service_ = std::make_unique<SharingService>(
         base::WrapUnique(sync_prefs_), base::WrapUnique(vapid_key_manager_),
         base::WrapUnique(sharing_device_registration_),
         base::WrapUnique(fcm_sender_), base::WrapUnique(fcm_handler_),
-        &device_info_tracker_, &fake_sync_service_);
+        &device_info_tracker_, &test_sync_service_);
     SharingSyncPreference::RegisterProfilePrefs(prefs_.registry());
   }
   void OnMessageSent(base::Optional<std::string> message_id) {}
@@ -100,26 +141,25 @@
                                          kNoCapabilities);
   }
 
-  ScopedTaskEnvironment scoped_task_environment_{
+  base::test::ScopedFeatureList scoped_feature_list_;
+  content::TestBrowserThreadBundle scoped_task_environment_{
       ScopedTaskEnvironment::MainThreadType::MOCK_TIME,
       ScopedTaskEnvironment::NowSource::MAIN_THREAD_MOCK_TIME};
 
   syncer::FakeDeviceInfoTracker device_info_tracker_;
   FakeLocalDeviceInfoProvider fake_local_device_info_provider_;
-  syncer::FakeSyncService fake_sync_service_;
+  syncer::TestSyncService test_sync_service_;
+  sync_preferences::TestingPrefServiceSyncable prefs_;
 
   NiceMock<MockInstanceIDDriver> mock_instance_id_driver_;
   NiceMock<MockGCMDriver> mock_gcm_driver_;
+  NiceMock<MockSharingFCMHandler>* fcm_handler_;
 
   SharingSyncPreference* sync_prefs_;
   VapidKeyManager* vapid_key_manager_;
-  SharingDeviceRegistration* sharing_device_registration_;
+  FakeSharingDeviceRegistration* sharing_device_registration_;
   SharingFCMSender* fcm_sender_;
-  SharingFCMHandler* fcm_handler_;
   std::unique_ptr<SharingService> sharing_service_ = nullptr;
-
- private:
-  sync_preferences::TestingPrefServiceSyncable prefs_;
 };
 
 }  // namespace
@@ -230,4 +270,51 @@
                      base::Unretained(this)));
 }
 
-// TODO(himanshujaju) Add tests for RegisterDevice
+TEST_F(SharingServiceTest, DeviceRegistration) {
+  // Enable the feature.
+  scoped_feature_list_.InitAndEnableFeature(kSharingDeviceRegistration);
+  test_sync_service_.SetTransportState(
+      syncer::SyncService::TransportState::ACTIVE);
+  test_sync_service_.SetActiveDataTypes(syncer::PREFERENCES);
+
+  // Expect registration to be successful on sync state changed.
+  sharing_device_registration_->SetResult(
+      SharingDeviceRegistration::Result::SUCCESS);
+  EXPECT_CALL(*fcm_handler_, StartListening()).Times(1);
+  test_sync_service_.FireStateChanged();
+  EXPECT_EQ(1, sharing_device_registration_->registration_attempts());
+
+  // As device is already registered, won't attempt registration anymore.
+  EXPECT_CALL(*fcm_handler_, StartListening()).Times(0);
+  test_sync_service_.FireStateChanged();
+  EXPECT_EQ(1, sharing_device_registration_->registration_attempts());
+
+  // Registration will be attempeted as VAPID key is cleared.
+  EXPECT_CALL(*fcm_handler_, StartListening()).Times(0);
+  prefs_.SetUserPref("sharing.vapid_key",
+                     base::Value::ToUniquePtrValue(
+                         base::Value(base::Value::Type::DICTIONARY)));
+  EXPECT_EQ(2, sharing_device_registration_->registration_attempts());
+}
+
+TEST_F(SharingServiceTest, DeviceRegistrationTransientError) {
+  // Enable the feature.
+  scoped_feature_list_.InitAndEnableFeature(kSharingDeviceRegistration);
+  test_sync_service_.SetTransportState(
+      syncer::SyncService::TransportState::ACTIVE);
+  test_sync_service_.SetActiveDataTypes(syncer::PREFERENCES);
+
+  // Retry will be scheduled on transient error received.
+  sharing_device_registration_->SetResult(
+      SharingDeviceRegistration::Result::TRANSIENT_ERROR);
+  test_sync_service_.FireStateChanged();
+  EXPECT_EQ(1, sharing_device_registration_->registration_attempts());
+
+  // Retry should be scheduled by now. Next retry after 5 minutes will be
+  // successful.
+  sharing_device_registration_->SetResult(
+      SharingDeviceRegistration::Result::SUCCESS);
+  EXPECT_CALL(*fcm_handler_, StartListening()).Times(1);
+  scoped_task_environment_.FastForwardBy(base::TimeDelta::FromMinutes(5));
+  EXPECT_EQ(2, sharing_device_registration_->registration_attempts());
+}
diff --git a/chrome/browser/sharing/sharing_sync_preference.cc b/chrome/browser/sharing/sharing_sync_preference.cc
index 88a4cb22..5a3c5a65 100644
--- a/chrome/browser/sharing/sharing_sync_preference.cc
+++ b/chrome/browser/sharing/sharing_sync_preference.cc
@@ -5,21 +5,70 @@
 #include "chrome/browser/sharing/sharing_sync_preference.h"
 
 #include "base/base64.h"
+#include "base/memory/ptr_util.h"
+#include "base/strings/string_piece.h"
+#include "base/time/time.h"
 #include "base/value_conversions.h"
+#include "base/values.h"
+#include "chrome/common/pref_names.h"
 #include "components/prefs/scoped_user_pref_update.h"
 #include "components/sync_preferences/pref_service_syncable.h"
 
 namespace {
 
-const char kVapidKey[] = "sharing.vapid_key";
 const char kVapidECPrivateKey[] = "vapid_private_key";
 const char kVapidCreationTimestamp[] = "vapid_creation_timestamp";
 
-const char kSyncedDevices[] = "sharing.synced_devices";
 const char kDeviceFcmToken[] = "device_fcm_token";
 const char kDeviceP256dh[] = "device_p256dh";
 const char kDeviceAuthSecret[] = "device_auth_secret";
 const char kDeviceCapabilities[] = "device_capabilities";
+const char kDeviceLastUpdated[] = "device_last_updated";
+
+base::Time GetTimestamp(const base::Value& value, base::StringPiece key) {
+  if (!value.is_dict())
+    return base::Time();
+  base::Time timestamp;
+  auto* timestamp_value = value.FindKey(key);
+  if (!timestamp_value || !base::GetValueAsTime(*timestamp_value, &timestamp))
+    return base::Time();
+  return timestamp;
+}
+
+bool ShouldUseLocalVapidKey(const base::Value& local_value,
+                            const base::Value& server_value) {
+  auto local_timestamp = GetTimestamp(local_value, kVapidCreationTimestamp);
+  bool has_local_timestamp = !local_timestamp.is_null();
+  if (!has_local_timestamp)
+    return false;
+
+  auto server_timestamp = GetTimestamp(server_value, kVapidCreationTimestamp);
+  bool has_server_timestamp = !server_timestamp.is_null();
+  if (!has_server_timestamp)
+    return true;
+
+  // Use older VAPID key if two versions exist to reduce the number of FCM
+  // registration invalidations as only new devices would encounter this.
+  return local_timestamp < server_timestamp;
+}
+
+bool ShouldUseLocalDeviceData(const base::Value& local_value,
+                              const base::Value& server_value) {
+  auto local_timestamp = GetTimestamp(local_value, kDeviceLastUpdated);
+  bool has_local_timestamp = !local_timestamp.is_null();
+  if (!has_local_timestamp)
+    return false;
+
+  auto server_timestamp = GetTimestamp(server_value, kDeviceLastUpdated);
+  bool has_server_timestamp = !server_timestamp.is_null();
+  if (!has_server_timestamp)
+    return true;
+
+  // Use newer device data if two versions exist. We guarantee that only the
+  // same device updates its own data, so clock diff issues should be minimal.
+  return local_timestamp > server_timestamp;
+}
+
 }  // namespace
 
 SharingSyncPreference::Device::Device(const std::string& fcm_token,
@@ -36,7 +85,9 @@
 SharingSyncPreference::Device::~Device() = default;
 
 SharingSyncPreference::SharingSyncPreference(PrefService* prefs)
-    : prefs_(prefs) {}
+    : prefs_(prefs) {
+  pref_change_registrar_.Init(prefs);
+}
 
 SharingSyncPreference::~SharingSyncPreference() = default;
 
@@ -44,14 +95,49 @@
 void SharingSyncPreference::RegisterProfilePrefs(
     user_prefs::PrefRegistrySyncable* registry) {
   registry->RegisterDictionaryPref(
-      kSyncedDevices, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+      prefs::kSharingSyncedDevices,
+      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
   registry->RegisterDictionaryPref(
-      kVapidKey, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+      prefs::kSharingVapidKey, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+}
+
+// static
+std::unique_ptr<base::Value> SharingSyncPreference::MaybeMergeVapidKey(
+    const base::Value& local_value,
+    const base::Value& server_value) {
+  return ShouldUseLocalVapidKey(local_value, server_value)
+             ? base::Value::ToUniquePtrValue(local_value.Clone())
+             : nullptr;
+}
+
+// static
+std::unique_ptr<base::Value> SharingSyncPreference::MaybeMergeSyncedDevices(
+    const base::Value& local_value,
+    const base::Value& server_value) {
+  if (!local_value.is_dict() || !server_value.is_dict())
+    return nullptr;
+
+  base::Value local_overrides(base::Value::Type::DICTIONARY);
+  for (const auto& it : local_value.DictItems()) {
+    const std::string& device_guid = it.first;
+    const base::Value& local = it.second;
+    const base::Value* server = server_value.FindKey(device_guid);
+    if (!server || ShouldUseLocalDeviceData(local, *server))
+      local_overrides.SetKey(device_guid, local.Clone());
+  }
+
+  if (local_overrides.DictEmpty())
+    return nullptr;
+
+  base::Value result = server_value.Clone();
+  result.MergeDictionary(&local_overrides);
+  return base::Value::ToUniquePtrValue(std::move(result));
 }
 
 base::Optional<std::vector<uint8_t>> SharingSyncPreference::GetVapidKey()
     const {
-  const base::DictionaryValue* vapid_key = prefs_->GetDictionary(kVapidKey);
+  const base::DictionaryValue* vapid_key =
+      prefs_->GetDictionary(prefs::kSharingVapidKey);
   std::string base64_private_key, private_key;
   if (!vapid_key->GetString(kVapidECPrivateKey, &base64_private_key))
     return base::nullopt;
@@ -71,17 +157,24 @@
   base::Base64Encode(std::string(vapid_key.begin(), vapid_key.end()),
                      &base64_vapid_key);
 
-  DictionaryPrefUpdate update(prefs_, kVapidKey);
+  DictionaryPrefUpdate update(prefs_, prefs::kSharingVapidKey);
   update->SetString(kVapidECPrivateKey, base64_vapid_key);
   update->SetString(kVapidCreationTimestamp,
                     base::CreateTimeValue(creation_timestamp).GetString());
 }
 
+void SharingSyncPreference::SetVapidKeyChangeObserver(
+    const base::RepeatingClosure& obs) {
+  if (pref_change_registrar_.IsObserved(prefs::kSharingVapidKey))
+    pref_change_registrar_.Remove(prefs::kSharingVapidKey);
+  pref_change_registrar_.Add(prefs::kSharingVapidKey, obs);
+}
+
 std::map<std::string, SharingSyncPreference::Device>
 SharingSyncPreference::GetSyncedDevices() const {
   std::map<std::string, Device> synced_devices;
   const base::DictionaryValue* devices_preferences =
-      prefs_->GetDictionary(kSyncedDevices);
+      prefs_->GetDictionary(prefs::kSharingSyncedDevices);
   for (const auto& it : devices_preferences->DictItems()) {
     base::Optional<Device> device = ValueToDevice(it.second);
     if (device)
@@ -92,16 +185,22 @@
 
 void SharingSyncPreference::SetSyncDevice(const std::string& guid,
                                           const Device& device) {
-  DictionaryPrefUpdate update(prefs_, kSyncedDevices);
-  update->SetKey(guid, DeviceToValue(device));
+  DictionaryPrefUpdate update(prefs_, prefs::kSharingSyncedDevices);
+  update->SetKey(guid, DeviceToValue(device, base::Time::Now()));
 }
 
 void SharingSyncPreference::RemoveDevice(const std::string& guid) {
-  DictionaryPrefUpdate update(prefs_, kSyncedDevices);
-  update->RemoveKey(guid);
+  DictionaryPrefUpdate update(prefs_, prefs::kSharingSyncedDevices);
+  // Clear all values of device with |guid| by setting its value to an empty
+  // entry that only contains a timestamp so other devices can merge it.
+  base::Value cleared(base::Value::Type::DICTIONARY);
+  cleared.SetKey(kDeviceLastUpdated, base::CreateTimeValue(base::Time::Now()));
+  update->SetKey(guid, std::move(cleared));
 }
 
-base::Value SharingSyncPreference::DeviceToValue(const Device& device) const {
+// static
+base::Value SharingSyncPreference::DeviceToValue(const Device& device,
+                                                 base::Time timestamp) {
   std::string base64_p256dh, base64_auth_secret;
   base::Base64Encode(device.p256dh, &base64_p256dh);
   base::Base64Encode(device.auth_secret, &base64_auth_secret);
@@ -111,12 +210,17 @@
   result.SetStringKey(kDeviceP256dh, base64_p256dh);
   result.SetStringKey(kDeviceAuthSecret, base64_auth_secret);
   result.SetIntKey(kDeviceCapabilities, device.capabilities);
+  result.SetKey(kDeviceLastUpdated, base::CreateTimeValue(timestamp));
   return result;
 }
 
+// static
 base::Optional<SharingSyncPreference::Device>
-SharingSyncPreference::ValueToDevice(const base::Value& value) const {
+SharingSyncPreference::ValueToDevice(const base::Value& value) {
   const std::string* fcm_token = value.FindStringKey(kDeviceFcmToken);
+  if (!fcm_token)
+    return base::nullopt;
+
   const std::string* base64_p256dh = value.FindStringKey(kDeviceP256dh);
   const std::string* base64_auth_secret =
       value.FindStringKey(kDeviceAuthSecret);
@@ -124,12 +228,12 @@
       value.FindIntKey(kDeviceCapabilities);
 
   std::string p256dh, auth_secret;
-  if (!fcm_token || !base64_p256dh || !base64_auth_secret || !capabilities ||
+  if (!base64_p256dh || !base64_auth_secret || !capabilities ||
       !base::Base64Decode(*base64_p256dh, &p256dh) ||
       !base::Base64Decode(*base64_auth_secret, &auth_secret)) {
     LOG(ERROR) << "Could not convert synced value to device object.";
     return base::nullopt;
-  } else {
-    return Device(*fcm_token, p256dh, auth_secret, *capabilities);
   }
+
+  return Device(*fcm_token, p256dh, auth_secret, *capabilities);
 }
diff --git a/chrome/browser/sharing/sharing_sync_preference.h b/chrome/browser/sharing/sharing_sync_preference.h
index 050ace6..e0965ae9 100644
--- a/chrome/browser/sharing/sharing_sync_preference.h
+++ b/chrome/browser/sharing/sharing_sync_preference.h
@@ -12,7 +12,9 @@
 
 #include "base/macros.h"
 #include "base/optional.h"
+#include "base/time/time.h"
 #include "base/values.h"
+#include "components/prefs/pref_change_registrar.h"
 
 namespace user_prefs {
 class PrefRegistrySyncable;
@@ -52,6 +54,20 @@
 
   static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
 
+  // Returns a copy of |local_value| to sync if its timestamp is older than the
+  // one of |server_value|. Otherwise returns nullptr which means that we pick
+  // the |server_value| as is.
+  static std::unique_ptr<base::Value> MaybeMergeVapidKey(
+      const base::Value& local_value,
+      const base::Value& server_value);
+
+  // Returns a new dictionary with devices merged from both |local_value| and
+  // |server_value| based on their last modified timestamp. May return nullptr
+  // if we should just pick |server_value| as is.
+  static std::unique_ptr<base::Value> MaybeMergeSyncedDevices(
+      const base::Value& local_value,
+      const base::Value& server_value);
+
   // Returns VAPID key from preferences if present, otherwise returns
   // base::nullopt.
   // For more information on vapid keys, please see
@@ -61,6 +77,9 @@
   // Adds VAPID key to preferences for syncing across devices.
   void SetVapidKey(const std::vector<uint8_t>& vapid_key) const;
 
+  // Observe for VAPID key changes. Replace previously set observer.
+  void SetVapidKeyChangeObserver(const base::RepeatingClosure& obs);
+
   // Returns the map of guid to device from sharing preferences. Guid is same
   // as sync device guid.
   std::map<std::string, Device> GetSyncedDevices() const;
@@ -74,11 +93,14 @@
   void RemoveDevice(const std::string& guid);
 
  private:
-  base::Value DeviceToValue(const Device& device) const;
+  friend class SharingSyncPreferenceTest;
 
-  base::Optional<Device> ValueToDevice(const base::Value& value) const;
+  static base::Value DeviceToValue(const Device& device, base::Time timestamp);
+
+  static base::Optional<Device> ValueToDevice(const base::Value& value);
 
   PrefService* prefs_;
+  PrefChangeRegistrar pref_change_registrar_;
 
   DISALLOW_COPY_AND_ASSIGN(SharingSyncPreference);
 };
diff --git a/chrome/browser/sharing/sharing_sync_preference_unittest.cc b/chrome/browser/sharing/sharing_sync_preference_unittest.cc
index af638ae..cc4386f 100644
--- a/chrome/browser/sharing/sharing_sync_preference_unittest.cc
+++ b/chrome/browser/sharing/sharing_sync_preference_unittest.cc
@@ -6,6 +6,10 @@
 
 #include <memory>
 
+#include "base/guid.h"
+#include "base/time/time.h"
+#include "base/value_conversions.h"
+#include "base/values.h"
 #include "components/prefs/scoped_user_pref_update.h"
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -22,6 +26,8 @@
 const char kDeviceP256dh[] = "test_p256dh";
 const int kCapabilities = 1;
 
+}  // namespace
+
 class SharingSyncPreferenceTest : public testing::Test {
  protected:
   SharingSyncPreferenceTest() : sharing_sync_preference_(&prefs_) {
@@ -46,12 +52,16 @@
       return std::move(it->second);
   }
 
+  static base::Value CreateRandomDevice(base::Time timestamp) {
+    return SharingSyncPreference::DeviceToValue(
+        {base::GenerateGUID(), kDeviceP256dh, kDeviceAuthToken, kCapabilities},
+        timestamp);
+  }
+
   sync_preferences::TestingPrefServiceSyncable prefs_;
   SharingSyncPreference sharing_sync_preference_;
 };
 
-}  // namespace
-
 TEST_F(SharingSyncPreferenceTest, UpdateVapidKeys) {
   EXPECT_EQ(base::nullopt, sharing_sync_preference_.GetVapidKey());
   sharing_sync_preference_.SetVapidKey(kVapidKey);
@@ -76,3 +86,146 @@
   EXPECT_EQ(kDeviceAuthToken, device->auth_secret);
   EXPECT_EQ(kCapabilities, device->capabilities);
 }
+
+TEST_F(SharingSyncPreferenceTest, MergeVapidKeys_BothEmpty) {
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+  auto merged = SharingSyncPreference::MaybeMergeVapidKey(local, server);
+  EXPECT_EQ(nullptr, merged);
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeVapidKeys_ServerEmpty) {
+  base::Time time = base::Time::Now();
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+
+  local.SetKey("vapid_creation_timestamp", base::CreateTimeValue(time));
+
+  auto merged = SharingSyncPreference::MaybeMergeVapidKey(local, server);
+  ASSERT_TRUE(merged);
+  EXPECT_EQ(local, *merged);
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeVapidKeys_LocalEmpty) {
+  base::Time time = base::Time::Now();
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+
+  server.SetKey("vapid_creation_timestamp", base::CreateTimeValue(time));
+
+  auto merged = SharingSyncPreference::MaybeMergeVapidKey(local, server);
+  EXPECT_EQ(nullptr, merged);
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeVapidKeys_LocalNewer) {
+  base::Time old_time = base::Time::Now();
+  base::Time new_time = old_time + base::TimeDelta::FromSeconds(1);
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+
+  local.SetKey("vapid_creation_timestamp", base::CreateTimeValue(new_time));
+  server.SetKey("vapid_creation_timestamp", base::CreateTimeValue(old_time));
+
+  auto merged = SharingSyncPreference::MaybeMergeVapidKey(local, server);
+  EXPECT_EQ(nullptr, merged);
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeVapidKeys_ServerNewer) {
+  base::Time old_time = base::Time::Now();
+  base::Time new_time = old_time + base::TimeDelta::FromSeconds(1);
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+
+  local.SetKey("vapid_creation_timestamp", base::CreateTimeValue(old_time));
+  server.SetKey("vapid_creation_timestamp", base::CreateTimeValue(new_time));
+
+  auto merged = SharingSyncPreference::MaybeMergeVapidKey(local, server);
+  ASSERT_TRUE(merged);
+  EXPECT_EQ(local, *merged);
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeVapidKeys_BothEqual) {
+  base::Time time = base::Time::Now();
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+
+  local.SetKey("vapid_creation_timestamp", base::CreateTimeValue(time));
+  server.SetKey("vapid_creation_timestamp", base::CreateTimeValue(time));
+
+  auto merged = SharingSyncPreference::MaybeMergeVapidKey(local, server);
+  EXPECT_EQ(nullptr, merged);
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeDevices_BothEmpty) {
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+  auto merged = SharingSyncPreference::MaybeMergeSyncedDevices(local, server);
+  EXPECT_EQ(nullptr, merged);
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeDevices_ServerEmpty) {
+  base::Time time = base::Time::Now();
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+
+  local.SetKey("device-1", CreateRandomDevice(time));
+
+  auto merged = SharingSyncPreference::MaybeMergeSyncedDevices(local, server);
+  ASSERT_TRUE(merged);
+  EXPECT_EQ(local, *merged);
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeDevices_LocalEmpty) {
+  base::Time time = base::Time::Now();
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+
+  server.SetKey("device-1", CreateRandomDevice(time));
+
+  auto merged = SharingSyncPreference::MaybeMergeSyncedDevices(local, server);
+  EXPECT_EQ(nullptr, merged);
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeDevices_BothValues) {
+  base::Time old_time = base::Time::Now();
+  base::Time new_time = old_time + base::TimeDelta::FromSeconds(1);
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+
+  local.SetKey("local_only", CreateRandomDevice(old_time));
+  local.SetKey("server_newer", CreateRandomDevice(old_time));
+  server.SetKey("server_newer", CreateRandomDevice(new_time));
+  local.SetKey("local_newer", CreateRandomDevice(new_time));
+  server.SetKey("local_newer", CreateRandomDevice(old_time));
+  local.SetKey("both_same", CreateRandomDevice(old_time));
+  server.SetKey("both_same", CreateRandomDevice(old_time));
+  server.SetKey("server_only", CreateRandomDevice(old_time));
+
+  auto merged = SharingSyncPreference::MaybeMergeSyncedDevices(local, server);
+  ASSERT_TRUE(merged);
+
+  ASSERT_TRUE(merged->FindKey("local_only"));
+  EXPECT_EQ(*local.FindKey("local_only"), *merged->FindKey("local_only"));
+  ASSERT_TRUE(merged->FindKey("server_newer"));
+  EXPECT_EQ(*server.FindKey("server_newer"), *merged->FindKey("server_newer"));
+  ASSERT_TRUE(merged->FindKey("local_newer"));
+  EXPECT_EQ(*local.FindKey("local_newer"), *merged->FindKey("local_newer"));
+  ASSERT_TRUE(merged->FindKey("both_same"));
+  EXPECT_EQ(*server.FindKey("both_same"), *merged->FindKey("both_same"));
+  ASSERT_TRUE(merged->FindKey("server_only"));
+  EXPECT_EQ(*server.FindKey("server_only"), *merged->FindKey("server_only"));
+}
+
+TEST_F(SharingSyncPreferenceTest, MergeDevices_ServerOnlyOrNewer) {
+  base::Time old_time = base::Time::Now();
+  base::Time new_time = old_time + base::TimeDelta::FromSeconds(1);
+  base::Value local(base::Value::Type::DICTIONARY);
+  base::Value server(base::Value::Type::DICTIONARY);
+
+  local.SetKey("server_newer", CreateRandomDevice(old_time));
+  server.SetKey("server_newer", CreateRandomDevice(new_time));
+  server.SetKey("server_only", CreateRandomDevice(old_time));
+
+  auto merged = SharingSyncPreference::MaybeMergeSyncedDevices(local, server);
+  EXPECT_EQ(nullptr, merged);
+}
diff --git a/chrome/browser/signin/account_consistency_mode_manager_factory.cc b/chrome/browser/signin/account_consistency_mode_manager_factory.cc
index e739f36..32d46d82 100644
--- a/chrome/browser/signin/account_consistency_mode_manager_factory.cc
+++ b/chrome/browser/signin/account_consistency_mode_manager_factory.cc
@@ -9,7 +9,6 @@
 #include "chrome/browser/profiles/profile.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
-#include "components/signin/core/browser/signin_buildflags.h"
 
 // static
 AccountConsistencyModeManagerFactory*
diff --git a/chrome/browser/signin/identity_manager_factory.cc b/chrome/browser/signin/identity_manager_factory.cc
index a537aba3..75fdaaa 100644
--- a/chrome/browser/signin/identity_manager_factory.cc
+++ b/chrome/browser/signin/identity_manager_factory.cc
@@ -7,6 +7,7 @@
 #include <memory>
 #include <utility>
 
+#include "base/files/file_path.h"
 #include "build/build_config.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/image_fetcher/image_decoder_impl.h"
@@ -28,6 +29,12 @@
 #include "components/signin/core/browser/mutable_profile_oauth2_token_service_delegate.h"
 #endif
 
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/browser_process_platform_part.h"
+#include "chrome/browser/chromeos/profiles/profile_helper.h"
+#include "chromeos/components/account_manager/account_manager_factory.h"
+#endif
+
 namespace {
 
 std::unique_ptr<AccountTrackerService> BuildAccountTrackerService(
@@ -106,10 +113,26 @@
   params.network_connection_tracker = content::GetNetworkConnectionTracker();
   params.pref_service = profile->GetPrefs();
   params.signin_client = ChromeSigninClientFactory::GetForProfile(profile);
+
+#if defined(OS_CHROMEOS)
+  chromeos::AccountManagerFactory* factory =
+      g_browser_process->platform_part()->GetAccountManagerFactory();
+  DCHECK(factory);
+  params.account_manager =
+      factory->GetAccountManager(profile->GetPath().value());
+  params.is_regular_profile =
+      !chromeos::ProfileHelper::IsSigninProfile(profile) &&
+      !chromeos::ProfileHelper::IsLockScreenAppProfile(profile);
+#endif
+
   params.token_service = ProfileOAuth2TokenServiceBuilder::BuildInstanceFor(
       context, params.pref_service, params.account_tracker_service.get(),
       params.network_connection_tracker, params.account_consistency,
+#if defined(OS_CHROMEOS)
+      params.account_manager, params.is_regular_profile,
+#endif
       params.signin_client);
+
   std::unique_ptr<identity::IdentityManager> identity_manager =
       identity::BuildIdentityManager(&params);
 
diff --git a/chrome/browser/signin/profile_oauth2_token_service_builder.cc b/chrome/browser/signin/profile_oauth2_token_service_builder.cc
index 6403f5b0..a21a90c 100644
--- a/chrome/browser/signin/profile_oauth2_token_service_builder.cc
+++ b/chrome/browser/signin/profile_oauth2_token_service_builder.cc
@@ -10,7 +10,6 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
-#include "build/build_config.h"
 #include "chrome/browser/profiles/profile.h"
 #include "components/signin/core/browser/account_consistency_method.h"
 #include "components/signin/core/browser/device_id_helper.h"
@@ -28,9 +27,7 @@
 #endif
 
 #if defined(OS_CHROMEOS)
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/profiles/profile_helper.h"
-#include "chromeos/components/account_manager/account_manager_factory.h"
+#include "chromeos/components/account_manager/account_manager.h"
 #include "chromeos/constants/chromeos_switches.h"
 #include "components/signin/core/browser/profile_oauth2_token_service_delegate_chromeos.h"
 #include "components/user_manager/user_manager.h"
@@ -42,30 +39,27 @@
 
 namespace {
 
+#if defined(OS_ANDROID)
+std::unique_ptr<OAuth2TokenServiceDelegateAndroid> CreateAndroidOAuthDelegate(
+    AccountTrackerService* account_tracker_service) {
+  return std::make_unique<OAuth2TokenServiceDelegateAndroid>(
+      account_tracker_service);
+}
+#else  // defined(OS_ANDROID)
 #if defined(OS_CHROMEOS)
 std::unique_ptr<signin::ProfileOAuth2TokenServiceDelegateChromeOS>
 CreateCrOsOAuthDelegate(
-    Profile* profile,
     AccountTrackerService* account_tracker_service,
-    network::NetworkConnectionTracker* network_connection_tracker) {
-  chromeos::AccountManagerFactory* factory =
-      g_browser_process->platform_part()->GetAccountManagerFactory();
-  DCHECK(factory);
-  chromeos::AccountManager* account_manager =
-      factory->GetAccountManager(profile->GetPath().value());
+    network::NetworkConnectionTracker* network_connection_tracker,
+    chromeos::AccountManager* account_manager,
+    bool is_regular_profile) {
   DCHECK(account_manager);
-
-  const bool is_regular_profile =
-      !chromeos::ProfileHelper::IsSigninProfile(profile) &&
-      !chromeos::ProfileHelper::IsLockScreenAppProfile(profile);
   return std::make_unique<signin::ProfileOAuth2TokenServiceDelegateChromeOS>(
       account_tracker_service, network_connection_tracker, account_manager,
       is_regular_profile);
 }
 #endif  // defined(OS_CHROMEOS)
 
-#if !defined(OS_ANDROID)
-
 // Supervised users cannot revoke credentials.
 bool CanRevokeCredentials(Profile* profile) {
 #if defined(OS_CHROMEOS)
@@ -117,17 +111,19 @@
     AccountTrackerService* account_tracker_service,
     signin::AccountConsistencyMethod account_consistency,
     SigninClient* signin_client,
+#if defined(OS_CHROMEOS)
+    chromeos::AccountManager* account_manager,
+    bool is_regular_profile,
+#endif
     network::NetworkConnectionTracker* network_connection_tracker) {
 #if defined(OS_ANDROID)
-  return std::make_unique<OAuth2TokenServiceDelegateAndroid>(
-      account_tracker_service);
-
+  return CreateAndroidOAuthDelegate(account_tracker_service);
 #else  // defined(OS_ANDROID)
-
 #if defined(OS_CHROMEOS)
   if (chromeos::switches::IsAccountManagerEnabled()) {
-    return CreateCrOsOAuthDelegate(profile, account_tracker_service,
-                                   network_connection_tracker);
+    return CreateCrOsOAuthDelegate(account_tracker_service,
+                                   network_connection_tracker, account_manager,
+                                   is_regular_profile);
   }
 #endif  // defined(OS_CHROMEOS)
 
@@ -138,8 +134,7 @@
   return CreateMutableProfileOAuthDelegate(profile, account_tracker_service,
                                            account_consistency, signin_client,
                                            network_connection_tracker);
-
-#endif  // defined(OS_ANDROID)
+#endif  // !defined(OS_ANDROID)
 }
 
 }  // namespace
@@ -152,6 +147,10 @@
     AccountTrackerService* account_tracker_service,
     network::NetworkConnectionTracker* network_connection_tracker,
     signin::AccountConsistencyMethod account_consistency,
+#if defined(OS_CHROMEOS)
+    chromeos::AccountManager* account_manager,
+    bool is_regular_profile,
+#endif
     SigninClient* signin_client) {
   Profile* profile = static_cast<Profile*>(context);
 
@@ -165,7 +164,11 @@
 #endif
 
   return std::make_unique<ProfileOAuth2TokenService>(
-      pref_service, CreateOAuth2TokenServiceDelegate(
-                        profile, account_tracker_service, account_consistency,
-                        signin_client, network_connection_tracker));
+      pref_service,
+      CreateOAuth2TokenServiceDelegate(profile, account_tracker_service,
+                                       account_consistency, signin_client,
+#if defined(OS_CHROMEOS)
+                                       account_manager, is_regular_profile,
+#endif
+                                       network_connection_tracker));
 }
diff --git a/chrome/browser/signin/profile_oauth2_token_service_builder.h b/chrome/browser/signin/profile_oauth2_token_service_builder.h
index 43f4815..f6b7584 100644
--- a/chrome/browser/signin/profile_oauth2_token_service_builder.h
+++ b/chrome/browser/signin/profile_oauth2_token_service_builder.h
@@ -7,6 +7,8 @@
 
 #include <memory>
 
+#include "build/build_config.h"
+
 class AccountTrackerService;
 class IdentityManagerFactory;
 class PrefService;
@@ -25,6 +27,12 @@
 class NetworkConnectionTracker;
 }
 
+#if defined(OS_CHROMEOS)
+namespace chromeos {
+class AccountManager;
+}
+#endif
+
 class ProfileOAuth2TokenServiceBuilder {
  private:
   // Builds a ProfileOAuth2TokenService instance for use by IdentityManager.
@@ -34,6 +42,10 @@
       AccountTrackerService* account_tracker_service,
       network::NetworkConnectionTracker* network_connection_tracker,
       signin::AccountConsistencyMethod account_consistency,
+#if defined(OS_CHROMEOS)
+      chromeos::AccountManager* account_manager,
+      bool is_regular_profile,
+#endif
       SigninClient* signin_client);
 
   friend IdentityManagerFactory;
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index b5ee25fef..e261e85d 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -465,6 +465,7 @@
     "//components/onc",
     "//components/password_manager/content/browser",
     "//components/password_manager/core/browser",
+    "//components/password_manager/core/browser:affiliation",
     "//components/payments/content:utils",
     "//components/payments/content/icon",
     "//components/payments/core:error_strings",
@@ -1635,12 +1636,14 @@
       "webui/chromeos/first_run/first_run_ui.h",
       "webui/chromeos/image_source.cc",
       "webui/chromeos/image_source.h",
-      "webui/chromeos/insession_confirm_password_change_handler_chromeos.cc",
-      "webui/chromeos/insession_confirm_password_change_handler_chromeos.h",
-      "webui/chromeos/insession_password_change_handler_chromeos.cc",
-      "webui/chromeos/insession_password_change_handler_chromeos.h",
-      "webui/chromeos/insession_password_change_ui.cc",
-      "webui/chromeos/insession_password_change_ui.h",
+      "webui/chromeos/in_session_password_change/confirm_password_change_handler.cc",
+      "webui/chromeos/in_session_password_change/confirm_password_change_handler.h",
+      "webui/chromeos/in_session_password_change/password_change_handler.cc",
+      "webui/chromeos/in_session_password_change/password_change_handler.h",
+      "webui/chromeos/in_session_password_change/password_change_ui.cc",
+      "webui/chromeos/in_session_password_change/password_change_ui.h",
+      "webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.cc",
+      "webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.h",
       "webui/chromeos/internet_config_dialog.cc",
       "webui/chromeos/internet_config_dialog.h",
       "webui/chromeos/internet_detail_dialog.cc",
@@ -1791,8 +1794,6 @@
       "webui/chromeos/sys_internals/sys_internals_ui.h",
       "webui/chromeos/system_web_dialog_delegate.cc",
       "webui/chromeos/system_web_dialog_delegate.h",
-      "webui/chromeos/urgent_password_expiry_notification_handler.cc",
-      "webui/chromeos/urgent_password_expiry_notification_handler.h",
       "webui/chromeos/user_image_source.cc",
       "webui/chromeos/user_image_source.h",
       "webui/chromeos/video_source.cc",
@@ -2948,6 +2949,8 @@
       "views/permission_bubble/permission_prompt_impl_views.cc",
       "views/profiles/avatar_toolbar_button.cc",
       "views/profiles/avatar_toolbar_button.h",
+      "views/reader_mode/reader_mode_icon_view.cc",
+      "views/reader_mode/reader_mode_icon_view.h",
       "views/relaunch_notification/relaunch_notification_controller.cc",
       "views/relaunch_notification/relaunch_notification_controller.h",
       "views/relaunch_notification/relaunch_notification_metrics.cc",
diff --git a/chrome/browser/ui/ash/accessibility/accessibility_controller_client.cc b/chrome/browser/ui/ash/accessibility/accessibility_controller_client.cc
index c3c8c9a..ad5aef6f 100644
--- a/chrome/browser/ui/ash/accessibility/accessibility_controller_client.cc
+++ b/chrome/browser/ui/ash/accessibility/accessibility_controller_client.cc
@@ -132,3 +132,9 @@
 void AccessibilityControllerClient::RequestSelectToSpeakStateChange() {
   chromeos::AccessibilityManager::Get()->RequestSelectToSpeakStateChange();
 }
+
+void AccessibilityControllerClient::RequestAutoclickScrollableBoundsForPoint(
+    gfx::Point& point_in_screen) {
+  chromeos::AccessibilityManager::Get()
+      ->RequestAutoclickScrollableBoundsForPoint(point_in_screen);
+}
diff --git a/chrome/browser/ui/ash/accessibility/accessibility_controller_client.h b/chrome/browser/ui/ash/accessibility/accessibility_controller_client.h
index 0057b14..5c20abe 100644
--- a/chrome/browser/ui/ash/accessibility/accessibility_controller_client.h
+++ b/chrome/browser/ui/ash/accessibility/accessibility_controller_client.h
@@ -27,6 +27,8 @@
   bool ShouldToggleSpokenFeedbackViaTouch() const override;
   void PlaySpokenFeedbackToggleCountdown(int tick_count) override;
   void RequestSelectToSpeakStateChange() override;
+  void RequestAutoclickScrollableBoundsForPoint(
+      gfx::Point& point_in_screen) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(AccessibilityControllerClient);
diff --git a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc
index 013c325..1967cfc 100644
--- a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc
+++ b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc
@@ -47,6 +47,9 @@
 void FakeAccessibilityController::ToggleDictationFromSource(
     ash::DictationToggleSource source) {}
 
+void FakeAccessibilityController::OnAutoclickScrollableBoundsFound(
+    gfx::Rect& bounds_in_screen) {}
+
 void FakeAccessibilityController::ForwardKeyEventsToSwitchAccess(
     bool should_forward) {}
 
diff --git a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
index b3a58f6..029346f 100644
--- a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
+++ b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
@@ -40,6 +40,7 @@
       const std::vector<int>& keys_to_capture) override;
   void SetDictationActive(bool is_active) override;
   void ToggleDictationFromSource(ash::DictationToggleSource source) override;
+  void OnAutoclickScrollableBoundsFound(gfx::Rect& bounds_in_screen) override;
   void ForwardKeyEventsToSwitchAccess(bool should_forward) override;
   base::string16 GetBatteryDescription() const override;
   void SetVirtualKeyboardVisible(bool is_visible) override;
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc
index d0237c8a..e91194e5 100644
--- a/chrome/browser/ui/autofill/chrome_autofill_client.cc
+++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -50,7 +50,6 @@
 #include "components/password_manager/core/browser/password_requirements_service.h"
 #include "components/prefs/pref_service.h"
 #include "components/signin/core/browser/account_info.h"
-#include "components/signin/core/browser/signin_buildflags.h"
 #include "components/signin/core/browser/signin_header_helper.h"
 #include "components/signin/core/browser/signin_metrics.h"
 #include "components/signin/public/identity_manager/identity_manager.h"
diff --git a/chrome/browser/ui/autofill/payments/autofill_ui_util.cc b/chrome/browser/ui/autofill/payments/autofill_ui_util.cc
index f66aef3..d339f5f 100644
--- a/chrome/browser/ui/autofill/payments/autofill_ui_util.cc
+++ b/chrome/browser/ui/autofill/payments/autofill_ui_util.cc
@@ -56,11 +56,12 @@
         break;
       case PageActionIconType::kFind:
       case PageActionIconType::kIntentPicker:
+      case PageActionIconType::kNativeFileSystemAccess:
       case PageActionIconType::kPwaInstall:
+      case PageActionIconType::kReaderMode:
       case PageActionIconType::kSendTabToSelf:
       case PageActionIconType::kTranslate:
       case PageActionIconType::kZoom:
-      case PageActionIconType::kNativeFileSystemAccess:
         NOTREACHED();
     }
   }
diff --git a/chrome/browser/ui/cocoa/history_menu_bridge.h b/chrome/browser/ui/cocoa/history_menu_bridge.h
index ae14d8e0..8c281f96 100644
--- a/chrome/browser/ui/cocoa/history_menu_bridge.h
+++ b/chrome/browser/ui/cocoa/history_menu_bridge.h
@@ -38,7 +38,7 @@
 // HistoryService and the TabRestoreService, and then updates the NSMenu when
 // there is new data.
 //
-// The history menu is broken up into sections: most visisted and recently
+// The history menu is broken up into sections: recently visited and recently
 // closed. The overall menu has a tag of IDC_HISTORY_MENU, with the user content
 // items having the local tags defined in the enum below. Items within a section
 // all share the same tag. The structure of the menu is laid out in MainMenu.xib
diff --git a/chrome/browser/ui/cocoa/history_menu_bridge.mm b/chrome/browser/ui/cocoa/history_menu_bridge.mm
index 9236e69..76c5e07 100644
--- a/chrome/browser/ui/cocoa/history_menu_bridge.mm
+++ b/chrome/browser/ui/cocoa/history_menu_bridge.mm
@@ -30,7 +30,7 @@
 // Number of days to consider when getting the number of visited items.
 const int kVisitedScope = 90;
 
-// The number of visisted results to get.
+// The number of visited results to get.
 const int kVisitedCount = 15;
 
 // The number of recently closed items to get.
diff --git a/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm b/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm
index 10adc480..91dc543 100644
--- a/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm
+++ b/chrome/browser/ui/cocoa/history_menu_cocoa_controller.mm
@@ -5,6 +5,7 @@
 #import "chrome/browser/ui/cocoa/history_menu_cocoa_controller.h"
 
 #import "base/mac/foundation_util.h"
+#include "base/metrics/user_metrics.h"
 #include "chrome/app/chrome_command_ids.h"  // IDC_HISTORY_MENU
 #import "chrome/browser/app_controller_mac.h"
 #include "chrome/browser/profiles/profile.h"
@@ -65,6 +66,15 @@
 - (IBAction)openHistoryMenuItem:(id)sender {
   const HistoryMenuBridge::HistoryItem* item =
       bridge_->HistoryItemForMenuItem(sender);
+
+  if ([sender tag] == HistoryMenuBridge::kRecentlyClosed) {
+    base::RecordAction(
+        base::UserMetricsAction("TopMenu_History_RecentlyClosed"));
+  } else if ([sender tag] == HistoryMenuBridge::kVisited) {
+    base::RecordAction(
+        base::UserMetricsAction("TopMenu_History_RecentlyVisited"));
+  }
+
   [self openURLForItem:item];
 }
 
diff --git a/chrome/browser/ui/extensions/app_launch_params.cc b/chrome/browser/ui/extensions/app_launch_params.cc
index 75bc932c..ac6f0a3 100644
--- a/chrome/browser/ui/extensions/app_launch_params.cc
+++ b/chrome/browser/ui/extensions/app_launch_params.cc
@@ -9,7 +9,6 @@
 #include "extensions/browser/extension_prefs.h"
 #include "extensions/common/constants.h"
 #include "extensions/common/extension.h"
-#include "ui/base/window_open_disposition.h"
 
 #if defined(OS_CHROMEOS)
 #include "chrome/browser/chromeos/arc/arc_util.h"
@@ -18,25 +17,6 @@
 
 using extensions::ExtensionPrefs;
 
-AppLaunchParams::AppLaunchParams(Profile* profile,
-                                 const std::string& app_id,
-                                 apps::mojom::LaunchContainer container,
-                                 WindowOpenDisposition disposition,
-                                 apps::mojom::AppLaunchSource source,
-                                 int64_t display_id)
-    : profile(profile),
-      app_id(app_id),
-      container(container),
-      disposition(disposition),
-      command_line(base::CommandLine::NO_PROGRAM),
-      source(source),
-      display_id(display_id),
-      opener(nullptr) {}
-
-AppLaunchParams::AppLaunchParams(const AppLaunchParams& other) = default;
-
-AppLaunchParams::~AppLaunchParams() {}
-
 AppLaunchParams CreateAppLaunchParamsUserContainer(
     Profile* profile,
     const extensions::Extension* extension,
diff --git a/chrome/browser/ui/extensions/app_launch_params.h b/chrome/browser/ui/extensions/app_launch_params.h
index 9a9e17d..b5d93b5 100644
--- a/chrome/browser/ui/extensions/app_launch_params.h
+++ b/chrome/browser/ui/extensions/app_launch_params.h
@@ -5,86 +5,16 @@
 #ifndef CHROME_BROWSER_UI_EXTENSIONS_APP_LAUNCH_PARAMS_H_
 #define CHROME_BROWSER_UI_EXTENSIONS_APP_LAUNCH_PARAMS_H_
 
-#include <string>
-
-#include "base/command_line.h"
-#include "base/files/file_path.h"
+#include "chrome/browser/apps/app_service/app_launch_params.h"
 #include "components/services/app_service/public/mojom/types.mojom.h"
 #include "ui/base/window_open_disposition.h"
-#include "ui/display/types/display_constants.h"
-#include "ui/gfx/geometry/rect.h"
-#include "url/gurl.h"
 
 class Profile;
 
-namespace content {
-class RenderFrameHost;
-}
-
 namespace extensions {
 class Extension;
 }
 
-struct AppLaunchParams {
-  AppLaunchParams(Profile* profile,
-                  const std::string& app_id,
-                  apps::mojom::LaunchContainer container,
-                  WindowOpenDisposition disposition,
-                  apps::mojom::AppLaunchSource source,
-                  int64_t display_id = display::kInvalidDisplayId);
-
-  AppLaunchParams(const AppLaunchParams& other);
-
-  ~AppLaunchParams();
-
-  // The profile to load the application from.
-  Profile* profile;
-
-  // The app to launch.
-  std::string app_id;
-
-  // An id that can be passed to an app when launched in order to support
-  // multiple shelf items per app.
-  std::string launch_id;
-
-  // The container type to launch the application in.
-  apps::mojom::LaunchContainer container;
-
-  // If container is TAB, this field controls how the tab is opened.
-  WindowOpenDisposition disposition;
-
-  // If non-empty, use override_url in place of the application's launch url.
-  GURL override_url;
-
-  // If non-empty, use override_boudns in place of the application's default
-  // position and dimensions.
-  gfx::Rect override_bounds;
-
-  // If non-empty, use override_app_name in place of generating one normally.
-  std::string override_app_name;
-
-  // If non-empty, information from the command line may be passed on to the
-  // application.
-  base::CommandLine command_line;
-
-  // If non-empty, the current directory from which any relative paths on the
-  // command line should be expanded from.
-  base::FilePath current_directory;
-
-  // Record where the app is launched from for tracking purpose.
-  // Different app may have their own enumeration of sources.
-  apps::mojom::AppLaunchSource source;
-
-  // The id of the display from which the app is launched.
-  // display::kInvalidDisplayId means that the display does not exist or is not
-  // set.
-  int64_t display_id;
-
-  // The frame that initiated the open. May be null. If set, the new app will
-  // have |opener| as its window.opener.
-  content::RenderFrameHost* opener;
-};
-
 // Helper to create AppLaunchParams using extensions::GetLaunchContainer with
 // LAUNCH_TYPE_REGULAR to check for a user-configured container.
 AppLaunchParams CreateAppLaunchParamsUserContainer(
diff --git a/chrome/browser/ui/extensions/hosted_app_browser_controller.cc b/chrome/browser/ui/extensions/hosted_app_browser_controller.cc
index ef0c369..ac91e9f4 100644
--- a/chrome/browser/ui/extensions/hosted_app_browser_controller.cc
+++ b/chrome/browser/ui/extensions/hosted_app_browser_controller.cc
@@ -43,16 +43,6 @@
 
 namespace {
 
-// Returns true if |app_url| and |page_url| are the same origin. To avoid
-// breaking Hosted Apps and Bookmark Apps that might redirect to sites in the
-// same domain but with "www.", this returns true if |page_url| is secure and in
-// the same origin as |app_url| with "www.".
-bool IsSameHostAndPort(const GURL& app_url, const GURL& page_url) {
-  return (app_url.host_piece() == page_url.host_piece() ||
-          std::string("www.") + app_url.host() == page_url.host_piece()) &&
-         app_url.port() == page_url.port();
-}
-
 // Gets the icon to use if the extension app icon is not available.
 gfx::ImageSkia GetFallbackAppIcon(Browser* browser) {
   gfx::ImageSkia page_icon = browser->GetCurrentPageIcon().AsImageSkia();
@@ -67,24 +57,18 @@
   return gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
 }
 
-}  // namespace
-
-bool IsSameScope(const GURL& app_url,
-                 const GURL& page_url,
-                 content::BrowserContext* profile) {
-  const Extension* app_for_window = extensions::util::GetInstalledPwaForUrl(
-      profile, app_url, extensions::LaunchContainer::kLaunchContainerWindow);
-
-  // We don't have a scope, fall back to same origin check.
-  if (!app_for_window)
-    return IsSameHostAndPort(app_url, page_url);
-
-  return app_for_window ==
-         extensions::util::GetInstalledPwaForUrl(
-             profile, page_url,
-             extensions::LaunchContainer::kLaunchContainerWindow);
+// Returns true if |app_url| and |page_url| are the same origin. To avoid
+// breaking Hosted Apps and Bookmark Apps that might redirect to sites in the
+// same domain but with "www.", this returns true if |page_url| is secure and in
+// the same origin as |app_url| with "www.".
+bool IsSameHostAndPort(const GURL& app_url, const GURL& page_url) {
+  return (app_url.host_piece() == page_url.host_piece() ||
+          std::string("www.") + app_url.host() == page_url.host_piece()) &&
+         app_url.port() == page_url.port();
 }
 
+}  // namespace
+
 // static
 void HostedAppBrowserController::SetAppPrefsForWebContents(
     web_app::AppBrowserController* controller,
@@ -182,8 +166,7 @@
     // Page URLs that are not within scope
     // (https://www.w3.org/TR/appmanifest/#dfn-within-scope) of the app
     // corresponding to |launch_url| show the toolbar.
-    bool out_of_scope =
-        !IsSameScope(launch_url, url, web_contents->GetBrowserContext());
+    bool out_of_scope = !IsUrlInAppScope(url);
 
     if (url.scheme_piece() != secure_page_scheme) {
       // Some origins are (such as localhost) are considered secure even when
@@ -290,6 +273,18 @@
   return AppLaunchInfo::GetLaunchWebURL(extension);
 }
 
+bool HostedAppBrowserController::IsUrlInAppScope(const GURL& url) const {
+  const Extension* extension = GetExtension();
+  const std::vector<UrlHandlerInfo>* url_handlers =
+      UrlHandlers::GetUrlHandlers(extension);
+
+  // We don't have a scope, fall back to same origin check.
+  if (!url_handlers)
+    return IsSameHostAndPort(GetAppLaunchURL(), url);
+
+  return UrlHandlers::CanBookmarkAppHandleUrl(extension, url);
+}
+
 const Extension* HostedAppBrowserController::GetExtension() const {
   return ExtensionRegistry::Get(browser()->profile())
       ->GetExtensionById(extension_id_, ExtensionRegistry::EVERYTHING);
diff --git a/chrome/browser/ui/extensions/hosted_app_browser_controller.h b/chrome/browser/ui/extensions/hosted_app_browser_controller.h
index f261a1e..27e2bcc 100644
--- a/chrome/browser/ui/extensions/hosted_app_browser_controller.h
+++ b/chrome/browser/ui/extensions/hosted_app_browser_controller.h
@@ -22,13 +22,6 @@
 
 namespace extensions {
 
-// Returns true if |page_url| is in the scope of the app for |app_url|. If the
-// app has no scope defined (as in a bookmark app), we fall back to checking
-// |page_url| has the same origin as |app_url|.
-bool IsSameScope(const GURL& app_url,
-                 const GURL& page_url,
-                 content::BrowserContext* profile);
-
 class Extension;
 
 // Class to encapsulate logic to control the browser UI for extension based web
@@ -81,6 +74,8 @@
   // Gets the launch url for the app.
   GURL GetAppLaunchURL() const override;
 
+  bool IsUrlInAppScope(const GURL& url) const override;
+
   // Gets the extension for this controller.
   const Extension* GetExtensionForTesting() const;
 
diff --git a/chrome/browser/ui/extensions/hosted_app_browsertest.cc b/chrome/browser/ui/extensions/hosted_app_browsertest.cc
index 7f2f2496..eed0a75 100644
--- a/chrome/browser/ui/extensions/hosted_app_browsertest.cc
+++ b/chrome/browser/ui/extensions/hosted_app_browsertest.cc
@@ -13,6 +13,7 @@
 #include "base/compiler_specific.h"
 #include "base/files/file_path.h"
 #include "base/json/json_reader.h"
+#include "base/optional.h"
 #include "base/run_loop.h"
 #include "base/strings/string_split.h"
 #include "base/strings/stringprintf.h"
@@ -915,12 +916,16 @@
     using ClearBadgeCallback =
         base::RepeatingCallback<void(const std::string&)>;
 
+    using ChangeFailedCallback = base::RepeatingCallback<void()>;
+
     TestBadgeManagerDelegate(Profile* profile,
                              SetBadgeCallback on_set_badge,
-                             ClearBadgeCallback on_clear_badge)
+                             ClearBadgeCallback on_clear_badge,
+                             ChangeFailedCallback on_change_failed)
         : badging::BadgeManagerDelegate(profile),
           on_set_badge_(on_set_badge),
-          on_clear_badge_(on_clear_badge) {}
+          on_clear_badge_(on_clear_badge),
+          on_change_failed_(on_change_failed) {}
 
     void OnBadgeSet(const std::string& app_id,
                     base::Optional<uint64_t> contents) override {
@@ -931,9 +936,12 @@
       on_clear_badge_.Run(app_id);
     }
 
+    void OnBadgeChangeIgnoredForTesting() override { on_change_failed_.Run(); }
+
    private:
     SetBadgeCallback on_set_badge_;
     ClearBadgeCallback on_clear_badge_;
+    ChangeFailedCallback on_change_failed_;
   };
 
   void SetUpCommandLine(base::CommandLine* command_line) override {
@@ -947,7 +955,28 @@
     ASSERT_TRUE(https_server()->Start());
     ASSERT_TRUE(embedded_test_server()->Start());
 
-    InstallSecurePWA();
+    InstallPWA(https_server()->GetURL(
+        "/ssl/page_with_in_scope_and_cross_site_frame.html"));
+    content::WebContents* web_contents =
+        app_browser_->tab_strip_model()->GetActiveWebContents();
+    // There should be exactly 3 frames:
+    // 1) The main frame.
+    // 2) A cross site frame, on https://example.com/
+    // 3) A sub frame in the app's scope.
+    auto frames = web_contents->GetAllFrames();
+    ASSERT_EQ(3u, frames.size());
+
+    main_frame_ = web_contents->GetMainFrame();
+    for (auto* frame : frames) {
+      if (frame->GetLastCommittedURL() == "https://example.com/")
+        cross_site_frame_ = frame;
+      else if (frame != main_frame_)
+        in_scope_frame_ = frame;
+    }
+
+    ASSERT_TRUE(main_frame_);
+    ASSERT_TRUE(in_scope_frame_);
+    ASSERT_TRUE(cross_site_frame_);
 
     awaiter_ = std::make_unique<base::RunLoop>();
 
@@ -958,13 +987,14 @@
             base::BindRepeating(&HostedAppBadgingTest::OnBadgeSet,
                                 base::Unretained(this)),
             base::BindRepeating(&HostedAppBadgingTest::OnBadgeCleared,
+                                base::Unretained(this)),
+            base::BindRepeating(&HostedAppBadgingTest::OnBadgeChangeFailed,
                                 base::Unretained(this)));
     badging::BadgeManagerFactory::GetInstance()
         ->GetForProfile(profile)
         ->SetDelegate(std::move(delegate));
   }
 
-  // BadgeManagerDelegate:
   void OnBadgeSet(const std::string& app_id,
                   base::Optional<uint64_t> badge_content) {
     if (badge_content.has_value())
@@ -980,25 +1010,36 @@
     awaiter_->Quit();
   }
 
+  void OnBadgeChangeFailed() {
+    change_failed_ = true;
+    awaiter_->Quit();
+  }
+
  protected:
-  void ExecuteScriptAndWaitForBadgeChange(std::string script) {
+  void ExecuteScriptAndWaitForBadgeChange(std::string script,
+                                          RenderFrameHost* on) {
     was_cleared_ = false;
     was_flagged_ = false;
+    change_failed_ = false;
     last_badge_content_ = base::nullopt;
     awaiter_.reset(new base::RunLoop());
 
-    content::WebContents* web_contents =
-        app_browser_->tab_strip_model()->GetActiveWebContents();
-    ASSERT_TRUE(content::ExecuteScript(web_contents, script));
+    ASSERT_TRUE(content::ExecuteScript(on, script));
 
-    if (was_cleared_ || was_flagged_ || last_badge_content_ != base::nullopt)
+    if (was_cleared_ || was_flagged_ || change_failed_ ||
+        last_badge_content_ != base::nullopt)
       return;
 
     awaiter_->Run();
   }
 
+  RenderFrameHost* main_frame_;
+  RenderFrameHost* in_scope_frame_;
+  RenderFrameHost* cross_site_frame_;
+
   bool was_cleared_ = false;
   bool was_flagged_ = false;
+  bool change_failed_ = false;
   base::Optional<uint64_t> last_badge_content_ = base::nullopt;
 
  private:
@@ -1008,41 +1049,82 @@
 // Tests that setting the badge to an integer will be propagated across
 // processes.
 IN_PROC_BROWSER_TEST_P(HostedAppBadgingTest, BadgeCanBeSetToAnInteger) {
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(99)");
+  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(99)", main_frame_);
   ASSERT_FALSE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
+  ASSERT_FALSE(change_failed_);
   ASSERT_EQ(base::Optional<uint64_t>(99u), last_badge_content_);
 }
 
 // Tests that calls to |Badge.clear| are propagated across processes.
 IN_PROC_BROWSER_TEST_P(HostedAppBadgingTest, BadgeCanBeClearedWithClearMethod) {
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(55)");
+  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(55)", main_frame_);
   ASSERT_FALSE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
+  ASSERT_FALSE(change_failed_);
   ASSERT_EQ(base::Optional<uint64_t>(55u), last_badge_content_);
 
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.clear()");
+  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.clear()", main_frame_);
   ASSERT_TRUE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
+  ASSERT_FALSE(change_failed_);
   ASSERT_EQ(base::nullopt, last_badge_content_);
 }
 
 // Tests that calling Badge.set(0) is equivalent to calling |Badge.clear| and
 // that it propagates across processes.
 IN_PROC_BROWSER_TEST_P(HostedAppBadgingTest, BadgeCanBeClearedWithZero) {
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(0)");
+  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(0)", main_frame_);
   ASSERT_TRUE(was_cleared_);
   ASSERT_FALSE(was_flagged_);
+  ASSERT_FALSE(change_failed_);
   ASSERT_EQ(base::nullopt, last_badge_content_);
 }
 
 // Tests that setting the badge without content is propagated across processes.
 IN_PROC_BROWSER_TEST_P(HostedAppBadgingTest, BadgeCanBeSetWithoutAValue) {
-  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set()");
+  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set()", main_frame_);
   ASSERT_FALSE(was_cleared_);
   ASSERT_TRUE(was_flagged_);
+  ASSERT_FALSE(change_failed_);
   ASSERT_EQ(base::nullopt, last_badge_content_);
 }
+
+// Tests that the badge can be set and cleared from an in scope frame.
+IN_PROC_BROWSER_TEST_P(HostedAppBadgingTest,
+                       BadgeCanBeSetAndClearedFromInScopeFrame) {
+  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set()",
+                                     in_scope_frame_);
+  ASSERT_FALSE(was_cleared_);
+  ASSERT_TRUE(was_flagged_);
+  ASSERT_FALSE(change_failed_);
+  ASSERT_EQ(base::nullopt, last_badge_content_);
+
+  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.clear()",
+                                     in_scope_frame_);
+  ASSERT_TRUE(was_cleared_);
+  ASSERT_FALSE(was_flagged_);
+  ASSERT_FALSE(change_failed_);
+  ASSERT_EQ(base::nullopt, last_badge_content_);
+}
+
+// Tests that the badge cannot be set and cleared from a cross site frame.
+IN_PROC_BROWSER_TEST_P(HostedAppBadgingTest,
+                       BadgeCannotBeChangedFromCrossSiteFrame) {
+  // Clearing from cross site frame should be a no-op.
+  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.clear()",
+                                     cross_site_frame_);
+  ASSERT_FALSE(was_cleared_);
+  ASSERT_FALSE(was_flagged_);
+  ASSERT_TRUE(change_failed_);
+
+  // Setting from cross site frame should be a no-op.
+  ExecuteScriptAndWaitForBadgeChange("ExperimentalBadge.set(77)",
+                                     cross_site_frame_);
+  ASSERT_FALSE(was_cleared_);
+  ASSERT_FALSE(was_flagged_);
+  ASSERT_TRUE(change_failed_);
+}
 #endif  // !defined(OS_CHROMEOS)
 
 using HostedAppPWAOnlyTest = HostedAppTest;
diff --git a/chrome/browser/ui/manifest_web_app_browser_controller.cc b/chrome/browser/ui/manifest_web_app_browser_controller.cc
index fee6513..1c5dff3 100644
--- a/chrome/browser/ui/manifest_web_app_browser_controller.cc
+++ b/chrome/browser/ui/manifest_web_app_browser_controller.cc
@@ -38,11 +38,9 @@
   if (!content::IsOriginSecure(app_launch_url_))
     return true;
 
-  // Show toolbar if web_contents is not on the same origin as it was originally
-  // launched on.
-  if (!url::IsSameOriginWith(app_launch_url_,
-                             web_contents->GetLastCommittedURL()) ||
-      !url::IsSameOriginWith(app_launch_url_, web_contents->GetVisibleURL())) {
+  // Show toolbar if web_contents is not currently in scope.
+  if (!IsUrlInAppScope(web_contents->GetLastCommittedURL()) ||
+      !IsUrlInAppScope(web_contents->GetVisibleURL())) {
     return true;
   }
 
@@ -88,6 +86,11 @@
   return app_launch_url_;
 }
 
+bool ManifestWebAppBrowserController::IsUrlInAppScope(const GURL& url) const {
+  // TODO(981703): Use the scope in the manifest instead of same origin check.
+  return url::IsSameOriginWith(GetAppLaunchURL(), url);
+}
+
 void ManifestWebAppBrowserController::OnTabInserted(
     content::WebContents* contents) {
   if (app_launch_url_.is_empty())
diff --git a/chrome/browser/ui/manifest_web_app_browser_controller.h b/chrome/browser/ui/manifest_web_app_browser_controller.h
index a1a0cd12..3158324 100644
--- a/chrome/browser/ui/manifest_web_app_browser_controller.h
+++ b/chrome/browser/ui/manifest_web_app_browser_controller.h
@@ -45,6 +45,8 @@
 
   GURL GetAppLaunchURL() const override;
 
+  bool IsUrlInAppScope(const GURL& url) const override;
+
  protected:
   void OnTabInserted(content::WebContents* contents) override;
 
diff --git a/chrome/browser/ui/page_action/page_action_icon_container.h b/chrome/browser/ui/page_action/page_action_icon_container.h
index 62636af..bea765d5 100644
--- a/chrome/browser/ui/page_action/page_action_icon_container.h
+++ b/chrome/browser/ui/page_action/page_action_icon_container.h
@@ -13,6 +13,7 @@
   kManagePasswords,
   kIntentPicker,
   kPwaInstall,
+  kReaderMode,
   kSaveCard,
   kSendTabToSelf,
   kTranslate,
diff --git a/chrome/browser/ui/search/local_ntp_backgrounds_browsertest.cc b/chrome/browser/ui/search/local_ntp_backgrounds_browsertest.cc
index ec3c82b..31240c35 100644
--- a/chrome/browser/ui/search/local_ntp_backgrounds_browsertest.cc
+++ b/chrome/browser/ui/search/local_ntp_backgrounds_browsertest.cc
@@ -432,7 +432,8 @@
   EXPECT_TRUE(result);
 }
 
-// Update/Remove when Linux and/or ChromeOS support dark mode.
+// TODO(crbug/980638): Update/Remove when Linux and/or ChromeOS support dark
+// mode.
 #if defined(OS_WIN) || defined(OS_MACOSX)
 
 // Tests that dark mode styling is properly applied when a theme and/or custom
diff --git a/chrome/browser/ui/search/local_ntp_browsertest.cc b/chrome/browser/ui/search/local_ntp_browsertest.cc
index 14bbee3..1ca8e97 100644
--- a/chrome/browser/ui/search/local_ntp_browsertest.cc
+++ b/chrome/browser/ui/search/local_ntp_browsertest.cc
@@ -893,7 +893,8 @@
   EXPECT_EQ("rtl", dir);
 }
 
-// Update/Remove when Linux and/or ChromeOS support dark mode.
+// TODO(crbug/980638): Update/Remove when Linux and/or ChromeOS support dark
+// mode.
 #if defined(OS_WIN) || defined(OS_MACOSX)
 
 // Tests that dark mode styling is properly applied to the local NTP.
diff --git a/chrome/browser/ui/search/local_ntp_doodle_browsertest.cc b/chrome/browser/ui/search/local_ntp_doodle_browsertest.cc
index 20b0f63c..7d8f087 100644
--- a/chrome/browser/ui/search/local_ntp_doodle_browsertest.cc
+++ b/chrome/browser/ui/search/local_ntp_doodle_browsertest.cc
@@ -14,10 +14,14 @@
 #include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
+#include "build/build_config.h"
+#include "chrome/browser/search/instant_service.h"
+#include "chrome/browser/search/instant_service_factory.h"
 #include "chrome/browser/search/ntp_features.h"
 #include "chrome/browser/search_provider_logos/logo_service_factory.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/search/instant_test_utils.h"
+#include "chrome/browser/ui/search/local_ntp_browsertest_base.h"
 #include "chrome/browser/ui/search/local_ntp_test_utils.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/test/base/in_process_browser_test.h"
@@ -45,9 +49,16 @@
 namespace {
 
 const char kCachedB64[] = "\161\247\041\171\337\276";  // b64decode("cached++")
-const char kFreshB64[] = "\176\267\254\207\357\276";   // b64decode("fresh+++")
+const char kFreshB64[] = "abc";                        // b64decode("YWJj")
 const int kFakeboxTopPx = 56 + 200 + 29;  // top margin + height + bottom margin
 
+#if defined(OS_WIN) || defined(OS_MACOSX)
+const char kFreshDarkB64[] = "xyz";  // b64decode("eHl6");
+const int kDarkModeFakeboxTopPx =
+    56 + 200 + 29 +
+    5;  // top margin + height + bottom margin + extra spacing in dark mode
+#endif
+
 // A base64 encoding of a tiny but valid gif file.
 const char kTinyGifData[] =
     "R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
@@ -244,6 +255,37 @@
     console_observer.Wait();
   }
 
+  void WaitForLogoSwap(content::WebContents* tab, const std::string& id) {
+    content::ConsoleObserverDelegate console_observer(tab, "WaitForFadeIn");
+    tab->SetDelegate(&console_observer);
+
+    bool result = false;
+    if (!instant_test_utils::GetBoolFromJS(
+            tab,
+            base::StringPrintf(
+                R"js(
+                  (function(id, message) {
+                    var element = document.getElementById(id);
+                    var fn = function() {
+                      if (element.classList.contains('show-logo') &&
+                          (window.getComputedStyle(element).opacity == 1.0)) {
+                        console.log(message);
+                      }
+                    };
+                    element.addEventListener('transitionend', fn);
+                    return true;
+                  })(%s, 'WaitForFadeIn')
+                )js",
+                base::GetQuotedJSONString(id).c_str()),
+            &result) &&
+        result) {
+      ADD_FAILURE() << "failed to wait for fade-in";
+      return;
+    }
+
+    console_observer.Wait();
+  }
+
   // See enum LogoImpressionType in ntp_user_data_logger.cc.
   static const int kLogoImpressionStatic = 0;
   static const int kLogoImpressionCta = 1;
@@ -639,7 +681,7 @@
   EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-iframe"),
               Eq<std::string>("none"));
   EXPECT_THAT(GetElementProperty(active_tab, "logo-doodle-image", "src"),
-              Eq<std::string>("data:image/png;base64,fresh+++"));
+              Eq<std::string>("data:image/png;base64,YWJj"));
   EXPECT_THAT(GetElementProperty(active_tab, "logo-doodle-image", "title"),
               Eq<std::string>("fresh alt text"));
   // TODO(sfiera): check href by clicking on button.
@@ -1087,7 +1129,7 @@
   cached_logo.encoded_image = MakeRefPtr(kCachedB64);
   cached_logo.metadata.mime_type = "image/png";
   cached_logo.metadata.type = LogoType::ANIMATED;
-  cached_logo.metadata.animated_url = GURL("data:image/png;base64,cached++");
+  cached_logo.metadata.animated_url = GURL("data:image/png;base64,eHl6");
   cached_logo.metadata.on_click_url = GURL("https://www.chromium.org/");
   cached_logo.metadata.alt_text = "alt text";
 
@@ -1141,7 +1183,7 @@
   cached_logo.encoded_image = MakeRefPtr(kCachedB64);
   cached_logo.metadata.mime_type = "image/png";
   cached_logo.metadata.type = LogoType::ANIMATED;
-  cached_logo.metadata.animated_url = GURL("data:image/png;base64,cached++");
+  cached_logo.metadata.animated_url = GURL("data:image/png;base64,eHl6");
   cached_logo.metadata.on_click_url = GURL("https://www.chromium.org/");
   cached_logo.metadata.alt_text = "alt text";
   cached_logo.metadata.short_link = GURL("https://g.co");
@@ -1406,3 +1448,176 @@
   EXPECT_THAT(GetDimension(active_tab, "logo-doodle-iframe", "height"),
               Eq(220));
 }
+
+// TODO(crbug/980638): Update/Remove when Linux and/or ChromeOS support dark
+// mode.
+#if defined(OS_WIN) || defined(OS_MACOSX)
+
+// Tests that dark mode styling is properly applied to the local NTP Doodle.
+class LocalNTPDarkModeDoodleTest : public LocalNTPDoodleTest,
+                                   public DarkModeTestBase {
+ public:
+  LocalNTPDarkModeDoodleTest() {}
+
+ private:
+  void SetUpOnMainThread() override {
+    LocalNTPDoodleTest::SetUpOnMainThread();
+
+    ui::NativeTheme::GetInstanceForWeb()->SetDarkModeParent(theme());
+  }
+};
+
+IN_PROC_BROWSER_TEST_F(LocalNTPDarkModeDoodleTest,
+                       ShouldFadeDefaultToSimpleDoodleWhenFetched) {
+  InstantService* instant_service =
+      InstantServiceFactory::GetForProfile(browser()->profile());
+  theme()->SetDarkMode(true);
+  instant_service->SetNativeThemeForTesting(theme());
+  theme()->NotifyObservers();
+
+  EncodedLogo fresh_logo;
+  fresh_logo.encoded_image = MakeRefPtr(kFreshB64);
+  fresh_logo.dark_encoded_image = MakeRefPtr(kFreshDarkB64);
+  fresh_logo.metadata.mime_type = "image/png";
+  fresh_logo.metadata.dark_mime_type = "image/png";
+  fresh_logo.metadata.on_click_url = GURL("https://www.chromium.org/");
+  fresh_logo.metadata.alt_text = "Chromium";
+  fresh_logo.metadata.dark_background_color = "#ABCDEF";
+
+  EXPECT_CALL(*logo_service(), GetLogoPtr(_))
+      .WillOnce(
+          DoAll(ReturnCachedLogo(LogoCallbackReason::DETERMINED, base::nullopt),
+                ReturnFreshLogo(LogoCallbackReason::DETERMINED, fresh_logo)))
+      .WillRepeatedly(DoAll(
+          ReturnCachedLogo(LogoCallbackReason::DETERMINED, fresh_logo),
+          ReturnFreshLogo(LogoCallbackReason::REVALIDATED, base::nullopt)));
+
+  // Open a new blank tab, then go to NTP.
+  content::WebContents* active_tab =
+      local_ntp_test_utils::OpenNewTab(browser(), GURL("about:blank"));
+  base::HistogramTester histograms;
+  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
+
+  WaitForFadeIn(active_tab, "logo-doodle");
+  EXPECT_THAT(GetDimension(active_tab, "fakebox", "top"),
+              Eq(kDarkModeFakeboxTopPx));
+  EXPECT_THAT(GetComputedOpacity(active_tab, "logo-default"), Eq(0.0));
+  EXPECT_THAT(GetComputedOpacity(active_tab, "logo-doodle"), Eq(1.0));
+  EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-container"),
+              Eq<std::string>("inline-block"));
+  EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-wrapper"),
+              Eq<std::string>("inline-block"));
+  EXPECT_THAT(
+      GetComputedStyle(active_tab, "logo-doodle-wrapper", "background-color"),
+      Eq<std::string>("rgb(171, 205, 239)"));
+  EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-iframe"),
+              Eq<std::string>("none"));
+  EXPECT_THAT(GetElementProperty(active_tab, "logo-doodle-image", "title"),
+              Eq<std::string>("Chromium"));
+  // TODO(sfiera): check href by clicking on button.
+
+  histograms.ExpectTotalCount("NewTabPage.LogoShown", 1);
+  histograms.ExpectBucketCount("NewTabPage.LogoShown", kLogoImpressionStatic,
+                               1);
+  histograms.ExpectTotalCount("NewTabPage.LogoShown.FromCache", 0);
+  histograms.ExpectTotalCount("NewTabPage.LogoShown.Fresh", 1);
+  histograms.ExpectBucketCount("NewTabPage.LogoShown.Fresh",
+                               kLogoImpressionStatic, 1);
+  histograms.ExpectTotalCount("NewTabPage.LogoShownTime2", 1);
+}
+
+IN_PROC_BROWSER_TEST_F(LocalNTPDarkModeDoodleTest,
+                       DoodleUpdatesOnDarkModeChanged) {
+  InstantService* instant_service =
+      InstantServiceFactory::GetForProfile(browser()->profile());
+  theme()->SetDarkMode(false);
+  instant_service->SetNativeThemeForTesting(theme());
+  theme()->NotifyObservers();
+
+  EncodedLogo fresh_logo;
+  fresh_logo.encoded_image = MakeRefPtr(kFreshB64);
+  fresh_logo.dark_encoded_image = MakeRefPtr(kFreshDarkB64);
+  fresh_logo.metadata.mime_type = "image/png";
+  fresh_logo.metadata.dark_mime_type = "image/png";
+  fresh_logo.metadata.on_click_url = GURL("https://www.chromium.org/");
+  fresh_logo.metadata.alt_text = "Chromium";
+  fresh_logo.metadata.dark_background_color = "#ABCDEF";
+
+  EXPECT_CALL(*logo_service(), GetLogoPtr(_))
+      .WillOnce(
+          DoAll(ReturnCachedLogo(LogoCallbackReason::DETERMINED, base::nullopt),
+                ReturnFreshLogo(LogoCallbackReason::DETERMINED, fresh_logo)))
+      .WillRepeatedly(DoAll(
+          ReturnCachedLogo(LogoCallbackReason::DETERMINED, fresh_logo),
+          ReturnFreshLogo(LogoCallbackReason::REVALIDATED, base::nullopt)));
+
+  // Open a new blank tab, then go to NTP.
+  content::WebContents* active_tab =
+      local_ntp_test_utils::OpenNewTab(browser(), GURL("about:blank"));
+  base::HistogramTester histograms;
+  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
+
+  WaitForFadeIn(active_tab, "logo-doodle");
+  EXPECT_THAT(GetDimension(active_tab, "fakebox", "top"), Eq(kFakeboxTopPx));
+  EXPECT_THAT(GetComputedOpacity(active_tab, "logo-default"), Eq(0.0));
+  EXPECT_THAT(GetComputedOpacity(active_tab, "logo-doodle"), Eq(1.0));
+  EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-container"),
+              Eq<std::string>("inline-block"));
+  EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-wrapper"),
+              Eq<std::string>("inline-block"));
+  EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-iframe"),
+              Eq<std::string>("none"));
+  EXPECT_THAT(GetElementProperty(active_tab, "logo-doodle-image", "title"),
+              Eq<std::string>("Chromium"));
+  EXPECT_THAT(GetElementProperty(active_tab, "logo-doodle-image", "src"),
+              Eq<std::string>("data:image/png;base64,YWJj"));
+  // TODO(sfiera): check href by clicking on button.
+
+  histograms.ExpectTotalCount("NewTabPage.LogoShown", 1);
+  histograms.ExpectBucketCount("NewTabPage.LogoShown", kLogoImpressionStatic,
+                               1);
+  histograms.ExpectTotalCount("NewTabPage.LogoShown.FromCache", 0);
+  histograms.ExpectTotalCount("NewTabPage.LogoShown.Fresh", 1);
+  histograms.ExpectBucketCount("NewTabPage.LogoShown.Fresh",
+                               kLogoImpressionStatic, 1);
+  histograms.ExpectTotalCount("NewTabPage.LogoShownTime2", 1);
+
+  content::DOMMessageQueue msg_queue(active_tab);
+  theme()->SetDarkMode(true);
+  theme()->NotifyObservers();
+
+  local_ntp_test_utils::WaitUntilTilesLoaded(active_tab, &msg_queue,
+                                             /*delay=*/1000);
+
+  WaitForLogoSwap(active_tab, "logo-doodle");
+  EXPECT_TRUE(GetIsDarkModeApplied(active_tab));
+  EXPECT_THAT(GetDimension(active_tab, "fakebox", "top"),
+              Eq(kDarkModeFakeboxTopPx));
+  EXPECT_THAT(GetComputedOpacity(active_tab, "logo-default"), Eq(0.0));
+  EXPECT_THAT(GetComputedOpacity(active_tab, "logo-doodle"), Eq(1.0));
+  EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-container"),
+              Eq<std::string>("inline-block"));
+  EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-wrapper"),
+              Eq<std::string>("inline-block"));
+  EXPECT_THAT(
+      GetComputedStyle(active_tab, "logo-doodle-wrapper", "background-color"),
+      Eq<std::string>("rgb(171, 205, 239)"));
+  EXPECT_THAT(GetComputedDisplay(active_tab, "logo-doodle-iframe"),
+              Eq<std::string>("none"));
+  EXPECT_THAT(GetElementProperty(active_tab, "logo-doodle-image", "title"),
+              Eq<std::string>("Chromium"));
+  EXPECT_THAT(GetElementProperty(active_tab, "logo-doodle-image", "src"),
+              Eq<std::string>("data:image/png;base64,eHl6"));
+  // TODO(sfiera): check href by clicking on button.
+
+  histograms.ExpectTotalCount("NewTabPage.LogoShown", 2);
+  histograms.ExpectBucketCount("NewTabPage.LogoShown", kLogoImpressionStatic,
+                               2);
+  histograms.ExpectTotalCount("NewTabPage.LogoShown.FromCache", 0);
+  histograms.ExpectTotalCount("NewTabPage.LogoShown.Fresh", 2);
+  histograms.ExpectBucketCount("NewTabPage.LogoShown.Fresh",
+                               kLogoImpressionStatic, 2);
+  histograms.ExpectTotalCount("NewTabPage.LogoShownTime2", 1);
+}
+
+#endif
diff --git a/chrome/browser/ui/views/download/download_danger_prompt_views.cc b/chrome/browser/ui/views/download/download_danger_prompt_views.cc
index 521a3e4..15a4c218 100644
--- a/chrome/browser/ui/views/download/download_danger_prompt_views.cc
+++ b/chrome/browser/ui/views/download/download_danger_prompt_views.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/download/download_danger_prompt.h"
 
 #include "base/compiler_specific.h"
@@ -251,6 +252,7 @@
             IDS_PROMPT_DOWNLOAD_CHANGES_SETTINGS,
             download_->GetFileNameToReportUser().LossyDisplayName());
       }
+      case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
       case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
       case download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT:
       case download::DOWNLOAD_DANGER_TYPE_USER_VALIDATED:
diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc
index 0921798..664ce5ce 100644
--- a/chrome/browser/ui/views/download/download_item_view.cc
+++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -957,6 +957,7 @@
         return gfx::CreateVectorIcon(vector_icons::kWarningIcon,
                                      kWarningIconSize, gfx::kGoogleRed700);
       }
+    case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
     case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT:
     case download::DOWNLOAD_DANGER_TYPE_USER_VALIDATED:
diff --git a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
index d3d71432..510862c1 100644
--- a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
@@ -35,7 +35,6 @@
 #include "chrome/grit/generated_resources.h"
 #include "components/bubble/bubble_controller.h"
 #include "components/signin/core/browser/account_info.h"
-#include "components/signin/core/browser/signin_buildflags.h"
 #include "components/signin/core/browser/signin_metrics.h"
 #include "extensions/common/extension.h"
 #include "ui/base/buildflags.h"
diff --git a/chrome/browser/ui/views/location_bar/custom_tab_bar_view.cc b/chrome/browser/ui/views/location_bar/custom_tab_bar_view.cc
index 88755e164..1715db9 100644
--- a/chrome/browser/ui/views/location_bar/custom_tab_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/custom_tab_bar_view.cc
@@ -263,19 +263,17 @@
 
   web_app::AppBrowserController* app_controller =
       chrome::FindBrowserWithWebContents(contents)->app_controller();
-  const bool started_in_scope = extensions::IsSameScope(
-      app_controller->GetAppLaunchURL(), app_controller->initial_url(),
-      contents->GetBrowserContext());
+  const bool started_in_scope =
+      app_controller->IsUrlInAppScope(app_controller->initial_url());
 
-  // Only show the 'X' button if the current URL is not in the application
-  // scope (it doesn't make sense to show a 'back-to-scope' button in scope)
-  // and if the window started in scope (this is important for popup windows
-  // which get opened out of scope).
+  // Only show the 'X' button if:
+  // a) The current url is not in scope (no point showing a back to app button
+  // while in scope).
+  // And b), if the window started in scope (this is
+  // important for popup windows, which may be opened outside the app).
   close_button_->SetVisible(
       started_in_scope &&
-      !extensions::IsSameScope(app_controller->GetAppLaunchURL(),
-                               contents->GetLastCommittedURL(),
-                               contents->GetBrowserContext()));
+      !app_controller->IsUrlInAppScope(contents->GetLastCommittedURL()));
 
   Layout();
 }
@@ -385,24 +383,24 @@
 
 void CustomTabBarView::GoBackToApp() {
   content::WebContents* web_contents = GetWebContents();
-  Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
-  GURL launch_url = browser->app_controller()->GetAppLaunchURL();
+  web_app::AppBrowserController* app_controller =
+      chrome::FindBrowserWithWebContents(web_contents)->app_controller();
   content::NavigationController& controller = web_contents->GetController();
-  content::BrowserContext* context = web_contents->GetBrowserContext();
 
   content::NavigationEntry* entry = nullptr;
   int offset = 0;
 
-  // Go back until we find an in scope url, or run out of urls.
+  // Go back until we find an in scope url or run out of urls.
   while ((entry = controller.GetEntryAtOffset(offset)) &&
-         !extensions::IsSameScope(launch_url, entry->GetURL(), context)) {
+         !app_controller->IsUrlInAppScope(entry->GetURL())) {
     offset--;
   }
 
   // If there are no in scope urls, push the app's launch url and clear
   // the history.
   if (!entry) {
-    content::NavigationController::LoadURLParams load(launch_url);
+    content::NavigationController::LoadURLParams load(
+        app_controller->GetAppLaunchURL());
     load.should_clear_history_list = true;
     controller.LoadURLWithParams(load);
     return;
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
index 3ee9d3e..e3a8db2 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -65,6 +65,7 @@
 #include "chrome/grit/generated_resources.h"
 #include "components/autofill/core/common/autofill_payments_features.h"
 #include "components/bookmarks/common/bookmark_pref_names.h"
+#include "components/dom_distiller/core/dom_distiller_switches.h"
 #include "components/favicon/content/content_favicon_driver.h"
 #include "components/omnibox/browser/location_bar_model.h"
 #include "components/omnibox/browser/omnibox_field_trial.h"
@@ -242,6 +243,12 @@
       params.types_enabled.push_back(
           PageActionIconType::kNativeFileSystemAccess);
     }
+
+    if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+            switches::kEnableDomDistiller) &&
+        !browser_->is_type_popup()) {
+      params.types_enabled.push_back(PageActionIconType::kReaderMode);
+    }
   }
   params.icon_size = GetLayoutConstant(LOCATION_BAR_ICON_SIZE);
   params.icon_color = icon_color;
diff --git a/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.cc b/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.cc
index 7e1c283..014e9e6 100644
--- a/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.cc
+++ b/chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/ui/views/native_file_system/native_file_system_usage_bubble_view.h"
 
 #include "base/i18n/message_formatter.h"
+#include "base/i18n/unicodestring.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/browser_window.h"
@@ -16,11 +17,39 @@
 #include "chrome/grit/generated_resources.h"
 #include "components/strings/grit/components_strings.h"
 #include "components/url_formatter/elide_url.h"
+#include "third_party/icu/source/common/unicode/unistr.h"
+#include "third_party/icu/source/common/unicode/utypes.h"
+#include "third_party/icu/source/i18n/unicode/listformatter.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/views/controls/label.h"
 #include "ui/views/controls/styled_label.h"
 #include "ui/views/layout/box_layout.h"
 
+namespace {
+
+// Wrapper around icu::ListFormatter to format a list of strings.
+base::string16 FormatList(base::span<base::string16> items) {
+  std::vector<icu::UnicodeString> strings;
+  strings.reserve(items.size());
+  for (const auto& item : items)
+    strings.emplace_back(item.data(), item.size());
+  UErrorCode error = U_ZERO_ERROR;
+  auto formatter = base::WrapUnique(icu::ListFormatter::createInstance(error));
+  if (U_FAILURE(error) || !formatter) {
+    LOG(ERROR) << "ListFormatter failed with " << u_errorName(error);
+    return base::string16();
+  }
+  icu::UnicodeString formatted;
+  formatter->format(strings.data(), strings.size(), formatted, error);
+  if (U_FAILURE(error)) {
+    LOG(ERROR) << "ListFormatter failed with " << u_errorName(error);
+    return base::string16();
+  }
+  return base::i18n::UnicodeStringToString16(formatted);
+}
+
+}  // namespace
+
 NativeFileSystemUsageBubbleView::Usage::Usage() = default;
 NativeFileSystemUsageBubbleView::Usage::~Usage() = default;
 NativeFileSystemUsageBubbleView::Usage::Usage(Usage&&) = default;
@@ -184,14 +213,10 @@
 
   AddChildView(std::move(label));
 
-  // TODO(https://crbug.com/980269): Properly localize this list.
-  base::string16 path_list;
-  for (const auto& f : paths) {
-    path_list.append(f.BaseName().LossyDisplayName());
-    path_list.append(base::ASCIIToUTF16(", "));
-  }
-  DCHECK_GE(path_list.size(), 2u);
-  path_list.resize(path_list.size() - 2);
+  std::vector<base::string16> base_names;
+  for (const auto& path : paths)
+    base_names.push_back(path.BaseName().LossyDisplayName());
+  base::string16 path_list = FormatList(base_names);
   auto paths_label = std::make_unique<views::Label>(
       base::i18n::MessageFormatter::FormatWithNumberedArgs(
           l10n_util::GetStringUTF16(details_message_id), int64_t{paths.size()},
diff --git a/chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.cc b/chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.cc
index 4dc6e36..250ba4d5 100644
--- a/chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.cc
+++ b/chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.h"
+
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/views/location_bar/find_bar_icon.h"
@@ -12,6 +13,7 @@
 #include "chrome/browser/ui/views/page_action/pwa_install_view.h"
 #include "chrome/browser/ui/views/page_action/zoom_view.h"
 #include "chrome/browser/ui/views/passwords/manage_passwords_icon_views.h"
+#include "chrome/browser/ui/views/reader_mode/reader_mode_icon_view.h"
 #include "chrome/browser/ui/views/send_tab_to_self/send_tab_to_self_icon_view.h"
 #include "chrome/browser/ui/views/translate/translate_icon_view.h"
 #include "ui/views/layout/box_layout.h"
@@ -57,6 +59,12 @@
             params.command_updater, params.page_action_icon_delegate);
         page_action_icons_.push_back(pwa_install_view_);
         break;
+      case PageActionIconType::kReaderMode:
+        DCHECK(params.command_updater);
+        reader_mode_icon_ = new ReaderModeIconView(
+            params.command_updater, params.page_action_icon_delegate);
+        page_action_icons_.push_back(reader_mode_icon_);
+        break;
       case PageActionIconType::kTranslate:
         DCHECK(params.command_updater);
         translate_icon_ = new TranslateIconView(
@@ -114,6 +122,8 @@
       return intent_picker_view_;
     case PageActionIconType::kPwaInstall:
       return pwa_install_view_;
+    case PageActionIconType::kReaderMode:
+      return reader_mode_icon_;
     case PageActionIconType::kTranslate:
       return translate_icon_;
     case PageActionIconType::kZoom:
diff --git a/chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.h b/chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.h
index 0857e09e..a9177a1 100644
--- a/chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.h
+++ b/chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.h
@@ -22,6 +22,7 @@
 class ManagePasswordsIconViews;
 class NativeFileSystemAccessIconView;
 class PwaInstallView;
+class ReaderModeIconView;
 class TranslateIconView;
 class ZoomView;
 
@@ -90,6 +91,7 @@
       nullptr;
   TranslateIconView* translate_icon_ = nullptr;
   NativeFileSystemAccessIconView* native_file_system_icon_ = nullptr;
+  ReaderModeIconView* reader_mode_icon_ = nullptr;
   std::vector<PageActionIconView*> page_action_icons_;
 
   ScopedObserver<zoom::ZoomEventManager, zoom::ZoomEventManagerObserver>
diff --git a/chrome/browser/ui/views/page_info/page_info_hover_button.cc b/chrome/browser/ui/views/page_info/page_info_hover_button.cc
index 21ae4b5b..23739d9 100644
--- a/chrome/browser/ui/views/page_info/page_info_hover_button.cc
+++ b/chrome/browser/ui/views/page_info/page_info_hover_button.cc
@@ -17,18 +17,6 @@
 #include "ui/views/layout/grid_layout.h"
 #include "ui/views/style/typography.h"
 
-namespace {
-
-std::unique_ptr<views::Border> CreateBorderWithVerticalSpacing(
-    int vert_spacing) {
-  const int horz_spacing = ChromeLayoutProvider::Get()->GetDistanceMetric(
-      views::DISTANCE_BUTTON_HORIZONTAL_PADDING);
-  return views::CreateEmptyBorder(vert_spacing, horz_spacing, vert_spacing,
-                                  horz_spacing);
-}
-
-}  // namespace
-
 PageInfoHoverButton::PageInfoHoverButton(views::ButtonListener* listener,
                                          const gfx::ImageSkia& image_icon,
                                          int title_resource_id,
@@ -103,7 +91,10 @@
   auto insets = layout_provider->GetInsetsMetric(
       views::InsetsMetric::INSETS_LABEL_BUTTON);
   const int vert_spacing = insets.height();
-  SetBorder(CreateBorderWithVerticalSpacing(vert_spacing));
+  const int horz_spacing = ChromeLayoutProvider::Get()->GetDistanceMetric(
+      views::DISTANCE_BUTTON_HORIZONTAL_PADDING);
+  SetBorder(views::CreateEmptyBorder(vert_spacing, horz_spacing, vert_spacing,
+                                     horz_spacing));
 
   SetID(click_target_id);
   SetTooltipText(tooltip_text);
diff --git a/chrome/browser/ui/views/reader_mode/reader_mode_icon_view.cc b/chrome/browser/ui/views/reader_mode/reader_mode_icon_view.cc
new file mode 100644
index 0000000..ab78d23
--- /dev/null
+++ b/chrome/browser/ui/views/reader_mode/reader_mode_icon_view.cc
@@ -0,0 +1,60 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/reader_mode/reader_mode_icon_view.h"
+
+#include "chrome/app/chrome_command_ids.h"
+#include "chrome/app/vector_icons/vector_icons.h"
+#include "chrome/grit/generated_resources.h"
+#include "components/dom_distiller/core/url_utils.h"
+#include "content/public/browser/navigation_handle.h"
+#include "content/public/browser/web_contents.h"
+#include "ui/base/l10n/l10n_util.h"
+
+using dom_distiller::url_utils::IsDistilledPage;
+
+ReaderModeIconView::ReaderModeIconView(CommandUpdater* command_updater,
+                                       PageActionIconView::Delegate* delegate)
+    : PageActionIconView(command_updater, IDC_DISTILL_PAGE, delegate) {}
+
+void ReaderModeIconView::DidFinishNavigation(
+    content::NavigationHandle* navigation_handle) {
+  if (GetVisible())
+    AnimateInkDrop(views::InkDropState::HIDDEN, nullptr);
+}
+
+bool ReaderModeIconView::Update() {
+  content::WebContents* contents = GetWebContents();
+  if (!contents) {
+    SetVisible(false);
+    return false;
+  }
+
+  const bool was_previously_active = active();
+
+  // TODO(gilmanmh): Display icon for only those pages that are likely to
+  // render well in Reader Mode.
+  SetVisible(true);
+  SetActiveInternal(IsDistilledPage(contents->GetLastCommittedURL()));
+
+  // Notify the icon when navigation to and from a distilled page occurs so that
+  // it can hide the inkdrop.
+  Observe(contents);
+
+  return active() != was_previously_active;
+}
+
+const gfx::VectorIcon& ReaderModeIconView::GetVectorIcon() const {
+  return kReaderModeIcon;
+}
+
+base::string16 ReaderModeIconView::GetTextForTooltipAndAccessibleName() const {
+  return l10n_util::GetStringUTF16(IDS_DISTILL_PAGE);
+}
+
+// TODO(gilmanmh): Consider displaying a bubble the first time a user
+// activates the icon to explain what Reader Mode is.
+views::BubbleDialogDelegateView* ReaderModeIconView::GetBubble() const {
+  return nullptr;
+}
diff --git a/chrome/browser/ui/views/reader_mode/reader_mode_icon_view.h b/chrome/browser/ui/views/reader_mode/reader_mode_icon_view.h
new file mode 100644
index 0000000..98c0e28
--- /dev/null
+++ b/chrome/browser/ui/views/reader_mode/reader_mode_icon_view.h
@@ -0,0 +1,48 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_VIEWS_READER_MODE_READER_MODE_ICON_VIEW_H_
+#define CHROME_BROWSER_UI_VIEWS_READER_MODE_READER_MODE_ICON_VIEW_H_
+
+#include "base/macros.h"
+#include "base/strings/string16.h"
+#include "chrome/browser/ui/views/page_action/page_action_icon_view.h"
+#include "content/public/browser/web_contents_observer.h"
+#include "ui/gfx/vector_icon_types.h"
+
+namespace content {
+class NavigationHandle;
+}
+namespace views {
+class BubbleDialogDelegateView;
+}
+class CommandUpdater;
+
+// A location bar icon that toggles Reader Mode for the current page.
+class ReaderModeIconView : public PageActionIconView,
+                           public content::WebContentsObserver {
+ public:
+  ReaderModeIconView(CommandUpdater* command_updater,
+                     PageActionIconView::Delegate* delegate);
+  ~ReaderModeIconView() override = default;
+
+ protected:
+  // Detect when navigation to the distilled page completes. This is required to
+  // correctly update the icon's inkdrop.
+  void DidFinishNavigation(
+      content::NavigationHandle* navigation_handle) override;
+
+  bool Update() override;
+  const gfx::VectorIcon& GetVectorIcon() const override;
+  base::string16 GetTextForTooltipAndAccessibleName() const override;
+
+  // GetBubble() is required by PageActionIconView; however, the icon
+  // intentionally does not display a bubble when activated.
+  views::BubbleDialogDelegateView* GetBubble() const override;
+  void OnExecuting(PageActionIconView::ExecuteSource execute_source) override {}
+
+  DISALLOW_COPY_AND_ASSIGN(ReaderModeIconView);
+};
+
+#endif  // CHROME_BROWSER_UI_VIEWS_READER_MODE_READER_MODE_ICON_VIEW_H_
diff --git a/chrome/browser/ui/web_applications/app_browser_controller.h b/chrome/browser/ui/web_applications/app_browser_controller.h
index 2ddca67..109f7ad 100644
--- a/chrome/browser/ui/web_applications/app_browser_controller.h
+++ b/chrome/browser/ui/web_applications/app_browser_controller.h
@@ -22,6 +22,12 @@
 
 namespace web_app {
 
+// Returns true if |app_url| and |page_url| are the same origin. To avoid
+// breaking Hosted Apps and Bookmark Apps that might redirect to sites in the
+// same domain but with "www.", this returns true if |page_url| is secure and in
+// the same origin as |app_url| with "www.".
+bool IsSameHostAndPort(const GURL& app_url, const GURL& page_url);
+
 // Class to encapsulate logic to control the browser UI for web apps.
 class AppBrowserController : public TabStripModelObserver,
                              public content::WebContentsObserver {
@@ -74,6 +80,9 @@
   // Gets the launch url for the app.
   virtual GURL GetAppLaunchURL() const = 0;
 
+  // Determines whether the specified url is 'inside' the app |this| controls.
+  virtual bool IsUrlInAppScope(const GURL& url) const = 0;
+
   virtual bool CanUninstall() const;
 
   virtual void Uninstall();
diff --git a/chrome/browser/ui/webui/browsing_history_handler.cc b/chrome/browser/ui/webui/browsing_history_handler.cc
index 4d88b65b..6a3bd9f 100644
--- a/chrome/browser/ui/webui/browsing_history_handler.cc
+++ b/chrome/browser/ui/webui/browsing_history_handler.cc
@@ -133,6 +133,22 @@
   result->SetString("title", title_to_set);
 }
 
+// Helper function to check if entry is present in user remote data (server-side
+// history).
+bool IsEntryInRemoteUserData(
+    const BrowsingHistoryService::HistoryEntry& entry) {
+  switch (entry.entry_type) {
+    case BrowsingHistoryService::HistoryEntry::EntryType::EMPTY_ENTRY:
+    case BrowsingHistoryService::HistoryEntry::EntryType::LOCAL_ENTRY:
+      return false;
+    case BrowsingHistoryService::HistoryEntry::EntryType::REMOTE_ENTRY:
+    case BrowsingHistoryService::HistoryEntry::EntryType::COMBINED_ENTRY:
+      return true;
+  }
+  NOTREACHED();
+  return false;
+}
+
 // Converts |entry| to a DictionaryValue to be owned by the caller.
 std::unique_ptr<base::DictionaryValue> HistoryEntryToValue(
     const BrowsingHistoryService::HistoryEntry& entry,
@@ -223,6 +239,7 @@
   result->SetBoolean("starred", bookmark_model->IsBookmarked(entry.url));
   result->SetInteger("hostFilteringBehavior", host_filtering_behavior);
   result->SetBoolean("blockedVisit", is_blocked_visit);
+  result->SetBoolean("isUrlInRemoteUserData", IsEntryInRemoteUserData(entry));
 
   return result;
 }
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
index 2c882d4..be0d5e5 100644
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -26,7 +26,7 @@
 #include "chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.h"
 #include "chrome/browser/ui/webui/chromeos/account_manager_welcome_ui.h"
 #include "chrome/browser/ui/webui/chromeos/account_migration_welcome_ui.h"
-#include "chrome/browser/ui/webui/chromeos/insession_password_change_ui.h"
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.h"
 #include "chrome/browser/ui/webui/components_ui.h"
 #include "chrome/browser/ui/webui/constrained_web_dialog_ui.h"
 #include "chrome/browser/ui/webui/crashes_ui.h"
@@ -87,7 +87,6 @@
 #include "components/security_interstitials/content/connection_help_ui.h"
 #include "components/security_interstitials/content/urls.h"
 #include "components/signin/core/browser/account_consistency_method.h"
-#include "components/signin/core/browser/signin_buildflags.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/common/content_client.h"
@@ -490,14 +489,14 @@
             prefs::kSamlInSessionPasswordChangeEnabled)) {
       return nullptr;
     }
-    return &NewWebUI<chromeos::InSessionPasswordChangeUI>;
+    return &NewWebUI<chromeos::PasswordChangeUI>;
   }
   if (url.host_piece() == chrome::kChromeUIConfirmPasswordChangeHost) {
     if (!profile->GetPrefs()->GetBoolean(
             prefs::kSamlInSessionPasswordChangeEnabled)) {
       return nullptr;
     }
-    return &NewWebUI<chromeos::InSessionConfirmPasswordChangeUI>;
+    return &NewWebUI<chromeos::ConfirmPasswordChangeUI>;
   }
   if (url.host_piece() ==
       chrome::kChromeUIUrgentPasswordExpiryNotificationHost) {
diff --git a/chrome/browser/ui/webui/chromeos/in_session_password_change/OWNERS b/chrome/browser/ui/webui/chromeos/in_session_password_change/OWNERS
new file mode 100644
index 0000000..e7edf2e6
--- /dev/null
+++ b/chrome/browser/ui/webui/chromeos/in_session_password_change/OWNERS
@@ -0,0 +1,2 @@
+olsen@chromium.org
+rsorokin@chromium.org
diff --git a/chrome/browser/ui/webui/chromeos/in_session_password_change/confirm_password_change_handler.cc b/chrome/browser/ui/webui/chromeos/in_session_password_change/confirm_password_change_handler.cc
new file mode 100644
index 0000000..9260536
--- /dev/null
+++ b/chrome/browser/ui/webui/chromeos/in_session_password_change/confirm_password_change_handler.cc
@@ -0,0 +1,64 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/confirm_password_change_handler.h"
+
+#include <string>
+
+#include "base/logging.h"
+#include "base/macros.h"
+#include "base/values.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/browser_process_platform_part_chromeos.h"
+#include "chrome/browser/chromeos/login/saml/in_session_password_change_manager.h"
+#include "chrome/browser/chromeos/profiles/profile_helper.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/common/pref_names.h"
+#include "chromeos/login/auth/saml_password_attributes.h"
+#include "components/prefs/pref_service.h"
+#include "components/user_manager/user_manager.h"
+
+namespace chromeos {
+
+ConfirmPasswordChangeHandler::ConfirmPasswordChangeHandler() {
+  auto* in_session_password_change_manager =
+      g_browser_process->platform_part()->in_session_password_change_manager();
+  CHECK(in_session_password_change_manager);
+  in_session_password_change_manager->AddObserver(this);
+}
+
+ConfirmPasswordChangeHandler::~ConfirmPasswordChangeHandler() {
+  auto* in_session_password_change_manager =
+      g_browser_process->platform_part()->in_session_password_change_manager();
+  CHECK(in_session_password_change_manager);
+  in_session_password_change_manager->RemoveObserver(this);
+}
+
+void ConfirmPasswordChangeHandler::OnEvent(
+    InSessionPasswordChangeManager::Event event) {
+  if (event == InSessionPasswordChangeManager::CHANGE_PASSWORD_AUTH_FAILURE) {
+    AllowJavascript();
+    FireWebUIListener("incorrect-old-password");
+  }
+}
+
+void ConfirmPasswordChangeHandler::HandleChangePassword(
+    const base::ListValue* params) {
+  const std::string old_password = params->GetList()[0].GetString();
+  const std::string new_password = params->GetList()[1].GetString();
+  auto* in_session_password_change_manager =
+      g_browser_process->platform_part()->in_session_password_change_manager();
+  CHECK(in_session_password_change_manager);
+  in_session_password_change_manager->ChangePassword(old_password,
+                                                     new_password);
+}
+
+void ConfirmPasswordChangeHandler::RegisterMessages() {
+  web_ui()->RegisterMessageCallback(
+      "changePassword",
+      base::BindRepeating(&ConfirmPasswordChangeHandler::HandleChangePassword,
+                          weak_factory_.GetWeakPtr()));
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/in_session_password_change/confirm_password_change_handler.h b/chrome/browser/ui/webui/chromeos/in_session_password_change/confirm_password_change_handler.h
new file mode 100644
index 0000000..7a69e7c6
--- /dev/null
+++ b/chrome/browser/ui/webui/chromeos/in_session_password_change/confirm_password_change_handler.h
@@ -0,0 +1,39 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_CONFIRM_PASSWORD_CHANGE_HANDLER_H_
+#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_CONFIRM_PASSWORD_CHANGE_HANDLER_H_
+
+#include "base/memory/weak_ptr.h"
+#include "base/values.h"
+#include "chrome/browser/chromeos/login/saml/in_session_password_change_manager.h"
+#include "content/public/browser/web_ui_message_handler.h"
+
+namespace chromeos {
+
+class ConfirmPasswordChangeHandler
+    : public content::WebUIMessageHandler,
+      public InSessionPasswordChangeManager::Observer {
+ public:
+  ConfirmPasswordChangeHandler();
+  ~ConfirmPasswordChangeHandler() override;
+
+  // Tries to change the cryptohome password once the confirm-password-change
+  // dialog is filled in and the password change is confirmed.
+  void HandleChangePassword(const base::ListValue* passwords);
+
+  // InSessionPasswordChangeManager::Observer:
+  void OnEvent(InSessionPasswordChangeManager::Event event) override;
+
+  // content::WebUIMessageHandler:
+  void RegisterMessages() override;
+
+ private:
+  base::WeakPtrFactory<ConfirmPasswordChangeHandler> weak_factory_{this};
+  DISALLOW_COPY_AND_ASSIGN(ConfirmPasswordChangeHandler);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_CONFIRM_PASSWORD_CHANGE_HANDLER_H_
diff --git a/chrome/browser/ui/webui/chromeos/insession_password_change_handler_chromeos.cc b/chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_handler.cc
similarity index 66%
rename from chrome/browser/ui/webui/chromeos/insession_password_change_handler_chromeos.cc
rename to chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_handler.cc
index 6972b45e..01f87b4 100644
--- a/chrome/browser/ui/webui/chromeos/insession_password_change_handler_chromeos.cc
+++ b/chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_handler.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ui/webui/chromeos/insession_password_change_handler_chromeos.h"
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_handler.h"
 
 #include <string>
 
@@ -22,13 +22,12 @@
 
 namespace chromeos {
 
-InSessionPasswordChangeHandler::InSessionPasswordChangeHandler(
+PasswordChangeHandler::PasswordChangeHandler(
     const std::string& password_change_url)
     : password_change_url_(password_change_url) {}
-InSessionPasswordChangeHandler::~InSessionPasswordChangeHandler() = default;
+PasswordChangeHandler::~PasswordChangeHandler() = default;
 
-void InSessionPasswordChangeHandler::HandleInitialize(
-    const base::ListValue* value) {
+void PasswordChangeHandler::HandleInitialize(const base::ListValue* value) {
   Profile* profile = Profile::FromWebUI(web_ui());
   CHECK(profile->GetPrefs()->GetBoolean(
       prefs::kSamlInSessionPasswordChangeEnabled));
@@ -47,38 +46,35 @@
   CallJavascriptFunction("insession.password.change.loadAuthExtension", params);
 }
 
-void InSessionPasswordChangeHandler::HandleChangePassword(
+void PasswordChangeHandler::HandleChangePassword(
     const base::ListValue* params) {
   const base::Value& old_passwords = params->GetList()[0];
   const base::Value& new_passwords = params->GetList()[1];
   VLOG(4) << "Scraped " << old_passwords.GetList().size() << " old passwords";
   VLOG(4) << "Scraped " << new_passwords.GetList().size() << " new passwords";
-  user_manager::User* user =
-      ProfileHelper::Get()->GetUserByProfile(Profile::FromWebUI(web_ui()));
-  user_manager::UserManager::Get()->SaveForceOnlineSignin(user->GetAccountId(),
-                                                          true);
+
+  const std::string old_password = (old_passwords.GetList().size() > 0)
+                                       ? old_passwords.GetList()[0].GetString()
+                                       : "";
+  const std::string new_password = (new_passwords.GetList().size() == 1)
+                                       ? new_passwords.GetList()[0].GetString()
+                                       : "";
+
   auto* in_session_password_change_manager =
       g_browser_process->platform_part()->in_session_password_change_manager();
   CHECK(in_session_password_change_manager);
-
-  if (new_passwords.GetList().size() == 1 &&
-      old_passwords.GetList().size() > 0) {
-    in_session_password_change_manager->ChangePassword(
-        old_passwords.GetList()[0].GetString(),
-        new_passwords.GetList()[0].GetString());
-  } else {
-    in_session_password_change_manager->HandlePasswordScrapeFailure();
-  }
+  in_session_password_change_manager->OnSamlPasswordChanged(old_password,
+                                                            new_password);
 }
 
-void InSessionPasswordChangeHandler::RegisterMessages() {
+void PasswordChangeHandler::RegisterMessages() {
   web_ui()->RegisterMessageCallback(
       "initialize",
-      base::BindRepeating(&InSessionPasswordChangeHandler::HandleInitialize,
+      base::BindRepeating(&PasswordChangeHandler::HandleInitialize,
                           weak_factory_.GetWeakPtr()));
   web_ui()->RegisterMessageCallback(
       "changePassword",
-      base::BindRepeating(&InSessionPasswordChangeHandler::HandleChangePassword,
+      base::BindRepeating(&PasswordChangeHandler::HandleChangePassword,
                           weak_factory_.GetWeakPtr()));
 }
 
diff --git a/chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_handler.h b/chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_handler.h
new file mode 100644
index 0000000..e74afbe
--- /dev/null
+++ b/chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_handler.h
@@ -0,0 +1,36 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_PASSWORD_CHANGE_HANDLER_H_
+#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_PASSWORD_CHANGE_HANDLER_H_
+
+#include "base/memory/weak_ptr.h"
+#include "base/values.h"
+#include "chromeos/login/auth/cryptohome_authenticator.h"
+#include "content/public/browser/web_ui_message_handler.h"
+
+namespace chromeos {
+
+class PasswordChangeHandler : public content::WebUIMessageHandler {
+ public:
+  explicit PasswordChangeHandler(const std::string& password_change_url);
+  ~PasswordChangeHandler() override;
+
+  // content::WebUIMessageHandler:
+  void RegisterMessages() override;
+
+  void HandleInitialize(const base::ListValue*);
+  void HandleChangePassword(const base::ListValue* passwords);
+
+ private:
+  const std::string password_change_url_;
+  scoped_refptr<CryptohomeAuthenticator> authenticator_;
+
+  base::WeakPtrFactory<PasswordChangeHandler> weak_factory_{this};
+  DISALLOW_COPY_AND_ASSIGN(PasswordChangeHandler);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_PASSWORD_CHANGE_HANDLER_H_
diff --git a/chrome/browser/ui/webui/chromeos/insession_password_change_ui.cc b/chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.cc
similarity index 83%
rename from chrome/browser/ui/webui/chromeos/insession_password_change_ui.cc
rename to chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.cc
index 2ad1fa0..3df31e5 100644
--- a/chrome/browser/ui/webui/chromeos/insession_password_change_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.cc
@@ -2,18 +2,19 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ui/webui/chromeos/insession_password_change_ui.h"
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.h"
 
 #include <memory>
 
 #include "base/bind.h"
 #include "base/command_line.h"
+#include "base/json/json_writer.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h"
 #include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/webui/chromeos/insession_confirm_password_change_handler_chromeos.h"
-#include "chrome/browser/ui/webui/chromeos/insession_password_change_handler_chromeos.h"
-#include "chrome/browser/ui/webui/chromeos/urgent_password_expiry_notification_handler.h"
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/confirm_password_change_handler.h"
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_handler.h"
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.h"
 #include "chrome/browser/ui/webui/localized_string.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/webui_url_constants.h"
@@ -134,7 +135,7 @@
     g_dialog->Close();
 }
 
-InSessionPasswordChangeUI::InSessionPasswordChangeUI(content::WebUI* web_ui)
+PasswordChangeUI::PasswordChangeUI(content::WebUI* web_ui)
     : ui::WebDialogUI(web_ui) {
   Profile* profile = Profile::FromWebUI(web_ui);
   CHECK(profile->GetPrefs()->GetBoolean(
@@ -142,8 +143,8 @@
   content::WebUIDataSource* source =
       content::WebUIDataSource::Create(chrome::kChromeUIPasswordChangeHost);
 
-  web_ui->AddMessageHandler(std::make_unique<InSessionPasswordChangeHandler>(
-      GetPasswordChangeUrl(profile)));
+  web_ui->AddMessageHandler(
+      std::make_unique<PasswordChangeHandler>(GetPasswordChangeUrl(profile)));
 
   source->SetJsonPath("strings.js");
 
@@ -157,11 +158,38 @@
   content::WebUIDataSource::Add(profile, source);
 }
 
-InSessionPasswordChangeUI::~InSessionPasswordChangeUI() = default;
+PasswordChangeUI::~PasswordChangeUI() = default;
 
-ConfirmPasswordChangeDialog::ConfirmPasswordChangeDialog()
+// static
+void ConfirmPasswordChangeDialog::Show(const std::string& scraped_old_password,
+                                       const std::string& scraped_new_password,
+                                       bool show_spinner_initially) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  if (g_confirm_dialog) {
+    g_confirm_dialog->Focus();
+    return;
+  }
+  g_confirm_dialog = new ConfirmPasswordChangeDialog(
+      scraped_old_password, scraped_new_password, show_spinner_initially);
+  g_confirm_dialog->ShowSystemDialog();
+}
+
+// static
+void ConfirmPasswordChangeDialog::Dismiss() {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  if (g_confirm_dialog)
+    g_confirm_dialog->Close();
+}
+
+ConfirmPasswordChangeDialog::ConfirmPasswordChangeDialog(
+    const std::string& scraped_old_password,
+    const std::string& scraped_new_password,
+    bool show_spinner_initially)
     : SystemWebDialogDelegate(GURL(chrome::kChromeUIConfirmPasswordChangeUrl),
-                              /*title=*/base::string16()) {}
+                              /*title=*/base::string16()),
+      scraped_old_password_(scraped_old_password),
+      scraped_new_password_(scraped_new_password),
+      show_spinner_initially_(show_spinner_initially) {}
 
 ConfirmPasswordChangeDialog::~ConfirmPasswordChangeDialog() {
   DCHECK_EQ(this, g_confirm_dialog);
@@ -173,26 +201,17 @@
                            kMaxConfirmPasswordChangeDialogHeight);
 }
 
-// static
-void ConfirmPasswordChangeDialog::Show() {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (g_confirm_dialog) {
-    g_confirm_dialog->Focus();
-    return;
-  }
-  g_confirm_dialog = new ConfirmPasswordChangeDialog();
-  g_confirm_dialog->ShowSystemDialog();
+std::string ConfirmPasswordChangeDialog::GetDialogArgs() const {
+  // TODO(https://crbug.com/930109): Configure the embedded UI to only display
+  // prompts for the passwords that were not scraped.
+  std::string data;
+  base::DictionaryValue dialog_args;
+  dialog_args.SetBoolean("showSpinnerInitially", show_spinner_initially_);
+  base::JSONWriter::Write(dialog_args, &data);
+  return data;
 }
 
-// static
-void ConfirmPasswordChangeDialog::Dismiss() {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  if (g_confirm_dialog)
-    g_confirm_dialog->Close();
-}
-
-InSessionConfirmPasswordChangeUI::InSessionConfirmPasswordChangeUI(
-    content::WebUI* web_ui)
+ConfirmPasswordChangeUI::ConfirmPasswordChangeUI(content::WebUI* web_ui)
     : ui::WebDialogUI(web_ui) {
   Profile* profile = Profile::FromWebUI(web_ui);
   CHECK(profile->GetPrefs()->GetBoolean(
@@ -222,13 +241,12 @@
   source->AddResourcePath("confirm_password_change.js",
                           IDR_CONFIRM_PASSWORD_CHANGE_JS);
 
-  web_ui->AddMessageHandler(
-      std::make_unique<InSessionConfirmPasswordChangeHandler>());
+  web_ui->AddMessageHandler(std::make_unique<ConfirmPasswordChangeHandler>());
 
   content::WebUIDataSource::Add(profile, source);
 }
 
-InSessionConfirmPasswordChangeUI::~InSessionConfirmPasswordChangeUI() = default;
+ConfirmPasswordChangeUI::~ConfirmPasswordChangeUI() = default;
 
 UrgentPasswordExpiryNotificationDialog::UrgentPasswordExpiryNotificationDialog(
     int less_than_n_days)
@@ -288,7 +306,7 @@
   base::StringToInt(url_suffix, &less_than_n_days);
   less_than_n_days = std::max(less_than_n_days, 0);
   const base::string16 title = l10n_util::GetPluralStringFUTF16(
-      IDS_PASSWORD_EXPIRY_DAYS_BODY, less_than_n_days);
+      IDS_PASSWORD_EXPIRY_DAYS_TITLE, less_than_n_days);
   source->AddString("title", title);
 
   static constexpr LocalizedString kLocalizedStrings[] = {
diff --git a/chrome/browser/ui/webui/chromeos/insession_password_change_ui.h b/chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.h
similarity index 64%
rename from chrome/browser/ui/webui/chromeos/insession_password_change_ui.h
rename to chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.h
index e09ca0c..8a7d1d0 100644
--- a/chrome/browser/ui/webui/chromeos/insession_password_change_ui.h
+++ b/chrome/browser/ui/webui/chromeos/in_session_password_change/password_change_ui.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_INSESSION_PASSWORD_CHANGE_UI_H_
-#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_INSESSION_PASSWORD_CHANGE_UI_H_
+#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_PASSWORD_CHANGE_UI_H_
+#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_PASSWORD_CHANGE_UI_H_
 
 #include "base/macros.h"
 #include "base/strings/string16.h"
@@ -32,40 +32,49 @@
 };
 
 // For chrome:://password-change
-class InSessionPasswordChangeUI : public ui::WebDialogUI {
+class PasswordChangeUI : public ui::WebDialogUI {
  public:
-  explicit InSessionPasswordChangeUI(content::WebUI* web_ui);
-  ~InSessionPasswordChangeUI() override;
+  explicit PasswordChangeUI(content::WebUI* web_ui);
+  ~PasswordChangeUI() override;
 
  private:
-  DISALLOW_COPY_AND_ASSIGN(InSessionPasswordChangeUI);
+  DISALLOW_COPY_AND_ASSIGN(PasswordChangeUI);
 };
 
 // System dialog wrapping chrome://confirm-password-change
 class ConfirmPasswordChangeDialog : public SystemWebDialogDelegate {
  public:
-  static void Show();
+  static void Show(const std::string& scraped_old_password,
+                   const std::string& scraped_new_password,
+                   bool show_spinner_initially);
   static void Dismiss();
 
  protected:
-  ConfirmPasswordChangeDialog();
+  ConfirmPasswordChangeDialog(const std::string& scraped_old_password,
+                              const std::string& scraped_new_password,
+                              bool show_spinner_initially);
   ~ConfirmPasswordChangeDialog() override;
 
   // ui::WebDialogDelegate:
   void GetDialogSize(gfx::Size* size) const override;
+  std::string GetDialogArgs() const override;
 
  private:
+  std::string scraped_old_password_;
+  std::string scraped_new_password_;
+  bool show_spinner_initially_ = false;
+
   DISALLOW_COPY_AND_ASSIGN(ConfirmPasswordChangeDialog);
 };
 
 // For chrome:://confirm-password-change
-class InSessionConfirmPasswordChangeUI : public ui::WebDialogUI {
+class ConfirmPasswordChangeUI : public ui::WebDialogUI {
  public:
-  explicit InSessionConfirmPasswordChangeUI(content::WebUI* web_ui);
-  ~InSessionConfirmPasswordChangeUI() override;
+  explicit ConfirmPasswordChangeUI(content::WebUI* web_ui);
+  ~ConfirmPasswordChangeUI() override;
 
  private:
-  DISALLOW_COPY_AND_ASSIGN(InSessionConfirmPasswordChangeUI);
+  DISALLOW_COPY_AND_ASSIGN(ConfirmPasswordChangeUI);
 };
 
 // System dialog wrapping chrome://urgent-password-expiry-notification
@@ -97,4 +106,4 @@
 
 }  // namespace chromeos
 
-#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_INSESSION_PASSWORD_CHANGE_UI_H_
+#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_PASSWORD_CHANGE_UI_H_
diff --git a/chrome/browser/ui/webui/chromeos/urgent_password_expiry_notification_handler.cc b/chrome/browser/ui/webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.cc
similarity index 92%
rename from chrome/browser/ui/webui/chromeos/urgent_password_expiry_notification_handler.cc
rename to chrome/browser/ui/webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.cc
index 7016586..731c0fa 100644
--- a/chrome/browser/ui/webui/chromeos/urgent_password_expiry_notification_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ui/webui/chromeos/urgent_password_expiry_notification_handler.h"
+#include "chrome/browser/ui/webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.h"
 
 #include <string>
 
diff --git a/chrome/browser/ui/webui/chromeos/urgent_password_expiry_notification_handler.h b/chrome/browser/ui/webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.h
similarity index 72%
rename from chrome/browser/ui/webui/chromeos/urgent_password_expiry_notification_handler.h
rename to chrome/browser/ui/webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.h
index f352b0a..feb3277 100644
--- a/chrome/browser/ui/webui/chromeos/urgent_password_expiry_notification_handler.h
+++ b/chrome/browser/ui/webui/chromeos/in_session_password_change/urgent_password_expiry_notification_handler.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_URGENT_PASSWORD_EXPIRY_NOTIFICATION_HANDLER_H_
-#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_URGENT_PASSWORD_EXPIRY_NOTIFICATION_HANDLER_H_
+#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_URGENT_PASSWORD_EXPIRY_NOTIFICATION_HANDLER_H_
+#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_URGENT_PASSWORD_EXPIRY_NOTIFICATION_HANDLER_H_
 
 #include "base/memory/weak_ptr.h"
 #include "base/values.h"
@@ -31,4 +31,4 @@
 
 }  // namespace chromeos
 
-#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_URGENT_PASSWORD_EXPIRY_NOTIFICATION_HANDLER_H_
+#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_IN_SESSION_PASSWORD_CHANGE_URGENT_PASSWORD_EXPIRY_NOTIFICATION_HANDLER_H_
diff --git a/chrome/browser/ui/webui/chromeos/insession_confirm_password_change_handler_chromeos.cc b/chrome/browser/ui/webui/chromeos/insession_confirm_password_change_handler_chromeos.cc
deleted file mode 100644
index 18dea1f..0000000
--- a/chrome/browser/ui/webui/chromeos/insession_confirm_password_change_handler_chromeos.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/webui/chromeos/insession_confirm_password_change_handler_chromeos.h"
-
-#include <string>
-
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/values.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/browser_process_platform_part_chromeos.h"
-#include "chrome/browser/chromeos/login/saml/in_session_password_change_manager.h"
-#include "chrome/browser/chromeos/profiles/profile_helper.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/pref_names.h"
-#include "chromeos/login/auth/saml_password_attributes.h"
-#include "components/prefs/pref_service.h"
-#include "components/user_manager/user_manager.h"
-
-namespace chromeos {
-
-InSessionConfirmPasswordChangeHandler::InSessionConfirmPasswordChangeHandler() =
-    default;
-
-InSessionConfirmPasswordChangeHandler::
-    ~InSessionConfirmPasswordChangeHandler() = default;
-
-void InSessionConfirmPasswordChangeHandler::HandleChangePassword(
-    const base::ListValue* params) {
-  const std::string old_password = params->GetList()[0].GetString();
-  const std::string new_password = params->GetList()[1].GetString();
-  auto* in_session_password_change_manager =
-      g_browser_process->platform_part()->in_session_password_change_manager();
-  CHECK(in_session_password_change_manager);
-  in_session_password_change_manager->ChangePassword(old_password,
-                                                     new_password);
-  // TODO(olsen): Show a spinner until password change is complete.
-}
-
-void InSessionConfirmPasswordChangeHandler::RegisterMessages() {
-  web_ui()->RegisterMessageCallback(
-      "changePassword",
-      base::BindRepeating(
-          &InSessionConfirmPasswordChangeHandler::HandleChangePassword,
-          weak_factory_.GetWeakPtr()));
-}
-
-}  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/insession_confirm_password_change_handler_chromeos.h b/chrome/browser/ui/webui/chromeos/insession_confirm_password_change_handler_chromeos.h
deleted file mode 100644
index f23723b..0000000
--- a/chrome/browser/ui/webui/chromeos/insession_confirm_password_change_handler_chromeos.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_INSESSION_CONFIRM_PASSWORD_CHANGE_HANDLER_CHROMEOS_H_
-#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_INSESSION_CONFIRM_PASSWORD_CHANGE_HANDLER_CHROMEOS_H_
-
-#include "base/memory/weak_ptr.h"
-#include "base/values.h"
-#include "content/public/browser/web_ui_message_handler.h"
-
-namespace chromeos {
-
-class InSessionConfirmPasswordChangeHandler
-    : public content::WebUIMessageHandler {
- public:
-  InSessionConfirmPasswordChangeHandler();
-  ~InSessionConfirmPasswordChangeHandler() override;
-
-  // content::WebUIMessageHandler:
-  void RegisterMessages() override;
-
-  // Tries to change the cryptohome password once the confirm-password-change
-  // dialog is filled in and the password change is confirmed.
-  void HandleChangePassword(const base::ListValue* passwords);
-
- private:
-  base::WeakPtrFactory<InSessionConfirmPasswordChangeHandler> weak_factory_{
-      this};
-  DISALLOW_COPY_AND_ASSIGN(InSessionConfirmPasswordChangeHandler);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_INSESSION_CONFIRM_PASSWORD_CHANGE_HANDLER_CHROMEOS_H_
diff --git a/chrome/browser/ui/webui/chromeos/insession_password_change_handler_chromeos.h b/chrome/browser/ui/webui/chromeos/insession_password_change_handler_chromeos.h
deleted file mode 100644
index 8e40a84..0000000
--- a/chrome/browser/ui/webui/chromeos/insession_password_change_handler_chromeos.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_INSESSION_PASSWORD_CHANGE_HANDLER_CHROMEOS_H_
-#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_INSESSION_PASSWORD_CHANGE_HANDLER_CHROMEOS_H_
-
-#include "base/memory/weak_ptr.h"
-#include "base/values.h"
-#include "chromeos/login/auth/cryptohome_authenticator.h"
-#include "content/public/browser/web_ui_message_handler.h"
-
-namespace chromeos {
-
-class InSessionPasswordChangeHandler : public content::WebUIMessageHandler {
- public:
-  explicit InSessionPasswordChangeHandler(
-      const std::string& password_change_url);
-  ~InSessionPasswordChangeHandler() override;
-
-  // content::WebUIMessageHandler:
-  void RegisterMessages() override;
-
-  void HandleInitialize(const base::ListValue*);
-  void HandleChangePassword(const base::ListValue* passwords);
-
- private:
-  const std::string password_change_url_;
-  scoped_refptr<CryptohomeAuthenticator> authenticator_;
-  base::WeakPtrFactory<InSessionPasswordChangeHandler> weak_factory_{this};
-  DISALLOW_COPY_AND_ASSIGN(InSessionPasswordChangeHandler);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_INSESSION_PASSWORD_CHANGE_HANDLER_CHROMEOS_H_
diff --git a/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc b/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc
index dee48d78..4748aee5 100644
--- a/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc
+++ b/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc
@@ -23,6 +23,7 @@
 #include "chrome/browser/extensions/api/downloads/downloads_api.h"
 #include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/profiles/profile.h"
+#include "components/download/public/common/download_danger_type.h"
 #include "components/download/public/common/download_item.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/download_item_utils.h"
@@ -58,6 +59,8 @@
       return "DANGEROUS_HOST";
     case download::DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED:
       return "POTENTIALLY_UNWANTED";
+    case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
+      return "ASYNC_SCANNING";
     case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT:
     case download::DOWNLOAD_DANGER_TYPE_USER_VALIDATED:
diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui/favicon_source.cc
index 0299e976..99b6951 100644
--- a/chrome/browser/ui/webui/favicon_source.cc
+++ b/chrome/browser/ui/webui/favicon_source.cc
@@ -142,6 +142,25 @@
         }
       }
     }
+
+    if (!parsed.allow_favicon_server_fallback) {
+      // Request from local storage only.
+      // TODO(victorvianna): Expose fallback_to_host in FaviconRequestHandler
+      // API and move the explanatory comment for |fallback_to_host| here.
+      const bool fallback_to_host = true;
+      favicon_service->GetRawFaviconForPageURL(
+          url, {favicon_base::IconType::kFavicon}, desired_size_in_pixel,
+          fallback_to_host,
+          base::Bind(&FaviconSource::OnFaviconDataAvailable,
+                     base::Unretained(this),
+                     IconRequest(callback, url, parsed.size_in_dip,
+                                 parsed.device_scale_factor)),
+          &cancelable_task_tracker_);
+      return;
+    }
+
+    // Request from both local storage and favicon server using
+    // HistoryUiFaviconRequestHandler.
     favicon::HistoryUiFaviconRequestHandler*
         history_ui_favicon_request_handler =
             HistoryUiFaviconRequestHandlerFactory::GetForBrowserContext(
diff --git a/chrome/browser/ui/webui/favicon_source_unittest.cc b/chrome/browser/ui/webui/favicon_source_unittest.cc
index 95b451a..1c9bc3f 100644
--- a/chrome/browser/ui/webui/favicon_source_unittest.cc
+++ b/chrome/browser/ui/webui/favicon_source_unittest.cc
@@ -40,6 +40,8 @@
   ui::NativeTheme* const theme_;
 };
 
+// TODO(victorvianna): Add test coverage regarding usage of new/old format once
+// FaviconRequestHandler is mockable.
 class FaviconSourceTest : public testing::Test {
  public:
   FaviconSourceTest() : source_(&profile_, &theme_) {}
diff --git a/chrome/browser/ui/webui/feed_internals/feed_internals_page_handler.cc b/chrome/browser/ui/webui/feed_internals/feed_internals_page_handler.cc
index 51c01b6..77f5fae 100644
--- a/chrome/browser/ui/webui/feed_internals/feed_internals_page_handler.cc
+++ b/chrome/browser/ui/webui/feed_internals/feed_internals_page_handler.cc
@@ -31,8 +31,10 @@
                         : feed_internals::mojom::Time::New(time.ToJsTime());
 }
 
-std::string TriggerTypeToString(feed::FeedSchedulerHost::TriggerType trigger) {
-  switch (trigger) {
+std::string TriggerTypeToString(feed::FeedSchedulerHost::TriggerType* trigger) {
+  if (trigger == nullptr)
+    return "Not set";
+  switch (*trigger) {
     case feed::FeedSchedulerHost::TriggerType::kNtpShown:
       return "NTP Shown";
     case feed::FeedSchedulerHost::TriggerType::kForegrounded:
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
index 8e4fa15a..45b9ff8 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -422,7 +422,8 @@
         chromeos::DeviceOAuth2TokenServiceFactory::Get();
     std::string account_id = token_service->GetRobotAccountId();
 
-    device_request_ = token_service->StartRequest(account_id, scopes, this);
+    device_request_ =
+        token_service->StartAccessTokenRequest(account_id, scopes, this);
     device_request_callback_ = std::move(callback);
   }
 
diff --git a/chrome/browser/ui/webui/settings/about_handler.cc b/chrome/browser/ui/webui/settings/about_handler.cc
index 1c16ffb..0c8444b 100644
--- a/chrome/browser/ui/webui/settings/about_handler.cc
+++ b/chrome/browser/ui/webui/settings/about_handler.cc
@@ -142,28 +142,20 @@
 
 // Returns true if current user can change channel, false otherwise.
 bool CanChangeChannel(Profile* profile) {
-  // On a managed machine we delegate this setting to the users of the same
-  // domain only if the policy value is "domain".
   if (IsEnterpriseManaged()) {
     bool value = false;
+    // On a managed machine we delegate this setting to the affiliated users
+    // only if the policy value is true.
     chromeos::CrosSettings::Get()->GetBoolean(
         chromeos::kReleaseChannelDelegated, &value);
     if (!value)
       return false;
 
-    // Get the currently logged-in user and strip the domain part only.
-    std::string domain = "";
+    // Get the currently logged-in user and check if it is affiliated.
     const user_manager::User* user =
         profile ? chromeos::ProfileHelper::Get()->GetUserByProfile(profile)
                 : nullptr;
-    std::string email =
-        user ? user->GetAccountId().GetUserEmail() : std::string();
-    size_t at_pos = email.find('@');
-    if (at_pos != std::string::npos && at_pos + 1 < email.length())
-      domain = email.substr(email.find('@') + 1);
-    policy::BrowserPolicyConnectorChromeOS* connector =
-        g_browser_process->platform_part()->browser_policy_connector_chromeos();
-    return domain == connector->GetEnterpriseEnrollmentDomain();
+    return user && user->IsAffiliated();
   }
 
   // On non-managed machines, only the local owner can change the channel.
diff --git a/chrome/browser/ui/webui/settings/chromeos/crostini_handler.cc b/chrome/browser/ui/webui/settings/chromeos/crostini_handler.cc
index 28e18b4..c04a9bc 100644
--- a/chrome/browser/ui/webui/settings/chromeos/crostini_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/crostini_handler.cc
@@ -147,7 +147,9 @@
     base::Value device_info(base::Value::Type::DICTIONARY);
     device_info.SetKey("guid", base::Value(device.guid));
     device_info.SetKey("label", base::Value(device.label));
-    device_info.SetKey("shared", base::Value(device.shared));
+    const bool shared_in_crostini =
+        device.vm_sharing_info[crostini::kCrostiniDefaultVmName].shared;
+    device_info.SetKey("shared", base::Value(shared_in_crostini));
     usb_devices_list.GetList().push_back(std::move(device_info));
   }
   return usb_devices_list;
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index 38d3bf0..7fd74d5 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -759,11 +759,11 @@
 // UIs implemented with web technologies.
 const base::Feature kWebUIDarkMode {
   "WebUIDarkMode",
-#if defined(OS_MACOSX) || defined(OS_WIN)
+#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_ANDROID)
       base::FEATURE_ENABLED_BY_DEFAULT
 #else
       base::FEATURE_DISABLED_BY_DEFAULT
-#endif  // defined(OS_MACOSX) || defined(OS_WIN)
+#endif  // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_ANDROID)
 };
 
 #if defined(OS_WIN)
diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/common/extensions/api/_permission_features.json
index fb4dddd..3b9c3356 100644
--- a/chrome/common/extensions/api/_permission_features.json
+++ b/chrome/common/extensions/api/_permission_features.json
@@ -518,7 +518,7 @@
       ]
     },
     {
-      "channel": "dev",
+      "channel": "stable",
       "extension_types": ["platform_app"],
       "session_types": ["kiosk"]
     }
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index 9db1c715..12db442 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -1259,6 +1259,9 @@
 #endif  // !OS_CHROMEOS && !OS_ANDROID
 
 #if defined(OS_CHROMEOS)
+// List of external print servers configured by policy.
+const char kExternalPrintServers[] = "printing.external_print_servers";
+
 // List of printers configured by policy.
 const char kRecommendedNativePrinters[] =
     "native_printing.recommended_printers";
@@ -2685,4 +2688,7 @@
 const char kCertificateManagementAllowed[] = "certificate_management_allowed";
 #endif
 
+const char kSharingVapidKey[] = "sharing.vapid_key";
+const char kSharingSyncedDevices[] = "sharing.synced_devices";
+
 }  // namespace prefs
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 7bb25ef..a4f7619a 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -407,6 +407,7 @@
 #endif
 
 #if defined(OS_CHROMEOS)
+extern const char kExternalPrintServers[];
 extern const char kRecommendedNativePrinters[];
 extern const char kRecommendedNativePrintersAccessMode[];
 extern const char kRecommendedNativePrintersBlacklist[];
@@ -949,6 +950,9 @@
 extern const char kCertificateManagementAllowed[];
 #endif
 
+extern const char kSharingVapidKey[];
+extern const char kSharingSyncedDevices[];
+
 }  // namespace prefs
 
 #endif  // CHROME_COMMON_PREF_NAMES_H_
diff --git a/chrome/common/thread_profiler.cc b/chrome/common/thread_profiler.cc
index b8333d3a..bfdb6c4 100644
--- a/chrome/common/thread_profiler.cc
+++ b/chrome/common/thread_profiler.cc
@@ -245,7 +245,7 @@
       std::make_unique<CallStackProfileBuilder>(
           CallStackProfileParams(GetProcess(), thread,
                                  CallStackProfileParams::PROCESS_STARTUP),
-          work_id_recorder_.get()));
+          work_id_recorder_.get(), base::GetSampleMetadataRecorder()));
 
   startup_profiler_->Start();
 
@@ -305,7 +305,7 @@
       std::make_unique<CallStackProfileBuilder>(
           CallStackProfileParams(GetProcess(), thread_,
                                  CallStackProfileParams::PERIODIC_COLLECTION),
-          work_id_recorder_.get(),
+          work_id_recorder_.get(), base::GetSampleMetadataRecorder(),
           base::BindOnce(&ThreadProfiler::OnPeriodicCollectionCompleted,
                          owning_thread_task_runner_,
                          weak_factory_.GetWeakPtr())));
diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc
index abeecc5..71e50ac 100644
--- a/chrome/common/url_constants.cc
+++ b/chrome/common/url_constants.cc
@@ -289,7 +289,7 @@
     "https://support.google.com/chromebook?p=chromebook_printing";
 
 const char kCupsPrintPPDLearnMoreURL[] =
-    "https://support.google.com/chromebook?p=chromebook_printing";
+    "https://support.google.com/chromebook/?p=printing_advancedconfigurations";
 
 const char kEasyUnlockLearnMoreUrl[] =
     "https://support.google.com/chromebook/?p=smart_lock";
diff --git a/chrome/credential_provider/gaiacp/gaia_credential_base.cc b/chrome/credential_provider/gaiacp/gaia_credential_base.cc
index de73f7a..99b09af 100644
--- a/chrome/credential_provider/gaiacp/gaia_credential_base.cc
+++ b/chrome/credential_provider/gaiacp/gaia_credential_base.cc
@@ -2153,11 +2153,16 @@
                               GetStringResource(password_message).c_str());
       events_->SetFieldState(this, FID_CURRENT_PASSWORD_FIELD,
                              CPFS_DISPLAY_IN_SELECTED_TILE);
-      events_->SetFieldState(this, FID_FORGOT_PASSWORD_LINK,
-                             CPFS_DISPLAY_IN_SELECTED_TILE);
-      events_->SetFieldString(
-          this, FID_FORGOT_PASSWORD_LINK,
-          GetStringResource(IDS_FORGOT_PASSWORD_LINK_BASE).c_str());
+      // Request force password change wouldn't work on a domain joined
+      // machine as it requires domain admin role privileges to communicate
+      // with the domain controller whereas GCPW only has SYSTEM privilege.
+      if (!OSUserManager::Get()->IsUserDomainJoined(get_sid().m_str)) {
+        events_->SetFieldState(this, FID_FORGOT_PASSWORD_LINK,
+                               CPFS_DISPLAY_IN_SELECTED_TILE);
+        events_->SetFieldString(
+            this, FID_FORGOT_PASSWORD_LINK,
+            GetStringResource(IDS_FORGOT_PASSWORD_LINK_BASE).c_str());
+      }
       events_->SetFieldInteractiveState(this, FID_CURRENT_PASSWORD_FIELD,
                                         CPFIS_FOCUSED);
       events_->SetFieldSubmitButton(this, FID_SUBMIT,
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_am.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_am.xtb
index 239f5b2..42fc0e04 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_am.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_am.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">ይቅርታ፣ የእርስዎ የWindows ይለፍ ቃል ሊረጋገጥ አልቻለም። እባክዎ እንደገና ይሞክሩ።</translation>
 <translation id="3306357053520292004">በዚህ ኮምፒውተር ላይ ያለ ተጠቃሚ አስቀድሞ ይህን መለያ በመጠቀም ታክሏል። እባክዎ በተለየ መለያ ይግቡ።</translation>
 <translation id="369030246015333661">የእርስዎ መለያ ተቆልፏል። እባክዎ የሥርዓት አስተዳዳሪን ያነጋግሩ።</translation>
+<translation id="3968372833844047539">Gsuite Enterprise ተጠቃሚዎች ብቻ በመለያ እንዲገቡ ይፈቀድላቸዋል።</translation>
 <translation id="4057329986137569701">አንድ ውስጣዊ ስህተት ተከስቷል።</translation>
+<translation id="4267670563222825190">ምንም የጎራ ተጠቃሚ ለእርስዎ መለያ ሊገኝ አልተቻለም። እባክዎ አስተዳዳሪዎን ያነጋግሩ።</translation>
 <translation id="4300229033992784001">የመለያዎ ይለፍ ቅቃል ተቀይሯል። የWindows መለያዎን ከስራ መለያዎ ጋር ለማሳመር እባክዎ የአሁኑ የWindows ይለፍ ቃልዎን ያስገቡ።</translation>
 <translation id="4706454071748629324">አዲስ ተጠቃሚን ማከል አልተቻለም። ይህ ኮምፒውተር የስራ መለያን በመጠቀም አንድ ተጠቃሚ ብቻ እንዲፈጠር ነው የሚፈቅደው።</translation>
 <translation id="6292766200512304540">ተጠቃሚ ከስራ መለያ ተፈጥሯል</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
index 688dde9..a3fdd56 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">‏عذرًا، ولكن لا يمكن التحقُّق من كلمة مرور Windows. يُرجى إعادة المحاولة.</translation>
 <translation id="3306357053520292004">سبق وتمت إضافة مستخدم على جهاز الكمبيوتر هذا باستخدام هذا الحساب. يُرجى تسجيل الدخول باستخدام حساب آخر.</translation>
 <translation id="369030246015333661">تم قفل حسابك. يُرجى التواصل مع مشرف النظام.</translation>
+<translation id="3968372833844047539">‏لا يمكن إلا لمستخدمي "G Suite للمؤسسات" بتسجيل الدخول</translation>
 <translation id="4057329986137569701">حدث خطأ داخلي.</translation>
+<translation id="4267670563222825190">يتعذّر العثور على أي مستخدم نطاق في حسابك. يُرجى التواصل مع المشرف.</translation>
 <translation id="4300229033992784001">‏تم تغيير كلمة مرور حسابك. يُرجى إدخال كلمة مرور حساب Windows الحالي من أجل مزامنة حسابك على Windows مع حساب العمل.</translation>
 <translation id="4706454071748629324">تعذَّرت إضافة مستخدم جديد. يسمح جهاز الكمبيوتر هذا بإنشاء مستخدم واحد فقط باستخدام حساب عمل.</translation>
 <translation id="6292766200512304540">مستخدم تم إنشاؤه من حساب عمل</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb
index cf37009..428c40d5 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">За съжаление, паролата ви за Windows не можа да бъде потвърдена. Моля, опитайте отново.</translation>
 <translation id="3306357053520292004">Потребител на този компютър вече е добавен посредством същия профил. Моля, влезте с друг профил.</translation>
 <translation id="369030246015333661">Профилът ви е заключен. Моля, свържете се със системния администратор.</translation>
+<translation id="3968372833844047539">Входът е разрешен само за потребители на G Suite Enterprise.</translation>
 <translation id="4057329986137569701">Възникна вътрешна грешка.</translation>
+<translation id="4267670563222825190">Не е намерен потребител на домейна за профила ви. Моля, обърнете се към администратора си.</translation>
 <translation id="4300229033992784001">Паролата за профила ви е променена. Моля, въведете текущата си парола за Windows, за да синхронизирате акаунта си в Windows със служебния си профил.</translation>
 <translation id="4706454071748629324">Добавянето на нов потребител не бе успешно. Този компютър позволява само един потребител да бъде създаден посредством служебен профил.</translation>
 <translation id="6292766200512304540">Потребителят е създаден от служебен профил</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
index b0d2d617..11bbf82 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">আপনার Windows-এর পাসওয়ার্ড যাচাই করা যায়নি। আবার চেষ্টা করুন।</translation>
 <translation id="3306357053520292004">এই অ্যাকাউন্ট ব্যবহার করে আগেই এই কম্পিউটারের একজন ব্যবহারকারী যোগ করা হয়েছে। অন্য একটি অ্যাকাউন্ট দিয়ে সাইন-ইন করুন।</translation>
 <translation id="369030246015333661">আপনার অ্যাকাউন্ট লক হয়ে গেছে। সিস্টেম অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
+<translation id="3968372833844047539">G Suite এন্টারপ্রাইজ ব্যবহারকারীরাই কেবলমাত্র লগ-ইন করতে পারবেন।</translation>
 <translation id="4057329986137569701">একটি অভ্যন্তরীণ সমস্যা হয়েছে।</translation>
+<translation id="4267670563222825190">আপনার অ্যাকাউন্টের জন্য কোনও ডোমেন ব্যবহারকারী খুঁজে পাওয়া যায়নি। আপনার অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
 <translation id="4300229033992784001">আপনার অ্যাকাউন্টের পাসওয়ার্ড পরিবর্তন হয়েছে। আপনার Windows অ্যাকাউন্টের সাথে কাজের অ্যাকাউন্ট সিঙ্ক করতে আপনার বর্তমান Windows পাসওয়ার্ডটি লিখুন।</translation>
 <translation id="4706454071748629324">নতুন ব্যবহারকারী যোগ করা যায়নি। এই কম্পিউটার কাজের অ্যাকাউন্ট ব্যবহার করে শুধুমাত্র একজন ব্যবহারকারীর প্রোফাইল তৈরি করতে দেয়।</translation>
 <translation id="6292766200512304540">কাজের অ্যাকাউন্ট থেকে ব্যবহারকারী তৈরি করা হয়েছে</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ca.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ca.xtb
index fd164f75..e9c29d4 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ca.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ca.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">No s'ha pogut verificar la contrasenya de Windows. Torna-ho a provar.</translation>
 <translation id="3306357053520292004">Ja s'ha afegit un usuari a l'ordinador amb aquest compte. Inicia la sessió amb un altre compte.</translation>
 <translation id="369030246015333661">S'ha bloquejat el compte. Contacta amb un administrador del sistema.</translation>
+<translation id="3968372833844047539">Només poden iniciar la sessió els usuaris de G Suite Enterprise.</translation>
 <translation id="4057329986137569701">S'ha produït un error intern.</translation>
+<translation id="4267670563222825190">No s'ha trobat cap usuari del domini per al teu compte. Contacta amb l'administrador.</translation>
 <translation id="4300229033992784001">La contrasenya del compte ha canviat. Introdueix la contrasenya actual de Windows per sincronitzar el compte de Windows amb el de la feina.</translation>
 <translation id="4706454071748629324">No s'ha pogut afegir un usuari nou. En aquest ordinador només es pot crear un usuari amb un compte de la feina.</translation>
 <translation id="6292766200512304540">Usuari creat amb un compte de la feina</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb
index 1a88786..10385a1 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Litujeme, heslo systému Windows se nepodařilo ověřit. Zkuste to znovu.</translation>
 <translation id="3306357053520292004">Pomocí tohoto účtu již byl do tohoto počítače uživatel přidán. Přihlaste se pomocí jiného účtu.</translation>
 <translation id="369030246015333661">Váš účet byl uzamčen. Kontaktujte administrátora systému.</translation>
+<translation id="3968372833844047539">Přihlásit se smějí pouze uživatelé G Suite Enterprise.</translation>
 <translation id="4057329986137569701">Došlo k interní chybě.</translation>
+<translation id="4267670563222825190">Pro váš účet nebyl nalezen žádný doménový uživatel. Obraťte se na administrátora.</translation>
 <translation id="4300229033992784001">Heslo vašeho účtu se změnilo. Chcete-li účet Windows synchronizovat se svým pracovním účtem, zadejte své aktuální heslo pro Windows.</translation>
 <translation id="4706454071748629324">Přidání nového uživatele se nezdařilo. Na tomto počítači lze pomocí pracovního účtu vytvořit jen jednoho uživatele.</translation>
 <translation id="6292766200512304540">Uživatel vytvořený z pracovního účtu</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_da.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_da.xtb
index 44a6d78..e9e19dab 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_da.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_da.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Din Windows-adgangskode kunne desværre ikke bekræftes. Prøv igen.</translation>
 <translation id="3306357053520292004">Der er allerede tilføjet en bruger ved hjælp af denne konto på denne computer. Log ind med en anden konto.</translation>
 <translation id="369030246015333661">Din konto er blevet låst. Kontakt en systemadministrator.</translation>
+<translation id="3968372833844047539">Kun G Suite Enterprise-brugere har tilladelse til at logge ind.</translation>
 <translation id="4057329986137569701">Der opstod en intern fejl.</translation>
+<translation id="4267670563222825190">Der blev ikke fundet nogen domænebruger for din konto. Kontakt din administrator.</translation>
 <translation id="4300229033992784001">Adgangskoden til din konto er ændret. Angiv din nuværende Windows-adgangskode for at synkronisere din Windows-konto med din arbejdskonto.</translation>
 <translation id="4706454071748629324">Det var ikke muligt at tilføje en ny bruger. Denne computer giver kun mulighed for at oprette én bruger med en arbejdskonto.</translation>
 <translation id="6292766200512304540">Bruger, der er oprettet fra en arbejdskonto</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_de.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_de.xtb
index ca3ae0a..f92cec1 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_de.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_de.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Ihr Windows-Passwort konnte nicht überprüft werden. Versuchen Sie es noch einmal.</translation>
 <translation id="3306357053520292004">Ein Nutzer dieses Computers wurde bereits über dieses Konto hinzugefügt. Bitte melden Sie sich mit einem anderen Konto an.</translation>
 <translation id="369030246015333661">Ihr Konto wurde gesperrt. Bitte setzen Sie sich mit einem Systemadministrator in Verbindung.</translation>
+<translation id="3968372833844047539">Nur G Suite Enterprise-Nutzer dürfen sich anmelden.</translation>
 <translation id="4057329986137569701">Ein interner Fehler ist aufgetreten.</translation>
+<translation id="4267670563222825190">Für Ihr Konto wurde kein Domainnutzer gefunden. Bitte wenden Sie sich an Ihren Administrator.</translation>
 <translation id="4300229033992784001">Das Passwort für Ihr Konto wurde geändert. Geben Sie Ihr aktuelles Windows-Passwort ein, um Ihr Windows-Konto mit Ihrem Arbeitskonto zu synchronisieren.</translation>
 <translation id="4706454071748629324">Es konnte kein neuer Nutzer hinzugefügt werden. Auf diesem Computer kann nur ein Nutzer mit einem Arbeitskonto erstellt werden.</translation>
 <translation id="6292766200512304540">Über ein Arbeitskonto erstellter Nutzer</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_el.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_el.xtb
index 2b237316..b038da2 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_el.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_el.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Δυστυχώς, δεν ήταν δυνατή η επαλήθευση του κωδικού πρόσβασης των Windows. Δοκιμάστε ξανά.</translation>
 <translation id="3306357053520292004">Ένας χρήστης σε αυτόν τον υπολογιστή προστέθηκε ήδη χρησιμοποιώντας αυτόν τον λογαριασμό. Συνδεθείτε με άλλον λογαριασμό.</translation>
 <translation id="369030246015333661">Ο λογαριασμός σας έχει κλειδωθεί. Επικοινωνήστε με τον διαχειριστή του συστήματός σας.</translation>
+<translation id="3968372833844047539">Η σύνδεση επιτρέπεται μόνο στους χρήστες του Gsuite Enterprise.</translation>
 <translation id="4057329986137569701">Προέκυψε εσωτερικό σφάλμα.</translation>
+<translation id="4267670563222825190">Δεν βρέθηκε χρήστης τομέα για τον λογαριασμό σας. Επικοινωνήστε με τον διαχειριστή.</translation>
 <translation id="4300229033992784001">Ο κωδικός πρόσβασης του λογαριασμού σας άλλαξε. Εισαγάγετε τον τρέχοντα κωδικό πρόσβασης των Windows προκειμένου να συγχρονίσετε τον λογαριασμό σας Windows με τον λογαριασμό εργασίας σας.</translation>
 <translation id="4706454071748629324">Η προσθήκη του νέου χρήστη απέτυχε. Αυτός ο υπολογιστής επιτρέπει τη δημιουργία μόνο ενός χρήστη με τη χρήση λογαριασμού εργασίας.</translation>
 <translation id="6292766200512304540">Ο χρήστης δημιουργήθηκε από έναν λογαριασμό εργασίας</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_en-GB.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_en-GB.xtb
index 855f204..b9f8014 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_en-GB.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_en-GB.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Sorry, your Windows password couldn't be verified. Please try again.</translation>
 <translation id="3306357053520292004">A user on this computer was already added using this account. Please sign in with a different account.</translation>
 <translation id="369030246015333661">Your account has been locked. Please contact a system administrator.</translation>
+<translation id="3968372833844047539">Only Gsuite Enterprise users are allowed to log in.</translation>
 <translation id="4057329986137569701">An internal error occurred.</translation>
+<translation id="4267670563222825190">No domain user could be found for your account. Please contact your administrator.</translation>
 <translation id="4300229033992784001">Your account password has changed. Please enter your current Windows password in order to sync your Windows account with your work account.</translation>
 <translation id="4706454071748629324">Failed to add a new user. This computer only allows one user to be created using a work account.</translation>
 <translation id="6292766200512304540">User created from a work account</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb
index e5d9a4c..6d0d2de6 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">No es posible verificar tu contraseña de Windows. Vuelve a intentarlo.</translation>
 <translation id="3306357053520292004">Ya se agregó un usuario en esta computadora que usa esta cuenta. Accede con una diferente.</translation>
 <translation id="369030246015333661">Se bloqueó tu cuenta. Comunícate con un administrador del sistema.</translation>
+<translation id="3968372833844047539">Solo pueden acceder los usuarios de G Suite Enterprise.</translation>
 <translation id="4057329986137569701">Ocurrió un error interno.</translation>
+<translation id="4267670563222825190">No se encontró ningún usuario de dominio para tu cuenta. Ponte en contacto con el administrador.</translation>
 <translation id="4300229033992784001">Se cambió la contraseña de tu cuenta. Ingresa tu contraseña de Windows actual para sincronizar tu cuenta de Windows con tu cuenta de trabajo.</translation>
 <translation id="4706454071748629324">No se pudo agregar un usuario nuevo. Esta computadora solo permite crear un usuario con una cuenta de trabajo.</translation>
 <translation id="6292766200512304540">Usuario creado a partir de una cuenta de trabajo</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb
index 1a000e8..9765d65 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">No se ha podido verificar tu contraseña de Windows. Vuelve a intentarlo.</translation>
 <translation id="3306357053520292004">Ya se ha registrado otro usuario en este ordenador con esta cuenta. Inicia sesión con otra cuenta.</translation>
 <translation id="369030246015333661">Tu cuenta se ha bloqueado. Ponte en contacto con el administrador del sistema.</translation>
+<translation id="3968372833844047539">Solo pueden iniciar sesión los usuarios de empresa de G Suite.</translation>
 <translation id="4057329986137569701">Se ha producido un error interno.</translation>
+<translation id="4267670563222825190">No se ha encontrado ningún usuario de dominio para tu cuenta. Ponte en contacto con tu administrador.</translation>
 <translation id="4300229033992784001">La contraseña de tu cuenta ha cambiado. Introduce tu contraseña de Windows actual para sincronizar tu cuenta de Windows con la de trabajo.</translation>
 <translation id="4706454071748629324">No se ha podido añadir un nuevo usuario. En este ordenador solo se pueden crear usuarios con una cuenta de trabajo.</translation>
 <translation id="6292766200512304540">Usuario creado desde una cuenta de trabajo</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_et.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_et.xtb
index 3fcdc52..f86455b3 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_et.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_et.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Teie Windowsi parooli ei õnnestunud kinnitada. Proovige uuesti.</translation>
 <translation id="3306357053520292004">Arvutis lisati juba selle kontoga kasutaja. Logige sisse teise kontoga.</translation>
 <translation id="369030246015333661">Teie konto on lukustatud. Võtke ühendust süsteemiadministraatoriga.</translation>
+<translation id="3968372833844047539">Sisse saavad logida ainult Gsuite Enterprise'i kasutajad.</translation>
 <translation id="4057329986137569701">Ilmnes sisemine viga.</translation>
+<translation id="4267670563222825190">Teie konto puhul ühtegi domeenikasutajat ei leitud. Võtke ühendust administraatoriga.</translation>
 <translation id="4300229033992784001">Teie konto parool on muutunud. Sisestage oma praegune Windowsi parool, et sünkroonida Windowsi konto töökontoga.</translation>
 <translation id="4706454071748629324">Uue kasutaja lisamine nurjus. Arvuti lubab töökontoga luua ainult ühe kasutada.</translation>
 <translation id="6292766200512304540">Kasutaja loodi töökonto alusel</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb
index 9be63fc0..f781799 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">‏متأسفیم، گذرواژه Windows تأیید نشد. لطفاً دوباره امتحان کنید.</translation>
 <translation id="3306357053520292004">کاربری در این رایانه قبلاً با استفاده از این حساب اضافه شده است. لطفاً با حساب دیگری به سیستم وارد شوید.</translation>
 <translation id="369030246015333661">حساب شما قفل شده است. لطفاً با سرپرست سیستم تماس بگیرید.</translation>
+<translation id="3968372833844047539">‏تنها کاربران سازمانی Gsuite مجازند به سیستم وارد شوند.</translation>
 <translation id="4057329986137569701">خطای داخلی روی داد.</translation>
+<translation id="4267670563222825190">کاربر دامنه‌ای برای حسابتان پیدا نشد. لطفاً با سرپرست خود تماس بگیرید.</translation>
 <translation id="4300229033992784001">‏گذرواژه حسابتان تغییر کرد. لطفاً برای همگام‌سازی حساب Windows با حساب کاری خود، گذرواژه فعلی Windows را وارد کنید.</translation>
 <translation id="4706454071748629324">کاربر جدید اضافه نشد. این رایانه فقط اجازه می‌دهد یک کاربر با استفاده از حساب کاری ایجاد شود.</translation>
 <translation id="6292766200512304540">ایجادشده توسط کاربر از حساب کاری</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fi.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fi.xtb
index 80a1b49..696c9389 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fi.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fi.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Windows-salasanasi vahvistaminen epäonnistui. Yritä uudelleen.</translation>
 <translation id="3306357053520292004">Tämän tietokoneen käyttäjä on jo lisätty tällä tilillä. Kirjaudu sisään toisella tilillä.</translation>
 <translation id="369030246015333661">Tilisi on lukittu. Ota yhteyttä järjestelmänvalvojaan.</translation>
+<translation id="3968372833844047539">Vain Gsuite Enterprise ‑käyttäjät voivat kirjautua sisään.</translation>
 <translation id="4057329986137569701">Tapahtui sisäinen virhe.</translation>
+<translation id="4267670563222825190">Verkkotunnuksen käyttäjää ei löytynyt tililtäsi. Ota yhteyttä järjestelmänvalvojaasi.</translation>
 <translation id="4300229033992784001">Tilisi salasana on muuttunut. Synkronoi Windows- ja työtilisi lisäämällä nykyinen Windows-salasanasi.</translation>
 <translation id="4706454071748629324">Uuden käyttäjän lisääminen epäonnistui. Tämä tietokone sallii vain yhden käyttäjän luomisen työtilillä.</translation>
 <translation id="6292766200512304540">Käyttäjä luotu työtilillä</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb
index 45cf3e37..8a7bb22 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Paumanhin, hindi na-verify ang iyong password sa Winows. Pakisubukang muli.</translation>
 <translation id="3306357053520292004">May naidagdag nang user sa computer na ito gamit ang account na ito. Mag-sign in gamit ang ibang account.</translation>
 <translation id="369030246015333661">Na-lock ang iyong account. Makipag-ugnayan sa isang system administrator.</translation>
+<translation id="3968372833844047539">Mga user lang ng Gsuite Enterprise ang pinapayagang mag-log in.</translation>
 <translation id="4057329986137569701">Nagkaroon ng internal na error.</translation>
+<translation id="4267670563222825190">Walang makitang user ng Domain para sa iyong account. Makipag-ugnayan sa iyong administrator.</translation>
 <translation id="4300229033992784001">Nagbago ang password ng iyong account. Pakilagay ang iyong kasalukuyang password sa Windows para i-sync ang Windows account mo sa iyong account sa trabaho.</translation>
 <translation id="4706454071748629324">Hindi nakapagdagdag ng bagong user. Isang user lang ang pinapahintulutang magawa ng computer na ito gamit ang isang account sa trabaho.</translation>
 <translation id="6292766200512304540">User na nagawa mula sa isang account sa trabaho</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb
index 608fa212..5b4a3318 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Impossible de valider votre mot de passe Windows. Veuillez réessayer.</translation>
 <translation id="3306357053520292004">Un utilisateur de cet ordinateur a déjà été ajouté à l'aide de ce compte. Veuillez vous connecter avec un autre compte.</translation>
 <translation id="369030246015333661">Votre compte a été verrouillé. Veuillez contacter un administrateur système.</translation>
+<translation id="3968372833844047539">Seuls les utilisateurs de G Suite Enterprise sont autorisés à se connecter.</translation>
 <translation id="4057329986137569701">Une erreur interne s'est produite.</translation>
+<translation id="4267670563222825190">Impossible de trouver un utilisateur du domaine pour votre compte. Veuillez contacter votre administrateur.</translation>
 <translation id="4300229033992784001">Le mot de passe de votre compte a été modifié. Veuillez saisir votre mot de passe Windows actuel afin de synchroniser votre compte Windows avec votre compte professionnel.</translation>
 <translation id="4706454071748629324">Échec de l'ajout d'un nouvel utilisateur. Ce ordinateur n'autorise que la création d'un utilisateur avec un compte professionnel.</translation>
 <translation id="6292766200512304540">Utilisateur créé avec un compte professionnel</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
index c392cc2..be9e645f 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">માફ કરશો, તમારો Windows પાસવર્ડ ચકાસી શકાયો નથી. કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
 <translation id="3306357053520292004">આ કમ્પ્યુટર પરના વપરાશકર્તાને આ એકાઉન્ટનો ઉપયોગ કરીને પહેલેથી ઉમેરવામાં આવેલા છે. કૃપા કરીને કોઈ અલગ એકાઉન્ટ વડે સાઇન ઇન કરો.</translation>
 <translation id="369030246015333661">તમારું એકાઉન્ટ લૉક કરવામાં આવ્યું છે. કૃપા કરીને સિસ્ટમ વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
+<translation id="3968372833844047539">માત્ર Gsuite એન્ટરપ્રાઇઝ વપરાશકર્તાઓ જ લૉગ ઇન કરવાની મંજૂરી ધરાવે છે.</translation>
 <translation id="4057329986137569701">કોઈ આંતરિક ભૂલ આવી.</translation>
+<translation id="4267670563222825190">તમારા એકાઉન્ટ માટે કોઈ ડોમેન. વપરાશકર્તા શોધી શક્યાં નથી. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="4300229033992784001">તમારા એકાઉન્ટનો પાસવર્ડ બદલાઈ ગયો છે. તમારા Windows એકાઉન્ટ સાથે તમારા ઑફિસના એકાઉન્ટને સિંક કરવા માટે કૃપા કરીને તમારો હાલનો Windows પાસવર્ડ દાખલ કરો.</translation>
 <translation id="4706454071748629324">નવા વપરાશકર્તા ઉમેરવામાં નિષ્ફળ થયાં. આ કમ્પ્યુટર ઑફિસના એકાઉન્ટનો ઉપયોગ કરીને માત્ર એક વપરાશકર્તા બનાવવાની મંજૂરી આપે છે.</translation>
 <translation id="6292766200512304540">ઑફિસના એકાઉન્ટ પરથી વપરાશકર્તા બનાવ્યા</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_hi.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_hi.xtb
index 6e54d6f..c2046dc 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_hi.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_hi.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">माफ़ करें, आपके Windows पासवर्ड की पुष्टि नहीं की जा सकी. कृपया फिर से कोशिश करें.</translation>
 <translation id="3306357053520292004">इस कंप्यूटर का इस्तेमाल करने वाला कोई व्यक्ति इस खाते का इस्तेमाल करके पहले ही जोड़ा जा चुका है. कृपया किसी दूसरे खाते से साइन इन करें.</translation>
 <translation id="369030246015333661">आपका खाता लॉक कर दिया गया है. कृपया सिस्टम एडमिन से संपर्क करें.</translation>
+<translation id="3968372833844047539">सिर्फ़ Gsuite एंटरप्राइज़ उपयोगकर्ताओं को लॉग इन करने की अनुमति है.</translation>
 <translation id="4057329986137569701">कोई आंतरिक गड़बड़ी हुई.</translation>
+<translation id="4267670563222825190">आपके खाते के लिए कोई डोमेन उपयोगकर्ता नहीं मिला. कृपया अपने एडमिन से संपर्क करें.</translation>
 <translation id="4300229033992784001">आपके खाते का पासवर्ड बदल गया है. अपने Windows खाते को अपने काम से जुड़े खाते से सिंक करने के लिए, कृपया अपना मौजूदा Windows पासवर्ड डालें.</translation>
 <translation id="4706454071748629324">नया उपयोगकर्ता नहीं जोड़ा जा सका. यह कंप्यूटर सिर्फ़ एक उपयोगकर्ता को काम से जुड़े खाता बनाने की अनुमति देता है.</translation>
 <translation id="6292766200512304540">काम से जुड़े खाते से बनाया गया उपयोगकर्ता</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_hr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_hr.xtb
index a08b55c..7ab2f26c 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_hr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_hr.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Žao nam je, nije bilo moguće potvrditi vašu zaporku za Windows. Pokušajte ponovo.</translation>
 <translation id="3306357053520292004">Na ovom je računalu već dodan korisnik pomoću tog. Prijavite se nekim drugim računom.</translation>
 <translation id="369030246015333661">Vaš je račun zaključan. Obratite se administratoru sustava.</translation>
+<translation id="3968372833844047539">Prijava je dopuštena samo poslovnim korisnicima Gsuitea.</translation>
 <translation id="4057329986137569701">Došlo je do interne pogreške.</translation>
+<translation id="4267670563222825190">Za vaš račun nije pronađen nijedan korisnik domene. Obratite se administratoru.</translation>
 <translation id="4300229033992784001">Promijenjena je zaporka vašeg računa. Unesite svoju trenutačnu zaporku za Windows kako biste sinkronizirali svoj Windows račun s radnim računom.</translation>
 <translation id="4706454071748629324">Dodavanje novog korisnika nije uspjelo. Ovo računalo dopušta izradu samo jednog korisnika s radnim računom.</translation>
 <translation id="6292766200512304540">Korisnik izrađen iz radnog računa</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_hu.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_hu.xtb
index b2349c4..27c4a0a 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_hu.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_hu.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Sajnos nem sikerült ellenőrizni Windows-jelszavát. Próbálja újra.</translation>
 <translation id="3306357053520292004">A számítógép egyik felhasználója már hozzá lett adva ezzel a fiókkal. Jelentkezzen be másik fiókkal.</translation>
 <translation id="369030246015333661">A fiók zárolva van. Forduljon a rendszergazdához.</translation>
+<translation id="3968372833844047539">Csak G Suite Enterprise-felhasználók jelentkezhetnek be.</translation>
 <translation id="4057329986137569701">Belső hiba történt.</translation>
+<translation id="4267670563222825190">Nem található domainfelhasználó a fiókjához. Forduljon az adminisztrátorhoz.</translation>
 <translation id="4300229033992784001">A fiók jelszava megváltozott. Adja meg jelenlegi Windows-jelszavát Windows-fiókjának és munkahelyi fiókjának a szinkronizálásához.</translation>
 <translation id="4706454071748629324">Nem sikerült az új felhasználó hozzáadása. Ez a számítógép csak egy felhasználó létrehozását engedélyezi munkahelyi fiók használatával.</translation>
 <translation id="6292766200512304540">Munkahelyi fiókból létrehozott felhasználó</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb
index 23754b7..cd9991d 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Maaf, sandi Windows Anda tidak dapat diverifikasi. Harap coba lagi.</translation>
 <translation id="3306357053520292004">Pengguna di komputer ini telah ditambahkan menggunakan akun ini. Harap login menggunakan akun lain.</translation>
 <translation id="369030246015333661">Akun Anda telah dikunci. Harap hubungi administrator sistem Anda.</translation>
+<translation id="3968372833844047539">Hanya pengguna G Suite Enterprise yang diizinkan login.</translation>
 <translation id="4057329986137569701">Terjadi error internal.</translation>
+<translation id="4267670563222825190">Tidak ada pengguna Domain yang dapat ditemukan untuk akun Anda. Harap hubungi administrator Anda.</translation>
 <translation id="4300229033992784001">Sandi akun Anda telah diubah. Harap masukkan sandi Windows saat ini untuk menyinkronkan akun Windows dengan akun kerja Anda.</translation>
 <translation id="4706454071748629324">Gagal menambahkan pengguna baru. Komputer ini hanya mengizinkan pembuatan satu pengguna yang menggunakan akun kerja.</translation>
 <translation id="6292766200512304540">Pengguna dibuat dari akun kerja</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_it.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_it.xtb
index f437260..9fa2834 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_it.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_it.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Impossibile verificare la tua password Windows. Riprova.</translation>
 <translation id="3306357053520292004">Su questo computer è stato già aggiunto un utente usando questo account. Accedi con un altro account.</translation>
 <translation id="369030246015333661">Questo account è stato bloccato. Contatta un amministratore di sistema.</translation>
+<translation id="3968372833844047539">Solo gli utenti di G Suite Enterprise sono autorizzati ad accedere.</translation>
 <translation id="4057329986137569701">Errore interno.</translation>
+<translation id="4267670563222825190">Nessun Dominio utente trovato per il tuo account. Contatta l'amministratore.</translation>
 <translation id="4300229033992784001">La password del tuo account è cambiata. Inserisci la tua attuale password Windows per sincronizzare l'account Windows con l'account di lavoro.</translation>
 <translation id="4706454071748629324">Aggiunta di un nuovo utente non riuscita. Su questo computer è possibile creare un solo utente con un account di lavoro.</translation>
 <translation id="6292766200512304540">Utente creato da un account di lavoro</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_iw.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_iw.xtb
index 58284692..927e533 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_iw.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_iw.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">‏מצטערים, לא ניתן לאמת את הסיסמה שלך ל-Windows. יש לנסות שוב.</translation>
 <translation id="3306357053520292004">משתמש במחשב הזה כבר נוסף באמצעות חשבון זה. יש להיכנס באמצעות חשבון אחר.</translation>
 <translation id="369030246015333661">החשבון שלך ננעל. צריך לפנות אל מנהל מערכת.</translation>
+<translation id="3968372833844047539">‏רק משתמשי G Suite Enterprise מורשים להתחבר.</translation>
 <translation id="4057329986137569701">אירעה שגיאה פנימית.</translation>
+<translation id="4267670563222825190">לא ניתן היה למצוא משתמש דומיין בשביל החשבון שלך. עליך לפנות למנהל המערכת.</translation>
 <translation id="4300229033992784001">‏הסיסמה לחשבון שלך השתנתה. יש להזין את הסיסמה הנוכחית של Windows כדי לסנכרן את חשבון Windows עם החשבון שלך לצורכי עבודה.</translation>
 <translation id="4706454071748629324">הוספת המשתמש החדש נכשלה. המחשב הזה מאפשר ליצור רק משתמש אחד באמצעות חשבון לצורכי עבודה.</translation>
 <translation id="6292766200512304540">המשתמש נוצר באמצעות חשבון לצורכי עבודה</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb
index 658110a2..094cc5dd 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Windows のパスワードを確認できませんでした。もう一度お試しください。</translation>
 <translation id="3306357053520292004">このパソコンのユーザーはこのアカウントですでに追加されています。別のアカウントでログインしてください。</translation>
 <translation id="369030246015333661">アカウントはロックされています。システム管理者にお問い合わせください。</translation>
+<translation id="3968372833844047539">ログインできるのは G Suite Enterprise のユーザーのみです。</translation>
 <translation id="4057329986137569701">内部エラーが発生しました。</translation>
+<translation id="4267670563222825190">ドメイン ユーザーがお使いのアカウントで見つかりませんでした。管理者にお問い合わせください。</translation>
 <translation id="4300229033992784001">アカウントのパスワードが変更されました。Windows アカウントと仕事用アカウントを同期するには、現在の Windows のパスワードを入力してください。</translation>
 <translation id="4706454071748629324">新しいユーザーを追加できませんでした。このパソコンで仕事用アカウントを使用して作成できるユーザーは 1 人のみです。</translation>
 <translation id="6292766200512304540">仕事用アカウントから作成されたユーザー</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
index 85f478c6..63229841 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ Windows ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="3306357053520292004">ಈ ಖಾತೆಯನ್ನು ಬಳಸಿ, ಈ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿನ ಒಬ್ಬ ಬಳಕೆದಾರರನ್ನು ಈಗಾಗಲೇ ಸೇರಿಸಲಾಗಿದೆ ಬೇರೊಂದು ಖಾತೆಯನ್ನು ಬಳಸಿ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
 <translation id="369030246015333661">ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಲಾಕ್ ಮಾಡಲಾಗಿದೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಿಸ್ಟಂ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
+<translation id="3968372833844047539">Gsuite ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರರು ಮಾತ್ರ ಲಾಗಿನ್ ಮಾಡಬಹುದು.</translation>
 <translation id="4057329986137569701">ಆಂತರಿಕ ದೋಷ ಸಂಭವಿಸಿದೆ.</translation>
+<translation id="4267670563222825190">ನಿಮ್ಮ ಖಾತೆಗೆ ಸಂಬಂಧಿಸಿದ ಯಾವುದೇ ಡೊಮೇನ್ ಬಳಕೆದಾರರು ಕಂಡುಬಂದಿಲ್ಲ. ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="4300229033992784001">ನಿಮ್ಮ ಖಾತೆಯ ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಗಿದೆ. ನಿಮ್ಮ Windows ಖಾತೆಯನ್ನು ನಿಮ್ಮ ಕೆಲಸದ ಖಾತೆಯೊಂದಿಗೆ ಸಿಂಕ್ ಮಾಡುವುದಕ್ಕಾಗಿ, ನಿಮ್ಮ ಪ್ರಸ್ತುತ Windows ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿ.</translation>
 <translation id="4706454071748629324">ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಲು ವಿಫಲವಾಗಿದೆ. ಕೆಲಸದ ಖಾತೆಯನ್ನು ಬಳಸಿ, ಒರ್ವ ಬಳಕೆದಾರರನ್ನು ಮಾತ್ರ ರಚಿಸಲು ಈ ಕಂಪ್ಯೂಟರ್ ಅನುಮತಿ ನೀಡುತ್ತದೆ.</translation>
 <translation id="6292766200512304540">ಕೆಲಸದ ಖಾತೆಯ ಮೂಲಕ ಬಳಕೆದಾರನನ್ನು ರಚಿಸಲಾಗಿದೆ</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb
index 20a4864..9530487 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">죄송합니다. Windows 비밀번호를 확인할 수 없습니다. 다시 시도해 주세요.</translation>
 <translation id="3306357053520292004">이 컴퓨터의 사용자가 이미 이 계정으로 추가되었습니다. 다른 계정으로 로그인해 주세요.</translation>
 <translation id="369030246015333661">계정이 잠겼습니다. 시스템 관리자에게 문의해 보세요.</translation>
+<translation id="3968372833844047539">G Suite Enterprise 사용자만 로그인할 수 있습니다.</translation>
 <translation id="4057329986137569701">내부 오류가 발생했습니다.</translation>
+<translation id="4267670563222825190">계정에 도메인 사용자가 없습니다. 관리자에게 문의하시기 바랍니다.</translation>
 <translation id="4300229033992784001">계정 비밀번호가 변경되었습니다. Windows 계정과 직장 계정을 동기화하려면 현재 Windows 비밀번호를 입력해 주세요.</translation>
 <translation id="4706454071748629324">신규 사용자를 추가하지 못했습니다. 이 컴퓨터에서는 직장 계정마다 사용자 1명만 만들 수 있습니다.</translation>
 <translation id="6292766200512304540">직장 계정으로 생성된 사용자</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_lt.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_lt.xtb
index 3cbb268..51e3294 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_lt.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_lt.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Deja, nepavyko patvirtinti „Windows“ slaptažodžio. Bandykite dar kartą.</translation>
 <translation id="3306357053520292004">Naudotojas šiame kompiuteryje jau pridėtas naudojant šią paskyrą. Prisijunkite naudodami kitą paskyrą.</translation>
 <translation id="369030246015333661">Paskyra buvo užrakinta. Susisiekite su sistemos administratoriumi.</translation>
+<translation id="3968372833844047539">Prisijungti gali tik „G Suite Enterprise“ naudotojai.</translation>
 <translation id="4057329986137569701">Įvyko vidinė klaida.</translation>
+<translation id="4267670563222825190">Nerasta nė vieno jūsų paskyros domeno naudotojo. Susisiekite su administratoriumi.</translation>
 <translation id="4300229033992784001">Jūsų paskyros slaptažodis pakeistas. Kad galėtumėte sinchronizuoti „Windows“ paskyrą su darbo paskyra, įveskite dabartinį „Windows“ slaptažodį.</translation>
 <translation id="4706454071748629324">Nepavyko pridėti naujo naudotojo. Šiuo kompiuteriu galima sukurti tik vieną naudotoją naudojant darbo paskyrą.</translation>
 <translation id="6292766200512304540">Naudotojas sukurtas naudojant darbo paskyrą</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_lv.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_lv.xtb
index 94734ccf..3381634 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_lv.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_lv.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Diemžēl nevarēja verificēt jūsu Windows paroli. Lūdzu, mēģiniet vēlreiz.</translation>
 <translation id="3306357053520292004">Lietotājs šajā datorā jau tika pievienots, izmantojot šo kontu. Lūdzu, pierakstieties ar citu kontu.</translation>
 <translation id="369030246015333661">Jūsu konts ir bloķēts. Lūdzu, sazinieties ar sistēmas administratoru.</translation>
+<translation id="3968372833844047539">Drīkst pieteikties tikai G Suite Enterprise lietotāji.</translation>
 <translation id="4057329986137569701">Radās iekšēja kļūda.</translation>
+<translation id="4267670563222825190">Jūsu kontam nevarēja atrast nevienu domēna lietotāju. Lūdzu, sazinieties ar savu administratoru.</translation>
 <translation id="4300229033992784001">Jūsu konta parole ir mainīta. Lūdzu, ievadiet pašreizējo Windows paroli, lai sinhronizētu Windows kontu ar jūsu darba kontu.</translation>
 <translation id="4706454071748629324">Neizdevās pievienot jaunu lietotāju. Šis dators ļauj tikai vienam lietotājam veidot darba kontu.</translation>
 <translation id="6292766200512304540">Lietotājs izveidots no darba konta</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb
index 45043de4..6872213 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ml.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">ക്ഷമിക്കണം, നിങ്ങളുടെ Windows പാസ്‌വേഡ് പരിശോധിച്ചുറപ്പിക്കാനായില്ല. വീണ്ടും ശ്രമിക്കുക.</translation>
 <translation id="3306357053520292004">ഈ അക്കൗണ്ട് ഉപയോഗിച്ച് ഈ കമ്പ്യൂട്ടറിൽ ഒരു ഉപയോക്താവിനെ മുമ്പേ ചേർത്തിട്ടുണ്ട്. മറ്റൊരു അക്കൗണ്ട് ഉപയോഗിച്ച് സൈൻ ചെയ്യുക.</translation>
 <translation id="369030246015333661">നിങ്ങളുടെ അക്കൗണ്ട് ലോക്ക് ചെയ്‌തിരിക്കുന്നു. സിസ്‌റ്റം അഡ്‌മിനെ ബന്ധപ്പെടുക.</translation>
+<translation id="3968372833844047539">Gsuite എന്റർപ്രൈസ് ഉപയോക്താക്കൾക്ക് മാത്രമേ ലോഗിൻ ചെയ്യാൻ അനുമതിയുള്ളൂ.</translation>
 <translation id="4057329986137569701">ഒരു ആന്തരിക പിശക് സംഭവിച്ചു.</translation>
+<translation id="4267670563222825190">നിങ്ങളുടെ അക്കൗണ്ടിന് ഡൊമെയ്‌ൻ ഉപയോക്താവിനെയൊന്നും കണ്ടെത്താനായില്ല. നിങ്ങളുടെ അഡ്‌മിനുമായി ബന്ധപ്പെടുക.</translation>
 <translation id="4300229033992784001">നിങ്ങളുടെ അക്കൗണ്ടിൻ്റെ പാസ്‌വേഡ് മാറ്റി. Windows അക്കൗണ്ടുമായി ഔദ്യോഗിക അക്കൗണ്ട് സമന്വയിപ്പിക്കാൻ നിങ്ങളുടെ നിലവിലെ Windows പാസ്‌വേഡ് നൽകുക.</translation>
 <translation id="4706454071748629324">പുതിയ ഉപയോക്താവിനെ ചേർക്കാനായില്ല. ഒരു ഔദ്യോഗിക അക്കൗണ്ട് ഉപയോഗിച്ച് ഒരു ഉപയോക്താവിനെ സൃഷ്‌ടിക്കാൻ മാത്രമേ ഈ കമ്പ്യൂട്ടർ അനുവദിക്കൂ.</translation>
 <translation id="6292766200512304540">ഔദ്യോഗിക അക്കൗണ്ടിൽ നിന്ന് സൃഷ്‌ടിച്ച ഉപയോക്താവ്</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb
index 11850b8a..b78723b5 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_mr.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">सॉरी, तुमच्या Windows पासवर्डची पडताळणी करता आली नाही. कृपया पुन्हा प्रयत्न करा.</translation>
 <translation id="3306357053520292004">हे खाते वापरून या काँप्युटरवरील वापरकर्त्याला आधीच जोडले गेले आहे. कृपया वेगळ्या खात्याने साइन इन करा.</translation>
 <translation id="369030246015333661">तुमचे खाते लॉक केले गेले आहे. कृपया सिस्टम अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
+<translation id="3968372833844047539">फक्त GSuite एंटरप्राइझ वापरकर्त्यांना लॉगिन करण्याची अनुमती आहे.</translation>
 <translation id="4057329986137569701">अंतर्गत एरर आली.</translation>
+<translation id="4267670563222825190">तुमच्या खात्याचा कोणताही डोमन वापरकर्ता शोधू शकलो नाही. कृपया तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="4300229033992784001">तुमचा खाते पासवर्ड बदलला आहे. तुमचे Windows खाते तुमच्या ऑफिस खात्याशी सिंक करण्यासाठी कृपया तुमचा सद्य Windows पासवर्ड एंटर करा.</translation>
 <translation id="4706454071748629324">नवीन वापरकर्ता जोडता आला नाही. हा काँप्युटर ऑफिस खाते वापरून फक्त एकच वापरकर्ता तयार करू देतो.</translation>
 <translation id="6292766200512304540">ऑफिस खात्यावरून तयार केला गेलेला वापरकर्ता</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb
index b380f11..8b6aeb0 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Maaf, kata laluan Windows anda tidak dapat disahkan. Sila cuba lagi.</translation>
 <translation id="3306357053520292004">Seorang pengguna pada komputer ini sudah pun ditambahkan menggunakan akaun ini. Sila log masuk dengan akaun lain.</translation>
 <translation id="369030246015333661">Akaun anda telah dikunci. Sila hubungi pentadbir sistem.</translation>
+<translation id="3968372833844047539">Hanya pengguna Gsuite Enterprise dibenarkan untuk log masuk.</translation>
 <translation id="4057329986137569701">Ralat dalaman telah berlaku.</translation>
+<translation id="4267670563222825190">Tiada pengguna Domain ditemui untuk akaun anda. Sila hubungi pentadbir anda.</translation>
 <translation id="4300229033992784001">Kata laluan akaun anda telah berubah. Sila masukkan kata laluan Windows semasa anda untuk menyegerakkan akaun Windows anda dengan akaun kerja anda.</translation>
 <translation id="4706454071748629324">Gagal menambahkan pengguna baharu. Komputer ini hanya membenarkan satu pengguna dibuat menggunakan akaun kerja.</translation>
 <translation id="6292766200512304540">Pengguna dibuat daripada akaun kerja</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_nl.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_nl.xtb
index 2238b01..a4760c1 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_nl.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_nl.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Je Windows-wachtwoord kan niet worden geverifieerd. Probeer het opnieuw.</translation>
 <translation id="3306357053520292004">Er is al een gebruiker op deze computer toegevoegd met dit account. Log in met een ander account.</translation>
 <translation id="369030246015333661">Je account is vergrendeld. Neem contact op met een systeembeheerder.</translation>
+<translation id="3968372833844047539">Alleen G Suite Enterprise-gebruikers mogen inloggen.</translation>
 <translation id="4057329986137569701">Er is een interne fout opgetreden.</translation>
+<translation id="4267670563222825190">Er kan geen domeingebruiker worden gevonden voor je account. Neem contact op met je beheerder.</translation>
 <translation id="4300229033992784001">Het wachtwoord van je account is gewijzigd. Geef je huidige Windows-wachtwoord op om je Windows-account te synchroniseren met je werkaccount.</translation>
 <translation id="4706454071748629324">Nieuwe gebruiker toevoegen is mislukt. Op deze computer kan slechts één gebruiker worden gemaakt met een werkaccount.</translation>
 <translation id="6292766200512304540">Gebruiker gemaakt via een werkaccount</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb
index c41b1f5..debc3d1 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Beklager, men Windows-passordet ditt kunne ikke bekreftes. Prøv på nytt.</translation>
 <translation id="3306357053520292004">En bruker på denne datamaskinen er allerede lagt til med denne kontoen. Logg på med en annen konto.</translation>
 <translation id="369030246015333661">Kontoen din er låst. Kontakt en systemadministrator.</translation>
+<translation id="3968372833844047539">Kun Gsuite Enterprise-brukere har lov til å logge på.</translation>
 <translation id="4057329986137569701">Det oppsto en intern feil.</translation>
+<translation id="4267670563222825190">Fant ingen domenebruker for kontoen din. Kontakt administratoren din.</translation>
 <translation id="4300229033992784001">Passordet for kontoen din er endret. Skriv inn Windows-passordet ditt for å synkronisere Windows-kontoen og jobbkontoen din.</translation>
 <translation id="4706454071748629324">Kunne ikke legge til den nye brukeren. Denne datamaskinen tillater bare oppretting av én bruker per jobbkonto.</translation>
 <translation id="6292766200512304540">Bruker som er opprettet fra en jobbkonto</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb
index 20222d7..49cc4fa 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Nie udało się zweryfikować Twojego hasła do systemu Windows. Spróbuj ponownie.</translation>
 <translation id="3306357053520292004">Inny użytkownik komputera został już dodany za pomocą tego konta. Zaloguj się, używając innego konta.</translation>
 <translation id="369030246015333661">Twoje konto zostało zablokowane. Skontaktuj się z administratorem systemu.</translation>
+<translation id="3968372833844047539">Logować się mogą tylko użytkownicy korzystający z G Suite Enterprise.</translation>
 <translation id="4057329986137569701">Wystąpił błąd wewnętrzny.</translation>
+<translation id="4267670563222825190">Z tym kontem nie jest powiązany żaden użytkownik w domenie. Skontaktuj się z administratorem.</translation>
 <translation id="4300229033992784001">Zmieniło się hasło do Twojego konta. Aby zsynchronizować konto Windows z kontem do pracy, wpisz swoje aktualne hasło do systemu Windows.</translation>
 <translation id="4706454071748629324">Nie udało się dodać nowego użytkownika. Ten komputer zezwala na utworzenie tylko jednego użytkownika za pomocą konta do pracy.</translation>
 <translation id="6292766200512304540">Użytkownik utworzony za pomocą konta do pracy</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-BR.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-BR.xtb
index 9563de39..4687236 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-BR.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-BR.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Não foi possível verificar a senha do Windows. Tente novamente.</translation>
 <translation id="3306357053520292004">Um usuário neste computador já foi registrado com essa conta. Faça login com uma conta diferente.</translation>
 <translation id="369030246015333661">Sua conta foi bloqueada. Entre em contato com um administrador do sistema.</translation>
+<translation id="3968372833844047539">Login permitido apenas para os usuários do G Suite Enterprise.</translation>
 <translation id="4057329986137569701">Ocorreu um erro interno.</translation>
+<translation id="4267670563222825190">Nenhum usuário de domínio encontrado para sua conta. Entre em contato com seu administrador.</translation>
 <translation id="4300229033992784001">A senha da sua conta foi alterada. Informe sua senha atual do Windows para sincronizar sua conta do Windows com sua conta de trabalho.</translation>
 <translation id="4706454071748629324">Falha ao adicionar um novo usuário. Este computador só permite que um único usuário seja criado com uma conta de trabalho.</translation>
 <translation id="6292766200512304540">Usuário criado a partir de uma conta de trabalho</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-PT.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-PT.xtb
index 63db531..d481b57 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-PT.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-PT.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Lamentamos, mas não foi possível validar a sua palavra-passe do Windows. Tente novamente.</translation>
 <translation id="3306357053520292004">Já foi adicionado um utilizador neste computador com esta conta. Inicie sessão com uma conta diferente.</translation>
 <translation id="369030246015333661">A sua conta foi bloqueada. Contacte um administrador do sistema.</translation>
+<translation id="3968372833844047539">Apenas os utilizadores do G Suite Enterprise têm autorização para iniciar sessão.</translation>
 <translation id="4057329986137569701">Ocorreu um erro interno.</translation>
+<translation id="4267670563222825190">Não foi possível encontrar qualquer utilizador do domínio para a sua conta. Contacte o seu administrador.</translation>
 <translation id="4300229033992784001">A palavra-passe da sua conta foi alterada. Introduza a sua palavra-passe do Windows atual para sincronizar a conta do Windows com a sua conta profissional.</translation>
 <translation id="4706454071748629324">Falha ao adicionar um novo utilizador. Este computador apenas permite a criação de um utilizador através de uma conta profissional.</translation>
 <translation id="6292766200512304540">O utilizador foi criado a partir de uma conta profissional.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb
index 8a97f64..757e08f 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Parola pentru Windows nu a putut fi confirmată. Încearcă din nou.</translation>
 <translation id="3306357053520292004">Un utilizator de pe acest computer a fost deja adăugat cu acest cont. Conectați-vă cu un alt cont.</translation>
 <translation id="369030246015333661">Contul tău a fost blocat. Contactează un administrator de sistem.</translation>
+<translation id="3968372833844047539">Doar utilizatorii G Suite Enterprise au permisiunea de a se conecta.</translation>
 <translation id="4057329986137569701">A apărut o eroare internă.</translation>
+<translation id="4267670563222825190">Nu s-a găsit niciun utilizator de domeniu pentru contul tău. Contactează administratorul.</translation>
 <translation id="4300229033992784001">Parola contului a fost schimbată. Introdu parola Windows curentă pentru a sincroniza parola Windows cu contul de serviciu.</translation>
 <translation id="4706454071748629324">Nu s-a reușit adăugarea unui utilizator nou. Computerul permite crearea unui singur utilizator folosind un cont de serviciu.</translation>
 <translation id="6292766200512304540">Utilizatorul a fost creat dintr-un cont de serviciu</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ru.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ru.xtb
index ce05472..6777549 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ru.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ru.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Не удалось подтвердить пароль для Windows. Повторите попытку.</translation>
 <translation id="3306357053520292004">Указанный аккаунт уже используется на этом компьютере. Выполните вход, используя другой аккаунт.</translation>
 <translation id="369030246015333661">Ваш аккаунт заблокирован. Обратитесь к системному администратору.</translation>
+<translation id="3968372833844047539">Вход разрешен только пользователям G Suite Enterprise.</translation>
 <translation id="4057329986137569701">Произошла внутренняя ошибка.</translation>
+<translation id="4267670563222825190">С вашим аккаунтом не связан ни один из пользователей домена. Обратитесь к администратору.</translation>
 <translation id="4300229033992784001">Пароль вашего аккаунта изменен. Чтобы синхронизировать аккаунт Windows с рабочим аккаунтом, введите актуальный пароль для Windows.</translation>
 <translation id="4706454071748629324">Не удалось добавить нового пользователя. На этом компьютере можно создать только одного пользователя с помощью рабочего аккаунта.</translation>
 <translation id="6292766200512304540">Пользователь создан в рабочем аккаунте</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb
index 6c2ed1b..e31a748e 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sk.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Vaše heslo systému Windows sa nepodarilo overiť. Skúste to znova.</translation>
 <translation id="3306357053520292004">Pomocou tohoto účtu už bol do tohto počítača pridaný používateľ. Prihláste sa pomocou iného účtu.</translation>
 <translation id="369030246015333661">Váš účet bol uzamknutý. Kontaktujte správcu systému.</translation>
+<translation id="3968372833844047539">Prihlásiť sa môžu iba používatelia služby G Suite Enterprise.</translation>
 <translation id="4057329986137569701">Vyskytla sa interná chyba.</translation>
+<translation id="4267670563222825190">Pre váš účet sa nenašiel žiadny používateľ domény. Kontaktujte správcu.</translation>
 <translation id="4300229033992784001">Zmenilo sa heslo vášho účtu. Zadajte svoje aktuálne heslo systému Windows, aby sa váš účet Windows synchronizoval s pracovným účtom.</translation>
 <translation id="4706454071748629324">Nepodarilo sa pridať nového používateľa. V tomto počítači je možné pomocou pracovného účtu vytvoriť iba jedného používateľa.</translation>
 <translation id="6292766200512304540">Používateľ vytvorený z pracovného účtu</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sl.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sl.xtb
index 33835a5e..76bdf62a 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sl.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sl.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Gesla za Windows ni bilo mogoče preveriti. Poskusite znova.</translation>
 <translation id="3306357053520292004">V tem računalniku je že bil dodan uporabnik s tem računom. Prijavite se z drugim računom.</translation>
 <translation id="369030246015333661">Vaš račun je zaklenjen. Obrnite se na skrbnika sistema.</translation>
+<translation id="3968372833844047539">Prijavijo se lahko samo uporabniki storitve Gsuite Enterprise.</translation>
 <translation id="4057329986137569701">Prišlo je do notranje napake.</translation>
+<translation id="4267670563222825190">Za vaš račun ni bilo mogoče najti nobenega uporabnika domene. Obrnite se na skrbnika.</translation>
 <translation id="4300229033992784001">Geslo računa je spremenjeno. Vnesite trenutno geslo za Windows, če želite sinhronizirati račun za Windows s službenim računom.</translation>
 <translation id="4706454071748629324">Ni bilo mogoče dodati novega uporabnika. V tem računalniku je s službenim računom dovoljeno ustvariti samo enega uporabnika.</translation>
 <translation id="6292766200512304540">Uporabnik, ustvarjen s službenim računom</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sr.xtb
index 0bc54cf5..00fdc00 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sr.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Жао нам је, верификација лозинке за Windows није успела. Пробајте поново.</translation>
 <translation id="3306357053520292004">Корисник на овом рачунару је већ додат помоћу овог налога. Пријавите се помоћу другог налога.</translation>
 <translation id="369030246015333661">Налог је закључан. Контактирајте администратора система.</translation>
+<translation id="3968372833844047539">Само корисници Gsuite верзије за предузећа могу да се пријаве.</translation>
 <translation id="4057329986137569701">Дошло је до интерне грешке.</translation>
+<translation id="4267670563222825190">Нисмо пронашли ниједног корисника домена за ваш налог. Обратите се администратору.</translation>
 <translation id="4300229033992784001">Лозинка налога је промењена. Унесите актуелну лозинку за Windows да бисте синхронизовали Windows налог са пословним налогом.</translation>
 <translation id="4706454071748629324">Додавање новог корисника није успело. Овај рачунар дозвољава прављење само једног корисника помоћу пословног налога.</translation>
 <translation id="6292766200512304540">Корисник је направљен из пословног налога</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sv.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sv.xtb
index ba71786..0bea52fe0 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sv.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sv.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Det gick inte att verifiera Windows-lösenordet. Försök igen.</translation>
 <translation id="3306357053520292004">En användare på den här datorn har redan lagts till med det här kontot. Logga in med ett annat konto.</translation>
 <translation id="369030246015333661">Ditt konto har låsts. Kontakta systemadministratören.</translation>
+<translation id="3968372833844047539">Endast G Suite Enterprise-användare får logga in.</translation>
 <translation id="4057329986137569701">Ett internt fel uppstod.</translation>
+<translation id="4267670563222825190">Ingen domänanvändare hittades för kontot. Kontakta administratören.</translation>
 <translation id="4300229033992784001">Kontots lösenord har ändrats Ange ditt nuvarande lösenord för Windows för att synkronisera Windows-kontot med jobbkontot.</translation>
 <translation id="4706454071748629324">Det gick inte att lägga till en ny användare. Datorn tillåter bara att en användare skapas med ett jobbkonto.</translation>
 <translation id="6292766200512304540">Användare skapad från ett jobbkonto</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sw.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sw.xtb
index 5529d75..3fcf7b8c 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sw.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sw.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Samahani, tumeshindwa kuthibitisha nenosiri lako la Windows. Tafadhali jaribu tena.</translation>
 <translation id="3306357053520292004">Mtumiaji wa kompyuta hii tayari alikuwa ameongezwa kwa kutumia akaunti hii. Ingia ukitumia akaunti nyingine.</translation>
 <translation id="369030246015333661">Akaunti yako imefungwa. Tafadhali wasiliana na msimamizi wa mfumo.</translation>
+<translation id="3968372833844047539">Watumiaji wa G Suite Enterprise pekee ndio wanaruhusiwa kuingia katika akaunti.</translation>
 <translation id="4057329986137569701">Hitilafu ya ndani imetokea.</translation>
+<translation id="4267670563222825190">Haikupata mtumiaji wa Kikoa kwenye akaunti yako. Tafadhali wasiliana na msimamizi wako.</translation>
 <translation id="4300229033992784001">Nenosiri la akaunti yako limebadilika. Tafadhali weka nenosiri lako la sasa la Windows ili usawazishe akaunti yako ya Windows na Akaunti yako ya kazini.</translation>
 <translation id="4706454071748629324">Imeshindwa kuongeza mtumiaji mpya. Kompyuta hii inaruhusu tu mtumiaji mmoja kuwekwa kwa kutumia akaunti ya kazini.</translation>
 <translation id="6292766200512304540">Mtumiaji amewekwa kutoka akaunti ya kazini</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ta.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ta.xtb
index 88f3ea5..fef06ca 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ta.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ta.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">உங்கள் Windows கடவுச்சொல்லைச் சரிபார்க்க முடியவில்லை. மீண்டும் முயலவும்.</translation>
 <translation id="3306357053520292004">இந்தக் கம்ப்யூட்டரில் இந்தக் கணக்கைப் பயன்படுத்தி ஏற்கனவே ஒரு பயனர் சேர்க்கப்பட்டுள்ளார். வேறொரு கணக்கில் உள்நுழையவும்.</translation>
 <translation id="369030246015333661">உங்கள் கணக்கு பூட்டப்பட்டுள்ளது. சிஸ்டம் நிர்வாகியைத் தொடர்புகொள்ளவும்.</translation>
+<translation id="3968372833844047539">Gsuite நிறுவனப் பயனர்கள் மட்டுமே உள்நுழைய அனுமதிக்கப்படுவார்கள்.</translation>
 <translation id="4057329986137569701">அகப்பிழை ஏற்பட்டது.</translation>
+<translation id="4267670563222825190">உங்கள் கணக்கிற்கான டொமைன் பயனர் இல்லை. உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்.</translation>
 <translation id="4300229033992784001">உங்கள் கணக்கின் கடவுச்சொல் மாற்றப்பட்டது. உங்கள் Windows கணக்கை பணிக் கணக்குடன் ஒத்திசைக்க உங்களின் தற்போதைய Windows கடவுச்சொல்லை உள்ளிடவும்.</translation>
 <translation id="4706454071748629324">புதிய பயனரைச் சேர்க்க முடியவில்லை. இந்தக் கம்ப்யூட்டர் பணிக் கணக்கைப் பயன்படுத்தி ஒரு பயனரை மட்டுமே உருவாக்க அனுமதிக்கும்.</translation>
 <translation id="6292766200512304540">பணிக் கணக்கிலிருந்து உருவாக்கப்பட்ட பயனர்</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
index b64c1f0..03957b3 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">క్షమించండి, మీ Windows పాస్‌వర్డ్‌ను ధృవీకరించడం సాధ్యపడలేదు. దయచేసి మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="3306357053520292004">ఈ ఖాతాని ఉపయోగించి ఇప్పటికే ఈ కంప్యూటర్‌లో ఒక వినియోగదారు జోడించబడ్డారు. వేరే ఖాతాతో సైన్ ఇన్ చేయండి.</translation>
 <translation id="369030246015333661">మీ ఖాతా లాక్ చేయబడింది. దయచేసి సిస్టమ్ నిర్వాహకులను సంప్రదించండి.</translation>
+<translation id="3968372833844047539">కేవలం Gsuite ఎంటర్‌ప్రైజ్ వెర్షన్ వినియోగదారులు మాత్రమే లాగిన్ చేయడానికి అనుమతించబడతారు.</translation>
 <translation id="4057329986137569701">అంతర్గత ఎర్రర్ ఏర్పడింది.</translation>
+<translation id="4267670563222825190">మీ ఖాతాకు సంబంధించిన డొమైన్ వినియోగదారు ఎవరూ కనుగొనబడలేదు. దయచేసి మీ నిర్వాహకుడిని సంప్రదించండి.</translation>
 <translation id="4300229033992784001">మీ ఖాతా పాస్‌వర్డ్ మార్చబడింది. మీ Windows ఖాతాను మీ కార్యాలయ ఖాతాతో సింక్ చేయడం కోసం మీ ప్రస్తుత Windows పాస్‌వర్డ్‌ను నమోదు చేయండి.</translation>
 <translation id="4706454071748629324">కొత్త వినియోగదారుని జోడించడం విఫలమైంది. కార్యాలయ ఖాతాని ఉపయోగించి ఒక వినియోగదారుని సృష్టించడానికి మాత్రమే ఈ కంప్యూటర్ అనుమతిస్తుంది.</translation>
 <translation id="6292766200512304540">కార్యాలయ ఖాతా నుండి వినియోగదారు సృష్టించబడ్డారు</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb
index 9aa64e8..c3e6be8 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">ขออภัย ยืนยันรหัสผ่าน Windows ไม่ได้ โปรดลองอีกครั้ง</translation>
 <translation id="3306357053520292004">ใช้บัญชีนี้เพื่อเพิ่มผู้ใช้ในคอมพิวเตอร์เครื่องนี้แล้ว โปรดลงชื่อเข้าใช้ด้วยบัญชีอื่น</translation>
 <translation id="369030246015333661">บัญชีของคุณถูกล็อกแล้ว โปรดติดต่อผู้ดูแลระบบ</translation>
+<translation id="3968372833844047539">อนุญาตให้เข้าสู่ระบบได้เฉพาะผู้ใช้ G Suite Enterprise</translation>
 <translation id="4057329986137569701">เกิดข้อผิดพลาดภายใน</translation>
+<translation id="4267670563222825190">ไม่พบผู้ใช้โดเมนสำหรับบัญชีของคุณ โปรดติดต่อผู้ดูแลระบบ</translation>
 <translation id="4300229033992784001">รหัสผ่านของบัญชีมีการเปลี่ยนแปลง โปรดป้อนรหัสผ่าน Windows ปัจจุบันเพื่อซิงค์บัญชี Windows กับบัญชีงาน</translation>
 <translation id="4706454071748629324">เพิ่มผู้ใช้ใหม่ไม่สำเร็จ คอมพิวเตอร์เครื่องนี้อนุญาตให้สร้างผู้ใช้โดยใช้บัญชีงานได้เพียงคนเดียว</translation>
 <translation id="6292766200512304540">ผู้ใช้ที่สร้างจากบัญชีงาน</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb
index 9da5737..44243df 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Maalesef Windows şifreniz doğrulanamadı. Lütfen tekrar deneyin.</translation>
 <translation id="3306357053520292004">Bu bilgisayardaki bir kullanıcı zaten bu hesap kullanılarak eklenmiş. Lütfen farklı bir hesapla oturum açın.</translation>
 <translation id="369030246015333661">Hesabınız kilitlendi. Lütfen sistem yöneticisiyle iletişim kurun.</translation>
+<translation id="3968372833844047539">Sadece Gsuite Enterprise kullanıcılarının giriş yapmasına izin verilir.</translation>
 <translation id="4057329986137569701">Dahili bir hata oluştu.</translation>
+<translation id="4267670563222825190">Hesabınız için hiçbir alan kullanıcısı bulunamadı. Lütfen yöneticinizle görüşün.</translation>
 <translation id="4300229033992784001">Hesap şifreniz değişti. Windows hesabınızı iş hesabınızla senkronize etmek için lütfen mevcut Windows şifrenizi girin.</translation>
 <translation id="4706454071748629324">Yeni kullanıcı eklenemedi. Bu bilgisayar yalnızca bir kullanıcının, iş hesabı kullanılarak oluşturulmasına izin verir.</translation>
 <translation id="6292766200512304540">İş hesabından oluşturulan kullanıcı</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_uk.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_uk.xtb
index 0cc849f0..1bccca3 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_uk.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_uk.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Не вдалося підтвердити пароль Windows. Повторіть спробу.</translation>
 <translation id="3306357053520292004">На цьому комп’ютері вже додано користувача з таким обліковим записом. Увійдіть в інший обліковий запис.</translation>
 <translation id="369030246015333661">Ваш обліковий запис заблоковано. Зв’яжіться із системним адміністратором.</translation>
+<translation id="3968372833844047539">Можуть входити лише користувачі G Suite Enterprise.</translation>
 <translation id="4057329986137569701">Сталася внутрішня помилка.</translation>
+<translation id="4267670563222825190">Не знайдено користувачів домену для вашого облікового запису. Зв'яжіться з адміністратором.</translation>
 <translation id="4300229033992784001">Пароль вашого облікового запису змінено. Введіть поточний пароль Windows, щоб синхронізувати обліковий запис Windows і корпоративний обліковий запис.</translation>
 <translation id="4706454071748629324">Не вдалося додати нового користувача. На цьому комп’ютері дозволено створювати лише одного користувача з корпоративним обліковим записом.</translation>
 <translation id="6292766200512304540">Користувач, створений через корпоративний обліковий запис</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb
index 8127885a..f9445390 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_vi.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">Rất tiếc, chúng tôi không thể xác minh được mật khẩu Windows của bạn. Vui lòng thử lại.</translation>
 <translation id="3306357053520292004">Một người dùng trên máy tính này đã được thêm bằng tài khoản này. Vui lòng đăng nhập bằng một tài khoản khác.</translation>
 <translation id="369030246015333661">Tài khoản của bạn đã bị khóa. Vui lòng liên hệ với quản trị viên hệ thống.</translation>
+<translation id="3968372833844047539">Chỉ người dùng G Suite Enterprise mới được phép đăng nhập.</translation>
 <translation id="4057329986137569701">Đã xảy ra lỗi nội bộ.</translation>
+<translation id="4267670563222825190">Không tìm được người dùng miền nào cho tài khoản của bạn. Vui lòng liên hệ với quản trị viên.</translation>
 <translation id="4300229033992784001">Mật khẩu tài khoản của bạn đã thay đổi. Hãy nhập mật khẩu Windows hiện tại để đồng bộ hóa tài khoản Windows với tài khoản công việc của bạn.</translation>
 <translation id="4706454071748629324">Không thêm được người dùng mới. Máy tính này chỉ cho phép tạo 1 người dùng bằng tài khoản công việc.</translation>
 <translation id="6292766200512304540">Người dùng đã tạo từ một tài khoản công việc</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb
index 4fc83cb..9d3fd10 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">抱歉,无法验证您的 Windows 密码。请重试。</translation>
 <translation id="3306357053520292004">此计算机上已添加了使用此帐号的用户。请改用其他帐号登录。</translation>
 <translation id="369030246015333661">您的帐号已被锁定。请与系统管理员联系。</translation>
+<translation id="3968372833844047539">只有 G Suite 企业版用户可以登录。</translation>
 <translation id="4057329986137569701">发生了内部错误。</translation>
+<translation id="4267670563222825190">找不到您帐号的任何网域用户。请与管理员联系。</translation>
 <translation id="4300229033992784001">您的帐号密码已更改。请输入您目前使用的 Windows 密码,以便将您的 Windows 帐号与工作帐号同步。</translation>
 <translation id="4706454071748629324">未能添加新用户。此计算机仅允许使用一个工作帐号创建一个用户。</translation>
 <translation id="6292766200512304540">通过工作帐号创建的用户</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb
index 35232ca..9544e44 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb
@@ -9,7 +9,9 @@
 <translation id="2595469428674600431">很抱歉,我們無法驗證你的 Windows 密碼,請再試一次。</translation>
 <translation id="3306357053520292004">這台電腦已有其他使用者使用這個帳戶登入。請改用其他帳戶登入。</translation>
 <translation id="369030246015333661">你的帳戶已遭到鎖定。請與系統管理員聯絡。</translation>
+<translation id="3968372833844047539">僅限 G Suite Enterprise 使用者登入。</translation>
 <translation id="4057329986137569701">發生內部錯誤。</translation>
+<translation id="4267670563222825190">找不到帳戶的網域使用者。請與你的系統管理員聯絡。</translation>
 <translation id="4300229033992784001">你的帳戶密碼已變更。請輸入目前的 Windows 密碼,讓系統同步處理你的 Windows 帳戶與公司帳戶。</translation>
 <translation id="4706454071748629324">無法新增使用者。在這台電腦上,公司帳戶只能用於建立一位使用者。</translation>
 <translation id="6292766200512304540">使用公司帳戶建立的使用者</translation>
diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn
index b0a3578..540a24a 100644
--- a/chrome/renderer/BUILD.gn
+++ b/chrome/renderer/BUILD.gn
@@ -96,6 +96,8 @@
     "prerender/prerender_helper.h",
     "prerender/prerenderer_client.cc",
     "prerender/prerenderer_client.h",
+    "previews/resource_loading_hints_agent.cc",
+    "previews/resource_loading_hints_agent.h",
     "sandbox_status_extension_android.cc",
     "sandbox_status_extension_android.h",
     "security_interstitials/security_interstitial_page_controller.cc",
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index 36742f7..42f2b341 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -62,6 +62,7 @@
 #include "chrome/renderer/prerender/prerender_dispatcher.h"
 #include "chrome/renderer/prerender/prerender_helper.h"
 #include "chrome/renderer/prerender/prerenderer_client.h"
+#include "chrome/renderer/previews/resource_loading_hints_agent.h"
 #include "chrome/renderer/tts_dispatcher.h"
 #include "chrome/renderer/url_loader_throttle_provider_impl.h"
 #include "chrome/renderer/v8_unwinder.h"
@@ -117,6 +118,7 @@
 #include "services/service_manager/public/cpp/connector.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
 #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-shared.h"
 #include "third_party/blink/public/platform/scheduler/web_renderer_process_type.h"
 #include "third_party/blink/public/platform/url_conversion.h"
@@ -563,6 +565,12 @@
         render_frame, subresource_filter_ruleset_dealer_.get(),
         std::move(ad_resource_tracker));
   }
+  if (base::FeatureList::IsEnabled(
+          blink::features::kSendPreviewsLoadingHintsBeforeCommit) &&
+      render_frame->IsMainFrame()) {
+    new previews::ResourceLoadingHintsAgent(
+        render_frame_observer->associated_interfaces(), render_frame);
+  }
 
 #if !defined(OS_ANDROID)
   if (command_line->HasSwitch(switches::kInstantProcess) &&
diff --git a/chrome/renderer/chromeos_merge_session_loader_throttle.cc b/chrome/renderer/chromeos_merge_session_loader_throttle.cc
index cb079cb..12d500a5 100644
--- a/chrome/renderer/chromeos_merge_session_loader_throttle.cc
+++ b/chrome/renderer/chromeos_merge_session_loader_throttle.cc
@@ -6,10 +6,11 @@
 
 #include <utility>
 
-#include "base/command_line.h"
 #include "base/bind.h"
+#include "base/command_line.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/renderer/chrome_render_thread_observer.h"
+#include "content/public/common/resource_type.h"
 
 // static
 base::TimeDelta MergeSessionLoaderThrottle::GetMergeSessionTimeout() {
diff --git a/chrome/renderer/previews/OWNERS b/chrome/renderer/previews/OWNERS
new file mode 100644
index 0000000..75baba8
--- /dev/null
+++ b/chrome/renderer/previews/OWNERS
@@ -0,0 +1,3 @@
+file://components/data_reduction_proxy/OWNERS
+
+# COMPONENT: Blink>Previews
\ No newline at end of file
diff --git a/chrome/renderer/previews/resource_loading_hints_agent.cc b/chrome/renderer/previews/resource_loading_hints_agent.cc
new file mode 100644
index 0000000..bc31e5da
--- /dev/null
+++ b/chrome/renderer/previews/resource_loading_hints_agent.cc
@@ -0,0 +1,103 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/renderer/previews/resource_loading_hints_agent.h"
+
+#include <vector>
+
+#include "base/metrics/histogram_macros.h"
+#include "content/public/renderer/render_frame.h"
+#include "third_party/blink/public/platform/web_loading_hints_provider.h"
+#include "third_party/blink/public/platform/web_string.h"
+#include "third_party/blink/public/platform/web_vector.h"
+#include "third_party/blink/public/web/web_document.h"
+#include "third_party/blink/public/web/web_document_loader.h"
+#include "third_party/blink/public/web/web_local_frame.h"
+
+namespace previews {
+
+namespace {
+
+const blink::WebVector<blink::WebString> convert_to_web_vector(
+    const std::vector<std::string>& subresource_patterns_to_block) {
+  blink::WebVector<blink::WebString> web_vector(
+      subresource_patterns_to_block.size());
+  for (const std::string& element : subresource_patterns_to_block) {
+    web_vector.emplace_back(blink::WebString::FromASCII(element));
+  }
+  return web_vector;
+}
+
+}  // namespace
+
+ResourceLoadingHintsAgent::ResourceLoadingHintsAgent(
+    blink::AssociatedInterfaceRegistry* associated_interfaces,
+    content::RenderFrame* render_frame)
+    : content::RenderFrameObserver(render_frame), binding_(this) {
+  DCHECK(render_frame);
+  DCHECK(IsMainFrame());
+
+  associated_interfaces->AddInterface(base::BindRepeating(
+      &ResourceLoadingHintsAgent::SetBinding, base::Unretained(this)));
+}
+
+GURL ResourceLoadingHintsAgent::GetDocumentURL() const {
+  return render_frame()->GetWebFrame()->GetDocument().Url();
+}
+
+void ResourceLoadingHintsAgent::DidCreateNewDocument() {
+  DCHECK(IsMainFrame());
+  if (!GetDocumentURL().SchemeIsHTTPOrHTTPS())
+    return;
+  if (subresource_patterns_to_block_.empty())
+    return;
+
+  blink::WebLocalFrame* web_frame = render_frame()->GetWebFrame();
+  DCHECK(web_frame);
+
+  std::unique_ptr<blink::WebLoadingHintsProvider> loading_hints =
+      std::make_unique<blink::WebLoadingHintsProvider>(
+          ukm_source_id_.value(),
+          convert_to_web_vector(subresource_patterns_to_block_));
+
+  web_frame->GetDocumentLoader()->SetLoadingHintsProvider(
+      std::move(loading_hints));
+  // Once the hints are sent to the document loader, clear the local copy to
+  // prevent accidental reuse.
+  subresource_patterns_to_block_.clear();
+}
+
+void ResourceLoadingHintsAgent::OnDestruct() {
+  delete this;
+}
+
+ResourceLoadingHintsAgent::~ResourceLoadingHintsAgent() = default;
+
+void ResourceLoadingHintsAgent::SetBinding(
+    blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedRequest
+        request) {
+  binding_.Bind(std::move(request));
+}
+
+bool ResourceLoadingHintsAgent::IsMainFrame() const {
+  return render_frame()->IsMainFrame();
+}
+
+void ResourceLoadingHintsAgent::SetResourceLoadingHints(
+    blink::mojom::PreviewsResourceLoadingHintsPtr resource_loading_hints) {
+  DCHECK(IsMainFrame());
+
+  UMA_HISTOGRAM_COUNTS_100(
+      "ResourceLoadingHints.CountBlockedSubresourcePatterns",
+      resource_loading_hints->subresources_to_block.size());
+
+  ukm_source_id_ = resource_loading_hints->ukm_source_id;
+
+  for (const auto& subresource :
+       resource_loading_hints->subresources_to_block) {
+    subresource_patterns_to_block_.push_back(subresource);
+  }
+}
+
+}  // namespace previews
diff --git a/chrome/renderer/previews/resource_loading_hints_agent.h b/chrome/renderer/previews/resource_loading_hints_agent.h
new file mode 100644
index 0000000..366f0a8
--- /dev/null
+++ b/chrome/renderer/previews/resource_loading_hints_agent.h
@@ -0,0 +1,67 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_RENDERER_PREVIEWS_RESOURCE_LOADING_HINTS_AGENT_H_
+#define CHROME_RENDERER_PREVIEWS_RESOURCE_LOADING_HINTS_AGENT_H_
+
+#include <memory>
+
+#include "base/bind.h"
+#include "base/logging.h"
+#include "base/macros.h"
+#include "base/optional.h"
+#include "content/public/renderer/render_frame_observer.h"
+#include "mojo/public/cpp/bindings/associated_binding.h"
+#include "mojo/public/cpp/bindings/binding.h"
+#include "services/service_manager/public/cpp/interface_provider.h"
+#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
+#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
+#include "third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom-blink.h"
+#include "third_party/blink/public/mojom/loader/previews_resource_loading_hints.mojom.h"
+#include "url/gurl.h"
+
+namespace previews {
+
+// The renderer-side agent of ResourceLoadingHintsAgent. There is one instance
+// per main frame, responsible for sending the loading hints from browser to
+// the document loader.
+class ResourceLoadingHintsAgent
+    : public content::RenderFrameObserver,
+      public blink::mojom::PreviewsResourceLoadingHintsReceiver,
+      public base::SupportsWeakPtr<ResourceLoadingHintsAgent> {
+ public:
+  ResourceLoadingHintsAgent(
+      blink::AssociatedInterfaceRegistry* associated_interfaces,
+      content::RenderFrame* render_frame);
+  ~ResourceLoadingHintsAgent() override;
+
+ private:
+  // content::RenderFrameObserver:
+  void DidCreateNewDocument() override;
+  void OnDestruct() override;
+
+  GURL GetDocumentURL() const;
+
+  // blink::mojom::PreviewsResourceLoadingHintsReceiver:
+  void SetResourceLoadingHints(blink::mojom::PreviewsResourceLoadingHintsPtr
+                                   resource_loading_hints) override;
+
+  void SetBinding(
+      blink::mojom::PreviewsResourceLoadingHintsReceiverAssociatedRequest
+          request);
+
+  bool IsMainFrame() const;
+
+  std::vector<std::string> subresource_patterns_to_block_;
+  base::Optional<int64_t> ukm_source_id_;
+
+  mojo::AssociatedBinding<blink::mojom::PreviewsResourceLoadingHintsReceiver>
+      binding_;
+
+  DISALLOW_COPY_AND_ASSIGN(ResourceLoadingHintsAgent);
+};
+
+}  // namespace previews
+
+#endif  // CHROME_RENDERER_PREVIEWS_RESOURCE_LOADING_HINTS_AGENT_H_
diff --git a/chrome/renderer/subresource_redirect/subresource_redirect_url_loader_throttle.cc b/chrome/renderer/subresource_redirect/subresource_redirect_url_loader_throttle.cc
index 25526bb..6cca973c 100644
--- a/chrome/renderer/subresource_redirect/subresource_redirect_url_loader_throttle.cc
+++ b/chrome/renderer/subresource_redirect/subresource_redirect_url_loader_throttle.cc
@@ -7,6 +7,7 @@
 #include "base/metrics/histogram_macros.h"
 #include "chrome/renderer/subresource_redirect/subresource_redirect_util.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h"
+#include "content/public/common/resource_type.h"
 #include "net/http/http_status_code.h"
 
 namespace subresource_redirect {
diff --git a/chrome/renderer/subresource_redirect/subresource_redirect_url_loader_throttle_unittest.cc b/chrome/renderer/subresource_redirect/subresource_redirect_url_loader_throttle_unittest.cc
index 0437b7a8..a45fa3a7 100644
--- a/chrome/renderer/subresource_redirect/subresource_redirect_url_loader_throttle_unittest.cc
+++ b/chrome/renderer/subresource_redirect/subresource_redirect_url_loader_throttle_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/renderer/subresource_redirect/subresource_redirect_url_loader_throttle.h"
 
 #include "chrome/renderer/subresource_redirect/subresource_redirect_util.h"
+#include "content/public/common/resource_type.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace subresource_redirect {
diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
index a55994b4..c8db5a5 100644
--- a/chrome/test/android/BUILD.gn
+++ b/chrome/test/android/BUILD.gn
@@ -99,6 +99,7 @@
     "javatests/src/org/chromium/chrome/test/util/BookmarkTestUtil.java",
     "javatests/src/org/chromium/chrome/test/util/browser/compositor/layouts/DisableChromeAnimations.java",
     "javatests/src/org/chromium/chrome/test/util/browser/contextmenu/ContextMenuUtils.java",
+    "javatests/src/org/chromium/chrome/test/util/browser/contextmenu/RevampedContextMenuUtils.java",
     "javatests/src/org/chromium/chrome/test/util/browser/Features.java",
     "javatests/src/org/chromium/chrome/test/util/browser/LocationSettingsTestUtil.java",
     "javatests/src/org/chromium/chrome/test/util/browser/notifications/MockNotificationManagerProxy.java",
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/ReducedModeNativeTestRule.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/ReducedModeNativeTestRule.java
index 32a5dc48b..35eba80 100644
--- a/chrome/test/android/javatests/src/org/chromium/chrome/test/ReducedModeNativeTestRule.java
+++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/ReducedModeNativeTestRule.java
@@ -47,8 +47,7 @@
         return new Statement() {
             @Override
             public void evaluate() throws Throwable {
-                Features.getInstance().enable(ChromeFeatureList.NETWORK_SERVICE,
-                        ChromeFeatureList.ALLOW_STARTING_SERVICE_MANAGER_ONLY);
+                Features.getInstance().enable(ChromeFeatureList.NETWORK_SERVICE);
                 // Unfortunately, Features has already formed the command line at this point. This
                 // forces another redo after we added new flags.
                 Features.ensureCommandLineIsUpToDate();
diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/contextmenu/RevampedContextMenuUtils.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/contextmenu/RevampedContextMenuUtils.java
new file mode 100644
index 0000000..43d0f6f
--- /dev/null
+++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/contextmenu/RevampedContextMenuUtils.java
@@ -0,0 +1,131 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.test.util.browser.contextmenu;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+
+import org.junit.Assert;
+
+import org.chromium.base.test.util.CallbackHelper;
+import org.chromium.chrome.browser.contextmenu.ContextMenuHelper;
+import org.chromium.chrome.browser.contextmenu.RevampedContextMenuCoordinator;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.content_public.browser.test.util.Criteria;
+import org.chromium.content_public.browser.test.util.CriteriaHelper;
+import org.chromium.content_public.browser.test.util.DOMUtils;
+
+import java.util.concurrent.TimeoutException;
+
+/**
+ * A utility class to help open and interact with the Revamped Context Menu.
+ */
+public class RevampedContextMenuUtils {
+    /**
+     * Callback helper that also provides access to the last displayed Revamped Context Menu.
+     */
+    private static class OnContextMenuShownHelper extends CallbackHelper {
+        private RevampedContextMenuCoordinator mCoordinator;
+
+        public void notifyCalled(RevampedContextMenuCoordinator coordinator) {
+            mCoordinator = coordinator;
+            notifyCalled();
+        }
+
+        RevampedContextMenuCoordinator getRevampedContextMenuCoordinator() {
+            assert getCallCount() > 0;
+            return mCoordinator;
+        }
+    }
+
+    /**
+     * Opens a context menu.
+     * @param tab                   The tab to open a context menu for.
+     * @param openerDOMNodeId       The DOM node to long press to open the context menu for.
+     * @return                      The {@link RevampedContextMenuCoordinator} of the context menu.
+     * @throws InterruptedException
+     * @throws TimeoutException
+     */
+    public static RevampedContextMenuCoordinator openContextMenu(Tab tab, String openerDOMNodeId)
+            throws InterruptedException, TimeoutException {
+        String jsCode = "document.getElementById('" + openerDOMNodeId + "')";
+        return openContextMenuByJs(tab, jsCode);
+    }
+
+    /**
+     * Opens a context menu.
+     * @param tab                   The tab to open a context menu for.
+     * @param jsCode                The javascript to get the DOM node to long press to
+     *                              open the context menu for.
+     * @return                      The {@link RevampedContextMenuCoordinator} of the context menu.
+     * @throws InterruptedException
+     * @throws TimeoutException
+     */
+    private static RevampedContextMenuCoordinator openContextMenuByJs(Tab tab, String jsCode)
+            throws InterruptedException, TimeoutException {
+        final OnContextMenuShownHelper helper = new OnContextMenuShownHelper();
+        ContextMenuHelper.sRevampedContextMenuShownCallback = ((coordinator) -> {
+            helper.notifyCalled(coordinator);
+            ContextMenuHelper.sRevampedContextMenuShownCallback = null;
+        });
+
+        int callCount = helper.getCallCount();
+        DOMUtils.longPressNodeByJs(tab.getWebContents(), jsCode);
+
+        helper.waitForCallback(callCount);
+        return helper.getRevampedContextMenuCoordinator();
+    }
+
+    /**
+     * Opens and selects an item from a context menu.
+     * @param tab                   The tab to open a context menu for.
+     * @param openerDOMNodeId       The DOM node to long press to open the context menu for.
+     * @param itemId                The context menu item ID to select.
+     * @param activity              The activity to assert for gaining focus after click or null.
+     * @throws InterruptedException
+     * @throws TimeoutException
+     */
+    public static void selectContextMenuItem(Instrumentation instrumentation, Activity activity,
+            Tab tab, String openerDOMNodeId, final int itemId)
+            throws InterruptedException, TimeoutException {
+        String jsCode = "document.getElementById('" + openerDOMNodeId + "')";
+        selectContextMenuItemByJs(instrumentation, activity, tab, jsCode, itemId);
+    }
+
+    /**
+     * Long presses to open and selects an item from a context menu.
+     * @param tab                   The tab to open a context menu for.
+     * @param jsCode                The javascript to get the DOM node to long press
+     *                              to open the context menu for.
+     * @param itemId                The context menu item ID to select.
+     * @param activity              The activity to assert for gaining focus after click or null.
+     * @throws InterruptedException
+     * @throws TimeoutException
+     */
+    private static void selectContextMenuItemByJs(Instrumentation instrumentation,
+            Activity activity, Tab tab, String jsCode, final int itemId)
+            throws InterruptedException, TimeoutException {
+        RevampedContextMenuCoordinator menuCoordinator = openContextMenuByJs(tab, jsCode);
+        Assert.assertNotNull("Failed to open context menu", menuCoordinator);
+
+        selectOpenContextMenuItem(instrumentation, activity, menuCoordinator, itemId);
+    }
+
+    private static void selectOpenContextMenuItem(Instrumentation instrumentation,
+            final Activity activity, final RevampedContextMenuCoordinator menuCoordinator,
+            final int itemId) {
+        instrumentation.runOnMainSync(() -> menuCoordinator.clickListItemForTesting(itemId));
+
+        if (activity != null) {
+            CriteriaHelper.pollInstrumentationThread(
+                    new Criteria("Activity did not regain focus.") {
+                        @Override
+                        public boolean isSatisfied() {
+                            return activity.hasWindowFocus();
+                        }
+                    });
+        }
+    }
+}
diff --git a/chrome/test/chromedriver/chrome/navigation_tracker.cc b/chrome/test/chromedriver/chrome/navigation_tracker.cc
index 861f12a..6bd4582 100644
--- a/chrome/test/chromedriver/chrome/navigation_tracker.cc
+++ b/chrome/test/chromedriver/chrome/navigation_tracker.cc
@@ -197,6 +197,7 @@
     loading_state_ = kNotLoading;
   } else if (method == "Page.interstitialShown") {
     client_->SendCommand("Page.stopLoading", base::DictionaryValue());
+    return Status(kUnexpectedAlertOpen, "Interstitial popups not supported");
   }
   if (timed_out_)
     loading_state_ = kNotLoading;
diff --git a/chrome/test/chromedriver/js/call_function.js b/chrome/test/chromedriver/js/call_function.js
index 5b63746..a06cd982 100644
--- a/chrome/test/chromedriver/js/call_function.js
+++ b/chrome/test/chromedriver/js/call_function.js
@@ -343,6 +343,10 @@
     ret[ELEMENT_KEY] = cache.storeItem(item);
     return ret;
   }
+  // http://crbug.com/chromedriver/2995: Placed here because some element
+  // (above) are type 'function', so this check must be performed after.
+  if (typeof item === 'function')
+    return item;
   // TODO(rohpavone): Implement WindowProxy serialization.
   if (typeof item.toJSON === 'function' &&
       (item.hasOwnProperty('toJSON') ||
diff --git a/chrome/test/chromedriver/session_commands.cc b/chrome/test/chromedriver/session_commands.cc
index 7a2cd856..57e09d0 100644
--- a/chrome/test/chromedriver/session_commands.cc
+++ b/chrome/test/chromedriver/session_commands.cc
@@ -16,6 +16,7 @@
 #include "base/strings/stringprintf.h"
 #include "base/synchronization/lock.h"
 #include "base/synchronization/waitable_event.h"
+#include "base/system/sys_info.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/values.h"
 #include "chrome/test/chromedriver/basic_types.h"
@@ -369,13 +370,46 @@
 // Implementation of "matching capabilities", as defined in W3C spec at
 // https://www.w3.org/TR/webdriver/#dfn-matching-capabilities.
 // It checks some requested capabilities and make sure they are supported.
-// Currently, we only check "browserName", but more can be added as necessary.
+// Currently, we only check "browserName" and "platformName", but more can be
+// added as necessary.
 bool MatchCapabilities(const base::DictionaryValue* capabilities) {
   const base::Value* name;
   if (capabilities->Get("browserName", &name) && !name->is_none()) {
     if (!(name->is_string() && name->GetString() == "chrome"))
       return false;
   }
+
+  const base::Value* platform_name_value;
+  if (capabilities->Get("platformName", &platform_name_value) &&
+      !platform_name_value->is_none()) {
+    if (platform_name_value->is_string()) {
+      std::string requested_platform_name = platform_name_value->GetString();
+      std::string actual_platform_name =
+          base::ToLowerASCII(base::SysInfo::OperatingSystemName());
+      bool is_android =
+          capabilities->HasKey("goog:chromeOptions.androidPackage");
+      bool is_remote =
+          capabilities->HasKey("goog:chromeOptions.debuggerAddress");
+      if (requested_platform_name == "any" || is_remote) {
+        // "any" can be used as a wild card for platformName
+        // and if |is_remote| there is no easy way to know
+        // target platform, so will skip check
+      } else if (is_android && requested_platform_name != "android") {
+        return false;
+      } else if (requested_platform_name == "mac" ||
+                 requested_platform_name == "windows" ||
+                 requested_platform_name == "linux") {
+        if (!base::StartsWith(actual_platform_name, requested_platform_name,
+                              base::CompareCase::SENSITIVE))
+          return false;
+      } else if (requested_platform_name != actual_platform_name) {
+        return false;
+      }
+    } else {
+      return false;
+    }
+  }
+
   return true;
 }
 
diff --git a/chrome/test/chromedriver/session_commands_unittest.cc b/chrome/test/chromedriver/session_commands_unittest.cc
index 39a7009..2acaaf7 100644
--- a/chrome/test/chromedriver/session_commands_unittest.cc
+++ b/chrome/test/chromedriver/session_commands_unittest.cc
@@ -13,6 +13,7 @@
 #include "base/files/file_util.h"
 #include "base/json/json_reader.h"
 #include "base/run_loop.h"
+#include "base/system/sys_info.h"
 #include "base/threading/thread.h"
 #include "base/values.h"
 #include "chrome/test/chromedriver/chrome/status.h"
@@ -267,6 +268,26 @@
   ASSERT_TRUE(result.HasKey("unhandledPromptBehavior"));
   ASSERT_FALSE(result.HasKey("pageLoadStrategy"));
 
+  // Selection by platformName
+  std::string platform_name =
+      base::ToLowerASCII(base::SysInfo::OperatingSystemName());
+  status = ProcessCapabilitiesJson(
+      R"({
+       "capabilities": {
+         "alwaysMatch": { "timeouts": { "script": 10 } },
+         "firstMatch": [
+           { "platformName": "LINUX", "pageLoadStrategy": "none" },
+           { "platformName": ")" +
+          platform_name + R"(", "pageLoadStrategy": "eager" }
+         ]
+       }
+     })",
+      &result);
+  printf("THIS IS PLATFORM: %s", platform_name.c_str());
+  ASSERT_EQ(kOk, status.code()) << status.message();
+  ASSERT_EQ(result.FindKey("platformName")->GetString(), platform_name);
+  ASSERT_EQ(result.FindKey("pageLoadStrategy")->GetString(), "eager");
+
   // Selection by browserName
   status = ProcessCapabilitiesJson(
       R"({
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index b54ea75..97af6ea 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -416,6 +416,18 @@
   def testGetCurrentWindowHandle(self):
     self._driver.GetCurrentWindowHandle()
 
+  # crbug.com/p/chromedriver/issues/detail?id=2995 exposed that some libraries
+  # introduce circular function references. Functions should not be serialized
+  # or treated as an object - this test checks that circular function
+  # definitions are allowed (despite how they are not spec-compliant.
+  def testExecuteScriptWithSameFunctionReference(self):
+    self._driver.Load(self.GetHttpUrlForFile('/chromedriver/empty.html'))
+    self._driver.ExecuteScript("""function copyMe() { return 1; }
+                               Function.prototype.foo = copyMe;
+                               const obj = {};
+                               obj['buzz'] = copyMe;
+                               return obj;""")
+
   def _newWindowDoesNotFocus(self, window_type='window'):
     current_handles = self._driver.GetWindowHandles()
     self._driver.Load(self.GetHttpUrlForFile(
diff --git a/chrome/test/data/android/contextmenu/context_menu_test.html b/chrome/test/data/android/contextmenu/context_menu_test.html
index 8468fd8..a5c807e 100644
--- a/chrome/test/data/android/contextmenu/context_menu_test.html
+++ b/chrome/test/data/android/contextmenu/context_menu_test.html
@@ -4,13 +4,13 @@
 </head>
 <body>
 
-  <img src="test_image.png" id="testImage" alt="test_image"/><br />
+  <img src="test_image.png" id="testImage" alt="test_image"><br />
 
   <a href="test_link.html" id="testLink">Test Link</a><br />
 
   <a href="test_link2.html" id="testLink2">Test Link 2></a><br />
 
-  <a href="test_link.html" id="testImageLink"><img src="test_image.png"/></a><br />
+  <a href="test_link.html" id="testImageLink"><img src="test_image.png"></a><br />
 
   <a href="mailto:someone1@example.com,someone2@example.com?Subject=EmailTest" id="testEmail">EmailTest</a><br />
 
diff --git a/chrome/test/data/extensions/api_test/service_worker/worker_based_background/browser_action/background.js b/chrome/test/data/extensions/api_test/service_worker/worker_based_background/browser_action/background.js
index 432914f..05b5760 100644
--- a/chrome/test/data/extensions/api_test/service_worker/worker_based_background/browser_action/background.js
+++ b/chrome/test/data/extensions/api_test/service_worker/worker_based_background/browser_action/background.js
@@ -14,8 +14,15 @@
   // Call an API so we can check gesture state in the callback.
   chrome.tabs.create({url: chrome.runtime.getURL('page.html')}, () => {
     chrome.test.assertNoLastError();
-    chrome.test.assertFalse(chrome.test.isProcessingUserGesture());
-    chrome.test.notifyPass();
+    chrome.test.assertTrue(chrome.test.isProcessingUserGesture());
+
+    // Call another API from this callback, we shouldn't have any gestures
+    // retained in this API's callback.
+    chrome.tabs.create({url: 'about:blank'}, () => {
+      chrome.test.assertNoLastError();
+      chrome.test.assertFalse(chrome.test.isProcessingUserGesture());
+      chrome.test.notifyPass();
+    });
   });
 });
 
diff --git a/chrome/test/data/extensions/api_test/service_worker/worker_based_background/notification_click/background.js b/chrome/test/data/extensions/api_test/service_worker/worker_based_background/notification_click/background.js
index f51d836..b21718e 100644
--- a/chrome/test/data/extensions/api_test/service_worker/worker_based_background/notification_click/background.js
+++ b/chrome/test/data/extensions/api_test/service_worker/worker_based_background/notification_click/background.js
@@ -20,5 +20,16 @@
   chrome.test.log('onnotificationclick');
   // We should be running with a user gesture w.r.t. extension APIs.
   chrome.test.assertTrue(chrome.test.isProcessingUserGesture());
-  chrome.test.notifyPass();
+  chrome.tabs.create({url: 'about:blank'}, () => {
+    chrome.test.assertNoLastError();
+    chrome.test.assertTrue(chrome.test.isProcessingUserGesture());
+
+    // Call another API, this API's callback should not be running
+    // with a gesture.
+    chrome.tabs.create({url: 'about:blank'}, () => {
+      chrome.test.assertNoLastError();
+      chrome.test.assertFalse(chrome.test.isProcessingUserGesture());
+      chrome.test.notifyPass();
+    });
+  });
 };
diff --git a/chrome/test/data/local_ntp/local_ntp_browsertest.html b/chrome/test/data/local_ntp/local_ntp_browsertest.html
index f7b4c9a..36c2136 100644
--- a/chrome/test/data/local_ntp/local_ntp_browsertest.html
+++ b/chrome/test/data/local_ntp/local_ntp_browsertest.html
@@ -37,9 +37,11 @@
         <!-- A doodle, if any: its link and image. -->
         <div id="logo-doodle">
           <div id="logo-doodle-container">
-            <button id="logo-doodle-button">
-              <img id="logo-doodle-image" tabindex="-1"></img>
-            </button>
+            <div id="logo-doodle-wrapper">
+              <button id="logo-doodle-button">
+                <img id="logo-doodle-image" tabindex="-1"></img>
+              </button>
+            </div>
           </div>
           <iframe id="logo-doodle-iframe" scrolling="no"></iframe>
           <!-- A spinner, visible on dark-themed NTPs, prompting the doodle -->
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index f6edb6c..65525b5 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -393,6 +393,16 @@
     ]
   },
 
+  "ExternalPrintServers": {
+    "os": ["chromeos"],
+    "test_policy": {
+      "ExternalPrintServers": {
+        "url": "https://example.com/policyfile",
+        "hash": "deadbeefdeadbeefdeadbeef"
+      }
+    }
+  },
+
   "NativePrinters": {
     "os": ["chromeos"],
     "test_policy": {
diff --git a/chrome/test/data/ssl/page_with_in_scope_and_cross_site_frame.html b/chrome/test/data/ssl/page_with_in_scope_and_cross_site_frame.html
new file mode 100644
index 0000000..39fa824
--- /dev/null
+++ b/chrome/test/data/ssl/page_with_in_scope_and_cross_site_frame.html
@@ -0,0 +1,8 @@
+<html>
+  <head><title>This is a test page with a x-site iframe and an in-scope iframe</title>
+  </head>
+  <body>
+    <iframe name="in-scope" src="/ssl/google.html" id="in-scope"></iframe>
+    <iframe name="cross-site" src="https://example.com" id="cross-site"></iframe>
+  </body>
+</html>
diff --git a/chrome/test/data/webui/cr_elements/cr_action_menu_test.js b/chrome/test/data/webui/cr_elements/cr_action_menu_test.js
index 7a316a7c..7839793 100644
--- a/chrome/test/data/webui/cr_elements/cr_action_menu_test.js
+++ b/chrome/test/data/webui/cr_elements/cr_action_menu_test.js
@@ -23,7 +23,7 @@
   let container = null;
 
   /** @type {Element} */
-  let checkbox = null;
+  let checkboxFocusableElement = null;
 
   /** @override */
   suiteSetup(() => {
@@ -47,7 +47,7 @@
     menu = document.querySelector('cr-action-menu');
     dialog = menu.getDialog();
     items = menu.querySelectorAll('.dropdown-item');
-    checkbox = items[2].getFocusableElement();
+    checkboxFocusableElement = items[2].getFocusableElement();
     dots = document.querySelector('#dots');
     assertEquals(3, items.length);
   });
@@ -94,7 +94,7 @@
     items[1].disabled = true;
     menu.showAt(dots);
     down();
-    assertEquals(checkbox, getDeepActiveElement());
+    assertEquals(checkboxFocusableElement, getDeepActiveElement());
   });
 
   test('focus after down/up arrow', function() {
@@ -104,36 +104,66 @@
     assertEquals(menu, document.activeElement);
     assertNotEquals(items[0], getDeepActiveElement());
     assertNotEquals(items[1], getDeepActiveElement());
-    assertNotEquals(checkbox, getDeepActiveElement());
+    assertNotEquals(checkboxFocusableElement, getDeepActiveElement());
 
     down();
     assertEquals(items[0], getDeepActiveElement());
     down();
     assertEquals(items[1], getDeepActiveElement());
     down();
-    assertEquals(checkbox, getDeepActiveElement());
+    assertEquals(checkboxFocusableElement, getDeepActiveElement());
     down();
     assertEquals(items[0], getDeepActiveElement());
     up();
-    assertEquals(checkbox, getDeepActiveElement());
+    assertEquals(checkboxFocusableElement, getDeepActiveElement());
     up();
     assertEquals(items[1], getDeepActiveElement());
     up();
     assertEquals(items[0], getDeepActiveElement());
     up();
-    assertEquals(checkbox, getDeepActiveElement());
+    assertEquals(checkboxFocusableElement, getDeepActiveElement());
 
     items[1].disabled = true;
     up();
     assertEquals(items[0], getDeepActiveElement());
   });
 
+  test('focus skips cr-checkbox when disabled or hidden', () => {
+    menu.showAt(dots);
+    const crCheckbox = document.querySelector('cr-checkbox');
+    assertEquals(items[2], crCheckbox);
+
+    // Check checkbox is focusable when not disabled or hidden.
+    down();
+    assertEquals(items[0], getDeepActiveElement());
+    down();
+    assertEquals(items[1], getDeepActiveElement());
+    down();
+    assertEquals(checkboxFocusableElement, getDeepActiveElement());
+
+    // Check checkbox is not focusable when either disabled or hidden.
+    [[false, true],
+     [true, false],
+     [true, true],
+    ].forEach(([disabled, hidden]) => {
+      crCheckbox.disabled = disabled;
+      crCheckbox.hidden = hidden;
+      getDeepActiveElement().blur();
+      down();
+      assertEquals(items[0], getDeepActiveElement());
+      down();
+      assertEquals(items[1], getDeepActiveElement());
+      down();
+      assertEquals(items[0], getDeepActiveElement());
+    });
+  });
+
   test('pressing up arrow when no focus will focus last item', function() {
     menu.showAt(dots);
     assertEquals(menu, document.activeElement);
 
     up();
-    assertEquals(checkbox, getDeepActiveElement());
+    assertEquals(checkboxFocusableElement, getDeepActiveElement());
   });
 
   test('pressing enter when no focus', function() {
@@ -173,7 +203,7 @@
 
     up();
     // Focus should have wrapped around to final item.
-    assertEquals(checkbox, getDeepActiveElement());
+    assertEquals(checkboxFocusableElement, getDeepActiveElement());
   });
 
   test('close on click away', function() {
@@ -238,9 +268,9 @@
     assertEquals(menu, document.activeElement);
 
     // Moving mouse on a disabled item should focus the menu.
-    items[2].setAttribute('disabled', '');
+    items[2].toggleAttribute('disabled', true);
     makeMouseoverEvent(items[2]);
-    assertNotEquals(checkbox, getDeepActiveElement());
+    assertNotEquals(checkboxFocusableElement, getDeepActiveElement());
     assertEquals(menu, document.activeElement);
 
     // Mouse movements should override keyboard focus.
diff --git a/chrome/test/data/webui/downloads/manager_tests.js b/chrome/test/data/webui/downloads/manager_tests.js
index ddf31ea8..8971040 100644
--- a/chrome/test/data/webui/downloads/manager_tests.js
+++ b/chrome/test/data/webui/downloads/manager_tests.js
@@ -135,4 +135,32 @@
     loadTimeData.getBoolean('isManaged');
     loadTimeData.getString('managedByOrg');
   });
+
+  test('toast is shown when clear-all-command is fired', () => {
+    const toastManager = cr.toastManager.getInstance();
+    assertFalse(toastManager.isToastOpen);
+    const event = new Event('command', {bubbles: true});
+    event.command = {id: 'clear-all-command'};
+    manager.dispatchEvent(event);
+    assertTrue(toastManager.isToastOpen);
+    assertFalse(toastManager.isUndoButtonHidden);
+  });
+
+  test('toast is hidden when undo-command is fired', () => {
+    const toastManager = cr.toastManager.getInstance();
+    toastManager.show('');
+    const event = new Event('command', {bubbles: true});
+    event.command = {id: 'undo-command'};
+    assertTrue(toastManager.isToastOpen);
+    manager.dispatchEvent(event);
+    assertFalse(toastManager.isToastOpen);
+  });
+
+  test('toast is hidden when undo is clicked', () => {
+    const toastManager = cr.toastManager.getInstance();
+    toastManager.show('');
+    assertTrue(toastManager.isToastOpen);
+    toastManager.dispatchEvent(new Event('undo-click'));
+    assertFalse(toastManager.isToastOpen);
+  });
 });
diff --git a/chrome/test/data/webui/downloads/toolbar_tests.js b/chrome/test/data/webui/downloads/toolbar_tests.js
index b48757e3..a8d0d57 100644
--- a/chrome/test/data/webui/downloads/toolbar_tests.js
+++ b/chrome/test/data/webui/downloads/toolbar_tests.js
@@ -12,9 +12,11 @@
       }
     }
 
+    PolymerTest.clearBody();
     toolbar = document.createElement('downloads-toolbar');
     downloads.SearchService.instance_ = new TestSearchService;
     document.body.appendChild(toolbar);
+    document.body.appendChild(document.createElement('cr-toast-manager'));
   });
 
   test('resize closes more options menu', function() {
@@ -44,4 +46,13 @@
     toolbar.$.toolbar.getSearchField().setValue('test');
     assertTrue(clearAll.hidden);
   });
+
+  test('toast is shown when clear all button clicked', () => {
+    const toastManager = cr.toastManager.getInstance();
+    assertFalse(toastManager.isToastOpen);
+    toolbar.hasClearableDownloads = true;
+    toolbar.$$('#moreActionsMenu button').click();
+    assertTrue(toastManager.isToastOpen);
+    assertFalse(toastManager.isUndoButtonHidden);
+  });
 });
diff --git a/chrome/test/data/webui/icon_test.html b/chrome/test/data/webui/icon_test.html
index 8a9c9f5..c5bda5c 100644
--- a/chrome/test/data/webui/icon_test.html
+++ b/chrome/test/data/webui/icon_test.html
@@ -7,10 +7,16 @@
 function testGetFavicon_NonFavicon() {
   var url = 'http://foo.com';
   var expectedDesktop = '-webkit-image-set(' +
-      'url("chrome://favicon2/?size=16&scale_factor=1x&url_type=page_url&url='+encodeURIComponent('http://foo.com')+'") 1x, ' +
-      'url("chrome://favicon2/?size=16&scale_factor=2x&url_type=page_url&url='+encodeURIComponent('http://foo.com')+'") 2x)';
+      'url("chrome://favicon2/?size=16&scale_factor=1x&url_type=page_url&url=' +
+      encodeURIComponent('http://foo.com') +
+      '&allow_google_server_fallback=0") 1x, ' +
+      'url("chrome://favicon2/?size=16&scale_factor=2x&url_type=page_url&url=' +
+      encodeURIComponent('http://foo.com') +
+      '&allow_google_server_fallback=0") 2x)';
   var expectedOther = '-webkit-image-set(' +
-      'url("chrome://favicon2/?size=16&scale_factor=1x&url_type=page_url&url='+encodeURIComponent('http://foo.com')+'") ' +
+      'url("chrome://favicon2/?size=16&scale_factor=1x&url_type=page_url&url=' +
+      encodeURIComponent('http://foo.com') +
+      '&allow_google_server_fallback=0") ' +
       window.devicePixelRatio + 'x)';
 
   var isDesktop = cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux;
diff --git a/chrome/test/data/webui/media_router/OWNERS b/chrome/test/data/webui/media_router/OWNERS
deleted file mode 100644
index fda51ea..0000000
--- a/chrome/test/data/webui/media_router/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-file://chrome/browser/media/router/OWNERS
-
-# COMPONENT: Internals>Cast>UI
diff --git a/chrome/test/data/webui/media_router/issue_banner_tests.js b/chrome/test/data/webui/media_router/issue_banner_tests.js
deleted file mode 100644
index 7e2c048..0000000
--- a/chrome/test/data/webui/media_router/issue_banner_tests.js
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for issue-banner. */
-cr.define('issue_banner', function() {
-  function registerTests() {
-    suite('IssueBanner', function() {
-      /**
-       * Issue Banner created before each test.
-       * @type {IssueBanner}
-       */
-      var banner;
-
-      /**
-       * Fake blocking issue with an optional action created before
-       * each test.
-       * @type {media_router.Issue}
-       */
-      var fakeBlockingIssueOne;
-
-      /**
-       * Fake blocking issue without an optional action created before
-       * each test.
-       * @type {media_router.Issue}
-       */
-      var fakeBlockingIssueTwo;
-
-      /**
-       * Fake non-blocking issue with an optional action created before
-       * each test.
-       * @type {media_router.Issue}
-       */
-      var fakeNonBlockingIssueOne;
-
-      /**
-       * Fake non-blocking issue without an optional action created before
-       * each test.
-       * @type {media_router.Issue}
-       */
-      var fakeNonBlockingIssueTwo;
-
-      // Checks whether the 'issue-action-click' event was fired with the
-      // expected data.
-      var checkDataFromEventFiring = function(issue, data, isDefault) {
-        assertEquals(issue.id, data.detail.id);
-        if (isDefault) {
-          assertEquals(issue.defaultActionType, data.detail.actionType);
-        } else {
-          assertEquals(issue.secondaryActionType, data.detail.actionType);
-        }
-        assertEquals(issue.helpPageId, data.detail.helpPageId);
-      };
-
-      // Checks whether |expected| and the text in the |elementId| element
-      // are equal.
-      var checkElementText = function(expected, elementId) {
-        assertEquals(expected.trim(), banner.$[elementId].textContent.trim());
-      };
-
-      // Checks whether |issue| title are equal with the title text in the UI.
-      var checkIssueText = function(issue) {
-        if (issue) {
-          checkElementText(issue.title, 'title');
-
-          checkElementText(
-              loadTimeData.getString(banner.actionTypeToButtonTextResource_
-                                         [issue.defaultActionType]),
-              'default-button');
-
-          if (issue.secondaryActionType) {
-            checkElementText(
-                loadTimeData.getString(banner.actionTypeToButtonTextResource_
-                                           [issue.secondaryActionType]),
-                'opt-button');
-          }
-        } else {
-          checkElementText('', 'title');
-          checkElementText('', 'default-button');
-          checkElementText('', 'opt-button');
-        }
-      };
-
-      // Checks whether parts of the UI is visible.
-      var checkButtonVisibility = function(optAction) {
-        assertEquals(
-            !optAction, banner.$['buttons'].querySelector('cr-button').hidden);
-      };
-
-      // Import issue_banner.html before running suite.
-      suiteSetup(function() {
-        return PolymerTest.importHtml(
-            'chrome://media-router/elements/issue_banner/' +
-            'issue_banner.html');
-      });
-
-      // Initialize an issue-banner before each test.
-      setup(function(done) {
-        PolymerTest.clearBody();
-        banner = document.createElement('issue-banner');
-        document.body.appendChild(banner);
-
-        // Initialize issues.
-        fakeBlockingIssueOne = new media_router.Issue(
-            1, 'Issue Title 1', 'Issue Message 1', 0, 1, 'route id 1', true,
-            1234);
-        fakeBlockingIssueTwo = new media_router.Issue(
-            2, 'Issue Title 2', 'Issue Message 2', 0, undefined, 'route id 2',
-            true, 1234);
-        fakeNonBlockingIssueOne = new media_router.Issue(
-            3, 'Issue Title 3', 'Issue Message 3', 0, 1, 'route id 3', false,
-            1234);
-        fakeNonBlockingIssueTwo = new media_router.Issue(
-            4, 'Issue Title 4', 'Issue Message 4', 0, undefined, 'route id 4',
-            false, 1234);
-
-        // Allow for the issue banner to be created and attached.
-        setTimeout(done);
-      });
-
-      // Tests for 'issue-action-click' event firing when a blocking issue
-      // default action is clicked.
-      test('blocking issue default action click', function(done) {
-        banner.issue = fakeBlockingIssueOne;
-        banner.addEventListener('issue-action-click', function(data) {
-          checkDataFromEventFiring(fakeBlockingIssueOne, data, true);
-          done();
-        });
-        MockInteractions.tap(banner.$['default-button']);
-      });
-
-      // Tests for 'issue-action-click' event firing when a blocking issue
-      // optional action is clicked.
-      test('blocking issue optional action click', function(done) {
-        banner.issue = fakeBlockingIssueOne;
-        banner.addEventListener('issue-action-click', function(data) {
-          checkDataFromEventFiring(fakeBlockingIssueOne, data, false);
-          done();
-        });
-        MockInteractions.tap(banner.$['opt-button']);
-      });
-
-      // Tests for 'issue-action-click' event firing when a non-blocking issue
-      // default action is clicked.
-      test('non-blocking issue default action click', function(done) {
-        banner.issue = fakeNonBlockingIssueOne;
-        banner.addEventListener('issue-action-click', function(data) {
-          checkDataFromEventFiring(fakeNonBlockingIssueOne, data, true);
-          done();
-        });
-        MockInteractions.tap(banner.$['default-button']);
-      });
-
-      // Tests for 'issue-action-click' event firing when a non-blocking issue
-      // optional action is clicked.
-      test('non-blocking issue optional action click', function(done) {
-        banner.issue = fakeNonBlockingIssueOne;
-        banner.addEventListener('issue-action-click', function(data) {
-          checkDataFromEventFiring(fakeNonBlockingIssueOne, data, false);
-          done();
-        });
-        MockInteractions.tap(banner.$['opt-button']);
-      });
-
-      // Tests the issue text. While the UI will show only the blocking or
-      // non-blocking interface, the issue's info will be set if specified.
-      test('issue text', function() {
-        // |issue| is initially undefined.
-        assertEquals(undefined, banner.issue);
-
-        // Set |issue| to be a blocking issue. Title text should be updated.
-        banner.issue = fakeBlockingIssueOne;
-        checkIssueText(banner.issue);
-
-        // Set |issue| to be a non-blocking issue. Title text should be
-        // updated.
-        banner.issue = fakeNonBlockingIssueOne;
-        checkIssueText(banner.issue);
-      });
-
-      // Tests whether parts of the issue-banner is hidden based on the
-      // current state.
-      test('hidden versus visible components', function() {
-        // The blocking UI should be shown along with an optional action.
-        banner.issue = fakeBlockingIssueOne;
-        checkButtonVisibility(fakeBlockingIssueOne.secondaryActionType);
-
-        // The blocking UI should be shown without an optional action.
-        banner.issue = fakeBlockingIssueTwo;
-        checkButtonVisibility(fakeBlockingIssueTwo.secondaryActionType);
-
-        // The non-blocking UI should be shown along with an optional action.
-        banner.issue = fakeNonBlockingIssueOne;
-        checkButtonVisibility(fakeNonBlockingIssueOne.secondaryActionType);
-
-        // The non-blocking UI should be shown without an optional action.
-        banner.issue = fakeNonBlockingIssueTwo;
-        checkButtonVisibility(fakeNonBlockingIssueTwo.secondaryActionType);
-      });
-    });
-  }
-
-  return {
-    registerTests: registerTests,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/media_router_container_cast_mode_list_tests.js b/chrome/test/data/webui/media_router/media_router_container_cast_mode_list_tests.js
deleted file mode 100644
index 98eb05ef..0000000
--- a/chrome/test/data/webui/media_router/media_router_container_cast_mode_list_tests.js
+++ /dev/null
@@ -1,553 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for media-router-container that focus on the
- * cast mode list.
- */
-cr.define('media_router_container_cast_mode_list', function() {
-  function registerTests() {
-    suite('MediaRouterContainerCastModeList', function() {
-      /**
-       * Checks whether |view| matches the current view of |container|.
-       *
-       * @param {!media_router.MediaRouterView} view Expected view type.
-       */
-      var checkCurrentView;
-
-      /**
-       * Checks whether the elements specified in |elementIdList| are visible.
-       * Checks whether all other elements are not visible. Throws an assertion
-       * error if this is not true.
-       *
-       * @param {!Array<!string>} elementIdList List of id's of elements that
-       *     should be visible.
-       */
-      var checkElementsVisibleWithId;
-
-      /**
-       * Checks whether |expected| and the text in the |element| are equal.
-       *
-       * @param {!string} expected Expected text.
-       * @param {!Element} element Element whose text will be checked.
-       */
-      var checkElementText;
-
-      /**
-       * Media Router Container created before each test.
-       * @type {?MediaRouterContainer}
-       */
-      var container;
-
-      /**
-       * The blocking issue to show.
-       * @type {?media_router.Issue}
-       */
-      var fakeBlockingIssue;
-
-      /**
-       * The list of CastModes to show.
-       * @type {!Array<!media_router.CastMode>}
-       */
-      var fakeCastModeList = [];
-
-      /**
-       * The list of CastModes to show with non-PRESENTATION modes only.
-       * @type {!Array<!media_router.CastMode>}
-       */
-      var fakeCastModeListWithNonPresentationModesOnly = [];
-
-      /**
-       * The list of CastModes to show with PRESENTATION mode forced.
-       * @type {!Array<!media_router.CastMode>}
-       */
-      var fakeCastModeListWithPresentationModeForced = [];
-
-      /**
-       * The list of CastModes including local media, which is just local file
-       * at the moement.
-       * @type {!Array<!media_router.CastMode>}
-       */
-      var fakeCastModeListWithLocalMedia = [];
-
-      /**
-       * The blocking issue to show.
-       * @type {?media_router.Issue}
-       */
-      var fakeNonBlockingIssue;
-
-      /**
-       * The list of available sinks.
-       * @type {!Array<!media_router.Sink>}
-       */
-      var fakeSinkList = [];
-
-      // Import media_router_container.html before running suite.
-      suiteSetup(function() {
-        return PolymerTest.importHtml(
-            'chrome://media-router/elements/media_router_container/' +
-            'media_router_container.html');
-      });
-
-      setup(function(done) {
-        PolymerTest.clearBody();
-        // Initialize a media-router-container before each test.
-        container = document.createElement('media-router-container');
-        container.get = function(strName) {
-          return this.$[strName];
-        };
-
-        document.body.appendChild(container);
-
-        // Get common functions and variables.
-        var testBase = media_router_container_test_base.init(container);
-
-        checkCurrentView = testBase.checkCurrentView;
-        checkElementsVisibleWithId = testBase.checkElementsVisibleWithId;
-        checkElementText = testBase.checkElementText;
-        fakeBlockingIssue = testBase.fakeBlockingIssue;
-        fakeCastModeList = testBase.fakeCastModeList;
-        fakeCastModeListWithNonPresentationModesOnly =
-            testBase.fakeCastModeListWithNonPresentationModesOnly;
-        fakeCastModeListWithPresentationModeForced =
-            testBase.fakeCastModeListWithPresentationModeForced;
-        fakeCastModeListWithLocalMedia =
-            testBase.fakeCastModeListWithLocalMedia;
-        fakeNonBlockingIssue = testBase.fakeNonBlockingIssue;
-        fakeSinkList = testBase.fakeSinkList;
-
-        container.castModeList = testBase.fakeCastModeList;
-
-        // Allow for the media router container to be created, attached, and
-        // listeners registered in an afterNextRender() call.
-        Polymer.RenderStatus.afterNextRender(this, done);
-      });
-
-      // Container remains in auto mode even if the cast mode list changed.
-      test('cast mode list updated in auto mode', function(done) {
-        assertEquals(
-            media_router.AUTO_CAST_MODE.description, container.headerText);
-        assertEquals(
-            media_router.CastModeType.AUTO, container.shownCastModeValue_);
-        assertFalse(container.userHasSelectedCastMode_);
-
-        container.castModeList = fakeCastModeList.slice(1);
-        setTimeout(function() {
-          assertEquals(
-              media_router.AUTO_CAST_MODE.description, container.headerText);
-          assertEquals(
-              media_router.CastModeType.AUTO, container.shownCastModeValue_);
-          assertFalse(container.userHasSelectedCastMode_);
-          done();
-        });
-      });
-
-      // Tests that |container| returns to SINK_LIST view and arrow drop icon
-      // toggles after a cast mode is selected.
-      test('select cast mode', function(done) {
-        container.castModeList = fakeCastModeListWithNonPresentationModesOnly;
-
-        MockInteractions.tap(
-            container.get('container-header').$['arrow-drop-icon']);
-        checkCurrentView(media_router.MediaRouterView.CAST_MODE_LIST);
-
-        setTimeout(function() {
-          var castModeList = container.$$('#cast-mode-list')
-                                 .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(castModeList[1]);
-          checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-          done();
-        });
-      });
-
-      // Tests that clicking on the drop down icon will toggle |container|
-      // between SINK_LIST and CAST_MODE_LIST views.
-      test('click drop down icon', function() {
-        checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-
-        MockInteractions.tap(
-            container.get('container-header').$['arrow-drop-icon']);
-        checkCurrentView(media_router.MediaRouterView.CAST_MODE_LIST);
-
-        MockInteractions.tap(
-            container.get('container-header').$['arrow-drop-icon']);
-        checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-      });
-
-      // Tests the header text. Choosing a cast mode updates the header text.
-      test('header text with cast mode selected', function(done) {
-        assertEquals(
-            loadTimeData.getString('selectCastModeHeaderText'),
-            container.i18n('selectCastModeHeaderText'));
-
-        // The container is currently in auto cast mode, since we have not
-        // picked a cast mode explicitly, and the sinks is not compatible
-        // with exactly one cast mode.
-        assertEquals(
-            media_router.AUTO_CAST_MODE.description, container.headerText);
-        assertFalse(container.userHasSelectedCastMode_);
-
-        container.castModeList = fakeCastModeListWithNonPresentationModesOnly;
-
-        // Switch to cast mode list view.
-        MockInteractions.tap(
-            container.get('container-header').$['arrow-drop-icon']);
-        setTimeout(function() {
-          var castModeList = container.$$('#cast-mode-list')
-                                 .querySelectorAll('button.selectable-item');
-          assertEquals(
-              fakeCastModeListWithNonPresentationModesOnly.length,
-              castModeList.length);
-          for (var i = 0; i < castModeList.length; i++) {
-            MockInteractions.tap(castModeList[i]);
-
-            assertEquals(
-                fakeCastModeListWithNonPresentationModesOnly[i].description,
-                container.headerText);
-
-            checkElementText(
-                fakeCastModeListWithNonPresentationModesOnly[i].description,
-                castModeList[i]);
-          }
-
-          done();
-        });
-      });
-
-      // Tests the header text when updated with a cast mode list with a mix of
-      // PRESENTATION and non-PRESENTATION cast modes.
-      test('cast modes with one presentation mode', function(done) {
-        container.castModeList = fakeCastModeList;
-
-        // Switch to cast mode list view.
-        MockInteractions.tap(
-            container.get('container-header').$['arrow-drop-icon']);
-        setTimeout(function() {
-          var castModeList = container.$$('#cast-mode-list')
-                                 .querySelectorAll('button.selectable-item');
-
-          for (var i = 0; i < fakeCastModeList.length; i++) {
-            MockInteractions.tap(castModeList[i]);
-            if (fakeCastModeList[i].type ==
-                media_router.CastModeType.PRESENTATION) {
-              assertEquals(
-                  fakeCastModeList[i].description, container.headerText);
-
-              checkElementText(fakeCastModeList[i].host, castModeList[i]);
-            } else {
-              assertEquals(
-                  fakeCastModeList[i].description, container.headerText);
-              checkElementText(
-                  fakeCastModeList[i].description, castModeList[i]);
-            }
-          }
-
-          done();
-        });
-      });
-
-      // Tests that pseudo sinks are ignored for the purpose of computing
-      // which cast mode to show.
-      test('cast modes not affected by pseudo sink', function(done) {
-        assertEquals(
-            media_router.CastModeType.AUTO, container.shownCastModeValue_);
-        container.castModeList = fakeCastModeList;
-        var sink = new media_router.Sink(
-            'pseudo-sink-id', 'Pseudo sink', null, null,
-            media_router.SinkIconType.GENERIC, media_router.SinkStatus.ACTIVE,
-            /* DESKTOP */ 0x4);
-        sink.isPseudoSink = true;
-        container.allSinks = [sink];
-
-        setTimeout(function() {
-          assertEquals(
-              media_router.CastModeType.AUTO, container.shownCastModeValue_);
-          done();
-        });
-      });
-
-      // Tests for expected visible UI when the view is CAST_MODE_LIST.
-      test('cast mode list state visibility', function(done) {
-        container.showCastModeList_();
-        setTimeout(function() {
-          checkElementsVisibleWithId(
-              ['cast-mode-list', 'container-header', 'device-missing']);
-
-          // Set a non-blocking issue. The issue should be visible.
-          container.issue = fakeNonBlockingIssue;
-          setTimeout(function() {
-            checkElementsVisibleWithId([
-              'cast-mode-list', 'container-header', 'device-missing',
-              'issue-banner'
-            ]);
-
-            // Set a blocking issue. The cast mode list should not be displayed.
-            container.issue = fakeBlockingIssue;
-            setTimeout(function() {
-              checkElementsVisibleWithId(
-                  ['container-header', 'device-missing', 'issue-banner']);
-              done();
-            });
-          });
-        });
-      });
-
-      // If the container is not in auto mode, and the mode it is currently in
-      // no longer exists in the list of cast modes, then switch back to auto
-      // mode.
-      test('cast mode list updated in selected cast mode', function(done) {
-        assertEquals(
-            media_router.AUTO_CAST_MODE.description, container.headerText);
-        assertEquals(
-            media_router.CastModeType.AUTO, container.shownCastModeValue_);
-        assertFalse(container.userHasSelectedCastMode_);
-
-        MockInteractions.tap(
-            container.get('container-header').$['arrow-drop-icon']);
-        setTimeout(function() {
-          var castModeList = container.$$('#cast-mode-list')
-                                 .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(castModeList[0]);
-          setTimeout(function() {
-            assertEquals(fakeCastModeList[0].description, container.headerText);
-            assertEquals(
-                fakeCastModeList[0].type, container.shownCastModeValue_);
-
-            assertTrue(container.userHasSelectedCastMode_);
-
-            container.castModeList = fakeCastModeList.slice(1);
-            setTimeout(function() {
-              assertEquals(
-                  media_router.AUTO_CAST_MODE.description,
-                  container.headerText);
-              assertEquals(
-                  media_router.CastModeType.AUTO,
-                  container.shownCastModeValue_);
-              assertFalse(container.userHasSelectedCastMode_);
-              done();
-            });
-          });
-        });
-      });
-
-      // Tests that after a different cast mode is selected, the sink list will
-      // change based on the sinks compatibility with the new cast mode.
-      test('changing cast mode changes sink list', function(done) {
-        container.allSinks = fakeSinkList;
-
-        MockInteractions.tap(
-            container.get('container-header').$['arrow-drop-icon']);
-        setTimeout(function() {
-          var castModeList = container.$$('#cast-mode-list')
-                                 .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(castModeList[0]);
-          assertEquals(fakeCastModeList[0].description, container.headerText);
-
-          setTimeout(function() {
-            var sinkList = container.shadowRoot.getElementById('sink-list');
-            // The sink list is hidden because none of the sinks in
-            // fakeSinkList is compatible with cast mode 0.
-            assertEquals('none', window.getComputedStyle(sinkList).display);
-            MockInteractions.tap(castModeList[2]);
-            assertEquals(fakeCastModeList[2].description, container.headerText);
-
-            setTimeout(function() {
-              var sinkList = container.shadowRoot.getElementById('sink-list');
-              var sinkListElements =
-                  sinkList.querySelectorAll('button.selectable-item');
-              assertNotEquals(
-                  'none', window.getComputedStyle(sinkList).display);
-              assertEquals(3, sinkListElements.length);
-              done();
-            });
-          });
-        });
-      });
-
-      // When a forced cast mode it set, it is used.
-      test('cast mode list respects forced mode', function(done) {
-        container.allSinks = [
-          new media_router.Sink(
-              'sink id 1', 'Sink 1', null, null, media_router.SinkIconType.CAST,
-              media_router.SinkStatus.ACTIVE, 0x1),
-          new media_router.Sink(
-              'sink id 2', 'Sink 2', null, null, media_router.SinkIconType.CAST,
-              media_router.SinkStatus.ACTIVE, 0x1 | 0x2),
-          new media_router.Sink(
-              'sink id 3', 'Sink 3', null, null, media_router.SinkIconType.CAST,
-              media_router.SinkStatus.ACTIVE, 0x2)
-        ];
-        container.castModeList = fakeCastModeListWithPresentationModeForced;
-        MockInteractions.tap(
-            container.$['container-header'].$['arrow-drop-icon']);
-        setTimeout(function() {
-          assertEquals(
-              media_router.CastModeType.PRESENTATION,
-              container.shownCastModeValue_);
-          assertEquals('Cast google.com', container.headerText);
-          assertFalse(container.userHasSelectedCastMode_);
-
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-
-          // The sink list contains only sinks compatible with PRESENTATION
-          // mode.
-          assertEquals(2, sinkList.length);
-          checkElementText('Sink 1', sinkList[0]);
-          checkElementText('Sink 2', sinkList[1]);
-          done();
-        });
-      });
-
-      // Tests that the sink list does not contain any sinks that are not
-      // compatible with the selected cast mode and are not associated with a
-      // route.
-      test('sink list in user selected cast mode', function(done) {
-        var newSinks = [
-          new media_router.Sink(
-              'sink id 10', 'Sink 10', null, null,
-              media_router.SinkIconType.CAST, media_router.SinkStatus.ACTIVE,
-              0x4 | 0x8),
-          new media_router.Sink(
-              'sink id 20', 'Sink 20', null, null,
-              media_router.SinkIconType.CAST, media_router.SinkStatus.ACTIVE,
-              0x2 | 0x4 | 0x8),
-          new media_router.Sink(
-              'sink id 30', 'Sink 30', null, null,
-              media_router.SinkIconType.CAST, media_router.SinkStatus.PENDING,
-              0x4 | 0x8),
-        ];
-
-        container.allSinks = newSinks;
-        container.routeList = [
-          new media_router.Route(
-              'id 1', 'sink id 30', 'Title 1', 1, false, false),
-        ];
-
-        setTimeout(function() {
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-
-          // Since we haven't selected a cast mode, we don't filter sinks.
-          assertEquals(3, sinkList.length);
-
-          MockInteractions.tap(
-              container.get('container-header').$['arrow-drop-icon']);
-          setTimeout(function() {
-            // Cast mode 1 is selected, and the sink list is filtered.
-            var castModeList = container.$$('#cast-mode-list')
-                                   .querySelectorAll('button.selectable-item');
-            MockInteractions.tap(castModeList[1]);
-            assertEquals(fakeCastModeList[1].description, container.headerText);
-            assertEquals(
-                fakeCastModeList[1].type, container.shownCastModeValue_);
-
-            setTimeout(function() {
-              var sinkList = container.shadowRoot.getElementById('sink-list')
-                                 .querySelectorAll('button.selectable-item');
-
-              // newSinks[0] got filtered out since it is not compatible with
-              // cast mode 1.
-              // 'Sink 20' should be on the list because it contains the
-              // selected cast mode. (sinkList[0] = newSinks[1])
-              // 'Sink 30' should be on the list because it has a route.
-              // (sinkList[1] = newSinks[2])
-              assertEquals(2, sinkList.length);
-              checkElementText(newSinks[1].name, sinkList[0]);
-
-              // |sinkList[1]| contains route title in addition to sink name.
-              assertTrue(sinkList[1].textContent.trim().startsWith(
-                  newSinks[2].name.trim()));
-
-              // Cast mode is not switched back even if there are no sinks
-              // compatible with selected cast mode, because we explicitly
-              // selected that cast mode.
-              container.allSinks = [];
-              setTimeout(function() {
-                assertEquals(
-                    fakeCastModeList[1].description, container.headerText);
-                assertEquals(
-                    fakeCastModeList[1].type, container.shownCastModeValue_);
-
-                // The sink list is hidden since there are no compatible sinks.
-                var sinkList = container.shadowRoot.getElementById('sink-list');
-                assertEquals('none', window.getComputedStyle(sinkList).display);
-                done();
-              });
-            });
-          });
-        });
-      });
-
-      // Tests that the header is set appropriately when files are selected
-      // one after the other.
-      test('cast to sink with existing route', function(done) {
-        container.castModeList = fakeCastModeListWithLocalMedia;
-
-        var fileName1 = 'file1';
-        var fileName2 = 'file2';
-
-        container.onFileDialogSuccess(fileName1);
-        setTimeout(function() {
-          assertTrue(container.headerText.includes(fileName1));
-          container.onFileDialogSuccess(fileName2);
-          setTimeout(function() {
-            assertTrue(container.headerText.includes(fileName2));
-            assertFalse(container.headerText.includes(fileName1));
-            done();
-          });
-        });
-      });
-
-      // Tests that the 'cast' button is shown in the route details view when
-      // the sink for the current route is compatible with the user-selected
-      // cast mode.
-      test('cast to sink with existing route', function(done) {
-        var newSinks = [
-          new media_router.Sink(
-              'sink id 10', 'Sink 10', null, null,
-              media_router.SinkIconType.CAST, media_router.SinkStatus.ACTIVE,
-              0x2 | 0x4 | 0x8),
-        ];
-
-        container.allSinks = newSinks;
-        container.routeList = [
-          new media_router.Route(
-              'id 1', 'sink id 10', 'Title 1', 1, false, false),
-        ];
-
-        setTimeout(function() {
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-
-          MockInteractions.tap(
-              container.get('container-header').$['arrow-drop-icon']);
-          setTimeout(function() {
-            // Cast mode 1 is selected, and the sink list is filtered.
-            var castModeList = container.$$('#cast-mode-list')
-                                   .querySelectorAll('button.selectable-item');
-            MockInteractions.tap(castModeList[1]);
-
-            setTimeout(function() {
-              var sinkList = container.shadowRoot.getElementById('sink-list')
-                                 .querySelectorAll('button.selectable-item');
-
-              MockInteractions.tap(sinkList[0]);
-              setTimeout(function() {
-                assertFalse(container.shadowRoot.getElementById('route-details')
-                                .shadowRoot
-                                .getElementById('start-casting-to-route-button')
-                                .hasAttribute('hidden'));
-                done();
-              });
-            });
-          });
-        });
-      });
-    });
-  }
-
-  return {
-    registerTests: registerTests,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/media_router_container_filter_tests.js b/chrome/test/data/webui/media_router/media_router_container_filter_tests.js
deleted file mode 100644
index f52a1cee..0000000
--- a/chrome/test/data/webui/media_router/media_router_container_filter_tests.js
+++ /dev/null
@@ -1,1007 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for media-router-container specifically related
- * to the filter view.
- */
-cr.define('media_router_container_filter', function() {
-  /**
-   * Wrapper that lets a function |f| run after the container animation promise
-   * completes but also lets any UI logic run before setting up the call. This
-   * is important because |container.animationPromise_| may not exist until the
-   * UI logic runs or it may be updated to a new Promise.  This wrapper also
-   * carries assertion errors (and any other exceptions) outside of the promise
-   * back into the test since throwing in a then() or catch() doesn't stop the
-   * test.
-   *
-   * @param {function()} f
-   */
-  var chainOnAnimationPromise = function(f) {
-    setTimeout(function() {
-      container.animationPromise_.then(f).catch(function(err) {
-        setTimeout(function() {
-          throw err;
-        });
-      });
-    });
-  };
-
-  /**
-   * Checks whether |view| matches the current view of |container|.
-   *
-   * @param {!media_router.MediaRouterView} view Expected view type.
-   */
-  var checkCurrentView;
-
-  /**
-   * Checks whether the elements specified in |elementIdList| are visible.
-   * Checks whether all other elements are not visible. Throws an assertion
-   * error if this is not true.
-   *
-   * @param {!Array<!string>} elementIdList List of id's of elements that
-   *     should be visible.
-   */
-  var checkElementsVisibleWithId;
-
-  /**
-   * Checks whether |expected| and the text in the |element| are equal.
-   *
-   * @param {!string} expected Expected text.
-   * @param {!Element} element Element whose text will be checked.
-   */
-  var checkElementText;
-
-  /**
-   * Media Router Container created before each test.
-   * @type {?MediaRouterContainer}
-   */
-  var container;
-
-  /**
-   * The blocking issue to show.
-   * @type {?media_router.Issue}
-   */
-  var fakeNonBlockingIssue;
-
-  /**
-   * The list of current routes.
-   * @type {!Array<!media_router.Route>}
-   */
-  var fakeRouteList = [];
-
-  /**
-   * The list of available sinks.
-   * @type {!Array<!media_router.Sink>}
-   */
-  var fakeSinkList = [];
-
-  /**
-   * Simulates pressing the Escape key on |element|.
-   * @param {!HTMLElement} element
-   */
-  var pressEscapeOnElement = function(element) {
-    element.dispatchEvent(new KeyboardEvent('keydown', {
-      'key': 'Escape',
-      'code': 'Escape',
-      'bubbles': true,
-      'composed': true,
-      'cancelable': true
-    }));
-  };
-
-  /**
-   * Search text that will match all sinks.
-   * @type {?string}
-   */
-  var searchTextAll;
-
-  /**
-   * Search text that won't match any sink in fakeSinkList.
-   * @type {?string}
-   */
-  var searchTextNone;
-
-  /**
-   * Search text that will match exactly one sink.
-   * @type {?string}
-   */
-  var searchTextOne;
-
-  /**
-   * Import media_router_container.html before running suite.
-   */
-  var doSuiteSetup = function() {
-    return PolymerTest.importHtml(
-        'chrome://media-router/elements/media_router_container/' +
-        'media_router_container.html');
-  };
-
-  /**
-   * Performs test setup before each test.
-   *
-   * @param {function()} done Function for async test completion.
-   */
-  var doSetup = function(done) {
-    PolymerTest.clearBody();
-    // Initialize a media-router-container before each test.
-    container = document.createElement('media-router-container');
-    document.body.appendChild(container);
-
-    // Get common functions and variables.
-    var test_base = media_router_container_test_base.init(container);
-
-    checkCurrentView = test_base.checkCurrentView;
-    checkElementsVisibleWithId = test_base.checkElementsVisibleWithId;
-    checkElementText = test_base.checkElementText;
-    fakeNonBlockingIssue = test_base.fakeNonBlockingIssue;
-    fakeRouteList = test_base.fakeRouteList;
-    fakeSinkList = test_base.fakeSinkList;
-    searchTextAll = test_base.searchTextAll;
-    searchTextNone = test_base.searchTextNone;
-    searchTextOne = test_base.searchTextOne;
-
-    container.castModeList = test_base.fakeCastModeList;
-    container.searchEnabled_ = true;
-
-    // Allow for the media router container to be created, attached, and
-    // listeners registered in an afterNextRender() call.
-    Polymer.RenderStatus.afterNextRender(this, done);
-  };
-
-  function registerTestsPart1() {
-    suite('MediaRouterContainerFilterPart1', function() {
-      suiteSetup(doSuiteSetup);
-      setup(doSetup);
-
-      // Tests that clicking the search icon will cause the container to enter
-      // filter view.
-      test('click search icon', function(done) {
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          checkCurrentView(media_router.MediaRouterView.FILTER);
-          assertEquals(
-              container.$$('#sink-search-input'),
-              container.shadowRoot.activeElement);
-          done();
-        });
-      });
-
-      // Tests that focusing the sink search input will cause the container to
-      // enter filter view.
-      test('focus sink search input', function(done) {
-        MockInteractions.focus(container.$$('#sink-search-input'));
-        setTimeout(function() {
-          checkCurrentView(media_router.MediaRouterView.FILTER);
-          assertEquals(
-              container.$$('#sink-search-input'),
-              container.shadowRoot.activeElement);
-          done();
-        });
-      });
-
-      // Tests that the back button in the FILTER view returns |container| to
-      // the SINK_LIST view.
-      test('filter view back button', function(done) {
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          MockInteractions.tap(
-              container.shadowRoot.getElementById('container-header')
-                  .shadowRoot.getElementById('back-button'));
-          checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-          done();
-        });
-      });
-
-      // Tests that pressing the Escape key in the FILTER view returns
-      // |container| to the SINK_LIST view.
-      test('filter view escape key', function(done) {
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          pressEscapeOnElement(container);
-          checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-          done();
-        });
-      });
-
-      // Tests that pressing the Escape key in the FILTER view when a sink has
-      // keyboard focus returns |container| to the SINK_LIST view and focuses
-      // the correct sink in the list. We need to check that the same sink
-      // remains both focused and selected, where focused refers to the
-      // "focused" HTML attribute, and selected refers to the Polymer "selected"
-      // attribute of the paper-menu for the sink list.
-      test('filter view escape key on menu item', function(done) {
-        var focusIndex = 2;
-        container.allSinks = fakeSinkList;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          var searchResultsPaperMenu =
-              container.$$('#search-results-paper-menu');
-          // Use the Polymer method for selecting (and focusing on) a sink
-          searchResultsPaperMenu.selectIndex(focusIndex);
-          var itemInSearch = searchResultsPaperMenu.querySelectorAll(
-              'button.selectable-item')[focusIndex];
-          // TODO(crbug.com/608551): This condition handles flakiness around
-          // the search item getting focus earlier. If it doesn't get focus,
-          // the logic that changes focus from a search item to a sink list
-          // item obviously won't do anything.
-          if (itemInSearch.focused) {
-            var selectedIndexInSearch = searchResultsPaperMenu.selected;
-            pressEscapeOnElement(itemInSearch);
-            checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-            chainOnAnimationPromise(function() {
-              var sinkListPaperMenu = container.$$('#sink-list-paper-menu');
-              var item = sinkListPaperMenu.querySelectorAll(
-                  'button.selectable-item')[focusIndex];
-
-              // Check that the "focused" HTML attribute persists.
-              assertTrue(item.focused);
-              // Check that the "selected" Polymer attribute persists.
-              assertEquals(sinkListPaperMenu.selected, selectedIndexInSearch);
-              done();
-            });
-          } else {
-            done();
-          }
-        });
-      });
-
-      // Tests that pressing the Escape key in the FILTER view when a sink does
-      // not have keyboard focus returns |container| to the SINK_LIST view and
-      // leaves focus where it is.
-      test('filter view escape key on menu item other focus', function(done) {
-        container.allSinks = fakeSinkList;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          var item = container.$$('#search-results')
-                         .querySelectorAll('button.selectable-item')[1];
-          var closeButton = container.$['container-header'].$['close-button'];
-          closeButton.focus();
-          var focusedSuccess = closeButton.focused;
-          pressEscapeOnElement(item);
-          checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-          setTimeout(function() {
-            // TODO(crbug.com/608551): This condition handles flakiness around
-            // the button initially getting focus. If it doesn't get focus
-            // earlier, it obviously shouldn't have it now.
-            assertEquals(focusedSuccess, closeButton.focused);
-            done();
-          });
-        });
-      });
-
-      // Tests that expected elements are visible when in filter view.
-      test('filter view visibility', function(done) {
-        checkElementsVisibleWithId([
-          'container-header', 'device-missing', 'sink-search', 'sink-list-view'
-        ]);
-        // Clicking the search icon should transition |container| to FILTER
-        // view.
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        chainOnAnimationPromise(function() {
-          // The search results container is visible, since we are in filter
-          // view, but there are no results yet since there are no sinks.
-          checkElementsVisibleWithId([
-            'container-header', 'device-missing', 'sink-search',
-            'search-results-container', 'sink-list-view'
-          ]);
-
-          // Adding sinks should populate the search list.
-          container.allSinks = fakeSinkList;
-          chainOnAnimationPromise(function() {
-            checkElementsVisibleWithId([
-              'container-header', 'search-results-container', 'search-results',
-              'sink-search', 'sink-list-view'
-            ]);
-            // Typing text that doesn't match any sinks should display a 'no
-            // matches' message.
-            container.$$('#sink-search-input').value = searchTextNone;
-            checkElementsVisibleWithId([
-              'container-header', 'search-results-container',
-              'no-search-matches', 'sink-search', 'sink-list-view'
-            ]);
-            // Changing that text to something that matches at least one sink
-            // should show the matching sinks again.
-            container.$$('#sink-search-input').value = searchTextOne;
-            // maybe inside setTimeout
-            checkElementsVisibleWithId([
-              'container-header', 'search-results-container', 'search-results',
-              'sink-search', 'sink-list-view'
-            ]);
-            // Clicking the back button should leave |searchTextOne| in the
-            // input but return to the SINK_LIST view.
-            MockInteractions.tap(
-                container.shadowRoot.getElementById('container-header')
-                    .shadowRoot.getElementById('back-button'));
-            chainOnAnimationPromise(function() {
-              checkElementsVisibleWithId([
-                'container-header', 'sink-search', 'sink-list', 'sink-list-view'
-              ]);
-              // When the search button is clicked again, the matching sinks
-              // should be shown again. This doesn't prove that the matching
-              // worked when returning to the FILTER view though, just that it
-              // at least shows some sort of sink list as search results.
-              MockInteractions.tap(container.$$('#sink-search-icon'));
-              chainOnAnimationPromise(function() {
-                checkElementsVisibleWithId([
-                  'container-header', 'search-results-container',
-                  'search-results', 'sink-search', 'sink-list-view'
-                ]);
-
-                container.$$('#sink-search-input').value = searchTextNone;
-                // Clicking the back button should leave |searchTextNone| in the
-                // input but return to the SINK_LIST view.
-                MockInteractions.tap(
-                    container.shadowRoot.getElementById('container-header')
-                        .shadowRoot.getElementById('back-button'));
-                chainOnAnimationPromise(function() {
-                  checkElementsVisibleWithId([
-                    'container-header', 'sink-search', 'sink-list',
-                    'sink-list-view'
-                  ]);
-                  // When the search button is clicked again, there should be no
-                  // matches because |searchTextNone| should still be used to
-                  // filter.
-                  MockInteractions.tap(container.$$('#sink-search-icon'));
-                  chainOnAnimationPromise(function() {
-                    checkElementsVisibleWithId([
-                      'container-header', 'search-results-container',
-                      'no-search-matches', 'sink-search', 'sink-list-view'
-                    ]);
-                    // Pressing the Escape key in FILTER view should return
-                    // |container| to SINK_LIST view and not exit the dialog.
-                    pressEscapeOnElement(container);
-                    chainOnAnimationPromise(function() {
-                      checkElementsVisibleWithId([
-                        'container-header', 'sink-search', 'sink-list',
-                        'sink-list-view'
-                      ]);
-                      done();
-                    });
-                  });
-                });
-              });
-            });
-          });
-        });
-      });
-
-      // Tests for expected visible UI when the view is FILTER, and there is
-      // a non blocking issue.
-      test('filter view visibility non blocking issue', function(done) {
-        container.showSinkList_();
-
-        // Set an non-empty sink list.
-        container.allSinks = fakeSinkList;
-
-        // Set a non-blocking issue. The issue should be shown.
-        container.issue = fakeNonBlockingIssue;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        chainOnAnimationPromise(function() {
-          checkElementsVisibleWithId([
-            'container-header', 'issue-banner', 'search-results-container',
-            'search-results', 'sink-search', 'sink-list-view'
-          ]);
-          done();
-        });
-      });
-
-      // Tests that entering filter view with text already in the search input
-      // will immediately use that text to filter the sinks. This tests the case
-      // that the text matches one sink.
-      test('existing search text filters success', function(done) {
-        container.allSinks = fakeSinkList;
-        container.$$('#sink-search-input').value = searchTextOne;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          assertEquals(1, searchResults.length);
-          done();
-        });
-      });
-
-      // Tests that entering filter view with text already in the search input
-      // will immediately use that text to filter the sinks. This tests the case
-      // that the text doesn't match any sinks.
-      test('existing search text filters fail', function(done) {
-        container.allSinks = fakeSinkList;
-        container.$$('#sink-search-input').value = searchTextNone;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          assertEquals(0, searchResults.length);
-          done();
-        });
-      });
-
-      // Tests that the text in the search input is not cleared or altered after
-      // leaving filter view by pressing the back button in the header.
-      test('search text persists back button', function(done) {
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          container.$$('#sink-search-input').value = searchTextAll;
-
-          MockInteractions.tap(
-              container.shadowRoot.getElementById('container-header')
-                  .shadowRoot.getElementById('back-button'));
-          assertEquals(searchTextAll, container.$$('#sink-search-input').value);
-          done();
-        });
-      });
-
-      // Tests that the text in the search input is not cleared or altered after
-      // leaving filter view by pressing the Escape key.
-      test('search text persists escape key', function(done) {
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          container.$$('#sink-search-input').value = searchTextAll;
-
-          pressEscapeOnElement(container);
-          assertEquals(searchTextAll, container.$$('#sink-search-input').value);
-          done();
-        });
-      });
-    });
-  }
-
-  function registerTestsPart2() {
-    suite('MediaRouterContainerFilterPart2', function() {
-      suiteSetup(doSuiteSetup);
-      setup(doSetup);
-
-      // Tests that the correct number of results are returned in the search
-      // results.
-      test('search text filters correct number', function(done) {
-        container.allSinks = fakeSinkList;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        var searchInput = container.$$('#sink-search-input');
-        setTimeout(function() {
-          searchInput.value = searchTextAll;
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          assertEquals(fakeSinkList.length, searchResults.length);
-
-          searchInput.value = searchTextOne;
-          setTimeout(function() {
-            var searchResults = container.$$('#search-results')
-                                    .querySelectorAll('button.selectable-item');
-            assertEquals(1, searchResults.length);
-
-            searchInput.value = searchTextNone;
-            setTimeout(function() {
-              var searchResults =
-                  container.$$('#search-results')
-                      .querySelectorAll('button.selectable-item');
-              assertEquals(0, searchResults.length);
-              done();
-            });
-          });
-        });
-      });
-
-      // Tests that the correct item is returned when searching using the first
-      // fake sink's name.
-      test('search text filters correct text', function(done) {
-        container.allSinks = fakeSinkList;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        var testSinkName = fakeSinkList[0].name;
-        container.$$('#sink-search-input').value = testSinkName;
-        setTimeout(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          assertEquals(1, searchResults.length);
-          // This selector works only because there's only one result in the
-          // list.
-          var searchResultText =
-              container.$$('media-router-search-highlighter').text;
-          assertEquals(testSinkName.trim(), searchResultText.trim());
-          done();
-        });
-      });
-
-      // Tests that a route can be created from search results the same as in
-      // the sink list.
-      test('create route from search result without a route', function(done) {
-        container.allSinks = fakeSinkList;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          container.addEventListener('create-route', function(data) {
-            assertEquals(fakeSinkList[1].id, data.detail.sinkId);
-            done();
-          });
-          MockInteractions.tap(searchResults[1]);
-        });
-      });
-
-      // Tests that clicking a sink in the search results that already has an
-      // associated route will transition |container| to the ROUTE_DETAILS view.
-      test('navigate to route details from search result', function(done) {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteList;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(searchResults[1]);
-          checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS);
-          done();
-        });
-      });
-
-      // Tests that subtext is shown in filter view the same as the sink list.
-      // This is basically a copy of 'initial sink list route text' but in
-      // filter view.
-      test('subtext displayed in filter view', function(done) {
-        // Sink 1 - no sink description, no route -> no subtext
-        // Sink 2 - sink description, no route -> subtext = sink description
-        // Sink 3 - no sink description, route -> subtext = route description
-        // Sink 4 - sink description, route -> subtext = route description
-        container.allSinks = [
-          new media_router.Sink(
-              'sink id 1', 'Sink 1', null, null, media_router.SinkIconType.CAST,
-              media_router.SinkStatus.ACTIVE, [1, 2, 3]),
-          new media_router.Sink(
-              'sink id 2', 'Sink 2', 'Sink 2 description', null,
-              media_router.SinkIconType.CAST, media_router.SinkStatus.ACTIVE,
-              [1, 2, 3]),
-          new media_router.Sink(
-              'sink id 3', 'Sink 3', null, null, media_router.SinkIconType.CAST,
-              media_router.SinkStatus.PENDING, [1, 2, 3]),
-          new media_router.Sink(
-              'sink id 4', 'Sink 4', 'Sink 4 description', null,
-              media_router.SinkIconType.CAST, media_router.SinkStatus.PENDING,
-              [1, 2, 3])
-        ];
-
-        container.routeList = [
-          new media_router.Route('id 3', 'sink id 3', 'Title 3', 0, true),
-          new media_router.Route('id 4', 'sink id 4', 'Title 4', 1, false),
-        ];
-
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        setTimeout(function() {
-          var sinkSubtextList =
-              container.$$('#search-results').querySelectorAll('.sink-subtext');
-
-          // There will only be 3 sink subtext entries, because Sink 1 does not
-          // have any subtext.
-          assertEquals(3, sinkSubtextList.length);
-
-          checkElementText(
-              container.allSinks[1].description, sinkSubtextList[0]);
-
-          // Route description overrides sink description for subtext.
-          checkElementText(
-              container.routeList[0].description, sinkSubtextList[1]);
-
-          checkElementText(
-              container.routeList[1].description, sinkSubtextList[2]);
-          done();
-        });
-      });
-
-      // Tests that a filter action is reported only if text is entered in the
-      // search input and only once for each time the filter view is entered.
-      test('report filter action', function(done) {
-        var expectReportThen = function(cause, continuation) {
-          var internalExpect = function() {
-            container.removeEventListener('report-filter', internalExpect);
-            chainOnAnimationPromise(continuation);
-          };
-          container.addEventListener('report-filter', internalExpect);
-          cause();
-        };
-        var expectNoReport = function() {
-          assertTrue(false);
-        };
-        var cause;
-        var continuation;
-
-        // Tests that entering filter view and returning to the sink list view
-        // without typing any text doesn't report a filter action.
-        container.addEventListener('report-filter', expectNoReport);
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        chainOnAnimationPromise(function() {
-          MockInteractions.tap(
-              container.shadowRoot.getElementById('container-header')
-                  .shadowRoot.getElementById('back-button'));
-          container.removeEventListener('report-filter', expectNoReport);
-
-          // Tests that entering text for the first time in filter view reports
-          // a filter action.
-          cause = function() {
-            container.$$('#sink-search-input').value = 'a';
-          };
-          continuation = function() {
-            // Tests that entering more text in filter view doesn't report a
-            // filter action.
-            container.addEventListener('report-filter', expectNoReport);
-            container.$$('#sink-search-input').value = 'abc';
-            MockInteractions.tap(
-                container.shadowRoot.getElementById('container-header')
-                    .shadowRoot.getElementById('back-button'));
-            container.removeEventListener('report-filter', expectNoReport);
-
-            // Tests that entering filter view again with text already in the
-            // search input reports a filter action.
-            cause = function() {
-              MockInteractions.tap(container.$$('#sink-search-icon'));
-            };
-            continuation = function() {
-              // Tests that entering more text when the initial entry to the
-              // filter view reported a filter action doesn't report another
-              // filter action.
-              container.addEventListener('report-filter', expectNoReport);
-              container.$$('#sink-search-input').value = 'abcde';
-              done();
-            };
-            expectReportThen(cause, continuation);
-          };
-          expectReportThen(cause, continuation);
-        });
-      });
-
-      // Tests that filter view is not entered when switching between windows or
-      // tabs with keyboard focus on the search input and the container is
-      // currently in sink-list view.
-      test('switching window focus does not change view', function(done) {
-        container.allSinks = fakeSinkList;
-        MockInteractions.tap(container.$$('#sink-search-icon'));
-        chainOnAnimationPromise(function() {
-          checkCurrentView(media_router.MediaRouterView.FILTER);
-          pressEscapeOnElement(container);
-          chainOnAnimationPromise(function() {
-            var searchInput = container.$$('#sink-search-input');
-            checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-            assertEquals(container.shadowRoot.activeElement, searchInput);
-            var blur = new FocusEvent('blur');
-            var focus = new FocusEvent('focus');
-            // When this window loses focus, the active element receives a blur
-            // event then the window receives a blur event. When the window
-            // gains focus again, the window receives a focus event first then
-            // the active element receives a focus event. Finally the setTimeout
-            // lets these events run and we check the resulting state of the
-            // dialog.
-            searchInput.dispatchEvent(blur);
-            window.dispatchEvent(blur);
-            window.dispatchEvent(focus);
-            searchInput.dispatchEvent(focus);
-            setTimeout(function() {
-              checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-              done();
-            });
-          });
-        });
-      });
-
-      // Tests that compareSearchMatches_ works correctly for zero and one
-      // substring matches from the filter text. Earlier, longer matches should
-      // be ordered first, in that priority order.
-      test('compareSearchMatches_ test single substrings', function(done) {
-        var checkEqual = function(left, right) {
-          assertEquals(0, container.compareSearchMatches_(left, right));
-          assertEquals(0, container.compareSearchMatches_(right, left));
-        };
-        var checkLess = function(left, right) {
-          assertEquals(-1, container.compareSearchMatches_(left, right));
-          assertEquals(1, container.compareSearchMatches_(right, left));
-        };
-
-        var noMatches = {sinkItem: null, substrings: []};
-        var oneMatchSectionSingleChar = {sinkItem: null, substrings: [[0, 0]]};
-
-        checkEqual(noMatches, noMatches);
-        checkEqual(oneMatchSectionSingleChar, oneMatchSectionSingleChar);
-        checkLess(oneMatchSectionSingleChar, noMatches);
-
-        var oneMatchSectionBeginningLong = {
-          sinkItem: null,
-          substrings: [[0, 2]]
-        };
-        var oneMatchSectionBeginningShort = {
-          sinkItem: null,
-          substrings: [[0, 1]]
-        };
-        checkEqual(oneMatchSectionBeginningLong, oneMatchSectionBeginningLong);
-        checkEqual(
-            oneMatchSectionBeginningShort, oneMatchSectionBeginningShort);
-
-        checkLess(oneMatchSectionBeginningLong, oneMatchSectionBeginningShort);
-
-        var oneMatchSectionMiddleLong = {sinkItem: null, substrings: [[2, 4]]};
-        var oneMatchSectionMiddleShort = {sinkItem: null, substrings: [[2, 3]]};
-        checkEqual(oneMatchSectionMiddleLong, oneMatchSectionMiddleLong);
-        checkEqual(oneMatchSectionMiddleShort, oneMatchSectionMiddleShort);
-
-        checkLess(oneMatchSectionMiddleLong, oneMatchSectionMiddleShort);
-
-        var oneMatchSectionEndLong = {sinkItem: null, substrings: [[4, 6]]};
-        var oneMatchSectionEndShort = {sinkItem: null, substrings: [[4, 5]]};
-        checkEqual(oneMatchSectionEndLong, oneMatchSectionEndLong);
-        checkEqual(oneMatchSectionEndShort, oneMatchSectionEndShort);
-
-        checkLess(oneMatchSectionEndLong, oneMatchSectionEndShort);
-
-        // Check beginning < middle < end for both short and long matches.
-        checkLess(oneMatchSectionBeginningLong, oneMatchSectionMiddleLong);
-        checkLess(oneMatchSectionMiddleLong, oneMatchSectionEndLong);
-        checkLess(oneMatchSectionBeginningLong, oneMatchSectionEndLong);
-        checkLess(oneMatchSectionBeginningShort, oneMatchSectionMiddleShort);
-        checkLess(oneMatchSectionMiddleShort, oneMatchSectionEndShort);
-        checkLess(oneMatchSectionBeginningShort, oneMatchSectionEndShort);
-
-        // Check some long/short transitivity
-        // i.e. beginning-long < middle-long, middle-long < middle-short, so
-        // check that beginning-long < middle-short
-        checkLess(oneMatchSectionBeginningLong, oneMatchSectionMiddleShort);
-        checkLess(oneMatchSectionBeginningShort, oneMatchSectionMiddleLong);
-        checkLess(oneMatchSectionMiddleLong, oneMatchSectionEndShort);
-        checkLess(oneMatchSectionMiddleShort, oneMatchSectionEndLong);
-        checkLess(oneMatchSectionBeginningLong, oneMatchSectionEndShort);
-        checkLess(oneMatchSectionBeginningShort, oneMatchSectionEndLong);
-
-        var oneMatchBeginningOverlap = {sinkItem: null, substrings: [[0, 2]]};
-        var oneMatchMiddleOverlap = {sinkItem: null, substrings: [[1, 3]]};
-        var oneMatchEndOverlap = {sinkItem: null, substrings: [[2, 4]]};
-
-        checkEqual(oneMatchBeginningOverlap, oneMatchBeginningOverlap);
-        checkEqual(oneMatchMiddleOverlap, oneMatchMiddleOverlap);
-        checkEqual(oneMatchEndOverlap, oneMatchEndOverlap);
-
-        checkLess(oneMatchBeginningOverlap, oneMatchMiddleOverlap);
-        checkLess(oneMatchMiddleOverlap, oneMatchEndOverlap);
-        checkLess(oneMatchBeginningOverlap, oneMatchEndOverlap);
-
-        done();
-      });
-
-      // Tests that compareSearchMatches_ works correctly for one or more
-      // substring matches from the filter text. Earlier, longer matches should
-      // be ordered first, in that priority order.
-      test('compareSearchMatches_ test multiple substrings', function(done) {
-        var checkEqual = function(left, right) {
-          assertEquals(0, container.compareSearchMatches_(left, right));
-          assertEquals(0, container.compareSearchMatches_(right, left));
-        };
-        var checkLess = function(left, right) {
-          assertEquals(-1, container.compareSearchMatches_(left, right));
-          assertEquals(1, container.compareSearchMatches_(right, left));
-        };
-
-        // Variables are named by number of substring elements followed by their
-        // sort order as X_Y where they should be sorted in ascending order by
-        // X.Y. For example: 1_1 < 1_2 < 2_1.
-        var threeMatches1_1 = {
-          sinkItem: null,
-          substrings: [[0, 2], [4, 5], [7, 9]],
-        };
-        var threeMatches1_2 = {
-          sinkItem: null,
-          substrings: [[0, 2], [4, 5], [7, 8]],
-        };
-        var threeMatches1_3 = {
-          sinkItem: null,
-          substrings: [[0, 2], [4, 5], [8, 9]],
-        };
-        var threeMatches1_4 = {
-          sinkItem: null,
-          substrings: [[0, 2], [4, 4], [6, 8]],
-        };
-        var twoMatches2_1 = {
-          sinkItem: null,
-          substrings: [[0, 2], [4, 4]],
-        };
-        var twoMatches2_2 = {
-          sinkItem: null,
-          substrings: [[0, 1], [3, 5]],
-        };
-        var twoMatches2_3 = {
-          sinkItem: null,
-          substrings: [[0, 1], [4, 6]],
-        };
-        var twoMatches2_4 = {
-          sinkItem: null,
-          substrings: [[0, 1], [4, 5]],
-        };
-        var threeMatches2_5 = {
-          sinkItem: null,
-          substrings: [[0, 1], [4, 4], [6, 9]],
-        };
-        var oneMatch3_1 = {
-          sinkItem: null,
-          substrings: [[0, 1]],
-        };
-        var oneMatch3_2 = {
-          sinkItem: null,
-          substrings: [[0, 0]],
-        };
-
-        var orderedMatches = [
-          threeMatches1_1,
-          threeMatches1_2,
-          threeMatches1_3,
-          threeMatches1_4,
-          twoMatches2_1,
-          twoMatches2_2,
-          twoMatches2_3,
-          twoMatches2_4,
-          threeMatches2_5,
-          oneMatch3_1,
-          oneMatch3_2,
-        ];
-
-        for (var i = 0; i < orderedMatches.length; ++i) {
-          checkEqual(orderedMatches[i], orderedMatches[i]);
-        }
-        for (var i = 0; i < orderedMatches.length - 1; ++i) {
-          checkLess(orderedMatches[i], orderedMatches[i + 1]);
-        }
-        // Check some transitivity.
-        for (var i = 0; i < orderedMatches.length - 2; ++i) {
-          checkLess(orderedMatches[i], orderedMatches[i + 2]);
-        }
-        for (var i = 0; i < orderedMatches.length - 3; ++i) {
-          checkLess(orderedMatches[i], orderedMatches[i + 3]);
-        }
-
-        done();
-      });
-
-      // Tests that computeSearchMatches_ correctly computes the matching
-      // substrings of a sink name from search text.
-      test('computeSearchMatches_ test', function(done) {
-        var sinkName = '012345 789';
-        var checkMatches = function(searchText, answer) {
-          proposed = container.computeSearchMatches_(searchText, sinkName);
-
-          if (answer == null || proposed == null) {
-            assertEquals(answer, proposed);
-            return;
-          }
-          assertEquals(answer.length, proposed.length);
-          for (var i = 0; i < proposed.length; ++i) {
-            assertEquals(answer[i].length, proposed[i].length);
-            for (var j = 0; j < proposed[i].length; ++j) {
-              assertEquals(answer[i][j], proposed[i][j]);
-            }
-          }
-        };
-
-        // Check search text against |sinkName| for correct match output.
-        checkMatches('', []);
-        checkMatches('a', null);
-        checkMatches('0', [[0, 0]]);
-        checkMatches('1', [[1, 1]]);
-        checkMatches('012', [[0, 2]]);
-        checkMatches('03', [[0, 0], [3, 3]]);
-        checkMatches('210', null);
-        checkMatches('01345789', [[0, 1], [3, 5], [7, 9]]);
-        checkMatches('024', [[0, 0], [2, 2], [4, 4]]);
-        checkMatches('09a', null);
-        checkMatches(' ', [[6, 6]]);
-        checkMatches('45 ', [[4, 6]]);
-        checkMatches(' 78', [[6, 8]]);
-        checkMatches('45 7', [[4, 7]]);
-        checkMatches('  ', null);
-        checkMatches('12 89', [[1, 2], [6, 6], [8, 9]]);
-
-        done();
-      });
-
-      // Tests that computeSinkMatchingText_ correctly splits a sink name into
-      // |plainText| and |highlightedText| arrays given a sink name and an array
-      // of match indices.
-      test('computeSinkMatchingText_ test', function(done) {
-        var sinkName = '012345 789';
-        var sink = new media_router.Sink(
-            'id', sinkName, null, null, media_router.SinkIconType.CAST,
-            media_router.SinkStatus.ACTIVE, 0);
-        var checkMatches = function(matchesAndAnswers) {
-          var matches = matchesAndAnswers.matches;
-          var plainText = matchesAndAnswers.plainText;
-          var highlightedText = matchesAndAnswers.highlightedText;
-
-          var proposed = container.computeSinkMatchingText_(
-              {sinkItem: sink, substrings: matches});
-          assertEquals(plainText.length, proposed.plainText.length);
-          assertEquals(highlightedText.length, proposed.highlightedText.length);
-          for (var i = 0; i < plainText.length; ++i) {
-            assertEquals(plainText[i], proposed.plainText[i]);
-          }
-          for (var i = 0; i < highlightedText.length; ++i) {
-            assertEquals(highlightedText[i], proposed.highlightedText[i]);
-          }
-        };
-
-        // Check that |sinkName| is correctly partitioned by |matches|.
-        var matchesAndAnswers1 = {
-          matches: null,
-          plainText: ['012345 789'],
-          highlightedText: [null]
-        };
-        checkMatches(matchesAndAnswers1);
-
-        var matchesAndAnswers2 = {
-          matches: [],
-          plainText: ['012345 789'],
-          highlightedText: [null]
-        };
-        checkMatches(matchesAndAnswers2);
-
-        var matchesAndAnswers3 = {
-          matches: [[0, 0]],
-          plainText: [null, '12345 789'],
-          highlightedText: ['0', null]
-        };
-        checkMatches(matchesAndAnswers3);
-
-        var matchesAndAnswers4 = {
-          matches: [[9, 9]],
-          plainText: ['012345 78'],
-          highlightedText: ['9']
-        };
-        checkMatches(matchesAndAnswers4);
-
-        var matchesAndAnswers5 = {
-          matches: [[1, 1]],
-          plainText: ['0', '2345 789'],
-          highlightedText: ['1', null]
-        };
-        checkMatches(matchesAndAnswers5);
-
-        var matchesAndAnswers6 = {
-          matches: [[1, 2], [4, 6]],
-          plainText: ['0', '3', '789'],
-          highlightedText: ['12', '45 ', null]
-        };
-        checkMatches(matchesAndAnswers6);
-
-        var matchesAndAnswers7 = {
-          matches: [[0, 3], [7, 9]],
-          plainText: [null, '45 '],
-          highlightedText: ['0123', '789'],
-        };
-        checkMatches(matchesAndAnswers7);
-
-        var matchesAndAnswers8 = {
-          matches: [[4, 6], [9, 9]],
-          plainText: ['0123', '78'],
-          highlightedText: ['45 ', '9']
-        };
-        checkMatches(matchesAndAnswers8);
-
-        var matchesAndAnswers9 = {
-          matches: [[0, 1], [3, 4], [6, 7], [9, 9]],
-          plainText: [null, '2', '5', '8'],
-          highlightedText: ['01', '34', ' 7', '9'],
-        };
-        checkMatches(matchesAndAnswers9);
-
-        var matchesAndAnswers10 = {
-          matches: [[0, 1], [3, 4], [6, 6], [9, 9]],
-          plainText: [null, '2', '5', '78'],
-          highlightedText: ['01', '34', ' ', '9'],
-        };
-        checkMatches(matchesAndAnswers10);
-
-        var matchesAndAnswers11 = {
-          matches: [[5, 7]],
-          plainText: ['01234', '89'],
-          highlightedText: ['5 7', null],
-        };
-        checkMatches(matchesAndAnswers11);
-
-        done();
-      });
-    });
-  }
-
-  return {
-    registerTestsPart1: registerTestsPart1,
-    registerTestsPart2: registerTestsPart2,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/media_router_container_first_run_flow_tests.js b/chrome/test/data/webui/media_router/media_router_container_first_run_flow_tests.js
deleted file mode 100644
index 1172926..0000000
--- a/chrome/test/data/webui/media_router/media_router_container_first_run_flow_tests.js
+++ /dev/null
@@ -1,177 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for media-router-container that focus on the
- * first run flow.
- */
-cr.define('media_router_container_first_run_flow', function() {
-  function registerTests() {
-    suite('MediaRouterContainerFirstRunFlow', function() {
-      /**
-       * Checks whether the elements specified in |elementIdList| are visible.
-       * Checks whether all other elements are not visible. Throws an assertion
-       * error if this is not true.
-       *
-       * @param {!Array<!string>} elementIdList List of id's of elements that
-       *     should be visible.
-       */
-      var checkElementsVisibleWithId;
-
-      /**
-       * Checks the visibility of an element with |elementId| in |container|.
-       * An element is considered visible if it exists and its |hidden| property
-       * is |false|.
-       *
-       * @param {boolean} visible Whether the element should be visible.
-       * @param {!string} elementId The id of the element to test.
-       */
-      var checkElementVisibleWithId;
-
-      /**
-       * Media Router Container created before each test.
-       * @type {?MediaRouterContainer}
-       */
-      var container;
-
-      /**
-       * The list of CastModes to show.
-       * @type {!Array<!media_router.CastMode>}
-       */
-      var fakeCastModeList = [];
-
-      /**
-       * The list of CastModes to show with non-PRESENTATION modes only.
-       * @type {!Array<!media_router.CastMode>}
-       */
-      var fakeCastModeListWithNonPresentationModesOnly = [];
-
-      // Import media_router_container.html before running suite.
-      suiteSetup(function() {
-        return PolymerTest.importHtml(
-            'chrome://media-router/elements/media_router_container/' +
-            'media_router_container.html');
-      });
-
-      setup(function(done) {
-        PolymerTest.clearBody();
-        // Initialize a media-router-container before each test.
-        container = document.createElement('media-router-container');
-        document.body.appendChild(container);
-
-        // Get common functions and variables.
-        var test_base = media_router_container_test_base.init(container);
-
-        checkElementsVisibleWithId = test_base.checkElementsVisibleWithId;
-        checkElementVisibleWithId = test_base.checkElementVisibleWithId;
-        fakeCastModeList = test_base.fakeCastModeList;
-        fakeCastModeListWithNonPresentationModesOnly =
-            test_base.fakeCastModeListWithNonPresentationModesOnly;
-
-        container.castModeList = test_base.fakeCastModeList;
-
-        // Allow for the media router container to be created, attached, and
-        // listeners registered in an afterNextRender() call.
-        Polymer.RenderStatus.afterNextRender(this, done);
-      });
-
-      // Tests for 'acknowledge-first-run-flow' event firing when the
-      // 'first-run-button' button is clicked and the cloud preference checkbox
-      // is not shown.
-      test('first run button click', function(done) {
-        container.showFirstRunFlow = true;
-
-        setTimeout(function() {
-          container.addEventListener(
-              'acknowledge-first-run-flow', function(data) {
-                assertEquals(undefined, data.detail.optedIntoCloudServices);
-                done();
-              });
-          MockInteractions.tap(
-              container.shadowRoot.getElementById('first-run-button'));
-        });
-      });
-
-      // Tests for 'acknowledge-first-run-flow' event firing when the
-      // 'first-run-button' button is clicked and the cloud preference checkbox
-      // is also shown.
-      test('first run button with cloud pref click', function(done) {
-        container.showFirstRunFlow = true;
-        container.showFirstRunFlowCloudPref = true;
-
-        setTimeout(function() {
-          container.addEventListener(
-              'acknowledge-first-run-flow', function(data) {
-                assertTrue(data.detail.optedIntoCloudServices);
-                done();
-              });
-          MockInteractions.tap(
-              container.shadowRoot.getElementById('first-run-button'));
-        });
-      });
-
-      // Tests for 'acknowledge-first-run-flow' event firing when the
-      // 'first-run-button' button is clicked after the cloud preference
-      // checkbox is deselected.
-      test('first run button with cloud pref deselected click', function(done) {
-        container.showFirstRunFlow = true;
-        container.showFirstRunFlowCloudPref = true;
-
-        setTimeout(function() {
-          container.addEventListener(
-              'acknowledge-first-run-flow', function(data) {
-                assertFalse(data.detail.optedIntoCloudServices);
-                done();
-              });
-          MockInteractions.tap(
-              container.shadowRoot.getElementById('first-run-cloud-checkbox'));
-          MockInteractions.tap(
-              container.shadowRoot.getElementById('first-run-button'));
-        });
-      });
-
-      // Tests for the expected visible UI when interacting with the first run
-      // flow.
-      test('first run button visibility', function(done) {
-        container.showFirstRunFlow = true;
-
-        setTimeout(function() {
-          checkElementVisibleWithId(true, 'first-run-flow');
-          MockInteractions.tap(
-              container.shadowRoot.getElementById('first-run-button'));
-
-          setTimeout(function() {
-            checkElementVisibleWithId(false, 'first-run-flow');
-            done();
-          });
-        });
-      });
-
-      // Tests for the expected visible UI when interacting with the first run
-      // flow with cloud services preference.
-      test('first run button visibility', function(done) {
-        container.showFirstRunFlow = true;
-        container.showFirstRunFlowCloudPref = true;
-
-        setTimeout(function() {
-          checkElementsVisibleWithId([
-            'container-header', 'device-missing', 'first-run-flow',
-            'first-run-flow-cloud-pref', 'sink-list-view'
-          ]);
-          MockInteractions.tap(
-              container.shadowRoot.getElementById('first-run-button'));
-
-          setTimeout(function() {
-            checkElementsVisibleWithId(
-                ['container-header', 'device-missing', 'sink-list-view']);
-            done();
-          });
-        });
-      });
-    });
-  }
-
-  return {
-    registerTests: registerTests,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/media_router_container_route_tests.js b/chrome/test/data/webui/media_router/media_router_container_route_tests.js
deleted file mode 100644
index d304419a..0000000
--- a/chrome/test/data/webui/media_router/media_router_container_route_tests.js
+++ /dev/null
@@ -1,527 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for media-router-container that focus on
- * routes.
- */
-cr.define('media_router_container_route', function() {
-  function registerTests() {
-    suite('MediaRouterContainerRoute', function() {
-      /**
-       * Checks whether |view| matches the current view of |container|.
-       *
-       * @param {!media_router.MediaRouterView} view Expected view type.
-       */
-      var checkCurrentView;
-
-      /**
-       * Checks whether the elements specified in |elementIdList| are visible.
-       * Checks whether all other elements are not visible. Throws an assertion
-       * error if this is not true.
-       *
-       * @param {!Array<!string>} elementIdList List of id's of elements that
-       *     should be visible.
-       */
-      var checkElementsVisibleWithId;
-
-      /**
-       * Checks the visibility of an element. An element is considered visible
-       * if it exists and its |hidden| property is |false|.
-       *
-       * @param {boolean} visible Whether the element should be visible.
-       * @param {?Element} element The element to test.
-       * @param {elementId=} elementId Optional element id to display.
-       */
-      var checkElementVisible;
-
-      /**
-       * Checks whether |expected| and the text in the |element| are equal.
-       *
-       * @param {!string} expected Expected text.
-       * @param {!Element} element Element whose text will be checked.
-       */
-      var checkElementText;
-
-      /**
-       * Media Router Container created before each test.
-       * @type {?MediaRouterContainer}
-       */
-      var container;
-
-      /**
-       * The blocking issue to show.
-       * @type {?media_router.Issue}
-       */
-      var fakeBlockingIssue;
-
-      /**
-       * The list of CastModes to show.
-       * @type {!Array<!media_router.CastMode>}
-       */
-      var fakeCastModeList = [];
-
-      /**
-       * The blocking issue to show.
-       * @type {?media_router.Issue}
-       */
-      var fakeNonBlockingIssue;
-
-      /**
-       * The list of current routes.
-       * @type {!Array<!media_router.Route>}
-       */
-      var fakeRouteList = [];
-
-      /**
-       * The list of available sinks.
-       * @type {!Array<!media_router.Sink>}
-       */
-      var fakeSinkList = [];
-
-      // Import media_router_container.html before running suite.
-      suiteSetup(function() {
-        return PolymerTest.importHtml(
-            'chrome://media-router/elements/media_router_container/' +
-            'media_router_container.html');
-      });
-
-      setup(function(done) {
-        PolymerTest.clearBody();
-        // Initialize a media-router-container before each test.
-        container = document.createElement('media-router-container');
-        document.body.appendChild(container);
-
-        // Get common functions and variables.
-        var testBase = media_router_container_test_base.init(container);
-
-        checkCurrentView = testBase.checkCurrentView;
-        checkElementsVisibleWithId = testBase.checkElementsVisibleWithId;
-        checkElementVisible = testBase.checkElementVisible;
-        checkElementText = testBase.checkElementText;
-        fakeBlockingIssue = testBase.fakeBlockingIssue;
-        fakeCastModeList = testBase.fakeCastModeList;
-        fakeNonBlockingIssue = testBase.fakeNonBlockingIssue;
-        fakeRouteList = testBase.fakeRouteList;
-        fakeRouteListWithLocalRoutesOnly =
-            testBase.fakeRouteListWithLocalRoutesOnly;
-        fakeSinkList = testBase.fakeSinkList;
-
-        container.castModeList = testBase.fakeCastModeList;
-
-        // Allow for the media router container to be created, attached, and
-        // listeners registered in an afterNextRender() call.
-        Polymer.RenderStatus.afterNextRender(this, done);
-      });
-
-      // Tests for 'create-route' event firing when a sink with no associated
-      // route is clicked.
-      test('select sink without a route', function(done) {
-        container.allSinks = fakeSinkList;
-
-        setTimeout(function() {
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-          container.addEventListener('create-route', function(data) {
-            // Container is initially in auto mode since a cast mode has not
-            // been selected.
-            assertEquals(
-                media_router.CastModeType.AUTO, container.shownCastModeValue_);
-            assertEquals(fakeSinkList[2].id, data.detail.sinkId);
-
-            // The preferred compatible cast mode on the sink is used, since
-            // the we did not choose a cast mode on the container.
-            assertEquals(0x2, data.detail.selectedCastModeValue);
-            done();
-          });
-          // Tap on a sink without a route, which should fire a 'create-route'
-          // event.
-          assertEquals(fakeSinkList.length, sinkList.length);
-          MockInteractions.tap(sinkList[2]);
-        });
-      });
-
-      // Tests that selecting a sink with an associated route will make the
-      // |container| switch to ROUTE_DETAILS view.
-      test('select sink with a route', function(done) {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteList;
-
-        setTimeout(function() {
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-
-          // Start from the SINK_LIST view.
-          container.showSinkList_();
-          checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-          MockInteractions.tap(sinkList[0]);
-          checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS);
-          done();
-        });
-      });
-
-      // Tests the text shown for the sink list.
-      test('initial sink list route text', function(done) {
-        // Sink 1 - no sink description, no route -> no subtext
-        // Sink 2 - sink description, no route -> subtext = sink description
-        // Sink 3 - no sink description, route -> subtext = route description
-        // Sink 4 - sink description, route -> subtext = route description
-        container.allSinks = [
-          new media_router.Sink(
-              'sink id 1', 'Sink 1', null, null, media_router.SinkIconType.CAST,
-              media_router.SinkStatus.ACTIVE, [1, 2, 3]),
-          new media_router.Sink(
-              'sink id 2', 'Sink 2', 'Sink 2 description', null,
-              media_router.SinkIconType.CAST, media_router.SinkStatus.ACTIVE,
-              [1, 2, 3]),
-          new media_router.Sink(
-              'sink id 3', 'Sink 3', null, null, media_router.SinkIconType.CAST,
-              media_router.SinkStatus.PENDING, [1, 2, 3]),
-          new media_router.Sink(
-              'sink id 4', 'Sink 4', 'Sink 4 description', null,
-              media_router.SinkIconType.CAST, media_router.SinkStatus.PENDING,
-              [1, 2, 3])
-        ];
-
-        container.routeList = [
-          new media_router.Route('id 3', 'sink id 3', 'Title 3', 0, true),
-          new media_router.Route('id 4', 'sink id 4', 'Title 4', 1, false),
-        ];
-
-        setTimeout(function() {
-          var sinkSubtextList = container.shadowRoot.getElementById('sink-list')
-                                    .querySelectorAll('.sink-subtext');
-
-          // There will only be 3 sink subtext entries, because Sink 1 does not
-          // have any subtext.
-          assertEquals(3, sinkSubtextList.length);
-
-          checkElementText(
-              container.allSinks[1].description, sinkSubtextList[0]);
-
-          // Route description overrides sink description for subtext.
-          checkElementText(
-              container.routeList[0].description, sinkSubtextList[1]);
-
-          checkElementText(
-              container.routeList[1].description, sinkSubtextList[2]);
-          done();
-        });
-      });
-
-      // Tests the expected view when there is only one local active route and
-      // media_router_container is created for the first time.
-      test('initial view with one local route', function() {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteList;
-        container.maybeShowRouteDetailsOnOpen();
-
-        checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS);
-      });
-
-      // Tests the expected view when there are multiple local active routes
-      // and media_router_container is created for the first time.
-      test('initial view with multiple local routes', function() {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteListWithLocalRoutesOnly;
-
-        checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-      });
-
-      // Tests the expected view when there are no local active routes and
-      // media_router_container is created for the first time.
-      test('initial view with no local route', function() {
-        container.allSinks = fakeSinkList;
-        container.routeList = [];
-
-        checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-      });
-
-      // Tests the expected view when there are no local active routes and
-      // media_router_container is created for the first time.
-      test('view after route is closed remotely', function() {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteList;
-        container.maybeShowRouteDetailsOnOpen();
-        checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS);
-
-        container.routeList = [];
-        checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-      });
-
-      // Tests for expected visible UI when the view is ROUTE_DETAILS.
-      test('route details visibility', function(done) {
-        container.showRouteDetails_(
-            new media_router.Route('id 3', 'sink id 3', 'Title 3', 0, true));
-        setTimeout(function() {
-          checkElementsVisibleWithId(
-              ['container-header', 'device-missing', 'route-details']);
-          done();
-        });
-      });
-
-      test('updated route in route details', function(done) {
-        container.allSinks = fakeSinkList;
-        var description = 'Title';
-        var route = new media_router.Route(
-            'id 1', 'sink id 1', description, 0, true, false);
-        container.routeList = [route];
-        container.showRouteDetails_(route);
-        setTimeout(function() {
-          // Note that sink-list-view is hidden.
-          checkElementsVisibleWithId(
-              ['container-header', 'route-details', 'sink-list']);
-          assertTrue(!!container.currentRoute_);
-          assertEquals(description, container.currentRoute_.description);
-
-          var newDescription = 'Foo';
-          route.description = newDescription;
-          container.routeList = [route];
-          setTimeout(function() {
-            // Note that sink-list-view is hidden.
-            checkElementsVisibleWithId(
-                ['container-header', 'route-details', 'sink-list']);
-            assertTrue(!!container.currentRoute_);
-            assertEquals(newDescription, container.currentRoute_.description);
-            done();
-          });
-        });
-      });
-
-      // Tests for expected visible UI when the view is ROUTE_DETAILS, and there
-      // is a non-blocking issue.
-      test('route details visibility non blocking issue', function(done) {
-        container.showRouteDetails_(
-            new media_router.Route('id 3', 'sink id 3', 'Title 3', 0, true));
-
-        // Set a non-blocking issue. The issue should be shown.
-        container.issue = fakeNonBlockingIssue;
-        setTimeout(function() {
-          checkElementsVisibleWithId(
-              ['container-header', 'device-missing', 'route-details']);
-          done();
-        });
-      });
-
-      // Tests for expected visible UI when the view is ROUTE_DETAILS, and there
-      // is a blocking issue.
-      test('route details visibility with blocking issue', function(done) {
-        container.showRouteDetails_(
-            new media_router.Route('id 3', 'sink id 3', 'Title 3', 0, true));
-
-        // Set a blocking issue. The issue should be shown, and everything
-        // else, hidden.
-        container.issue = fakeBlockingIssue;
-        setTimeout(function() {
-          checkElementsVisibleWithId(
-              ['container-header', 'device-missing', 'issue-banner']);
-          done();
-        });
-      });
-
-      test('creating route with selected cast mode', function(done) {
-        container.allSinks = fakeSinkList;
-        MockInteractions.tap(
-            container.$$('#container-header').$['arrow-drop-icon']);
-        setTimeout(function() {
-          // Select cast mode 2.
-          var castModeList = container.$$('#cast-mode-list')
-                                 .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(castModeList[1]);
-          assertEquals(fakeCastModeList[1].description, container.headerText);
-          setTimeout(function() {
-            var sinkList = container.shadowRoot.getElementById('sink-list')
-                               .querySelectorAll('button.selectable-item');
-            container.addEventListener('create-route', function(data) {
-              assertEquals(fakeSinkList[2].id, data.detail.sinkId);
-              // Cast mode 2 is used, since we selected it explicitly.
-              assertEquals(
-                  fakeCastModeList[1].type, data.detail.selectedCastModeValue);
-              done();
-            });
-            // All sinks are compatible with cast mode 2.
-            assertEquals(fakeSinkList.length, sinkList.length);
-            // Tap on a sink without a route, which should fire a
-            // 'create-route' event.
-            MockInteractions.tap(sinkList[2]);
-          });
-        });
-      });
-
-      // Tests that the route details cast button is not shown when another sink
-      // is launching.
-      test('no cast button when sink launching', function(done) {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteList;
-        setTimeout(function() {
-          var sinkList = container.$$('#sink-list')
-                             .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(sinkList[2]);
-          setTimeout(function() {
-            assertTrue(!!container.currentLaunchingSinkId_);
-            MockInteractions.tap(sinkList[0]);
-            setTimeout(function() {
-              checkElementVisible(
-                  false,
-                  container.$$('#route-details')
-                      .$$('#start-casting-to-route-button'),
-                  'start-casting-to-route-button');
-              // The other sink stopped launching, due to route failure, so the
-              // cast button should now appear.
-              container.onCreateRouteResponseReceived(
-                  fakeSinkList[0].id, null, true);
-              setTimeout(function() {
-                checkElementVisible(
-                    true,
-                    container.$$('#route-details')
-                        .$$('#start-casting-to-route-button'),
-                    'start-casting-to-route-button');
-                done();
-              });
-            });
-          });
-        });
-      });
-
-      // Tests that the route details cast button is shown when the current
-      // route has no |currentCastMode| field defined.
-      test('cast button when no current cast mode', function(done) {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteList;
-        setTimeout(function() {
-          assertTrue(!container.currentLaunchingSinkId_);
-          MockInteractions.tap(
-              container.$$('#sink-list')
-                  .querySelectorAll('button.selectable-item')[0]);
-          setTimeout(function() {
-            assertEquals(undefined, container.currentRoute_.currentCastMode);
-            checkElementVisible(
-                true,
-                container.$$('#route-details')
-                    .$$('#start-casting-to-route-button'),
-                'start-casting-to-route-button');
-            done();
-          });
-        });
-      });
-
-      // Tests that the route details cast button is shown when the user has
-      // selected a cast mode that is different from the current cast mode of
-      // the route.
-      test('cast button when selected cast mode differs', function(done) {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteList;
-        container.castModeList = fakeCastModeList;
-        for (var i = 0; i < fakeRouteList.length; ++i) {
-          fakeRouteList[i].currentCastMode = 2;
-        }
-        MockInteractions.tap(
-            container.$$('#container-header').$$('#arrow-drop-icon'));
-        setTimeout(function() {
-          MockInteractions.tap(
-              container.$$('#cast-mode-list')
-                  .querySelectorAll('button.selectable-item')[2]);
-          setTimeout(function() {
-            assertTrue(container.shownCastModeValue_ != 2);
-            MockInteractions.tap(
-                container.$$('#sink-list')
-                    .querySelectorAll('button.selectable-item')[0]);
-            setTimeout(function() {
-              checkElementVisible(
-                  true,
-                  container.$$('#route-details')
-                      .$$('#start-casting-to-route-button'),
-                  'start-casting-to-route-button');
-              done();
-            });
-          });
-        });
-      });
-
-      // Tests that the route details cast button is not shown when the user has
-      // selected a the same cast mode as the route's current cast mode.
-      test('no cast button when selected cast mode same', function(done) {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteList;
-        container.castModeList = fakeCastModeList;
-        for (var i = 0; i < fakeRouteList.length; ++i) {
-          fakeRouteList[i].currentCastMode = 2;
-        }
-        MockInteractions.tap(
-            container.$$('#container-header').$$('#arrow-drop-icon'));
-        setTimeout(function() {
-          MockInteractions.tap(
-              container.$$('#cast-mode-list')
-                  .querySelectorAll('button.selectable-item')[1]);
-          setTimeout(function() {
-            assertEquals(2, container.shownCastModeValue_);
-            MockInteractions.tap(
-                container.$$('#sink-list')
-                    .querySelectorAll('button.selectable-item')[0]);
-            setTimeout(function() {
-              checkElementVisible(
-                  false,
-                  container.$$('#route-details')
-                      .$$('#start-casting-to-route-button'),
-                  'start-casting-to-route-button');
-              done();
-            });
-          });
-        });
-      });
-
-      // Tests that the route details cast button is not shown when AUTO cast
-      // mode would pick the same cast mode for the route's sink as the route's
-      // current cast mode.
-      test('no cast button when auto cast mode same', function(done) {
-        container.allSinks = fakeSinkList;
-        container.routeList = fakeRouteList;
-        container.castModeList = fakeCastModeList;
-        for (var i = 0; i < fakeRouteList.length; ++i) {
-          // The lowest cast mode value will be used in AUTO mode. We set it on
-          // the route here so AUTO mode matches the route's current cast mode.
-          fakeRouteList[i].currentCastMode = 2;
-        }
-        setTimeout(function() {
-          assertEquals(-1, container.shownCastModeValue_);
-          MockInteractions.tap(
-              container.$$('#sink-list')
-                  .querySelectorAll('button.selectable-item')[0]);
-          setTimeout(function() {
-            checkElementVisible(
-                false,
-                container.$$('#route-details')
-                    .$$('#start-casting-to-route-button'),
-                'start-casting-to-route-button');
-            done();
-          });
-        });
-      });
-
-      // Tests that the route details cast button is not shown when there is no
-      // sink structure in the container that corresponds to the route whose
-      // details are being viewed. This occurs when there is only one local
-      // route, so it is shown upon opening the dialog, and its sink isn't
-      // compatible with any currently available cast modes.
-      test('no cast button when sink missing', function(done) {
-        container.routeList = fakeRouteList;
-        // Simulate opening dialog with a local route for sink that is
-        // unsupported in the current context, and therefore won't be in the
-        // container's sink list.
-        container.showRouteDetails_(fakeRouteList[0]);
-        setTimeout(function() {
-          checkElementVisible(
-              false,
-              container.$$('#route-details')
-                  .$$('#start-casting-to-route-button'),
-              'start-casting-to-route-button');
-          done();
-        });
-      });
-    });
-  }
-
-  return {
-    registerTests: registerTests,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/media_router_container_search_tests.js b/chrome/test/data/webui/media_router/media_router_container_search_tests.js
deleted file mode 100644
index 89dd63a..0000000
--- a/chrome/test/data/webui/media_router/media_router_container_search_tests.js
+++ /dev/null
@@ -1,502 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for media-router-container that focus on
- * the MRPM search feature.
- */
-cr.define('media_router_container_search', function() {
-  /**
-   * Wrapper that lets a function |f| run after the container animation promise
-   * completes but also lets any UI logic run before setting up the call. This
-   * is important because |container.animationPromise_| may not exist until the
-   * UI logic runs or it may be updated to a new Promise.  This wrapper also
-   * carries assertion errors (and any other exceptions) outside of the promise
-   * back into the test since throwing in a then() or catch() doesn't stop the
-   * test.
-   *
-   * @param {function()} f
-   */
-  var chainOnAnimationPromise = function(f) {
-    setTimeout(function() {
-      container.animationPromise_.then(f).catch(function(err) {
-        setTimeout(function() {
-          throw err;
-        });
-      });
-    });
-  };
-
-  /**
-   * Checks whether |view| matches the current view of |container|.
-   *
-   * @param {!media_router.MediaRouterView} view Expected view type.
-   */
-  var checkCurrentView;
-
-  /**
-   * Checks whether an element is visible. An element is visible if it exists,
-   * does not have its |hidden| property set, and its |display| property is not
-   * 'none'.
-   *
-   * @param {Element} element The element to test.
-   * @param {boolean} visible Whether the element should be visible.
-   */
-  var checkElementVisible = function(element, visible) {
-    assertEquals(
-        visible,
-        !!element && !element.hidden && element.style.display != 'none');
-  };
-
-  /**
-   * Checks that |targetSink| is in the search result list and it is the only
-   * sink with a spinner.
-   *
-   * @param {media_router.Sink} targetSink
-   */
-  var checkSpinningSinkInFilter = function(targetSink) {
-    var searchResults = container.$$('#search-results')
-                            .querySelectorAll('button.selectable-item');
-    var targets = 0;
-    searchResults.forEach(function(sink) {
-      var item = container.$$('#searchResults').itemForElement(sink).sinkItem;
-      var spinner = sink.querySelector('paper-spinner-lite');
-      var isTargetSink = item.id == targetSink.id;
-      checkElementVisible(spinner, isTargetSink);
-      if (isTargetSink) {
-        ++targets;
-      }
-    });
-    assertEquals(1, targets);
-  };
-
-  /**
-   * Checks that |targetSink| is in the sink list and it is the only sink with a
-   * spinner. Also checks that the sink list has length |length|.
-   *
-   * @param {media_router.Sink} targetSink
-   * @param {number} length
-   */
-  var checkSpinningSinkInSinkList = function(targetSink, length) {
-    var sinkList =
-        container.$$('#sink-list').querySelectorAll('button.selectable-item');
-    assertEquals(length, sinkList.length);
-    var targets = 0;
-    sinkList.forEach(function(sink) {
-      var item = container.$$('#sinkList').itemForElement(sink);
-      var spinner = sink.querySelector('paper-spinner-lite');
-      var isTargetSink = item.id == targetSink.id;
-      checkElementVisible(spinner, isTargetSink);
-      if (isTargetSink) {
-        ++targets;
-      }
-    });
-    assertEquals(1, targets);
-  };
-
-  /**
-   * Media Router Container created before each test.
-   * @type {?MediaRouterContainer}
-   */
-  var container;
-
-  /**
-   * The list of available sinks.
-   * @type {!Array<!media_router.Sink>}
-   */
-  var fakeSinkList = [];
-
-  /**
-   * The list of available sinks plus the pseudo sink.
-   * @type {!Array<!media_router.Sink>}
-   */
-  var fakeSinkListWithPseudoSink = [];
-
-  /**
-   * Sink returned by search.
-   * @type {media_router.Sink}
-   */
-  var foundSink = null;
-
-  /**
-   * Example pseudo sink.
-   * @type {media_router.Sink}
-   */
-  var pseudoSink = null;
-
-  /**
-   * Import media_router_container.html before running suite.
-   */
-  var doSuiteSetup = function() {
-    return PolymerTest.importHtml(
-        'chrome://media-router/elements/media_router_container/' +
-        'media_router_container.html');
-  };
-
-  /**
-   * Performs test setup before each test.
-   *
-   * @param {function()} done Function for async test completion.
-   */
-  var doSetup = function(done) {
-    PolymerTest.clearBody();
-    // Initialize a media-router-container before each test.
-    container = document.createElement('media-router-container');
-    document.body.appendChild(container);
-
-    // Get common functions and variables.
-    var test_base = media_router_container_test_base.init(container);
-
-    checkCurrentView = test_base.checkCurrentView;
-    fakeSinkList = test_base.fakeSinkList;
-
-    pseudoSink = new media_router.Sink(
-        'pseudo:test', '', null, 'domain.com', media_router.SinkIconType.CAST,
-        undefined, test_base.castModeBitset);
-    pseudoSink.isPseudoSink = true;
-    foundSink = new media_router.Sink(
-        'found sink id', 'no existing sink', null, pseudoSink.domain,
-        pseudoSink.iconType, undefined, pseudoSink.castModes);
-    fakeSinkListWithPseudoSink = fakeSinkList.concat([pseudoSink]);
-
-    container.allSinks = fakeSinkListWithPseudoSink;
-
-    // Allow for the media router container to be created, attached, and
-    // listeners registered in an afterNextRender() call.
-    Polymer.RenderStatus.afterNextRender(this, done);
-  };
-
-  function registerTestsPart1() {
-    suite('MediaRouterContainerSearchPart1', function() {
-      suiteSetup(doSuiteSetup);
-      setup(doSetup);
-
-      test('pseudo sink hidden without filter input', function(done) {
-        setTimeout(function() {
-          var sinkList = container.$$('#sink-list')
-                             .querySelectorAll('button.selectable-item');
-          assertEquals(fakeSinkList.length, sinkList.length);
-          MockInteractions.tap(container.$$('#sink-search-icon'));
-          chainOnAnimationPromise(function() {
-            var searchResults = container.$$('#search-results')
-                                    .querySelectorAll('button.selectable-item');
-            assertEquals(fakeSinkList.length, searchResults.length);
-            done();
-          });
-        });
-      });
-
-      test('filter input adds pseudo sink', function(done) {
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = 'no existing sink';
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          assertEquals(1, searchResults.length);
-          var item =
-              container.$$('#searchResults').itemForElement(searchResults[0]);
-          assertEquals(pseudoSink.id, item.sinkItem.id);
-          done();
-        });
-      });
-
-      test('filter exact match real sink hides pseudo sink', function(done) {
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = fakeSinkList[0].name;
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          assertEquals(1, searchResults.length);
-          var item =
-              container.$$('#searchResults').itemForElement(searchResults[0]);
-          assertEquals(fakeSinkList[0].id, item.sinkItem.id);
-          done();
-        });
-      });
-
-      test('clicking pseudo sink starts search', function(done) {
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = 'no existing sink';
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          container.addEventListener(
-              'search-sinks-and-create-route', function(data) {
-                assertEquals(pseudoSink.id, data.detail.id);
-                assertEquals(pseudoSink.name, data.detail.name);
-                assertEquals(pseudoSink.domain, data.detail.domain);
-                done();
-              });
-          MockInteractions.tap(searchResults[0]);
-        });
-      });
-
-      test('spinner starts on pseudo sink', function(done) {
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = foundSink.name;
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(searchResults[0]);
-          setTimeout(function() {
-            searchResults = container.$$('#search-results')
-                                .querySelectorAll('button.selectable-item');
-            assertEquals(1, searchResults.length);
-            checkSpinningSinkInFilter(pseudoSink);
-
-            searchInput.value = foundSink.name[0];
-            setTimeout(function() {
-              checkSpinningSinkInFilter(pseudoSink);
-
-              searchInput.value = '';
-              setTimeout(function() {
-                checkSpinningSinkInFilter(pseudoSink);
-                done();
-              });
-            });
-          });
-        });
-      });
-
-      test('pseudo sink shown in sink list before real sink', function(done) {
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = foundSink.name;
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(searchResults[0]);
-          MockInteractions.tap(
-              container.$['container-header'].$$('#back-button'));
-          chainOnAnimationPromise(function() {
-            checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-            checkSpinningSinkInSinkList(
-                pseudoSink, fakeSinkListWithPseudoSink.length);
-            done();
-          });
-        });
-      });
-    });
-  }
-
-  function registerTestsPart2() {
-    suite('MediaRouterContainerSearchPart2', function() {
-      suiteSetup(doSuiteSetup);
-      setup(doSetup);
-
-      test('onReceiveSearchResult updates spinner', function(done) {
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = foundSink.name;
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(searchResults[0]);
-          container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
-          container.onReceiveSearchResult(foundSink.id);
-          setTimeout(function() {
-            searchResults = container.$$('#search-results')
-                                .querySelectorAll('button.selectable-item');
-            assertEquals(1, searchResults.length);
-            checkSpinningSinkInFilter(foundSink);
-            done();
-          });
-        });
-      });
-
-      test('sink list updates spinner', function(done) {
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = foundSink.name;
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(searchResults[0]);
-          setTimeout(function() {
-            container.onReceiveSearchResult(foundSink.id);
-            container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
-            setTimeout(function() {
-              searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-              assertEquals(1, searchResults.length);
-              checkSpinningSinkInFilter(foundSink);
-              done();
-            });
-          });
-        });
-      });
-
-      test('route received clears spinner and search state', function(done) {
-        var route = new media_router.Route(
-            'id 1', foundSink.id, 'Title 1', 0, true, false);
-
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = foundSink.name;
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(searchResults[0]);
-          container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
-          container.onReceiveSearchResult(foundSink.id);
-          container.onCreateRouteResponseReceived(foundSink.id, route, true);
-          assertEquals(null, container.pseudoSinkSearchState_);
-          setTimeout(function() {
-            checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS);
-            MockInteractions.tap(
-                container.$['container-header'].$$('#back-button'));
-            chainOnAnimationPromise(function() {
-              checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-              sinkList = container.$$('#sink-list')
-                             .querySelectorAll('button.selectable-item');
-              sinkList.forEach(function(sink) {
-                var spinner = sink.querySelector('paper-spinner-lite');
-                checkElementVisible(spinner, false);
-              });
-              done();
-            });
-          });
-        });
-      });
-
-      test('cannot create another route during search', function(done) {
-        var checkCreateRoute = function() {
-          done();
-        };
-        var checkNoCreateRoute = function() {
-          assertTrue(false);
-        };
-        var route = new media_router.Route(
-            'id 1', foundSink.id, 'Title 1', 0, true, false);
-        container.addEventListener('create-route', checkNoCreateRoute);
-
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = foundSink.name;
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(searchResults[0]);
-          MockInteractions.tap(
-              container.$['container-header'].$$('#back-button'));
-          chainOnAnimationPromise(function() {
-            var sinkList = container.$$('#sink-list')
-                               .querySelectorAll('button.selectable-item');
-            sinkList = [...sinkList];
-            var sink = sinkList.find(function(sink) {
-              var item = container.$$('#sinkList').itemForElement(sink);
-              return fakeSinkList[0].id == item.id;
-            });
-            MockInteractions.tap(sink);
-            container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
-            chainOnAnimationPromise(function() {
-              container.onReceiveSearchResult(foundSink.id);
-              MockInteractions.tap(sink);
-              container.onCreateRouteResponseReceived(
-                  foundSink.id, route, true);
-              chainOnAnimationPromise(function() {
-                checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS);
-                MockInteractions.tap(
-                    container.$['container-header'].$$('#back-button'));
-                container.removeEventListener(
-                    'create-route', checkNoCreateRoute);
-                container.addEventListener('create-route', checkCreateRoute);
-                chainOnAnimationPromise(function() {
-                  checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-                  MockInteractions.tap(sink);
-                });
-              });
-            });
-          });
-        });
-      });
-
-      test('route creation failure clears spinner and search', function(done) {
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = foundSink.name;
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(searchResults[0]);
-          container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
-          container.onReceiveSearchResult(foundSink.id);
-          container.onCreateRouteResponseReceived(pseudoSink.id, null, true);
-          assertEquals(null, container.pseudoSinkSearchState_);
-          setTimeout(function() {
-            checkCurrentView(media_router.MediaRouterView.FILTER);
-            searchResults = container.$$('#search-results')
-                                .querySelectorAll('button.selectable-item');
-            searchResults.forEach(function(sink) {
-              var spinner = sink.querySelector('paper-spinner-lite');
-              checkElementVisible(spinner, false);
-            });
-            done();
-          });
-        });
-      });
-
-      test('route creation failure resets search', function(done) {
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = foundSink.name;
-        chainOnAnimationPromise(function() {
-          var searchResults = container.$$('#search-results')
-                                  .querySelectorAll('button.selectable-item');
-          MockInteractions.tap(searchResults[0]);
-
-          // A found sink is added as part of the search but is removed right
-          // before the route failure is reported.  The filter should revert to
-          // showing the pseudo sink when this is done.
-          container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]);
-          container.onReceiveSearchResult(foundSink.id);
-          container.allSinks = fakeSinkListWithPseudoSink;
-          container.onCreateRouteResponseReceived(pseudoSink.id, null, true);
-          assertEquals(null, container.pseudoSinkSearchState_);
-          setTimeout(function() {
-            checkCurrentView(media_router.MediaRouterView.FILTER);
-            searchResults = container.$$('#search-results')
-                                .querySelectorAll('button.selectable-item');
-            assertTrue(container.searchResultsToShow_.some(function(sink) {
-              return sink.sinkItem.id == pseudoSink.id;
-            }));
-            done();
-          });
-        });
-      });
-
-      test('pseudo sink with empty domain is not shown', function(done) {
-        pseudoSink.domain = '';
-        // Trigger |allSinks| observer to be called again with new pseudo sink
-        // domain.
-        container.allSinks = [];
-        container.allSinks = fakeSinkListWithPseudoSink;
-
-        var searchInput = container.$$('#sink-search-input');
-        searchInput.value = foundSink.name;
-        chainOnAnimationPromise(function() {
-          var noMatches = container.$$('#no-search-matches');
-          var searchResults = container.$$('#search-results');
-          checkElementVisible(noMatches, true);
-          checkElementVisible(searchResults, false);
-          done();
-        });
-      });
-
-      test('pseudo sink search state launching sink id', function() {
-        var searchState = new PseudoSinkSearchState(pseudoSink);
-
-        assertEquals(pseudoSink.id, searchState.checkForRealSink(fakeSinkList));
-        assertEquals(
-            pseudoSink.id,
-            searchState.checkForRealSink(fakeSinkList.concat([foundSink])));
-        assertEquals(pseudoSink.id, searchState.checkForRealSink(fakeSinkList));
-
-        searchState.receiveSinkResponse(foundSink.id);
-        assertEquals(pseudoSink.id, searchState.checkForRealSink(fakeSinkList));
-        assertEquals(
-            foundSink.id,
-            searchState.checkForRealSink(fakeSinkList.concat([foundSink])));
-        assertEquals(foundSink.id, searchState.checkForRealSink(fakeSinkList));
-      });
-    });
-  }
-
-  return {
-    registerTestsPart1: registerTestsPart1,
-    registerTestsPart2: registerTestsPart2,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/media_router_container_sink_list_tests.js b/chrome/test/data/webui/media_router/media_router_container_sink_list_tests.js
deleted file mode 100644
index 1093907a..0000000
--- a/chrome/test/data/webui/media_router/media_router_container_sink_list_tests.js
+++ /dev/null
@@ -1,411 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for media-router-container that focus on the
- * sink list.
- */
-cr.define('media_router_container_sink_list', function() {
-  function registerTests() {
-    suite('MediaRouterContainerSinkList', function() {
-      /**
-       * Checks whether the elements specified in |elementIdList| are visible.
-       * Checks whether all other elements are not visible. Throws an assertion
-       * error if this is not true.
-       *
-       * @param {!Array<!string>} elementIdList List of id's of elements that
-       *     should be visible.
-       */
-      var checkElementsVisibleWithId;
-
-      /**
-       * Checks whether |expected| and the text in the |element| are equal.
-       *
-       * @param {!string} expected Expected text.
-       * @param {!Element} element Element whose text will be checked.
-       */
-      var checkElementText;
-
-      /**
-       * Media Router Container created before each test.
-       * @type {?MediaRouterContainer}
-       */
-      var container;
-
-      /**
-       * The blocking issue to show.
-       * @type {?media_router.Issue}
-       */
-      var fakeBlockingIssue;
-
-      /**
-       * The list of CastModes to show.
-       * @type {!Array<!media_router.CastMode>}
-       */
-      var fakeCastModeList = [];
-
-      /**
-       * The blocking issue to show.
-       * @type {?media_router.Issue}
-       */
-      var fakeNonBlockingIssue;
-
-      /**
-       * The list of available sinks.
-       * @type {!Array<!media_router.Sink>}
-       */
-      var fakeSinkList = [];
-
-      // Import media_router_container.html before running suite.
-      suiteSetup(function() {
-        return PolymerTest.importHtml(
-            'chrome://media-router/elements/media_router_container/' +
-            'media_router_container.html');
-      });
-
-      setup(function(done) {
-        PolymerTest.clearBody();
-        // Initialize a media-router-container before each test.
-        container = document.createElement('media-router-container');
-        document.body.appendChild(container);
-
-        // Get common functions and variables.
-        var test_base = media_router_container_test_base.init(container);
-
-        checkCurrentView = test_base.checkCurrentView;
-        checkElementsVisibleWithId = test_base.checkElementsVisibleWithId;
-        checkElementText = test_base.checkElementText;
-        fakeBlockingIssue = test_base.fakeBlockingIssue;
-        fakeCastModeList = test_base.fakeCastModeList;
-        fakeNonBlockingIssue = test_base.fakeNonBlockingIssue;
-        fakeSinkList = test_base.fakeSinkList;
-
-        container.castModeList = test_base.fakeCastModeList;
-
-        // Allow for the media router container to be created, attached, and
-        // listeners registered in an afterNextRender() call.
-        Polymer.RenderStatus.afterNextRender(this, done);
-      });
-
-      // Tests that text shown for each sink matches their names.
-      test('sink list text', function(done) {
-        container.allSinks = fakeSinkList;
-
-        setTimeout(function() {
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-          assertEquals(fakeSinkList.length, sinkList.length);
-          for (var i = 0; i < fakeSinkList.length; i++) {
-            checkElementText(fakeSinkList[i].name, sinkList[i]);
-          }
-          done();
-        });
-      });
-
-      // Tests that text shown for each sink matches their names.
-      test('updated sink list', function(done) {
-        var sinkOne = new media_router.Sink(
-            'sink id 1', 'Sink 1', null, null,
-            media_router.SinkIconType.GENERIC, media_router.SinkStatus.IDLE,
-            [1, 2, 3]);
-        var sinkTwo = new media_router.Sink(
-            'sink id 2', 'Sink 2', null, 'example.com',
-            media_router.SinkIconType.GENERIC, media_router.SinkStatus.IDLE,
-            [1, 2, 3]);
-        var sinkThree = new media_router.Sink(
-            'sink id 3', 'Sink 3', null, 'example.com',
-            media_router.SinkIconType.GENERIC, media_router.SinkStatus.IDLE,
-            [1, 2, 3]);
-        var sinkFour = new media_router.Sink(
-            'sink id 4', 'Sink 4', null, 'example.com',
-            media_router.SinkIconType.GENERIC, media_router.SinkStatus.IDLE,
-            [1, 2, 3]);
-
-        // Set the initial sink list and check that the order corresponds.
-        var listOne = [sinkOne, sinkTwo];
-        var listOneExpected = [sinkOne, sinkTwo];
-        container.allSinks = listOne;
-        setTimeout(function() {
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-          assertEquals(listOne.length, sinkList.length);
-          for (var i = 0; i < listOneExpected.length; i++) {
-            checkElementText(listOneExpected[i].name, sinkList[i]);
-          }
-
-          // Update the sink list with a new sink, but not at the end of the
-          // array. The existing sinks should appear first, then the new
-          // sink.
-          var listTwo = [sinkOne, sinkThree, sinkTwo];
-          var listTwoExpected = [sinkOne, sinkTwo, sinkThree];
-          container.allSinks = listTwo;
-          setTimeout(function() {
-            sinkList = container.shadowRoot.getElementById('sink-list')
-                           .querySelectorAll('button.selectable-item');
-            assertEquals(listTwo.length, sinkList.length);
-            for (var i = 0; i < listTwoExpected.length; i++) {
-              checkElementText(listTwoExpected[i].name, sinkList[i]);
-            }
-
-            // If any sinks are not included in a sink list update, remove
-            // them from the sink list.
-            var listThree = [sinkFour, sinkOne];
-            var listThreeExpected = [sinkOne, sinkFour];
-            container.allSinks = listThree;
-            setTimeout(function() {
-              sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-              assertEquals(listThree.length, sinkList.length);
-              for (var i = 0; i < listThreeExpected.length; i++) {
-                checkElementText(listThreeExpected[i].name, sinkList[i]);
-              }
-              done();
-            });
-          });
-        });
-      });
-
-      // Tests that text shown for sink with domain matches the name and domain.
-      test('sink with domain text', function(done) {
-        // Sink 1 - sink, no domain -> text = name
-        // Sink 2 - sink, domain -> text = sink + domain
-        container.allSinks = [
-          new media_router.Sink(
-              'sink id 1', 'Sink 1', null, null,
-              media_router.SinkIconType.HANGOUT, media_router.SinkStatus.ACTIVE,
-              [1, 2, 3]),
-          new media_router.Sink(
-              'sink id 2', 'Sink 2', null, 'example.com',
-              media_router.SinkIconType.HANGOUT, media_router.SinkStatus.ACTIVE,
-              [1, 2, 3]),
-        ];
-
-        container.showDomain = true;
-
-        setTimeout(function() {
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-          assertEquals(2, sinkList.length);
-
-          // |sinkList[0]| has sink name only.
-          checkElementText(container.allSinks[0].name, sinkList[0]);
-          // |sinkList[1]| contains sink name and domain.
-          assertTrue(sinkList[1].textContent.trim().startsWith(
-              container.allSinks[1].name.trim()));
-          assertTrue(
-              sinkList[1].textContent.trim().indexOf(
-                  container.allSinks[1].domain.trim()) != -1);
-          done();
-        });
-      });
-
-      // Tests that domain text is not shown when |showDomain| is false.
-      test('sink with domain text', function(done) {
-        // Sink 1 - sink, no domain -> text = name
-        // Sink 2 - sink, domain -> text = sink + domain
-        container.allSinks = [
-          new media_router.Sink(
-              'sink id 1', 'Sink 1', null, null,
-              media_router.SinkIconType.HANGOUT, media_router.SinkStatus.ACTIVE,
-              [1, 2, 3]),
-          new media_router.Sink(
-              'sink id 2', 'Sink 2', null, 'example.com',
-              media_router.SinkIconType.HANGOUT, media_router.SinkStatus.ACTIVE,
-              [1, 2, 3]),
-        ];
-
-        container.showDomain = false;
-
-        setTimeout(function() {
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-          assertEquals(2, sinkList.length);
-
-          // |sinkList[0]| has sink name only.
-          checkElementText(container.allSinks[0].name, sinkList[0]);
-          // |sinkList[1]| has sink name but domain should be hidden.
-          checkElementText(container.allSinks[1].name, sinkList[1]);
-          assertTrue(
-              sinkList[1].textContent.trim().indexOf(
-                  container.allSinks[1].domain.trim()) == -1);
-          done();
-        });
-      });
-
-      // Tests for expected visible UI when the view is SINK_LIST.
-      test('sink list state visibility', function() {
-        container.showSinkList_();
-        checkElementsVisibleWithId(
-            ['container-header', 'device-missing', 'sink-list-view']);
-
-        // Set an non-empty sink list.
-        container.allSinks = fakeSinkList;
-        setTimeout(function() {
-          checkElementsVisibleWithId(
-              ['container-header', 'sink-list', 'sink-list-view']);
-        });
-      });
-
-      // Tests for expected visible UI when the view is SINK_LIST, and there is
-      // a non blocking issue. Also tests for expected visible UI when the
-      // issue is cleared.
-      test('sink list visibility non blocking issue', function(done) {
-        container.showSinkList_();
-        checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-
-        // Set an non-empty sink list.
-        container.allSinks = fakeSinkList;
-
-        // Set a non-blocking issue. The issue should be shown.
-        container.issue = fakeNonBlockingIssue;
-        setTimeout(function() {
-          checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-          checkElementsVisibleWithId([
-            'container-header', 'issue-banner', 'sink-list', 'sink-list-view'
-          ]);
-          // Replace issue with null.
-          container.issue = null;
-          setTimeout(function() {
-            checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-            checkElementsVisibleWithId(
-                ['container-header', 'sink-list', 'sink-list-view']);
-            done();
-          });
-        });
-      });
-
-      // Tests for expected visible UI when the view is SINK_LIST, and there is
-      // a blocking issue. Also tests for expected visible UI when the issue is
-      // cleared.
-      test('sink list visibility blocking issue', function(done) {
-        container.showSinkList_();
-        checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-
-        // Set an non-empty sink list.
-        container.allSinks = fakeSinkList;
-
-        // Set a blocking issue. The issue should be shown, and everything
-        // else, hidden.
-        container.issue = fakeBlockingIssue;
-        setTimeout(function() {
-          checkCurrentView(media_router.MediaRouterView.ISSUE);
-          checkElementsVisibleWithId(
-              ['container-header', 'issue-banner', 'sink-list']);
-          // Replace issue with null.
-          container.issue = null;
-          setTimeout(function() {
-            checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-            checkElementsVisibleWithId(
-                ['container-header', 'sink-list', 'sink-list-view']);
-            done();
-          });
-        });
-      });
-
-      // Tests for expected visible UI when the view is SINK_LIST, and there is
-      // a blocking issue. Also tests for expected visible UI when the issue is
-      // cleared.
-      test(
-          'sink list visibility non-blocking replaced with blocking issue',
-          function(done) {
-            container.showSinkList_();
-            checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-
-            // Set an non-empty sink list.
-            container.allSinks = fakeSinkList;
-
-            // Set a non-blocking issue. The issue should be shown.
-            container.issue = fakeNonBlockingIssue;
-            setTimeout(function() {
-              checkCurrentView(media_router.MediaRouterView.SINK_LIST);
-              checkElementsVisibleWithId([
-                'container-header', 'issue-banner', 'sink-list',
-                'sink-list-view'
-              ]);
-
-              // Set a blocking issue. The issue should be shown, and everything
-              // else, hidden.
-              container.issue = fakeBlockingIssue;
-              setTimeout(function() {
-                checkCurrentView(media_router.MediaRouterView.ISSUE);
-                checkElementsVisibleWithId(
-                    ['container-header', 'issue-banner', 'sink-list']);
-                done();
-              });
-            });
-          });
-
-      // Tests all sinks are always shown in auto mode, and that the mode will
-      // switch if the sinks support only 1 cast mode.
-      test('sink list in auto mode', function(done) {
-        container.allSinks = fakeSinkList;
-        setTimeout(function() {
-          // Container is initially in auto mode since a cast mode has not been
-          // selected.
-          assertEquals(
-              media_router.AUTO_CAST_MODE.description, container.headerText);
-          assertEquals(
-              media_router.CastModeType.AUTO, container.shownCastModeValue_);
-          assertFalse(container.userHasSelectedCastMode_);
-          var sinkList = container.shadowRoot.getElementById('sink-list')
-                             .querySelectorAll('button.selectable-item');
-
-          // All sinks are shown in auto mode.
-          assertEquals(3, sinkList.length);
-
-          // When sink list changes to only 1 compatible cast mode, the mode is
-          // switched, and all sinks are shown.
-          container.allSinks = [
-            new media_router.Sink(
-                'sink id 10', 'Sink 10', null, null,
-                media_router.SinkIconType.CAST, media_router.SinkStatus.ACTIVE,
-                0x4),
-            new media_router.Sink(
-                'sink id 20', 'Sink 20', null, null,
-                media_router.SinkIconType.CAST, media_router.SinkStatus.ACTIVE,
-                0x4),
-            new media_router.Sink(
-                'sink id 30', 'Sink 30', null, null,
-                media_router.SinkIconType.CAST, media_router.SinkStatus.PENDING,
-                0x4),
-          ];
-
-          setTimeout(function() {
-            assertEquals(fakeCastModeList[2].description, container.headerText);
-            assertEquals(
-                fakeCastModeList[2].type, container.shownCastModeValue_);
-            assertFalse(container.userHasSelectedCastMode_);
-
-            var sinkList = container.shadowRoot.getElementById('sink-list')
-                               .querySelectorAll('button.selectable-item');
-            assertEquals(3, sinkList.length);
-
-            // When compatible cast modes size is no longer exactly 1, switch
-            // back to auto mode, and all sinks are shown.
-            container.allSinks = fakeSinkList;
-            setTimeout(function() {
-              assertEquals(
-                  media_router.AUTO_CAST_MODE.description,
-                  container.headerText);
-              assertEquals(
-                  media_router.CastModeType.AUTO,
-                  container.shownCastModeValue_);
-              assertFalse(container.userHasSelectedCastMode_);
-              var sinkList = container.shadowRoot.getElementById('sink-list')
-                                 .querySelectorAll('button.selectable-item');
-
-              // All sinks are shown in auto mode.
-              assertEquals(3, sinkList.length);
-
-              done();
-            });
-          });
-        });
-      });
-    });
-  }
-
-  return {
-    registerTests: registerTests,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/media_router_container_test_base.js b/chrome/test/data/webui/media_router/media_router_container_test_base.js
deleted file mode 100644
index 2cf7266..0000000
--- a/chrome/test/data/webui/media_router/media_router_container_test_base.js
+++ /dev/null
@@ -1,260 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Provides basic utility functions and variables for
- * media-router-container tests.
- */
-
-cr.define('media_router_container_test_base', function() {
-  function init(container) {
-    /**
-     * Checks whether |view| matches the current view of |container|.
-     *
-     * @param {!media_router.MediaRouterView} view Expected view type.
-     */
-    var checkCurrentView = function(view) {
-      assertEquals(view, container.currentView_);
-    };
-
-    /**
-     * Checks whether the elements specified in |elementIdList| are visible.
-     * Checks whether all other elements are not visible. Throws an assertion
-     * error if this is not true.
-     *
-     * @param {!Array<!string>} elementIdList List of id's of elements that
-     *     should be visible.
-     */
-    var checkElementsVisibleWithId = function(elementIdList) {
-      for (var id of elementIdList) {
-        checkElementVisibleWithId(true, id);
-      }
-
-      for (id of hiddenCheckElementIdList) {
-        if (!elementIdList.includes(id)) {
-          if (id === 'first-run-flow-cloud-pref' &&
-              !elementIdList.includes('first-run-flow')) {
-            // If 'first-run-flow' is already expected to be hidden, don't check
-            // first-run-flow-cloud-pref which is a child of it. Polymer2
-            // optimizes <dom-if>s that are false, by no longer updating its
-            // contents.
-            continue;
-          }
-          if ((id === 'search-results' || id === 'no-search-matches') &&
-              !elementIdList.includes('search-results-container')) {
-            // If 'search-results-container' is already expected to be hidden,
-            // don't check search-results or no-search-matches which are
-            // children of it. Polymer2 optimizes <dom-if>s that are false, by
-            // no longer updating its contents.
-            continue;
-          }
-
-          checkElementVisibleWithId(false, id);
-        }
-      }
-    };
-
-    /**
-     * Checks the visibility of an element. An element is considered visible if
-     * it exists and its |hidden| property is |false|.
-     *
-     * @param {boolean} visible Whether the element should be visible.
-     * @param {?Element} element The element to test.
-     * @param {?string} elementId Optional element id to display.
-     */
-    var checkElementVisible = function(visible, element, elementId) {
-      var elementVisible =
-          !!element && !element.hidden && element.style.display != 'none';
-      assertEquals(visible, elementVisible, elementId);
-    };
-
-    /**
-     * Checks the visibility of an element with |elementId| in |container|.
-     * An element is considered visible if it exists and its |hidden| property
-     * is |false|.
-     *
-     * @param {boolean} visible Whether the element should be visible.
-     * @param {!string} elementId The id of the element to test.
-     */
-    var checkElementVisibleWithId = function(visible, elementId) {
-      var element = container.$$('#' + elementId);
-      checkElementVisible(visible, element);
-    };
-
-    /**
-     * Checks whether |expected| and the text in the |element| are equal.
-     *
-     * @param {!string} expected Expected text.
-     * @param {!Element} element Element whose text will be checked.
-     */
-    var checkElementText = function(expected, element) {
-      assertEquals(expected.trim(), element.textContent.trim());
-    };
-
-    /**
-     * The blocking issue to show.
-     * @type {!media_router.Issue}
-     */
-    var fakeBlockingIssue = new media_router.Issue(
-        1, 'Issue Title 1', 'Issue Message 1', 0, 1, 'route id 1', true, 1234);
-
-    /**
-     * The list of CastModes to show.
-     * @type {!Array<!media_router.CastMode>}
-     */
-    var fakeCastModeList = [
-      new media_router.CastMode(
-          media_router.CastModeType.PRESENTATION, 'Cast google.com',
-          'google.com', false),
-      new media_router.CastMode(
-          media_router.CastModeType.TAB_MIRROR, 'Description 1', null, false),
-      new media_router.CastMode(
-          media_router.CastModeType.DESKTOP_MIRROR, 'Description 2', null,
-          false),
-    ];
-
-    /**
-     * The list of CastModes to show with non-PRESENTATION modes only.
-     * @type {!Array<!media_router.CastMode>}
-     */
-    var fakeCastModeListWithNonPresentationModesOnly = [
-      new media_router.CastMode(
-          media_router.CastModeType.TAB_MIRROR, 'Description 1', null, false),
-      new media_router.CastMode(
-          media_router.CastModeType.DESKTOP_MIRROR, 'Description 2', null,
-          false),
-    ];
-
-    /**
-     * The list of CastModes to show with PRESENTATION forced.
-     * @type {!Array<!media_router.CastMode>}
-     */
-    var fakeCastModeListWithPresentationModeForced = [
-      new media_router.CastMode(
-          media_router.CastModeType.PRESENTATION, 'Cast google.com',
-          'google.com', true),
-      new media_router.CastMode(
-          media_router.CastModeType.DESKTOP_MIRROR, 'Description 2', null,
-          false),
-      new media_router.CastMode(
-          media_router.CastModeType.LOCAL_FILE, 'Description 3', null, false),
-    ];
-
-    /**
-     * The list of CastModes to show with Local media on the list
-     * @type {!Array<!media_router.CastMode>}
-     */
-    var fakeCastModeListWithLocalMedia = [
-      new media_router.CastMode(
-          media_router.CastModeType.TAB_MIRROR, 'Description 1', null, false),
-      new media_router.CastMode(
-          media_router.CastModeType.DESKTOP_MIRROR, 'Description 2', null,
-          false),
-      new media_router.CastMode(
-          media_router.CastModeType.LOCAL_FILE, 'Description 3', null, false),
-    ];
-
-    /**
-     * The blocking issue to show.
-     * @type {!media_router.Issue}
-     */
-    var fakeNonBlockingIssue = new media_router.Issue(
-        2, 'Issue Title 2', 'Issue Message 2', 0, 1, 'route id 2', false, 1234);
-
-    /**
-     * The list of current routes.
-     * @type {!Array<!media_router.Route>}
-     */
-    var fakeRouteList = [
-      new media_router.Route('id 1', 'sink id 1', 'Title 1', 0, true, false),
-      new media_router.Route('id 2', 'sink id 2', 'Title 2', 1, false, true),
-    ];
-
-    /**
-     * The list of current routes with local routes only.
-     * @type {!Array<!media_router.Route>}
-     */
-    var fakeRouteListWithLocalRoutesOnly = [
-      new media_router.Route('id 1', 'sink id 1', 'Title 1', 0, true, false),
-      new media_router.Route('id 2', 'sink id 2', 'Title 2', 1, true, false),
-    ];
-
-    // Common cast mode bitset for creating sinks in |fakeSinkList|.
-    var castModeBitset = 0x2 | 0x4 | 0x8;
-    /**
-     * The list of available sinks.
-     * @type {!Array<!media_router.Sink>}
-     */
-    var fakeSinkList = [
-      new media_router.Sink(
-          'sink id 1', 'Sink 1', null, null, media_router.SinkIconType.CAST,
-          media_router.SinkStatus.ACTIVE, castModeBitset),
-      new media_router.Sink(
-          'sink id 2', 'Sink 2', null, null, media_router.SinkIconType.CAST,
-          media_router.SinkStatus.ACTIVE, castModeBitset),
-      new media_router.Sink(
-          'sink id 3', 'Sink 3', null, null, media_router.SinkIconType.CAST,
-          media_router.SinkStatus.PENDING, castModeBitset),
-    ];
-
-    /**
-     * The list of elements to check for visibility.
-     * @const {!Array<!string>}
-     */
-    var hiddenCheckElementIdList = [
-      'cast-mode-list',
-      'container-header',
-      'device-missing',
-      'first-run-flow',
-      'first-run-flow-cloud-pref',
-      'issue-banner',
-      'no-search-matches',
-      'route-details',
-      'search-results',
-      'search-results-container',
-      'sink-list',
-      'sink-list-view',
-    ];
-
-    /**
-     * Search text that will match all sinks.
-     * @type {!string}
-     */
-    var searchTextAll = 'sink';
-
-    /**
-     * Search text that won't match any sink in fakeSinkList.
-     * @type {!string}
-     */
-    var searchTextNone = 'abc';
-
-    /**
-     * Search text that will match exactly one sink.
-     * @type {!string}
-     */
-    var searchTextOne = 'sink 1';
-
-    return {
-      checkCurrentView: checkCurrentView,
-      checkElementsVisibleWithId: checkElementsVisibleWithId,
-      checkElementVisible: checkElementVisible,
-      checkElementVisibleWithId: checkElementVisibleWithId,
-      checkElementText: checkElementText,
-      fakeBlockingIssue: fakeBlockingIssue,
-      fakeCastModeList: fakeCastModeList,
-      fakeCastModeListWithNonPresentationModesOnly:
-          fakeCastModeListWithNonPresentationModesOnly,
-      fakeCastModeListWithPresentationModeForced:
-          fakeCastModeListWithPresentationModeForced,
-      fakeCastModeListWithLocalMedia: fakeCastModeListWithLocalMedia,
-      fakeNonBlockingIssue: fakeNonBlockingIssue,
-      fakeRouteList: fakeRouteList,
-      fakeRouteListWithLocalRoutesOnly: fakeRouteListWithLocalRoutesOnly,
-      fakeSinkList: fakeSinkList,
-      searchTextAll: searchTextAll,
-      searchTextNone: searchTextNone,
-      searchTextOne: searchTextOne,
-    };
-  }
-  return {init: init};
-});
diff --git a/chrome/test/data/webui/media_router/media_router_elements_browsertest.js b/chrome/test/data/webui/media_router/media_router_elements_browsertest.js
deleted file mode 100644
index d8b9ed2..0000000
--- a/chrome/test/data/webui/media_router/media_router_elements_browsertest.js
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Runs the Media Router Polymer elements tests. */
-
-// Polymer BrowserTest fixture.
-GEN_INCLUDE(['//chrome/test/data/webui/polymer_browser_test_base.js']);
-
-/**
- * Test fixture for Media Router Polymer elements.
- * @constructor
- * @extends {PolymerTest}
- */
-function MediaRouterElementsBrowserTest() {}
-
-MediaRouterElementsBrowserTest.prototype = {
-  __proto__: PolymerTest.prototype,
-
-  /** @override */
-  browsePreload: 'chrome://media-router/',
-
-  /** @override */
-  accessibilityIssuesAreErrors: true,
-
-  commandLineSwitches: [{switchName: 'media-router', switchValue: '1'}],
-
-  // List tests for individual elements. The media-router-container tests are
-  // split between several files and use common functionality from
-  // media_router_container_test_base.js.
-  extraLibraries: [
-    ...PolymerTest.prototype.extraLibraries,
-    'issue_banner_tests.js',
-    'media_router_container_cast_mode_list_tests.js',
-    'media_router_container_filter_tests.js',
-    'media_router_container_first_run_flow_tests.js',
-    'media_router_container_route_tests.js',
-    'media_router_container_search_tests.js',
-    'media_router_container_sink_list_tests.js',
-    'media_router_container_test_base.js',
-    'media_router_header_tests.js',
-    'media_router_search_highlighter_tests.js',
-    'route_controls_tests.js',
-    'route_details_tests.js',
-  ],
-
-  /**
-   * Mocks the browser API methods to make them fire events instead.
-   */
-  installMockBrowserApi: function() {
-    cr.define('media_router.browserApi', function() {
-      'use strict';
-
-      function pauseCurrentMedia() {
-        document.dispatchEvent(new Event('mock-pause-current-media'));
-      }
-
-      function playCurrentMedia() {
-        document.dispatchEvent(new Event('mock-play-current-media'));
-      }
-
-      function seekCurrentMedia(time) {
-        var event =
-            new CustomEvent('mock-seek-current-media', {detail: {time: time}});
-        document.dispatchEvent(event);
-      }
-
-      function setCurrentMediaMute(mute) {
-        var event = new CustomEvent(
-            'mock-set-current-media-mute', {detail: {mute: mute}});
-        document.dispatchEvent(event);
-      }
-
-      function setCurrentMediaVolume(volume) {
-        var event = new CustomEvent(
-            'mock-set-current-media-volume', {detail: {volume: volume}});
-        document.dispatchEvent(event);
-      }
-
-      function setHangoutsLocalPresent(localPresent) {
-        const event = new CustomEvent(
-            'mock-set-hangouts-local-present',
-            {detail: {localPresent: localPresent}});
-        document.dispatchEvent(event);
-      }
-
-      function setMediaRemotingEnabled(enabled) {
-        const event = new CustomEvent(
-            'mock-set-media-remoting-enabled', {detail: {enabled: enabled}});
-        document.dispatchEvent(event);
-      }
-
-      return {
-        pauseCurrentMedia: pauseCurrentMedia,
-        playCurrentMedia: playCurrentMedia,
-        seekCurrentMedia: seekCurrentMedia,
-        setCurrentMediaMute: setCurrentMediaMute,
-        setCurrentMediaVolume: setCurrentMediaVolume,
-        setHangoutsLocalPresent: setHangoutsLocalPresent,
-        setMediaRemotingEnabled: setMediaRemotingEnabled
-      };
-    });
-  },
-
-  /** @override */
-  setUp: function() {
-    PolymerTest.prototype.setUp.call(this);
-    this.installMockBrowserApi();
-
-    // Enable when failure is resolved.
-    // AX_ARIA_02: http://crbug.com/591547
-    this.accessibilityAuditConfig.ignoreSelectors(
-        'nonExistentAriaRelatedElement', '#input');
-
-    // Enable when failure is resolved.
-    // AX_ARIA_04: http://crbug.com/591550
-    this.accessibilityAuditConfig.ignoreSelectors(
-        'badAriaAttributeValue', '#input');
-
-    // This element is used as a focus placeholder on dialog open, then
-    // deleted. The user will be unable to tab to it. Remove when there is a
-    // long term fix.
-    this.accessibilityAuditConfig.ignoreSelectors(
-        'focusableElementNotVisibleAndNotAriaHidden', '#focus-placeholder');
-  },
-};
-
-TEST_F('MediaRouterElementsBrowserTest', 'IssueBanner', function() {
-  issue_banner.registerTests();
-  mocha.run();
-});
-
-// The media-router-container tests are being split into multiple parts due to
-// timeout issues on bots.
-TEST_F(
-    'MediaRouterElementsBrowserTest', 'MediaRouterContainerCastModeList',
-    function() {
-      media_router_container_cast_mode_list.registerTests();
-      mocha.run();
-    });
-
-TEST_F(
-    'MediaRouterElementsBrowserTest', 'MediaRouterContainerFirstRunFlow',
-    function() {
-      media_router_container_first_run_flow.registerTests();
-      mocha.run();
-    });
-
-TEST_F(
-    'MediaRouterElementsBrowserTest', 'MediaRouterContainerRoute', function() {
-      media_router_container_route.registerTests();
-      mocha.run();
-    });
-
-// Disabling on chromeos due to flaky test.
-// https://crbug.com/945198
-GEN('#if defined(OS_CHROMEOS)');
-GEN('#define MAYBE_MediaRouterContainerSearchPart1 \\');
-GEN('    DISABLED_MediaRouterContainerSearchPart1');
-GEN('#else');
-GEN('#define MAYBE_MediaRouterContainerSearchPart1 \\');
-GEN('    MediaRouterContainerSearchPart1');
-GEN('#endif');
-
-TEST_F(
-    'MediaRouterElementsBrowserTest', 'MAYBE_MediaRouterContainerSearchPart1',
-    function() {
-      media_router_container_search.registerTestsPart1();
-      mocha.run();
-    });
-
-// Disabling on chromeos due to flaky test.
-// https://crbug.com/945198
-GEN('#if defined(OS_CHROMEOS)');
-GEN('#define MAYBE_MediaRouterContainerSearchPart2 \\');
-GEN('    DISABLED_MediaRouterContainerSearchPart2');
-GEN('#else');
-GEN('#define MAYBE_MediaRouterContainerSearchPart2 \\');
-GEN('    MediaRouterContainerSearchPart2');
-GEN('#endif');
-
-TEST_F(
-    'MediaRouterElementsBrowserTest', 'MAYBE_MediaRouterContainerSearchPart2',
-    function() {
-      media_router_container_search.registerTestsPart2();
-      mocha.run();
-    });
-
-TEST_F(
-    'MediaRouterElementsBrowserTest', 'MediaRouterContainerSinkList',
-    function() {
-      media_router_container_sink_list.registerTests();
-      mocha.run();
-    });
-
-
-// crbug.com/945581
-TEST_F(
-    'MediaRouterElementsBrowserTest',
-    'DISABLED_MediaRouterContainerFilterPart1', function() {
-      media_router_container_filter.registerTestsPart1();
-      mocha.run();
-    });
-
-// crbug.com/945581
-TEST_F(
-    'MediaRouterElementsBrowserTest',
-    'DISABLED_MediaRouterContainerFilterPart2', function() {
-      media_router_container_filter.registerTestsPart2();
-      mocha.run();
-    });
-
-TEST_F('MediaRouterElementsBrowserTest', 'MediaRouterHeader', function() {
-  media_router_header.registerTests();
-  mocha.run();
-});
-
-TEST_F(
-    'MediaRouterElementsBrowserTest', 'MediaRouterSearchHighlighter',
-    function() {
-      media_router_search_highlighter.registerTests();
-      mocha.run();
-    });
-
-TEST_F(
-    'MediaRouterElementsBrowserTest', 'MediaRouterRouteControls', function() {
-      route_controls.registerTests();
-      mocha.run();
-    });
-
-TEST_F('MediaRouterElementsBrowserTest', 'MediaRouterRouteDetails', function() {
-  route_details.registerTests();
-  mocha.run();
-});
diff --git a/chrome/test/data/webui/media_router/media_router_header_tests.js b/chrome/test/data/webui/media_router/media_router_header_tests.js
deleted file mode 100644
index b439d25..0000000
--- a/chrome/test/data/webui/media_router/media_router_header_tests.js
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for media-router-header. */
-cr.define('media_router_header', function() {
-  function registerTests() {
-    suite('MediaRouterHeader', function() {
-      /**
-       * Media Router Container created before each test.
-       * @type {?MediaRouterContainer}
-       */
-      var container;
-
-      /**
-       * Media Router Header created before each test.
-       * @type {MediaRouterHeader}
-       */
-      var header;
-
-      /**
-       * The list of elements to check for visibility.
-       * @const {!Array<string>}
-       */
-      var hiddenCheckElementIdList = [
-        'arrow-drop-icon',
-        'back-button-container',
-        'close-button',
-        'header-text',
-        'user-email-container',
-      ];
-
-      // Checks whether the current icon matches the icon used for the view.
-      var checkArrowDropIcon = function(view) {
-        assertEquals(
-            header.computeArrowDropIcon_(view),
-            header.$['arrow-drop-icon'].icon);
-      };
-
-      // Checks whether |element| is hidden.
-      // An element is considered hidden if it does not exist (e.g. unstamped)
-      // or its |hidden| property is |false|.
-      var checkElementHidden = function(hidden, elementId) {
-        var element =
-            header.$[elementId] || header.shadowRoot.getElementById(elementId);
-        assertEquals(
-            hidden,
-            !element || element.hidden ||
-                window.getComputedStyle(element, null)
-                        .getPropertyValue('display') == 'none');
-      };
-
-      // Checks whether the elements specified in |elementIdList| are visible.
-      // Checks whether all other elements are hidden.
-      var checkElementsVisibleWithId = function(elementIdList) {
-        for (var i = 0; i < elementIdList.length; i++) {
-          checkElementHidden(false, elementIdList[i]);
-        }
-
-        for (var j = 0; j < hiddenCheckElementIdList.length; j++) {
-          if (elementIdList.indexOf(hiddenCheckElementIdList[j]) == -1) {
-            checkElementHidden(true, hiddenCheckElementIdList[j]);
-          }
-        }
-      };
-
-      // Checks whether |expected| and the text in the |element| are equal.
-      var checkElementText = function(expected, element) {
-        assertEquals(expected.trim(), element.textContent.trim());
-      };
-
-      // Import media_router_header.html before running suite.
-      suiteSetup(function() {
-        return PolymerTest.importHtml(
-            'chrome://media-router/elements/media_router_container/' +
-            'media_router_container.html');
-      });
-
-      // Initialize an media-router-header before each test.
-      setup(function(done) {
-        PolymerTest.clearBody();
-        container = document.createElement('media-router-container');
-        document.body.appendChild(container);
-        header = container.$['container-header'];
-
-        // Allow for the media router container to be created, attached, and
-        // listeners registered in an afterNextRender() call.
-        Polymer.RenderStatus.afterNextRender(this, done);
-      });
-
-      // Tests for 'close-dialog' event firing when the close button is
-      // clicked.
-      test('close button click', function(done) {
-        header.addEventListener('close-dialog', function(data) {
-          assertFalse(data.detail.pressEscToClose);
-          done();
-        });
-        MockInteractions.tap(header.$['close-button']);
-      });
-
-      // Tests for 'back-click' event firing when the back button
-      // is clicked.
-      test('back button click', function(done) {
-        header.view = media_router.MediaRouterView.ROUTE_DETAILS;
-        setTimeout(function() {
-          header.addEventListener('back-click', function() {
-            done();
-          });
-          MockInteractions.tap(header.shadowRoot.getElementById('back-button'));
-        });
-      });
-
-      // Tests for 'header-or-arrow-click' event firing when the arrow drop
-      // button is clicked on the CAST_MODE_LIST view.
-      test('arrow drop icon click', function(done) {
-        header.view = media_router.MediaRouterView.CAST_MODE_LIST;
-        header.addEventListener('header-or-arrow-click', function() {
-          done();
-        });
-        MockInteractions.tap(header.$['arrow-drop-icon']);
-      });
-
-      // Tests for 'header-or-arrow-click' event firing when the arrow drop
-      // button is clicked on the SINK_LIST view.
-      test('arrow drop icon click', function(done) {
-        header.view = media_router.MediaRouterView.SINK_LIST;
-        header.addEventListener('header-or-arrow-click', function() {
-          done();
-        });
-        MockInteractions.tap(header.$['arrow-drop-icon']);
-      });
-
-      // Tests for 'header-or-arrow-click' event firing when the header text is
-      // clicked on the CAST_MODE_LIST view.
-      test('header text click on cast mode list view', function(done) {
-        header.view = media_router.MediaRouterView.CAST_MODE_LIST;
-        header.addEventListener('header-or-arrow-click', function() {
-          done();
-        });
-        MockInteractions.tap(header.$['header-text']);
-      });
-
-      // Tests for 'header-or-arrow-click' event firing when the header text is
-      // clicked on the SINK_LIST view.
-      test('header text click on sink list view', function(done) {
-        header.view = media_router.MediaRouterView.SINK_LIST;
-        header.addEventListener('header-or-arrow-click', function() {
-          done();
-        });
-        MockInteractions.tap(header.$['header-text']);
-      });
-
-      // Tests for no event firing when the header text is clicked on certain
-      // views.
-      test('header text click without event firing', function(done) {
-        header.addEventListener('header-or-arrow-click', function() {
-          assertNotReached();
-        });
-
-        header.view = media_router.MediaRouterView.FILTER;
-        MockInteractions.tap(header.$['header-text']);
-        header.view = media_router.MediaRouterView.ISSUE;
-        MockInteractions.tap(header.$['header-text']);
-        header.view = media_router.MediaRouterView.ROUTE_DETAILS;
-        MockInteractions.tap(header.$['header-text']);
-        done();
-      });
-
-      // Tests for 'header-height-changed' event firing when the header changes
-      // and the email is shown.
-      test('header height changed with email shown', function(done) {
-        header.addEventListener('header-height-changed', function() {
-          assertEquals(header.headerWithEmailHeight_, header.offsetHeight);
-          done();
-        });
-        header.userEmail = 'user@example.com';
-        header.showEmail = true;
-      });
-
-      // Test for 'header-height-changed' event firing when the header changes
-      // and the email is not shown.
-      test('header height changed without email shown', function(done) {
-        header.userEmail = 'user@example.com';
-        header.showEmail = true;
-        setTimeout(function() {
-          header.addEventListener('header-height-changed', function() {
-            assertEquals(header.headerWithoutEmailHeight_, header.offsetHeight);
-            done();
-          });
-          header.showEmail = false;
-        });
-      });
-
-      // Tests the |computeArrowDropIcon_| function.
-      test('compute arrow drop icon', function() {
-        assertEquals(
-            'cr:arrow-drop-up',
-            header.computeArrowDropIcon_(
-                media_router.MediaRouterView.CAST_MODE_LIST));
-        assertEquals(
-            'cr:arrow-drop-down',
-            header.computeArrowDropIcon_(media_router.MediaRouterView.FILTER));
-        assertEquals(
-            'cr:arrow-drop-down',
-            header.computeArrowDropIcon_(media_router.MediaRouterView.ISSUE));
-        assertEquals(
-            'cr:arrow-drop-down',
-            header.computeArrowDropIcon_(
-                media_router.MediaRouterView.ROUTE_DETAILS));
-        assertEquals(
-            'cr:arrow-drop-down',
-            header.computeArrowDropIcon_(
-                media_router.MediaRouterView.SINK_LIST));
-      });
-
-      test('visibility of UI depending on view', function(done) {
-        header.view = media_router.MediaRouterView.CAST_MODE_LIST;
-        checkElementsVisibleWithId(
-            ['arrow-drop-icon', 'close-button', 'header-text']);
-
-        header.view = media_router.MediaRouterView.FILTER;
-        setTimeout(function() {
-          checkElementsVisibleWithId(
-              ['back-button-container', 'close-button', 'header-text']);
-
-          header.view = media_router.MediaRouterView.ISSUE;
-          setTimeout(function() {
-            checkElementsVisibleWithId(['close-button', 'header-text']);
-
-            header.view = media_router.MediaRouterView.ROUTE_DETAILS;
-            setTimeout(function() {
-              checkElementsVisibleWithId(
-                  ['back-button-container', 'close-button', 'header-text']);
-
-              header.view = media_router.MediaRouterView.SINK_LIST;
-              setTimeout(function() {
-                checkElementsVisibleWithId(
-                    ['arrow-drop-icon', 'close-button', 'header-text']);
-                done();
-              });
-            });
-          });
-        });
-      });
-
-      // Verify email is shown and header updated if showEmail is true.
-      test('visibility and style of UI depending on email', function(done) {
-        header.userEmail = 'user@example.com';
-        header.showEmail = true;
-        setTimeout(function() {
-          assertEquals(header.headerWithEmailHeight_, header.offsetHeight);
-
-          assertFalse(header.$$('#user-email-container').hidden);
-          checkElementText(
-              header.userEmail, header.$$('#user-email-container'));
-          done();
-        });
-      });
-
-      // Verify no email is shown and header is not modified if email is empty.
-      test('visibility and style of UI for empty email', function(done) {
-        header.userEmail = undefined;
-        header.showEmail = true;
-        setTimeout(function() {
-          assertNotEquals(header.headerWithEmailHeight_, header.offsetHeight);
-          checkElementText('', header.$$('#user-email-container'));
-          done();
-        });
-      });
-    });
-  }
-
-  return {
-    registerTests: registerTests,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/media_router_search_highlighter_tests.js b/chrome/test/data/webui/media_router/media_router_search_highlighter_tests.js
deleted file mode 100644
index 8c7196e..0000000
--- a/chrome/test/data/webui/media_router/media_router_search_highlighter_tests.js
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for media-router-search-highlighter. */
-cr.define('media_router_search_highlighter', function() {
-  function registerTests() {
-    suite('MediaRouterSearchHighlighter', function() {
-      /**
-       * Media Router Search Highlighted created before each test.
-       * @type {MediaRouterSearchHighlighter}
-       */
-      var searchHighlighter;
-
-      // Checks whether the |textContent| of |searchHighlighter| and its |text|
-      // property matches |expected|.
-      var checkTextContent = function(expected) {
-        assertEquals(expected, searchHighlighter.$['text'].textContent);
-        assertEquals(expected, searchHighlighter.text);
-      };
-
-      // Computes the flat text string that should be displayed when the search
-      // highlighter is given |data|.
-      var computeAnswerText = function(data) {
-        var answer = '';
-        for (var i = 0; i < data.highlightedText.length; ++i) {
-          if (data.plainText[i]) {
-            answer += data.plainText[i];
-          }
-          if (data.highlightedText[i]) {
-            answer += data.highlightedText[i];
-          }
-        }
-        return answer;
-      };
-
-      // Import media_router_search_highlighter.html before running suite.
-      suiteSetup(function() {
-        return PolymerTest.importHtml(
-            'chrome://media-router/elements/media_router_search_highlighter/' +
-            'media_router_search_highlighter.html');
-      });
-
-      // Initialize a media-router-search-highlighter before each test.
-      setup(function(done) {
-        PolymerTest.clearBody();
-        searchHighlighter =
-            document.createElement('media-router-search-highlighter');
-        document.body.appendChild(searchHighlighter);
-
-        // Let the search highlighter be created and attached.
-        setTimeout(done);
-      });
-
-      test('text content correct', function(done) {
-        var testInputs = [];
-
-        // Both null and '' should be acceptable in the arrays for producing no
-        // text.
-        var highlightedOnlyMultiple = {
-          highlightedText: ['one', 'two', 'three'],
-          plainText: ['', null, ''],
-        };
-        testInputs.push(highlightedOnlyMultiple);
-
-        var highlightedOnlySingle = {
-          highlightedText: ['onelongsection'],
-          plainText: [null],
-        };
-        testInputs.push(highlightedOnlySingle);
-
-        var htmlHighlightedSingle = {
-          highlightedText: ['<b></b>'],
-          plainText: ['one'],
-        };
-        testInputs.push(htmlHighlightedSingle);
-
-        var htmlHighlightedSplit = {
-          highlightedText: ['<b>', '</b>'],
-          plainText: ['one', 'two'],
-        };
-        testInputs.push(htmlHighlightedSplit);
-
-        var htmlMixedSingle = {
-          highlightedText: ['&amp;'],
-          plainText: ['<&lt;>'],
-        };
-        testInputs.push(htmlMixedSingle);
-
-        var htmlMixedSplit = {
-          highlightedText: ['/>'],
-          plainText: ['<br'],
-        };
-        testInputs.push(htmlMixedSplit);
-
-        var htmlPlainSingle = {
-          highlightedText: [''],
-          plainText: ['<br/>'],
-        };
-        testInputs.push(htmlPlainSingle);
-
-        var htmlPlainSplit = {
-          highlightedText: [null, null],
-          plainText: ['<spa', 'n>'],
-        };
-        testInputs.push(htmlPlainSplit);
-
-        var mixedHighlightedFirstMultiple = {
-          highlightedText: ['first', 'last'],
-          plainText: [null, 'middle'],
-        };
-        testInputs.push(mixedHighlightedFirstMultiple);
-
-        var mixedHighlightedFirstSingle = {
-          highlightedText: ['onlytext', null],
-          plainText: ['', 'plain'],
-        };
-        testInputs.push(mixedHighlightedFirstSingle);
-
-        var mixedPlainFirstMultiple = {
-          highlightedText: ['second', null],
-          plainText: ['first', 'third'],
-        };
-        testInputs.push(mixedPlainFirstMultiple);
-
-        var mixedPlainFirstSingle = {
-          highlightedText: ['', 'highlight'],
-          plainText: ['plaintextonly', ''],
-        };
-        testInputs.push(mixedPlainFirstSingle);
-
-        var plainTextOnlyMultiple = {
-          highlightedText: [null, '', null],
-          plainText: ['one', 'two', 'three'],
-        };
-        testInputs.push(plainTextOnlyMultiple);
-
-        var plainTextOnlySingle = {
-          highlightedText: [''],
-          plainText: ['lonestring'],
-        };
-        testInputs.push(plainTextOnlySingle);
-
-        testInputs.forEach(function(data) {
-          searchHighlighter.data = data;
-          checkTextContent(computeAnswerText(data));
-        });
-        done();
-      });
-    });
-  }
-
-  return {
-    registerTests: registerTests,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/route_controls_tests.js b/chrome/test/data/webui/media_router/route_controls_tests.js
deleted file mode 100644
index b142590..0000000
--- a/chrome/test/data/webui/media_router/route_controls_tests.js
+++ /dev/null
@@ -1,376 +0,0 @@
-// Copyright 2017 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.
-
-/** @fileoverview Suite of tests for route-controls. */
-cr.define('route_controls', function() {
-  function registerTests() {
-    suite('RouteControls', function() {
-      /**
-       * Route Controls created before each test.
-       * @type {RouteControls}
-       */
-      var controls;
-
-      /**
-       * First fake route created before each test.
-       * @type {media_router.Route}
-       */
-      var fakeRouteOne;
-
-      /**
-       * Second fake route created before each test.
-       * @type {media_router.Route}
-       */
-      var fakeRouteTwo;
-
-      var assertElementText = function(expected, elementId) {
-        assertEquals(expected, controls.$$('#' + elementId).innerText);
-      };
-
-      var isElementShown = function(elementId) {
-        return !controls.$$('#' + elementId).hasAttribute('hidden');
-      };
-
-      var assertElementShown = function(elementId) {
-        assertTrue(isElementShown(elementId));
-      };
-
-      var assertElementHidden = function(elementId) {
-        assertFalse(isElementShown(elementId));
-      };
-
-      // Creates an instance of RouteStatus with the given parameters. If a
-      // parameter is not set, it defaults to an empty string, zero, or false.
-      var createRouteStatus = function(params = {}) {
-        return new media_router.RouteStatus(
-            params.title ? params.title : '', !!params.canPlayPause,
-            !!params.canMute, !!params.canSetVolume, !!params.canSeek,
-            params.playState ? params.playState :
-                               media_router.PlayState.PLAYING,
-            !!params.isPaused, !!params.isMuted,
-            params.volume ? params.volume : 0,
-            params.duration ? params.duration : 0,
-            params.currentTime ? params.currentTime : 0);
-      };
-
-      // Import route_controls.html before running suite.
-      suiteSetup(function() {
-        return PolymerTest.importHtml(
-            'chrome://media-router/elements/route_controls/' +
-            'route_controls.html');
-      });
-
-      // Initialize a route-controls before each test.
-      setup(function(done) {
-        PolymerTest.clearBody();
-        controls = document.createElement('route-controls');
-        document.body.appendChild(controls);
-
-        // Initialize routes and sinks.
-        fakeRouteOne = new media_router.Route(
-            'route id 1', 'sink id 1', 'Video 1', 1, true, false);
-        fakeRouteTwo = new media_router.Route(
-            'route id 2', 'sink id 2', 'Video 2', 2, false, true);
-
-        // Allow for the route controls to be created and attached.
-        setTimeout(done);
-      });
-
-      // Tests the initial expected text.
-      test('initial text setting', function() {
-        // Set |route|.
-        controls.onRouteUpdated_(fakeRouteOne);
-        assertElementText(fakeRouteOne.description, 'route-description');
-
-        // Set |route| to a different route.
-        controls.onRouteUpdated_(fakeRouteTwo);
-        assertElementText(fakeRouteTwo.description, 'route-description');
-      });
-
-      // Tests that the route status title is shown when RouteStatus is
-      // updated.
-      test('update route text', function() {
-        // Set |route|.
-        controls.onRouteUpdated_(fakeRouteOne);
-        assertElementText(fakeRouteOne.description, 'route-description');
-
-        // Set the route status title.
-        var title = 'test title';
-        controls.routeStatus = createRouteStatus({title: title});
-
-        assertElementText(fakeRouteOne.description, 'route-description');
-        assertElementText(title, 'route-title');
-      });
-
-      // Tests that media controls are shown and hidden when RouteStatus is
-      // updated.
-      test('media controls visibility', function() {
-        // Create a RouteStatus with no controls.
-        controls.routeStatus = createRouteStatus();
-        assertElementHidden('route-play-pause-button');
-        assertElementHidden('route-time-controls');
-        assertElementHidden('route-volume-button');
-        assertElementHidden('volume-holder');
-
-        controls.routeStatus =
-            createRouteStatus({canPlayPause: true, canSeek: true});
-
-        assertElementShown('route-play-pause-button');
-        assertElementShown('route-time-controls');
-        assertElementHidden('route-volume-button');
-        assertElementHidden('volume-holder');
-
-        controls.routeStatus =
-            createRouteStatus({canMute: true, canSetVolume: true});
-
-        assertElementHidden('route-play-pause-button');
-        assertElementHidden('route-time-controls');
-        assertElementShown('route-volume-button');
-        assertElementShown('volume-holder');
-      });
-
-      // Tests that the play button sends a command to the browser API.
-      test('send play command', function(done) {
-        var waitForPlayEvent = function(data) {
-          document.removeEventListener(
-              'mock-play-current-media', waitForPlayEvent);
-          done();
-        };
-        document.addEventListener('mock-play-current-media', waitForPlayEvent);
-
-        controls.routeStatus = createRouteStatus(
-            {canPlayPause: true, playState: media_router.PlayState.PAUSED});
-        MockInteractions.tap(controls.$$('#route-play-pause-button'));
-      });
-
-      // Tests that the pause button sends a command to the browser API.
-      test('send pause command', function(done) {
-        var waitForPauseEvent = function(data) {
-          document.removeEventListener(
-              'mock-pause-current-media', waitForPauseEvent);
-          done();
-        };
-        document.addEventListener(
-            'mock-pause-current-media', waitForPauseEvent);
-
-        controls.routeStatus = createRouteStatus(
-            {canPlayPause: true, playState: media_router.PlayState.PLAYING});
-        MockInteractions.tap(controls.$$('#route-play-pause-button'));
-      });
-
-      // Tests that the mute button sends a command to the browser API.
-      test('send mute command', function(done) {
-        var waitForMuteEvent = function(data) {
-          // Remove the event listener to avoid interfering with other tests.
-          document.removeEventListener(
-              'mock-set-current-media-mute', waitForMuteEvent);
-          if (data.detail.mute) {
-            done();
-          } else {
-            done('Expected the "Mute" command but received "Unmute".');
-          }
-        };
-        document.addEventListener(
-            'mock-set-current-media-mute', waitForMuteEvent);
-
-        controls.routeStatus =
-            createRouteStatus({canMute: true, isMuted: false});
-        MockInteractions.tap(controls.$$('#route-volume-button'));
-      });
-
-      // Tests that the unmute button sends a command to the browser API.
-      test('send unmute command', function(done) {
-        var waitForUnmuteEvent = function(data) {
-          // Remove the event listener to avoid interfering with other tests.
-          document.removeEventListener(
-              'mock-set-current-media-mute', waitForUnmuteEvent);
-          if (data.detail.mute) {
-            done('Expected the "Unmute" command but received "Mute".');
-          } else {
-            done();
-          }
-        };
-        document.addEventListener(
-            'mock-set-current-media-mute', waitForUnmuteEvent);
-
-        controls.routeStatus =
-            createRouteStatus({canMute: true, isMuted: true});
-        MockInteractions.tap(controls.$$('#route-volume-button'));
-      });
-
-      // Tests that the seek slider sends a command to the browser API.
-      test('send seek command', function(done) {
-        var currentTime = 500;
-        var duration = 1200;
-        var waitForSeekEvent = function(data) {
-          document.removeEventListener(
-              'mock-seek-current-media', waitForSeekEvent);
-          if (data.detail.time == currentTime) {
-            done();
-          } else {
-            done(
-                'Expected the time to be ' + currentTime + ' but instead got ' +
-                data.detail.time);
-          }
-        };
-        document.addEventListener('mock-seek-current-media', waitForSeekEvent);
-
-        controls.routeStatus =
-            createRouteStatus({canSeek: true, duration: duration});
-
-        // In actual usage, the change event gets fired when the user interacts
-        // with the slider.
-        controls.$$('#route-time-slider').value = currentTime;
-        controls.$$('#route-time-slider').fire('cr-slider-value-changed');
-      });
-
-      // Tests that the volume slider sends a command to the browser API.
-      test('send set volume command', function(done) {
-        var volume = 45;
-        var waitForSetVolumeEvent = function(data) {
-          document.removeEventListener(
-              'mock-set-current-media-volume', waitForSetVolumeEvent);
-          if (data.detail.volume == volume / 100) {
-            done();
-          } else {
-            done(
-                'Expected the volume to be ' + volume + ' but instead got ' +
-                data.detail.volume);
-          }
-        };
-        document.addEventListener(
-            'mock-set-current-media-volume', waitForSetVolumeEvent);
-
-        controls.routeStatus = createRouteStatus({canSetVolume: true});
-
-        // In actual usage, the change event gets fired when the user interacts
-        // with the slider.
-        controls.$$('#route-volume-slider').value = volume;
-        controls.$$('#route-volume-slider').fire('cr-slider-value-changed');
-      });
-
-      test('increment current time while playing', function(done) {
-        var initialTime = 50;
-        controls.routeStatus = createRouteStatus({
-          canSeek: true,
-          playState: media_router.PlayState.PLAYING,
-          duration: 100,
-          currentTime: initialTime,
-        });
-
-        // Check that the current time has been incremented after a second.
-        setTimeout(function() {
-          controls.routeStatus.playState = media_router.PlayState.PAUSED;
-          var pausedTime = controls.displayedCurrentTime_;
-          assertTrue(pausedTime > initialTime);
-
-          // Check that the current time stayed the same after a second, now
-          // that the media is paused.
-          setTimeout(function() {
-            assertEquals(pausedTime, controls.displayedCurrentTime_);
-            done();
-          }, 1000);
-        }, 1000);
-      });
-
-      test('set media remoting enabled', function(done) {
-        assertElementHidden('mirroring-fullscreen-video-controls');
-        let routeStatus = createRouteStatus();
-        controls.routeStatus = routeStatus;
-        assertElementHidden('mirroring-fullscreen-video-controls');
-
-        routeStatus = createRouteStatus();
-        routeStatus.mirroringExtraData = {mediaRemotingEnabled: true};
-        controls.routeStatus = routeStatus;
-        assertElementShown('mirroring-fullscreen-video-controls');
-        assertEquals(
-            controls.FullscreenVideoOption_.REMOTE_SCREEN,
-            controls.$$('#mirroring-fullscreen-video-dropdown').value);
-
-        document.addEventListener(
-            'mock-set-media-remoting-enabled', function(e) {
-              assertFalse(e.detail.enabled);
-              done();
-            });
-
-        // Simulate changing the dropdown menu value.
-        controls.$$('#mirroring-fullscreen-video-dropdown').value =
-            controls.FullscreenVideoOption_.BOTH_SCREENS;
-        controls.$$('#mirroring-fullscreen-video-dropdown')
-            .dispatchEvent(new Event('change'));
-      });
-
-      test('hangouts local present mode', function(done) {
-        assertElementHidden('hangouts-local-present-controls');
-        let routeStatus = createRouteStatus();
-        controls.routeStatus = routeStatus;
-        assertElementHidden('hangouts-local-present-controls');
-
-        routeStatus = createRouteStatus();
-        routeStatus.hangoutsExtraData = {localPresent: false};
-        controls.routeStatus = routeStatus;
-        assertElementShown('hangouts-local-present-controls');
-
-        routeStatus = createRouteStatus();
-        routeStatus.hangoutsExtraData = {localPresent: true};
-        controls.routeStatus = routeStatus;
-        assertElementShown('hangouts-local-present-controls');
-        assertTrue(controls.$$('#hangouts-local-present-checkbox').checked);
-
-        document.addEventListener(
-            'mock-set-hangouts-local-present', function(e) {
-              done();
-            });
-        MockInteractions.tap(controls.$$('#hangouts-local-present-checkbox'));
-        assertFalse(controls.$$('#hangouts-local-present-checkbox').checked);
-      });
-
-      test('ignore external updates right after using sliders', function(done) {
-        var currentTime = 500;
-        var externalCurrentTime = 800;
-        var volume = 45;
-        var externalVolume = 0.72;
-        var duration = 1200;
-        var doExternalUpdate = function() {
-          controls.routeStatus = createRouteStatus({
-            canSeek: true,
-            canSetVolume: true,
-            currentTime: externalCurrentTime,
-            duration: duration,
-            volume: externalVolume
-          });
-        };
-
-        controls.routeStatus = createRouteStatus(
-            {canSeek: true, canSetVolume: true, duration: duration});
-
-        // In actual usage, the change event gets fired when the user interacts
-        // with the slider.
-        controls.$$('#route-time-slider').value = currentTime;
-        controls.$$('#route-time-slider').fire('cr-slider-value-changed');
-        controls.$$('#route-volume-slider').value = volume;
-        controls.$$('#route-volume-slider').fire('cr-slider-value-changed');
-
-        // External updates right after slider interaction should be ignored.
-        doExternalUpdate();
-        assertEquals(controls.$$('#route-time-slider').value, currentTime);
-        assertEquals(controls.$$('#route-volume-slider').value, volume);
-
-        setTimeout(function() {
-          // External updates after some time should get applied to the sliders.
-          doExternalUpdate();
-          assertEquals(
-              controls.$$('#route-time-slider').value, externalCurrentTime);
-          assertEquals(
-              controls.$$('#route-volume-slider').value, externalVolume * 100);
-          done();
-        }, 1001);
-      });
-    });
-  }
-
-  return {
-    registerTests: registerTests,
-  };
-});
diff --git a/chrome/test/data/webui/media_router/route_details_tests.js b/chrome/test/data/webui/media_router/route_details_tests.js
deleted file mode 100644
index 14d8079..0000000
--- a/chrome/test/data/webui/media_router/route_details_tests.js
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/** @fileoverview Suite of tests for route-details. */
-cr.define('route_details', function() {
-  function registerTests() {
-    suite('RouteDetails', function() {
-      /**
-       * Route Details created before each test.
-       * @type {RouteDetails}
-       */
-      var details;
-
-      /**
-       * First fake route created before each test.
-       * @type {media_router.Route}
-       */
-      var fakeRouteOne;
-
-      /**
-       * The custom controller path for |fakeRouteOne|.
-       * @const @type {string}
-       */
-      var fakeRouteOneControllerPath =
-          'chrome-extension://123/custom_view.html';
-
-      /**
-       * Second fake route created before each test.
-       * @type {media_router.Route}
-       */
-      var fakeRouteTwo;
-
-      /**
-       * Fake sink that corresponds to |fakeRouteOne|.
-       * @type {media_router.Sink}
-       */
-      var fakeSinkOne;
-
-      // Checks whether |expected| and the text in the span element in
-      // the |elementId| element are equal.
-      var checkSpanText = function(expected, elementId) {
-        assertEquals(
-            expected,
-            details.$$('#' + elementId).querySelector('span').innerText);
-      };
-
-      // Checks whether |expected| and the text in the element in the
-      // |elementId| element are equal.
-      var checkElementText = function(expected, elementId) {
-        assertEquals(expected, details.$$('#' + elementId).innerText);
-      };
-
-      // Checks the default route view is shown.
-      var checkDefaultViewIsShown = function() {
-        assertFalse(details.$$('#route-description').hasAttribute('hidden'));
-        assertTrue(
-            !details.$$('extension-view-wrapper') ||
-            details.$$('extension-view-wrapper').hasAttribute('hidden'));
-      };
-
-      // Checks the start button is shown.
-      var checkStartCastButtonIsShown = function() {
-        assertFalse(details.$$('#start-casting-to-route-button')
-                        .hasAttribute('hidden'));
-      };
-
-      // Checks the start button is not shown.
-      var checkStartCastButtonIsNotShown = function() {
-        assertTrue(details.$$('#start-casting-to-route-button')
-                       .hasAttribute('hidden'));
-      };
-
-      // Import route_details.html before running suite.
-      suiteSetup(function() {
-        return PolymerTest.importHtml(
-            'chrome://media-router/elements/route_details/' +
-            'route_details.html');
-      });
-
-      // Initialize a route-details before each test.
-      setup(function(done) {
-        PolymerTest.clearBody();
-        details = document.createElement('route-details');
-        document.body.appendChild(details);
-
-        // Initialize routes and sinks.
-        fakeRouteOne = new media_router.Route(
-            'route id 1', 'sink id 1', 'Video 1', 1, true, false,
-            fakeRouteOneControllerPath);
-        fakeRouteTwo = new media_router.Route(
-            'route id 2', 'sink id 2', 'Video 2', 2, false, true);
-        fakeSinkOne = new media_router.Sink(
-            'sink id 1', 'sink 1', 'description', null,
-            media_router.SinkIconType.CAST, media_router.SinkStatus.ACTIVE,
-            2 | 4);
-
-        // Allow for the route details to be created and attached.
-        setTimeout(done);
-      });
-
-      // Tests that the cast button is shown under the correct circumstances and
-      // that updating |replaceRouteAvailable| updates the cast button
-      // visibility.
-      test('cast button visibility', function() {
-        details.route = fakeRouteTwo;
-        checkStartCastButtonIsShown();
-
-        details.route = fakeRouteOne;
-        checkStartCastButtonIsNotShown();
-
-        details.sink = fakeSinkOne;
-        checkStartCastButtonIsShown();
-
-        // Retrigger observer because it's not necessary for it to watch
-        // |route.currentCastMode| in general.
-        fakeRouteOne.currentCastMode = 2;
-        details.route = null;
-        details.route = fakeRouteOne;
-        checkStartCastButtonIsNotShown();
-
-        // Simulate user changing cast modes to be compatible or incompatible
-        // with the route's sink.
-        details.shownCastModeValue = 4;
-        checkStartCastButtonIsShown();
-
-        details.shownCastModeValue = 1;
-        checkStartCastButtonIsNotShown();
-
-        details.shownCastModeValue = 4;
-        checkStartCastButtonIsShown();
-
-        // Cast button should be hidden while another sink is launching.
-        details.isAnySinkCurrentlyLaunching = true;
-        checkStartCastButtonIsNotShown();
-
-        details.isAnySinkCurrentlyLaunching = false;
-        checkStartCastButtonIsShown();
-      });
-
-      // Tests for 'close-route-click' event firing when the
-      // 'close-route-button' button is clicked.
-      test('close route button click', function(done) {
-        details.addEventListener('close-route', function() {
-          done();
-        });
-        MockInteractions.tap(details.$$('#close-route-button'));
-      });
-
-      // Tests for 'join-route-click' event firing when the
-      // 'start-casting-to-route-button' button is clicked when the current
-      // route is joinable.
-      test('start casting to route button click', function(done) {
-        details.addEventListener('join-route-click', function() {
-          done();
-        });
-        details.route = fakeRouteTwo;
-        MockInteractions.tap(details.$$('#start-casting-to-route-button'));
-      });
-
-      // Tests for 'replace-route-click' event firing when the
-      // 'start-casting-to-route-button' button is clicked when the current
-      // route is not joinable.
-      test('start casting button click replaces route', function(done) {
-        details.addEventListener('change-route-source-click', function() {
-          done();
-        });
-        details.route = fakeRouteOne;
-        details.availableCastModes = 1;
-        MockInteractions.tap(details.$$('#start-casting-to-route-button'));
-      });
-
-      // Tests the initial expected text.
-      test('initial text setting', function() {
-        // <paper-button> text is styled as upper case.
-        checkSpanText(
-            loadTimeData.getString('stopCastingButtonText'),
-            'close-route-button');
-        checkSpanText(
-            loadTimeData.getString('startCastingButtonText'),
-            'start-casting-to-route-button');
-        checkElementText('', 'route-description');
-      });
-
-      // Tests when |route| is undefined or set.
-      test('route is undefined or set', function() {
-        // |route| is initially undefined.
-        assertEquals(undefined, details.route);
-        checkDefaultViewIsShown();
-
-        // Set |route|.
-        details.route = fakeRouteOne;
-        assertEquals(fakeRouteOne, details.route);
-        checkElementText(fakeRouteOne.description, 'route-description');
-        checkDefaultViewIsShown();
-        checkStartCastButtonIsNotShown();
-
-        // Set |route| to a different route.
-        details.route = fakeRouteTwo;
-        assertEquals(fakeRouteTwo, details.route);
-        checkElementText(fakeRouteTwo.description, 'route-description');
-        checkDefaultViewIsShown();
-        checkStartCastButtonIsShown();
-      });
-    });
-  }
-
-  return {
-    registerTests: registerTests,
-  };
-});
diff --git a/chrome/test/data/webui/print_preview/destination_dialog_interactive_test.js b/chrome/test/data/webui/print_preview/destination_dialog_interactive_test.js
index 9e327c6..ddb6625 100644
--- a/chrome/test/data/webui/print_preview/destination_dialog_interactive_test.js
+++ b/chrome/test/data/webui/print_preview/destination_dialog_interactive_test.js
@@ -6,6 +6,7 @@
   /** @enum {string} */
   const TestNames = {
     FocusSearchBox: 'focus search box',
+    FocusSearchBoxOnSignIn: 'focus search box on sign in',
     EscapeSearchBox: 'escape search box',
   };
 
@@ -65,6 +66,36 @@
       return whenFocusDone;
     });
 
+    // Tests that the search input text field is automatically focused when the
+    // user signs in successfully after clicking the sign in link. See
+    // https://crbug.com/924921
+    test(assert(TestNames.FocusSearchBoxOnSignIn), function() {
+      const searchInput = dialog.$.searchBox.getSearchInput();
+      assertTrue(!!searchInput);
+      const signInLink = dialog.$$('.sign-in');
+      assertTrue(!!signInLink);
+      const whenFocusDone = test_util.eventToPromise('focus', searchInput);
+      destinationStore.startLoadAllDestinations();
+      dialog.show();
+      return whenFocusDone
+          .then(() => {
+            signInLink.focus();
+            nativeLayer.setSignIn([]);
+            signInLink.click();
+            return nativeLayer.whenCalled('signIn');
+          })
+          .then(() => {
+            // Link stays focused until successful signin.
+            // See https://crbug.com/979603.
+            assertEquals(signInLink, dialog.shadowRoot.activeElement);
+            nativeLayer.setSignIn(['foo@chromium.org']);
+            const whenSearchFocused =
+                test_util.eventToPromise('focus', searchInput);
+            signInLink.click();
+            return whenSearchFocused;
+          });
+    });
+
     // Tests that pressing the escape key while the search box is focused
     // closes the dialog if and only if the query is empty.
     test(assert(TestNames.EscapeSearchBox), function() {
diff --git a/chrome/test/data/webui/print_preview/native_layer_stub.js b/chrome/test/data/webui/print_preview/native_layer_stub.js
index b1abb4d..a755219 100644
--- a/chrome/test/data/webui/print_preview/native_layer_stub.js
+++ b/chrome/test/data/webui/print_preview/native_layer_stub.js
@@ -28,6 +28,9 @@
        */
       this.initialSettings_ = null;
 
+      /** @private {?Array<string>} Accounts to be sent on signIn(). */
+      this.accounts_ = null;
+
       /**
        * @private {!Array<!print_preview.LocalDestinationInfo>} Local
        *     destination list to be used for the response to |getPrinters|.
@@ -205,11 +208,21 @@
     /** @override */
     signIn(addAccount) {
       this.methodCalled('signIn', addAccount);
-      const accounts = ['foo@chromium.org'];
-      if (addAccount) {
+      const accounts = this.accounts_ || ['foo@chromium.org'];
+      if (!this.accounts_ && addAccount) {
         accounts.push('bar@chromium.org');
       }
-      cr.webUIListenerCallback('user-accounts-updated', accounts);
+      if (accounts.length > 0) {
+        cr.webUIListenerCallback('user-accounts-updated', accounts);
+      }
+    }
+
+    /**
+     * @param {!Array<string>} accounts The accounts to send when signIn is
+     * called.
+     */
+    setSignIn(accounts) {
+      this.accounts_ = accounts;
     }
 
     /**
diff --git a/chrome/test/data/webui/print_preview/print_preview_interactive_ui_tests.js b/chrome/test/data/webui/print_preview/print_preview_interactive_ui_tests.js
index 2066a7f7..7466a4b 100644
--- a/chrome/test/data/webui/print_preview/print_preview_interactive_ui_tests.js
+++ b/chrome/test/data/webui/print_preview/print_preview_interactive_ui_tests.js
@@ -141,6 +141,14 @@
           destination_dialog_interactive_test.TestNames.FocusSearchBox);
     });
 
+
+TEST_F(
+    'PrintPreviewDestinationDialogInteractiveTest', 'FocusSearchBoxOnSignIn',
+    function() {
+      this.runMochaTest(
+          destination_dialog_interactive_test.TestNames.FocusSearchBoxOnSignIn);
+    });
+
 TEST_F(
     'PrintPreviewDestinationDialogInteractiveTest', 'EscapeSearchBox',
     function() {
diff --git a/chrome/test/data/webui/settings/site_favicon_test.js b/chrome/test/data/webui/settings/site_favicon_test.js
index a9be1a3..6640756 100644
--- a/chrome/test/data/webui/settings/site_favicon_test.js
+++ b/chrome/test/data/webui/settings/site_favicon_test.js
@@ -17,11 +17,12 @@
   }
 
   function formExpected(url) {
+    // TODO(victorvianna): Stop depending on the order of the parameters.
     return '-webkit-image-set(' +
         'url("chrome://favicon2/?size=16&scale_factor=1x&url_type=page_url&url=' +
-        encodeURIComponent(url) + '") 1x, ' +
+        encodeURIComponent(url) + '&allow_google_server_fallback=0") 1x, ' +
         'url("chrome://favicon2/?size=16&scale_factor=2x&url_type=page_url&url=' +
-        encodeURIComponent(url) + '") 2x)';
+        encodeURIComponent(url) + '&allow_google_server_fallback=0") 2x)';
   }
 
   test('normal URL', function() {
diff --git a/chrome/test/data/webui/welcome/app_chooser_test.js b/chrome/test/data/webui/welcome/app_chooser_test.js
index 3457da78..3871ed4 100644
--- a/chrome/test/data/webui/welcome/app_chooser_test.js
+++ b/chrome/test/data/webui/welcome/app_chooser_test.js
@@ -50,7 +50,7 @@
     let testElement;
 
     setup(async function() {
-      testAppBrowserProxy = new TestNuxAppProxy();
+      testAppBrowserProxy = new TestGoogleAppProxy();
       testAppMetricsProxy = new TestMetricsProxy();
       testBookmarkBrowserProxy = new TestBookmarkProxy();
 
diff --git a/chrome/test/data/webui/welcome/onboarding_welcome_browsertest.js b/chrome/test/data/webui/welcome/onboarding_welcome_browsertest.js
index 8b37047..f0a05cf1 100644
--- a/chrome/test/data/webui/welcome/onboarding_welcome_browsertest.js
+++ b/chrome/test/data/webui/welcome/onboarding_welcome_browsertest.js
@@ -42,7 +42,7 @@
   get extraLibraries() {
     return super.extraLibraries.concat([
       'app_chooser_test.js',
-      'test_nux_app_proxy.js',
+      'test_google_app_proxy.js',
       'test_metrics_proxy.js',
       'test_bookmark_proxy.js',
     ]);
diff --git a/chrome/test/data/webui/welcome/test_nux_app_proxy.js b/chrome/test/data/webui/welcome/test_google_app_proxy.js
similarity index 90%
rename from chrome/test/data/webui/welcome/test_nux_app_proxy.js
rename to chrome/test/data/webui/welcome/test_google_app_proxy.js
index d77c0d5..6b0af9e 100644
--- a/chrome/test/data/webui/welcome/test_nux_app_proxy.js
+++ b/chrome/test/data/webui/welcome/test_google_app_proxy.js
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-/** @implements {nux.AppProxy} */
-class TestNuxAppProxy extends TestBrowserProxy {
+/** @implements {nux.GoogleAppProxy} */
+class TestGoogleAppProxy extends TestBrowserProxy {
   constructor() {
     super([
       'cacheBookmarkIcon',
diff --git a/chrome/updater/win/util.h b/chrome/updater/win/util.h
index 00627248..d30e10d9 100644
--- a/chrome/updater/win/util.h
+++ b/chrome/updater/win/util.h
@@ -5,6 +5,8 @@
 #ifndef CHROME_UPDATER_WIN_UTIL_H_
 #define CHROME_UPDATER_WIN_UTIL_H_
 
+#include <winerror.h>
+
 #include "base/win/windows_types.h"
 
 namespace updater {
diff --git a/chromecast/BUILD.gn b/chromecast/BUILD.gn
index 149c7820..b74b214 100644
--- a/chromecast/BUILD.gn
+++ b/chromecast/BUILD.gn
@@ -471,7 +471,7 @@
   fuchsia_package("cast_shell_pkg") {
     binary = ":cast_shell"
     package_name_override = "cast_shell"
-    sandbox_policy = "//chromecast/cast_shell_sandbox_policy"
+    manifest = "//chromecast/cast_shell.cmx"
 
     if (chromecast_branding != "public") {
       deps = [
diff --git a/chromecast/base/cast_sys_info_android_things.cc b/chromecast/base/cast_sys_info_android_things.cc
index 99b07cc..d4b70f6 100644
--- a/chromecast/base/cast_sys_info_android_things.cc
+++ b/chromecast/base/cast_sys_info_android_things.cc
@@ -8,7 +8,7 @@
 #include "chromecast/chromecast_buildflags.h"
 #if BUILDFLAG(IS_ANDROID_THINGS_NON_PUBLIC)
 #include "base/android/jni_array.h"
-#include "chromecast/browser/jni_headers/CastSysInfoAndroid_jni.h"
+#include "chromecast/browser/jni_headers/CastSysInfoAndroidThings_jni.h"
 #endif
 
 namespace chromecast {
diff --git a/chromecast/browser/cast_media_blocker.cc b/chromecast/browser/cast_media_blocker.cc
index 01b1e50..88880a3d 100644
--- a/chromecast/browser/cast_media_blocker.cc
+++ b/chromecast/browser/cast_media_blocker.cc
@@ -28,8 +28,8 @@
       controllable_(false),
       background_video_playback_enabled_(false),
       media_session_(media_session) {
-  media_session::mojom::MediaSessionObserverPtr observer;
-  observer_binding_.Bind(mojo::MakeRequest(&observer));
+  mojo::PendingRemote<media_session::mojom::MediaSessionObserver> observer;
+  observer_binding_.Bind(observer.InitWithNewPipeAndPassReceiver());
   media_session_->AddObserver(std::move(observer));
 }
 
diff --git a/chromecast/browser/cast_media_blocker_unittest.cc b/chromecast/browser/cast_media_blocker_unittest.cc
index 667fa4c..a948a83f 100644
--- a/chromecast/browser/cast_media_blocker_unittest.cc
+++ b/chromecast/browser/cast_media_blocker_unittest.cc
@@ -38,8 +38,9 @@
   MOCK_METHOD1(SetDuckingVolumeMultiplier, void(double));
   MOCK_METHOD1(DidReceiveAction,
                void(media_session::mojom::MediaSessionAction));
-  MOCK_METHOD1(AddObserver,
-               void(media_session::mojom::MediaSessionObserverPtr));
+  MOCK_METHOD1(
+      AddObserver,
+      void(mojo::PendingRemote<media_session::mojom::MediaSessionObserver>));
   MOCK_METHOD1(GetMediaSessionInfo, void(GetMediaSessionInfoCallback));
   MOCK_METHOD1(GetDebugInfo, void(GetDebugInfoCallback));
   MOCK_METHOD0(PreviousTrack, void());
diff --git a/chromecast/browser/cast_web_view_factory.cc b/chromecast/browser/cast_web_view_factory.cc
index 1bc5c74..566487d 100644
--- a/chromecast/browser/cast_web_view_factory.cc
+++ b/chromecast/browser/cast_web_view_factory.cc
@@ -17,9 +17,6 @@
 CastWebViewFactory::~CastWebViewFactory() = default;
 
 void CastWebViewFactory::OnPageDestroyed(CastWebView* web_view) {
-  for (auto& observer : observer_list_) {
-    observer.OnCastWebViewDestroyed(web_view);
-  }
   web_view->RemoveObserver(this);
 }
 
@@ -34,18 +31,7 @@
   if (webview) {
     webview->AddObserver(this);
   }
-  for (auto& observer : observer_list_) {
-    observer.OnCastWebViewCreated(webview.get());
-  }
   return webview;
 }
 
-void CastWebViewFactory::AddObserver(Observer* observer) {
-  observer_list_.AddObserver(observer);
-}
-
-void CastWebViewFactory::RemoveObserver(Observer* observer) {
-  observer_list_.RemoveObserver(observer);
-}
-
 }  // namespace chromecast
diff --git a/chromecast/browser/cast_web_view_factory.h b/chromecast/browser/cast_web_view_factory.h
index 9c73451b..65cbe07 100644
--- a/chromecast/browser/cast_web_view_factory.h
+++ b/chromecast/browser/cast_web_view_factory.h
@@ -11,8 +11,6 @@
 #include "base/callback_forward.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/observer_list.h"
-#include "base/observer_list_types.h"
 #include "chromecast/browser/cast_web_view.h"
 #include "url/gurl.h"
 
@@ -27,15 +25,6 @@
 
 class CastWebViewFactory : public CastWebView::Observer {
  public:
-  class Observer : public base::CheckedObserver {
-   public:
-    virtual void OnCastWebViewCreated(CastWebView* web_view) {}
-    virtual void OnCastWebViewDestroyed(CastWebView* web_view) {}
-
-   protected:
-    ~Observer() override {}
-  };
-
   explicit CastWebViewFactory(content::BrowserContext* browser_context);
   ~CastWebViewFactory() override;
 
@@ -45,9 +34,6 @@
       scoped_refptr<content::SiteInstance> site_instance,
       const GURL& initial_url);
 
-  void AddObserver(Observer* observer);
-  void RemoveObserver(Observer* observer);
-
   content::BrowserContext* browser_context() const { return browser_context_; }
 
  protected:
@@ -56,7 +42,6 @@
 
   content::BrowserContext* const browser_context_;
   base::RepeatingCallback<void(CastWebView*, int)> register_callback_;
-  base::ObserverList<Observer> observer_list_;
 
   DISALLOW_COPY_AND_ASSIGN(CastWebViewFactory);
 };
diff --git a/chromecast/cast_shell_sandbox_policy b/chromecast/cast_shell.cmx
similarity index 84%
rename from chromecast/cast_shell_sandbox_policy
rename to chromecast/cast_shell.cmx
index caa9fd6..a8f7f4d 100644
--- a/chromecast/cast_shell_sandbox_policy
+++ b/chromecast/cast_shell.cmx
@@ -1,11 +1,16 @@
 {
-  "features": [
+  "sandbox": {
+    "features": [
       "isolated-persistent-storage",
       "root-ssl-certificates",
       "system-temp",
-      "vulkan" ],
-  "dev": ["null", "zero"],
-  "services": [
+      "vulkan"
+    ],
+    "dev": [
+      "null",
+      "zero"
+    ],
+    "services": [
       "fuchsia.bluetooth.gatt.Server",
       "fuchsia.bluetooth.le.Peripheral",
       "fuchsia.device.NameProvider",
@@ -24,5 +29,6 @@
       "fuchsia.ui.scenic.Scenic",
       "fuchsia.vulkan.loader.Loader",
       "fuchsia.wlan.service.Wlan"
-  ]
+    ]
+  }
 }
diff --git a/chromecast/media/cma/backend/android/volume_control_android.cc b/chromecast/media/cma/backend/android/volume_control_android.cc
index 071371c..fdaa65f 100644
--- a/chromecast/media/cma/backend/android/volume_control_android.cc
+++ b/chromecast/media/cma/backend/android/volume_control_android.cc
@@ -24,7 +24,7 @@
 #include "chromecast/chromecast_buildflags.h"
 #include "chromecast/media/cma/backend/android/audio_track_jni_headers/VolumeControl_jni.h"
 #if BUILDFLAG(ENABLE_VOLUME_TABLES_ACCESS)
-#include "jni/VolumeMap_jni.h"
+#include "chromecast/media/cma/backend/android/audio_track_jni_headers/VolumeMap_jni.h"
 #endif
 
 namespace chromecast {
diff --git a/chromeos/BUILD.gn b/chromeos/BUILD.gn
index d4947c69..3e36a22 100644
--- a/chromeos/BUILD.gn
+++ b/chromeos/BUILD.gn
@@ -200,22 +200,24 @@
 # https://chromium.googlesource.com/chromium/src/+/master/docs/chromeos_build_instructions.md
 # https://chromium.googlesource.com/chromiumos/docs/+/master/simple_chrome_workflow.md
 if (is_cros_chrome_sdk) {
-  generate_runner_script("cros_vm_launcher") {
-    generated_script = "$root_build_dir/bin/launch_cros_vm"
+  # This builds a tool that prepares a DUT or VM for testing, which can be
+  # utilized by wrapping a host-side script test.
+  generate_runner_script("cros_test_wrapper") {
+    generated_script = "$root_build_dir/bin/cros_test_wrapper"
 
-    # Assume every time we build cros_vm_launcher, we also build chrome and
-    # want to deploy it to the VM.
+    # Assume every time we build cros_test_wrapper, we also build chrome and
+    # want to deploy it to the DUT.
     deploy_chrome = true
   }
 
   # The sanity test's actual binary is baked into the OS image. All we need to
-  # do is build the test wrapper and build our own browser to push to the VM
+  # do is build the test wrapper and build our own browser to push to the DUT
   # before testing it.
-  generate_runner_script("cros_vm_sanity_test") {
+  generate_runner_script("cros_browser_sanity_test") {
     testonly = true
-    test_exe = "cros_vm_sanity_test"
-    generated_script = "$root_build_dir/bin/run_cros_vm_sanity_test"
-    runtime_deps_file = "$root_out_dir/cros_vm_sanity_test.runtime_deps"
+    test_exe = "cros_browser_sanity_test"
+    generated_script = "$root_build_dir/bin/run_cros_browser_sanity_test"
+    runtime_deps_file = "$root_out_dir/cros_browser_sanity_test.runtime_deps"
 
     data_deps = [
       ":cros_chrome_deploy",
diff --git a/chromeos/chromeos_strings.grd b/chromeos/chromeos_strings.grd
index 3be4de6c..bb4d11a 100644
--- a/chromeos/chromeos_strings.grd
+++ b/chromeos/chromeos_strings.grd
@@ -186,17 +186,17 @@
       </message>
 
       <!-- Password expiry notifications -->
-      <message name="IDS_PASSWORD_EXPIRY_DAYS_BODY" desc="Message body for a notification that tells the user their password will expire in less than some number of days (where 0 days means it has expired).">
+      <message name="IDS_PASSWORD_EXPIRY_DAYS_TITLE" desc="Message title for a notification that tells the user their password will expire in less than some number of days (where 0 days means it has expired).">
         {NUM_DAYS, plural,
-         =0 {Your current password has expired!}
-         =1 {Your current password will expire in less than one day!}
-         other {Your current password will expire in less than # days!}}
+         =0 {Password is expired}
+         =1 {Password expires in less than one day}
+         other {Password expires in less than # days}}
       </message>
-      <message name="IDS_PASSWORD_EXPIRY_CALL_TO_ACTION" desc="Message body on a notification that politely requests the user to choose a new password since their old password is expiring soon">
-        Please choose a new password now
+      <message name="IDS_PASSWORD_EXPIRY_CALL_TO_ACTION" desc="Message body on a notification that politely requests the user to choose a new password since their old password is expiring soon. (The title makes clear that the password is expiring.)">
+        Choose a new one now
       </message>
-      <message name="IDS_PASSWORD_EXPIRY_CALL_TO_ACTION_CRITICAL" desc="Message body on a notification that *URGENTLY* requests the user to choose a new password since their old password is expiring *VERY* soon">
-        Please choose a new password immediately
+      <message name="IDS_PASSWORD_EXPIRY_CALL_TO_ACTION_CRITICAL" desc="Message body on a notification that *URGENTLY* requests the user to choose a new password since their old password is expiring *VERY* soon. (The title makes clear that the password is expiring.)">
+        Choose a new one immediately
       </message>
       <message name="IDS_PASSWORD_EXPIRY_CHANGE_PASSWORD_BUTTON" desc="Text on a button that takes the user to page to change their password">
         Change password
diff --git a/chromeos/dbus/power/fake_power_manager_client.cc b/chromeos/dbus/power/fake_power_manager_client.cc
index 39cdc6c..bb424c3 100644
--- a/chromeos/dbus/power/fake_power_manager_client.cc
+++ b/chromeos/dbus/power/fake_power_manager_client.cc
@@ -361,10 +361,6 @@
       FROM_HERE, base::BindOnce(std::move(callback), true));
 }
 
-void FakePowerManagerClient::DeferScreenDim() {
-  num_defer_screen_dim_calls_++;
-}
-
 bool FakePowerManagerClient::PopVideoActivityReport() {
   CHECK(!video_activity_reports_.empty());
   bool fullscreen = video_activity_reports_.front();
@@ -418,11 +414,6 @@
     observer.PowerButtonEventReceived(down, timestamp);
 }
 
-void FakePowerManagerClient::SendScreenDimImminent() {
-  for (auto& observer : observers_)
-    observer.ScreenDimImminent();
-}
-
 void FakePowerManagerClient::SetLidState(LidState state,
                                          const base::TimeTicks& timestamp) {
   lid_state_ = state;
diff --git a/chromeos/dbus/power/fake_power_manager_client.h b/chromeos/dbus/power/fake_power_manager_client.h
index 82c5c528..4095117 100644
--- a/chromeos/dbus/power/fake_power_manager_client.h
+++ b/chromeos/dbus/power/fake_power_manager_client.h
@@ -52,7 +52,6 @@
   int num_set_is_projecting_calls() const {
     return num_set_is_projecting_calls_;
   }
-  int num_defer_screen_dim_calls() const { return num_defer_screen_dim_calls_; }
   int num_wake_notification_calls() const {
     return num_wake_notification_calls_;
   }
@@ -128,7 +127,6 @@
                      VoidDBusMethodCallback callback) override;
   void DeleteArcTimers(const std::string& tag,
                        VoidDBusMethodCallback callback) override;
-  void DeferScreenDim() override;
 
   // Pops the first report from |video_activity_reports_|, returning whether the
   // activity was fullscreen or not. There must be at least one report.
@@ -153,9 +151,6 @@
   // Notifies observers that the power button has been pressed or released.
   void SendPowerButtonEvent(bool down, const base::TimeTicks& timestamp);
 
-  // Notifies observers that the screen is about to be dimmed.
-  void SendScreenDimImminent();
-
   // Sets |lid_state_| or |tablet_mode_| and notifies |observers_| about the
   // change.
   void SetLidState(LidState state, const base::TimeTicks& timestamp);
@@ -224,7 +219,6 @@
   int num_set_policy_calls_ = 0;
   int num_set_is_projecting_calls_ = 0;
   int num_set_backlights_forced_off_calls_ = 0;
-  int num_defer_screen_dim_calls_ = 0;
   int num_wake_notification_calls_ = 0;
 
   // Number of pending suspend readiness callbacks.
diff --git a/chromeos/dbus/power/power_manager_client.cc b/chromeos/dbus/power/power_manager_client.cc
index 1209b65..06ab167d 100644
--- a/chromeos/dbus/power/power_manager_client.cc
+++ b/chromeos/dbus/power/power_manager_client.cc
@@ -192,8 +192,6 @@
          &PowerManagerClientImpl::SuspendDoneReceived},
         {power_manager::kDarkSuspendImminentSignal,
          &PowerManagerClientImpl::DarkSuspendImminentReceived},
-        {power_manager::kScreenDimImminentSignal,
-         &PowerManagerClientImpl::ScreenDimImminentReceived},
         {power_manager::kIdleActionImminentSignal,
          &PowerManagerClientImpl::IdleActionImminentReceived},
         {power_manager::kIdleActionDeferredSignal,
@@ -539,10 +537,6 @@
         base::BindOnce(&OnVoidDBusMethod, std::move(callback)));
   }
 
-  void DeferScreenDim() override {
-    SimpleMethodCallToPowerManager(power_manager::kDeferScreenDimMethod);
-  }
-
  private:
   // Returns true if the current thread is the origin thread.
   bool OnOriginThread() {
@@ -921,11 +915,6 @@
     base::PowerMonitorDeviceSource::HandleSystemResumed();
   }
 
-  void ScreenDimImminentReceived(dbus::Signal* signal) {
-    for (auto& observer : observers_)
-      observer.ScreenDimImminent();
-  }
-
   void IdleActionImminentReceived(dbus::Signal* signal) {
     dbus::MessageReader reader(signal);
     power_manager::IdleActionImminent proto;
diff --git a/chromeos/dbus/power/power_manager_client.h b/chromeos/dbus/power/power_manager_client.h
index b6f3a967a..9bd84f5d 100644
--- a/chromeos/dbus/power/power_manager_client.h
+++ b/chromeos/dbus/power/power_manager_client.h
@@ -145,9 +145,6 @@
     virtual void TabletModeEventReceived(TabletMode mode,
                                          const base::TimeTicks& timestamp) {}
 
-    // Called just before the screen is dimmed in response to user inactivity.
-    virtual void ScreenDimImminent() {}
-
     // Called when the idle action will be performed after
     // |time_until_idle_action|.
     virtual void IdleActionImminent(
@@ -321,11 +318,6 @@
   virtual void DeleteArcTimers(const std::string& tag,
                                VoidDBusMethodCallback callback) = 0;
 
-  // Instructs powerd to defer dimming the screen. This only has an effect when
-  // called shortly (i.e. seconds) after observers have received
-  // ScreenDimImminent notifications.
-  virtual void DeferScreenDim() = 0;
-
   PowerManagerClient();
   virtual ~PowerManagerClient();
 
diff --git a/chromeos/services/assistant/media_session/assistant_media_session.cc b/chromeos/services/assistant/media_session/assistant_media_session.cc
index 19fa406..359d22d 100644
--- a/chromeos/services/assistant/media_session/assistant_media_session.cc
+++ b/chromeos/services/assistant/media_session/assistant_media_session.cc
@@ -42,10 +42,13 @@
 }
 
 void AssistantMediaSession::AddObserver(
-    media_session::mojom::MediaSessionObserverPtr observer) {
-  observer->MediaSessionInfoChanged(GetMediaSessionInfoInternal());
-  observer->MediaSessionMetadataChanged(metadata_);
-  observers_.AddPtr(std::move(observer));
+    mojo::PendingRemote<media_session::mojom::MediaSessionObserver> observer) {
+  mojo::Remote<media_session::mojom::MediaSessionObserver>
+      media_session_observer(std::move(observer));
+  media_session_observer->MediaSessionInfoChanged(
+      GetMediaSessionInfoInternal());
+  media_session_observer->MediaSessionMetadataChanged(metadata_);
+  observers_.Add(std::move(media_session_observer));
 }
 
 void AssistantMediaSession::GetDebugInfo(GetDebugInfoCallback callback) {
@@ -178,10 +181,9 @@
   metadata_ = metadata;
 
   current_track_ = status.track_type;
-  observers_.ForAllPtrs(
-      [this](media_session::mojom::MediaSessionObserver* observer) {
-        observer->MediaSessionMetadataChanged(this->metadata_);
-      });
+
+  for (auto& observer : observers_)
+    observer->MediaSessionMetadataChanged(this->metadata_);
 }
 
 media_session::mojom::MediaSessionInfoPtr
@@ -216,10 +218,8 @@
   if (request_client_ptr_.is_bound())
     request_client_ptr_->MediaSessionInfoChanged(current_info.Clone());
 
-  observers_.ForAllPtrs(
-      [&current_info](media_session::mojom::MediaSessionObserver* observer) {
-        observer->MediaSessionInfoChanged(current_info.Clone());
-      });
+  for (auto& observer : observers_)
+    observer->MediaSessionInfoChanged(current_info.Clone());
 
   session_info_ = std::move(current_info);
 }
diff --git a/chromeos/services/assistant/media_session/assistant_media_session.h b/chromeos/services/assistant/media_session/assistant_media_session.h
index 71fdeff..d648d56 100644
--- a/chromeos/services/assistant/media_session/assistant_media_session.h
+++ b/chromeos/services/assistant/media_session/assistant_media_session.h
@@ -11,6 +11,7 @@
 #include "libassistant/shared/public/media_manager.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "mojo/public/cpp/bindings/interface_ptr_set.h"
+#include "mojo/public/cpp/bindings/remote_set.h"
 #include "services/media_session/public/mojom/audio_focus.mojom.h"
 #include "services/media_session/public/mojom/media_session.mojom.h"
 
@@ -47,7 +48,8 @@
   void GetMediaSessionInfo(GetMediaSessionInfoCallback callback) override;
   void GetDebugInfo(GetDebugInfoCallback callback) override;
   void AddObserver(
-      media_session::mojom::MediaSessionObserverPtr observer) override;
+      mojo::PendingRemote<media_session::mojom::MediaSessionObserver> observer)
+      override;
   void PreviousTrack() override {}
   void NextTrack() override {}
   void NotifyMediaSessionMetadataChanged(
@@ -101,7 +103,7 @@
 
   assistant_client::TrackType current_track_;
 
-  mojo::InterfacePtrSet<media_session::mojom::MediaSessionObserver> observers_;
+  mojo::RemoteSet<media_session::mojom::MediaSessionObserver> observers_;
 
   // Holds a pointer to the MediaSessionService.
   media_session::mojom::AudioFocusManagerPtr audio_focus_ptr_;
diff --git a/chromeos/services/device_sync/cryptauth_client_impl.cc b/chromeos/services/device_sync/cryptauth_client_impl.cc
index efde1c48..11efbe02 100644
--- a/chromeos/services/device_sync/cryptauth_client_impl.cc
+++ b/chromeos/services/device_sync/cryptauth_client_impl.cc
@@ -393,9 +393,9 @@
           "cryptauth_v2_devicesync_sync_metadata", "oauth2_api_call_flow",
           R"(
       semantics {
-        sender: "CryptAuth V2 Device Manager"
+        sender: "CryptAuth Device Syncer"
         description:
-          "Sends device metadata to CryptAuth and recieves metadata data for "
+          "Sends device metadata to CryptAuth and receives metadata data for "
           "the user's other devices."
         trigger:
           "CryptAuth will potentially instruct the client to invoke "
@@ -435,7 +435,7 @@
           "oauth2_api_call_flow",
           R"(
       semantics {
-        sender: "CryptAuth V2 Device Manager"
+        sender: "CryptAuth Device Syncer"
         description:
           "The device shares the group private key by encrypting it with the "
           "public key of the user's other devices."
@@ -504,8 +504,6 @@
       callback, error_callback, partial_traffic_annotation);
 }
 
-// TODO(https://crbug.com/953087): Populate the "sender" and "trigger" fields
-// when method is used in codebase.
 void CryptAuthClientImpl::BatchGetFeatureStatuses(
     const cryptauthv2::BatchGetFeatureStatusesRequest& request,
     const BatchGetFeatureStatusesCallback& callback,
@@ -516,12 +514,13 @@
           "oauth2_api_call_flow",
           R"(
       semantics {
-        sender: "TBD"
+        sender: "CryptAuth Device Syncer"
         description:
           "The client queries CryptAuth for the state of features on the "
           "user's devices, for example, whether or not Magic Tether is enabled "
           "on any of the user's phones."
-        trigger: "TBD"
+        trigger:
+          "Called after SyncMetadata as part of the v2 DeviceSync flow."
         data: "The user device IDs and feature types to query."
         destination: GOOGLE_OWNED_SERVICE
       }
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb
index a9ea25b..209e673 100644
--- a/chromeos/strings/chromeos_strings_am.xtb
+++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">በአቅራቢያ ያሉ መሣሪያዎችን ለማግኘት ብሉቱዝን ያብሩ</translation>
 <translation id="2805756323405976993">መተግበሪያዎች</translation>
 <translation id="2872961005593481000">ዝጋ</translation>
+<translation id="2912823482158781027">ትኬትን ዳግም አድስ</translation>
 <translation id="3511655281162215899">እባክዎ አዲስ ይለፍ ቃል ወዲያውኑ ይምረጡ።</translation>
+<translation id="3562817605261346876">እባክዎ ለ <ph name="PRINCIPAL_NAME" /> በቅርቡ ትኬቱን ዳግም ያድሱ</translation>
 <translation id="3838338534323494292">አዲስ የይለፍ ቃል</translation>
 <translation id="445059817448385655">የቀድሞው የይለፍ ቃል</translation>
 <translation id="467510802200863975">የይለፍ ቃላትዎ አይዛመዱም</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">እንደ እንግዳ ያስሱ</translation>
 <translation id="54609108002486618">የተቀናበረ</translation>
 <translation id="5733345267661125295">እባክዎ አሁን አዲስ የይለፍ ቃል ይምረጡ</translation>
+<translation id="5743581760404859096">የእርስዎ Kerberos ቲኬት አገልግሎት ጊዜው እያበቃ ነው</translation>
 <translation id="5832805196449965646">ሰው አክል</translation>
 <translation id="5895138241574237353">እንደገና ጀምር</translation>
 <translation id="6058625436358447366">ለማጠናቀቅ፣ የእርስዎን አሮጌ እና አዲስ የይለፍ ቃላት ያስገቡ</translation>
 <translation id="6106186594183574873">ለማጠናቀቅ፣ የእርስዎን ይለፍ ቃል ያስገቡ</translation>
 <translation id="6146993107019042706">ለማጠናቀቅ፣ የእርስዎን አዲስ የይለፍ ቃል ያስገቡ</translation>
 <translation id="6574601967010742428">የመሣሪያው አስተዳዳሪ የእርስዎን እንቅስቃሴ ሊከታተል ይችላል።</translation>
+<translation id="7280705187789120111">Kerberos ቲኬት አገልግሎት ጊዜው እያበቃ ነው</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{የአሁኑ ይለፍ ቃልዎ ጊዜው አልፎበታል!}=1{የአሁኑ ይለፍ ቃልዎ ከአንድ ቀን ባነሰ ጊዜ ውስጥ ጊዜው ያልፍበታል!}one{የአሁኑ ይለፍ ቃልዎ ከ# ቀኖች ባነሰ ጊዜ ውስጥ ጊዜው ያልፍበታል!}other{የአሁኑ ይለፍ ቃልዎ ከ# ቀኖች ባነሰ ጊዜ ውስጥ ጊዜው ያልፍበታል!}}</translation>
 <translation id="7658239707568436148">ይቅር</translation>
 <translation id="7690294790491645610">አዲስ የይለፍ ቃል ያረጋግጡ</translation>
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb
index 806e6d7d..8343ce09 100644
--- a/chromeos/strings/chromeos_strings_ar.xtb
+++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">تشغيل البلوتوث لاكتشاف الأجهزة القريبة</translation>
 <translation id="2805756323405976993">التطبيقات</translation>
 <translation id="2872961005593481000">إيقاف التشغيل</translation>
+<translation id="2912823482158781027">إعادة تحميل التذكرة</translation>
 <translation id="3511655281162215899">يُرجى اختيار كلمة مرور جديدة فورًا.</translation>
+<translation id="3562817605261346876">يُرجى إعادة تحميل التذكرة لخدمة <ph name="PRINCIPAL_NAME" /> قريبًا</translation>
 <translation id="3838338534323494292">كلمة المرور الجديدة</translation>
 <translation id="445059817448385655">كلمة المرور القديمة</translation>
 <translation id="467510802200863975">كلمتا المرور غير متطابقتين.</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">تصفَّح كزائر</translation>
 <translation id="54609108002486618">تتم إدارته</translation>
 <translation id="5733345267661125295">يُرجى اختيار كلمة مرور جديدة الآن.</translation>
+<translation id="5743581760404859096">‏ستنتهي صلاحية تذكرة Kerberos</translation>
 <translation id="5832805196449965646">إضافة شخص</translation>
 <translation id="5895138241574237353">إعادة التشغيل</translation>
 <translation id="6058625436358447366">يُرجى إدخال كلمتي المرور القديمة والجديدة لإنهاء الإجراء.</translation>
 <translation id="6106186594183574873">يُرجى إدخال كلمة المرور القديمة لإنهاء الإجراء.</translation>
 <translation id="6146993107019042706">يُرجى إدخال كلمة مرور جديدة لإنهاء الإجراء.</translation>
 <translation id="6574601967010742428">قد يتمكَّن مشرف الجهاز من مراقبة نشاطك.</translation>
+<translation id="7280705187789120111">‏ستنتهي صلاحية تذكرة Kerberos</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{لقد انتهت صلاحية كلمة مرورك الحالية.}=1{ستنتهي صلاحية كلمة مرورك الحالية بعد أقل من يوم واحد.}two{ستنتهي صلاحية كلمة مرورك الحالية بعد أقل من يومين (#).}few{ستنتهي صلاحية كلمة مرورك الحالية بعد أقل من # أيام.}many{ستنتهي صلاحية كلمة مرورك الحالية بعد أقل من # يومًا.}other{ستنتهي صلاحية كلمة مرورك الحالية بعد أقل من # يوم.}}</translation>
 <translation id="7658239707568436148">إلغاء</translation>
 <translation id="7690294790491645610">تأكيد كلمة المرور الجديدة</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb
index a7701f70..eeacd9b 100644
--- a/chromeos/strings/chromeos_strings_bg.xtb
+++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Включете Bluetooth, за да бъдат открити устройствата в близост</translation>
 <translation id="2805756323405976993">Приложения</translation>
 <translation id="2872961005593481000">Изключване</translation>
+<translation id="2912823482158781027">ОПРЕСНЯВАНЕ НА ПРОПУСКА</translation>
 <translation id="3511655281162215899">Моля, изберете нова парола незабавно</translation>
+<translation id="3562817605261346876">Моля, скоро опреснете пропуска на <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Нова парола</translation>
 <translation id="445059817448385655">Стара парола</translation>
 <translation id="467510802200863975">Паролите не са идентични</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Сърфиране като гост</translation>
 <translation id="54609108002486618">Управляван</translation>
 <translation id="5733345267661125295">Моля, изберете нова парола сега</translation>
+<translation id="5743581760404859096">Пропускът ви от Kerberos изтича</translation>
 <translation id="5832805196449965646">Добавяне на човек</translation>
 <translation id="5895138241574237353">Рестартиране</translation>
 <translation id="6058625436358447366">За да завършите процеса, въведете старата и новата си парола</translation>
 <translation id="6106186594183574873">За да завършите процеса, въведете старата си парола</translation>
 <translation id="6146993107019042706">За да завършите процеса, въведете новата си парола</translation>
 <translation id="6574601967010742428">Администраторът на устройството може да е в състояние да наблюдава активността ви.</translation>
+<translation id="7280705187789120111">Пропускът от Kerberos изтича</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Валидността на текущата ви парола изтече!}=1{Валидността на текущата ви парола ще изтече след по-малко от един ден!}other{Валидността на текущата ви парола ще изтече след по-малко от # дни!}}</translation>
 <translation id="7658239707568436148">Отказ</translation>
 <translation id="7690294790491645610">Потвърдете новата парола</translation>
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb
index 688ec22b..a894043 100644
--- a/chromeos/strings/chromeos_strings_bn.xtb
+++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">আশেপাশের ডিভাইস খুঁজে পেতে ব্লুটুথ চালু করুন</translation>
 <translation id="2805756323405976993">অ্যাপ্স</translation>
 <translation id="2872961005593481000">বন্ধ করুন</translation>
+<translation id="2912823482158781027">টিকিট রিফ্রেশ করুন</translation>
 <translation id="3511655281162215899">এখনই একটি নতুন পাসওয়ার্ড বেছে নিন</translation>
+<translation id="3562817605261346876"><ph name="PRINCIPAL_NAME" /> টিকিট শীঘ্রই রিফ্রেশ করুন</translation>
 <translation id="3838338534323494292">নতুন পাসওয়ার্ড</translation>
 <translation id="445059817448385655">পুরনো পাসওয়ার্ড</translation>
 <translation id="467510802200863975">পাসওয়ার্ড মিলছে না</translation>
@@ -21,12 +23,14 @@
 <translation id="5457599981699367932">অতিথি হিসাবে ব্রাউজ করুন</translation>
 <translation id="54609108002486618">পরিচালিত</translation>
 <translation id="5733345267661125295">এখন একটি নতুন পাসওয়ার্ড বেছে নিন</translation>
+<translation id="5743581760404859096">আপনার Kerberos টিকিটের মেয়াদ শীঘ্রই শেষ হয়ে যাবে</translation>
 <translation id="5832805196449965646">একজন ব্যক্তিকে যোগ করুন</translation>
 <translation id="5895138241574237353">পুনর্সূচনা</translation>
 <translation id="6058625436358447366">সম্পূর্ণ করতে, আপনার পুরনো ও নতুন পাসওয়ার্ড লিখুন</translation>
 <translation id="6106186594183574873">সম্পূর্ণ করতে, আপনার পুরনো পাসওয়ার্ড লিখুন</translation>
 <translation id="6146993107019042706">সম্পূর্ণ করতে, আপনার নতুন পাসওয়ার্ড লিখুন</translation>
 <translation id="6574601967010742428">ডিভাইস অ্যাডমিনিস্ট্রেটর আপনার অ্যাক্টিভিটি হয়ত মনিটর করতে পারেন।</translation>
+<translation id="7280705187789120111">Kerberos টিকিটের মেয়াদ শীঘ্রই শেষ হয়ে যাবে</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{আপনার বর্তমান পাসওয়ার্ডের মেয়াদ শেষ হয়ে গেছে!}=1{আপনার বর্তমান পাসওয়ার্ডের মেয়াদ ১ দিনেরও কম সময়ে শেষ হয়ে যাবে!}one{আপনার বর্তমান পাসওয়ার্ডের মেয়াদ # দিনেরও কম সময়ে শেষ হয়ে যাবে!}other{আপনার বর্তমান পাসওয়ার্ডের মেয়াদ # দিনেরও কম সময়ে শেষ হয়ে যাবে!}}</translation>
 <translation id="7658239707568436148">বাতিল</translation>
 <translation id="7690294790491645610">নতুন পাসওয়ার্ড নিশ্চিত করুন</translation>
diff --git a/chromeos/strings/chromeos_strings_ca.xtb b/chromeos/strings/chromeos_strings_ca.xtb
index dc69a15..81b2f3a 100644
--- a/chromeos/strings/chromeos_strings_ca.xtb
+++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Activa el Bluetooth per detectar dispositius propers</translation>
 <translation id="2805756323405976993">Aplicacions</translation>
 <translation id="2872961005593481000">Apaga</translation>
+<translation id="2912823482158781027">ACTUALITZA EL TIQUET</translation>
 <translation id="3511655281162215899">Tria una contrasenya nova immediatament</translation>
+<translation id="3562817605261346876">Actualitza aviat el tiquet de: <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Contrasenya nova</translation>
 <translation id="445059817448385655">Contrasenya anterior</translation>
 <translation id="467510802200863975">Les contrasenyes no coincideixen</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Navega com a convidat</translation>
 <translation id="54609108002486618">Gestionat</translation>
 <translation id="5733345267661125295">Tria ja una contrasenya nova</translation>
+<translation id="5743581760404859096">El tiquet de Kerberos està a punt de caducar</translation>
 <translation id="5832805196449965646">Afegeix una persona</translation>
 <translation id="5895138241574237353">Reinicia</translation>
 <translation id="6058625436358447366">Per acabar, introdueix la contrasenya antiga i la nova</translation>
 <translation id="6106186594183574873">Per acabar, introdueix la contrasenya antiga</translation>
 <translation id="6146993107019042706">Per acabar, introdueix la contrasenya nova</translation>
 <translation id="6574601967010742428">Pot ser que l'administrador del dispositiu pugui supervisar la teva activitat.</translation>
+<translation id="7280705187789120111">El tiquet de Kerberos està a punt de caducar</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{La teva contrasenya actual ha caducat.}=1{La teva contrasenya actual caducarà d'aquí a menys d'un dia.}other{La teva contrasenya actual caducarà d'aquí a menys de # dies.}}</translation>
 <translation id="7658239707568436148">Cancel·la</translation>
 <translation id="7690294790491645610">Confirma la contrasenya nova</translation>
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb
index b076281c..30dbfd9 100644
--- a/chromeos/strings/chromeos_strings_cs.xtb
+++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Chcete-li objevit okolní zařízení, zapněte Bluetooth</translation>
 <translation id="2805756323405976993">Aplikace</translation>
 <translation id="2872961005593481000">Vypnout</translation>
+<translation id="2912823482158781027">OBNOVIT LÍSTEK</translation>
 <translation id="3511655281162215899">Ihned si zvolte nové heslo</translation>
+<translation id="3562817605261346876">Brzy lístek pro <ph name="PRINCIPAL_NAME" /> obnovte</translation>
 <translation id="3838338534323494292">Nové heslo</translation>
 <translation id="445059817448385655">Staré heslo</translation>
 <translation id="467510802200863975">Hesla se neshodují</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Použít jako host</translation>
 <translation id="54609108002486618">Spravovaný</translation>
 <translation id="5733345267661125295">Nastavte si nové heslo</translation>
+<translation id="5743581760404859096">Platnost vašeho lístku Kerberos brzy vyprší</translation>
 <translation id="5832805196449965646">Přidat uživatele</translation>
 <translation id="5895138241574237353">Restartovat</translation>
 <translation id="6058625436358447366">Chcete-li akci dokončit, zadejte své staré a nové heslo</translation>
 <translation id="6106186594183574873">Chcete-li akci dokončit, zadejte své staré heslo</translation>
 <translation id="6146993107019042706">Chcete-li akci dokončit, zadejte své nové heslo</translation>
 <translation id="6574601967010742428">Administrátor zařízení může mít možnost sledovat vaši aktivitu.</translation>
+<translation id="7280705187789120111">Platnost lístku Kerberos brzy vyprší</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Platnost vašeho aktuálního hesla vypršela.}=1{Platnost vašeho aktuálního hesla vyprší za méně než jeden den.}few{Platnost vašeho aktuálního hesla vyprší za méně než # dny.}many{Platnost vašeho aktuálního hesla vyprší za méně než # dne.}other{Platnost vašeho aktuálního hesla vyprší za méně než # dní.}}</translation>
 <translation id="7658239707568436148">Zrušit</translation>
 <translation id="7690294790491645610">Potvrďte nové heslo</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb
index 705f5c3e..d03317c 100644
--- a/chromeos/strings/chromeos_strings_da.xtb
+++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Slå Bluetooth til for at opdage enheder i nærheden</translation>
 <translation id="2805756323405976993">Apps</translation>
 <translation id="2872961005593481000">Sluk</translation>
+<translation id="2912823482158781027">OPDATER TICKET</translation>
 <translation id="3511655281162215899">Vælg straks en ny adgangskode</translation>
+<translation id="3562817605261346876">Opdater snart din ticket for <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Ny adgangskode</translation>
 <translation id="445059817448385655">Gammel adgangskode</translation>
 <translation id="467510802200863975">Adgangskoderne stemmer ikke overens</translation>
@@ -21,12 +23,14 @@
 <translation id="5457599981699367932">Anvend som gæst</translation>
 <translation id="54609108002486618">Administreret</translation>
 <translation id="5733345267661125295">Vælg en ny adgangskode nu</translation>
+<translation id="5743581760404859096">Din Kerberos-ticket er ved at udløbe</translation>
 <translation id="5832805196449965646">Tilføj person</translation>
 <translation id="5895138241574237353">Genstart</translation>
 <translation id="6058625436358447366">Angiv din gamle og nye adgangskode for at afslutte</translation>
 <translation id="6106186594183574873">Angiv din gamle adgangskode for at afslutte</translation>
 <translation id="6146993107019042706">Angiv din nye adgangskode for at afslutte</translation>
 <translation id="6574601967010742428">Enhedsadministratoren kan muligvis overvåge din aktivitet.</translation>
+<translation id="7280705187789120111">Din Kerberos-ticket er ved at udløbe</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Din nuværende adgangskode er udløbet.}=1{Der er mindre end én dag til din nuværende adgangskode udløber.}one{Der er mindre end # dag til din nuværende adgangskode udløber.}other{Der er mindre end # dage til din nuværende adgangskode udløber.}}</translation>
 <translation id="7658239707568436148">Annuller</translation>
 <translation id="7690294790491645610">Bekræft den nye adgangskode</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb
index c48d483..b51799b 100644
--- a/chromeos/strings/chromeos_strings_de.xtb
+++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Aktivieren Sie Bluetooth, damit Geräte in der Nähe gefunden werden</translation>
 <translation id="2805756323405976993">Apps</translation>
 <translation id="2872961005593481000">Herunterfahren</translation>
+<translation id="2912823482158781027">TICKET AKTUALISIEREN</translation>
 <translation id="3511655281162215899">Bitte wählen Sie sofort ein neues Passwort aus</translation>
+<translation id="3562817605261346876">Bitte aktualisieren Sie das Ticket für <ph name="PRINCIPAL_NAME" /> möglichst bald</translation>
 <translation id="3838338534323494292">Neues Passwort</translation>
 <translation id="445059817448385655">Altes Passwort</translation>
 <translation id="467510802200863975">Die Passwörter stimmen nicht überein</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Als Gast nutzen</translation>
 <translation id="54609108002486618">Verwaltet</translation>
 <translation id="5733345267661125295">Bitte wählen Sie jetzt ein neues Passwort</translation>
+<translation id="5743581760404859096">Ihr Kerberos-Ticket läuft ab</translation>
 <translation id="5832805196449965646">Person hinzufügen</translation>
 <translation id="5895138241574237353">Neu starten</translation>
 <translation id="6058625436358447366">Geben Sie zum Schluss Ihr altes und Ihr neues Passwort ein</translation>
 <translation id="6106186594183574873">Geben Sie zum Schluss Ihr altes Passwort ein</translation>
 <translation id="6146993107019042706">Geben Sie zum Schluss Ihr neues Passwort ein</translation>
 <translation id="6574601967010742428">Der Geräteadministrator kann Ihre Aktivitäten möglicherweise überwachen.</translation>
+<translation id="7280705187789120111">Kerberos-Ticket läuft ab</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Ihr aktuelles Passwort ist abgelaufen.}=1{Ihr aktuelles Passwort läuft in weniger als einem Tag ab.}other{Ihr aktuelles Passwort läuft in weniger als # Tagen ab.}}</translation>
 <translation id="7658239707568436148">Abbrechen</translation>
 <translation id="7690294790491645610">Neues Passwort bestätigen</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb
index 8208971..3cd0ad6 100644
--- a/chromeos/strings/chromeos_strings_el.xtb
+++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Ενεργοποιήστε το Bluetooth, για να εντοπίσετε κοντινές συσκευές</translation>
 <translation id="2805756323405976993">Εφαρμογές </translation>
 <translation id="2872961005593481000">Τερματισμός λειτουργίας</translation>
+<translation id="2912823482158781027">ΑΝΑΝΕΩΣΗ ΔΕΛΤΙΟΥ</translation>
 <translation id="3511655281162215899">Επιλέξτε άμεσα έναν νέο κωδικό πρόσβασης</translation>
+<translation id="3562817605261346876">Ανανεώστε σύντομα το δελτίο για το <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Νέος κωδικός πρόσβασης</translation>
 <translation id="445059817448385655">Παλιός κωδικός πρόσβασης</translation>
 <translation id="467510802200863975">Δεν ταιριάζουν οι κωδικοί πρόσβασης</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Περιήγηση ως επισκέπτης</translation>
 <translation id="54609108002486618">Διαχειριζόμενη</translation>
 <translation id="5733345267661125295">Επιλέξτε τώρα έναν νέο κωδικό πρόσβασης</translation>
+<translation id="5743581760404859096">Το δελτίο Kerberos λήγει</translation>
 <translation id="5832805196449965646">Προσθήκη ατόμου</translation>
 <translation id="5895138241574237353">Επανεκκίνηση</translation>
 <translation id="6058625436358447366">Για να τελειώσετε, εισαγάγετε τον παλιό και τον νέο κωδικό πρόσβασης</translation>
 <translation id="6106186594183574873">Για να τελειώσετε, εισαγάγετε τον παλιό κωδικό πρόσβασης</translation>
 <translation id="6146993107019042706">Για να ολοκληρώσετε, εισαγάγετε τον νέο κωδικό πρόσβασης</translation>
 <translation id="6574601967010742428">Ο διαχειριστής της συσκευής ίσως έχει τη δυνατότητα να παρακολουθεί τη δραστηριότητά σας.</translation>
+<translation id="7280705187789120111">Το δελτίο Kerberos λήγει</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Ο τρέχων κωδικός πρόσβασής σας έληξε!}=1{Ο τρέχων κωδικός πρόσβασής σας θα λήξει σε λιγότερο από μία ημέρα!}other{Ο τρέχων κωδικός πρόσβασής σας θα λήξει σε λιγότερο από # ημέρες!}}</translation>
 <translation id="7658239707568436148">Ακύρωση</translation>
 <translation id="7690294790491645610">Επιβεβαίωση νέου κωδικού πρόσβασης</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb
index 8f68b05..11e1129 100644
--- a/chromeos/strings/chromeos_strings_en-GB.xtb
+++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Turn on Bluetooth to discover nearby devices</translation>
 <translation id="2805756323405976993">Apps</translation>
 <translation id="2872961005593481000">Shut down</translation>
+<translation id="2912823482158781027">REFRESH TICKET</translation>
 <translation id="3511655281162215899">Please choose a new password immediately</translation>
+<translation id="3562817605261346876">Please refresh the ticket for <ph name="PRINCIPAL_NAME" /> soon</translation>
 <translation id="3838338534323494292">New password</translation>
 <translation id="445059817448385655">Old password</translation>
 <translation id="467510802200863975">Passwords do not match</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Browse as Guest</translation>
 <translation id="54609108002486618">Managed</translation>
 <translation id="5733345267661125295">Please choose a new password now</translation>
+<translation id="5743581760404859096">Your Kerberos ticket is expiring</translation>
 <translation id="5832805196449965646">Add Person</translation>
 <translation id="5895138241574237353">Restart</translation>
 <translation id="6058625436358447366">To finish, enter your old and new passwords</translation>
 <translation id="6106186594183574873">To finish, enter your old password</translation>
 <translation id="6146993107019042706">To finish, enter your new password</translation>
 <translation id="6574601967010742428">The device administrator may be able to monitor your activity.</translation>
+<translation id="7280705187789120111">Kerberos ticket expiring</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Your current password has expired.}=1{Your current password will expire in less than one day.}other{Your current password will expire in less than # days.}}</translation>
 <translation id="7658239707568436148">Cancel</translation>
 <translation id="7690294790491645610">Confirm new password</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb
index 04b43635..5c81004c 100644
--- a/chromeos/strings/chromeos_strings_es-419.xtb
+++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Activar Bluetooth para buscar los dispositivos cercanos</translation>
 <translation id="2805756323405976993">Aplicaciones</translation>
 <translation id="2872961005593481000">Cerrar</translation>
+<translation id="2912823482158781027">ACTUALIZAR TICKET</translation>
 <translation id="3511655281162215899">Elige una contraseña nueva de inmediato</translation>
+<translation id="3562817605261346876">Actualiza el ticket de <ph name="PRINCIPAL_NAME" /> pronto</translation>
 <translation id="3838338534323494292">Nueva contraseña</translation>
 <translation id="445059817448385655">Contraseña anterior</translation>
 <translation id="467510802200863975">Las contraseñas no coinciden</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Navegar como invitado</translation>
 <translation id="54609108002486618">Gestionado</translation>
 <translation id="5733345267661125295">Elige una contraseña nueva ahora</translation>
+<translation id="5743581760404859096">Tu ticket de Kerberos vencerá pronto</translation>
 <translation id="5832805196449965646">Agregar un usuario</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="6058625436358447366">Para finalizar, ingresa tu contraseña anterior y la nueva</translation>
 <translation id="6106186594183574873">Para finalizar, ingresa tu contraseña anterior</translation>
 <translation id="6146993107019042706">Para finalizar, ingresa tu nueva contraseña</translation>
 <translation id="6574601967010742428">Es posible que el administrador del dispositivo supervise tu actividad.</translation>
+<translation id="7280705187789120111">Vencimiento del ticket de Kerberos</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Caducó tu contraseña actual.}=1{Tu contraseña actual caducará en menos de un día.}other{Tu contraseña actual caducará en menos de # días.}}</translation>
 <translation id="7658239707568436148">Cancelar</translation>
 <translation id="7690294790491645610">Confirmar contraseña nueva</translation>
diff --git a/chromeos/strings/chromeos_strings_es.xtb b/chromeos/strings/chromeos_strings_es.xtb
index 907c05b..82da389 100644
--- a/chromeos/strings/chromeos_strings_es.xtb
+++ b/chromeos/strings/chromeos_strings_es.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Activa el Bluetooth para encontrar dispositivos cercanos</translation>
 <translation id="2805756323405976993">Aplicaciones</translation>
 <translation id="2872961005593481000">Apagar</translation>
+<translation id="2912823482158781027">ACTUALIZAR TICKET</translation>
 <translation id="3511655281162215899">Elige una contraseña nueva inmediatamente</translation>
+<translation id="3562817605261346876">Actualiza el ticket de <ph name="PRINCIPAL_NAME" /> pronto.</translation>
 <translation id="3838338534323494292">Contraseña nueva</translation>
 <translation id="445059817448385655">Contraseña antigua</translation>
 <translation id="467510802200863975">Las contraseñas no coinciden</translation>
@@ -21,12 +23,14 @@
 <translation id="5457599981699367932">Navegar como invitado</translation>
 <translation id="54609108002486618">Administrado</translation>
 <translation id="5733345267661125295">Elige una contraseña nueva ahora</translation>
+<translation id="5743581760404859096">Tu ticket de Kerberos caducará pronto</translation>
 <translation id="5832805196449965646">Añadir perfil</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="6058625436358447366">Para finalizar, introduce tu contraseña anterior y la nueva</translation>
 <translation id="6106186594183574873">Para finalizar, introduce tu contraseña anterior</translation>
 <translation id="6146993107019042706">Para finalizar, introduce tu contraseña nueva</translation>
 <translation id="6574601967010742428">Es posible que el administrador del dispositivo supervise tu actividad.</translation>
+<translation id="7280705187789120111">Ticket de Kerberos a punto de caducar</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Tu contraseña actual ha caducado.}=1{Tu contraseña actual caducará en menos de 1 día.}other{Tu contraseña actual caducará en # días.}}</translation>
 <translation id="7658239707568436148">Cancelar</translation>
 <translation id="7690294790491645610">Confirma la nueva contraseña</translation>
diff --git a/chromeos/strings/chromeos_strings_et.xtb b/chromeos/strings/chromeos_strings_et.xtb
index 09d9cd34..1d67f0f 100644
--- a/chromeos/strings/chromeos_strings_et.xtb
+++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Lülitage Bluetooth sisse, et läheduses olevaid seadmeid avastada</translation>
 <translation id="2805756323405976993">Rakendused</translation>
 <translation id="2872961005593481000">Lülita välja</translation>
+<translation id="2912823482158781027">PILETI VÄRSKENDAMINE</translation>
 <translation id="3511655281162215899">Valige kohe uus parool</translation>
+<translation id="3562817605261346876">Värskendage lähiajal konto <ph name="PRINCIPAL_NAME" /> piletit</translation>
 <translation id="3838338534323494292">Uus parool</translation>
 <translation id="445059817448385655">Vana parool</translation>
 <translation id="467510802200863975">Paroolid ei kattu</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Sirvi külalisena</translation>
 <translation id="54609108002486618">Hallatud</translation>
 <translation id="5733345267661125295">Valige nüüd uus parool</translation>
+<translation id="5743581760404859096">Teie Kerberose pilet aegub</translation>
 <translation id="5832805196449965646">Lisa inimene</translation>
 <translation id="5895138241574237353">Taaskäivitamine</translation>
 <translation id="6058625436358447366">Toimingu lõpuleviimiseks sisestage oma vana ja uus parool</translation>
 <translation id="6106186594183574873">Toimingu lõpuleviimiseks sisestage oma vana parool</translation>
 <translation id="6146993107019042706">Toimingu lõpuleviimiseks sisestage oma uus parool</translation>
 <translation id="6574601967010742428">Seadme haldur võib saada teie tegevust jälgida.</translation>
+<translation id="7280705187789120111">Kerberose pilet aegub</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Teie praegune parool on aegunud.}=1{Teie praegune parool aegub vähem kui ühe päeva pärast.}other{Teie praegune parool aegub vähem kui # päeva pärast.}}</translation>
 <translation id="7658239707568436148">Tühista</translation>
 <translation id="7690294790491645610">Kinnitage uus parool</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb
index 7defd88..6bc14ee 100644
--- a/chromeos/strings/chromeos_strings_fa.xtb
+++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">برای کاوش دستگاه‌های همین اطراف، بلوتوث را روشن کنید</translation>
 <translation id="2805756323405976993">برنامه‌ها</translation>
 <translation id="2872961005593481000">خاموش کردن</translation>
+<translation id="2912823482158781027">بازخوانی بلیت</translation>
 <translation id="3511655281162215899">لطفاً گذرواژه جدیدی را فوراً انتخاب کنید</translation>
+<translation id="3562817605261346876">لطفاً فوراً بلیت را برای <ph name="PRINCIPAL_NAME" /> بازخوانی کنید</translation>
 <translation id="3838338534323494292">گذرواژه جدید</translation>
 <translation id="445059817448385655">گذرواژه قدیمی</translation>
 <translation id="467510802200863975">گذرواژه‌ها با هم مطابقت ندارند</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">مرور کردن به‌عنوان یک مهمان</translation>
 <translation id="54609108002486618">مدیریت شده</translation>
 <translation id="5733345267661125295">لطفاً اکنون گذرواژه جدیدی انتخاب کنید</translation>
+<translation id="5743581760404859096">‏بلیت Kerberos شما درحال منقضی شدن است</translation>
 <translation id="5832805196449965646">افزودن شخص</translation>
 <translation id="5895138241574237353">راه‌اندازی مجدد</translation>
 <translation id="6058625436358447366">برای تکمیل کار، گذرواژه‌های قدیمی و جدیدتان را وارد کنید</translation>
 <translation id="6106186594183574873">برای تکمیل کار، گذرواژه قدیمی‌تان را وارد کنید</translation>
 <translation id="6146993107019042706">برای تکمیل کار،‌ گذرواژه جدیدتان را وارد کنید</translation>
 <translation id="6574601967010742428">سرپرست دستگاه ممکن است بر فعالیتتان نظارت داشته باشد.</translation>
+<translation id="7280705187789120111">‏بلیت Kerberos درحال منقضی شدن است</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{گذرواژه کنونی‌تان منقضی شده است!}=1{گذرواژه کنونی‌تان کمتر از یک روز دیگر منقضی خواهد شد!}one{گذرواژه کنونی‌تان کمتر از # روز دیگر منقضی خواهد شد!}other{گذرواژه کنونی‌تان کمتر از # روز دیگر منقضی خواهد شد!}}</translation>
 <translation id="7658239707568436148">لغو</translation>
 <translation id="7690294790491645610">تأیید گذرواژه جدید</translation>
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb
index 0202330..d485bb0 100644
--- a/chromeos/strings/chromeos_strings_fi.xtb
+++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Löydä lähellä olevat laitteet ottamalla ensin Bluetooth käyttöön.</translation>
 <translation id="2805756323405976993">Sovellukset</translation>
 <translation id="2872961005593481000">Sammuta</translation>
+<translation id="2912823482158781027">PÄIVITÄ TUKIPYYNTÖ</translation>
 <translation id="3511655281162215899">Valitse uusi salasana välittömästi</translation>
+<translation id="3562817605261346876">Päivitä pyyntö (<ph name="PRINCIPAL_NAME" />) pian</translation>
 <translation id="3838338534323494292">Uusi salasana</translation>
 <translation id="445059817448385655">Vanha salasana</translation>
 <translation id="467510802200863975">Salasanat eivät täsmää</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Selaa vierailijana</translation>
 <translation id="54609108002486618">Hallinnoitu</translation>
 <translation id="5733345267661125295">Valitse nyt uusi salasana</translation>
+<translation id="5743581760404859096">Kerberos-tukipyyntösi vanhenee pian</translation>
 <translation id="5832805196449965646">Lisää henkilö</translation>
 <translation id="5895138241574237353">Käynnistä uudelleen</translation>
 <translation id="6058625436358447366">Lisää lopuksi vanha ja uusi salasana</translation>
 <translation id="6106186594183574873">Lisää lopuksi vanha salasana</translation>
 <translation id="6146993107019042706">Lisää lopuksi uusi salasana</translation>
 <translation id="6574601967010742428">Laitteen järjestelmänvalvoja voi ehkä seurata toimintaasi.</translation>
+<translation id="7280705187789120111">Kerberos-tukipyyntö vanhenee</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Salasanasi on vanhentunut.}=1{Salasanasi vanhenee alle päivän päästä.}other{Salasanasi vanhenee alle # päivän päästä.}}</translation>
 <translation id="7658239707568436148">Peruuta</translation>
 <translation id="7690294790491645610">Vahvista uusi salasana</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb
index fbd6af01..90dea64cf 100644
--- a/chromeos/strings/chromeos_strings_fil.xtb
+++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">I-on ang Bluetooth upang tuklasin ang mga kalapit na device</translation>
 <translation id="2805756323405976993">Mga App</translation>
 <translation id="2872961005593481000">Shut down</translation>
+<translation id="2912823482158781027">I-REFRESH ANG TICKET</translation>
 <translation id="3511655281162215899">Pumili kaagad ng bagong password</translation>
+<translation id="3562817605261346876">Paki-refresh ang ticket para sa <ph name="PRINCIPAL_NAME" /> sa lalong madaling panahon</translation>
 <translation id="3838338534323494292">Bagong password</translation>
 <translation id="445059817448385655">Lumang password</translation>
 <translation id="467510802200863975">Hindi nagtutugma ang mga password</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Mag-browse bilang Bisita</translation>
 <translation id="54609108002486618">Pinamamahalaan</translation>
 <translation id="5733345267661125295">Pumili ng bagong password ngayon</translation>
+<translation id="5743581760404859096">Mag-e-expire na ang iyong ticket ng Kerberos</translation>
 <translation id="5832805196449965646">Magdagdag ng Tao</translation>
 <translation id="5895138241574237353">I-restart</translation>
 <translation id="6058625436358447366">Para tapusin, ilagay ang iyong luma at bagong password</translation>
 <translation id="6106186594183574873">Para tapusin, ilagay ang iyong lumang password</translation>
 <translation id="6146993107019042706">Para tapusin, ilagay ang bago mong password</translation>
 <translation id="6574601967010742428">Maaaring masubaybayan ng administrator ng device ang iyong aktibidad.</translation>
+<translation id="7280705187789120111">Mag-e-expire na ang ticket ng Kerberos</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Nag-expire na ang iyong kasalukuyang password!}=1{Mag-e-expire sa loob ng wala pang isang araw ang iyong kasalukuyang password!}one{Mag-e-expire sa loob ng wala pang # araw ang iyong kasalukuyang password!}other{Mag-e-expire sa loob ng wala pang # na araw ang iyong kasalukuyang password!}}</translation>
 <translation id="7658239707568436148">Kanselahin</translation>
 <translation id="7690294790491645610">Kumpirmahin ang bagong password</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb
index d3b3e14e..df5d2d2 100644
--- a/chromeos/strings/chromeos_strings_fr.xtb
+++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Activer le Bluetooth pour découvrir les appareils à proximité</translation>
 <translation id="2805756323405976993">Applications</translation>
 <translation id="2872961005593481000">Éteindre</translation>
+<translation id="2912823482158781027">ACTUALISER LE TICKET</translation>
 <translation id="3511655281162215899">Veuillez choisir un nouveau mot de passe immédiatement</translation>
+<translation id="3562817605261346876">Veuillez actualiser au plus vite le ticket concernant <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Nouveau mot de passe</translation>
 <translation id="445059817448385655">Ancien mot de passe</translation>
 <translation id="467510802200863975">Les mots de passe sont différents</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Naviguer en tant qu'invité</translation>
 <translation id="54609108002486618">Géré</translation>
 <translation id="5733345267661125295">Veuillez choisir bientôt un nouveau mot de passe</translation>
+<translation id="5743581760404859096">Votre ticket Kerberos arrive bientôt à expiration</translation>
 <translation id="5832805196449965646">Ajouter une personne</translation>
 <translation id="5895138241574237353">Redémarrer</translation>
-<translation id="6058625436358447366">Pour terminer, saisissez vos ancien et nouveau mots de passe</translation>
+<translation id="6058625436358447366">Pour terminer, saisissez votre ancien mot de passe et le nouveau</translation>
 <translation id="6106186594183574873">Pour terminer, saisissez votre ancien mot de passe</translation>
 <translation id="6146993107019042706">Pour terminer, saisissez votre nouveau mot de passe</translation>
 <translation id="6574601967010742428">Il est possible que l'administrateur de l'appareil puisse surveiller votre activité.</translation>
+<translation id="7280705187789120111">Expiration du ticket Kerberos</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Votre mot de passe actuel est arrivé à expiration !}=1{Votre mot de passe actuel arrive à expiration dans moins d'un jour !}one{Votre mot de passe actuel arrive à expiration dans moins de # jour !}other{Votre mot de passe actuel arrive à expiration dans moins de # jours !}}</translation>
 <translation id="7658239707568436148">Annuler</translation>
 <translation id="7690294790491645610">Confirmer le nouveau mot de passe</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb
index aaf1e9b..92512fc 100644
--- a/chromeos/strings/chromeos_strings_gu.xtb
+++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">નજીકનાં ડિવાઇસ શોધવા માટે Bluetooth ચાલુ કરો</translation>
 <translation id="2805756323405976993">એપ્સ</translation>
 <translation id="2872961005593481000">શટ ડાઉન કરો</translation>
+<translation id="2912823482158781027">ટિકિટ રિફ્રેશ કરો</translation>
 <translation id="3511655281162215899">કૃપા કરીને તરત જ નવો પાસવર્ડ પસંદ કરો</translation>
+<translation id="3562817605261346876">કૃપા કરીને <ph name="PRINCIPAL_NAME" /> માટેની ટિકિટને ટૂંક સમયમાં રિફ્રેશ કરો</translation>
 <translation id="3838338534323494292">નવો પાસવર્ડ</translation>
 <translation id="445059817448385655">જૂનો પાસવર્ડ</translation>
 <translation id="467510802200863975">પાસવર્ડ મેળ ખાતા નથી</translation>
@@ -21,12 +23,14 @@
 <translation id="5457599981699367932">અતિથિ તરીકે બ્રાઉઝ કરો</translation>
 <translation id="54609108002486618">મેનેજ કરેલું</translation>
 <translation id="5733345267661125295">કૃપા કરીને હવે નવો પાસવર્ડ પસંદ કરો</translation>
+<translation id="5743581760404859096">તમારા Kerberosની સમયસીમા સમાપ્ત થવામાં છે</translation>
 <translation id="5832805196449965646">વ્યક્તિ ઉમેરો</translation>
 <translation id="5895138241574237353">પુનઃપ્રારંભ કરો</translation>
 <translation id="6058625436358447366">સમાપ્ત કરવા માટે, તમારા જૂના અને નવા પાસવર્ડ દાખલ કરો</translation>
 <translation id="6106186594183574873">સમાપ્ત કરવા માટે, તમારો જૂનો પાસવર્ડ દાખલ કરો</translation>
 <translation id="6146993107019042706">સમાપ્ત કરવા માટે, તમારો નવો પાસવર્ડ દાખલ કરો</translation>
 <translation id="6574601967010742428">ડિવાઇસના વ્યવસ્થાપક તમારી પ્રવૃત્તિને મૉનિટર કરી શકે છે.</translation>
+<translation id="7280705187789120111">Kerberos ટિકિટની સમયસીમા સમાપ્ત થઈ રહી છે</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{તમારા હાલના પાસવર્ડની સમયસીમા સમાપ્ત થઈ ગઈ છે!}=1{તમારો વર્તમાન પાસવર્ડ સમાપ્ત થવામાં એક દિવસ કરતાં પણ ઓછો સમય બાકી!}one{તમારો વર્તમાન પાસવર્ડ સમાપ્ત થવામાં # દિવસ કરતાં પણ ઓછો સમય બાકી!}other{તમારો વર્તમાન પાસવર્ડ સમાપ્ત થવામાં # દિવસ કરતાં પણ ઓછો સમય બાકી!}}</translation>
 <translation id="7658239707568436148">રદ કરો</translation>
 <translation id="7690294790491645610">નવા પાસવર્ડની પુષ્ટિ કરો</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb
index 1f69a3b..a999aac 100644
--- a/chromeos/strings/chromeos_strings_hi.xtb
+++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">आस-पास के डिवाइस खोजने के लिए ब्लूटूथ चालू करें</translation>
 <translation id="2805756323405976993">ऐप्स</translation>
 <translation id="2872961005593481000">शट डाउन करें</translation>
+<translation id="2912823482158781027">टिकट रीफ़्रेश करें</translation>
 <translation id="3511655281162215899">कृपया तुरंत कोई नया पासवर्ड चुनें</translation>
+<translation id="3562817605261346876">कृपया जल्द ही <ph name="PRINCIPAL_NAME" /> की टिकट रीफ़्रेश करें</translation>
 <translation id="3838338534323494292">नया पासवर्ड</translation>
 <translation id="445059817448385655">पुराना पासवर्ड</translation>
 <translation id="467510802200863975">पासवर्ड मेल नहीं खाते</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">मेहमान के रूप में ब्राउज़ करें</translation>
 <translation id="54609108002486618">प्रबंधित</translation>
 <translation id="5733345267661125295">कृपया अभी कोई नया पासवर्ड चुनें</translation>
+<translation id="5743581760404859096">Kerberos टिकट की समय-सीमा खत्म हो रही है</translation>
 <translation id="5832805196449965646">व्‍यक्ति जोड़ें</translation>
 <translation id="5895138241574237353">फिर से प्रारंभ करें</translation>
 <translation id="6058625436358447366">पूरा करने के लिए, पुराना और नया पासवर्ड डालें</translation>
 <translation id="6106186594183574873">पूरा करने के लिए, पुराना पासवर्ड डालें</translation>
 <translation id="6146993107019042706">खत्म करने के लिए, नया पासवर्ड डालें</translation>
 <translation id="6574601967010742428">डिवाइस का एडमिन आपकी गतिविधि पर नज़र रख सकता है.</translation>
+<translation id="7280705187789120111">Kerberos टिकट की समय-सीमा खत्म हो रही है</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{आपके मौजूदा पासवर्ड की समय-सीमा खत्म हो चुकी है!}=1{आपके मौजूदा पासवर्ड की समय-सीमा एक दिन से कम समय में खत्म हो जाएगी!}one{आपके मौजूदा पासवर्ड की समय-सीमा # दिन से कम समय में खत्म हो जाएगी!}other{आपके मौजूदा पासवर्ड की समय-सीमा # दिन से कम समय में खत्म हो जाएगी!}}</translation>
 <translation id="7658239707568436148">अभी नहीं</translation>
 <translation id="7690294790491645610">नए पासवर्ड की पुष्टि करें</translation>
diff --git a/chromeos/strings/chromeos_strings_hr.xtb b/chromeos/strings/chromeos_strings_hr.xtb
index 54db132..0d7ad07 100644
--- a/chromeos/strings/chromeos_strings_hr.xtb
+++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Uključite Bluetooth da biste otkrili uređaje u blizini</translation>
 <translation id="2805756323405976993">Aplikacije</translation>
 <translation id="2872961005593481000">Isključi</translation>
+<translation id="2912823482158781027">OSVJEŽI TIKET</translation>
 <translation id="3511655281162215899">Odmah odaberite novu zaporku</translation>
+<translation id="3562817605261346876">Uskoro osvježite tiket za <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Nova zaporka</translation>
 <translation id="445059817448385655">Stara zaporka</translation>
 <translation id="467510802200863975">Zaporke se ne podudaraju</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Pregledavaj kao gost</translation>
 <translation id="54609108002486618">Upravljani</translation>
 <translation id="5733345267661125295">Odaberite novu zaporku sada</translation>
+<translation id="5743581760404859096">Kerberosov tiket istječe</translation>
 <translation id="5832805196449965646">Dodaj osobu</translation>
 <translation id="5895138241574237353">Ponovno pokreni</translation>
 <translation id="6058625436358447366">Za dovršetak unesite staru i novu zaporku</translation>
 <translation id="6106186594183574873">Za dovršetak unesite staru zaporku</translation>
 <translation id="6146993107019042706">Za dovršetak unesite novu zaporku</translation>
 <translation id="6574601967010742428">Administrator uređaja možda može nadzirati vašu aktivnost.</translation>
+<translation id="7280705187789120111">Kerberosov tiket istječe</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Vaša je trenutačna zaporka istekla!}=1{Vaša trenutačna zaporka isteći će za manje od jednog dana!}one{Vaša trenutačna zaporka isteći će za manje od # dana!}few{Vaša trenutačna zaporka isteći će za manje od # dana!}other{Vaša trenutačna zaporka isteći će za manje od # dana!}}</translation>
 <translation id="7658239707568436148">Odustani</translation>
 <translation id="7690294790491645610">Potvrdite novu zaporku</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb
index 8d686e2c..f0cb3bf1 100644
--- a/chromeos/strings/chromeos_strings_hu.xtb
+++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Kapcsolja be a Bluetooth-t a közeli eszközök felfedezéséhez</translation>
 <translation id="2805756323405976993">Alkalmazások</translation>
 <translation id="2872961005593481000">Leállítás</translation>
+<translation id="2912823482158781027">JEGY FRISSÍTÉSE</translation>
 <translation id="3511655281162215899">Válasszon új jelszót most rögtön</translation>
+<translation id="3562817605261346876">Hamarosan frissítenie kell a(z) <ph name="PRINCIPAL_NAME" /> fiók jegyét</translation>
 <translation id="3838338534323494292">Új jelszó</translation>
 <translation id="445059817448385655">Régi jelszó</translation>
 <translation id="467510802200863975">A jelszavak nem egyeznek</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Böngészés vendégként</translation>
 <translation id="54609108002486618">Kezelt</translation>
 <translation id="5733345267661125295">Válasszon új jelszót most</translation>
+<translation id="5743581760404859096">Kerberos-jegye hamarosan lejár</translation>
 <translation id="5832805196449965646">Személy hozzáadása</translation>
 <translation id="5895138241574237353">Újraindítás</translation>
 <translation id="6058625436358447366">A befejezéshez adja meg régi és új jelszavát</translation>
 <translation id="6106186594183574873">A befejezéshez adja meg régi jelszavát</translation>
 <translation id="6146993107019042706">A befejezéshez adja meg új jelszavát</translation>
 <translation id="6574601967010742428">Lehetséges, hogy tevékenységeit megfigyelheti az eszköz adminisztrátora.</translation>
+<translation id="7280705187789120111">Lejáró Kerberos-jegy</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Jelenlegi jelszava lejárt!}=1{Jelenlegi jelszava 1 napon belül lejár!}other{Jelenlegi jelszava # napon belül lejár!}}</translation>
 <translation id="7658239707568436148">Mégse</translation>
 <translation id="7690294790491645610">Új jelszó megerősítése</translation>
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb
index f8e71ce..7a7e97c 100644
--- a/chromeos/strings/chromeos_strings_id.xtb
+++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Aktifkan Bluetooth untuk menemukan perangkat di sekitar</translation>
 <translation id="2805756323405976993">Apl</translation>
 <translation id="2872961005593481000">Matikan</translation>
+<translation id="2912823482158781027">PERBARUI TIKET</translation>
 <translation id="3511655281162215899">Harap segera pilih sandi baru</translation>
+<translation id="3562817605261346876">Harap segera perbarui tiket untuk <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Sandi baru</translation>
 <translation id="445059817448385655">Sandi lama</translation>
 <translation id="467510802200863975">Sandi tidak cocok</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Login sebagai Tamu</translation>
 <translation id="54609108002486618">Terkelola</translation>
 <translation id="5733345267661125295">Harap pilih sandi baru sekarang</translation>
+<translation id="5743581760404859096">Masa berlaku tiket Kerberos Anda sudah berakhir</translation>
 <translation id="5832805196449965646">Tambahkan Pengguna</translation>
 <translation id="5895138241574237353">Mulai Ulang</translation>
 <translation id="6058625436358447366">Untuk menyelesaikan, masukkan sandi yang lama dan baru</translation>
 <translation id="6106186594183574873">Untuk menyelesaikan, masukkan sandi yang lama</translation>
 <translation id="6146993107019042706">Untuk menyelesaikan, masukkan sandi yang baru</translation>
 <translation id="6574601967010742428">Administrator perangkat mungkin dapat memantau aktivitas Anda.</translation>
+<translation id="7280705187789120111">Masa berlaku tiket Kerberos berakhir</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Sandi Anda saat ini sudah tidak berlaku.}=1{Masa berlaku sandi Anda saat ini akan berakhir dalam waktu kurang dari sehari.}other{Masa berlaku sandi Anda akan berakhir dalam # hari.}}</translation>
 <translation id="7658239707568436148">Batal</translation>
 <translation id="7690294790491645610">Konfirmasi sandi baru</translation>
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb
index 9f8ad382..c05aa982 100644
--- a/chromeos/strings/chromeos_strings_it.xtb
+++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Attiva il Bluetooth per trovare dispositivi nelle vicinanze</translation>
 <translation id="2805756323405976993">App</translation>
 <translation id="2872961005593481000">Spegni</translation>
+<translation id="2912823482158781027">AGGIORNA RICHIESTA</translation>
 <translation id="3511655281162215899">Scegli subito una nuova password</translation>
+<translation id="3562817605261346876">Aggiorna la richiesta per <ph name="PRINCIPAL_NAME" /> al più presto</translation>
 <translation id="3838338534323494292">Nuova password</translation>
 <translation id="445059817448385655">Vecchia password</translation>
 <translation id="467510802200863975">Le password non corrispondono</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Esplora come ospite</translation>
 <translation id="54609108002486618">Gestito</translation>
 <translation id="5733345267661125295">Scegli una nuova password ora</translation>
+<translation id="5743581760404859096">La tua richiesta di Kerberos sta per scadere</translation>
 <translation id="5832805196449965646">Aggiungi persona</translation>
 <translation id="5895138241574237353">Riavvia</translation>
 <translation id="6058625436358447366">Per terminare, inserisci la password vecchia e quella nuova</translation>
 <translation id="6106186594183574873">Per terminare, inserisci la vecchia password</translation>
 <translation id="6146993107019042706">Per terminare, inserisci la nuova password</translation>
 <translation id="6574601967010742428">L'amministratore del dispositivo potrebbe essere in grado di monitorare le tue attività.</translation>
+<translation id="7280705187789120111">Richiesta di Kerberos in scadenza</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{La tua attuale password è scaduta.}=1{La tua attuale password scadrà tra meno di un giorno.}other{La tua attuale password scadrà tra meno di # giorni.}}</translation>
 <translation id="7658239707568436148">Annulla</translation>
 <translation id="7690294790491645610">Conferma nuova password</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb
index 61444a8..ed51dee 100644
--- a/chromeos/strings/chromeos_strings_iw.xtb
+++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">‏יש להפעיל את Bluetooth כדי לאתר מכשירים קרובים</translation>
 <translation id="2805756323405976993">אפליקציות</translation>
 <translation id="2872961005593481000">כיבוי</translation>
+<translation id="2912823482158781027">רענון הכרטיס</translation>
 <translation id="3511655281162215899">יש לבחור מיד סיסמה חדשה</translation>
+<translation id="3562817605261346876">יש לרענן בקרוב את הכרטיס של <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">סיסמה חדשה</translation>
 <translation id="445059817448385655">סיסמה ישנה</translation>
 <translation id="467510802200863975">הסיסמאות אינן תואמות</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">גלוש כאורח</translation>
 <translation id="54609108002486618">מנוהל</translation>
 <translation id="5733345267661125295">צריך לבחור עכשיו סיסמה חדשה</translation>
+<translation id="5743581760404859096">‏תוקף כרטיס ה-Kerberos שלך עומד לפוג</translation>
 <translation id="5832805196449965646">הוספת משתמש</translation>
 <translation id="5895138241574237353">הפעל מחדש</translation>
 <translation id="6058625436358447366">כדי לסיים יש להזין את הסיסמה הישנה והחדשה</translation>
 <translation id="6106186594183574873">כדי לסיים יש להזין את הסיסמה הישנה</translation>
 <translation id="6146993107019042706">כדי לסיים, יש להזין את הסיסמה החדשה</translation>
 <translation id="6574601967010742428">למנהל המכשיר תהיה יכולת לעקוב אחרי הפעילות שלך.</translation>
+<translation id="7280705187789120111">‏התוקף של כרטיס Kerberos עומד לפוג</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{פג התוקף של הסיסמה הנוכחית!}=1{התוקף של הסיסמה הנוכחית יפוג תוך פחות מיום!}two{התוקף של הסיסמה הנוכחית יפוג תוך פחות מיומיים!}many{התוקף של הסיסמה הנוכחית יפוג תוך פחות מ-# ימים!}other{התוקף של הסיסמה הנוכחית יפוג תוך פחות מ-# ימים!}}</translation>
 <translation id="7658239707568436148">ביטול</translation>
 <translation id="7690294790491645610">אישור הסיסמה החדשה</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb
index aafdb7e..097c0f7 100644
--- a/chromeos/strings/chromeos_strings_ja.xtb
+++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">近くのデバイスを検出するには Bluetooth をオンにしてください</translation>
 <translation id="2805756323405976993">アプリ</translation>
 <translation id="2872961005593481000">終了</translation>
+<translation id="2912823482158781027">チケットを更新</translation>
 <translation id="3511655281162215899">直ちに新しいパスワードを選択してください</translation>
+<translation id="3562817605261346876"><ph name="PRINCIPAL_NAME" /> のチケットを早めに更新してください</translation>
 <translation id="3838338534323494292">新しいパスワード</translation>
 <translation id="445059817448385655">古いパスワード</translation>
 <translation id="467510802200863975">パスワードが一致しません</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">ゲストとしてブラウジング</translation>
 <translation id="54609108002486618">管理</translation>
 <translation id="5733345267661125295">早急に新しいパスワードを選択してください</translation>
+<translation id="5743581760404859096">Kerberos チケットの有効期限が近づいています</translation>
 <translation id="5832805196449965646">ユーザーを追加</translation>
 <translation id="5895138241574237353">再起動</translation>
 <translation id="6058625436358447366">終了するには、古いパスワードと新しいパスワードを入力してください</translation>
 <translation id="6106186594183574873">終了するには、古いパスワードを入力してください</translation>
 <translation id="6146993107019042706">終了するには、新しいパスワードを入力してください</translation>
 <translation id="6574601967010742428">デバイスの管理者によりアクティビティが監視される可能性があります。</translation>
+<translation id="7280705187789120111">Kerberos チケットの有効期限が近づいています</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{現在のパスワードは有効期限が切れています。}=1{現在のパスワードは 1 日以内に有効期限が切れます。}other{現在のパスワードは # 日以内に有効期限が切れます。}}</translation>
 <translation id="7658239707568436148">キャンセル</translation>
 <translation id="7690294790491645610">新しいパスワードの確認入力</translation>
diff --git a/chromeos/strings/chromeos_strings_kn.xtb b/chromeos/strings/chromeos_strings_kn.xtb
index 80925ae..11813b3 100644
--- a/chromeos/strings/chromeos_strings_kn.xtb
+++ b/chromeos/strings/chromeos_strings_kn.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">ಸಮೀಪದ ಸಾಧನಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಬ್ಲೂಟೂತ್ ಆನ್ ಮಾಡಿ</translation>
 <translation id="2805756323405976993">ಆಪ್ಸ್‌‌</translation>
 <translation id="2872961005593481000">ಮುಚ್ಚಿಬಿಡಿ </translation>
+<translation id="2912823482158781027">ಟಿಕೆಟ್ ಅನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ</translation>
 <translation id="3511655281162215899">ತಕ್ಷಣವೇ ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
+<translation id="3562817605261346876"><ph name="PRINCIPAL_NAME" /> ಅವರ ಟಿಕೆಟ್ ಅನ್ನು ಆದಷ್ಟು ಬೇಗನೆ ರಿಫ್ರೆಶ್ ಮಾಡಿ</translation>
 <translation id="3838338534323494292">ಹೊಸ ಪಾಸ್‌ವರ್ಡ್</translation>
 <translation id="445059817448385655">ಹಳೆಯ ಪಾಸ್‌ವರ್ಡ್‌</translation>
 <translation id="467510802200863975">ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತಿಲ್ಲ</translation>
@@ -21,12 +23,14 @@
 <translation id="5457599981699367932">ಅತಿಥಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡಿ</translation>
 <translation id="54609108002486618">ನಿರ್ವಹಿಸಲಾಗಿದೆ</translation>
 <translation id="5733345267661125295">ಈಗಲೇ ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
+<translation id="5743581760404859096">ನಿಮ್ಮ Kerberos ಟಿಕೆಟ್‌ನ ಅವಧಿ ಸದ್ಯದಲ್ಲೇ ಮುಗಿಯಲಿದೆ</translation>
 <translation id="5832805196449965646">ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸು</translation>
 <translation id="5895138241574237353">ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="6058625436358447366">ಪೂರ್ಣಗೊಳಿಸಲು, ನಿಮ್ಮ ಹಳೆಯ ಹಾಗೂ ಹೊಸ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="6106186594183574873">ಪೂರ್ಣಗೊಳಿಸಲು, ನಿಮ್ಮ ಹಳೆಯ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ</translation>
 <translation id="6146993107019042706">ಪೂರ್ಣಗೊಳಿಸಲು, ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ</translation>
 <translation id="6574601967010742428">ನಿಮ್ಮ ಚಟುವಟಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಸಾಧನ ನಿರ್ವಾಹಕರಿಗೆ ಸಾಧ್ಯವಾಗಬಹುದು.</translation>
+<translation id="7280705187789120111">Kerberos ಟಿಕೆಟ್‌ನ ಅವಧಿ ಮುಕ್ತಾಯವಾಗಲಿದೆ</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್ ಅವಧಿ ಮೀರಿದೆ!}=1{ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್ ಒಂದು ದಿನಕ್ಕಿಂತಲೂ ಕಡಿಮೆ ಅವಧಿಯಲ್ಲಿ ಅವಧಿ ಮೀರುತ್ತದೆ!}one{ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್ # ದಿನಗಳಿಗಿಂತಲೂ ಕಡಿಮೆ ಅವಧಿಯಲ್ಲಿ ಅವಧಿ ಮೀರುತ್ತದೆ!}other{ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್ # ದಿನಗಳಿಗಿಂತಲೂ ಕಡಿಮೆ ಅವಧಿಯಲ್ಲಿ ಅವಧಿ ಮೀರುತ್ತದೆ!}}</translation>
 <translation id="7658239707568436148">ರದ್ದುಮಾಡಿ</translation>
 <translation id="7690294790491645610">ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ಖಚಿತಪಡಿಸಿ</translation>
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb
index ed232ec..52202d4 100644
--- a/chromeos/strings/chromeos_strings_ko.xtb
+++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">블루투스를 사용 설정하여 근처 기기 탐색</translation>
 <translation id="2805756323405976993">앱</translation>
 <translation id="2872961005593481000">종료</translation>
+<translation id="2912823482158781027">티켓 새로고침</translation>
 <translation id="3511655281162215899">즉시 새 비밀번호를 선택해 주세요.</translation>
+<translation id="3562817605261346876"><ph name="PRINCIPAL_NAME" /> 티켓을 곧 새로고침해 주세요.</translation>
 <translation id="3838338534323494292">새 비밀번호</translation>
 <translation id="445059817448385655">이전 비밀번호</translation>
 <translation id="467510802200863975">비밀번호가 일치하지 않습니다.</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">게스트로 로그인</translation>
 <translation id="54609108002486618">관리</translation>
 <translation id="5733345267661125295">지금 새 비밀번호를 선택해 주세요.</translation>
+<translation id="5743581760404859096">Kerberos 티켓이 곧 만료됨</translation>
 <translation id="5832805196449965646">사용자 추가</translation>
 <translation id="5895138241574237353">다시 시작</translation>
 <translation id="6058625436358447366">완료하려면 이전 및 새 비밀번호를 입력하세요.</translation>
 <translation id="6106186594183574873">완료하려면 이전 비밀번호를 입력하세요.</translation>
 <translation id="6146993107019042706">완료하려면 새 비밀번호를 입력하세요.</translation>
 <translation id="6574601967010742428">기기 관리자가 내 활동을 모니터링할 수도 있습니다.</translation>
+<translation id="7280705187789120111">Kerberos 티켓 만료 예정</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{현재 비밀번호가 만료되었습니다.}=1{1일 이내에 현재 비밀번호가 만료됩니다.}other{#일 이내에 현재 비밀번호가 만료됩니다.}}</translation>
 <translation id="7658239707568436148">취소</translation>
 <translation id="7690294790491645610">새 비밀번호 확인</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb
index da9dfce..ef392f4 100644
--- a/chromeos/strings/chromeos_strings_lt.xtb
+++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Įjunkite „Bluetooth“, kad aptiktumėte įrenginius netoliese</translation>
 <translation id="2805756323405976993">Taikomosios programos</translation>
 <translation id="2872961005593481000">Stabdyti</translation>
+<translation id="2912823482158781027">ATNAUJINTI BILIETĄ</translation>
 <translation id="3511655281162215899">Iškart pasirinkite naują slaptažodį</translation>
+<translation id="3562817605261346876">Ilgai nedelsdami atnaujinkite <ph name="PRINCIPAL_NAME" /> bilietą</translation>
 <translation id="3838338534323494292">Naujas slaptažodis</translation>
 <translation id="445059817448385655">Senas slaptažodis</translation>
 <translation id="467510802200863975">Slaptažodžiai neatitinka</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Naršyti kaip svečiui</translation>
 <translation id="54609108002486618">Valdoma</translation>
 <translation id="5733345267661125295">Naują slaptažodį pasirinkite dabar</translation>
+<translation id="5743581760404859096">„Kerberos“ bilietas netrukus baigs galioti</translation>
 <translation id="5832805196449965646">Pridėti asmenį</translation>
 <translation id="5895138241574237353">Paleisti iš naujo</translation>
 <translation id="6058625436358447366">Norėdami užbaigti įveskite seną ir naują slaptažodžius</translation>
 <translation id="6106186594183574873">Norėdami užbaigti įveskite seną slaptažodį</translation>
 <translation id="6146993107019042706">Norėdami užbaigti įveskite naują slaptažodį</translation>
 <translation id="6574601967010742428">Įrenginio administratorius gali stebėti jūsų veiklą.</translation>
+<translation id="7280705187789120111">„Kerberos“ bilietas baigia galioti</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Jūsų dabartinis slaptažodis nebegalioja!}=1{Jūsų dabartinis slaptažodis baigs galioti po mažiau nei vienos dienos!}one{Jūsų dabartinis slaptažodis baigs galioti po mažiau nei # dienos!}few{Jūsų dabartinis slaptažodis baigs galioti po mažiau nei # dienų!}many{Jūsų dabartinis slaptažodis baigs galioti po mažiau nei # dienos!}other{Jūsų dabartinis slaptažodis baigs galioti po mažiau nei # dienų!}}</translation>
 <translation id="7658239707568436148">Atšaukti</translation>
 <translation id="7690294790491645610">Patvirtinkite naują slaptažodį</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb
index e0b52d2e..066ff46e 100644
--- a/chromeos/strings/chromeos_strings_lv.xtb
+++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Ieslēdziet Bluetooth, lai atklātu tuvumā esošas ierīces</translation>
 <translation id="2805756323405976993">Lietotnes</translation>
 <translation id="2872961005593481000">Beidzēt</translation>
+<translation id="2912823482158781027">ATSVAIDZINĀT BIĻETI</translation>
 <translation id="3511655281162215899">Lūdzu, nekavējoties izvēlieties jaunu paroli.</translation>
+<translation id="3562817605261346876">Lūdzu, drīzumā atsvaidziniet lietotāja <ph name="PRINCIPAL_NAME" /> biļeti</translation>
 <translation id="3838338534323494292">Jaunā parole</translation>
 <translation id="445059817448385655">Iepriekšējā parole</translation>
 <translation id="467510802200863975">Paroles nav vienādas</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Pārlūkot kā viesim</translation>
 <translation id="54609108002486618">Pārvaldītais</translation>
 <translation id="5733345267661125295">Lūdzu, izvēlieties jaunu paroli jau tagad.</translation>
+<translation id="5743581760404859096">Jūsu Kerberos biļetes termiņš drīz beigsies</translation>
 <translation id="5832805196449965646">Pievienot personu</translation>
 <translation id="5895138241574237353">Restartēt</translation>
 <translation id="6058625436358447366">Lai pabeigtu, ievadiet savu iepriekšējo un jauno paroli</translation>
 <translation id="6106186594183574873">Lai pabeigtu, ievadiet savu iepriekšējo paroli</translation>
 <translation id="6146993107019042706">Lai pabeigtu, ievadiet savu jauno paroli</translation>
 <translation id="6574601967010742428">Jūsu darbības var pārraudzīt ierīces pārvaldnieks.</translation>
+<translation id="7280705187789120111">Kerberos biļetes termiņš drīz beigsies</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Jūsu pašreizējai parolei ir beidzies derīguma termiņš.}=1{Jūsu pašreizējās paroles derīguma termiņš beigsies pēc mazāk nekā vienas dienas.}zero{Jūsu pašreizējās paroles derīguma termiņš beigsies pēc mazāk nekā # dienām.}one{Jūsu pašreizējās paroles derīguma termiņš beigsies pēc mazāk nekā # dienas.}other{Jūsu pašreizējās paroles derīguma termiņš beigsies pēc mazāk nekā # dienām.}}</translation>
 <translation id="7658239707568436148">Atcelt</translation>
 <translation id="7690294790491645610">Apstipriniet jauno paroli</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb
index 6fd6051..24e7e773 100644
--- a/chromeos/strings/chromeos_strings_ml.xtb
+++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">സമീപത്തുള്ള ഉപകരണങ്ങൾ കണ്ടെത്താൻ Bluetooth ഓണാക്കുക</translation>
 <translation id="2805756323405976993">ആപ്സ്</translation>
 <translation id="2872961005593481000">അടയ്ക്കുക</translation>
+<translation id="2912823482158781027">ടിക്കറ്റ് പുതുക്കിയെടുക്കുക</translation>
 <translation id="3511655281162215899">പുതിയ പാസ്‌വേഡ് എത്രയും പെട്ടെന്ന് തിരഞ്ഞെടുക്കുക</translation>
+<translation id="3562817605261346876"><ph name="PRINCIPAL_NAME" /> എന്നതിനുള്ള ടിക്കറ്റ് ഉടൻ പുതുക്കിയെടുക്കുക</translation>
 <translation id="3838338534323494292">പുതിയ പാസ്‌വേഡ്</translation>
 <translation id="445059817448385655">പഴയ പാസ്‌വേഡ്</translation>
 <translation id="467510802200863975">പാസ്‌വേഡുകൾ പൊരുത്തപ്പെടുന്നില്ല</translation>
@@ -21,12 +23,14 @@
 <translation id="5457599981699367932">അതിഥിയായി ബ്രൌസ് ചെയ്യുക</translation>
 <translation id="54609108002486618">നിയന്ത്രിതം</translation>
 <translation id="5733345267661125295">പുതിയ പാസ്‌വേഡ് ഇപ്പോൾ തിരഞ്ഞെടുക്കുക</translation>
+<translation id="5743581760404859096">നിങ്ങളുടെ Kerberos ടിക്കറ്റ് കാലഹരണപ്പെടാൻ പോവുകയാണ്</translation>
 <translation id="5832805196449965646">വ്യക്തിയെ ചേർക്കുക</translation>
 <translation id="5895138241574237353">പുനരാരംഭിക്കുക</translation>
 <translation id="6058625436358447366">പൂർത്തിയാക്കാൻ നിങ്ങളുടെ പഴയ പാസ്‌വേഡും പുതിയ പാസ്‌വേഡും നൽകുക</translation>
 <translation id="6106186594183574873">പൂർത്തിയാക്കാൻ നിങ്ങളുടെ പഴയ പാസ്‌വേഡ് നൽകുക</translation>
 <translation id="6146993107019042706">പൂർത്തിയാക്കാൻ നിങ്ങളുടെ പുതിയ പാസ്‌വേഡ് നൽകുക</translation>
 <translation id="6574601967010742428">ഉപകരണ അഡ്‌മിനിസ്‌ട്രേറ്റർക്ക് നിങ്ങളുടെ ആക്‌റ്റിവിറ്റി നിരീക്ഷിക്കാനായേക്കും.</translation>
+<translation id="7280705187789120111">Kerberos ടിക്കറ്റ് കാലഹരണപ്പെടുന്നു</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{നിങ്ങളുടെ നിലവിലെ പാസ്‌വേഡ് കാലഹരണപ്പെട്ടു!}=1{നിങ്ങളുടെ നിലവിലെ പാസ്‌വേഡ് ഒരു ദിവസത്തിനുള്ളിൽ കാലഹരണപ്പെടും!}other{നിങ്ങളുടെ നിലവിലെ പാസ്‌വേഡ് # ദിവസത്തിനുള്ളിൽ കാലഹരണപ്പെടും!}}</translation>
 <translation id="7658239707568436148">റദ്ദാക്കൂ</translation>
 <translation id="7690294790491645610">പുതിയ പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb
index 41768d5..da787fb 100644
--- a/chromeos/strings/chromeos_strings_mr.xtb
+++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">जवळपासचे डिव्हाइस शोधण्यासाठी ब्लूटूथ सुरू करा</translation>
 <translation id="2805756323405976993">ॲप्लिकेशन</translation>
 <translation id="2872961005593481000">बंद करा</translation>
+<translation id="2912823482158781027">तिकीट रिफ्रेश करा</translation>
 <translation id="3511655281162215899">कृपया लगेच नवीन पासवर्ड निवडा</translation>
+<translation id="3562817605261346876">कृपया <ph name="PRINCIPAL_NAME" /> चे तिकीट लवकर रिफ्रेश करा</translation>
 <translation id="3838338534323494292">नवीन पासवर्ड</translation>
 <translation id="445059817448385655">जुना पासवर्ड</translation>
 <translation id="467510802200863975">पासवर्ड जुळत नाहीत</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">अतिथी म्हणून ब्राउझ करा</translation>
 <translation id="54609108002486618">व्यवस्‍थापित</translation>
 <translation id="5733345267661125295">कृपया आता नवीन पासवर्ड निवडा</translation>
+<translation id="5743581760404859096">तुमचे Kerberos तिकीट एक्स्पायर होत आहे</translation>
 <translation id="5832805196449965646">व्यक्ती जोडा</translation>
 <translation id="5895138241574237353">रीस्टार्ट करा</translation>
 <translation id="6058625436358447366">पूर्ण करण्यासाठी, तुमचे जुने आणि नवीन पासवर्ड एंटर करा</translation>
 <translation id="6106186594183574873">पूर्ण करण्यासाठी, तुमचा जुना पासवर्ड एंटर करा</translation>
-<translation id="6146993107019042706">पूर्ण करण्यासाठी, तुमचे नवीन पासवर्ड एंटर करा</translation>
+<translation id="6146993107019042706">पूर्ण करण्यासाठी, तुमचा नवीन पासवर्ड एंटर करा</translation>
 <translation id="6574601967010742428">डिव्हाइस ॲडमिनिस्ट्रेटर कदाचित तुमची ॲक्टिव्हिटी नियंत्रित करू शकेल.</translation>
+<translation id="7280705187789120111">Kerberos तिकीट एक्स्पायर होत आहे</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{तुमचा सध्याचा पासवर्ड एक्स्पायर झाला आहे!}=1{तुमचा सध्याचा पासवर्ड एका दिवसापेक्षा कमी वेळेत एक्स्पायर होईल!}other{तुमचा सध्याचा पासवर्ड # दिवसांपेक्षा कमी वेळेत एक्स्पायर होईल!}}</translation>
 <translation id="7658239707568436148">रद्द करा</translation>
 <translation id="7690294790491645610">नवीन पासवर्ड कन्फर्म करा</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb
index 03bcf2c..47c277c9 100644
--- a/chromeos/strings/chromeos_strings_ms.xtb
+++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Hidupkan Bluetooth untuk menemui peranti berdekatan</translation>
 <translation id="2805756323405976993">Apl</translation>
 <translation id="2872961005593481000">Mematikan</translation>
+<translation id="2912823482158781027">MUAT SEMULA TIKET</translation>
 <translation id="3511655281162215899">Sila pilih kata laluan baharu dengan segera</translation>
+<translation id="3562817605261346876">Sila muat semula tiket untuk <ph name="PRINCIPAL_NAME" /> tidak lama lagi</translation>
 <translation id="3838338534323494292">Kata laluan baharu</translation>
 <translation id="445059817448385655">Kata laluan lama</translation>
 <translation id="467510802200863975">Kata laluan tidak sepadan</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Semak Imbas sebagai Tetamu</translation>
 <translation id="54609108002486618">Diuruskan</translation>
 <translation id="5733345267661125295">Sila pilih kata laluan baharu sekarang</translation>
+<translation id="5743581760404859096">Tiket Kerberos anda akan tamat tempoh</translation>
 <translation id="5832805196449965646">Tambah Orang</translation>
 <translation id="5895138241574237353">Mulakan Semula</translation>
 <translation id="6058625436358447366">Untuk menyelesaikan proses ini, masukkan kata laluan lama dan baharu</translation>
 <translation id="6106186594183574873">Untuk menyelesaikan proses ini, masukkan kata laluan lama anda</translation>
 <translation id="6146993107019042706">Untuk menyelesaikan proses ini, masukkan kata laluan baharu anda</translation>
 <translation id="6574601967010742428">Pentadbir peranti mungkin dapat memantau aktiviti anda</translation>
+<translation id="7280705187789120111">Tiket Kerberos akan tamat tempoh</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Kata laluan semasa anda telah tamat tempoh!}=1{Kata laluan semasa anda akan tamat tempoh kurang daripada satu hari!}other{Kata laluan semasa anda akan tamat tempoh kurang daripada # hari!}}</translation>
 <translation id="7658239707568436148">Batal</translation>
 <translation id="7690294790491645610">Sahkan kata laluan baharu</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb
index 15a7a6dc..6ed1ac2 100644
--- a/chromeos/strings/chromeos_strings_nl.xtb
+++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Schakel Bluetooth in om apparaten in de buurt te vinden</translation>
 <translation id="2805756323405976993">Apps</translation>
 <translation id="2872961005593481000">Afsluiten</translation>
+<translation id="2912823482158781027">TICKET VERNIEUWEN</translation>
 <translation id="3511655281162215899">Kies onmiddellijk een nieuw wachtwoord</translation>
+<translation id="3562817605261346876">Vernieuw het ticket voor <ph name="PRINCIPAL_NAME" /> binnenkort</translation>
 <translation id="3838338534323494292">Nieuw wachtwoord</translation>
 <translation id="445059817448385655">Oud wachtwoord</translation>
 <translation id="467510802200863975">De wachtwoorden komen niet overeen</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Gebruiken als gast</translation>
 <translation id="54609108002486618">Beheerd</translation>
 <translation id="5733345267661125295">Kies nu een nieuw wachtwoord</translation>
+<translation id="5743581760404859096">Je Kerberos-ticket verloopt binnenkort</translation>
 <translation id="5832805196449965646">Persoon toevoegen</translation>
 <translation id="5895138241574237353">Opnieuw starten</translation>
 <translation id="6058625436358447366">Geef je oude en nieuwe wachtwoord op om te voltooien</translation>
 <translation id="6106186594183574873">Geef je oude wachtwoord op om te voltooien</translation>
 <translation id="6146993107019042706">Geef je nieuwe wachtwoord opnieuw op om te voltooien</translation>
 <translation id="6574601967010742428">De beheerder van het apparaat kan je activiteit mogelijk bekijken.</translation>
+<translation id="7280705187789120111">Kerberos-ticket verloopt bijna</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Je huidige wachtwoord is verlopen.}=1{Je huidige wachtwoord verloopt binnen één dag.}other{Je huidige wachtwoord verloopt binnen # dagen.}}</translation>
 <translation id="7658239707568436148">Annuleren</translation>
 <translation id="7690294790491645610">Nieuw wachtwoord bevestigen</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb
index c68f5167..eba50ef 100644
--- a/chromeos/strings/chromeos_strings_no.xtb
+++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Slå på Bluetooth for å finne enheter i nærheten</translation>
 <translation id="2805756323405976993">Apper</translation>
 <translation id="2872961005593481000">Slå av</translation>
+<translation id="2912823482158781027">OPPDATER SAK</translation>
 <translation id="3511655281162215899">Velg et nytt passord umiddelbart</translation>
+<translation id="3562817605261346876">Oppdater saken for <ph name="PRINCIPAL_NAME" /> snart</translation>
 <translation id="3838338534323494292">Nytt passord</translation>
 <translation id="445059817448385655">Gammelt passord</translation>
 <translation id="467510802200863975">Passordene er ikke like</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Surf som gjest</translation>
 <translation id="54609108002486618">Administrert</translation>
 <translation id="5733345267661125295">Velg et nytt passord nå</translation>
+<translation id="5743581760404859096">Kerberos-saken din holder på å utløpe</translation>
 <translation id="5832805196449965646">Legg til person</translation>
 <translation id="5895138241574237353">Start på nytt</translation>
 <translation id="6058625436358447366">For å fullføre passordendringen, skriv inn det gamle og det nye passordet</translation>
 <translation id="6106186594183574873">For å fullføre passordendringen, skriv inn det gamle passordet</translation>
 <translation id="6146993107019042706">For å fullføre passordendringen, skriv inn det nye passordet</translation>
 <translation id="6574601967010742428">Enhetsadministratoren kan muligens overvåke aktiviteten din.</translation>
+<translation id="7280705187789120111">Kerberos-saken holder på å utløpe</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Det nåværende passordet ditt er utløpt!}=1{Det nåværende passordet ditt utløper om mindre enn én dag!}other{Det nåværende passordet ditt utløper om mindre enn # dager!}}</translation>
 <translation id="7658239707568436148">Avbryt</translation>
 <translation id="7690294790491645610">Bekreft det nye passordet</translation>
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb
index ed0917e..87386c6 100644
--- a/chromeos/strings/chromeos_strings_pl.xtb
+++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Włącz Bluetooth, by wykryć urządzenia w pobliżu</translation>
 <translation id="2805756323405976993">Aplikacje</translation>
 <translation id="2872961005593481000">Wyłącz</translation>
+<translation id="2912823482158781027">ODŚWIEŻ BILET</translation>
 <translation id="3511655281162215899">Jak najszybciej zmień hasło</translation>
+<translation id="3562817605261346876">W najbliższym czasie odśwież bilet dla: <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Nowe hasło</translation>
 <translation id="445059817448385655">Stare hasło</translation>
 <translation id="467510802200863975">Hasła nie są zgodne</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Przeglądaj jako gość</translation>
 <translation id="54609108002486618">Zarządzany</translation>
 <translation id="5733345267661125295">Już teraz zmień hasło</translation>
+<translation id="5743581760404859096">Twój bilet Kerberos wkrótce straci ważność</translation>
 <translation id="5832805196449965646">Dodaj osobę</translation>
 <translation id="5895138241574237353">Uruchom ponownie</translation>
 <translation id="6058625436358447366">Aby zakończyć, wpisz stare i nowe hasło</translation>
 <translation id="6106186594183574873">Aby zakończyć, wpisz stare hasło</translation>
 <translation id="6146993107019042706">Aby zakończyć, wpisz nowe hasło</translation>
 <translation id="6574601967010742428">Administrator urządzenia może monitorować Twoją aktywność.</translation>
+<translation id="7280705187789120111">Bilet Kerberos wkrótce straci ważność</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Twoje obecne hasło wygasło.}=1{Twoje obecne hasło wygasa za mniej niż dzień.}few{Twoje obecne hasło wygasa za mniej niż # dni.}many{Twoje obecne hasło wygasa za mniej niż # dni.}other{Twoje obecne hasło wygasa za mniej niż # dni.}}</translation>
 <translation id="7658239707568436148">Anuluj</translation>
 <translation id="7690294790491645610">Potwierdź nowe hasło</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb
index ade3f18c..05c3724 100644
--- a/chromeos/strings/chromeos_strings_pt-BR.xtb
+++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Ativar o Bluetooth para descobrir dispositivos nas proximidades</translation>
 <translation id="2805756323405976993">Apps</translation>
 <translation id="2872961005593481000">Desligar</translation>
+<translation id="2912823482158781027">ATUALIZAR TÍQUETE</translation>
 <translation id="3511655281162215899">Escolha uma nova senha imediatamente</translation>
+<translation id="3562817605261346876">Atualize o tíquete para <ph name="PRINCIPAL_NAME" /> assim que possível</translation>
 <translation id="3838338534323494292">Nova senha</translation>
 <translation id="445059817448385655">Senha antiga</translation>
 <translation id="467510802200863975">As senhas não são iguais</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Navegar como visitante</translation>
 <translation id="54609108002486618">Gerenciado</translation>
 <translation id="5733345267661125295">Escolha uma nova senha agora</translation>
+<translation id="5743581760404859096">Seu tíquete do Kerberos expirará em breve</translation>
 <translation id="5832805196449965646">Adicionar pessoa</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="6058625436358447366">Para concluir, insira a senha antiga e a nova</translation>
 <translation id="6106186594183574873">Para concluir, insira sua senha antiga</translation>
 <translation id="6146993107019042706">Para concluir, insira a nova senha</translation>
 <translation id="6574601967010742428">O administrador do dispositivo pode conseguir monitorar sua atividade.</translation>
+<translation id="7280705187789120111">Tíquete do Kerberos expirará em breve</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Sua senha atual expirou.}=1{Sua senha atual expirará em menos de um dia.}one{Sua senha atual expirará em menos de # dia.}other{Sua senha atual expirará em menos de # dias.}}</translation>
 <translation id="7658239707568436148">Cancelar</translation>
 <translation id="7690294790491645610">Confirmar nova senha</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb
index 9e770e9..aeb7082a 100644
--- a/chromeos/strings/chromeos_strings_pt-PT.xtb
+++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Ativar o Bluetooth para detetar dispositivos próximos</translation>
 <translation id="2805756323405976993">Aplicações</translation>
 <translation id="2872961005593481000">Encerrar</translation>
+<translation id="2912823482158781027">ATUALIZAR PERMISSÃO</translation>
 <translation id="3511655281162215899">Escolha uma nova palavra-passe imediatamente.</translation>
+<translation id="3562817605261346876">Atualize a permissão de <ph name="PRINCIPAL_NAME" /> em breve.</translation>
 <translation id="3838338534323494292">Nova palavra-passe</translation>
 <translation id="445059817448385655">Palavra-passe antiga</translation>
 <translation id="467510802200863975">As palavras-passe não correspondem.</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Navegar como convidado</translation>
 <translation id="54609108002486618">Geridos</translation>
 <translation id="5733345267661125295">Escolha uma nova palavra-passe agora.</translation>
+<translation id="5743581760404859096">A sua permissão Kerberos está prestes a expirar</translation>
 <translation id="5832805196449965646">Adicionar pessoa</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
-<translation id="6058625436358447366">Para terminar, introduza a palavras-passe antiga e a nova</translation>
+<translation id="6058625436358447366">Para terminar, introduza a palavra-passe antiga e a nova</translation>
 <translation id="6106186594183574873">Para terminar, introduza a palavra-passe antiga</translation>
 <translation id="6146993107019042706">Para terminar, introduza a nova palavra-passe.</translation>
 <translation id="6574601967010742428">O administrador do dispositivo pode conseguir monitorizar a sua atividade.</translation>
+<translation id="7280705187789120111">Permissão Kerberos a expirar</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{A sua palavra-passe atual expirou!}=1{A sua palavra-passe atual expira em menos de um dia!}other{A sua palavra-passe atual expira em menos de # dias!}}</translation>
 <translation id="7658239707568436148">Cancelar</translation>
 <translation id="7690294790491645610">Confirmar a nova palavra-passe</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb
index 3e5d28de..ff719eca 100644
--- a/chromeos/strings/chromeos_strings_ro.xtb
+++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Pentru a descoperi dispozitivele din apropiere, activează Bluetooth</translation>
 <translation id="2805756323405976993">Aplicații</translation>
 <translation id="2872961005593481000">Închide</translation>
+<translation id="2912823482158781027">ACTUALIZEAZĂ TICHETUL</translation>
 <translation id="3511655281162215899">Alege imediat o parolă nouă</translation>
+<translation id="3562817605261346876">Actualizează în curând tichetul pentru <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Parolă nouă</translation>
 <translation id="445059817448385655">Parolă veche</translation>
 <translation id="467510802200863975">Parolele nu se potrivesc</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Navighează ca invitat</translation>
 <translation id="54609108002486618">Gestionat</translation>
 <translation id="5733345267661125295">Alege acum o parolă nouă</translation>
+<translation id="5743581760404859096">Tichetul Kerberos va expira în curând</translation>
 <translation id="5832805196449965646">Adăugați un utilizator</translation>
 <translation id="5895138241574237353">Reîncepe</translation>
 <translation id="6058625436358447366">Pentru a finaliza, introdu parola veche și pe cea nouă</translation>
 <translation id="6106186594183574873">Pentru a finaliza, introdu vechea parolă</translation>
 <translation id="6146993107019042706">Pentru a finaliza, introdu noua parolă</translation>
 <translation id="6574601967010742428">Administratorul dispozitivului poate să îți monitorizeze activitatea.</translation>
+<translation id="7280705187789120111">Tichetul Kerberos va expira în curând</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Parola curentă a expirat!}=1{Parola curentă va expira în mai puțin de o zi!}few{Parola curentă va expira în mai puțin de # zile!}other{Parola curentă va expira în mai puțin de # de zile!}}</translation>
 <translation id="7658239707568436148">Anulează</translation>
 <translation id="7690294790491645610">Confirmă noua parolă</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb
index b11357fa..d5b8bf5 100644
--- a/chromeos/strings/chromeos_strings_ru.xtb
+++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Включите Bluetooth, чтобы найти устройства</translation>
 <translation id="2805756323405976993">Приложения</translation>
 <translation id="2872961005593481000">Завершить работу</translation>
+<translation id="2912823482158781027">ОБНОВИТЬ БИЛЕТ</translation>
 <translation id="3511655281162215899">Смените его как можно скорее.</translation>
+<translation id="3562817605261346876">Обновите билет для <ph name="PRINCIPAL_NAME" /> в ближайшее время.</translation>
 <translation id="3838338534323494292">Новый пароль</translation>
 <translation id="445059817448385655">Старый пароль</translation>
 <translation id="467510802200863975">Пароли не совпадают.</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Войти в гостевой режим</translation>
 <translation id="54609108002486618">Автоматическое управление</translation>
 <translation id="5733345267661125295">Смените его прямо сейчас.</translation>
+<translation id="5743581760404859096">Срок действия вашего билета Kerberos истекает</translation>
 <translation id="5832805196449965646">Добавить пользователя</translation>
 <translation id="5895138241574237353">Перезапустить</translation>
 <translation id="6058625436358447366">Для завершения введите старый и новый пароли.</translation>
 <translation id="6106186594183574873">Для завершения введите старый пароль.</translation>
 <translation id="6146993107019042706">Чтобы завершить процедуру, введите новый пароль.</translation>
 <translation id="6574601967010742428">Администратор может отслеживать ваши действия на этом устройстве.</translation>
+<translation id="7280705187789120111">Срок действия билета Kerberos истекает</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Срок действия текущего пароля истек.}=1{Срок действия текущего пароля истекает менее чем через 1 день.}one{Срок действия текущего пароля истекает менее чем через # день.}few{Срок действия текущего пароля истекает менее чем через # дня.}many{Срок действия текущего пароля истекает менее чем через # дней.}other{Срок действия текущего пароля истекает менее чем через # дня.}}</translation>
 <translation id="7658239707568436148">Отмена</translation>
 <translation id="7690294790491645610">Введите новый пароль ещё раз</translation>
diff --git a/chromeos/strings/chromeos_strings_sk.xtb b/chromeos/strings/chromeos_strings_sk.xtb
index c976d5b..27e3e03 100644
--- a/chromeos/strings/chromeos_strings_sk.xtb
+++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Ak chcete nájsť zariadenia v okolí, zapnite Bluetooth</translation>
 <translation id="2805756323405976993">Aplikácie</translation>
 <translation id="2872961005593481000">Vypnúť</translation>
+<translation id="2912823482158781027">OBNOVIŤ TIKET</translation>
 <translation id="3511655281162215899">Ihneď vyberte nové heslo</translation>
+<translation id="3562817605261346876">Obnovte čo najskôr tiket pre používateľa <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Nové heslo</translation>
 <translation id="445059817448385655">Staré heslo</translation>
 <translation id="467510802200863975">Heslá sa nezhodujú</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Prehliadať ako hosť</translation>
 <translation id="54609108002486618">Spravovaný</translation>
 <translation id="5733345267661125295">Vyberte nové heslo</translation>
+<translation id="5743581760404859096">Platnosť vášho tiketu Kerberos čoskoro vyprší</translation>
 <translation id="5832805196449965646">Pridať osobu</translation>
 <translation id="5895138241574237353">Reštartovať</translation>
 <translation id="6058625436358447366">Ak chcete zmenu dokončiť, zadajte staré a nové heslo</translation>
 <translation id="6106186594183574873">Ak chcete zmenu dokončiť, zadajte staré heslo</translation>
 <translation id="6146993107019042706">Ak chcete zmenu dokončiť, zadajte nové heslo</translation>
 <translation id="6574601967010742428">Správca zariadenia môže sledovať vašu aktivitu.</translation>
+<translation id="7280705187789120111">Platnosť tiketu Kerberos čoskoro vyprší</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Platnosť vášho aktuálneho hesla vypršala.}=1{Platnosť vášho aktuálneho hesla vyprší za menej ako deň.}few{Platnosť vášho aktuálneho hesla vyprší za menej ako # dni.}many{Platnosť vášho aktuálneho hesla vyprší za menej ako # dňa.}other{Platnosť vášho aktuálneho hesla vyprší za menej ako # dní.}}</translation>
 <translation id="7658239707568436148">Zrušiť</translation>
 <translation id="7690294790491645610">Potvrďte nové heslo</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb
index 19561a0..c1bbca4 100644
--- a/chromeos/strings/chromeos_strings_sl.xtb
+++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Vklopite Bluetooth, če želite odkriti naprave v bližini</translation>
 <translation id="2805756323405976993">Aplikacije</translation>
 <translation id="2872961005593481000">Zaustavitev</translation>
+<translation id="2912823482158781027">OSVEŽI KARTONČEK</translation>
 <translation id="3511655281162215899">Takoj izberite novo geslo</translation>
+<translation id="3562817605261346876">Kmalu osvežite kartonček za <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Novo geslo</translation>
 <translation id="445059817448385655">Staro geslo</translation>
 <translation id="467510802200863975">Gesli se ne ujemata</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Brskajte kot gost</translation>
 <translation id="54609108002486618">Upravljan</translation>
 <translation id="5733345267661125295">Izberite novo geslo</translation>
+<translation id="5743581760404859096">Kartonček za Kerberos bo potekel</translation>
 <translation id="5832805196449965646">Dodaj osebo</translation>
 <translation id="5895138241574237353">Znova zaženi</translation>
 <translation id="6058625436358447366">Za dokončanje vnesite staro in novo geslo</translation>
 <translation id="6106186594183574873">Za dokončanje vnesite staro geslo</translation>
 <translation id="6146993107019042706">Za dokončanje vnesite novo geslo</translation>
 <translation id="6574601967010742428">Upravitelj naprave lahko morda nadzira vašo dejavnost.</translation>
+<translation id="7280705187789120111">Kartonček za Kerberos bo potekel</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Trenutno geslo je poteklo.}=1{Trenutno geslo poteče čez manj kot en dan.}one{Trenutno geslo poteče čez manj kot # dan.}two{Trenutno geslo poteče čez manj kot # dneva.}few{Trenutno geslo poteče čez manj kot # dni.}other{Trenutno geslo poteče čez manj kot # dni.}}</translation>
 <translation id="7658239707568436148">Prekliči</translation>
 <translation id="7690294790491645610">Potrdite novo geslo</translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb
index e3e326e2..4bff30c 100644
--- a/chromeos/strings/chromeos_strings_sr.xtb
+++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Укључите Bluetooth да бисте открили уређаје у близини</translation>
 <translation id="2805756323405976993">Апликације</translation>
 <translation id="2872961005593481000">Искључи</translation>
+<translation id="2912823482158781027">ОСВЕЖИ ТИКЕТ</translation>
 <translation id="3511655281162215899">Одмах одаберите нову лозинку</translation>
+<translation id="3562817605261346876">Ускоро освежите тикет за <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Нова лозинка</translation>
 <translation id="445059817448385655">Стара лозинка</translation>
 <translation id="467510802200863975">Лозинке се не подударају</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Прегледајте као гост</translation>
 <translation id="54609108002486618">Управљани</translation>
 <translation id="5733345267661125295">Одаберите нову лозинку</translation>
+<translation id="5743581760404859096">Kerberos тикет ускоро истиче</translation>
 <translation id="5832805196449965646">Додај особу</translation>
 <translation id="5895138241574237353">Покрени поново</translation>
 <translation id="6058625436358447366">Да бисте завршили, унесите стару и нову лозинку</translation>
 <translation id="6106186594183574873">Да бисте завршили, унесите стару лозинку</translation>
 <translation id="6146993107019042706">Да бисте завршили, унесите нову лозинку</translation>
 <translation id="6574601967010742428">Администратор уређаја ће можда моћи да надгледа ваше активности.</translation>
+<translation id="7280705187789120111">Kerberos тикет истиче</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Актуелна лозинка је истекла!}=1{Актуелна лозинка истиче за мање од једног дана!}one{Актуелна лозинка истиче за мање од # дана!}few{Актуелна лозинка истиче за мање од # дана!}other{Актуелна лозинка истиче за мање од # дана!}}</translation>
 <translation id="7658239707568436148">Откажи</translation>
 <translation id="7690294790491645610">Потврдите нову лозинку</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb
index adf6b05..a4879f2 100644
--- a/chromeos/strings/chromeos_strings_sv.xtb
+++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Aktivera Bluetooth så att det går att upptäcka enheter i närheten</translation>
 <translation id="2805756323405976993">Appar</translation>
 <translation id="2872961005593481000">Stäng av</translation>
+<translation id="2912823482158781027">UPPDATERA BILJETT</translation>
 <translation id="3511655281162215899">Välj ett nytt lösenord genast</translation>
+<translation id="3562817605261346876">Uppdatera biljetten för <ph name="PRINCIPAL_NAME" /> snart</translation>
 <translation id="3838338534323494292">Nytt lösenord</translation>
 <translation id="445059817448385655">Gammalt lösenord</translation>
 <translation id="467510802200863975">Lösenorden matchar inte</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Använd som gäst</translation>
 <translation id="54609108002486618">Hanterade</translation>
 <translation id="5733345267661125295">Välj ett nytt lösenord nu</translation>
+<translation id="5743581760404859096">Kerberos-biljetten upphör snart att gälla</translation>
 <translation id="5832805196449965646">Lägg till person</translation>
 <translation id="5895138241574237353">Starta om</translation>
 <translation id="6058625436358447366">Slutför genom att ange det gamla och det nya lösenordet</translation>
 <translation id="6106186594183574873">Slutför genom att ange det gamla lösenordet</translation>
 <translation id="6146993107019042706">Slutför genom att ange det nya lösenordet</translation>
 <translation id="6574601967010742428">Enhetsadministratören kan ha möjlighet att övervaka det du gör.</translation>
+<translation id="7280705187789120111">Kerberos-biljetten upphör att gälla</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Lösenordet har upphört att gälla.}=1{Lösenordet upphör att gälla om mindre än en dag.}other{Lösenordet upphör att gälla om mindre än # dagar.}}</translation>
 <translation id="7658239707568436148">Avbryt</translation>
 <translation id="7690294790491645610">Bekräfta det nya lösenordet</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb
index 47990614..8e0f908 100644
--- a/chromeos/strings/chromeos_strings_sw.xtb
+++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Washa Bluetooth ili ugundue vifaa vilivyo karibu</translation>
 <translation id="2805756323405976993">Programu</translation>
 <translation id="2872961005593481000">Zima</translation>
+<translation id="2912823482158781027">ONYESHA TIKETI UPYA</translation>
 <translation id="3511655281162215899">Tafadhali chagua nenosiri jipya mara moja</translation>
+<translation id="3562817605261346876">Tafadhali onyesha upya tiketi ya <ph name="PRINCIPAL_NAME" /> hivi karibuni</translation>
 <translation id="3838338534323494292">Nenosiri jipya</translation>
 <translation id="445059817448385655">Nenosiri la awali</translation>
 <translation id="467510802200863975">Manenosiri hayalingani</translation>
@@ -21,12 +23,14 @@
 <translation id="5457599981699367932">Vinjari kama Mgeni</translation>
 <translation id="54609108002486618">Imedhibitiwa</translation>
 <translation id="5733345267661125295">Tafadhali chagua nenosiri jipya sasa</translation>
+<translation id="5743581760404859096">Muda wa kutumia tiketi ya Kerberos unakaribia kuisha</translation>
 <translation id="5832805196449965646">Ongeza Mtumiaji Mwingine</translation>
 <translation id="5895138241574237353">Zzima na uwashe</translation>
 <translation id="6058625436358447366">Ili ukamilishe, weka nenosiri lako la awali na lile jipya</translation>
 <translation id="6106186594183574873">Ili ukamilishe, weka nenosiri lako la awali</translation>
 <translation id="6146993107019042706">Ili ukamilishe, weka nenosiri jipya</translation>
 <translation id="6574601967010742428">Huenda msimamizi wa kifaa hiki atafuatilia shughuli zako.</translation>
+<translation id="7280705187789120111">Muda wa kutumia tiketi ya Kerberos unakaribia kuisha</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Muda wa kutumia nenosiri lako la sasa umekwisha!}=1{Muda wa kutumia nenosiri lako la sasa unaisha ndani ya siku moja!}other{Muda wa kutumia nenosiri lako la sasa utaisha ndani ya siku #!}}</translation>
 <translation id="7658239707568436148">Ghairi</translation>
 <translation id="7690294790491645610">Thibitisha nenosiri jipya</translation>
diff --git a/chromeos/strings/chromeos_strings_ta.xtb b/chromeos/strings/chromeos_strings_ta.xtb
index d16ef72..e65f681 100644
--- a/chromeos/strings/chromeos_strings_ta.xtb
+++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">அருகிலுள்ள சாதனங்களைக் கண்டறிய, புளூடூத்தை இயக்கவும்</translation>
 <translation id="2805756323405976993">ஆப்ஸ்</translation>
 <translation id="2872961005593481000">நிறுத்து</translation>
+<translation id="2912823482158781027">டிக்கெட்டைப் புதுப்பி</translation>
 <translation id="3511655281162215899">புதிய கடவுச்சொல்லை உடனடியாக அமைக்கவும்</translation>
+<translation id="3562817605261346876"><ph name="PRINCIPAL_NAME" />க்கான டிக்கெட்டை விரைவில் புதுப்பிக்கவும்</translation>
 <translation id="3838338534323494292">புதிய கடவுச்சொல்</translation>
 <translation id="445059817448385655">தற்போதைய கடவுச்சொல்</translation>
 <translation id="467510802200863975">கடவுச்சொற்கள் பொருந்தவில்லை</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">விருந்தினராக உலாவுங்கள்</translation>
 <translation id="54609108002486618">நிர்வகிக்கப்பட்டது</translation>
 <translation id="5733345267661125295">இப்போதே புதிய கடவுச்சொல்லை அமைக்கவும்</translation>
+<translation id="5743581760404859096">உங்கள் Kerberos டிக்கெட் விரைவில் காலாவதியாக உள்ளது</translation>
 <translation id="5832805196449965646">நபரைச் சேர்</translation>
 <translation id="5895138241574237353">மறுதொடக்கம்</translation>
 <translation id="6058625436358447366">நிறைவுசெய்ய தற்போதைய கடவுச்சொல்லையும் புதிய கடவுச்சொல்லையும் உள்ளிடவும்</translation>
 <translation id="6106186594183574873">நிறைவுசெய்ய தற்போதைய கடவுச்சொல்லை உள்ளிடவும்</translation>
 <translation id="6146993107019042706">நிறைவுசெய்ய புதிய கடவுச்சொல்லை உள்ளிடவும்</translation>
 <translation id="6574601967010742428">உங்கள் செயல்பாடு சாதன நிர்வாகியால் கண்காணிக்கப்படலாம்.</translation>
+<translation id="7280705187789120111">Kerberos டிக்கெட் விரைவில் காலாவதியாகும்</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{தற்போதைய கடவுச்சொல் காலாவதியானது!}=1{தற்போதைய கடவுச்சொல் ஒரு நாளுக்குள் காலாவதியாகும்!}other{தற்போதைய கடவுச்சொல் # நாட்களுக்குள் காலாவதியாகும்!}}</translation>
 <translation id="7658239707568436148">ரத்து செய்</translation>
 <translation id="7690294790491645610">புதிய கடவுச்சொல்லை உறுதிப்படுத்துக</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb
index ba4b638..e053ccd7 100644
--- a/chromeos/strings/chromeos_strings_te.xtb
+++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">సమీప పరికరాలను కనుగొనడానికి బ్లూటూత్‌ను ఆన్ చేయండి</translation>
 <translation id="2805756323405976993">యాప్స్</translation>
 <translation id="2872961005593481000">షట్ డౌన్ చెయ్యండి</translation>
+<translation id="2912823482158781027">టిక్కెట్‌ను రిఫ్రెష్ చేయి</translation>
 <translation id="3511655281162215899">దయచేసి వెంటనే కొత్త పాస్‌వర్డ్‌ను ఎంచుకోండి</translation>
+<translation id="3562817605261346876">దయచేసి <ph name="PRINCIPAL_NAME" /> సంబంధిత టిక్కెట్‌ను వీలైనంత త్వరగా రిఫ్రెష్ చేయండి</translation>
 <translation id="3838338534323494292">కొత్త పాస్‌వర్డ్</translation>
 <translation id="445059817448385655">పాత పాస్‌వర్డ్</translation>
 <translation id="467510802200863975">పాస్‌వర్డ్‌లు సరిపోలడం లేదు</translation>
@@ -21,12 +23,14 @@
 <translation id="5457599981699367932">అతిథి లాగా బ్రౌజ్ చేయండి</translation>
 <translation id="54609108002486618">నిర్వహించబడింది</translation>
 <translation id="5733345267661125295">దయచేసి ఇప్పుడు ఒక కొత్త పాస్‌వర్డ్‌ను ఎంచుకోండి</translation>
+<translation id="5743581760404859096">మీ Kerberos టికెట్ గడువు ముగుస్తోంది</translation>
 <translation id="5832805196449965646">వ్యక్తిని జోడించు</translation>
 <translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation>
 <translation id="6058625436358447366">దీనిని ముగించడానికి, మీ పాత, కొత్త పాస్‌వర్డ్‌లను నమోదు చేయండి</translation>
 <translation id="6106186594183574873">దీనిని ముగించడానికి, మీ పాత పాస్‌వర్డ్‌ను నమోదు చేయండి</translation>
 <translation id="6146993107019042706">దీనిని ముగించడానికి, మీ కొత్త పాస్‌వర్డ్‌ను నమోదు చేయండి</translation>
 <translation id="6574601967010742428">మీ కార్యకలాపాన్ని పరికర నిర్వాహకులు పర్యవేక్షించవచ్చు.</translation>
+<translation id="7280705187789120111">Kerberos టిక్కెట్ గడువు ముగుస్తోంది</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{మీ ప్రస్తుత పాస్‌వర్డ్ గడువు ముగిసింది!}=1{మీ ప్రస్తుత పాస్‌వర్డ్ గడువు ఒక రోజులోపు ముగుస్తుంది!}other{మీ ప్రస్తుత పాస్‌వర్డ్ గడువు # రోజులలో ముగుస్తుంది!}}</translation>
 <translation id="7658239707568436148">రద్దు చేయి</translation>
 <translation id="7690294790491645610">కొత్త పాస్‌వర్డ్‌ను నిర్ధారించండి</translation>
diff --git a/chromeos/strings/chromeos_strings_th.xtb b/chromeos/strings/chromeos_strings_th.xtb
index 6f7ee16..abdfd72 100644
--- a/chromeos/strings/chromeos_strings_th.xtb
+++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">เปิดบลูทูธเพื่อค้นหาอุปกรณ์ใกล้เคียง</translation>
 <translation id="2805756323405976993">แอป</translation>
 <translation id="2872961005593481000">ปิด</translation>
+<translation id="2912823482158781027">รีเฟรชตั๋ว</translation>
 <translation id="3511655281162215899">โปรดเลือกรหัสผ่านใหม่ทันที</translation>
+<translation id="3562817605261346876">โปรดรีเฟรชตั๋วของ <ph name="PRINCIPAL_NAME" /> เร็วๆ นี้</translation>
 <translation id="3838338534323494292">รหัสผ่านใหม่</translation>
 <translation id="445059817448385655">รหัสผ่านเดิม</translation>
 <translation id="467510802200863975">รหัสผ่านไม่ตรงกัน</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">ท่องเว็บในฐานะผู้มาเยือน</translation>
 <translation id="54609108002486618">มีการจัดการ</translation>
 <translation id="5733345267661125295">โปรดเลือกรหัสผ่านใหม่ตอนนี้</translation>
+<translation id="5743581760404859096">ตั๋ว Kerberos ของคุณกำลังจะหมดอายุ</translation>
 <translation id="5832805196449965646">เพิ่มบุคคล</translation>
 <translation id="5895138241574237353">ปิดแล้วเปิดอีกครั้ง</translation>
 <translation id="6058625436358447366">ป้อนรหัสผ่านเดิมและรหัสผ่านใหม่เพื่อเปลี่ยนรหัสผ่านให้เสร็จ</translation>
 <translation id="6106186594183574873">ป้อนรหัสผ่านเดิมเพื่อเปลี่ยนรหัสผ่านให้เสร็จ</translation>
 <translation id="6146993107019042706">ป้อนรหัสผ่านใหม่เพื่อเปลี่ยนรหัสผ่านให้เสร็จ</translation>
 <translation id="6574601967010742428">ผู้ดูแลระบบของอุปกรณ์อาจมีสิทธิ์ตรวจสอบกิจกรรมของคุณได้</translation>
+<translation id="7280705187789120111">ตั๋ว Kerberos กำลังจะหมดอายุ</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{รหัสผ่านปัจจุบันของคุณหมดอายุแล้ว}=1{รหัสผ่านปัจจุบันของคุณจะหมดอายุในไม่ถึง 1 วัน}other{รหัสผ่านปัจจุบันของคุณจะหมดอายุในไม่ถึง # วัน}}</translation>
 <translation id="7658239707568436148">ยกเลิก</translation>
 <translation id="7690294790491645610">ยืนยันรหัสผ่านใหม่</translation>
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb
index 99f1953..e7c41cf0 100644
--- a/chromeos/strings/chromeos_strings_tr.xtb
+++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Yakındaki cihazları keşfetmek için Bluetooth'u aç</translation>
 <translation id="2805756323405976993">Uygulamalar</translation>
 <translation id="2872961005593481000">Kapat</translation>
+<translation id="2912823482158781027">BİLETİ YENİLE</translation>
 <translation id="3511655281162215899">Lütfen hemen yeni bir şifre seçin</translation>
+<translation id="3562817605261346876">Lütfen <ph name="PRINCIPAL_NAME" /> için bileti yakında yenileyin</translation>
 <translation id="3838338534323494292">Yeni şifre</translation>
 <translation id="445059817448385655">Eski şifre</translation>
 <translation id="467510802200863975">Şifreler eşleşmiyor</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Misafir olarak Göz At</translation>
 <translation id="54609108002486618">Yönetilen</translation>
 <translation id="5733345267661125295">Lütfen şimdi yeni bir şifre seçin</translation>
+<translation id="5743581760404859096">Kerberos biletinizin süresi doluyor</translation>
 <translation id="5832805196449965646">Kişi Ekle</translation>
 <translation id="5895138241574237353">Yeniden başlat</translation>
-<translation id="6058625436358447366">Bitirmek için eski ve yeni şifrelerinizi girin</translation>
+<translation id="6058625436358447366">Bitirmek için eski ve yeni şifrenizi girin</translation>
 <translation id="6106186594183574873">Bitirmek için eski şifrenizi girin</translation>
 <translation id="6146993107019042706">Bitirmek için yeni şifrenizi girin</translation>
 <translation id="6574601967010742428">Cihaz yöneticisi, etkinliğinizi izleyebilir.</translation>
+<translation id="7280705187789120111">Kerberos biletinin süresi doluyor</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Mevcut şifrenizin süresi doldu!}=1{Mevcut şifrenizin süresi bir günden kısa bir süre içinde dolacak!}other{Mevcut şifrenizin süresi # günden kısa bir süre içinde dolacak}}</translation>
 <translation id="7658239707568436148">İptal</translation>
 <translation id="7690294790491645610">Yeni şifreyi doğrula</translation>
diff --git a/chromeos/strings/chromeos_strings_uk.xtb b/chromeos/strings/chromeos_strings_uk.xtb
index dad9f03..3410edf 100644
--- a/chromeos/strings/chromeos_strings_uk.xtb
+++ b/chromeos/strings/chromeos_strings_uk.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Щоб знайти пристрої поблизу, увімкніть Bluetooth</translation>
 <translation id="2805756323405976993">Додатки</translation>
 <translation id="2872961005593481000">Завершити роботу</translation>
+<translation id="2912823482158781027">ОНОВИТИ МАНДАТ</translation>
 <translation id="3511655281162215899">Негайно виберіть новий пароль</translation>
+<translation id="3562817605261346876">Якнайшвидше оновіть мандат для <ph name="PRINCIPAL_NAME" /></translation>
 <translation id="3838338534323494292">Новий пароль</translation>
 <translation id="445059817448385655">Старий пароль</translation>
 <translation id="467510802200863975">Паролі не збігаються</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Переглядати в режимі гостя</translation>
 <translation id="54609108002486618">Керований</translation>
 <translation id="5733345267661125295">Виберіть новий пароль</translation>
+<translation id="5743581760404859096">Термін дії вашого мандата Kerberos минає</translation>
 <translation id="5832805196449965646">Додати користувача</translation>
 <translation id="5895138241574237353">Перезапустити</translation>
 <translation id="6058625436358447366">Щоб завершити, введіть старий і новий паролі</translation>
 <translation id="6106186594183574873">Щоб завершити, введіть старий пароль</translation>
 <translation id="6146993107019042706">Щоб завершити, введіть новий пароль</translation>
 <translation id="6574601967010742428">Адміністратор пристрою може відстежувати вашу активність.</translation>
+<translation id="7280705187789120111">Термін дії мандата Kerberos минає</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Термін дії поточного пароля закінчився.}=1{Термін дії поточного пароля закінчиться менше ніж за один день.}one{Термін дії поточного пароля закінчиться менше ніж за # день.}few{Термін дії поточного пароля закінчиться менше ніж за # дні.}many{Термін дії поточного пароля закінчиться менше ніж за # днів.}other{Термін дії поточного пароля закінчиться менше ніж за # дня.}}</translation>
 <translation id="7658239707568436148">Скасувати</translation>
 <translation id="7690294790491645610">Підтвердьте новий пароль</translation>
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb
index 1c1de2a2..5c1cc4a 100644
--- a/chromeos/strings/chromeos_strings_vi.xtb
+++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">Bật Bluetooth để khám phá các thiết bị lân cận</translation>
 <translation id="2805756323405976993">Ứng dụng</translation>
 <translation id="2872961005593481000">Tắt</translation>
+<translation id="2912823482158781027">LÀM MỚI PHIẾU</translation>
 <translation id="3511655281162215899">Vui lòng chọn một mật khẩu mới ngay lập tức</translation>
+<translation id="3562817605261346876">Vui lòng làm mới phiếu cho <ph name="PRINCIPAL_NAME" /> ngay</translation>
 <translation id="3838338534323494292">Mật khẩu mới</translation>
 <translation id="445059817448385655">Mật khẩu cũ</translation>
 <translation id="467510802200863975">Mật khẩu không khớp</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">Duyệt với tư cách Khách</translation>
 <translation id="54609108002486618">Được quản lý</translation>
 <translation id="5733345267661125295">Vui lòng chọn một mật khẩu mới ngay bây giờ</translation>
+<translation id="5743581760404859096">Phiếu Kerberos sắp hết hạn</translation>
 <translation id="5832805196449965646">Thêm người</translation>
 <translation id="5895138241574237353">Khởi động lại</translation>
 <translation id="6058625436358447366">Để hoàn tất, hãy nhập cả mật khẩu cũ và mật khẩu mới của bạn</translation>
 <translation id="6106186594183574873">Để hoàn tất, hãy nhập mật khẩu cũ của bạn</translation>
 <translation id="6146993107019042706">Để hoàn tất, hãy nhập mật khẩu mới của bạn</translation>
 <translation id="6574601967010742428">Quản trị viên thiết bị có thể theo dõi hoạt động của bạn.</translation>
+<translation id="7280705187789120111">Phiếu Kerberos sắp hết hạn</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{Mật khẩu hiện tại của bạn đã hết hạn!}=1{Còn chưa đến 1 ngày nữa là mật khẩu hiện tại của bạn sẽ hết hạn!}other{Còn chưa đến # ngày nữa là mật khẩu hiện tại của bạn sẽ hết hạn!}}</translation>
 <translation id="7658239707568436148">Hủy</translation>
 <translation id="7690294790491645610">Xác nhận mật khẩu mới</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-CN.xtb b/chromeos/strings/chromeos_strings_zh-CN.xtb
index 35a14f8..6db5de6 100644
--- a/chromeos/strings/chromeos_strings_zh-CN.xtb
+++ b/chromeos/strings/chromeos_strings_zh-CN.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">开启蓝牙以发现附近的设备</translation>
 <translation id="2805756323405976993">应用</translation>
 <translation id="2872961005593481000">关机</translation>
+<translation id="2912823482158781027">刷新凭据</translation>
 <translation id="3511655281162215899">请立即选择新密码</translation>
+<translation id="3562817605261346876">请尽快刷新 <ph name="PRINCIPAL_NAME" /> 的凭据</translation>
 <translation id="3838338534323494292">新密码</translation>
 <translation id="445059817448385655">旧密码</translation>
 <translation id="467510802200863975">输入的两个密码不相同</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">以访客身份浏览</translation>
 <translation id="54609108002486618">托管</translation>
 <translation id="5733345267661125295">请尽快选择新密码</translation>
+<translation id="5743581760404859096">您的 Kerberos 凭据即将过期</translation>
 <translation id="5832805196449965646">添加用户</translation>
 <translation id="5895138241574237353">重新启动</translation>
 <translation id="6058625436358447366">要完成更改,请输入您的旧密码和新密码</translation>
 <translation id="6106186594183574873">要完成更改,请输入您的旧密码</translation>
 <translation id="6146993107019042706">要完成更改,请输入您的新密码</translation>
 <translation id="6574601967010742428">设备管理员或许能监控您的活动。</translation>
+<translation id="7280705187789120111">Kerberos 凭据即将过期</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{您当前的密码已过期!}=1{您当前的密码将在 1 天内过期!}other{您当前的密码将在 # 天内过期!}}</translation>
 <translation id="7658239707568436148">取消</translation>
 <translation id="7690294790491645610">再次输入新密码</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb
index 99fd20b3..51445715 100644
--- a/chromeos/strings/chromeos_strings_zh-TW.xtb
+++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -9,7 +9,9 @@
 <translation id="2338501278241028356">開啟藍牙即可偵測附近的裝置</translation>
 <translation id="2805756323405976993">應用程式</translation>
 <translation id="2872961005593481000">關閉</translation>
+<translation id="2912823482158781027">更新票證</translation>
 <translation id="3511655281162215899">請立即選擇新的密碼</translation>
+<translation id="3562817605261346876">請儘快更新 <ph name="PRINCIPAL_NAME" /> 的票證</translation>
 <translation id="3838338534323494292">新密碼</translation>
 <translation id="445059817448385655">舊密碼</translation>
 <translation id="467510802200863975">密碼不相符</translation>
@@ -22,12 +24,14 @@
 <translation id="5457599981699367932">以訪客身分瀏覽</translation>
 <translation id="54609108002486618">受管理</translation>
 <translation id="5733345267661125295">請立即選擇新的密碼</translation>
+<translation id="5743581760404859096">你的 Kerberos 票證即將到期</translation>
 <translation id="5832805196449965646">新增使用者</translation>
 <translation id="5895138241574237353">重新啟動</translation>
 <translation id="6058625436358447366">如要完成變更,請輸入你的舊密碼和新密碼</translation>
 <translation id="6106186594183574873">如要完成變更,請輸入你的舊密碼</translation>
 <translation id="6146993107019042706">如要完成變更,請輸入你的新密碼</translation>
 <translation id="6574601967010742428">裝置管理員或許可監控你的活動。</translation>
+<translation id="7280705187789120111">Kerberos 票證即將到期</translation>
 <translation id="7505377169174526985">{NUM_DAYS,plural, =0{目前的密碼已過期!}=1{目前的密碼將於 1 天內過期!}other{目前的密碼將於 # 天內過期!}}</translation>
 <translation id="7658239707568436148">取消</translation>
 <translation id="7690294790491645610">確認新密碼</translation>
diff --git a/components/arc/arc_util.h b/components/arc/arc_util.h
index bea5bf3..7660757 100644
--- a/components/arc/arc_util.h
+++ b/components/arc/arc_util.h
@@ -26,6 +26,9 @@
 
 namespace arc {
 
+// Name of the crosvm instance when ARCVM is enabled.
+constexpr char kArcVmName[] = "arcvm";
+
 // Returns true if ARC is installed and the current device is officially
 // supported to run ARC.
 // Note that, to run ARC practically, it is necessary to meet more conditions,
diff --git a/components/arc/audio/arc_audio_bridge.cc b/components/arc/audio/arc_audio_bridge.cc
index 9d8e34ba..fc7a4656 100644
--- a/components/arc/audio/arc_audio_bridge.cc
+++ b/components/arc/audio/arc_audio_bridge.cc
@@ -90,7 +90,8 @@
       (output_device &&
        (output_device->type ==
         chromeos::AudioDeviceType::AUDIO_TYPE_HEADPHONE ||
-        output_device->type == chromeos::AudioDeviceType::AUDIO_TYPE_USB));
+        output_device->type == chromeos::AudioDeviceType::AUDIO_TYPE_USB ||
+        output_device->type == chromeos::AudioDeviceType::AUDIO_TYPE_LINEOUT));
 
   uint64_t input_id = cras_audio_handler_->GetPrimaryActiveInputNode();
   const chromeos::AudioDevice* input_device =
diff --git a/components/arc/session/arc_data_remover.cc b/components/arc/session/arc_data_remover.cc
index 13a7fc6c..c6e991147 100644
--- a/components/arc/session/arc_data_remover.cc
+++ b/components/arc/session/arc_data_remover.cc
@@ -18,8 +18,6 @@
 namespace arc {
 namespace {
 
-constexpr char kArcVmName[] = "arcvm";
-
 chromeos::ConciergeClient* GetConciergeClient() {
   return chromeos::DBusThreadManager::Get()->GetConciergeClient();
 }
diff --git a/components/arc/session/arc_vm_client_adapter.cc b/components/arc/session/arc_vm_client_adapter.cc
index 12047d0e..2cd1ba7 100644
--- a/components/arc/session/arc_vm_client_adapter.cc
+++ b/components/arc/session/arc_vm_client_adapter.cc
@@ -19,12 +19,12 @@
 #include "chromeos/dbus/concierge_client.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/debug_daemon_client.h"
+#include "components/arc/arc_util.h"
 
 namespace arc {
 
 namespace {
 
-constexpr char kArcVmName[] = "arcvm";
 constexpr char kHomeDirectory[] = "/home";
 constexpr char kKernelPath[] = "/opt/google/vms/android/vmlinux";
 constexpr char kRootFsPath[] = "/opt/google/vms/android/system.raw.img";
diff --git a/components/autofill/core/browser/data_model/autofill_profile_comparator.cc b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc
index ae4f0e9..9b41b0b 100644
--- a/components/autofill/core/browser/data_model/autofill_profile_comparator.cc
+++ b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc
@@ -246,6 +246,17 @@
   return false;
 }
 
+bool AutofillProfileComparator::HasOnlySkippableCharacters(
+    base::StringPiece16 text) const {
+  if (text.empty()) {
+    return true;
+  }
+
+  return NormalizingIterator(text,
+                             AutofillProfileComparator::DISCARD_WHITESPACE)
+      .End();
+}
+
 base::string16 AutofillProfileComparator::NormalizeForComparison(
     base::StringPiece16 text,
     AutofillProfileComparator::WhitespaceSpec whitespace_spec) const {
@@ -337,23 +348,19 @@
   const base::string16& full_name_1 = p1.GetInfo(kFullName, app_locale_);
   const base::string16& full_name_2 = p2.GetInfo(kFullName, app_locale_);
 
-  const base::string16& normalized_full_name_1 =
-      NormalizeForComparison(full_name_1);
-  const base::string16& normalized_full_name_2 =
-      NormalizeForComparison(full_name_2);
-
   const base::string16* best_name = nullptr;
-  if (normalized_full_name_1.empty()) {
+  if (HasOnlySkippableCharacters(full_name_1)) {
     // p1 has no name, so use the name from p2.
     best_name = &full_name_2;
-  } else if (normalized_full_name_2.empty()) {
+  } else if (HasOnlySkippableCharacters(full_name_2)) {
     // p2 has no name, so use the name from p1.
     best_name = &full_name_1;
   } else if (data_util::IsCJKName(full_name_1) &&
              data_util::IsCJKName(full_name_2)) {
     // Use a separate logic for CJK names.
     return MergeCJKNames(p1, p2, name_info);
-  } else if (IsNameVariantOf(normalized_full_name_1, normalized_full_name_2)) {
+  } else if (IsNameVariantOf(NormalizeForComparison(full_name_1),
+                             NormalizeForComparison(full_name_2))) {
     // full_name_2 is a variant of full_name_1.
     best_name = &full_name_1;
   } else {
@@ -540,12 +547,16 @@
   DCHECK(HaveMergeablePhoneNumbers(p1, p2))
       << "Phone numbers are not mergeable: '" << s1 << "' vs '" << s2 << "'";
 
-  if (s1.empty()) {
+  if (HasOnlySkippableCharacters(s1) && HasOnlySkippableCharacters(s2)) {
+    phone_number->SetRawInfo(kWholePhoneNumber, base::string16());
+  }
+
+  if (HasOnlySkippableCharacters(s1)) {
     phone_number->SetRawInfo(kWholePhoneNumber, s2);
     return true;
   }
 
-  if (s2.empty() || s1 == s2) {
+  if (HasOnlySkippableCharacters(s2) || s1 == s2) {
     phone_number->SetRawInfo(kWholePhoneNumber, s1);
     return true;
   }
@@ -617,7 +628,6 @@
   }
 
   phone_number->SetRawInfo(kWholePhoneNumber, UTF8ToUTF16(new_number));
-
   return true;
 }
 
@@ -906,33 +916,21 @@
 bool AutofillProfileComparator::HaveMergeableNames(
     const AutofillProfile& p1,
     const AutofillProfile& p2) const {
-  base::string16 full_name_1 =
-      NormalizeForComparison(p1.GetInfo(NAME_FULL, app_locale_));
-  base::string16 full_name_2 =
-      NormalizeForComparison(p2.GetInfo(NAME_FULL, app_locale_));
+  base::string16 full_name_1 = p1.GetInfo(NAME_FULL, app_locale_);
+  base::string16 full_name_2 = p2.GetInfo(NAME_FULL, app_locale_);
 
-  if (full_name_1.empty() || full_name_2.empty() ||
-      full_name_1 == full_name_2) {
+  if (HasOnlySkippableCharacters(full_name_1) ||
+      HasOnlySkippableCharacters(full_name_2) ||
+      Compare(full_name_1, full_name_2)) {
     return true;
   }
 
-  if (data_util::IsCJKName(full_name_1) && data_util::IsCJKName(full_name_2)) {
-    return HaveMergeableCJKNames(p1, p2);
-  }
+  base::string16 canon_full_name_1 = NormalizeForComparison(full_name_1);
+  base::string16 canon_full_name_2 = NormalizeForComparison(full_name_2);
 
   // Is it reasonable to merge the names from p1 and p2.
-  return IsNameVariantOf(full_name_1, full_name_2) ||
-         IsNameVariantOf(full_name_2, full_name_1);
-}
-
-bool AutofillProfileComparator::HaveMergeableCJKNames(
-    const AutofillProfile& p1,
-    const AutofillProfile& p2) const {
-  base::string16 name_1 = NormalizeForComparison(
-      p1.GetInfo(NAME_FULL, app_locale_), DISCARD_WHITESPACE);
-  base::string16 name_2 = NormalizeForComparison(
-      p2.GetInfo(NAME_FULL, app_locale_), DISCARD_WHITESPACE);
-  return name_1 == name_2;
+  return IsNameVariantOf(canon_full_name_1, canon_full_name_2) ||
+         IsNameVariantOf(canon_full_name_2, canon_full_name_1);
 }
 
 bool AutofillProfileComparator::HaveMergeableEmailAddresses(
@@ -947,12 +945,13 @@
 bool AutofillProfileComparator::HaveMergeableCompanyNames(
     const AutofillProfile& p1,
     const AutofillProfile& p2) const {
-  const base::string16& company_name_1 =
-      NormalizeForComparison(p1.GetInfo(COMPANY_NAME, app_locale_));
-  const base::string16& company_name_2 =
-      NormalizeForComparison(p2.GetInfo(COMPANY_NAME, app_locale_));
-  return company_name_1.empty() || company_name_2.empty() ||
-         CompareTokens(company_name_1, company_name_2) != DIFFERENT_TOKENS;
+  const base::string16& company_name_1 = p1.GetInfo(COMPANY_NAME, app_locale_);
+  const base::string16& company_name_2 = p2.GetInfo(COMPANY_NAME, app_locale_);
+  return HasOnlySkippableCharacters(company_name_1) ||
+         HasOnlySkippableCharacters(company_name_2) ||
+         CompareTokens(NormalizeForComparison(company_name_1),
+                       NormalizeForComparison(company_name_2)) !=
+             DIFFERENT_TOKENS;
 }
 
 bool AutofillProfileComparator::HaveMergeablePhoneNumbers(
@@ -964,8 +963,8 @@
   const base::string16& raw_phone_2 = p2.GetRawInfo(PHONE_HOME_WHOLE_NUMBER);
 
   // Are the two phone numbers trivially mergeable?
-  if (raw_phone_1.empty() || raw_phone_2.empty() ||
-      raw_phone_1 == raw_phone_2) {
+  if (HasOnlySkippableCharacters(raw_phone_1) ||
+      HasOnlySkippableCharacters(raw_phone_2) || raw_phone_1 == raw_phone_2) {
     return true;
   }
 
@@ -973,13 +972,11 @@
   // SHORT_NSN_MATCH and just call that instead of accessing the underlying
   // utility library directly?
 
-  // The phone number util library needs the numbers in utf8.
-  const std::string phone_1 = base::UTF16ToUTF8(raw_phone_1);
-  const std::string phone_2 = base::UTF16ToUTF8(raw_phone_2);
-
   // Parse and compare the phone numbers.
+  // The phone number util library needs the numbers in utf8.
   PhoneNumberUtil* phone_util = PhoneNumberUtil::GetInstance();
-  switch (phone_util->IsNumberMatchWithTwoStrings(phone_1, phone_2)) {
+  switch (phone_util->IsNumberMatchWithTwoStrings(
+      base::UTF16ToUTF8(raw_phone_1), base::UTF16ToUTF8(raw_phone_2))) {
     case PhoneNumberUtil::SHORT_NSN_MATCH:
     case PhoneNumberUtil::NSN_MATCH:
     case PhoneNumberUtil::EXACT_MATCH:
diff --git a/components/autofill/core/browser/data_model/autofill_profile_comparator.h b/components/autofill/core/browser/data_model/autofill_profile_comparator.h
index 178a3dd..127c828743 100644
--- a/components/autofill/core/browser/data_model/autofill_profile_comparator.h
+++ b/components/autofill/core/browser/data_model/autofill_profile_comparator.h
@@ -44,6 +44,10 @@
                base::StringPiece16 text2,
                WhitespaceSpec whitespace_spec = DISCARD_WHITESPACE) const;
 
+  // Returns true if |text| is empty or contains only skippable characters. A
+  // character is skippable if it is punctuation or white space.
+  bool HasOnlySkippableCharacters(base::StringPiece16 text) const;
+
   // Returns a copy of |text| with uppercase converted to lowercase and
   // diacritics removed.
   //
@@ -181,14 +185,6 @@
   bool HaveMergeableNames(const AutofillProfile& p1,
                           const AutofillProfile& p2) const;
 
-  // Returns true if |p1| and |p2| have Chinese, Japanese, or Korean names that
-  // are equivalent for the purpose of merging profiles.
-  //
-  // This method is used internally by |HaveMergeableNames()| when CJK names are
-  // detected.
-  bool HaveMergeableCJKNames(const AutofillProfile& p1,
-                             const AutofillProfile& p2) const;
-
   // Returns true if |p1| and |p2| have email addresses which are equivalent for
   // the purposes of merging the two profiles. This means one of the email
   // addresses is empty, or the email addresses are the same (modulo case).
diff --git a/components/autofill/core/browser/data_model/form_group.cc b/components/autofill/core/browser/data_model/form_group.cc
index e6f500b..71d0293 100644
--- a/components/autofill/core/browser/data_model/form_group.cc
+++ b/components/autofill/core/browser/data_model/form_group.cc
@@ -20,18 +20,18 @@
   }
 
   AutofillProfileComparator comparator(app_locale);
-  base::string16 canonicalized_text = comparator.NormalizeForComparison(text);
-
-  if (canonicalized_text.empty())
+  if (comparator.HasOnlySkippableCharacters(text)) {
     return;
+  }
 
+  base::string16 canonicalized_text = comparator.NormalizeForComparison(text);
   ServerFieldTypeSet types;
   GetSupportedTypes(&types);
   for (const auto& type : types) {
-    base::string16 candidate_text = comparator.NormalizeForComparison(
-        GetInfo(AutofillType(type), app_locale));
-    if (canonicalized_text == candidate_text)
+    if (comparator.Compare(canonicalized_text,
+                           GetInfo(AutofillType(type), app_locale))) {
       matching_types->insert(type);
+    }
   }
 }
 
diff --git a/components/autofill/core/browser/data_model/form_group.h b/components/autofill/core/browser/data_model/form_group.h
index 290d7bb..d46c9bc 100644
--- a/components/autofill/core/browser/data_model/form_group.h
+++ b/components/autofill/core/browser/data_model/form_group.h
@@ -19,21 +19,21 @@
  public:
   virtual ~FormGroup() {}
 
-  // Used to determine the type of a field based on the text that a user enters
-  // into the field, interpreted in the given |app_locale| if appropriate.  The
-  // field types can then be reported back to the server.  This method is
-  // additive on |matching_types|.
+  // Used to determine the type of a field based on the |text| that a user
+  // enters into the field, interpreted in the given |app_locale| if
+  // appropriate. The field types can then be reported back to the server.  This
+  // method is additive on |matching_types|.
   virtual void GetMatchingTypes(const base::string16& text,
                                 const std::string& app_locale,
                                 ServerFieldTypeSet* matching_types) const;
 
   // Returns a set of server field types for which this FormGroup has non-empty
-  // data.  This method is additive on |non_empty_types|.
+  // data. This method is additive on |non_empty_types|.
   virtual void GetNonEmptyTypes(const std::string& app_locale,
                                 ServerFieldTypeSet* non_empty_types) const;
 
   // Returns the string associated with |type|, without canonicalizing the
-  // returned value.  For user-visible strings, use GetInfo() instead.
+  // returned value. For user-visible strings, use GetInfo() instead.
   virtual base::string16 GetRawInfo(ServerFieldType type) const = 0;
 
   // Sets this FormGroup object's data for |type| to |value|, without
@@ -72,7 +72,7 @@
   friend class AutofillProfile;
 
   // Returns a set of server field types for which this FormGroup can store
-  // data.  This method is additive on |supported_types|.
+  // data. This method is additive on |supported_types|.
   virtual void GetSupportedTypes(ServerFieldTypeSet* supported_types) const = 0;
 
   // Returns the string that should be auto-filled into a text field given the
diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmarks/browser/bookmark_codec.cc
index b3357e4..169b37b3 100644
--- a/components/bookmarks/browser/bookmark_codec.cc
+++ b/components/bookmarks/browser/bookmark_codec.cc
@@ -251,12 +251,8 @@
     base::Base64Decode(sync_metadata_str_base64, sync_metadata_str);
   }
 
-  // Need to reset the type as decoding resets the type to FOLDER. Similarly
-  // we need to reset the title as the title is persisted and restored from
+  // Need to reset the title as the title is persisted and restored from
   // the file.
-  bb_node->set_type(BookmarkNode::BOOKMARK_BAR);
-  other_folder_node->set_type(BookmarkNode::OTHER_NODE);
-  mobile_folder_node->set_type(BookmarkNode::MOBILE);
   bb_node->SetTitle(l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_FOLDER_NAME));
   other_folder_node->SetTitle(
       l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME));
@@ -340,7 +336,6 @@
 
     if (parent)
       parent->Add(base::WrapUnique(node));
-    node->set_type(BookmarkNode::URL);
     UpdateChecksumWithUrlNode(id_string, title, url_string);
   } else {
     std::string last_modified_date;
@@ -361,7 +356,6 @@
       node->set_id(id);
     }
 
-    node->set_type(BookmarkNode::FOLDER);
     int64_t internal_time;
     base::StringToInt64(last_modified_date, &internal_time);
     node->set_date_folder_modified(Time::FromInternalValue(internal_time));
diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc
index b6d2fb8..c1412563 100644
--- a/components/bookmarks/browser/bookmark_model.cc
+++ b/components/bookmarks/browser/bookmark_model.cc
@@ -571,7 +571,6 @@
   new_node->set_date_folder_modified(Time::Now());
   // Folders shouldn't have line breaks in their titles.
   new_node->SetTitle(title);
-  new_node->set_type(BookmarkNode::FOLDER);
   if (meta_info)
     new_node->SetMetaInfoMap(*meta_info);
 
@@ -606,7 +605,6 @@
       std::make_unique<BookmarkNode>(generate_next_node_id(), url);
   new_node->SetTitle(title);
   new_node->set_date_added(creation_time);
-  new_node->set_type(BookmarkNode::URL);
   if (meta_info)
     new_node->SetMetaInfoMap(*meta_info);
 
diff --git a/components/bookmarks/browser/bookmark_model_unittest.cc b/components/bookmarks/browser/bookmark_model_unittest.cc
index b6dbf0c..5b597ae 100644
--- a/components/bookmarks/browser/bookmark_model_unittest.cc
+++ b/components/bookmarks/browser/bookmark_model_unittest.cc
@@ -431,7 +431,8 @@
   BookmarkPermanentNode* ReloadModelWithExtraNode() {
     model_->RemoveObserver(this);
 
-    auto owned_extra_node = std::make_unique<BookmarkPermanentNode>(100);
+    auto owned_extra_node =
+        std::make_unique<BookmarkPermanentNode>(100, BookmarkNode::FOLDER);
     BookmarkPermanentNode* extra_node = owned_extra_node.get();
 
     std::unique_ptr<TestBookmarkClient> client(new TestBookmarkClient);
diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmarks/browser/bookmark_node.cc
index 3a9b99a5..4e1ab88 100644
--- a/components/bookmarks/browser/bookmark_node.cc
+++ b/components/bookmarks/browser/bookmark_node.cc
@@ -29,10 +29,11 @@
 // static
 const int64_t BookmarkNode::kInvalidSyncTransactionVersion = -1;
 
-BookmarkNode::BookmarkNode(const GURL& url) : BookmarkNode(0, url, false) {}
+BookmarkNode::BookmarkNode(const GURL& url)
+    : BookmarkNode(0, url, url.is_empty() ? FOLDER : URL, false) {}
 
 BookmarkNode::BookmarkNode(int64_t id, const GURL& url)
-    : BookmarkNode(id, url, false) {}
+    : BookmarkNode(id, url, url.is_empty() ? FOLDER : URL, false) {}
 
 BookmarkNode::~BookmarkNode() = default;
 
@@ -107,13 +108,18 @@
   return url_;
 }
 
-BookmarkNode::BookmarkNode(int64_t id, const GURL& url, bool is_permanent_node)
+BookmarkNode::BookmarkNode(int64_t id,
+                           const GURL& url,
+                           Type type,
+                           bool is_permanent_node)
     : id_(id),
       url_(url),
-      type_(url_.is_empty() ? FOLDER : URL),
+      type_(type),
       date_added_(base::Time::Now()),
       favicon_type_(favicon_base::IconType::kInvalid),
-      is_permanent_node_(is_permanent_node) {}
+      is_permanent_node_(is_permanent_node) {
+  DCHECK((type == URL) != url.is_empty());
+}
 
 void BookmarkNode::InvalidateFavicon() {
   icon_url_.reset();
@@ -124,8 +130,10 @@
 
 // BookmarkPermanentNode -------------------------------------------------------
 
-BookmarkPermanentNode::BookmarkPermanentNode(int64_t id)
-    : BookmarkNode(id, GURL(), true) {}
+BookmarkPermanentNode::BookmarkPermanentNode(int64_t id, Type type)
+    : BookmarkNode(id, GURL(), type, true) {
+  DCHECK(type != URL);
+}
 
 BookmarkPermanentNode::~BookmarkPermanentNode() = default;
 
diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks/browser/bookmark_node.h
index e6ce83ca..9dc6dfe2 100644
--- a/components/bookmarks/browser/bookmark_node.h
+++ b/components/bookmarks/browser/bookmark_node.h
@@ -76,7 +76,6 @@
   const GURL* icon_url() const { return icon_url_ ? icon_url_.get() : nullptr; }
 
   Type type() const { return type_; }
-  void set_type(Type type) { type_ = type; }
 
   // Returns the time the node was added.
   const base::Time& date_added() const { return date_added_; }
@@ -128,7 +127,7 @@
   // HistoryContentsProvider.
 
  protected:
-  BookmarkNode(int64_t id, const GURL& url, bool is_permanent_node);
+  BookmarkNode(int64_t id, const GURL& url, Type type, bool is_permanent_node);
 
  private:
   friend class BookmarkModel;
@@ -168,7 +167,7 @@
   GURL url_;
 
   // The type of this node. See enum above.
-  Type type_;
+  const Type type_;
 
   // Date of when this node was created.
   base::Time date_added_;
@@ -210,7 +209,7 @@
 // Node used for the permanent folders (excluding the root).
 class BookmarkPermanentNode : public BookmarkNode {
  public:
-  explicit BookmarkPermanentNode(int64_t id);
+  BookmarkPermanentNode(int64_t id, Type type);
   ~BookmarkPermanentNode() override;
 
   // WARNING: this code is used for other projects. Contact noyau@ for details.
diff --git a/components/bookmarks/browser/bookmark_pasteboard_helper_mac.mm b/components/bookmarks/browser/bookmark_pasteboard_helper_mac.mm
index dffe0e7..1f69e85 100644
--- a/components/bookmarks/browser/bookmark_pasteboard_helper_mac.mm
+++ b/components/bookmarks/browser/bookmark_pasteboard_helper_mac.mm
@@ -77,7 +77,23 @@
     NSArray* input,
     std::vector<BookmarkNodeData::Element>* elements) {
   for (NSDictionary* bookmark_dict in input) {
-    auto new_node = std::make_unique<BookmarkNode>(GURL());
+    NSString* type =
+        base::mac::ObjCCast<NSString>(bookmark_dict[kWebBookmarkTypeKey]);
+    if (!type)
+      continue;
+
+    BOOL is_folder = [type isEqualToString:kWebBookmarkTypeList];
+
+    GURL url = GURL();
+    if (!is_folder) {
+      NSString* url_string =
+          base::mac::ObjCCast<NSString>(bookmark_dict[kURLStringKey]);
+      if (!url_string)
+        continue;
+      url = GURL(base::SysNSStringToUTF8(url_string));
+    }
+
+    auto new_node = std::make_unique<BookmarkNode>(url);
 
     NSNumber* node_id =
         base::mac::ObjCCast<NSNumber>(bookmark_dict[kChromiumBookmarkIdKey]);
@@ -92,23 +108,6 @@
     NSString* title = base::mac::ObjCCast<NSString>(bookmark_dict[kTitleKey]);
     new_node->SetTitle(base::SysNSStringToUTF16(title));
 
-    NSString* type =
-        base::mac::ObjCCast<NSString>(bookmark_dict[kWebBookmarkTypeKey]);
-    if (!type)
-      continue;
-
-    BOOL is_folder = [type isEqualToString:kWebBookmarkTypeList];
-    if (is_folder) {
-      new_node->set_type(BookmarkNode::FOLDER);
-    } else {
-      new_node->set_type(BookmarkNode::URL);
-      NSString* url_string =
-          base::mac::ObjCCast<NSString>(bookmark_dict[kURLStringKey]);
-      if (!url_string)
-        continue;
-      new_node->set_url(GURL(base::SysNSStringToUTF8(url_string)));
-    }
-
     BookmarkNodeData::Element e = BookmarkNodeData::Element(new_node.get());
     // BookmarkNodeData::Element::ReadFromPickle explicitly zeroes out the two
     // date fields so do so too. TODO(avi): Refactor this code to be a member
diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookmarks/browser/bookmark_storage.cc
index a6f7cdc0..cd9f0db8 100644
--- a/components/bookmarks/browser/bookmark_storage.cc
+++ b/components/bookmarks/browser/bookmark_storage.cc
@@ -242,8 +242,7 @@
   DCHECK(type == BookmarkNode::BOOKMARK_BAR ||
          type == BookmarkNode::OTHER_NODE || type == BookmarkNode::MOBILE);
   std::unique_ptr<BookmarkPermanentNode> node =
-      std::make_unique<BookmarkPermanentNode>(max_id_++);
-  node->set_type(type);
+      std::make_unique<BookmarkPermanentNode>(max_id_++, type);
   node->set_visible(client->IsPermanentNodeVisible(node.get()));
 
   int title_id;
diff --git a/components/bookmarks/browser/bookmark_utils_unittest.cc b/components/bookmarks/browser/bookmark_utils_unittest.cc
index e48049a..97cde6b 100644
--- a/components/bookmarks/browser/bookmark_utils_unittest.cc
+++ b/components/bookmarks/browser/bookmark_utils_unittest.cc
@@ -422,7 +422,8 @@
 TEST_F(BookmarkUtilsTest, PasteNonEditableNodes) {
   // Load a model with an extra node that is not editable.
   std::unique_ptr<TestBookmarkClient> client(new TestBookmarkClient());
-  auto owned_extra_node = std::make_unique<BookmarkPermanentNode>(100);
+  auto owned_extra_node =
+      std::make_unique<BookmarkPermanentNode>(100, BookmarkNode::FOLDER);
   BookmarkPermanentNode* extra_node = owned_extra_node.get();
   client->SetExtraNodeToLoad(std::move(owned_extra_node));
 
@@ -572,7 +573,8 @@
 TEST_F(BookmarkUtilsTest, RemoveAllBookmarks) {
   // Load a model with an extra node that is not editable.
   std::unique_ptr<TestBookmarkClient> client(new TestBookmarkClient());
-  auto owned_extra_node = std::make_unique<BookmarkPermanentNode>(100);
+  auto owned_extra_node =
+      std::make_unique<BookmarkPermanentNode>(100, BookmarkNode::FOLDER);
   BookmarkPermanentNode* extra_node = owned_extra_node.get();
   client->SetExtraNodeToLoad(std::move(owned_extra_node));
 
diff --git a/components/bookmarks/managed/managed_bookmark_service.cc b/components/bookmarks/managed/managed_bookmark_service.cc
index 1e0a27e..5aaeecb 100644
--- a/components/bookmarks/managed/managed_bookmark_service.cc
+++ b/components/bookmarks/managed/managed_bookmark_service.cc
@@ -100,7 +100,8 @@
   // Create a BookmarkPermanentNode with a temporary id of 0. It will be
   // populated and assigned a proper id in the LoadExtraNode callback. Until
   // then, it is owned by the returned closure.
-  std::unique_ptr<BookmarkPermanentNode> managed(new BookmarkPermanentNode(0));
+  std::unique_ptr<BookmarkPermanentNode> managed(
+      new BookmarkPermanentNode(0, BookmarkNode::FOLDER));
 
   managed_node_ = managed.get();
 
diff --git a/components/bookmarks/managed/managed_bookmarks_tracker.cc b/components/bookmarks/managed/managed_bookmarks_tracker.cc
index 3e744d6..8381a20 100644
--- a/components/bookmarks/managed/managed_bookmarks_tracker.cc
+++ b/components/bookmarks/managed/managed_bookmarks_tracker.cc
@@ -62,11 +62,9 @@
         folder->Add(std::make_unique<BookmarkNode>(next_node_id++, url));
     child->SetTitle(title);
     if (children) {
-      child->set_type(BookmarkNode::FOLDER);
       child->set_date_folder_modified(base::Time::Now());
       next_node_id = LoadInitial(child, children, next_node_id);
     } else {
-      child->set_type(BookmarkNode::URL);
       child->set_date_added(base::Time::Now());
     }
   }
diff --git a/components/bookmarks/managed/managed_bookmarks_tracker_unittest.cc b/components/bookmarks/managed/managed_bookmarks_tracker_unittest.cc
index 6c0627d..b8899f88 100644
--- a/components/bookmarks/managed/managed_bookmarks_tracker_unittest.cc
+++ b/components/bookmarks/managed/managed_bookmarks_tracker_unittest.cc
@@ -54,7 +54,8 @@
 
   void CreateModel() {
     // Simulate the creation of the managed node by the BookmarkClient.
-    auto owned_managed_node = std::make_unique<BookmarkPermanentNode>(100);
+    auto owned_managed_node =
+        std::make_unique<BookmarkPermanentNode>(100, BookmarkNode::FOLDER);
     BookmarkPermanentNode* managed_node = owned_managed_node.get();
     ManagedBookmarksTracker::LoadInitial(
         managed_node, prefs_.GetList(prefs::kManagedBookmarks), 101);
diff --git a/components/cronet/android/BUILD.gn b/components/cronet/android/BUILD.gn
index 7299250..449966c 100644
--- a/components/cronet/android/BUILD.gn
+++ b/components/cronet/android/BUILD.gn
@@ -337,7 +337,11 @@
 
 # cronet_impl_fake_base_java.jar - Fake implementation of Cronet.
 android_library("cronet_impl_fake_base_java") {
-  java_files = [ "fake/java/org/chromium/net/test/FakeUrlResponse.java" ]
+  java_files = [
+    "fake/java/org/chromium/net/test/FakeUrlResponse.java",
+    "fake/java/org/chromium/net/test/ResponseMatcher.java",
+    "fake/java/org/chromium/net/test/UrlResponseMatcher.java",
+  ]
 
   deps = [
     ":cronet_api_java",
@@ -348,8 +352,10 @@
 # cronet_fake_javatests.jar - Java tests for the fake implementation of Cronet.
 android_library("cronet_fake_javatests") {
   testonly = true
-  java_files =
-      [ "fake/javatests/org/chromium/net/test/FakeUrlResponseTest.java" ]
+  java_files = [
+    "fake/javatests/org/chromium/net/test/FakeUrlResponseTest.java",
+    "fake/javatests/org/chromium/net/test/UrlResponseMatcherTest.java",
+  ]
 
   deps = [
     ":cronet_api_java",
@@ -468,12 +474,15 @@
   # Cronet jars will include this, so don't duplicate.
   generate_buildconfig_java = false
 
-  proguard_enabled = true
-  proguard_configs = [
-    "$target_gen_dir/cronet_impl_native_proguard.cfg",
-    "cronet_impl_common_proguard.cfg",
-    "//base/android/proguard/chromium_apk.flags",
-  ]
+  enable_multidex = false
+  if (!is_java_debug) {
+    proguard_enabled = true
+    proguard_configs = [
+      "$target_gen_dir/cronet_impl_native_proguard.cfg",
+      "cronet_impl_common_proguard.cfg",
+      "//base/android/proguard/chromium_apk.flags",
+    ]
+  }
 }
 
 android_resource_sizes_test("resource_sizes_cronet_sample_apk") {
@@ -737,8 +746,11 @@
       "//third_party/junit",
     ]
 
-    proguard_enabled = true
-    proguard_configs = [ "sample/javatests/proguard.cfg" ]
+    enable_multidex = false
+    if (!is_java_debug) {
+      proguard_enabled = true
+      proguard_configs = [ "sample/javatests/proguard.cfg" ]
+    }
   }
 
   generate_jni("cronet_tests_jni_headers") {
@@ -967,14 +979,17 @@
       "//net:test_support",
     ]
 
-    proguard_enabled = true
+    enable_multidex = false
+    if (!is_java_debug) {
+      proguard_enabled = true
 
-    proguard_configs = [
-      "$target_gen_dir/cronet_impl_native_proguard.cfg",
-      "cronet_impl_common_proguard.cfg",
-      "cronet_impl_platform_proguard.cfg",
-      "test/proguard.cfg",
-    ]
+      proguard_configs = [
+        "$target_gen_dir/cronet_impl_native_proguard.cfg",
+        "cronet_impl_common_proguard.cfg",
+        "cronet_impl_platform_proguard.cfg",
+        "test/proguard.cfg",
+      ]
+    }
   }
 
   android_resources("cronet_smoketests_platform_only_apk_resources") {
@@ -1007,13 +1022,16 @@
       "//third_party/netty4:netty_all_java",
     ]
 
-    proguard_enabled = true
+    enable_multidex = false
+    if (!is_java_debug) {
+      proguard_enabled = true
 
-    proguard_configs = [
-      "cronet_impl_common_proguard.cfg",
-      "cronet_impl_platform_proguard.cfg",
-      "test/proguard.cfg",
-    ]
+      proguard_configs = [
+        "cronet_impl_common_proguard.cfg",
+        "cronet_impl_platform_proguard.cfg",
+        "test/proguard.cfg",
+      ]
+    }
   }
 
   instrumentation_test_apk(
@@ -1038,13 +1056,16 @@
       "//third_party/netty4:netty_all_java",
     ]
 
-    proguard_enabled = true
-    proguard_configs = [
-      "$target_gen_dir/cronet_impl_native_proguard.cfg",
-      "cronet_impl_common_proguard.cfg",
-      "cronet_impl_platform_proguard.cfg",
-      "test/proguard.cfg",
-    ]
+    enable_multidex = false
+    if (!is_java_debug) {
+      proguard_enabled = true
+      proguard_configs = [
+        "$target_gen_dir/cronet_impl_native_proguard.cfg",
+        "cronet_impl_common_proguard.cfg",
+        "cronet_impl_platform_proguard.cfg",
+        "test/proguard.cfg",
+      ]
+    }
   }
 
   android_apk("cronet_perf_test_apk") {
@@ -1072,14 +1093,17 @@
       "//third_party/junit",
     ]
 
-    proguard_enabled = true
-    proguard_configs = [
-      "$target_gen_dir/cronet_impl_native_proguard.cfg",
-      "cronet_impl_common_proguard.cfg",
-      "test/proguard.cfg",
-      "//base/android/proguard/chromium_apk.flags",
-      "//testing/android/proguard_for_test.flags",
-    ]
+    enable_multidex = false
+    if (!is_java_debug) {
+      proguard_enabled = true
+      proguard_configs = [
+        "$target_gen_dir/cronet_impl_native_proguard.cfg",
+        "cronet_impl_common_proguard.cfg",
+        "test/proguard.cfg",
+        "//base/android/proguard/chromium_apk.flags",
+        "//testing/android/proguard_for_test.flags",
+      ]
+    }
   }
 
   test("cronet_unittests_android") {
diff --git a/components/cronet/android/fake/java/org/chromium/net/test/ResponseMatcher.java b/components/cronet/android/fake/java/org/chromium/net/test/ResponseMatcher.java
new file mode 100644
index 0000000..15ada206
--- /dev/null
+++ b/components/cronet/android/fake/java/org/chromium/net/test/ResponseMatcher.java
@@ -0,0 +1,29 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.net.test;
+
+import android.support.annotation.Nullable;
+
+import org.chromium.net.UrlRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * An interface for matching {@link UrlRequest}s to {@link FakeUrlResponse}s.
+ */
+public interface ResponseMatcher {
+    /**
+     * Optionally gets a response based on the request parameters.
+     *
+     * @param url the URL the {@link UrlRequest} is connecting to
+     * @param httpMethod the HTTP method the {@link UrlRequest} is connecting with
+     * @param headers the {@link UrlRequest} headers
+     * @return a {@link FakeUrlResponse} if there is a matching response, or {@code null} otherwise
+     */
+    @Nullable
+    FakeUrlResponse getMatchingResponse(
+            String url, String httpMethod, List<Map.Entry<String, String>> headers);
+}
diff --git a/components/cronet/android/fake/java/org/chromium/net/test/UrlResponseMatcher.java b/components/cronet/android/fake/java/org/chromium/net/test/UrlResponseMatcher.java
new file mode 100644
index 0000000..a1b676d
--- /dev/null
+++ b/components/cronet/android/fake/java/org/chromium/net/test/UrlResponseMatcher.java
@@ -0,0 +1,41 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.net.test;
+
+import org.chromium.net.UrlRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A {@link ResponseMatcher} that matches {@link UrlRequest}s with a particular URL.
+ */
+public class UrlResponseMatcher implements ResponseMatcher {
+    private final String mUrl;
+    private final FakeUrlResponse mResponse;
+
+    /**
+     * Constructs a {@link UrlResponseMatcher} that responds to requests for URL {@code url} with
+     * {@code response}.
+     * @param url the URL that the response should be returned for
+     * @param response the response to return if the URL matches the request's URL
+     */
+    public UrlResponseMatcher(String url, FakeUrlResponse response) {
+        if (url == null) {
+            throw new NullPointerException("URL is required.");
+        }
+        if (response == null) {
+            throw new NullPointerException("Response is required.");
+        }
+        mUrl = url;
+        mResponse = response;
+    }
+
+    @Override
+    public FakeUrlResponse getMatchingResponse(
+            String url, String httpMethod, List<Map.Entry<String, String>> headers) {
+        return mUrl.equals(url) ? mResponse : null;
+    }
+}
diff --git a/components/cronet/android/fake/javatests/org/chromium/net/test/FakeUrlResponseTest.java b/components/cronet/android/fake/javatests/org/chromium/net/test/FakeUrlResponseTest.java
index 71c164a6..cd4741e5e 100644
--- a/components/cronet/android/fake/javatests/org/chromium/net/test/FakeUrlResponseTest.java
+++ b/components/cronet/android/fake/javatests/org/chromium/net/test/FakeUrlResponseTest.java
@@ -10,12 +10,12 @@
 import static org.junit.Assert.assertTrue;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.net.UrlResponseInfo;
 import org.chromium.net.impl.UrlResponseInfoImpl;
 
@@ -27,7 +27,7 @@
 /**
  * Test functionality of FakeUrlResponse.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class FakeUrlResponseTest {
     private static final int TEST_HTTP_STATUS_CODE = 201;
     private static final String TEST_HEADER_NAME = "name";
diff --git a/components/cronet/android/fake/javatests/org/chromium/net/test/UrlResponseMatcherTest.java b/components/cronet/android/fake/javatests/org/chromium/net/test/UrlResponseMatcherTest.java
new file mode 100644
index 0000000..1a33554
--- /dev/null
+++ b/components/cronet/android/fake/javatests/org/chromium/net/test/UrlResponseMatcherTest.java
@@ -0,0 +1,73 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.net.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Test functionality of UrlResponseMatcher.
+ */
+@RunWith(AndroidJUnit4.class)
+public class UrlResponseMatcherTest {
+    @Test
+    @SmallTest
+    public void testCheckUrlNotNull() {
+        try {
+            UrlResponseMatcher matcher =
+                    new UrlResponseMatcher(null, new FakeUrlResponse.Builder().build());
+            fail("URL not null-checked");
+        } catch (NullPointerException e) {
+            assertEquals("URL is required.", e.getMessage());
+        }
+    }
+
+    @Test
+    @SmallTest
+    public void testCheckResponseNotNull() {
+        try {
+            UrlResponseMatcher matcher = new UrlResponseMatcher("url", null);
+            fail("Response not null-checked");
+        } catch (NullPointerException e) {
+            assertEquals("Response is required.", e.getMessage());
+        }
+    }
+
+    @Test
+    @SmallTest
+    public void testGetMatchingUrlResponse() {
+        String url = "url";
+        FakeUrlResponse response =
+                new FakeUrlResponse.Builder().setResponseBody("TestBody").build();
+        ResponseMatcher matcher = new UrlResponseMatcher(url, response);
+
+        FakeUrlResponse found = matcher.getMatchingResponse(url, null, null);
+
+        assertNotNull(found);
+        assertEquals(found, response);
+    }
+
+    @Test
+    @SmallTest
+    public void testGetResponseWithBadUrlReturnsNull() {
+        String url = "url";
+        String urlWithoutResponse = "NO_RESPONSE";
+        FakeUrlResponse response =
+                new FakeUrlResponse.Builder().setResponseBody("TestBody").build();
+        ResponseMatcher matcher = new UrlResponseMatcher(url, response);
+
+        FakeUrlResponse notFound = matcher.getMatchingResponse(urlWithoutResponse, null, null);
+
+        assertNull(notFound);
+    }
+}
diff --git a/components/cronet/android/sample/javatests/AndroidManifest.xml b/components/cronet/android/sample/javatests/AndroidManifest.xml
index 505e8d19..2fd4b4b 100644
--- a/components/cronet/android/sample/javatests/AndroidManifest.xml
+++ b/components/cronet/android/sample/javatests/AndroidManifest.xml
@@ -18,8 +18,4 @@
     <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
         android:targetPackage="org.chromium.cronet_sample_apk"
         android:label="Tests for org.chromium.cronet_sample_apk"/>
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
-        android:targetPackage="org.chromium.cronet_sample_apk"
-        android:label="Tests for org.chromium.cronet_sample_apk"
-        chromium-junit3="true"/>
 </manifest>
diff --git a/components/cronet/android/test/javatests/AndroidManifest.xml b/components/cronet/android/test/javatests/AndroidManifest.xml
index f107248..06104185 100644
--- a/components/cronet/android/test/javatests/AndroidManifest.xml
+++ b/components/cronet/android/test/javatests/AndroidManifest.xml
@@ -14,12 +14,9 @@
     <application android:name="org.chromium.net.CronetTestApplication"
                  android:label="Cronet Test"
                  android:networkSecurityConfig="@xml/network_security_config" />
-    <instrumentation android:name="org.chromium.base.test.BaseChromiumAndroidJUnitRunner"
+    <!-- Does not use BaseChromiumAndroidJUnitRunner so that it's easy to run
+         tests when dropped into non-chromium repositories. -->
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
         android:targetPackage="org.chromium.net.tests"
-        android:label="Tests for org.chromium.net">
-        <!-- Meta data used for BaseChromiumAndroidJUnitRunner to scan only
-             one package path for potential tests -->
-        <meta-data android:name="org.chromium.base.test.BaseChromiumAndroidJUnitRunner.TestListPackage"
-            android:value="org.chromium" />
-    </instrumentation>
+        android:label="Tests for org.chromium.net" />
 </manifest>
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java
index cf02c31..0169756 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java
@@ -13,6 +13,7 @@
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.json.JSONObject;
 import org.junit.After;
@@ -20,7 +21,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener;
@@ -32,7 +32,7 @@
 /**
  * Tests functionality of BidirectionalStream's QUIC implementation.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class BidirectionalStreamQuicTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
index b68b8e4..01dbf0c1 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
@@ -20,6 +20,7 @@
 import android.os.ConditionVariable;
 import android.os.Process;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -28,7 +29,6 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.Log;
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
@@ -54,7 +54,7 @@
 /**
  * Test functionality of BidirectionalStream interface.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class BidirectionalStreamTest {
     private static final String TAG = BidirectionalStreamTest.class.getSimpleName();
 
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/BrotliTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/BrotliTest.java
index 5f6fff3..0568b49 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/BrotliTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/BrotliTest.java
@@ -13,6 +13,7 @@
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -20,7 +21,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
 import org.chromium.net.CronetTestRule.RequiresMinApi;
@@ -28,7 +28,7 @@
 /**
  * Simple test for Brotli support.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 @RequiresMinApi(5) // Brotli support added in API version 5: crrev.com/465216
 public class BrotliTest {
     @Rule
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetEngineBuilderTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetEngineBuilderTest.java
index d1bb43c..d31d2695 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetEngineBuilderTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetEngineBuilderTest.java
@@ -13,12 +13,12 @@
 
 import android.content.Context;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 
 import java.util.ArrayList;
@@ -28,7 +28,7 @@
 /**
  * Tests {@link CronetEngine.Builder}.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetEngineBuilderTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetStressTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetStressTest.java
index ae19e35a..e6d3c1ee 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetStressTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetStressTest.java
@@ -10,6 +10,7 @@
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.LargeTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -17,7 +18,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
@@ -25,7 +25,7 @@
 /**
  * Tests that making a large number of requests do not lead to crashes.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetStressTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRuleTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRuleTest.java
index fc07f4c..e9b5a61a2 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRuleTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRuleTest.java
@@ -9,6 +9,7 @@
 import static org.junit.Assert.fail;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -17,7 +18,6 @@
 import org.junit.rules.TestName;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
@@ -28,7 +28,7 @@
 /**
  * Tests features of CronetTestRule.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetTestRuleTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java
index a300b4c..b1b196e 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java
@@ -11,6 +11,7 @@
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -18,7 +19,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
@@ -35,7 +35,7 @@
  * {@code UploadDataProvider} to simulate different ordering of reset, init,
  * read, and rewind calls.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetUploadTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
index 2cd1231..6d21cfe 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
@@ -22,6 +22,7 @@
 import android.os.Looper;
 import android.os.Process;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.json.JSONObject;
 import org.junit.After;
@@ -33,7 +34,6 @@
 import org.chromium.base.FileUtils;
 import org.chromium.base.PathUtils;
 import org.chromium.base.annotations.JNINamespace;
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
@@ -58,7 +58,7 @@
 /**
  * Test CronetEngine.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 @JNINamespace("cronet")
 public class CronetUrlRequestContextTest {
     @Rule
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
index 92a79f0..3c66c1cc 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
@@ -19,6 +19,7 @@
 import android.os.Process;
 import android.os.StrictMode;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -27,7 +28,6 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.Log;
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
@@ -59,7 +59,7 @@
 /**
  * Test functionality of CronetUrlRequest.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetUrlRequestTest {
     private static final String TAG = CronetUrlRequestTest.class.getSimpleName();
 
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/DiskStorageTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/DiskStorageTest.java
index 1c0b12f..f0fa74f4 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/DiskStorageTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/DiskStorageTest.java
@@ -11,6 +11,7 @@
 import static org.chromium.net.CronetTestRule.getTestStorage;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -20,7 +21,6 @@
 
 import org.chromium.base.FileUtils;
 import org.chromium.base.PathUtils;
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
 
@@ -34,7 +34,7 @@
 /**
  * Test CronetEngine disk storage.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class DiskStorageTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java
index 9e3dedaf..cf457c9 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java
@@ -15,6 +15,7 @@
 import static org.chromium.net.CronetTestRule.getTestStorage;
 
 import android.support.test.filters.MediumTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.json.JSONObject;
 import org.junit.After;
@@ -26,7 +27,6 @@
 import org.chromium.base.Log;
 import org.chromium.base.PathUtils;
 import org.chromium.base.annotations.JNINamespace;
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
 import org.chromium.net.impl.CronetUrlRequestContext;
@@ -41,7 +41,7 @@
 /**
  * Tests for experimental options.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 @JNINamespace("cronet")
 public class ExperimentalOptionsTest {
     @Rule
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/GetStatusTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/GetStatusTest.java
index 8dd7529..b69acd8 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/GetStatusTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/GetStatusTest.java
@@ -12,6 +12,7 @@
 
 import android.os.ConditionVariable;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -20,7 +21,6 @@
 import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
@@ -38,7 +38,7 @@
  * Tests that {@link org.chromium.net.impl.CronetUrlRequest#getStatus(StatusListener)} works as
  * expected.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class GetStatusTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java b/components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java
index c865efe..b7cb067 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java
@@ -13,6 +13,7 @@
 
 import android.os.StrictMode;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.json.JSONObject;
 import org.junit.After;
@@ -22,7 +23,6 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.Log;
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.MetricsUtils.HistogramDelta;
@@ -41,7 +41,7 @@
 /**
  * Test Network Quality Estimator.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class NQETest {
     private static final String TAG = NQETest.class.getSimpleName();
 
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/NetworkChangeNotifierTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/NetworkChangeNotifierTest.java
index 7e716116..ae35554 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/NetworkChangeNotifierTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/NetworkChangeNotifierTest.java
@@ -16,13 +16,13 @@
 import android.annotation.TargetApi;
 import android.os.Build;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 import android.system.Os;
 
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
@@ -36,7 +36,7 @@
 /**
  * Test NetworkChangeNotifier.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class NetworkChangeNotifierTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/NetworkErrorLoggingTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/NetworkErrorLoggingTest.java
index 98d6e3d..ebf8dbea 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/NetworkErrorLoggingTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/NetworkErrorLoggingTest.java
@@ -12,6 +12,7 @@
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -19,14 +20,13 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
 
 /**
  * Tests requests that generate Network Error Logging reports.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class NetworkErrorLoggingTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/PkpTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/PkpTest.java
index 8a115a7..91472883 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/PkpTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/PkpTest.java
@@ -13,6 +13,7 @@
 import static org.chromium.net.CronetTestRule.getTestStorage;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.json.JSONObject;
 import org.junit.After;
@@ -21,7 +22,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
 import org.chromium.net.test.util.CertTestUtil;
@@ -38,7 +38,7 @@
 /**
  * Public-Key-Pinning tests of Cronet Java API.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PkpTest {
     private static final String CERT_USED = "quic-chain.pem";
     private static final String[] CERTS_USED = {CERT_USED};
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java
index 1102b0d..fbb6b80 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java
@@ -12,6 +12,7 @@
 
 import android.support.test.filters.LargeTest;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.json.JSONObject;
 import org.junit.After;
@@ -21,7 +22,6 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.Log;
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener;
@@ -36,7 +36,7 @@
 /**
  * Tests making requests using QUIC.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class QuicTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
index 4b23d155..535a9c0 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
@@ -15,6 +15,7 @@
 
 import android.os.ConditionVariable;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -22,7 +23,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
@@ -43,7 +43,7 @@
 /**
  * Test RequestFinishedInfo.Listener and the metrics information it provides.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class RequestFinishedInfoTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java
index 21f77524..5723f30 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java
@@ -14,6 +14,7 @@
 import android.os.ConditionVariable;
 import android.os.ParcelFileDescriptor;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -21,7 +22,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
 import org.chromium.net.CronetTestRule.OnlyRunNativeCronet;
@@ -32,7 +32,7 @@
 import java.nio.ByteBuffer;
 
 /** Test the default provided implementations of {@link UploadDataProvider} */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class UploadDataProvidersTest {
     private static final String LOREM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
             + "Proin elementum, libero laoreet fringilla faucibus, metus tortor vehicula ante, "
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/UrlResponseInfoTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/UrlResponseInfoTest.java
index 87aca15a..6fb0e6b 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/UrlResponseInfoTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/UrlResponseInfoTest.java
@@ -5,12 +5,12 @@
 package org.chromium.net;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.impl.UrlResponseInfoImpl;
 
@@ -22,7 +22,7 @@
 /**
  * Tests for {@link UrlResponseInfo}.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class UrlResponseInfoTest {
     /**
      * Test for public API of {@link UrlResponseInfo}.
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetBufferedOutputStreamTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetBufferedOutputStreamTest.java
index 04678ac1..f0df44d 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetBufferedOutputStreamTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetBufferedOutputStreamTest.java
@@ -11,6 +11,7 @@
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -18,7 +19,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetEngine;
 import org.chromium.net.CronetTestRule;
@@ -34,7 +34,7 @@
 /**
  * Tests the CronetBufferedOutputStream implementation.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetBufferedOutputStreamTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetChunkedOutputStreamTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetChunkedOutputStreamTest.java
index 60af887..2e8fb64 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetChunkedOutputStreamTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetChunkedOutputStreamTest.java
@@ -11,6 +11,7 @@
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -18,7 +19,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetEngine;
 import org.chromium.net.CronetTestRule;
@@ -41,7 +41,7 @@
  * {@code OnlyRunCronetHttpURLConnection} only run Cronet's implementation.
  * See {@link CronetTestBase#runTest()} for details.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetChunkedOutputStreamTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetFixedModeOutputStreamTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetFixedModeOutputStreamTest.java
index 728f2f8..0ff6829 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetFixedModeOutputStreamTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetFixedModeOutputStreamTest.java
@@ -10,13 +10,13 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import org.hamcrest.Description;
-import org.hamcrest.TypeSafeMatcher;
-
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
+import org.hamcrest.Description;
+import org.hamcrest.TypeSafeMatcher;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -24,7 +24,6 @@
 import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetEngine;
 import org.chromium.net.CronetTestRule;
@@ -49,7 +48,7 @@
  * {@code OnlyRunCronetHttpURLConnection} only run Cronet's implementation.
  * See {@link CronetTestBase#runTest()} for details.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetFixedModeOutputStreamTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java
index ea0b5a8e..0d326ef 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java
@@ -15,6 +15,7 @@
 import android.os.Build;
 import android.os.Process;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -23,7 +24,6 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.Log;
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetEngine;
 import org.chromium.net.CronetException;
@@ -66,7 +66,7 @@
  * {@code OnlyRunCronetHttpURLConnection} only run Cronet's implementation.
  * See {@link CronetTestBase#runTest()} for details.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetHttpURLConnectionTest {
     private static final String TAG = CronetHttpURLConnectionTest.class.getSimpleName();
 
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java
index 1724294..b3f0fc7 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java
@@ -12,6 +12,7 @@
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Before;
@@ -19,7 +20,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule;
 import org.chromium.net.CronetTestRule.CronetTestFramework;
@@ -33,7 +33,7 @@
 /**
  * Tests for CronetHttpURLStreamHandler class.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class CronetHttpURLStreamHandlerTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactoryTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactoryTest.java
index b819de0c..31a388b 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactoryTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactoryTest.java
@@ -8,19 +8,19 @@
 import static org.junit.Assert.fail;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule;
 
 /**
  * Test for CronetURLStreamHandlerFactory.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 @SuppressWarnings("deprecation")
 public class CronetURLStreamHandlerFactoryTest {
     @Rule
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/MessageLoopTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/MessageLoopTest.java
index 704ebeb4..1a23a10 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/MessageLoopTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/MessageLoopTest.java
@@ -9,12 +9,12 @@
 import static org.junit.Assert.fail;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetTestRule;
 
@@ -29,7 +29,7 @@
 /**
  * Tests the MessageLoop implementation.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class MessageLoopTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/QuicUploadTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/QuicUploadTest.java
index 76e62f8..5ae9e165 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/QuicUploadTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/QuicUploadTest.java
@@ -9,6 +9,7 @@
 import static org.chromium.net.CronetTestRule.getContext;
 
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.json.JSONObject;
 import org.junit.Before;
@@ -16,7 +17,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.net.CronetEngine;
 import org.chromium.net.CronetTestRule;
@@ -33,7 +33,7 @@
 /**
  * Tests HttpURLConnection upload using QUIC.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class QuicUploadTest {
     @Rule
     public final CronetTestRule mTestRule = new CronetTestRule();
diff --git a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/Http2Test.java b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/Http2Test.java
index af951bc..1d30a3a 100644
--- a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/Http2Test.java
+++ b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/Http2Test.java
@@ -6,6 +6,7 @@
 
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Assert;
@@ -14,13 +15,12 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.net.UrlRequest;
 
 /**
  * HTTP2 Tests.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class Http2Test {
     private TestSupport.TestServer mServer;
 
diff --git a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java
index 9a0de9f1..f8a76fc 100644
--- a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java
+++ b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java
@@ -8,6 +8,7 @@
 
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.Assert;
 import org.junit.Rule;
@@ -15,7 +16,6 @@
 import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.net.CronetEngine;
 import org.chromium.net.CronetProvider;
 import org.chromium.net.ExperimentalCronetEngine;
@@ -26,7 +26,7 @@
  *  Tests scenarios when the native shared library file is missing in the APK or was built for a
  *  wrong architecture.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class MissingNativeLibraryTest {
     @Rule
     public CronetSmokeTestRule mRule = new CronetSmokeTestRule();
diff --git a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/PlatformOnlyEngineTest.java b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/PlatformOnlyEngineTest.java
index f0fe3db..5f03dda 100644
--- a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/PlatformOnlyEngineTest.java
+++ b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/PlatformOnlyEngineTest.java
@@ -9,6 +9,7 @@
 
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.junit.After;
 import org.junit.Assert;
@@ -17,13 +18,12 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.net.UrlRequest;
 
 /**
  * Tests scenario when an app doesn't contain the native Cronet implementation.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class PlatformOnlyEngineTest {
     private String mURL;
     private TestSupport.TestServer mServer;
diff --git a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/QuicTest.java b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/QuicTest.java
index 163b974..cf0eac7 100644
--- a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/QuicTest.java
+++ b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/QuicTest.java
@@ -8,6 +8,7 @@
 
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
 
 import org.json.JSONObject;
 import org.junit.After;
@@ -17,7 +18,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.net.UrlRequest;
 
 import java.net.URL;
@@ -25,7 +25,7 @@
 /**
  * QUIC Tests.
  */
-@RunWith(BaseJUnit4ClassRunner.class)
+@RunWith(AndroidJUnit4.class)
 public class QuicTest {
     private TestSupport.TestServer mServer;
 
diff --git a/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle_unittest.cc b/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle_unittest.cc
index 9e33e7d..9c37644 100644
--- a/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle_unittest.cc
+++ b/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle_unittest.cc
@@ -14,6 +14,7 @@
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_server.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_throttle_manager.h"
 #include "content/public/common/previews_state.h"
+#include "content/public/common/resource_type.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
 #include "net/base/load_flags.h"
 #include "net/http/http_request_headers.h"
diff --git a/components/download/internal/common/download_item_impl.cc b/components/download/internal/common/download_item_impl.cc
index 54e1749..bd0c089 100644
--- a/components/download/internal/common/download_item_impl.cc
+++ b/components/download/internal/common/download_item_impl.cc
@@ -2442,6 +2442,13 @@
   download_params->set_referrer_policy(net::URLRequest::NEVER_CLEAR_REFERRER);
   download_params->set_follow_cross_origin_redirects(false);
 
+  // If the interruption was caused by content length mismatch, ignore it during
+  // resumption.
+  if (last_reason_ ==
+      DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH) {
+    download_params->set_ignore_content_length_mismatch(true);
+  }
+
   TransitionTo(RESUMING_INTERNAL);
   RecordDownloadCountWithSource(source == ResumptionRequestSource::USER
                                     ? MANUAL_RESUMPTION_COUNT
diff --git a/components/download/internal/common/download_response_handler.cc b/components/download/internal/common/download_response_handler.cc
index d203a3cf..ad205b8 100644
--- a/components/download/internal/common/download_response_handler.cc
+++ b/components/download/internal/common/download_response_handler.cc
@@ -58,6 +58,7 @@
     const DownloadUrlParameters::RequestHeadersType& request_headers,
     const std::string& request_origin,
     DownloadSource download_source,
+    bool ignore_content_length_mismatch,
     std::vector<GURL> url_chain)
     : delegate_(delegate),
       started_(false),
@@ -73,7 +74,7 @@
       request_headers_(request_headers),
       request_origin_(request_origin),
       download_source_(download_source),
-      has_strong_validators_(false),
+      ignore_content_length_mismatch_(ignore_content_length_mismatch),
       is_partial_request_(save_info_->offset > 0),
       completed_(false),
       abort_reason_(DOWNLOAD_INTERRUPT_REASON_NONE) {
@@ -95,7 +96,15 @@
   // Sets page transition type correctly and call
   // |RecordDownloadSourcePageTransitionType| here.
   if (head.headers) {
-    has_strong_validators_ = head.headers->HasStrongValidators();
+    // ERR_CONTENT_LENGTH_MISMATCH can be caused by 1 of the following reasons:
+    // 1. Server or proxy closes the connection too early.
+    // 2. The content-length header is wrong.
+    // If the download has strong validators, we can interrupt the download
+    // and let it resume automatically. Otherwise, resuming the download will
+    // cause it to restart and the download may never complete if the error was
+    // caused by reason 2. As a result, downloads without strong validators are
+    // treated as completed here.
+    ignore_content_length_mismatch_ |= !head.headers->HasStrongValidators();
     RecordDownloadHttpResponseCode(head.headers->response_code());
     RecordDownloadContentDisposition(create_info_->content_disposition);
   }
@@ -222,8 +231,8 @@
 
   completed_ = true;
   DownloadInterruptReason reason = HandleRequestCompletionStatus(
-      static_cast<net::Error>(status.error_code), has_strong_validators_,
-      cert_status_, abort_reason_);
+      static_cast<net::Error>(status.error_code),
+      ignore_content_length_mismatch_, cert_status_, abort_reason_);
 
   if (client_ptr_) {
     client_ptr_->OnStreamCompleted(
diff --git a/components/download/internal/common/download_utils.cc b/components/download/internal/common/download_utils.cc
index bba99e06..b2100e5 100644
--- a/components/download/internal/common/download_utils.cc
+++ b/components/download/internal/common/download_utils.cc
@@ -53,22 +53,11 @@
 
 DownloadInterruptReason HandleRequestCompletionStatus(
     net::Error error_code,
-    bool has_strong_validators,
+    bool ignore_content_length_mismatch,
     net::CertStatus cert_status,
     DownloadInterruptReason abort_reason) {
-  // ERR_CONTENT_LENGTH_MISMATCH can be caused by 1 of the following reasons:
-  // 1. Server or proxy closes the connection too early.
-  // 2. The content-length header is wrong.
-  // If the download has strong validators, we can interrupt the download
-  // and let it resume automatically. Otherwise, resuming the download will
-  // cause it to restart and the download may never complete if the error was
-  // caused by reason 2. As a result, downloads without strong validators are
-  // treated as completed here.
-  // TODO(qinmin): check the metrics from downloads with strong validators,
-  // and decide whether we should interrupt downloads without strong validators
-  // rather than complete them.
   if (error_code == net::ERR_CONTENT_LENGTH_MISMATCH &&
-      !has_strong_validators) {
+      ignore_content_length_mismatch) {
     error_code = net::OK;
     RecordDownloadCount(COMPLETED_WITH_CONTENT_LENGTH_MISMATCH_COUNT);
   }
diff --git a/components/download/internal/common/resource_downloader.cc b/components/download/internal/common/resource_downloader.cc
index 484e4916..e1a0974 100644
--- a/components/download/internal/common/resource_downloader.cc
+++ b/components/download/internal/common/resource_downloader.cc
@@ -163,6 +163,7 @@
       download_url_parameters->request_headers(),
       download_url_parameters->request_origin(),
       download_url_parameters->download_source(),
+      download_url_parameters->ignore_content_length_mismatch(),
       std::vector<GURL>(1, resource_request_->url));
   network::mojom::URLLoaderClientPtr url_loader_client_ptr;
   url_loader_client_binding_ =
@@ -202,7 +203,8 @@
       true,  /* follow_cross_origin_redirects */
       download::DownloadUrlParameters::RequestHeadersType(),
       std::string(), /* request_origin */
-      download::DownloadSource::NAVIGATION, std::move(url_chain));
+      download::DownloadSource::NAVIGATION,
+      false /* ignore_content_length_mismatch */, std::move(url_chain));
 
   // Simulate on the new URLLoaderClient calls that happened on the old client.
   response_head->head.cert_status = cert_status;
diff --git a/components/download/public/common/download_danger_type.h b/components/download/public/common/download_danger_type.h
index e9e89524..bf83d4b 100644
--- a/components/download/public/common/download_danger_type.h
+++ b/components/download/public/common/download_danger_type.h
@@ -47,6 +47,9 @@
   // Download URL whitelisted by enterprise policy.
   DOWNLOAD_DANGER_TYPE_WHITELISTED_BY_POLICY = 9,
 
+  // Download is pending a more detailed verdict.
+  DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING = 10,
+
   // Memory space for histograms is determined by the max.
   // ALWAYS ADD NEW VALUES BEFORE THIS ONE.
   DOWNLOAD_DANGER_TYPE_MAX
diff --git a/components/download/public/common/download_response_handler.h b/components/download/public/common/download_response_handler.h
index ce94c9a0..51a7337 100644
--- a/components/download/public/common/download_response_handler.h
+++ b/components/download/public/common/download_response_handler.h
@@ -52,6 +52,7 @@
       const DownloadUrlParameters::RequestHeadersType& request_headers,
       const std::string& request_origin,
       DownloadSource download_source,
+      bool ignore_content_length_mismatch,
       std::vector<GURL> url_chain);
   ~DownloadResponseHandler() override;
 
@@ -95,7 +96,7 @@
   std::string request_origin_;
   DownloadSource download_source_;
   net::CertStatus cert_status_;
-  bool has_strong_validators_;
+  bool ignore_content_length_mismatch_;
   base::Optional<url::Origin> request_initiator_;
   bool is_partial_request_;
   bool completed_;
diff --git a/components/download/public/common/download_url_parameters.cc b/components/download/public/common/download_url_parameters.cc
index fd465914..0c85c8f 100644
--- a/components/download/public/common/download_url_parameters.cc
+++ b/components/download/public/common/download_url_parameters.cc
@@ -40,7 +40,8 @@
       transient_(false),
       traffic_annotation_(traffic_annotation),
       download_source_(DownloadSource::UNKNOWN),
-      require_safety_checks_(true) {}
+      require_safety_checks_(true),
+      ignore_content_length_mismatch_(false) {}
 
 DownloadUrlParameters::~DownloadUrlParameters() = default;
 
diff --git a/components/download/public/common/download_url_parameters.h b/components/download/public/common/download_url_parameters.h
index f276edd..ecbc0af 100644
--- a/components/download/public/common/download_url_parameters.h
+++ b/components/download/public/common/download_url_parameters.h
@@ -257,6 +257,11 @@
     require_safety_checks_ = require_safety_checks;
   }
 
+  // Sets whether to ignore content length mismatch errors.
+  void set_ignore_content_length_mismatch(bool ignore_content_length_mismatch) {
+    ignore_content_length_mismatch_ = ignore_content_length_mismatch;
+  }
+
   const OnStartedCallback& callback() const { return callback_; }
   bool content_initiated() const { return content_initiated_; }
   const std::string& last_modified() const { return last_modified_; }
@@ -310,6 +315,9 @@
   bool is_transient() const { return transient_; }
   std::string guid() const { return guid_; }
   bool require_safety_checks() const { return require_safety_checks_; }
+  bool ignore_content_length_mismatch() const {
+    return ignore_content_length_mismatch_;
+  }
 
   // STATE CHANGING: All save_info_ sub-objects will be in an indeterminate
   // state following this call.
@@ -357,6 +365,7 @@
   DownloadSource download_source_;
   UploadProgressCallback upload_callback_;
   bool require_safety_checks_;
+  bool ignore_content_length_mismatch_;
 
   DISALLOW_COPY_AND_ASSIGN(DownloadUrlParameters);
 };
diff --git a/components/download/public/common/download_utils.h b/components/download/public/common/download_utils.h
index 9e609fe..c803699 100644
--- a/components/download/public/common/download_utils.h
+++ b/components/download/public/common/download_utils.h
@@ -39,7 +39,7 @@
 // |cert_status| is ignored if error_code is not net::ERR_ABORTED.
 COMPONENTS_DOWNLOAD_EXPORT DownloadInterruptReason
 HandleRequestCompletionStatus(net::Error error_code,
-                              bool has_strong_validators,
+                              bool ignore_content_length_mismatch,
                               net::CertStatus cert_status,
                               DownloadInterruptReason abort_reason);
 
diff --git a/components/exo/test/DEPS b/components/exo/test/DEPS
new file mode 100644
index 0000000..d4317ca
--- /dev/null
+++ b/components/exo/test/DEPS
@@ -0,0 +1,5 @@
+specific_include_rules = {
+  "run_all_unittests\.cc": [
+    "+components/viz/test/test_gpu_service_holder.h",
+  ],
+}
diff --git a/components/exo/test/run_all_unittests.cc b/components/exo/test/run_all_unittests.cc
index 0f1c677..be20ccddb 100644
--- a/components/exo/test/run_all_unittests.cc
+++ b/components/exo/test/run_all_unittests.cc
@@ -4,6 +4,7 @@
 
 #include "base/bind.h"
 #include "base/test/launcher/unit_test_launcher.h"
+#include "components/viz/test/test_gpu_service_holder.h"
 
 #if defined(OS_CHROMEOS)
 #include "ash/test/ash_test_suite.h"
@@ -26,6 +27,8 @@
   mojo::core::Init();
 #endif
 
+  viz::TestGpuServiceHolder::DestroyInstanceAfterEachTest();
+
   return base::LaunchUnitTests(
       argc, argv,
       base::BindOnce(&base::TestSuite::Run, base::Unretained(&test_suite)));
diff --git a/components/favicon/core/history_ui_favicon_request_handler.h b/components/favicon/core/history_ui_favicon_request_handler.h
index e0fa7167..140be72 100644
--- a/components/favicon/core/history_ui_favicon_request_handler.h
+++ b/components/favicon/core/history_ui_favicon_request_handler.h
@@ -21,6 +21,7 @@
 // TODO(victorvianna): Rename enum to mention history UIs.
 enum class FaviconRequestOrigin {
   // Unknown origin.
+  // TODO(victorvianna): Remove this and deprecate the histogram-suffix.
   UNKNOWN,
   // History page.
   HISTORY,
@@ -43,6 +44,7 @@
 // TODO(victorvianna): Use a more natural order for the parameters in the API.
 // TODO(victorvianna): Remove |icon_url_for_uma| when we have access to the
 // FaviconUrlMapper.
+// TODO(victorvianna): Rename |request_origin| to |origin_for_uma| in the API.
 class HistoryUiFaviconRequestHandler : public KeyedService {
  public:
   // Requests favicon bitmap at |page_url| of size |desired_size_in_pixel|.
diff --git a/components/favicon/core/history_ui_favicon_request_handler_impl.cc b/components/favicon/core/history_ui_favicon_request_handler_impl.cc
index 3ca9cf3cf..4e05337 100644
--- a/components/favicon/core/history_ui_favicon_request_handler_impl.cc
+++ b/components/favicon/core/history_ui_favicon_request_handler_impl.cc
@@ -128,8 +128,7 @@
           &HistoryUiFaviconRequestHandlerImpl::OnBitmapLocalDataAvailable,
           weak_ptr_factory_.GetWeakPtr(), page_url, desired_size_in_pixel,
           /*response_callback=*/std::move(callback), request_origin,
-          request_platform, icon_url_for_uma,
-          CanQueryGoogleServer(request_origin), tracker),
+          request_platform, icon_url_for_uma, CanQueryGoogleServer(), tracker),
       tracker);
 }
 
@@ -146,7 +145,7 @@
           &HistoryUiFaviconRequestHandlerImpl::OnImageLocalDataAvailable,
           weak_ptr_factory_.GetWeakPtr(), page_url,
           /*response_callback=*/std::move(callback), request_origin,
-          icon_url_for_uma, CanQueryGoogleServer(request_origin), tracker),
+          icon_url_for_uma, CanQueryGoogleServer(), tracker),
       tracker);
 }
 
@@ -361,12 +360,8 @@
   }
 }
 
-bool HistoryUiFaviconRequestHandlerImpl::CanQueryGoogleServer(
-    FaviconRequestOrigin origin) const {
-  // TODO(victorvianna): Remove origin check once extensions don't talk to this
-  // layer anymore.
-  return origin != FaviconRequestOrigin::UNKNOWN &&
-         can_send_history_data_getter_.Run() &&
+bool HistoryUiFaviconRequestHandlerImpl::CanQueryGoogleServer() const {
+  return can_send_history_data_getter_.Run() &&
          base::FeatureList::IsEnabled(kEnableHistoryFaviconsGoogleServerQuery);
 }
 
diff --git a/components/favicon/core/history_ui_favicon_request_handler_impl.h b/components/favicon/core/history_ui_favicon_request_handler_impl.h
index 1b302193..cdd21fd 100644
--- a/components/favicon/core/history_ui_favicon_request_handler_impl.h
+++ b/components/favicon/core/history_ui_favicon_request_handler_impl.h
@@ -70,6 +70,8 @@
   // storage. If request succeeded, sends the result. Otherwise attempts to
   // retrieve from sync or the Google favicon server depending whether
   // |favicon::kEnableHistoryFaviconsGoogleServerQuery| is enabled.
+  // TODO(https://crbug.com/978775): Stop plumbing can_query_google_server once
+  // the feature experiment is no longer being run.
   void OnBitmapLocalDataAvailable(
       const GURL& page_url,
       int desired_size_in_pixel,
@@ -117,9 +119,7 @@
       const GURL& group_to_clear,
       favicon_base::GoogleFaviconServerRequestStatus status);
 
-  // Verifies that history sync is enabled and |origin| is not unknown.
-  // TODO(victorvianna): Move origin filtering to FaviconSource level.
-  bool CanQueryGoogleServer(FaviconRequestOrigin origin) const;
+  bool CanQueryGoogleServer() const;
 
   FaviconService* const favicon_service_;
 
diff --git a/components/favicon/core/history_ui_favicon_request_handler_impl_unittest.cc b/components/favicon/core/history_ui_favicon_request_handler_impl_unittest.cc
index 55cf72f..e453936 100644
--- a/components/favicon/core/history_ui_favicon_request_handler_impl_unittest.cc
+++ b/components/favicon/core/history_ui_favicon_request_handler_impl_unittest.cc
@@ -30,13 +30,18 @@
 using testing::_;
 using testing::Return;
 
+// TODO(victorvianna): Rename to kPageUrl and kIconUrl.
 const char kDummyPageUrl[] = "https://www.example.com";
 const char kDummyIconUrl[] = "https://www.example.com/favicon16.png";
+const FaviconRequestOrigin kDummyOrigin = FaviconRequestOrigin::HISTORY;
+const char kDummyOriginHistogramSuffix[] = ".HISTORY";
+const FaviconRequestPlatform kDummyPlatform = FaviconRequestPlatform::kDesktop;
+base::CancelableTaskTracker::TaskId kDummyTaskId = 1;
+const char kAvailabilityHistogramName[] = "Sync.FaviconAvailability";
+const char kGroupingHistogramName[] = "Sync.SizeOfFaviconServerRequestGroup";
 const int kDefaultDesiredSizeInPixel = 16;
 // TODO(victorvianna): Add unit tests specific for mobile.
-const FaviconRequestPlatform kDummyPlatform = FaviconRequestPlatform::kDesktop;
 const SkColor kTestColor = SK_ColorRED;
-base::CancelableTaskTracker::TaskId kDummyTaskId = 1;
 
 SkBitmap CreateTestSkBitmap(int desired_size_in_pixel) {
   SkBitmap bitmap;
@@ -162,12 +167,12 @@
   favicon_base::FaviconRawBitmapResult result;
   history_ui_favicon_request_handler_.GetRawFaviconForPageURL(
       GURL(kDummyPageUrl), kDefaultDesiredSizeInPixel,
-      base::BindOnce(&StoreBitmap, &result), FaviconRequestOrigin::UNKNOWN,
-      kDummyPlatform,
+      base::BindOnce(&StoreBitmap, &result), kDummyOrigin, kDummyPlatform,
       /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_FALSE(result.is_valid());
-  histogram_tester_.ExpectUniqueSample("Sync.FaviconAvailability.UNKNOWN",
-                                       FaviconAvailability::kNotAvailable, 1);
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
+      FaviconAvailability::kNotAvailable, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest, ShouldGetSyncBitmap) {
@@ -187,12 +192,12 @@
   favicon_base::FaviconRawBitmapResult result;
   history_ui_favicon_request_handler_.GetRawFaviconForPageURL(
       GURL(kDummyPageUrl), kDefaultDesiredSizeInPixel,
-      base::BindOnce(&StoreBitmap, &result), FaviconRequestOrigin::UNKNOWN,
-      kDummyPlatform,
+      base::BindOnce(&StoreBitmap, &result), kDummyOrigin, kDummyPlatform,
       /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_TRUE(result.is_valid());
-  histogram_tester_.ExpectUniqueSample("Sync.FaviconAvailability.UNKNOWN",
-                                       FaviconAvailability::kSync, 1);
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
+      FaviconAvailability::kSync, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest, ShouldGetLocalBitmap) {
@@ -213,12 +218,12 @@
   favicon_base::FaviconRawBitmapResult result;
   history_ui_favicon_request_handler_.GetRawFaviconForPageURL(
       GURL(kDummyPageUrl), kDefaultDesiredSizeInPixel,
-      base::BindOnce(&StoreBitmap, &result), FaviconRequestOrigin::UNKNOWN,
-      kDummyPlatform,
+      base::BindOnce(&StoreBitmap, &result), kDummyOrigin, kDummyPlatform,
       /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_TRUE(result.is_valid());
-  histogram_tester_.ExpectUniqueSample("Sync.FaviconAvailability.UNKNOWN",
-                                       FaviconAvailability::kLocal, 1);
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
+      FaviconAvailability::kLocal, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest,
@@ -252,10 +257,14 @@
   favicon_base::FaviconRawBitmapResult result;
   history_ui_favicon_request_handler_.GetRawFaviconForPageURL(
       GURL(kDummyPageUrl), kDefaultDesiredSizeInPixel,
-      base::BindOnce(&StoreBitmap, &result), FaviconRequestOrigin::HISTORY,
-      kDummyPlatform,
+      base::BindOnce(&StoreBitmap, &result), kDummyOrigin, kDummyPlatform,
       /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_TRUE(result.is_valid());
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
+      FaviconAvailability::kLocal, 1);
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kGroupingHistogramName) + kDummyOriginHistogramSuffix, 1, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest,
@@ -289,14 +298,14 @@
   favicon_base::FaviconRawBitmapResult result;
   history_ui_favicon_request_handler_.GetRawFaviconForPageURL(
       GURL(kDummyPageUrl), kDefaultDesiredSizeInPixel,
-      base::BindOnce(&StoreBitmap, &result), FaviconRequestOrigin::HISTORY,
-      kDummyPlatform,
+      base::BindOnce(&StoreBitmap, &result), kDummyOrigin, kDummyPlatform,
       /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_TRUE(result.is_valid());
-  histogram_tester_.ExpectUniqueSample("Sync.FaviconAvailability.HISTORY",
-                                       FaviconAvailability::kLocal, 1);
   histogram_tester_.ExpectUniqueSample(
-      "Sync.SizeOfFaviconServerRequestGroup.HISTORY", 1, 1);
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
+      FaviconAvailability::kLocal, 1);
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kGroupingHistogramName) + kDummyOriginHistogramSuffix, 1, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest, ShouldGetEmptyImage) {
@@ -312,12 +321,12 @@
       .WillOnce([](auto) { return favicon_base::FaviconRawBitmapResult(); });
   favicon_base::FaviconImageResult result;
   history_ui_favicon_request_handler_.GetFaviconImageForPageURL(
-      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result),
-      FaviconRequestOrigin::UNKNOWN,
+      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result), kDummyOrigin,
       /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_TRUE(result.image.IsEmpty());
-  histogram_tester_.ExpectUniqueSample("Sync.FaviconAvailability.UNKNOWN",
-                                       FaviconAvailability::kNotAvailable, 1);
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
+      FaviconAvailability::kNotAvailable, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest, ShouldGetSyncImage) {
@@ -333,12 +342,12 @@
       .WillOnce([](auto) { return CreateTestBitmapResult(); });
   favicon_base::FaviconImageResult result;
   history_ui_favicon_request_handler_.GetFaviconImageForPageURL(
-      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result),
-      FaviconRequestOrigin::UNKNOWN,
+      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result), kDummyOrigin,
       /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_FALSE(result.image.IsEmpty());
-  histogram_tester_.ExpectUniqueSample("Sync.FaviconAvailability.UNKNOWN",
-                                       FaviconAvailability::kSync, 1);
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
+      FaviconAvailability::kSync, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest, ShouldGetLocalImage) {
@@ -355,12 +364,12 @@
   EXPECT_CALL(synced_favicon_getter_, Run(_)).Times(0);
   favicon_base::FaviconImageResult result;
   history_ui_favicon_request_handler_.GetFaviconImageForPageURL(
-      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result),
-      FaviconRequestOrigin::UNKNOWN,
+      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result), kDummyOrigin,
       /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_FALSE(result.image.IsEmpty());
-  histogram_tester_.ExpectUniqueSample("Sync.FaviconAvailability.UNKNOWN",
-                                       FaviconAvailability::kLocal, 1);
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
+      FaviconAvailability::kLocal, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest,
@@ -389,15 +398,14 @@
   EXPECT_CALL(synced_favicon_getter_, Run(_)).Times(0);
   favicon_base::FaviconImageResult result;
   history_ui_favicon_request_handler_.GetFaviconImageForPageURL(
-      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result),
-      FaviconRequestOrigin::RECENTLY_CLOSED_TABS, /*icon_url_for_uma=*/GURL(),
-      &tracker_);
+      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result), kDummyOrigin,
+      /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_FALSE(result.image.IsEmpty());
   histogram_tester_.ExpectUniqueSample(
-      "Sync.FaviconAvailability.RECENTLY_CLOSED_TABS",
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
       FaviconAvailability::kLocal, 1);
   histogram_tester_.ExpectUniqueSample(
-      "Sync.SizeOfFaviconServerRequestGroup.RECENTLY_CLOSED_TABS", 1, 1);
+      std::string(kGroupingHistogramName) + kDummyOriginHistogramSuffix, 1, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest,
@@ -426,11 +434,16 @@
   EXPECT_CALL(synced_favicon_getter_, Run(_)).Times(0);
   favicon_base::FaviconImageResult result;
   history_ui_favicon_request_handler_.GetFaviconImageForPageURL(
-      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result),
-      FaviconRequestOrigin::RECENTLY_CLOSED_TABS, /*icon_url_for_uma=*/GURL(),
+      GURL(kDummyPageUrl), base::BindOnce(&StoreImage, &result), kDummyOrigin,
+      /*icon_url_for_uma=*/GURL(),
 
       &tracker_);
   EXPECT_FALSE(result.image.IsEmpty());
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kAvailabilityHistogramName) + kDummyOriginHistogramSuffix,
+      FaviconAvailability::kLocal, 1);
+  histogram_tester_.ExpectUniqueSample(
+      std::string(kGroupingHistogramName) + kDummyOriginHistogramSuffix, 1, 1);
 }
 
 TEST_F(HistoryUiFaviconRequestHandlerImplTest,
@@ -456,8 +469,7 @@
   favicon_base::FaviconRawBitmapResult result;
   history_ui_favicon_request_handler_.GetRawFaviconForPageURL(
       GURL(kDummyPageUrl), kDefaultDesiredSizeInPixel,
-      base::BindOnce(&StoreBitmap, &result), FaviconRequestOrigin::HISTORY,
-      kDummyPlatform,
+      base::BindOnce(&StoreBitmap, &result), kDummyOrigin, kDummyPlatform,
       /*icon_url_for_uma=*/GURL(), &tracker_);
 }
 
@@ -480,8 +492,7 @@
   favicon_base::FaviconRawBitmapResult result;
   history_ui_favicon_request_handler_.GetRawFaviconForPageURL(
       GURL(kDummyPageUrl), kDesiredSizeInPixel,
-      base::BindOnce(&StoreBitmap, &result), FaviconRequestOrigin::UNKNOWN,
-      kDummyPlatform,
+      base::BindOnce(&StoreBitmap, &result), kDummyOrigin, kDummyPlatform,
       /*icon_url_for_uma=*/GURL(), &tracker_);
   EXPECT_TRUE(result.is_valid());
   EXPECT_EQ(gfx::Size(kDesiredSizeInPixel, kDesiredSizeInPixel),
diff --git a/components/favicon_base/favicon_url_parser.cc b/components/favicon_base/favicon_url_parser.cc
index 3cbd044..2d75cd9 100644
--- a/components/favicon_base/favicon_url_parser.cc
+++ b/components/favicon_base/favicon_url_parser.cc
@@ -50,6 +50,9 @@
   parsed->size_in_dip = gfx::kFaviconSize;
   parsed->device_scale_factor = 1.0f;
   parsed->path_index = std::string::npos;
+  // Use of the favicon server is never exposed for the legacy format (only used
+  // by extensions).
+  parsed->allow_favicon_server_fallback = false;
 
   if (path.empty())
     return false;
@@ -111,6 +114,7 @@
   const std::string kScaleParameter = "scale_factor";
   const std::string kUrlTypeParameter = "url_type";
   const std::string kUrlParameter = "url";
+  const std::string kAllowFallbackParameter = "allow_google_server_fallback";
 
   if (path.empty())
     return false;
@@ -135,10 +139,31 @@
   else if (!ParseIsIconUrl(url_type, &parsed->is_icon_url))
     return false;
 
-  net::GetValueForKeyInQuery(query_url, kUrlParameter, &parsed->url);
+  std::string url;
+  if (!net::GetValueForKeyInQuery(query_url, kUrlParameter, &url))
+    return false;
+  parsed->url = url;
+
+  if (parsed->is_icon_url) {
+    // Fallback is never allowed for icon urls, since the server is queried by
+    // page url.
+    parsed->allow_favicon_server_fallback = false;
+    return true;
+  }
+
+  // Check optional |kAllowFallbackParameter|.
+  std::string allow_favicon_server_fallback;
+  if (!net::GetValueForKeyInQuery(query_url, kAllowFallbackParameter,
+                                  &allow_favicon_server_fallback)) {
+    parsed->allow_favicon_server_fallback = false;
+  } else if (!base::StringToInt(allow_favicon_server_fallback,
+                                (int*)&parsed->allow_favicon_server_fallback)) {
+    return false;
+  }
 
   return true;
 }
+
 }  // namespace
 
 bool ParseFaviconPath(const std::string& path,
diff --git a/components/favicon_base/favicon_url_parser.h b/components/favicon_base/favicon_url_parser.h
index 4a6ff65..16e0684 100644
--- a/components/favicon_base/favicon_url_parser.h
+++ b/components/favicon_base/favicon_url_parser.h
@@ -28,6 +28,9 @@
   // The index of the first character (relative to the path) where the the URL
   // from which the favicon is being requested is located.
   size_t path_index;
+
+  // Whether we should allow making a request to the favicon server as fallback.
+  bool allow_favicon_server_fallback;
 };
 
 // Enum describing the two possible url formats: the legacy chrome://favicon
@@ -79,6 +82,12 @@
 //      Specifies the requested favicon's scale factor. If unspecified, defaults
 //      to 1x.
 //    Example: chrome://favicon2/?scale_factor=1.2x
+//
+//  In case |url_type| == 'page_url', we can specify an additional parameter:
+//  'allow_google_server_fallback' Optional
+//      Values: ['1', '0']
+//      Specifies whether we are allowed to fall back to an external server
+//      request in case the icon is not found locally.
 enum class FaviconUrlFormat {
   // Legacy chrome://favicon format.
   kFaviconLegacy,
diff --git a/components/favicon_base/favicon_url_parser_unittest.cc b/components/favicon_base/favicon_url_parser_unittest.cc
index 0ea6e4a8..cdb75b4 100644
--- a/components/favicon_base/favicon_url_parser_unittest.cc
+++ b/components/favicon_base/favicon_url_parser_unittest.cc
@@ -133,44 +133,86 @@
 TEST_F(FaviconUrlParserTest, Favicon2ParsingSizeParam) {
   chrome::ParsedFaviconPath parsed;
 
-  std::string path = "?size=32";
-  EXPECT_TRUE(chrome::ParseFaviconPath(
-      path, chrome::FaviconUrlFormat::kFavicon2, &parsed));
+  EXPECT_TRUE(chrome::ParseFaviconPath("?size=32&url=https%3A%2F%2Fg.com",
+                                       chrome::FaviconUrlFormat::kFavicon2,
+                                       &parsed));
   EXPECT_FALSE(parsed.is_icon_url);
   EXPECT_EQ(32, parsed.size_in_dip);
 
-  path = "?size=abc";
-  EXPECT_FALSE(chrome::ParseFaviconPath(
-      path, chrome::FaviconUrlFormat::kFavicon2, &parsed));
+  EXPECT_FALSE(chrome::ParseFaviconPath("?size=abc&url=https%3A%2F%2Fg.com",
+                                        chrome::FaviconUrlFormat::kFavicon2,
+                                        &parsed));
 }
 
 TEST_F(FaviconUrlParserTest, Favicon2ParsingScaleFactorParam) {
   chrome::ParsedFaviconPath parsed;
 
-  std::string path = "?scale_factor=2.1x";
-  EXPECT_TRUE(chrome::ParseFaviconPath(
-      path, chrome::FaviconUrlFormat::kFavicon2, &parsed));
+  EXPECT_TRUE(
+      chrome::ParseFaviconPath("?scale_factor=2.1x&url=https%3A%2F%2Fg.com",
+                               chrome::FaviconUrlFormat::kFavicon2, &parsed));
   EXPECT_EQ(2.1f, parsed.device_scale_factor);
 
-  path = "?scale_factor=-1";
-  EXPECT_FALSE(chrome::ParseFaviconPath(
-      path, chrome::FaviconUrlFormat::kFavicon2, &parsed));
+  EXPECT_FALSE(
+      chrome::ParseFaviconPath("?scale_factor=-1&url=https%3A%2F%2Fg.com",
+                               chrome::FaviconUrlFormat::kFavicon2, &parsed));
 }
 
 TEST_F(FaviconUrlParserTest, Favicon2ParsingIconUrlParam) {
   chrome::ParsedFaviconPath parsed;
 
-  std::string path = "?url_type=icon_url";
-  EXPECT_TRUE(chrome::ParseFaviconPath(
-      path, chrome::FaviconUrlFormat::kFavicon2, &parsed));
+  EXPECT_TRUE(
+      chrome::ParseFaviconPath("?url_type=icon_url&url=https%3A%2F%2Fg.com",
+                               chrome::FaviconUrlFormat::kFavicon2, &parsed));
   EXPECT_TRUE(parsed.is_icon_url);
 
-  path = "?url_type=page_url";
-  EXPECT_TRUE(chrome::ParseFaviconPath(
-      path, chrome::FaviconUrlFormat::kFavicon2, &parsed));
+  EXPECT_TRUE(
+      chrome::ParseFaviconPath("?url_type=page_url&url=https%3A%2F%2Fg.com",
+                               chrome::FaviconUrlFormat::kFavicon2, &parsed));
   EXPECT_FALSE(parsed.is_icon_url);
 
-  path = "?url_type=invalid";
+  EXPECT_FALSE(
+      chrome::ParseFaviconPath("?url_type=invalid&url=https%3A%2F%2Fg.com",
+                               chrome::FaviconUrlFormat::kFavicon2, &parsed));
+}
+
+TEST_F(FaviconUrlParserTest, Favicon2ParsingUrlParam) {
+  chrome::ParsedFaviconPath parsed;
+
+  // Url parameter is mandatory.
   EXPECT_FALSE(chrome::ParseFaviconPath(
-      path, chrome::FaviconUrlFormat::kFavicon2, &parsed));
+      "?", chrome::FaviconUrlFormat::kFavicon2, &parsed));
+
+  // Url parameter is mandatory.
+  EXPECT_TRUE(chrome::ParseFaviconPath("?url=https%3A%2F%2Fg.com",
+                                       chrome::FaviconUrlFormat::kFavicon2,
+                                       &parsed));
+  EXPECT_EQ(parsed.url, "https://g.com");
+}
+
+TEST_F(FaviconUrlParserTest, Favicon2ParsingAllowFallbackParam) {
+  chrome::ParsedFaviconPath parsed;
+
+  // If request is by icon url, fallback parameter should have no effect.
+  EXPECT_TRUE(chrome::ParseFaviconPath(
+      "?url_type=icon_url&allow_google_server_fallback=1&url=https%3A%"
+      "2F%2Fg.com",
+      chrome::FaviconUrlFormat::kFavicon2, &parsed));
+  EXPECT_FALSE(parsed.allow_favicon_server_fallback);
+
+  EXPECT_FALSE(chrome::ParseFaviconPath(
+      "?url_type=page_url&allow_google_server_fallback=invalid&url=https%"
+      "3A%2F%2Fg.com",
+      chrome::FaviconUrlFormat::kFavicon2, &parsed));
+
+  EXPECT_TRUE(chrome::ParseFaviconPath(
+      "?url_type=page_url&allow_google_server_fallback=0&url=https%3A%"
+      "2F%2Fg.com",
+      chrome::FaviconUrlFormat::kFavicon2, &parsed));
+  EXPECT_FALSE(parsed.allow_favicon_server_fallback);
+
+  EXPECT_TRUE(chrome::ParseFaviconPath(
+      "?url_type=page_url&allow_google_server_fallback=1&url=https%3A%"
+      "2F%2Fg.com",
+      chrome::FaviconUrlFormat::kFavicon2, &parsed));
+  EXPECT_TRUE(parsed.allow_favicon_server_fallback);
 }
diff --git a/components/feed/core/feed_scheduler_host.cc b/components/feed/core/feed_scheduler_host.cc
index 689f55f..4e6bd1d 100644
--- a/components/feed/core/feed_scheduler_host.cc
+++ b/components/feed/core/feed_scheduler_host.cc
@@ -507,8 +507,8 @@
   return last_fetch_status_;
 }
 
-TriggerType FeedSchedulerHost::GetLastFetchTriggerTypeForDebugging() const {
-  return last_fetch_trigger_type_;
+TriggerType* FeedSchedulerHost::GetLastFetchTriggerTypeForDebugging() const {
+  return last_fetch_trigger_type_.get();
 }
 
 void FeedSchedulerHost::OnEulaAccepted() {
@@ -602,7 +602,7 @@
       clock_->Now() +
       base::TimeDelta::FromSeconds(kTimeoutDurationSeconds.Get());
 
-  last_fetch_trigger_type_ = trigger;
+  last_fetch_trigger_type_ = std::make_unique<TriggerType>(trigger);
 
   return kShouldRefresh;
 }
diff --git a/components/feed/core/feed_scheduler_host.h b/components/feed/core/feed_scheduler_host.h
index cb19bc2..7407555 100644
--- a/components/feed/core/feed_scheduler_host.h
+++ b/components/feed/core/feed_scheduler_host.h
@@ -146,7 +146,7 @@
   // Surface the TriggerType for the last ShouldRefresh check that resulted in
   // kShouldRefresh. Callers of ShouldRefresh are presumed to follow with the
   // actual refresh.
-  TriggerType GetLastFetchTriggerTypeForDebugging() const;
+  TriggerType* GetLastFetchTriggerTypeForDebugging() const;
 
  private:
   FRIEND_TEST_ALL_PREFIXES(FeedSchedulerHostTest, GetTriggerThreshold);
@@ -234,7 +234,7 @@
   int last_fetch_status_ = 0;
 
   // Reason for last fetch for debugging.
-  TriggerType last_fetch_trigger_type_;
+  std::unique_ptr<TriggerType> last_fetch_trigger_type_;
 
   DISALLOW_COPY_AND_ASSIGN(FeedSchedulerHost);
 };
diff --git a/components/feed/core/feed_scheduler_host_unittest.cc b/components/feed/core/feed_scheduler_host_unittest.cc
index a0b42eb..a2ed458 100644
--- a/components/feed/core/feed_scheduler_host_unittest.cc
+++ b/components/feed/core/feed_scheduler_host_unittest.cc
@@ -1040,19 +1040,19 @@
   scheduler()->OnForegrounded();
 
   EXPECT_EQ(FeedSchedulerHost::TriggerType::kForegrounded,
-            scheduler()->GetLastFetchTriggerTypeForDebugging());
+            *scheduler()->GetLastFetchTriggerTypeForDebugging());
 
   scheduler()->OnArticlesCleared(/*suppress_refreshes*/ false);
 
   EXPECT_EQ(FeedSchedulerHost::TriggerType::kNtpShown,
-            scheduler()->GetLastFetchTriggerTypeForDebugging());
+            *scheduler()->GetLastFetchTriggerTypeForDebugging());
 
   ClassifyAsActiveSuggestionsConsumer();  // Fixed timer at 48 hours.
   test_clock()->Advance(TimeDelta::FromHours(49));
   scheduler()->OnFixedTimer(base::OnceClosure());
 
   EXPECT_EQ(FeedSchedulerHost::TriggerType::kFixedTimer,
-            scheduler()->GetLastFetchTriggerTypeForDebugging());
+            *scheduler()->GetLastFetchTriggerTypeForDebugging());
 }
 
 }  // namespace feed
diff --git a/components/google/core/browser/google_url_tracker.cc b/components/google/core/browser/google_url_tracker.cc
index f7fb266..519f838b 100644
--- a/components/google/core/browser/google_url_tracker.cc
+++ b/components/google/core/browser/google_url_tracker.cc
@@ -27,8 +27,6 @@
     "https://www.google.com/";
 const char GoogleURLTracker::kSearchDomainCheckURL[] =
     "https://www.google.com/searchdomaincheck?format=domain&type=chrome";
-const base::Feature GoogleURLTracker::kNoSearchDomainCheck{
-    "NoSearchDomainCheck", base::FEATURE_ENABLED_BY_DEFAULT};
 
 GoogleURLTracker::GoogleURLTracker(
     std::unique_ptr<GoogleURLTrackerClient> client,
diff --git a/components/google/core/browser/google_url_tracker.h b/components/google/core/browser/google_url_tracker.h
index 96532d8c..44e3028 100644
--- a/components/google/core/browser/google_url_tracker.h
+++ b/components/google/core/browser/google_url_tracker.h
@@ -49,6 +49,8 @@
     // Use current local Google TLD.
     // Defer network requests to update TLD until 5 seconds after
     // creation, to avoid an expensive load during Chrome startup.
+    //
+    // TODO(https://crbug.com/973591): This is unused now. Remove it.
     NORMAL_MODE,
 
     // Always use www.google.com.
@@ -57,12 +59,6 @@
 
   static const char kDefaultGoogleHomepage[];
 
-  // Flag to disable /searchdomaincheck lookups in Chrome and instead always use
-  // google.com. The tracker should be used in ALWAYS_DOT_COM_MODE when this
-  // flag is enabled.
-  // For more details, see http://goto.google.com/chrome-no-searchdomaincheck.
-  static const base::Feature kNoSearchDomainCheck;
-
   // Only the GoogleURLTrackerFactory and tests should call this.
   // |network_connection_tracker| should be the global singleton instance and
   // should outlive the GoogleURLTracker object.
diff --git a/components/history/content/browser/download_conversions.cc b/components/history/content/browser/download_conversions.cc
index 60dc386d..4dcf7d5f 100644
--- a/components/history/content/browser/download_conversions.cc
+++ b/components/history/content/browser/download_conversions.cc
@@ -5,6 +5,7 @@
 #include "components/history/content/browser/download_conversions.h"
 
 #include "base/logging.h"
+#include "components/download/public/common/download_danger_type.h"
 #include "components/history/core/browser/download_constants.h"
 
 namespace history {
@@ -71,6 +72,8 @@
       return download::DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED;
     case DownloadDangerType::WHITELISTED_BY_POLICY:
       return download::DOWNLOAD_DANGER_TYPE_WHITELISTED_BY_POLICY;
+    case DownloadDangerType::ASYNC_SCANNING:
+      return download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING;
     case DownloadDangerType::INVALID:
       NOTREACHED();
       return download::DOWNLOAD_DANGER_TYPE_MAX;
@@ -102,6 +105,8 @@
       return DownloadDangerType::POTENTIALLY_UNWANTED;
     case download::DOWNLOAD_DANGER_TYPE_WHITELISTED_BY_POLICY:
       return DownloadDangerType::WHITELISTED_BY_POLICY;
+    case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
+      return DownloadDangerType::ASYNC_SCANNING;
     default:
       NOTREACHED();
       return DownloadDangerType::INVALID;
diff --git a/components/history/core/browser/download_constants.h b/components/history/core/browser/download_constants.h
index 78530f34..0f87d6f 100644
--- a/components/history/core/browser/download_constants.h
+++ b/components/history/core/browser/download_constants.h
@@ -36,6 +36,7 @@
   DANGEROUS_HOST = 7,
   POTENTIALLY_UNWANTED = 8,
   WHITELISTED_BY_POLICY = 9,
+  ASYNC_SCANNING = 10,
 };
 
 // DownloadId represents the id of a DownloadRow into the DownloadDatabase.
diff --git a/components/history/core/browser/download_types.cc b/components/history/core/browser/download_types.cc
index 1c74085..0234542 100644
--- a/components/history/core/browser/download_types.cc
+++ b/components/history/core/browser/download_types.cc
@@ -64,6 +64,7 @@
     case DownloadDangerType::DANGEROUS_HOST:
     case DownloadDangerType::POTENTIALLY_UNWANTED:
     case DownloadDangerType::WHITELISTED_BY_POLICY:
+    case DownloadDangerType::ASYNC_SCANNING:
       return static_cast<DownloadDangerType>(danger_type);
 
     case DownloadDangerType::INVALID:
@@ -103,6 +104,8 @@
       return stream << "history::DownloadDangerType::POTENTIALLY_UNWANTED";
     case DownloadDangerType::WHITELISTED_BY_POLICY:
       return stream << "history::DownloadDangerType::WHITELISTED_BY_POLICY";
+    case DownloadDangerType::ASYNC_SCANNING:
+      return stream << "history::DownloadDangerType::ASYNC_SCANNING";
   }
   NOTREACHED();
   return stream;
diff --git a/components/history/core/browser/expire_history_backend.cc b/components/history/core/browser/expire_history_backend.cc
index 631b25a2ac..fa3e60a 100644
--- a/components/history/core/browser/expire_history_backend.cc
+++ b/components/history/core/browser/expire_history_backend.cc
@@ -333,6 +333,43 @@
   ParanoidExpireHistory();
 }
 
+void ExpireHistoryBackend::ClearOldOnDemandFaviconsIfPossible(
+    base::Time expiration_threshold) {
+  if (!thumb_db_)
+    return;
+
+  // Extra precaution to avoid repeated calls to GetOldOnDemandFavicons() close
+  // in time, since it can be fairly expensive.
+  if (expiration_threshold <
+      last_on_demand_expiration_threshold_ +
+          base::TimeDelta::FromHours(kClearOnDemandFaviconsIntervalHours)) {
+    return;
+  }
+
+  last_on_demand_expiration_threshold_ = expiration_threshold;
+
+  std::map<favicon_base::FaviconID, IconMappingsForExpiry> icon_mappings =
+      thumb_db_->GetOldOnDemandFavicons(expiration_threshold);
+  DeleteEffects effects;
+
+  for (auto id_and_mappings_pair : icon_mappings) {
+    favicon_base::FaviconID icon_id = id_and_mappings_pair.first;
+    const IconMappingsForExpiry& mappings = id_and_mappings_pair.second;
+
+    if (backend_client_ &&
+        IsAnyURLPinned(backend_client_, mappings.page_urls)) {
+      continue;
+    }
+
+    thumb_db_->DeleteFavicon(icon_id);
+    thumb_db_->DeleteIconMappingsForFaviconId(icon_id);
+    effects.deleted_favicons.insert(mappings.icon_url);
+  }
+
+  BroadcastNotifications(&effects, DELETION_EXPIRED,
+                         DeletionTimeRange::Invalid(), base::nullopt);
+}
+
 void ExpireHistoryBackend::InitWorkQueue() {
   DCHECK(work_queue_.empty()) << "queue has to be empty prior to init";
 
@@ -588,43 +625,6 @@
   ScheduleExpire();
 }
 
-void ExpireHistoryBackend::ClearOldOnDemandFaviconsIfPossible(
-    base::Time expiration_threshold) {
-  if (!thumb_db_)
-    return;
-
-  // Extra precaution to avoid repeated calls to GetOldOnDemandFavicons() close
-  // in time, since it can be fairly expensive.
-  if (expiration_threshold <
-      last_on_demand_expiration_threshold_ +
-          base::TimeDelta::FromHours(kClearOnDemandFaviconsIntervalHours)) {
-    return;
-  }
-
-  last_on_demand_expiration_threshold_ = expiration_threshold;
-
-  std::map<favicon_base::FaviconID, IconMappingsForExpiry> icon_mappings =
-      thumb_db_->GetOldOnDemandFavicons(expiration_threshold);
-  DeleteEffects effects;
-
-  for (auto id_and_mappings_pair : icon_mappings) {
-    favicon_base::FaviconID icon_id = id_and_mappings_pair.first;
-    const IconMappingsForExpiry& mappings = id_and_mappings_pair.second;
-
-    if (backend_client_ &&
-        IsAnyURLPinned(backend_client_, mappings.page_urls)) {
-      continue;
-    }
-
-    thumb_db_->DeleteFavicon(icon_id);
-    thumb_db_->DeleteIconMappingsForFaviconId(icon_id);
-    effects.deleted_favicons.insert(mappings.icon_url);
-  }
-
-  BroadcastNotifications(&effects, DELETION_EXPIRED,
-                         DeletionTimeRange::Invalid(), base::nullopt);
-}
-
 bool ExpireHistoryBackend::ExpireSomeOldHistory(
     base::Time end_time,
     const ExpiringVisitsReader* reader,
diff --git a/components/history/core/browser/expire_history_backend.h b/components/history/core/browser/expire_history_backend.h
index 98b9205..f10c9c2 100644
--- a/components/history/core/browser/expire_history_backend.h
+++ b/components/history/core/browser/expire_history_backend.h
@@ -98,6 +98,11 @@
   // accordingly.
   void ExpireHistoryBeforeForTesting(base::Time end_time);
 
+  // Clears all old on-demand favicons from thumbnail database. Fails silently
+  // (we don't care about favicons so much, so don't want to stop everything if
+  // it fails).
+  void ClearOldOnDemandFaviconsIfPossible(base::Time expiration_threshold);
+
   // Returns the current cut-off time before which we will start expiring stuff.
   // Note that this as an absolute time rather than a delta, so the caller
   // should not save it.
@@ -235,11 +240,6 @@
   // future.
   void DoExpireIteration();
 
-  // Clears all old on-demand favicons from thumbnail database. Fails silently
-  // (we don't care about favicons so much, so don't want to stop everything if
-  // it fails).
-  void ClearOldOnDemandFaviconsIfPossible(base::Time expiration_threshold);
-
   // Tries to expire the oldest |max_visits| visits from history that are older
   // than |time_threshold|. The return value indicates if we think there might
   // be more history to expire with the current time threshold (it does not
diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc
index bc15cc9..3bbc41a 100644
--- a/components/history/core/browser/history_backend.cc
+++ b/components/history/core/browser/history_backend.cc
@@ -2819,6 +2819,10 @@
   return true;
 }
 
+void HistoryBackend::ClearAllOnDemandFavicons() {
+  expirer_.ClearOldOnDemandFaviconsIfPossible(base::Time::Now());
+}
+
 bool HistoryBackend::ClearAllMainHistory(const URLRows& kept_urls) {
   // Create the duplicate URL table. We will copy the kept URLs into this.
   if (!db_->CreateTemporaryURLTable())
diff --git a/components/history/core/browser/history_backend.h b/components/history/core/browser/history_backend.h
index 0551f05..65256ee 100644
--- a/components/history/core/browser/history_backend.h
+++ b/components/history/core/browser/history_backend.h
@@ -210,6 +210,9 @@
 
   void ClearCachedDataForContextID(ContextID context_id);
 
+  // Clears all on-demand favicons from thumbnail database.
+  void ClearAllOnDemandFavicons();
+
   // Gets the counts and last last time of URLs that belong to |origins| in the
   // history database. Origins that are not in the history database will be in
   // the map with a count and time of 0.
diff --git a/components/history/core/browser/history_service.cc b/components/history/core/browser/history_service.cc
index bb345f39..9d37ceb 100644
--- a/components/history/core/browser/history_service.cc
+++ b/components/history/core/browser/history_service.cc
@@ -201,6 +201,12 @@
                               history_backend_, context_id));
 }
 
+void HistoryService::ClearAllOnDemandFavicons() {
+  ScheduleTask(PRIORITY_NORMAL,
+               base::BindOnce(&HistoryBackend::ClearAllOnDemandFavicons,
+                              history_backend_));
+}
+
 URLDatabase* HistoryService::InMemoryDatabase() {
   DCHECK(thread_checker_.CalledOnValidThread());
   return in_memory_backend_ ? in_memory_backend_->db() : nullptr;
diff --git a/components/history/core/browser/history_service.h b/components/history/core/browser/history_service.h
index 5e7c8987..a675c024 100644
--- a/components/history/core/browser/history_service.h
+++ b/components/history/core/browser/history_service.h
@@ -121,6 +121,9 @@
   // out any cached data associated with that context.
   void ClearCachedDataForContextID(ContextID context_id);
 
+  // Clears all on-demand favicons from thumbnail database.
+  void ClearAllOnDemandFavicons();
+
   // Triggers the backend to load if it hasn't already, and then returns the
   // in-memory URL database. The returned pointer may be null if the in-memory
   // database has not been loaded yet. This pointer is owned by the history
diff --git a/components/invalidation/images/InvalidationService.png b/components/invalidation/images/InvalidationService.png
new file mode 100644
index 0000000..8254815
--- /dev/null
+++ b/components/invalidation/images/InvalidationService.png
Binary files differ
diff --git a/components/invalidation/impl/README.md b/components/invalidation/impl/README.md
new file mode 100644
index 0000000..3a57ff5
--- /dev/null
+++ b/components/invalidation/impl/README.md
@@ -0,0 +1,178 @@
+# Invalidations Component
+
+### Introduction
+Let's start with an example.  On Chrome OS there exists a concept called
+"policy" - one can think of them as dynamic flags that change Chrome's
+behaviour.  They are changed on the Admin Panel from where they get propagated
+to Chrome OS devices.  There is a scheduled "poll job" that fetches those
+policies every N hours, but preferably we would like to have the latest policy
+in matter of minutes/seconds.  We could shorten the polling interval to 1
+minute, but that would put a very high unnecessary load on the servers.  To
+solve this problem we introduce a concept called "invalidation" where the server
+notifies the devices when their policy changes and then they fetch the new
+policy - note that this way the devices only fetch the policy when needed.
+
+Invalidation Service - the word comes from cache invalidation. Imagine you have
+a database which has some objects in it. Cache is just a quick access copy of
+those objects. When an object changes in the database so should the copy of that
+object in cache.
+
+If we consider the client device as a cache then whenever some object changes in
+the server, so should the copy of this object in the client device. All the
+invalidation related interaction between client device and server is done
+through Invalidation Service.
+
+**Invalidation** (message to invalidate some object) is sent and received using
+a publish/subscribe service. We have a couple of those publish/subscribe
+services, some of which are Tango - [go/tango](http://go/tango) and Fandango -
+[go/fandango](http://go/fandango).
+
+In general the whole thing looks as follows:
+![Invalidations component UML](../images/InvalidationService.png)
+
+***
+
+### InvalidationHandler
+
+**InvalidationHandler** - is a client of InvalidationService (see below).
+Everyone who wants to use InvalidationService to receive Invalidation
+(notification of change in some object) needs to implement
+**InvalidationHandler** to receive those messages. **InvalidationHandler** has
+the following methods (the list is not full):
+
+* **OnIncomingInvalidation** - is called from InvalidationService to notify
+about incoming Invalidation.
+
+At the end of documentation, one can find the additional material for adding
+**InvalidationHandler**.
+
+***
+
+### InvalidationService
+
+Class **InvalidationService** is just an interface which provides the following
+methods (the list is not exhaustive).
+
+* **RegisterInvalidationHandler** - allows InvalidationHandler to register
+itself as a observer for Invalidations. **InvalidationService** will only
+dispatch messages to registered handlers.
+
+* **UpdateRegisteredInvalidationIds** - allows InvalidationHandler to change the
+ids of Objects it is interested in receiving Invalidations for.
+
+* **UnregisterInvalidationHandler** - when InvalidationHandler unregisters it
+stops receiving Invalidations.
+
+***
+
+### FCMInvalidationService
+
+**FCMInvalidationService** - is the implementation of InvalidationService that
+uses [Fandango](http://go/fandango) as its publish/subscribe service.
+
+**FCMInvalidationService** is the main entry point for InvalidationHandler. This
+is where InvalidationHandler registers/unregisters itself in
+InvalidationService, and registers Objects to invalidate. When a message comes,
+**FCMInvalidationService** calls OnIncomingInvalidation for the receiving
+InvalidationHandler.
+
+Actually **FCMInvalidationService** just provides the abstraction above for
+InvalidationHandler, while in fact it just manages
+InvalidatorRegistrarWithMemory and FCMInvalidationListener, who do the actual
+work.
+
+***
+
+### InvalidatorRegistrarWithMemory
+
+**InvalidatorRegistrarWithMemory** stores registered InvalidationHandlers,
+stores objects to invalidate and stores mapping between objects and
+InvalidationHandlers to know which InvalidationHandlers are interested in which
+objects. When a message comes from FCMInvalidationListener,
+**InvalidatorRegistrarWithMemory** dispatches that message (Invalidation) to the
+receiving InvalidationHandler.
+
+***
+
+### FCMInvalidationListener
+
+**FCMInvalidationListener** just gets the list of topics to subscribe from
+FCMInvalidationService, and when **FCMInvalidationListener** receives
+Invalidations on those topics, it just passes them up to FCMInvalidationService.
+
+And again the description above is just a good abstraction of
+**FCMInvalidationListener** for FCMInvalidationService, while in fact
+**FCMInvalidationListener** manages PerUserTopicRegistrationManager and
+FCMNetworkHandler who do the actual work.
+
+***
+
+### PerUserTopicRegistrationManager
+
+**PerUserTopicRegistrationManager** manages subscriptions to topics. Topics in
+this case are objects we are interested in invalidating.
+
+***
+
+### FCMNetworkHandler
+
+**FCMNetworkHandler** is the class responsible for communication via GCM
+channel. Provides the following functionality:
+
+* Retrieves the auth token required for the subscription. When this token is
+received, it is passed to PerUserTopicRegistrationManager which subscribes to
+topics with the given auth token.
+
+* Receives messages from GCM driver and passes them up to
+FCMInvalidationListener, where they are converted to Invalidations.
+
+***
+
+### TiclInvalidationService (deprecated)
+
+TiclInvalidationService - is the implementation of InvalidationService that uses
+[Tango](http://go/tango) as its publish/subscribe service.
+
+***
+
+## For those who want to add InvalidationHandler
+
+### Public vs. Private topics
+
+FCMInvalidationService has a different registration process for public and
+private topics. When registering with a public topic, publish/subscribe service
+will fan out all outgoing messages to all devices subscribed to this topic. For
+example: If a device subscribes to "DeviceGuestModeEnabled" public topic all
+instances subscribed to this topic will receive all outgoing messages addressed
+to topic "DeviceGuestModeEnabled". But if 2 devices with different InstanceID
+subscribe to private topic "BOOKMARK", they will receive different set of
+messages addressed to pair ("BOOKMARK", InstanceID) respectively.
+
+### Project Id
+
+In the UML diagram above there are 3 classes that inherit from
+InvalidationHandler:
+
+* SyncEngineImpl
+
+* CloudPolicyInvalidator
+
+* DriveNotificationManager
+
+There is a notion of SenderId which is different for every InvalidationHandler.
+SenderId is used when registering to topics, to receive a topic of a particular
+sender. So for example server side logic of CloudPolicy posts messages using
+SenderId of "1013309121859", and client side logic which is
+CloudPolicyInvalidator should register to topics using the SenderId
+"1013309121859".
+
+### InvalidationService for profile and for device
+
+Usually InvalidationService is bound to a profile which can be spinned up using
+**ProfileInvalidationProviderFactory**, but sometimes there is no profile as in
+the special case of CloudPolicyInvalidator. CloudPolicyInvalidator is interested
+in receiving Invalidations on policies. Chrome OS team defines 2 types of
+policies - User and Device. Device policies should be received even when there
+is no one signed in to a Chrome OS device, thus there is no profile. For this
+reason there is a special class **AffiliatedInvalidationServiceProvider** which
+spawns InvalidationService even when there is no profile.
diff --git a/components/metrics/call_stack_profile_builder.cc b/components/metrics/call_stack_profile_builder.cc
index 0b40e5b0..b35165d 100644
--- a/components/metrics/call_stack_profile_builder.cc
+++ b/components/metrics/call_stack_profile_builder.cc
@@ -48,7 +48,7 @@
 }
 
 std::map<uint64_t, int64_t> CreateMetadataMap(
-    base::ProfileBuilder::MetadataItemArray items,
+    base::MetadataRecorder::ItemArray items,
     size_t item_count) {
   std::map<uint64_t, int64_t> item_map;
   for (size_t i = 0; i < item_count; ++i) {
@@ -102,8 +102,10 @@
 CallStackProfileBuilder::CallStackProfileBuilder(
     const CallStackProfileParams& profile_params,
     const WorkIdRecorder* work_id_recorder,
+    const base::MetadataRecorder* metadata_recorder,
     base::OnceClosure completed_callback)
     : work_id_recorder_(work_id_recorder),
+      metadata_recorder_(metadata_recorder),
       profile_start_time_(base::TimeTicks::Now()) {
   completed_callback_ = std::move(completed_callback);
   sampled_profile_.set_process(
@@ -122,8 +124,7 @@
 // This function is invoked on the profiler thread while the target thread is
 // suspended so must not take any locks, including indirectly through use of
 // heap allocation, LOG, CHECK, or DCHECK.
-void CallStackProfileBuilder::RecordMetadata(
-    base::ProfileBuilder::MetadataProvider* metadata_provider) {
+void CallStackProfileBuilder::RecordMetadata() {
   if (work_id_recorder_) {
     unsigned int work_id = work_id_recorder_->RecordWorkId();
     // A work id of 0 indicates that the message loop has not yet started.
@@ -133,8 +134,8 @@
     }
   }
 
-  if (metadata_provider)
-    metadata_item_count_ = metadata_provider->GetItems(&metadata_items_);
+  if (metadata_recorder_)
+    metadata_item_count_ = metadata_recorder_->GetItems(&metadata_items_);
 }
 
 void CallStackProfileBuilder::OnSampleCompleted(
diff --git a/components/metrics/call_stack_profile_builder.h b/components/metrics/call_stack_profile_builder.h
index 9de8401..d141670 100644
--- a/components/metrics/call_stack_profile_builder.h
+++ b/components/metrics/call_stack_profile_builder.h
@@ -57,6 +57,7 @@
   explicit CallStackProfileBuilder(
       const CallStackProfileParams& profile_params,
       const WorkIdRecorder* work_id_recorder = nullptr,
+      const base::MetadataRecorder* metadata_recorder = nullptr,
       base::OnceClosure completed_callback = base::OnceClosure());
 
   ~CallStackProfileBuilder() override;
@@ -68,8 +69,7 @@
 
   // base::ProfileBuilder:
   base::ModuleCache* GetModuleCache() override;
-  void RecordMetadata(base::ProfileBuilder::MetadataProvider*
-                          metadata_provider = nullptr) override;
+  void RecordMetadata() override;
   void OnSampleCompleted(std::vector<base::Frame> frames) override;
   void OnProfileCompleted(base::TimeDelta profile_duration,
                           base::TimeDelta sampling_period) override;
@@ -113,6 +113,7 @@
   unsigned int last_work_id_ = std::numeric_limits<unsigned int>::max();
   bool is_continued_work_ = false;
   const WorkIdRecorder* const work_id_recorder_;
+  const base::MetadataRecorder* const metadata_recorder_;
 
   // The SampledProfile protobuf message which contains the collected stack
   // samples.
@@ -134,7 +135,7 @@
   const base::TimeTicks profile_start_time_;
 
   // The data fetched from the MetadataRecorder for the next sample.
-  base::ProfileBuilder::MetadataItemArray metadata_items_;
+  base::MetadataRecorder::ItemArray metadata_items_;
   size_t metadata_item_count_ = 0;
   // The data fetched from the MetadataRecorder for the previous sample.
   std::map<uint64_t, int64_t> previous_items_;
diff --git a/components/metrics/call_stack_profile_builder_unittest.cc b/components/metrics/call_stack_profile_builder_unittest.cc
index c3788bf..2d4900bb 100644
--- a/components/metrics/call_stack_profile_builder_unittest.cc
+++ b/components/metrics/call_stack_profile_builder_unittest.cc
@@ -53,6 +53,7 @@
   TestingCallStackProfileBuilder(
       const CallStackProfileParams& profile_params,
       const WorkIdRecorder* work_id_recorder = nullptr,
+      const base::MetadataRecorder* metadata_recorder = nullptr,
       base::OnceClosure completed_callback = base::OnceClosure());
 
   ~TestingCallStackProfileBuilder() override;
@@ -71,9 +72,11 @@
 TestingCallStackProfileBuilder::TestingCallStackProfileBuilder(
     const CallStackProfileParams& profile_params,
     const WorkIdRecorder* work_id_recorder,
+    const base::MetadataRecorder* metadata_recorder,
     base::OnceClosure completed_callback)
     : CallStackProfileBuilder(profile_params,
                               work_id_recorder,
+                              metadata_recorder,
                               std::move(completed_callback)) {}
 
 TestingCallStackProfileBuilder::~TestingCallStackProfileBuilder() = default;
@@ -91,7 +94,7 @@
   EXPECT_CALL(mock_closure, Run()).Times(1);
 
   auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(
-      kProfileParams, nullptr, mock_closure.Get());
+      kProfileParams, nullptr, nullptr, mock_closure.Get());
 
 #if defined(OS_WIN)
   uint64_t module_md5 = 0x46C3E4166659AC02ULL;
@@ -433,8 +436,8 @@
 
 TEST(CallStackProfileBuilderTest, MetadataRecorder_NoItems) {
   base::MetadataRecorder metadata_recorder;
-  auto profile_builder =
-      std::make_unique<TestingCallStackProfileBuilder>(kProfileParams, nullptr);
+  auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(
+      kProfileParams, nullptr, &metadata_recorder);
 
   TestModule module;
   base::Frame frame = {0x10, &module};
@@ -457,22 +460,16 @@
 
 TEST(CallStackProfileBuilderTest, MetadataRecorder_RepeatItem) {
   base::MetadataRecorder metadata_recorder;
-  auto profile_builder =
-      std::make_unique<TestingCallStackProfileBuilder>(kProfileParams, nullptr);
+  auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(
+      kProfileParams, nullptr, &metadata_recorder);
 
   TestModule module;
   base::Frame frame = {0x10, &module};
 
   metadata_recorder.Set(100, 10);
-  {
-    auto get_items = metadata_recorder.CreateMetadataProvider();
-    profile_builder->RecordMetadata(get_items.get());
-  }
+  profile_builder->RecordMetadata();
   profile_builder->OnSampleCompleted({frame});
-  {
-    auto get_items = metadata_recorder.CreateMetadataProvider();
-    profile_builder->RecordMetadata(get_items.get());
-  }
+  profile_builder->RecordMetadata();
   profile_builder->OnSampleCompleted({frame});
 
   profile_builder->OnProfileCompleted(base::TimeDelta::FromMilliseconds(500),
@@ -499,23 +496,17 @@
 
 TEST(CallStackProfileBuilderTest, MetadataRecorder_ModifiedItem) {
   base::MetadataRecorder metadata_recorder;
-  auto profile_builder =
-      std::make_unique<TestingCallStackProfileBuilder>(kProfileParams, nullptr);
+  auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(
+      kProfileParams, nullptr, &metadata_recorder);
 
   TestModule module;
   base::Frame frame = {0x10, &module};
 
   metadata_recorder.Set(100, 10);
-  {
-    auto get_items = metadata_recorder.CreateMetadataProvider();
-    profile_builder->RecordMetadata(get_items.get());
-  }
+  profile_builder->RecordMetadata();
   profile_builder->OnSampleCompleted({frame});
   metadata_recorder.Set(100, 11);
-  {
-    auto get_items = metadata_recorder.CreateMetadataProvider();
-    profile_builder->RecordMetadata(get_items.get());
-  }
+  profile_builder->RecordMetadata();
   profile_builder->OnSampleCompleted({frame});
 
   profile_builder->OnProfileCompleted(base::TimeDelta::FromMilliseconds(500),
@@ -545,25 +536,19 @@
 
 TEST(CallStackProfileBuilderTest, MetadataRecorder_NewItem) {
   base::MetadataRecorder metadata_recorder;
-  auto profile_builder =
-      std::make_unique<TestingCallStackProfileBuilder>(kProfileParams, nullptr);
+  auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(
+      kProfileParams, nullptr, &metadata_recorder);
 
   TestModule module;
   base::Frame frame = {0x10, &module};
 
   metadata_recorder.Set(100, 10);
-  {
-    auto get_items = metadata_recorder.CreateMetadataProvider();
-    profile_builder->RecordMetadata(get_items.get());
-  }
+  profile_builder->RecordMetadata();
   profile_builder->OnSampleCompleted({frame});
 
   metadata_recorder.Set(100, 11);
   metadata_recorder.Set(200, 20);
-  {
-    auto get_items = metadata_recorder.CreateMetadataProvider();
-    profile_builder->RecordMetadata(get_items.get());
-  }
+  profile_builder->RecordMetadata();
   profile_builder->OnSampleCompleted({frame});
 
   profile_builder->OnProfileCompleted(base::TimeDelta::FromMilliseconds(500),
@@ -597,23 +582,17 @@
 
 TEST(CallStackProfileBuilderTest, MetadataRecorder_RemovedItem) {
   base::MetadataRecorder metadata_recorder;
-  auto profile_builder =
-      std::make_unique<TestingCallStackProfileBuilder>(kProfileParams, nullptr);
+  auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(
+      kProfileParams, nullptr, &metadata_recorder);
 
   TestModule module;
   base::Frame frame = {0x10, &module};
 
   metadata_recorder.Set(100, 10);
-  {
-    auto get_items = metadata_recorder.CreateMetadataProvider();
-    profile_builder->RecordMetadata(get_items.get());
-  }
+  profile_builder->RecordMetadata();
   profile_builder->OnSampleCompleted({frame});
   metadata_recorder.Remove(100);
-  {
-    auto get_items = metadata_recorder.CreateMetadataProvider();
-    profile_builder->RecordMetadata(get_items.get());
-  }
+  profile_builder->RecordMetadata();
   profile_builder->OnSampleCompleted({frame});
 
   profile_builder->OnProfileCompleted(base::TimeDelta::FromMilliseconds(500),
diff --git a/components/optimization_guide/BUILD.gn b/components/optimization_guide/BUILD.gn
index 6289611..b405cb4 100644
--- a/components/optimization_guide/BUILD.gn
+++ b/components/optimization_guide/BUILD.gn
@@ -9,11 +9,15 @@
     "hints_component_util.h",
     "optimization_guide_constants.cc",
     "optimization_guide_constants.h",
+    "optimization_guide_features.cc",
+    "optimization_guide_features.h",
     "optimization_guide_prefs.cc",
     "optimization_guide_prefs.h",
     "optimization_guide_service.cc",
     "optimization_guide_service.h",
     "optimization_guide_service_observer.h",
+    "optimization_guide_switches.cc",
+    "optimization_guide_switches.h",
     "url_pattern_with_wildcards.cc",
     "url_pattern_with_wildcards.h",
   ]
@@ -22,6 +26,8 @@
     "//base",
     "//components/optimization_guide/proto:optimization_guide_proto",
     "//components/prefs",
+    "//google_apis",
+    "//net:net",
   ]
 }
 
@@ -43,6 +49,7 @@
   testonly = true
   sources = [
     "hints_component_util_unittest.cc",
+    "optimization_guide_features_unittest.cc",
     "optimization_guide_service_unittest.cc",
     "url_pattern_with_wildcards_unittest.cc",
   ]
diff --git a/components/optimization_guide/DEPS b/components/optimization_guide/DEPS
index eac0761..7c5091f 100644
--- a/components/optimization_guide/DEPS
+++ b/components/optimization_guide/DEPS
@@ -1,3 +1,5 @@
 include_rules = [
   "+components/prefs",
+  "+google_apis",
+  "+net",
 ]
diff --git a/components/optimization_guide/optimization_guide_constants.cc b/components/optimization_guide/optimization_guide_constants.cc
index fc40de5..f54c785 100644
--- a/components/optimization_guide/optimization_guide_constants.cc
+++ b/components/optimization_guide/optimization_guide_constants.cc
@@ -11,4 +11,7 @@
 
 const char kRulesetFormatVersionString[] = "1.0.0";
 
+const char kOptimizationGuideServiceDefaultURL[] =
+    "https://optimizationguide-pa.googleapis.com/v1:GetHints";
+
 }  // namespace optimization_guide
diff --git a/components/optimization_guide/optimization_guide_constants.h b/components/optimization_guide/optimization_guide_constants.h
index 14793b50..7639f450 100644
--- a/components/optimization_guide/optimization_guide_constants.h
+++ b/components/optimization_guide/optimization_guide_constants.h
@@ -14,6 +14,9 @@
 
 extern const char kRulesetFormatVersionString[];
 
+// The remote Optimization Guide Service production server to fetch hints from.
+extern const char kOptimizationGuideServiceDefaultURL[];
+
 }  // namespace optimization_guide
 
 #endif  // COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_GUIDE_CONSTANTS_H_
diff --git a/components/optimization_guide/optimization_guide_features.cc b/components/optimization_guide/optimization_guide_features.cc
new file mode 100644
index 0000000..5b51443
--- /dev/null
+++ b/components/optimization_guide/optimization_guide_features.cc
@@ -0,0 +1,116 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/optimization_guide/optimization_guide_features.h"
+
+#include "base/command_line.h"
+#include "base/feature_list.h"
+#include "base/logging.h"
+#include "base/metrics/field_trial.h"
+#include "base/metrics/field_trial_params.h"
+#include "build/build_config.h"
+#include "components/optimization_guide/optimization_guide_constants.h"
+#include "components/optimization_guide/optimization_guide_features.h"
+#include "components/optimization_guide/optimization_guide_switches.h"
+#include "google_apis/google_api_keys.h"
+#include "net/base/url_util.h"
+
+namespace optimization_guide {
+namespace features {
+
+// Enables the syncing of the Optimization Hints component, which provides
+// hints for what Previews can be applied on a page load.
+const base::Feature kOptimizationHints {
+  "OptimizationHints",
+#if defined(OS_ANDROID)
+      base::FEATURE_ENABLED_BY_DEFAULT
+#else   // !defined(OS_ANDROID)
+      base::FEATURE_DISABLED_BY_DEFAULT
+#endif  // defined(OS_ANDROID)
+};
+
+// Enables Optimization Hints that are marked as experimental. Optimizations are
+// marked experimental by setting an experiment name in the "experiment_name"
+// field of the Optimization proto. This allows experiments at the granularity
+// of a single PreviewType for a single host (or host suffix). The intent is
+// that optimizations that may not work properly for certain sites can be tried
+// at a small scale via Finch experiments. Experimental optimizations can be
+// activated by enabling this feature and passing an experiment name as a
+// parameter called "experiment_name" that matches the experiment name in the
+// Optimization proto.
+const base::Feature kOptimizationHintsExperiments{
+    "OptimizationHintsExperiments", base::FEATURE_DISABLED_BY_DEFAULT};
+
+// Provides slow page triggering parameters.
+const base::Feature kSlowPageTriggering{"PreviewsSlowPageTriggering",
+                                        base::FEATURE_DISABLED_BY_DEFAULT};
+
+// Enables fetching optimization hints from a remote Optimization Guide Service.
+const base::Feature kOptimizationHintsFetching{
+    "OptimizationHintsFetching", base::FEATURE_DISABLED_BY_DEFAULT};
+
+size_t MaxHintsFetcherTopHostBlacklistSize() {
+  // The blacklist will be limited to the most engaged hosts and will hold twice
+  // (2*N) as many hosts that the HintsFetcher request hints for. The extra N
+  // hosts on the blacklist are meant to cover the case that the engagement
+  // scores on some of the top N host engagement scores decay and they fall out
+  // of the top N.
+  return 2 * MaxHostsForOptimizationGuideServiceHintsFetch();
+}
+
+size_t MaxHostsForOptimizationGuideServiceHintsFetch() {
+  return GetFieldTrialParamByFeatureAsInt(
+      features::kOptimizationHintsFetching,
+      "max_hosts_for_optimization_guide_service_hints_fetch", 30);
+}
+
+base::TimeDelta StoredFetchedHintsFreshnessDuration() {
+  return base::TimeDelta::FromDays(GetFieldTrialParamByFeatureAsInt(
+      features::kOptimizationHintsFetching,
+      "max_store_duration_for_featured_hints_in_days", 7));
+}
+
+std::string GetOptimizationGuideServiceAPIKey() {
+  // Command line override takes priority.
+  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+  if (command_line->HasSwitch(switches::kOptimizationGuideServiceAPIKey)) {
+    return command_line->GetSwitchValueASCII(
+        switches::kOptimizationGuideServiceAPIKey);
+  }
+
+  return google_apis::GetAPIKey();
+}
+
+GURL GetOptimizationGuideServiceURL() {
+  // Command line override takes priority.
+  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+  if (command_line->HasSwitch(switches::kOptimizationGuideServiceURL)) {
+    // Assume the command line switch is correct and return it.
+    return GURL(command_line->GetSwitchValueASCII(
+        switches::kOptimizationGuideServiceURL));
+  }
+
+  std::string url = base::GetFieldTrialParamValueByFeature(
+      features::kOptimizationHintsFetching, "optimization_guide_service_url");
+  if (url.empty() || !GURL(url).SchemeIs(url::kHttpsScheme)) {
+    if (!url.empty())
+      LOG(WARNING)
+          << "Empty or invalid optimization_guide_service_url provided: "
+          << url;
+    return GURL(kOptimizationGuideServiceDefaultURL);
+  }
+
+  return GURL(url);
+}
+
+bool IsOptimizationHintsEnabled() {
+  return base::FeatureList::IsEnabled(features::kOptimizationHints);
+}
+
+bool IsHintsFetchingEnabled() {
+  return base::FeatureList::IsEnabled(features::kOptimizationHintsFetching);
+}
+
+}  // namespace features
+}  // namespace optimization_guide
diff --git a/components/optimization_guide/optimization_guide_features.h b/components/optimization_guide/optimization_guide_features.h
new file mode 100644
index 0000000..50385e8
--- /dev/null
+++ b/components/optimization_guide/optimization_guide_features.h
@@ -0,0 +1,55 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_GUIDE_FEATURES_H_
+#define COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_GUIDE_FEATURES_H_
+
+#include <string>
+#include <utility>
+
+#include "base/feature_list.h"
+#include "base/time/time.h"
+#include "url/gurl.h"
+
+namespace optimization_guide {
+namespace features {
+
+extern const base::Feature kOptimizationHints;
+extern const base::Feature kOptimizationHintsExperiments;
+constexpr char kOptimizationHintsExperimentNameParam[] = "experiment_name";
+extern const base::Feature kSlowPageTriggering;
+extern const base::Feature kOptimizationHintsFetching;
+
+// The maximum number of hosts that can be stored in the
+// |kHintsFetcherTopHostBlacklist| dictionary pref when initialized. The top
+// hosts will also be returned in order of most engaged. This prevents the most
+// engaged hosts in a user's history before DataSaver being enabled from being
+// requested until the user navigates to the host again.
+size_t MaxHintsFetcherTopHostBlacklistSize();
+
+// The maximum number of hosts allowed to be requested by the client to the
+// remote Optimzation Guide Service.
+size_t MaxHostsForOptimizationGuideServiceHintsFetch();
+
+// The amount of time a fetched hint will be considered fresh enough
+// to be used and remain in the HintCacheStore.
+base::TimeDelta StoredFetchedHintsFreshnessDuration();
+
+// The API key for the One Platform Optimization Guide Service.
+std::string GetOptimizationGuideServiceAPIKey();
+
+// The host for the One Platform Optimization Guide Service.
+GURL GetOptimizationGuideServiceURL();
+
+// Whether server optimization hints are enabled.
+bool IsOptimizationHintsEnabled();
+
+// Returns true if the feature to fetch hints from the remote Optimization Guide
+// Service is enabled.
+bool IsHintsFetchingEnabled();
+
+}  // namespace features
+}  // namespace optimization_guide
+
+#endif  // COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_GUIDE_FEATURES_H_
diff --git a/components/optimization_guide/optimization_guide_features_unittest.cc b/components/optimization_guide/optimization_guide_features_unittest.cc
new file mode 100644
index 0000000..a11774e8
--- /dev/null
+++ b/components/optimization_guide/optimization_guide_features_unittest.cc
@@ -0,0 +1,51 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/optimization_guide/optimization_guide_features.h"
+
+#include <string>
+
+#include "base/feature_list.h"
+#include "base/metrics/field_trial.h"
+#include "base/metrics/field_trial_params.h"
+#include "base/test/scoped_feature_list.h"
+#include "build/build_config.h"
+#include "components/optimization_guide/optimization_guide_constants.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace optimization_guide {
+
+namespace {
+
+TEST(OptimizationGuideFeaturesTest,
+     TestGetOptimizationGuideServiceURLHTTPSOnly) {
+  base::test::ScopedFeatureList scoped_feature_list;
+
+  scoped_feature_list.InitAndEnableFeatureWithParameters(
+      features::kOptimizationHintsFetching,
+      {{"optimization_guide_service_url", "http://NotAnHTTPSServer.com"}});
+
+  EXPECT_EQ(features::GetOptimizationGuideServiceURL().spec(),
+            kOptimizationGuideServiceDefaultURL);
+  EXPECT_TRUE(
+      features::GetOptimizationGuideServiceURL().SchemeIs(url::kHttpsScheme));
+}
+
+TEST(OptimizationGuideFeaturesTest,
+     TestGetOptimizationGuideServiceURLViaFinch) {
+  base::test::ScopedFeatureList scoped_feature_list;
+
+  std::string optimization_guide_service_url = "https://finchserver.com/";
+  scoped_feature_list.InitAndEnableFeatureWithParameters(
+      features::kOptimizationHintsFetching,
+      {{"optimization_guide_service_url", optimization_guide_service_url}});
+
+  EXPECT_EQ(features::GetOptimizationGuideServiceURL().spec(),
+            optimization_guide_service_url);
+}
+
+}  // namespace
+
+}  // namespace optimization_guide
diff --git a/components/optimization_guide/optimization_guide_switches.cc b/components/optimization_guide/optimization_guide_switches.cc
new file mode 100644
index 0000000..289afc9
--- /dev/null
+++ b/components/optimization_guide/optimization_guide_switches.cc
@@ -0,0 +1,43 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/optimization_guide/optimization_guide_switches.h"
+
+#include "base/command_line.h"
+
+namespace optimization_guide {
+namespace switches {
+
+// Overrides the Hints Protobuf that would come from the component updater. If
+// the value of this switch is invalid, regular hint processing is used.
+// The value of this switch should be a base64 encoding of a binary
+// Configuration message, found in optimization_guide's hints.proto. Providing a
+// valid value to this switch causes Chrome startup to block on hints parsing.
+const char kHintsProtoOverride[] = "optimization_guide_hints_override";
+
+// Overrides scheduling and time delays for fetching hints and causes a hints
+// fetch immediately on start up using the provided comma separate lists of
+// hosts.
+const char kFetchHintsOverride[] = "optimization-guide-fetch-hints-override";
+
+// Overrides the hints fetch scheduling and delay, causing a hints fetch
+// immediately on start up using the TopHostProvider. This is meant for testing.
+const char kFetchHintsOverrideTimer[] =
+    "optimization-guide-fetch-hints-override-timer";
+
+// Overrides the Optimization Guide Service URL that the HintsFetcher will
+// request remote hints from.
+const char kOptimizationGuideServiceURL[] = "optimization-guide-service-url";
+
+// Overrides the Optimization Guide Service API Key for remote requests to be
+// made.
+const char kOptimizationGuideServiceAPIKey[] =
+    "optimization-guide-service-api-key";
+
+// Purges the hint cache store on startup, so that it's guaranteed to be using
+// fresh data.
+const char kPurgeHintCacheStore[] = "purge_hint_cache_store";
+
+}  // namespace switches
+}  // namespace optimization_guide
diff --git a/components/optimization_guide/optimization_guide_switches.h b/components/optimization_guide/optimization_guide_switches.h
new file mode 100644
index 0000000..432cce6
--- /dev/null
+++ b/components/optimization_guide/optimization_guide_switches.h
@@ -0,0 +1,21 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_GUIDE_SWITCHES_H_
+#define COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_GUIDE_SWITCHES_H_
+
+namespace optimization_guide {
+namespace switches {
+
+extern const char kHintsProtoOverride[];
+extern const char kFetchHintsOverride[];
+extern const char kFetchHintsOverrideTimer[];
+extern const char kOptimizationGuideServiceURL[];
+extern const char kOptimizationGuideServiceAPIKey[];
+extern const char kPurgeHintCacheStore[];
+
+}  // namespace switches
+}  // namespace optimization_guide
+
+#endif  // COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_GUIDE_SWITCHES_H_
diff --git a/components/password_manager/content/browser/content_credential_manager.cc b/components/password_manager/content/browser/content_credential_manager.cc
index 16f49f4..d857c92 100644
--- a/components/password_manager/content/browser/content_credential_manager.cc
+++ b/components/password_manager/content/browser/content_credential_manager.cc
@@ -14,14 +14,14 @@
 
 ContentCredentialManager::ContentCredentialManager(
     PasswordManagerClient* client)
-    : impl_(client), binding_(this) {}
+    : impl_(client) {}
 
 ContentCredentialManager::~ContentCredentialManager() {}
 
 void ContentCredentialManager::BindRequest(
-    blink::mojom::CredentialManagerRequest request) {
-  DCHECK(!binding_.is_bound());
-  binding_.Bind(std::move(request));
+    mojo::PendingReceiver<blink::mojom::CredentialManager> receiver) {
+  DCHECK(!receiver_.is_bound());
+  receiver_.Bind(std::move(receiver));
 
   // The browser side will close the message pipe on DidFinishNavigation before
   // the renderer side would be destroyed, and the renderer never explicitly
@@ -29,16 +29,16 @@
   // case the renderer will try to reconnect when the next call to the API is
   // made. Make sure this implementation will no longer be bound to a broken
   // pipe once that happens, so the DCHECK above will succeed.
-  binding_.set_connection_error_handler(base::BindOnce(
+  receiver_.set_disconnect_handler(base::BindOnce(
       &ContentCredentialManager::DisconnectBinding, base::Unretained(this)));
 }
 
 bool ContentCredentialManager::HasBinding() const {
-  return binding_.is_bound();
+  return receiver_.is_bound();
 }
 
 void ContentCredentialManager::DisconnectBinding() {
-  binding_.Close();
+  receiver_.reset();
 }
 
 void ContentCredentialManager::Store(const CredentialInfo& credential,
diff --git a/components/password_manager/content/browser/content_credential_manager.h b/components/password_manager/content/browser/content_credential_manager.h
index 1368b0c..e24ff5a 100644
--- a/components/password_manager/content/browser/content_credential_manager.h
+++ b/components/password_manager/content/browser/content_credential_manager.h
@@ -7,7 +7,8 @@
 
 #include "components/password_manager/core/browser/credential_manager_impl.h"
 #include "components/password_manager/core/common/credential_manager_types.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom.h"
 
 class GURL;
@@ -25,7 +26,8 @@
   explicit ContentCredentialManager(PasswordManagerClient* client);
   ~ContentCredentialManager() override;
 
-  void BindRequest(blink::mojom::CredentialManagerRequest request);
+  void BindRequest(
+      mojo::PendingReceiver<blink::mojom::CredentialManager> receiver);
   bool HasBinding() const;
   void DisconnectBinding();
 
@@ -40,7 +42,7 @@
  private:
   CredentialManagerImpl impl_;
 
-  mojo::Binding<blink::mojom::CredentialManager> binding_;
+  mojo::Receiver<blink::mojom::CredentialManager> receiver_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ContentCredentialManager);
 };
diff --git a/components/password_manager/core/browser/BUILD.gn b/components/password_manager/core/browser/BUILD.gn
index 6734e40af..bd2db9c9 100644
--- a/components/password_manager/core/browser/BUILD.gn
+++ b/components/password_manager/core/browser/BUILD.gn
@@ -35,8 +35,6 @@
     "android_affiliation/affiliation_fetcher_delegate.h",
     "android_affiliation/affiliation_service.cc",
     "android_affiliation/affiliation_service.h",
-    "android_affiliation/affiliation_utils.cc",
-    "android_affiliation/affiliation_utils.h",
     "android_affiliation/facet_manager.cc",
     "android_affiliation/facet_manager.h",
     "android_affiliation/facet_manager_host.h",
@@ -216,6 +214,7 @@
     "//components/sync",
   ]
   deps = [
+    ":affiliation",
     ":csv",
     ":hash_password_manager",
     ":password_generator",
@@ -400,6 +399,7 @@
     "//url:url",
   ]
   deps = [
+    ":affiliation",
     "//base",
     "//components/autofill/core/common",
     "//net:net",
@@ -457,7 +457,6 @@
     "android_affiliation/affiliation_fetch_throttler_unittest.cc",
     "android_affiliation/affiliation_fetcher_unittest.cc",
     "android_affiliation/affiliation_service_unittest.cc",
-    "android_affiliation/affiliation_utils_unittest.cc",
     "android_affiliation/facet_manager_unittest.cc",
     "blacklisted_credentials_cleaner_unittest.cc",
     "browser_save_password_progress_logger_unittest.cc",
@@ -538,6 +537,8 @@
   }
 
   deps = [
+    ":affiliation",
+    ":affiliation_unittests",
     ":csv_unittests",
     ":hash_password_manager",
     ":password_generator",
@@ -624,3 +625,39 @@
     ]
   }
 }
+
+# TODO(crbug.com/974822): Ideally, all of the "android_affiliation/"
+# subdirectory would be in a separate BUILD.gn file inside that subdirectory.
+# However, this requires the big "browser" target here to be split in multiple
+# sub-targets to avoid circular dependencies. For now, at least the files from
+# "android_affiliation" which can be easily separated are made so, to limit the
+# growth of this technical debt.
+static_library("affiliation") {
+  sources = [
+    "android_affiliation/affiliation_utils.cc",
+    "android_affiliation/affiliation_utils.h",
+  ]
+  deps = [
+    "//base",
+    "//components/url_formatter",
+    "//components/variations",
+    "//net",
+    "//url",
+  ]
+}
+
+source_set("affiliation_unittests") {
+  testonly = true
+  sources = [
+    "android_affiliation/affiliation_utils_unittest.cc",
+  ]
+  deps = [
+    ":affiliation",
+    "//base",
+    "//components/autofill/core/common",
+    "//components/variations",
+    "//testing/gmock",
+    "//testing/gtest",
+    "//url",
+  ]
+}
diff --git a/components/password_manager/core/browser/password_generation_state.cc b/components/password_manager/core/browser/password_generation_state.cc
index 00a96c13..9a88a0574 100644
--- a/components/password_manager/core/browser/password_generation_state.cc
+++ b/components/password_manager/core/browser/password_generation_state.cc
@@ -14,6 +14,7 @@
 #include "components/password_manager/core/browser/password_form_manager_for_ui.h"
 #include "components/password_manager/core/browser/password_manager_client.h"
 #include "components/password_manager/core/browser/password_manager_driver.h"
+#include "components/password_manager/core/common/password_manager_features.h"
 
 namespace password_manager {
 namespace {
@@ -201,6 +202,11 @@
     PasswordForm generated,
     const FormFetcher& fetcher,
     base::WeakPtr<PasswordManagerDriver> driver) {
+  if (!base::FeatureList::IsEnabled(features::kGenerationNoOverwrites)) {
+    // If the feature not enabled, just proceed with the generation.
+    driver->GeneratedPasswordAccepted(generated.password_value);
+    return;
+  }
   // Clear the username value if there are already saved credentials with
   // the same username in order to prevent overwriting.
   std::vector<const PasswordForm*> matches = fetcher.GetNonFederatedMatches();
diff --git a/components/password_manager/core/browser/password_generation_state_unittest.cc b/components/password_manager/core/browser/password_generation_state_unittest.cc
index 28f5999..cd8ad1f1 100644
--- a/components/password_manager/core/browser/password_generation_state_unittest.cc
+++ b/components/password_manager/core/browser/password_generation_state_unittest.cc
@@ -6,6 +6,7 @@
 
 #include "base/memory/scoped_refptr.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/test/scoped_feature_list.h"
 #include "base/test/scoped_task_environment.h"
 #include "base/test/simple_test_clock.h"
 #include "components/password_manager/core/browser/fake_form_fetcher.h"
@@ -14,6 +15,7 @@
 #include "components/password_manager/core/browser/password_form_manager_for_ui.h"
 #include "components/password_manager/core/browser/stub_password_manager_client.h"
 #include "components/password_manager/core/browser/stub_password_manager_driver.h"
+#include "components/password_manager/core/common/password_manager_features.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -201,6 +203,8 @@
 }
 
 TEST_F(PasswordGenerationStateTest, GeneratedPasswordAccepted_UpdateUI) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(features::kGenerationNoOverwrites);
   MockPasswordManagerDriver driver;
   EXPECT_CALL(driver, GeneratedPasswordAccepted(_)).Times(0);
   std::unique_ptr<PasswordFormManagerForUI> ui_form =
@@ -220,6 +224,8 @@
 
 TEST_F(PasswordGenerationStateTest,
        GeneratedPasswordAccepted_UpdateUIDismissed) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(features::kGenerationNoOverwrites);
   MockPasswordManagerDriver driver;
   EXPECT_CALL(driver, GeneratedPasswordAccepted(_)).Times(0);
   std::unique_ptr<PasswordFormManagerForUI> ui_form =
@@ -229,6 +235,8 @@
 }
 
 TEST_F(PasswordGenerationStateTest, GeneratedPasswordAccepted_UpdateUINope) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(features::kGenerationNoOverwrites);
   MockPasswordManagerDriver driver;
   EXPECT_CALL(driver, GeneratedPasswordAccepted(_)).Times(0);
   std::unique_ptr<PasswordFormManagerForUI> ui_form =
@@ -238,6 +246,8 @@
 }
 
 TEST_F(PasswordGenerationStateTest, GeneratedPasswordAccepted_UpdateUINever) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(features::kGenerationNoOverwrites);
   MockPasswordManagerDriver driver;
   EXPECT_CALL(driver, GeneratedPasswordAccepted(_)).Times(0);
   std::unique_ptr<PasswordFormManagerForUI> ui_form =
@@ -247,6 +257,8 @@
 }
 
 TEST_F(PasswordGenerationStateTest, GeneratedPasswordAccepted_UpdateUISave) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(features::kGenerationNoOverwrites);
   MockPasswordManagerDriver driver;
   std::unique_ptr<PasswordFormManagerForUI> ui_form =
       SetUpOverwritingUI(driver.AsWeakPtr());
diff --git a/components/password_manager/core/common/password_manager_features.cc b/components/password_manager/core/common/password_manager_features.cc
index 6fa04c2..2f26fdb 100644
--- a/components/password_manager/core/common/password_manager_features.cc
+++ b/components/password_manager/core/common/password_manager_features.cc
@@ -72,6 +72,11 @@
 const base::Feature kTouchToFillAndroid = {"TouchToFillAndroid",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Forces password generation to ask user to update the password instead of
+// overwriting silently.
+const base::Feature kGenerationNoOverwrites = {
+    "GenerationNoOverwrites", base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Field trial identifier for password generation requirements.
 const char* kGenerationRequirementsFieldTrial =
     "PasswordGenerationRequirements";
diff --git a/components/password_manager/core/common/password_manager_features.h b/components/password_manager/core/common/password_manager_features.h
index 75c5ff2e..bdaae11 100644
--- a/components/password_manager/core/common/password_manager_features.h
+++ b/components/password_manager/core/common/password_manager_features.h
@@ -30,6 +30,7 @@
 extern const base::Feature kPasswordImport;
 extern const base::Feature kRecoverPasswordsForSyncUsers;
 extern const base::Feature kTouchToFillAndroid;
+extern const base::Feature kGenerationNoOverwrites;
 
 // Field trial and corresponding parameters.
 // To manually override this, start Chrome with the following parameters:
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index eb4151ef..23a51602 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -949,6 +949,7 @@
         'DeviceNativePrintersWhitelist',
         'PrintPreviewUseSystemDefaultPrinter',
         'UserNativePrintersAllowed',
+        'ExternalPrintServers',
       ]
     },
     {
@@ -16144,6 +16145,50 @@
       This policy when set to False, does not allow the device to trigger powerwash.
       When set to True, it allows the device to trigger powerwash.
       If left unset, it defaults to False, meaning it doesn't allow the device to powerwash.
+      '''
+    },
+    {
+      'name': 'ExternalPrintServers',
+      'type': 'dict',
+      'schema': {
+        'type': 'object',
+        'properties': {
+          'url': {
+            'description': 'URL to a JSON file with a list of print servers.',
+            'type': 'string',
+          },
+          'hash': {
+            'description': 'The SHA-256 hash of the file.',
+            'type': 'string',
+          },
+        },
+      },
+      'id': 572,
+      'supported_on': ['chrome_os:77-'],
+      'features': {
+        'dynamic_refresh': True,
+        'per_profile': True,
+      },
+      'example_value': {
+        "url": "https://example.com/printserverpolicy",
+        "hash": "deadbeefdeadbeefdeadbeefdeadbeefdeafdeadbeefdeadbeef"
+      },
+      'max_size': 1048576,
+      'caption': '''External print servers''',
+      'tags': [],
+      'desc': '''Provides configurations of available print servers.
+
+      This policy allows you to provide configuration of external print servers to <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> devices as JSON file.
+
+      The size of the file must not exceed 1MB and must contain an array of records (JSON objects). Each record must contain fields "url" and "display_name".
+
+      The file is downloaded and cached. The cryptographic hash is used to verify the integrity of the download. The file will be re-downloaded whenever the URL or the hash changes.
+
+      When this policy is set to correct value, devices will try to query specified print servers for available printers using IPP protocol.
+
+      If this policy is unset or set to incorrect value, no server printers are visible by users.
+
+      Currently, the number of print servers is limited to 16. Only the first 16 print servers from the list will be queried.
       ''',
     },
   ],
@@ -16935,6 +16980,6 @@
   ],
   'placeholders': [],
   'deleted_policy_ids': [412, 546, 562],
-  'highest_id_currently_used': 571,
+  'highest_id_currently_used': 572,
   'highest_atomic_group_id_currently_used': 37
 }
diff --git a/components/policy/resources/policy_templates_am.xtb b/components/policy/resources/policy_templates_am.xtb
index 0ea0560..b8e036ec 100644
--- a/components/policy/resources/policy_templates_am.xtb
+++ b/components/policy/resources/policy_templates_am.xtb
@@ -1606,15 +1606,6 @@
       ይህን መመሪያ እርስዎ ካላዋቀሩት <ph name="PRODUCT_NAME" /> የተለመደው የራሱን ነባሪ ማውጫ (መሣሪያ ስርዓት-ተኮር) ይጠቀማል።
 
        ስራ ላይ ሊውሉ የሚችሉ የተለዋዋጮች ዝርዝርን ለማግኘት https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables ይመለከቱ።</translation>
-<translation id="3904459740090265495">ይህ መመሪያ የአሳሹን በመለያ መግቢያ ባህሪ ይቆጣጠራል። ተጠቃሚው በመለያቸው ወደ <ph name="PRODUCT_NAME" /> መግባት እንደሚችሉና እንደ Chrome ስምረት ያሉ ከመለያ ጋር የሚዛመዱ አገልግሎቶችን መጠቀም ይችሉ እንደሆነ እንዲገልጹ ያስችልዎታል። 
-
-      ይህ መመሪያ ወደ «የአሳሽ በመለያ መግቢያን አሰናክል» የሚል ከተዋቀረ እንግዲህ ተጠቃሚው ወደ አሳሹ በመለያ ሊገባ እና በመለያ ላይ የተመሠረቱ አገልግሎቶችን መጠቀም አይችልም። በዚህ ሁኔታ ላይ እንደ Chrome ስምረት ያሉ የአሳሽ ደረጃ ባህሪያት ጥቅም ላይ ሊውሉ አይችሉም እና የሚገኙ አይሆኑም። ተጠቃሚው በመለያ ገብቶ ከነበረ እና መመሪያው «ተሰናክሏል» ወደ የሚል ከተዋቀረ በሚቀጥለው ጊዜ Chromeን ሲያሄዱ ዘግተው እንዲወጡ ይደረጋሉ፣ ነገር ግን እንደ ዕልባቶች፣ የይለፍ ቃላት ወዘተ. ያሉ የእነሱ አከባቢያዊ የመገለጫ ውሂብ እንደተጠበቁ እንዲቆዩ ይደረጋሉ። ተጠቃሚው በመለያ መግባት እና እንደ Gmail ያሉ የGoogle የድር አገልግሎቶችን መጠቀም ይችላል።
-
-      መመሪያው ወደ «የአሳሽ በመለያ መግባትን አንቃ» ከተዋቀረ ተጠቃሚው በመለያ ወደ አሳሹ እንዲገባ ይፈቀድለታል፣ እንዲሁም በመለያ እንደ Gmail ወዳሉ የGoogle ድር አገልግሎቶች ሲገባ በራስ-ሰር በመለያ እንዲገባ ይደረጋል። በመለያ ወደ አሳሹ እንዲገቡ መደረግ ማለት የተጠቃሚው መለያ መረጃ በአሳሹ ይያዛል ማለት ነው። ይሁንና፣ ይህ ማለት የChrome ስምረት በነባሪነት ይበራል ማለት አይደለም፤ ተጠቃሚው ይህን ባህሪ ለመጠቀም ለይቶ መርጦ መግባት አለበት። ይህን መመሪያ ማንቃት ተጠቃሚው የአሳሽ በመለያ መግባትን የሚፈቀደው ቅንብር እንዳያጠፋ ይከለክለዋል። የChrome ስምረትን ተገኝነት ለመቆጣጠር የ«SyncDisabled» መመሪያን ይጠቀሙ።
-
-      ይህ መመሪያ ወደ «የአሳሽ በመለያ መግባትን አስገድድ» ከተዋቀረ ተጠቃሚው የመለያ ምርጫ የንግግር ሳጥን ይቀርብለታልና አሳሹን ለመጠቀም መምረጥና በመለያ መግባት አለበት። ይህ ከመለያው ጋር በተጎዳኙ መመሪያዎች በሚተዳደሩ መለያዎች ተፈጻሚ መሆኑን እና መከበሩን ያረጋግጣል። በነባሪነት ለመለያው Chrome ስምረትን ይበራል፣ ስምረቱ በጎራ አስተዳዳሪ ወይም በ«SyncDisabled» መመሪያ ተሰናክሎ ካልሆነ በስተቀር። ነባሪው የBrowserGuestModeEnabled እሴት ወደ ሐሰት ይዋቀራል። አሁን ያሉ በመለያ ያልተገቡ መገለጫዎች እንደሚቆለፉና ይህ መመሪያ ከነቃ በኋላ ሊደረስባቸው የማይችሉ መሆናቸውን ልብ ይበሉ። ለተጨማሪ መረጃ የእገዛ ማእከል ጽሑፍን እዚህ ላይ ያንብቡ፦ https://support.google.com/chrome/a/answer/7572556።
-
-      ይህ መመሪያ ካልተዋቀረ ተጠቃሚው የአሳሹን በመለያ መግባት አማራጭን መጠቀም ይችል እንደሆነ መወሰን እንዲሁም እንደመሰለው ሊጠቀምበት ይችላል።</translation>
 <translation id="3911737181201537215">ይህ መመሪያ Android በሚያከናውነው የምዝግብ ማስታወሻ መያዝ ላይ ምንም ተጽዕኖ የለውም።</translation>
 <translation id="391531815696899618">ወደ እውነት ሲዋቀር በ<ph name="PRODUCT_OS_NAME" /> የፋይሎች መተግበሪያ የGoogle Drive ማመሳሰልን ያሰናክለዋል። በዚያ ጊዜ ምንም ውሂብ ወደ Google Drive አይሰቀልም።
 
diff --git a/components/policy/resources/policy_templates_ar.xtb b/components/policy/resources/policy_templates_ar.xtb
index de3ff8c..e00b90e4 100644
--- a/components/policy/resources/policy_templates_ar.xtb
+++ b/components/policy/resources/policy_templates_ar.xtb
@@ -1576,15 +1576,6 @@
       إذا لم تعيّن هذه السياسة، سيستخدم <ph name="PRODUCT_NAME" /> الدليل التلقائي المعتاد لديه (محدد للنظام الأساسي).
 
       اطلع على https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables للحصول على قائمة بالمتغيرات التي يمكن استخدامها.</translation>
-<translation id="3904459740090265495">‏تتحكَّم هذه السياسة في سلوك المتصفِّح عند تسجيل الدخول. وتتيح لك تحديد ما إذا كان المستخدم يمكنه تسجيل الدخول إلى <ph name="PRODUCT_NAME" /> من خلال حسابه واستخدام الخدمات المرتبطة بالحساب مثل "مزامنة Chrome".
-
-      في حال تحديد السياسة على "إيقاف تسجيل الدخول إلى المتصفِّح"، لن يتمكن المستخدم من تسجيل الدخول إلى المتصفِّح واستخدام الخدمات المستنِدة إلى الحساب. وفي هذه الحالة، لن تتوفَّر الميزات التي يقدّمها المتصفّح، مثل "مزامنة Chrome" ولن يتمكن المستخدم من استخدامها. وفي حال تسجيل دخول المستخدم وتحديد السياسة على "موقوفة"، سيتم تسجيل خروجه في المرة التالية التي يتم فيها تشغيل Chrome، ولكن سيستمر الاحتفاظ ببيانات الملف الشخصي المحلي، مثل الإشارات المرجعية وكلمات المرور وغيرها. وسيظل بإمكان المستخدم تسجيل الدخول إلى خدمات الويب من Google واستخدامها، مثل Gmail.
-
-      في حال تحديد السياسة على "تفعيل تسجيل الدخول إلى المتصفِّح"، حينئذٍ يُسمَح للمستخدم بتسجيل الدخول إلى المتصفِّح ويتم تسجيل دخوله تلقائيًا إلى المتصفِّح عند تسجيل الدخول إلى خدمات الويب من Google، مثل Gmail. يعني تسجيل الدخول إلى المتصفِّح أنه سيتم الاحتفاظ بمعلومات حساب المستخدم من خلال المتصفِّح. ومع ذلك، هذا لا يعني أنه سيتم تفعيل "مزامنة Chrome" تلقائيًا، بل سيكون على المستخدم تفعيل الميزة بشكلٍ منفصل لاستخدامها. وسيؤدي تفعيل هذه السياسة إلى منع المستخدم من إيقاف الإعداد الذي يسمح بتسجيل الدخول إلى المتصفِّح. وللتحكُّم في مدى توفّر "مزامنة Chrome"، يمكنك استخدام سياسة "SyncDisabled".
-
-      في حال تحديد السياسة على "فرض تسجيل الدخول إلى المتصفِّح"، يتم عرض مربع حوار "اختيار الحساب" للمستخدم، وسيكون عليه الاختيار وتسجيل الدخول إلى حساب لاستخدام المتصفِّح. ويضمن ذلك تطبيق السياسات المرتبطة بالحساب وتنفيذها بالنسبة إلى الحسابات المُدارة. يؤدي ذلك إلى تفعيل "مزامنة Chrome" للحساب تلقائيًا، باستثناء الحالة التي تم فيها إيقاف المزامنة من خلال مشرف النطاق أو عبر سياسة "SyncDisabled". سيتم تحديد القيمة التلقائية لسياسة BrowserGuestModeEnabled على "false". وتجدر الإشارة إلى أن الملفات الشخصية الحالية غير الموقَّعة سيتم إقفالها ولا يمكن الوصول إليها بعد تفعيل هذه السياسة. ولمزيد من المعلومات، يُرجى الاطِّلاع على مقالة مركز المساعدة: https://support.google.com/chrome/a/answer/7572556.
-
-      في حال عدم تحديد هذه السياسة، حينئذٍ يمكن للمستخدم تحديد ما إذا كان يريد تفعيل خيار "تسجيل الدخول إلى المتصفِّح" واستخدامه على النحو الذي يراه مناسبًا.</translation>
 <translation id="3911737181201537215">‏لا تؤثر هذه السياسة على التسجيل الذي يتم من خلال Android.</translation>
 <translation id="391531815696899618">‏لإيقاف مزامنة Google Drive في تطبيق ملفات <ph name="PRODUCT_OS_NAME" />عند التعيين على True. في هذه الحالة، لن يتم تحميل أي بيانات إلى Google Drive. 
 
@@ -2008,13 +1999,13 @@
 
       إذا لم يتم ضبط السياسة، يتم استخدام الفترة التلقائية التي تبلغ 345600000 مللي ثانية (أربعة أيام) لأجهزة <ph name="PRODUCT_OS_NAME" /> و604800000 مللي ثانية (أسبوع واحد) لـ <ph name="PRODUCT_NAME" />.</translation>
 <translation id="4777805166623621364">‏
-      يمكن استخدام هذا الإعداد، SitePerProcess، لعدم السماح للمستخدمين بإيقاف السلوك التلقائي لعزل جميع المواقع الإلكترونية. تجدر الإشارة إلى أن سياسة IsolateOrigins قد تكون مفيدة أيضًا من أجل عزل المزيد من الأصول بدقة.
+      يمكن استخدام هذا الإعداد، SitePerProcess، لعدم السماح للمستخدمين بإيقاف السلوك التلقائي لعزل جميع المواقع الإلكترونية. تجدر الإشارة إلى أن سياسة IsolateOrigins قد تكون مفيدة أيضًا لعزل الأصول الإضافية وبالغة الدقة.
       في حال تفعيل هذه السياسة، لن يتمكن المستخدمون من إيقاف السلوك التلقائي حيث يتم تشغيل كل موقع إلكتروني على حدة.
       في حال عدم ضبط هذه السياسة أو إيقافها، سيتمكن المستخدمون من إيقاف ميزة عزل الموقع
-      (مثلاً، استخدام إدخال "إيقاف ميزة عزل الموقع" في chrome://flags).  لا يؤدي ضبط السياسة على إيقاف و/أو عدم ضبط السياسة إلى إيقاف ميزة عزل الموقع.
+      (مثلاً، استخدام الإدخال "إيقاف ميزة عزل الموقع" في chrome://flags).  لا يؤدي إيقاف السياسة و/أو عدم ضبطها إلى إيقاف ميزة عزل الموقع.
       في الإصدار 76 والإصدارات الأحدث من <ph name="PRODUCT_OS_NAME" />، يُنصح أيضًا بضبط سياسة الجهاز <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> على القيمة نفسها. وفي حال عدم تطابق القيم المُحدَّدة للسياستين، سيؤدي ذلك إلى تأخير عند الدخول إلى جلسة مستخدم أثناء تطبيق القيمة المُحدَّدة من خلال سياسة المستخدم.
 
-      ملاحظة: لا تسري هذه السياسة على نظام التشغيل Android. لتفعيل سياسة SitePerProcess على نظام التشغيل Android، يمكنك استخدام إعداد سياسة SitePerProcessAndroid.
+      ملاحظة: لا تسري هذه السياسة على نظام التشغيل Android. لتفعيل سياسة SitePerProcess على نظام التشغيل Android، يمكنك استخدام إعدادات سياسة SitePerProcessAndroid.
       </translation>
 <translation id="4788252609789586009">تفعّل هذه السياسة ميزة "الملء التلقائي" في <ph name="PRODUCT_NAME" /> وتسمح للمستخدمين بإكمال معلومات بطاقة الائتمان في نماذج الويب تلقائيًا باستخدام المعلومات المخزنة مسبقًا.
 
@@ -2159,7 +2150,7 @@
 <translation id="5148753489738115745">تسمح لك بتحديد معلمات إضافية يتم استخدامها عند بدء <ph name="PRODUCT_FRAME_NAME" /> تشغيل <ph name="PRODUCT_NAME" />.
 
           إذا لم يتم تعيين هذه السياسة، فسيتم استخدام سطر الأوامر التلقائي.</translation>
-<translation id="5152787786897382519">‏يتضمن كل من Chromium وGoogle Chrome بعض مجموعات السياسات التي تعتمد على بعضها البعض لإتاحة التحكم في الميزة. يتم تمثيل هذه المجموعات من خلال مجموعات السياسات التالية. سيتم تطبيق القيم الواردة من المصدر ذي الأولوية القصوى فقط، لأنه يمكن أن يكون هناك مصادر متعددة لهذه السياسات. سيتم تجاهل القيم الواردة من مصدر ذي أولوية منخفضة في المجموعة نفسها. يتم تحديد ترتيب الأولويات في <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
+<translation id="5152787786897382519">‏يتضمّن كل من Chromium وGoogle Chrome بعض مجموعات السياسات التي تعتمد على بعضها البعض لإتاحة التحكم في إحدى المزايا. يتم تمثيل هذه المجموعات من خلال مجموعات السياسات التالية. سيتم تطبيق القيم الواردة من المصدر ذي الأولوية القصوى فقط، لأنه يمكن أن يكون هناك مصادر متعددة لهذه السياسات. وبالتالي، سيتم تجاهل القيم الواردة من مصدر ذي أولوية منخفضة في المجموعة نفسها. يتم تحديد ترتيب الأولويات في <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
 <translation id="5159469559091666409">معدل تكرار إرسال مراقبة حزم الشبكة بالملّي ثانية.
 
       إذا لم يتم تعيين هذه السياسة، فسيكون الفاصل الزمني التلقائي ثلاث دقائق. ويكون الحد الأدنى
@@ -2676,7 +2667,7 @@
 <translation id="5983708779415553259">طريقة العمل التلقائية للمواقع التي ليست في أي حزمة محتوى</translation>
 <translation id="5997543603646547632">استخدام التنسيق 24 ساعة بشكل تلقائي</translation>
 <translation id="5997846976342452720">تحديد ما إذا كان يجب إيقاف الباحث عن المكوّن الإضافي أم لا (متوقف)</translation>
-<translation id="5998198091336830580">تعتبر هذه السياسة جزء من المجموعة الصغيرة التالية (يتم تطبيق السياسات من المصدر ذي الأولوية القصوى الموجودة في المجموعة):</translation>
+<translation id="5998198091336830580">تعتبر هذه السياسة جزءًا من المجموعة الصغيرة التالية (يتم تطبيق السياسات من المصدر ذي الأولوية القصوى في المجموعة):</translation>
 <translation id="6017568866726630990">‏إظهار مربع الحوار "طباعة باستخدام النظام" بدلاً من "معاينة الطباعة".
 
       في حالة تفعيل هذا الإعداد، سيعمل <ph name="PRODUCT_NAME" /> على فتح مربع الحوار "طباعة باستخدام النظام" بدلاً من "معاينة الطباعة" المدمجة عند طلب المستخدم طباعة إحدى الصفحات.
@@ -3931,11 +3922,11 @@
 <translation id="8499172469244085141">الإعدادات التلقائية (يمكن للمستخدمين استبدالها)</translation>
 <translation id="849962487677588458">‏تم إيقاف هذه السياسة وتقرَّر حذفها في الإصدار 78 من Chrome بدون بديل.
 
-      تفعّل هذه السياسة HTTP/0.9 في المنافذ بخلاف المنفذ 80 لبروتوكول HTTP والمنفذ 443 لبروتوكول HTTPS.
+      تفعّل هذه السياسة بروتوكول HTTP/0.9 في جميع المنافذ وليس فقط في المنفذ 80 لبروتوكول HTTP والمنفذ 443 لبروتوكول HTTPS.
 
-      يتم إيقاف هذه السياسة تلقائيًا وفي حال تم تفعيلها، سيؤدي ذلك إلى تعرّض المستخدمين لمشاكل الأمان https://crbug.com/600352.
+      تكون هذه السياسة غير مفعّلة بحسب الإعدادات التلقائية. وفي حال تفعيلها، سيؤدي ذلك إلى تعرّض المستخدمين لمشاكل في الأمان https://crbug.com/600352.
 
-      تهدف هذه السياسة إلى منح المؤسسات فرصة لترحيل الخوادم الحالية خارج HTTP / 0.9، وستتم إزالتها في المستقبل.
+      تهدف هذه السياسة إلى منح المؤسسات فرصة لتحديث خوادمها الحالية من بروتوكول HTTP/0.9 إلى بروتوكولات أحدث. وستتم إزالة هذه السياسة في المستقبل.
 
       في حال عدم ضبط هذه السياسة، سيتم إيقاف HTTP/0.9 في المنافذ غير التلقائية.</translation>
 <translation id="8507835864888987300">تعيّن هذه السياسة إصدارًا مستهدفًا للتحديثات التلقائية. 
diff --git a/components/policy/resources/policy_templates_bg.xtb b/components/policy/resources/policy_templates_bg.xtb
index af3f780..06b65cc 100644
--- a/components/policy/resources/policy_templates_bg.xtb
+++ b/components/policy/resources/policy_templates_bg.xtb
@@ -1576,15 +1576,6 @@
 В случай че не зададете правилото, <ph name="PRODUCT_NAME" /> ще използва обичайната стандартна директория (конкретна за платформата).
 
 Вижте https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables за списък с променливите, които можете да използвате.</translation>
-<translation id="3904459740090265495">Това правило контролира поведението на браузъра при влизане в профил. То ви позволява да посочите дали потребителят може да влиза в <ph name="PRODUCT_NAME" /> с профила си и да използва свързани с профила услуги, като Синхронизиране в Chrome.
-
-      Ако за правилото е зададено „Деактивиране на влизането в профил в браузъра“, потребителят не може да влиза в профил в браузъра и да използва базирани на профил услуги. В този случай функциите на ниво браузър, като Синхронизиране в Chrome, не могат да се използват и няма да са налични. Ако потребителят е влязъл в профил и за правилото бъде зададено „Деактивиране“, сесията му в профила ще бъде прекратена при следващото стартиране на Chrome, но локалните данни в потребителския профил, като отметки, пароли и т.н., ще бъдат запазени. Потребителят пак ще може да влиза в профила си и да използва уеб услуги на Google, като Gmail.
-
-      Ако за правилото е зададено „Активиране на влизането в профил в браузъра“, на потребителя е разрешено да влиза в профил в браузъра, като при влизането в профила си в уеб услугите на Google, като Gmail, автоматично влиза в профила си в браузъра. Използването на профила в браузъра означава, че информацията за профила ще се пази от браузъра. Това не означава обаче, че Синхронизиране в Chrome ще бъде включено стандартно – потребителят трябва отделно да включи тази функция. След активирането на това правило потребителят няма да може да изключи настройката, разрешаваща влизането в профил в браузъра. За да контролирате наличността на Синхронизиране в Chrome, използвайте правилото SyncDisabled.
-
-      Ако за правилото е зададено „Принуждаване на потребителите да влязат в профил, за да използват браузъра“, на потребителя се показва диалогов прозорец, в който той трябва да избере профил и да влезе в него, за да използва браузъра. По този начин се гарантира прилагането и налагането на правилата, свързани с профила. По подразбиране това включва Синхронизиране в Chrome за профила освен в случая, когато синхронизирането е деактивирано от администратора на домейна или чрез правилото SyncDisabled. Стандартната стойност на BrowserGuestModeEnabled ще бъде false. Обърнете внимание, че след активирането на това правило съществуващите потребителски профили, в които не е влязъл никой, ще бъдат заключени и недостъпни. За повече информация вижте статията в Помощния център: https://support.google.com/chrome/a/answer/7572556.
-
-      Ако правилото не е зададено, потребителят може да реши дали да активира опцията за влизане в профил в браузъра и да я използва по свое усмотрение.</translation>
 <translation id="3911737181201537215">Това правило няма ефект върху записването в регистрационни файлове от страна на Android.</translation>
 <translation id="391531815696899618">Когато за правилото е зададено true, синхронизирането на Диск в приложението Файлове за <ph name="PRODUCT_OS_NAME" /> се деактивира. В този случай не могат да се качват данни в Диск.
 
@@ -3401,7 +3392,7 @@
 
 Правилото е в сила само когато разширението <ph name="CHROME_REPORTING_EXTENSION_NAME" /> е активирано и машината е регистрирана с <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
 <translation id="7359307926583593395">
-      Това правило се отнася за екрана за вход. Моля, вижте и правилото <ph name="SITE_PER_PROCESS_POLICY_NAME" />, което се прилага на ниво потребителска сесия. Препоръчително е да зададете една и съща стойност и за двете правила. В противен случай прилагането на стойността от правилото за потребители може да доведе до забавяне при влизане в потребителска сесия.
+      Това правило се отнася за екрана за вход. Моля, вижте и правилото <ph name="SITE_PER_PROCESS_POLICY_NAME" />, което се прилага на ниво на потребителска сесия. Препоръчително е да зададете една и съща стойност и за двете правила. В противен случай прилагането на стойността от правилото за потребители може да доведе до забавяне при влизане в потребителска сесия.
       </translation>
 <translation id="737655323154569539">Ограничава размера на страниците за отпечатване. При незадаване на правилото или използване на празно множество се счита, че няма ограничение.</translation>
 <translation id="7389872682701720082">Ако активирате тази настройка, актуалните приставки се изпълняват винаги.
diff --git a/components/policy/resources/policy_templates_bn.xtb b/components/policy/resources/policy_templates_bn.xtb
index 842c212..bab8115 100644
--- a/components/policy/resources/policy_templates_bn.xtb
+++ b/components/policy/resources/policy_templates_bn.xtb
@@ -363,8 +363,8 @@
 <translation id="1561424797596341174">দূরবর্তী অ্যাক্সেস হোস্টের ডিবাগ বিল্ডের জন্য নীতি ওভাররাইড করে</translation>
 <translation id="1561967320164410511">স্বতন্ত্রভাবে নিশ্চিত করার জন্য U2F এবং এক্সটেনশন</translation>
 <translation id="1566329065312331399">
-      এই নীতি ফলস হিসেবে সেট করা থাকলে ডিভাইস, পাওয়ারওয়াশ ট্রিগার করতে পারে না।
-      এই নীতি ট্রু হিসেবে সেট করা থাকলে ডিভাইস, পাওয়ারওয়াশ ট্রিগার করতে পারে।
+      এই নীতি ফলস হিসেবে সেট করা থাকলে ডিভাইস পাওয়ারওয়াশ ট্রিগার করতে পারে না।
+      এই নীতি ট্রু হিসেবে সেট করা থাকলে ডিভাইস পাওয়ারওয়াশ ট্রিগার করতে পারে।
       সেট করা না থাকলে, এটি ফলস হিসেবে সেট করার মতো আচরণ করে। অর্থাৎ, ডিভাইসকে পাওয়ারওয়াশ ট্রিগার করতে দেয় না।
       </translation>
 <translation id="1574554504290354326">এই সেটিংসটি শীঘ্রই বন্ধ হয়ে যাবে, এর পরিবর্তে SafeBrowsingExtendedReportingEnabled ব্যবহার করুন। SafeBrowsingExtendedReportingOptInAllowed 'ফলস'-এ সেট করা থাকলে, SafeBrowsingExtendedReportingEnabled চালু বা বন্ধ করলে কোনও কাজ হয় না।
@@ -1609,15 +1609,6 @@
       যদি আপনি এই নীতিটি সেট না করেন তাহলে <ph name="PRODUCT_NAME" /> তার স্বাভাবিক ডিফল্ট ডিরেক্টরি (প্ল্যাটফর্ম-নির্দিষ্ট) ব্যবহার করবে।
 
       ব্যবহার করা যেতে পারে এমন ভেরিয়েবলের একটি তালিকার জন্য https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables দেখুন।</translation>
-<translation id="3904459740090265495">এই নীতি ব্রাউজারের সাইন-ইন আচরণকে নিয়ন্ত্রণ করে। ব্যবহারকারী তার অ্যাকাউন্টের মাধ্যমে <ph name="PRODUCT_NAME" />-এ সাইন-ইন করতে এবং Chrome সিঙ্ক-এর মতো অ্যাকাউন্ট সম্পর্কিত পরিষেবা ব্যবহার করতে পারবেন কিনা তা নির্দিষ্ট করতে এই নীতি আপনাকে সাহায্য করে।
-
-      এই নীতিটি "ব্রাউজারে সাইন-ইন করার সুবিধা বন্ধ করুন"-এ সেট করলে, ব্যবহারকারী ব্রাউজারে সাইন-ইন করতে এবং অ্যাকাউন্ট ভিত্তিক পরিষেবা ব্যবহার করতে পারবেন না। এই ক্ষেত্রে Chrome সিঙ্ক-এর মতো ব্রাউজার লেভেলের ফিচার ব্যবহার করা যাবে না এবং তা উপলভ্য থাকবে না। ব্যবহারকারী সাইন-ইন করে থাকা অবস্থায় এই নীতিটি "বন্ধ করুন"-এ সেট করলে, পরের বার Chrome চালানোর সময় তাকে সাইন-আউট করিয়ে দেওয়া হবে কিন্তু তার বুকমার্ক, পাসওয়ার্ড ইত্যাদির মতো স্থানীয় প্রোফাইল ডেটা সংরক্ষিত থাকবে। ব্যবহারকারী তা সত্ত্বেও Gmail-এর মতো Google ওয়েব পরিষেবাতে সাইন-ইন করে ব্যবহার করতে পারবেন।
-
-      এই নীতিটি "ব্রাউজারে সাইন-ইন করার সুবিধা চালু করুন"-এ সেট করলে, ব্যবহারকারীকে ব্রাউজারে সাইন-ইন করার অনুমতি দেওয়া হবে এবং Gmail-এর মতো Google ওয়েব পরিষেবাতে সাইন-ইন করলে, ব্রাউজারেও অটোমেটিক সাইন-ইন হয়ে যাবে। ব্রাউজারে সাইন-ইন করিয়ে দেওয়ার ফলে ব্যবহারকারীর অ্যাকাউন্টের তথ্য ব্রাউজারের কাছে থাকবে। কিন্তু, Chrome সিঙ্ক ডিফল্টভাবে চালু হয়ে যাবে না; এই ফিচারটি ব্যবহার করতে হলে ব্যবহারকারীকে আলাদাভাবে এটি বেছে নিতে হবে। এই নীতিটি চালু করলে, যে সেটিং ব্রাউজারে সাইন-ইন করার অনুমতি দেয় সেটি ব্যবহারকারী বন্ধ করতে পারবেন না। Chrome সিঙ্ক-এর উপলভ্যতা নিয়ন্ত্রণ করতে, "SyncDisabled" নীতিটি ব্যবহার করুন।
-
-      এই নীতিটি "জোর করে ব্রাউজারে সাইন-ইন করুন"-এ সেট করলে, ব্যবহারকারীকে অ্যাকাউন্ট বেছে নেওয়ার জন্য একটি ডায়ালগ দেখানো হয় এবং তাকে ব্রাউজার ব্যবহার করতে একটি অ্যাকাউন্ট বেছে নিয়ে সাইন-ইন করতে হয়। এর মাধ্যমে পরিচালিত অ্যাকাউন্টের সাথে সম্পর্কযুক্ত নীতির প্রয়োগ নিশ্চিত করা হয়। ডোমেন অ্যাডমিন বা "SyncDisabled" নীতির দ্বারা বন্ধ না করলে, এটি অ্যাকাউন্টে Chrome সিঙ্ক ডিফল্টভাবে চালু করে দেয়। BrowserGuestModeEnabled-এর ডিফল্ট মান ফলস হিসেবে সেট করা হবে। মনে রাখবেন যে এই নীতি চালু করার পরে সাইন-ইন করা নেই এমন আগে থেকেই থাকা প্রোফাইলগুলি লক হয়ে যাবে এবং অ্যাক্সেস করা যাবে না। আরও তথ্যের জন্য সহায়তা কেন্দ্রের এই নিবন্ধটি দেখুন: https://support.google.com/chrome/a/answer/7572556
-
-      এই নীতিটি সেট না করলে ব্রাউজারে সাইন-ইন করার বিকল্প চালু করবেন কিনা তা ব্যবহারকারী ঠিক করতে পারবেন এবং নিজের প্রয়োজন অনুসারে তা ব্যবহার করতে পারবেন।</translation>
 <translation id="3911737181201537215">Android এর লগিং এর উপর এই নীতির কোনো প্রভাব নেই।</translation>
 <translation id="391531815696899618">যখন ট্রুতে সেট করা থাকে তখন <ph name="PRODUCT_OS_NAME" /> ফাইল অ্যাপে Google ড্রাইভ সিঙ্ক করা বন্ধ করে। সেই ক্ষেত্রে, কোন তথ্য Google ড্রাইভে আপলোড করা হয় না।
           যদি সেট না করা থাকে অথবা ফলসতে সেট করা থাকে, তাহলে ব্যবহারকারীরা Google ড্রাইভে ফাইলগুলি স্থানান্তরিত করতে পারবে।</translation>
@@ -2061,7 +2052,7 @@
       এই নীতি চালু করা থাকলে, প্রতিটি সাইটের নিজস্ব প্রসেস চালানোর ডিফল্ট আচরণ থেকে ব্যবহারকারীদের বেরিয়ে আসার কোনও সুযোগ থাকে না।
       এই নীতি কনফিগার করা না থাকলে বা বন্ধ করা থাকলে, ব্যবহারকারী সাইট আইসোলেশন
       (যেমন, chrome://flags-এ "সাইট আইসোলেশন বন্ধ করুন" এন্ট্রি ব্যবহার করে) থেকে বেরিয়ে আসতে পারেন।  নীতিটি বন্ধ হিসেবে সেট করা থাকলে এবং/অথবা কনফিগার করা না থাকলে, সাইট আইসোলেশন বন্ধ হয়ে যায় না।
-      <ph name="PRODUCT_OS_NAME" />-এর 76 ও আগের ভার্সনে, <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> ডিভাইস নীতিও একই মানে সেট করার জন্য সাজেস্ট করা হয়। দুটি নীতিতে উল্লেখ করা মান না মিললে, 'ব্যবহারকারী' নীতিতে উল্লেখ করা মান প্রয়োগ করা হচ্ছে বলে ব্যবহারকারীর সেশন শুরু হওয়ার সময় কিছুটা বিলম্ব হতে পারে।
+      <ph name="PRODUCT_OS_NAME" />-এর 76 ও আগের যেকোনও ভার্সনে, <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> ডিভাইস নীতিও একই মানে সেট করার জন্য সাজেস্ট করা হয়। দুটি নীতিতে উল্লেখ করা মান না মিললে, 'ব্যবহারকারী' নীতিতে উল্লেখ করা মান প্রয়োগ করা হচ্ছে বলে ব্যবহারকারীর সেশন শুরু হওয়ার সময় কিছুটা বিলম্ব হতে পারে।
 
       মনে রাখবেন: Android-এ এই নীতি প্রযোজ্য হয় না। Android-এ SitePerProcess চালু করতে, SitePerProcessAndroid নীতির সেটিং ব্যবহার করুন।
       </translation>
@@ -4057,7 +4048,7 @@
 <translation id="8499172469244085141">ডিফল্ট সেটিংস (ব্যবহারকারীরা পাল্টাতে পারেন)</translation>
 <translation id="849962487677588458">এই নীতি বন্ধ করে দেওয়া হয়েছে এবং অন্য কোনও নীতি দ্বারা প্রতিস্থাপিত না করেই Chrome 78 থেকে সরিয়ে দেওয়া হবে।
 
-      HTTP-এর জন্য 80 ও HTTPS-এর জন্য 443 ছাড়া অন্য পোর্টে এই নীতি HTTP/0.9 চালু করে।
+      এই নীতি HTTP-এর জন্য 80 ও HTTPS-এর জন্য 443 ছাড়া অন্য পোর্টে HTTP/0.9 চালু করে।
 
       সাধারণত, এই নীতি বন্ধ করা থাকে, কিন্তু চালু করা হলে ব্যবহারকারীর নিরাপত্তা সংক্রান্ত সমস্যা হতে পারে। সমস্যার বিবরণ https://crbug.com/600352 থেকে জানা যাবে।
 
diff --git a/components/policy/resources/policy_templates_ca.xtb b/components/policy/resources/policy_templates_ca.xtb
index 8047ccdc..91c549a 100644
--- a/components/policy/resources/policy_templates_ca.xtb
+++ b/components/policy/resources/policy_templates_ca.xtb
@@ -1448,15 +1448,6 @@
       Si no es defineix aquesta política, <ph name="PRODUCT_NAME" /> utilitzarà el directori predeterminat habitual (específic de la plataforma).
 
       Consulta https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables per veure una llista de les variables que es poden fer servir.</translation>
-<translation id="3904459740090265495">Aquesta política controla el comportament de l'inici de sessió al navegador. Et permet especificar si l'usuari pot iniciar la sessió a <ph name="PRODUCT_NAME" /> amb el seu compte i utilitzar serveis relacionats amb el compte, com ara la Sincronització de Chrome.
-
-      Si la política s'estableix en "Desactiva l'inici de sessió al navegador", l'usuari no podrà iniciar la sessió al navegador ni utilitzar serveis basats en el compte. En aquest cas, les funcions del navegador, com ara la Sincronització de Chrome, no es podran utilitzar i no estaran disponibles. Si l'usuari ha iniciat la sessió i la política s'ha establert en "Desactivada", es tancarà la sessió de l'usuari la propera vegada que executi Chrome, però es conservaran les dades del perfil local, com ara els marcadors, les contrasenyes, etc. L'usuari podrà continuar iniciant la sessió i utilitzant serveis web de Google com ara Gmail.
-
-      Si la política s'estableix en "Activa l'inici de sessió al navegador", l'usuari podrà iniciar la sessió al navegador i la seva sessió s'hi iniciarà automàticament quan la tingui iniciada en serveis web de Google com ara Gmail. Quan s'inicia la sessió al navegador, la informació del compte de l'usuari s'hi manté. Tanmateix, la Sincronització de Chrome no s'activarà de manera predeterminada; si l'usuari vol utilitzar aquesta funció, l'haurà d'activar per separat. En activar aquesta política, s'impedeix que l'usuari desactivi l'opció de configuració que permet l'inici de sessió al navegador. Per controlar la disponibilitat de la Sincronització de Chrome, fes servir la política "SyncDisabled".
-
-      Si la política s'estableix en "Força l'inici de sessió al navegador", es mostrarà a l'usuari un quadre de diàleg per seleccionar un compte. L'usuari n'haurà de triar un i iniciar-hi la sessió per fer servir el navegador. D'aquesta manera, es garanteix que, als comptes gestionats, s'hi apliquin i es compleixin les polítiques associades. De manera predeterminada, s'activa la Sincronització de Chrome al compte, excepte en el cas que l'administrador del domini hagi desactivat la sincronització o s'hagi desactivat amb la política "SyncDisabled". El valor predeterminat de BrowserGuestModeEnabled s'establirà en "false". Tingues en compte que, després d'activar aquesta política, els perfils en què no s'hagi iniciat la sessió es bloquejaran i no s'hi podrà accedir. Per obtenir més informació, consulta l'article següent del Centre d'ajuda: https://support.google.com/chrome/a/answer/7572556.
-
-      Si aquesta política no s'estableix, l'usuari pot decidir si vol activar l'opció d'inici de sessió al navegador i utilitzar-lo com li sembli més adequat.</translation>
 <translation id="3911737181201537215">Aquesta política no té cap efecte als registres que fa Android.</translation>
 <translation id="391531815696899618">Quan aquesta política s'estableix en True, desactiva la sincronització de Google Drive a l'aplicació Fitxers de <ph name="PRODUCT_OS_NAME" />. En aquest cas, no es pengen dades a Google Drive.
 
diff --git a/components/policy/resources/policy_templates_cs.xtb b/components/policy/resources/policy_templates_cs.xtb
index a0fa1db2..432015fb 100644
--- a/components/policy/resources/policy_templates_cs.xtb
+++ b/components/policy/resources/policy_templates_cs.xtb
@@ -1579,16 +1579,6 @@
       Pokud tuto zásadu nenastavíte, bude <ph name="PRODUCT_NAME" /> používat svůj obvyklý výchozí adresář (specifický pro platformu).
 
       Seznam proměnných, které můžete použít, naleznete na stránce https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Tato zásada ovládá chování prohlížeče při přihlašování. Umožňuje zadat, zda se uživatel do prohlížeče <ph name="PRODUCT_NAME" /> může přihlásit pomocí svého účtu a používat služby související s účtem, jako je například synchronizace Chromu.
-
-      Pokud je tato zásada nastavena na hodnotu Zakázat přihlášení do prohlížeče, uživatel se přihlásit do prohlížeče a používat služby založené na účtu nemůže. V tomto případě funkce na úrovni prohlížeče, jako je synchronizace Chromu, nelze používat a nebudou k dispozici. Pokud byl uživatel přihlášen a zásada je nastavena na hodnotu Zakázáno, bude při příštím spuštění Chromu odhlášen, ale data v jeho místním profilu, jako jsou záložky, hesla apod., zůstanou zachována. Uživatel se i nadále bude moci přihlásit do webových služeb Google, jako je Gmail, a používat je.
-
-      Pokud je tato zásada nastavena na hodnotu Povolit přihlášení do prohlížeče, uživatel má povoleno přihlásit se do prohlížeče, a když se přihlásí do webových služeb Google, jako je Gmail, bude do prohlížeče přihlášen automaticky. Přihlášení do prohlížeče znamená, že prohlížeč bude uchovávat informace o účtu uživatele. Neznamená to však, že bude ve výchozím nastavení zapnuta synchronizace Chromu. K použití této funkce se uživatel musí přihlásit samostatně. Aktivací této zásady uživateli znemožníte vypnout nastavení, které povoluje přihlášení do prohlížeče. Chcete-li nastavit dostupnost synchronizace Chromu, použijte zásadu SyncDisabled.
-
-      Pokud je tato zásada nastavena na hodnotu Vynutit přihlášení do prohlížeče, zobrazí se uživateli dialogové okno k výběru účtu, v němž před použitím prohlížeče musí vybrat účet a přihlásit se k němu. Zajistí se tím, aby u spravovaných účtů byly použity a vynuceny zásady přidružené k účtu. Ve výchozím nastavení tato možnost pro účet zapne synchronizaci Chromu. Výjimkou jsou případy, kdy synchronizace byla zakázána administrátorem nebo prostřednictvím zásady SyncDisabled. Výchozí hodnota zásady BrowserGuestModeEnabled bude nastavena na hodnotu false. 
-Existující nepřihlášené profily po zapnutí této zásady budou uzamčeny a přestanou být přístupné. Další informace najdete v tomto článku v centru nápovědy: https://support.google.com/chrome/a/answer/7572556.
-
-      Pokud tato zásada není nastavena, může se uživatel podle svého uvážení rozhodnout, zda chce možnost přihlášení do prohlížeče zapnout a používat.</translation>
 <translation id="3911737181201537215">Na protokolování prováděné systémem Android tato zásada nemá vliv.</translation>
 <translation id="391531815696899618">Pokud má hodnotu True, deaktivuje synchronizaci aplikace Soubory systému <ph name="PRODUCT_OS_NAME" /> s Diskem Google. Na Disk Google se v tomto případě nebudou nahrávat žádná data.
 
@@ -2170,7 +2160,7 @@
 <translation id="5148753489738115745">Umožňuje nastavit dodatečné parametry, které plugin <ph name="PRODUCT_FRAME_NAME" /> při spouštění aplikace <ph name="PRODUCT_NAME" /> použije.
 
           Když tato zásada není nastavena, bude použit výchozí příkazový řádek.</translation>
-<translation id="5152787786897382519">Prohlížeče Chromium a Google Chrome mají několik skupin zásad, které na sobě při ovládání určité funkce vzájemně závisejí. Tyto sady jsou reprezentovány následujícími skupinami zásad. Protože zásady mohou mít několik zdrojů, použijí se pouze hodnoty pocházející ze zdroje s nejvyšší prioritou. Hodnoty pocházející ze zdroje s nižší prioritou ve stejné skupině budou ignorovány. Pořadí priority je popsáno v článku <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
+<translation id="5152787786897382519">Prohlížeče Chromium a Google Chrome mají několik skupin zásad, které na sobě při ovládání určité funkce vzájemně závisejí. Tyto sady jsou reprezentovány následujícími skupinami zásad. Protože zásady mohou mít několik zdrojů, použijí se pouze hodnoty pocházející ze zdroje s nejvyšší prioritou. Hodnoty pocházející ze zdroje s nižší prioritou ve stejné skupině budou ignorovány. Pořadí priorit je popsáno v článku <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
 <translation id="5159469559091666409">Udává, jak často se odesílají sledovací síťové pakety (v milisekundách).
 
       Je-li tato zásada ponechána nenastavená, použije se výchozí interval tři minuty. Minimální interval je 30 sekund a maximální 24 hodin – hodnoty mimo tento rozsah budou přizpůsobeny příslušné hranici.</translation>
diff --git a/components/policy/resources/policy_templates_da.xtb b/components/policy/resources/policy_templates_da.xtb
index 789bae8..cfb2b670 100644
--- a/components/policy/resources/policy_templates_da.xtb
+++ b/components/policy/resources/policy_templates_da.xtb
@@ -1580,15 +1580,6 @@
       Hvis du ikke angiver denne politik, bruger <ph name="PRODUCT_NAME" /> den sædvanlige standardmappe (platformspecifikt).
 
       Se https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables for en liste over variabler, der kan bruges.</translation>
-<translation id="3904459740090265495">Denne politik styrer loginadfærd i browseren. Den giver dig mulighed for at angive, om brugeren kan logge ind i <ph name="PRODUCT_NAME" /> med sin konto og benytte kontorelaterede tjenester såsom Chrome-synkronisering.
-
-      Hvis "Deaktiver browserlogin" er angivet for politikken, kan brugeren ikke logge ind i browseren og benytte kontobaserede tjenester. Det betyder, at browserfunktioner såsom Chrome-synkronisering ikke kan anvendes. Hvis brugeren allerede er logget ind, og "Deaktiveret" er angivet for politikken, logges brugeren ud, næste gang vedkommende starter Chrome. Brugerens lokale profildata som f.eks. bogmærker og adgangskoder bevares dog. Brugeren kan stadig logge ind på og benytte Google-webtjenester såsom Gmail.
-
-      Hvis "Aktivér browserlogin" er angivet for politikken, har brugeren tilladelse til at logge ind i browseren, og brugeren logges automatisk ind i browseren, når vedkommende er logget ind i Google-webtjenester såsom Gmail. Når brugeren er logget ind i browseren, gemmes vedkommendes kontooplysninger i browseren. Det betyder dog ikke, at Chrome-synkronisering som standard aktiveres. Brugeren skal selv tilvælge denne funktion. Aktivering af denne politik forhindrer brugeren i at deaktivere den indstilling, der tillader browserlogin. Brug politikken "SyncDisabled" til at styre tilgængeligheden af Chrome-synkronisering.
-
-      Hvis "Kræv browserlogin" er angivet for politikken, får brugeren vist en dialogboks til kontovalg, hvor vedkommende skal vælge og logge ind på en konto for at benytte browseren. Dette sikrer, at politikker, der er knyttet til mangerstyrede konti, anvendes og håndhæves. Denne indstilling aktiverer som standard Chrome-synkronisering for kontoen, undtagen i tilfælde, hvor synkronisering er deaktiveret af domæneadministratoren eller via politikken "SyncDisabled". Standardværdien for BrowserGuestModeEnabled angives som Falsk. Bemærk! Eksisterende profiler, hvor der ikke er logget ind, låses og kan ikke længere anvendes efter aktivering af denne politik. Du kan få flere oplysninger i artiklen i Hjælp: https://support.google.com/chrome/a/answer/7572556.
-
-      Hvis politikken ikke konfigureres, kan brugeren selv bestemme, om muligheden for browserlogin skal aktiveres, og anvende den efter eget behov.</translation>
 <translation id="3911737181201537215">Denne politik påvirker ikke logføring udført af Android.</translation>
 <translation id="391531815696899618">Deaktiverer Google Drev-synkronisering i appen Filer i <ph name="PRODUCT_OS_NAME" />, når den er angivet til Sand. I dette tilfælde uploades der ingen data til Google Drev.
 
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index 7b6fd4e..fe969e5 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -1591,15 +1591,6 @@
       Sollten Sie diese Richtlinie nicht festlegen, wird für <ph name="PRODUCT_NAME" /> das jeweilige plattformspezifische Verzeichnis verwendet.
 
       Unter https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables finden Sie eine Liste mit allen Variablen, die verwendet werden können.</translation>
-<translation id="3904459740090265495">Diese Richtlinie steuert die Anmeldung bei diesem Browser. Sie können damit festlegen, ob sich der Nutzer bei <ph name="PRODUCT_NAME" /> über sein Konto anmelden und zugehörige Dienste nutzen kann, beispielsweise die Chrome-Synchronisierung.
-
-Wenn die Richtlinie auf "Browseranmeldung deaktivieren" gesetzt ist, kann der Nutzer sich nicht beim Browser anmelden und keine kontobasierten Dienste nutzen. In diesem Fall können Funktionen auf Browserebene wie die Chrome-Synchronisierung nicht verwendet werden und sind auch nicht verfügbar. Falls ein Nutzer angemeldet ist, wenn die Richtlinie auf "Deaktiviert" gesetzt wird, wird er beim nächsten Ausführen von Chrome automatisch abgemeldet. Seine lokalen Profildaten wie Lesezeichen und Passwörter bleiben jedoch erhalten. Der Nutzer kann sich auch weiterhin bei Google-Webdiensten wie Gmail anmelden und diese verwenden.
-
-Wenn die Richtlinie auf "Browseranmeldung aktivieren" gesetzt ist, kann der Nutzer sich beim Browser anmelden und wird auch automatisch beim Browser angemeldet, sobald er sich bei Google-Webdiensten wie Gmail anmeldet. Durch die Anmeldung beim Browser werden die Kontodaten des Nutzers im Browser gespeichert. Das bedeutet aber nicht, dass die Chrome-Synchronisierung standardmäßig aktiviert wird. Der Nutzer muss diese Funktion explizit aktivieren. Durch das Aktivieren dieser Richtlinie kann der Nutzer die Einstellung für die Browseranmeldung nicht mehr deaktivieren. Die Chrome-Synchronisierung lässt sich mithilfe der Richtlinie "SyncDisabled" steuern.
-
-Wenn die Richtlinie auf "Browseranmeldung erzwingen" gesetzt ist, wird dem Nutzer ein Dialogfeld zur Kontoauswahl angezeigt. Er muss dann ein Konto auswählen und sich anmelden, um den Browser verwenden zu können. So wird bei verwalteten Konten garantiert, dass die zu diesem Konto gehörigen Richtlinien erzwungen und angewendet werden. Standardmäßig wird hierbei die Chrome-Synchronisierung für das Konto aktiviert, es sei denn, sie wurde vom Administrator der Domain oder über die Richtlinie "SyncDisabled" deaktiviert. Der Standardwert für BrowserGuestModeEnabled wird außerdem auf "false" gesetzt. Beachten Sie, dass unsignierte Profile gesperrt werden und dass auf sie nach dem Aktivieren dieser Richtlinie nicht mehr zugegriffen werden kann. Weitere Informationen finden Sie in der Hilfe unter https://support.google.com/chrome/a/answer/7572556.
-
-Wenn diese Richtlinie nicht konfiguriert ist, kann der Nutzer selbst entscheiden, ob er die Anmeldeoption des Browsers aktivieren und verwenden möchte.</translation>
 <translation id="3911737181201537215">Diese Richtlinie hat keine Auswirkung auf die Protokollierung durch Android.</translation>
 <translation id="391531815696899618">Bei Festlegung auf "true" wird die Synchronisierung zwischen Google Drive und der App "Dateien" von <ph name="PRODUCT_OS_NAME" /> deaktiviert. Es werden dann keine Daten in Google Drive hochgeladen.
 
diff --git a/components/policy/resources/policy_templates_el.xtb b/components/policy/resources/policy_templates_el.xtb
index d2f9432..ae75823 100644
--- a/components/policy/resources/policy_templates_el.xtb
+++ b/components/policy/resources/policy_templates_el.xtb
@@ -1626,15 +1626,6 @@
       Εάν δεν οριστεί αυτή η πολιτική, το <ph name="PRODUCT_NAME" /> θα χρησιμοποιεί τον συνήθη προεπιλεγμένο κατάλογο (για τη συγκεκριμένη πλατφόρμα).
 
       Ανατρέξτε στη διεύθυνση https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables, για να δείτε μια λίστα μεταβλητών που μπορούν να χρησιμοποιηθούν.</translation>
-<translation id="3904459740090265495">Αυτή η πολιτική ελέγχει τη συμπεριφορά σύνδεσης του προγράμματος περιήγησης. Σάς επιτρέπει να καθορίσετε εάν ο χρήστης μπορεί να συνδεθεί στο <ph name="PRODUCT_NAME" /> με τον λογαριασμό του και να χρησιμοποιήσει υπηρεσίες που σχετίζονται με τον λογαριασμό, όπως τον Συγχρονισμό Chrome.
-
-      Εάν οριστεί η επιλογή "Απενεργοποίηση σύνδεσης στο πρόγραμμα περιήγησης" για την πολιτική, τότε ο χρήστης δεν μπορεί να συνδεθεί στο πρόγραμμα περιήγησης και να χρησιμοποιήσει υπηρεσίες που βασίζονται στον λογαριασμό. Σε αυτήν την περίπτωση, οι υπηρεσίες επιπέδου προγράμματος περιήγησης, όπως ο Συγχρονισμός του Chrome δεν μπορούν να χρησιμοποιηθούν και δεν θα είναι διαθέσιμες. Εάν ο χρήστης συνδέθηκε και η πολιτική έχει οριστεί ως "Απενεργοποιημένη" θα αποσυνδεθεί την επόμενη φορά που θα εκτελέσει το Chrome, αλλά τα τοπικά δεδομένα προφίλ του, όπως σελιδοδείκτες, κωδικοί πρόσβασης κ.λπ. θα διατηρηθούν. Ο χρήστης θα εξακολουθεί να έχει τη δυνατότητα να συνδεθεί και να χρησιμοποιήσει υπηρεσίες ιστού της Google όπως το Gmail.
-
-      Εάν οριστεί η επιλογή "Ενεργοποίηση σύνδεσης στο πρόγραμμα περιήγησης" για την πολιτική, τότε ο χρήστης επιτρέπεται να συνδεθεί στο πρόγραμμα περιήγησης και συνδέεται αυτόματα στο πρόγραμμα περιήγησης όταν συνδέεται σε υπηρεσίες ιστού της Google όπως το Gmail. Η σύνδεση στο πρόγραμμα περιήγησης σημαίνει ότι τα στοιχεία του λογαριασμού του χρήστη θα διατηρούνται από το πρόγραμμα περιήγησης. Ωστόσο, αυτό δεν σημαίνει ότι ο Συγχρονισμός Chrome θα είναι ενεργοποιημένος από προεπιλογή. Ο χρήστης θα πρέπει να τον ενεργοποιήσει ξεχωριστά, προκειμένου να χρησιμοποιήσει αυτήν τη λειτουργία. Η ενεργοποίηση αυτής της πολιτικής θα εμποδίσει την απενεργοποίηση της ρύθμισης που επιτρέπει τη σύνδεση στο πρόγραμμα περιήγησης από τον χρήστη. Για να ελέγξετε τη διαθεσιμότητα του Συγχρονισμού Chrome, χρησιμοποιήστε την πολιτική "SyncDisabled".
-
-      Εάν οριστεί η επιλογή "Επιβολής σύνδεσης στους χρήστες προκειμένου να χρησιμοποιήσουν το πρόγραμμα περιήγησης" για την πολιτική, τότε εμφανίζεται στον χρήστη ένα παράθυρο διαλόγου επιλογής λογαριασμού και θα πρέπει να επιλέξει και να συνδεθεί σε έναν λογαριασμό, προκειμένου να χρησιμοποιήσει το πρόγραμμα περιήγησης. Αυτό διασφαλίζει ότι για τους διαχειριζόμενους λογαριασμούς, οι πολιτικές που έχουν συσχετιστεί με τον λογαριασμό εφαρμόζονται και επιβάλλονται. Από προεπιλογή, αυτή η ρύθμιση ενεργοποιεί τον Συγχρονισμό Chrome για τον λογαριασμό, με εξαίρεση την περίπτωση που ο συγχρονισμός απενεργοποιήθηκε από τον διαχειριστή του τομέα ή μέσω της πολιτικής "SyncDisabled". Η προεπιλεγμένη τιμή της παραμέτρου BrowserGuestModeEnabled ορίζεται ως ψευδής. Λάβετε υπόψη ότι τα υπάρχοντα μη συνδεδεμένα προφίλ θα κλειδωθούν και θα είναι μη προσβάσιμα μετά την ενεργοποίηση αυτής της πολιτικής. Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο του κέντρου βοήθειας: https://support.google.com/chrome/a/answer/7572556.
-
-      Εάν αυτή η πολιτική δεν έχει διαμορφωθεί, ο χρήστης μπορεί να αποφασίσει εάν θέλει να ενεργοποιήσει την επιλογή σύνδεσης στο πρόγραμμα περιήγησης και να το χρησιμοποιήσει όπως επιθυμεί.</translation>
 <translation id="3911737181201537215">Αυτή η πολιτική δεν επηρεάζει την καταγραφή που γίνεται από το Android.</translation>
 <translation id="391531815696899618">Όταν έχει οριστεί σε "True", απενεργοποιεί το συγχρονισμό του Google Drive στην εφαρμογή "Αρχεία" του <ph name="PRODUCT_OS_NAME" />. Σε αυτήν την περίπτωση, δεν ανεβαίνουν δεδομένα στο Google Drive.
 
diff --git a/components/policy/resources/policy_templates_en-GB.xtb b/components/policy/resources/policy_templates_en-GB.xtb
index 4c01c0d..70e5ff1 100644
--- a/components/policy/resources/policy_templates_en-GB.xtb
+++ b/components/policy/resources/policy_templates_en-GB.xtb
@@ -1623,15 +1623,6 @@
       If you do not set this policy, <ph name="PRODUCT_NAME" /> will use its usual default directory (platform-specific).
 
       See https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables for a list of variables that can be used.</translation>
-<translation id="3904459740090265495">This policy controls the sign-in behaviour of the browser. It allows you to specify if the user can sign in to <ph name="PRODUCT_NAME" /> with their account and use account-related services such as Chrome Sync.
-
-      If the policy is set to 'Disable browser sign-in', the user cannot sign in to the browser and use account-based services. In this case browser-level features such as Chrome Sync cannot be used and will be unavailable. If the user was signed in and the policy is set 'Disabled', they will be signed out the next time that they run Chrome but their local profile data such as bookmarks, passwords, etc. will stay preserved. The user will still be able to sign in to and use Google web services such as Gmail.
-
-      If the policy is set to 'Enable browser sign-in', the user is allowed to sign in to the browser and is automatically signed in to the browser when signed in to Google web services such as Gmail. Being signed in to the browser means that the user's account information will be kept by the browser. However, it does not mean that Chrome Sync will be turned on per default; the user must separately opt in to use this feature. Enabling this policy will prevent the user from turning off the setting that allows browser sign-in. To control the availability of Chrome Sync, use the 'SyncDisabled' policy.
-
-      If the policy is set to 'Force browser sign-in', the user is presented with an account selection dialogue and has to choose and sign in to an account to use the browser. This ensures that for managed accounts the policies associated with the account are applied and enforced. By default this turns on Chrome Sync for the account, except for the case when sync was disabled by the domain admin or via the 'SyncDisabled' policy. The default value of BrowserGuestModeEnabled will be set to false. Note: Existing unsigned profiles will be locked and inaccessible after enabling this policy. For more information, see help centre article: https://support.google.com/chrome/a/answer/7572556.
-
-      If this policy is not set then the user can decide if they want to enable the browser sign-in option and use it as they see fit.</translation>
 <translation id="3911737181201537215">This policy has no effect on the logging done by Android.</translation>
 <translation id="391531815696899618">Disables Google Drive syncing in the <ph name="PRODUCT_OS_NAME" /> Files app when set to True. In that case, no data is uploaded to Google Drive.
 
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index 4880a310..3bf1094 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -1584,15 +1584,6 @@
       Si no se establece esta política, <ph name="PRODUCT_NAME" /> usará el directorio predeterminado (específico de cada plataforma).
 
       Ingresa a https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables para ver una lista de las variables que se pueden usar.</translation>
-<translation id="3904459740090265495">Esta política controla el comportamiento de acceso en el navegador. Te permite especificar si el usuario puede acceder a <ph name="PRODUCT_NAME" /> con su cuenta y usar los servicios relacionados, como la "Sincronización de Chrome".
-
-      Si la política se establece como "Inhabilitar el acceso en el navegador", el usuario no podrá acceder a su cuenta en el navegador ni podrá usar los servicios basados en la cuenta. En este caso, las funciones al nivel del navegador (como la "Sincronización de Chrome") no se podrán usar ni estarán disponibles. Si el usuario accedió a su cuenta y la política se establece como "Inhabilitada", saldrá de su cuenta la próxima vez que ejecute Chrome, pero se conservarán sus datos de perfil locales (como los favoritos, las contraseñas, etc.). El usuario podrá acceder a servicios web de Google, como Gmail, y usarlos.
-
-      Si la política se establece como "Habilitar el acceso en el navegador", el usuario podrá acceder a su cuenta en el navegador. Además, ingresará automáticamente cuando acceda a servicios web de Google, como Gmail. Esta acción implica que el navegador guardará la información de cuenta del usuario. Sin embargo, no significa que la "Sincronización de Chrome" se activará de forma predeterminada; para usar esta función, el usuario debe habilitarla explícitamente. Para controlar la disponibilidad de la "Sincronización de Chrome", usa la política "SyncDisabled".
-
-      Si la política se establece como "Forzar el acceso en el navegador", el usuario verá un cuadro de diálogo para seleccionar una cuenta de acceso. Esta opción asegura que se apliquen las políticas asociadas a las cuentas administradas. De manera predeterminada, esta opción activa la "Sincronización de Chrome" para la cuenta, excepto si la sincronización se inhabilitó por parte del administrador del dominio o mediante la política "SyncDisabled". El valor predeterminado de BrowserGuestModeEnabled se establecerá como "false". Ten en cuenta que, después de habilitar esta política, se bloquearán los perfiles existentes sin asignación y no podrás acceder a ellos. Para obtener más información, consulta el artículo del Centro de ayuda: https://support.google.com/chrome/a/answer/7572556.
-
-      Si no se establece esta política, el usuario podrá decidir si desea habilitar el acceso en el navegador y usarlo según su criterio.</translation>
 <translation id="3911737181201537215">Si Android accede a una cuenta, esta política no tendrá efecto en esta acción.</translation>
 <translation id="391531815696899618">Permite inhabilitar la sincronización de Google Drive en la aplicación Archivos de <ph name="PRODUCT_OS_NAME" /> si se establece en true. En ese caso, no se subirán datos a Google Drive.
 
@@ -2024,10 +2015,9 @@
 
       Si no se establece, se utiliza el período predeterminado de 345600000 milisegundos (cuatro días) para los dispositivos <ph name="PRODUCT_OS_NAME" /> y 604800000 milisegundos (una semana) para los dispositivos <ph name="PRODUCT_NAME" />.</translation>
 <translation id="4777805166623621364">
-      Esta configuración, SitePerProcess, se puede usar para impedir que los usuarios rechacen el comportamiento predeterminado del aislamiento de todos los sitios. Ten en cuenta que la política IsolateOrigins también puede ser útil para aislar los orígenes adicionales más precisos.
+      Esta configuración, SitePerProcess, se puede usar para impedir que los usuarios rechacen el comportamiento predeterminado del aislamiento de todos los sitios. Ten en cuenta que la política IsolateOrigins también puede ser útil para aislar orígenes adicionales indicados con mayor precisión.
       Si se habilita la política, los usuarios no podrán rechazar el comportamiento predeterminado en el que cada sitio ejecuta su propio proceso.
-      Si se inhabilita la política o no se configura, el usuario podrá rechazar el aislamiento de sitios
-      (p. ej., mediante la entrada para inhabilitar el aislamiento de sitios en chrome://flags).  Si se inhabilita la política o no se configura, no se desactivará el aislamiento de sitios.
+      Si no se configura ni inhabilita la política, el usuario podrá rechazar el aislamiento de sitios (p. ej., mediante la entrada para inhabilitar el aislamiento de sitios en chrome://flags).  Si se inhabilita la política o no se configura, no se desactivará el aislamiento de sitios.
       En <ph name="PRODUCT_OS_NAME" /> 76 y versiones anteriores, se recomienda también establecer la política de dispositivo <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> en el mismo valor. Si los valores que especifican las dos políticas no coinciden, es posible que se produzca un retraso al ingresar una sesión de usuario mientras se aplica el valor que especifica la política del usuario.
 
       NOTA: Esta política no se aplica en Android. Para habilitar SitePerProcess en Android, usa la configuración de la política SitePerProcessAndroid.
@@ -2173,7 +2163,7 @@
 <translation id="5148753489738115745">Te permite especificar los parámetros adicionales que se utilizan cuando <ph name="PRODUCT_FRAME_NAME" /> inicia <ph name="PRODUCT_NAME" />.
 
           Si no se configura esta política, se utilizará la línea de comandos predeterminada.</translation>
-<translation id="5152787786897382519">Chromium y Google Chrome tienen algunos grupos de políticas que dependen unos de otros para controlar una función. Los siguientes grupos de políticas representan estos conjuntos. Como las políticas pueden tener diferentes orígenes, solo se aplicarán los valores que provengan de la fuente de mayor prioridad. Se ignorarán los valores que provengan de una fuente de menor prioridad en el mismo grupo. El orden de prioridad se define en <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
+<translation id="5152787786897382519">Chromium y Google Chrome tienen algunos grupos de políticas que dependen unos de otros para controlar una función. Los siguientes grupos de políticas representan estos conjuntos. Como las políticas pueden tener diferentes fuentes, solo se aplicarán los valores que provengan de la fuente de mayor prioridad. Se ignorarán los valores que provengan de una fuente de menor prioridad perteneciente al mismo grupo. El orden de prioridad se define en <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
 <translation id="5159469559091666409">La frecuencia de envío de paquetes de red de control, en milisegundos.
 
       Si esta política no se configura, el intervalo predeterminado es 3 minutos. El intervalo
@@ -3972,13 +3962,13 @@
 <translation id="8489964335640955763">PluginVm</translation>
 <translation id="8493645415242333585">Inhabilitar el almacenamiento del historial del navegador</translation>
 <translation id="8499172469244085141">Configuración predeterminada (los usuarios pueden modificarla)</translation>
-<translation id="849962487677588458">Esta política quedó obsoleta, se programó su eliminación en Chrome 78 y no se reemplazará.
+<translation id="849962487677588458">Esta política quedó obsoleta; se programó su eliminación en Chrome 78 y no se reemplazará.
 
-      Su función es habilitar HTTP/0.9 en puertos que no sean 80 para HTTP ni 443 para HTTPS.
+      Su función es habilitar HTTP/0.9 en puertos que no sean el 80 en el caso de HTTP ni el 443 en el caso de HTTPS.
 
-      Está inhabilitada de forma predeterminada, pero, si se habilita, deja a los usuarios desprotegidos frente al problema de seguridad que se indican en https://crbug.com/600352.
+      Está inhabilitada de forma predeterminada pero, si se habilita, deja a los usuarios desprotegidos frente al problema de seguridad que se indica en https://crbug.com/600352.
 
-      Esta política permite que las empresas migren a servidores existentes fuera de HTTP/0.9, y se eliminará en el futuro.
+      Esta política permite que las empresas migren servidores existentes fuera de HTTP/0.9, y se eliminará en el futuro.
 
       Si no se establece, se inhabilitará HTTP/0.9 en los puertos no predeterminados.</translation>
 <translation id="8507835864888987300">Establece una versión objetivo para las actualizaciones automáticas.
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index 7f06018..e0cf52cc 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -1625,15 +1625,6 @@
       Si no estableces esta política, <ph name="PRODUCT_NAME" /> utilizará el directorio predeterminado habitual (específico de la plataforma).
 
       Accede a la página https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables para consultar una lista de las variables que se pueden utilizar.</translation>
-<translation id="3904459740090265495">Esta política controla el comportamiento del navegador cuando se inicia sesión. Permite establecer si los usuarios pueden iniciar sesión en <ph name="PRODUCT_NAME" /> con su cuenta y usar los servicios asociados a esta, como la función Sincronización de Chrome.
-
-      Si se asigna el valor "Inhabilitar el inicio de sesión en el navegador" a esta política, el usuario no podrá iniciar sesión en el navegador ni usar los servicios asociados a la cuenta. Además, las funciones del navegador, como Sincronización de Chrome, no se podrán usar ni estarán disponibles. Si el usuario inicia sesión y esta política está inhabilitada, la próxima vez que ejecute Chrome se cerrará la sesión, pero se conservarán los datos de su perfil local, como los marcadores o las contraseñas. De todas formas, podrá iniciar sesión y usar servicios web de Google como Gmail.
-
-      Si se asigna el valor "Habilitar el inicio de sesión en el navegador" a esta política, el usuario podrá iniciar sesión en el navegador. Si inicia sesión en servicios web de Google como Gmail, también lo hará en el navegador automáticamente. Con la sesión iniciada, el navegador conservará la información de la cuenta, pero Sincronización de Chrome no se activará de forma predeterminada; el usuario deberá activar esta función por separado. Al habilitar esta política, se impedirá que el usuario desactive la opción que permite iniciar sesión en el navegador. Para controlar la disponibilidad de Sincronización de Chrome, usa la política "SyncDisabled".
-
-      Si se asigna el valor "Forzar el inicio de sesión en el navegador" a esta política, se mostrará un cuadro de diálogo de selección de cuenta al usuario para que elija una e inicie sesión en el navegador. De este modo, se garantiza que, en el caso de las cuentas gestionadas, se apliquen y se cumplan las políticas asociadas a la cuenta. Además, se activará de forma predeterminada la función Sincronización de Chrome de la cuenta, excepto si la sincronización está inhabilitada por el administrador del dominio o por la política "SyncDisabled". El valor predeterminado que se asignará a BrowserGuestModeEnabled es "False". Ten en cuenta que, después de habilitar esta política, los perfiles con los que no se haya iniciado sesión se bloquearán y no se podrá acceder a ellos. Para obtener más información, consulta este artículo del Centro de Ayuda: https://support.google.com/chrome/a/answer/7572556.
-
-     Si no se asigna ningún valor a esta política, el usuario podrá decidir si quiere habilitar la opción para iniciar sesión en el navegador y usarla cuando lo crea oportuno.</translation>
 <translation id="3911737181201537215">Esta política no afecta al registro realizado por Android.</translation>
 <translation id="391531815696899618">Si se utiliza el valor true para esta política, se inhabilita la sincronización de Google Drive en la aplicación Archivos de <ph name="PRODUCT_OS_NAME" />, en cuyo caso no se suben datos a Google Drive.
 
diff --git a/components/policy/resources/policy_templates_et.xtb b/components/policy/resources/policy_templates_et.xtb
index 1d24f50df5..ccb5581 100644
--- a/components/policy/resources/policy_templates_et.xtb
+++ b/components/policy/resources/policy_templates_et.xtb
@@ -1631,15 +1631,6 @@
       Kui te seda reeglit ei määra, kasutab brauser <ph name="PRODUCT_NAME" /> oma tavapärast kataloogi (platvormipõhine).
 
       Saidil https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables näete loendit kasutatavatest muutujatest.</translation>
-<translation id="3904459740090265495">See reegel juhib brauserisse sisselogimise käitumist. See võimaldab teil määrata, kas kasutaja saab teenusesse <ph name="PRODUCT_NAME" /> oma kontoga sisse logida ja kasutada kontoga seotud teenuseid, nagu Chrome'i sünkroonimine.
-
-      Kui reegli väärtuseks on määratud „Keela brauserisse sisselogimine”, siis ei saa kasutaja brauserisse sisse logida ega kasutada kontopõhiseid teenuseid. Sellisel juhul ei saa brauseri tasemel funktsioone (nt Chrome'i sünkroonimine) kasutada ja need pole saadaval. Kui kasutaja oli sisse logitud ja reegli väärtuseks määratakse „Keelatud”, logitakse ta Chrome'i järgmisel käivitamisel välja, kuid tema kohalikud profiili andmed (nt järjehoidjad, paroolid jm) jäävad alles. Kasutaja saab siiski sisse logida Google'i veebiteenustesse (nt Gmaili) ja neid kasutada.
-
-      Kui reegli väärtuseks on määratud „Luba brauserisse sisselogimine”, siis saab kasutaja brauserisse sisse logida ja ta logitakse automaatselt brauserisse sisse, kui ta logib sisse mõnda Google'i veebiteenusesse (nt Gmaili). Kui kasutaja on brauserisse sisse logitud, siis salvestab brauser tema kontoteabe. See aga ei tähenda, et Chrome'i sünkroonimine vaikimisi sisse lülitatakse. Kasutaja peab selle funktsiooni kasutamise eraldi lubama. Selle reegli lubamisel ei saa kasutaja välja lülitada seadet, mis lubab brauserisse sisselogimise. Chrome'i sünkroonimise kättesaadavuse juhtimiseks kasutage reeglit „SyncDisabled”.
-
-      Kui reegli väärtuseks on määratud „Brauserisse sisselogimise nõudmine”, siis kuvatakse kasutajale kontovaliku dialoog ja ta peab valima, millisele kontole brauseri kasutamiseks sisse logida. See tagab, et hallatud kontode puhul rakendatakse ja jõustatakse kontoga seotud reeglid. Vaikimisi lülitab see Chrome'i sünkroonimise sellel kontol sisse (v.a juhul, kui sünkroonimine on domeeni administraatori poolt või reegliga „SyncDisabled” välja lülitatud). Reegli BrowserGuestModeEnabled vaikeväärtuseks määratakse Väär. Pange tähele, et olemasolevad allkirjastamata profiilid lukustatakse ja nendele ei pääse pärast selle reegli lubamist juurde. Lisateabe saamiseks lugege abikeskuse artiklit: https://support.google.com/chrome/a/answer/7572556.
-
-      Kui see reegel jäetakse määramata, siis saab kasutaja otsustada, kas soovib brauserisse sisselogimise valiku lubada, ja seda kasutada siis, kui ise soovib.</translation>
 <translation id="3911737181201537215">See reegel ei mõjuta Androidi logimist.</translation>
 <translation id="391531815696899618">Keelab Google Drive'i sünkroonimise operatsioonisüsteemi <ph name="PRODUCT_OS_NAME" /> rakenduses Failid, kui väärtuse olekuks on määratud Tõene. Sellisel juhul ei laadita Google Drive'i üles mingeid andmeid.
 
@@ -2235,7 +2226,7 @@
 <translation id="5148753489738115745">Võimaldab teil määrata täiendavad parameetrid, mida kasutatakse siis, kui <ph name="PRODUCT_FRAME_NAME" /> käivitab rakenduse <ph name="PRODUCT_NAME" />.
 
           Kui jätate eeskirjad määramata, siis kasutatakse vaikekäsurida.</translation>
-<translation id="5152787786897382519">Nii Chromiumil kui ka Google Chrome'il on teatud reeglite grupid, mis funktsiooni üle kontrolli pakkumiseks üksteisest sõltuvad. Neid komplekte esindavad järgmised reeglite grupid. Arvestades, et reeglitel võib olla mitu allikat, rakendatakse ainult kõige kõrgema prioriteediga allikast pärinevad väärtused. Sama grupi madalama prioriteediga allikast pärinevaid väärtusi eiratakse. Prioriteetuse järjestuse leiate siit: <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
+<translation id="5152787786897382519">Nii Chromiumil kui ka Google Chrome'il on teatud reeglite grupid, mis funktsiooni üle kontrolli pakkumiseks üksteisest sõltuvad. Neid komplekte esindavad järgmised reeglite grupid. Arvestades, et reeglitel võib olla mitu allikat, rakendatakse ainult kõige kõrgema prioriteediga allikast pärinevad väärtused. Sama grupi madalama prioriteediga allikast pärinevaid väärtusi eiratakse. Prioriteetsuse järjestuse leiate siit: <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
 <translation id="5159469559091666409">Jälgitavate võrgupakettide saatmise sagedus (millisekundites).
 
       Kui see reegel on määramata, on vaikeintervall kolm minutit. Minimaalne
@@ -4088,7 +4079,7 @@
 
       See reegel on vaikimisi keelatud. Kui see on lubatud, võivad kasutajad kokku puutuda turvaprobleemiga https://crbug.com/600352.
 
-      Selle reegli eesmärk on anda ettevõtetele võimalus eemaldada olemasolevad serverid üksusest HTTP/0.9. See reegel eemaldatakse tulevikus.
+      Selle reegli eesmärk on anda ettevõtetele võimalus viia olemasolevad serverid protokollist HTTP/0.9 teise protokolli üle. See reegel eemaldatakse tulevikus.
 
       Kui see reegel on määramata, keelatakse HTTP/0.9 mittevaikeportides.</translation>
 <translation id="8507835864888987300">Määrab automaatsete värskenduste sihtversiooni.
diff --git a/components/policy/resources/policy_templates_fa.xtb b/components/policy/resources/policy_templates_fa.xtb
index 0e1480f..1e78131 100644
--- a/components/policy/resources/policy_templates_fa.xtb
+++ b/components/policy/resources/policy_templates_fa.xtb
@@ -1587,15 +1587,6 @@
       اگر این خط‌مشی را تنظیم نکنید، <ph name="PRODUCT_NAME" /> از فهرست راهنمای پیش‌فرض معمول خود (ویژه هر پلتفورم) استفاده می‌کند.
 
       برای اطلاع از فهرست متغیرهایی که می‌توان استفاده کرد، https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables را ببینید.</translation>
-<translation id="3904459740090265495">‏این خط‌مشی، عملکرد ورود به سیستم مرورگر را کنترل می‌کند و به شما امکان می‌دهد که مشخص کنید آیا کاربر می‌تواند با حساب خود به سیستم <ph name="PRODUCT_NAME" /> وارد شود و از سرویس‌های مرتبط با حساب (مانند «همگام‌سازی Chrome») استفاده کند یا نه.
-
-      اگر خط‌مشی روی «ورود به سیستم مرورگر غیرفعال شود» تنظیم شود، کاربر نمی‌تواند به سیستم مرورگر وارد شود و از سرویس‌های مبتنی بر حساب استفاده کند. در این حالت، ویژگی‌های سطح مرورگر مانند «همگام‌سازی Chrome» قابل‌استفاده و دردسترس نیست. اگر کاربر به سیستم وارد شده باشد و خط‌مشی روی «غیرفعال‌شده» تنظیم شده باشد، دفعه بعد که کاربر Chrome را اجرا کند، از سیستم مرورگر خارج خواهد شد، اما نمایه محلی‌اش (مانند نشانک‌ها، گذرواژه‌ها و سایر موارد) حفظ می‌شود. کاربر همچنان می‌تواند به سیستم وارد شود و از سرویس‌های وب Google مانند Gmail استفاده کند.
-
-      اگر خط‌مشی روی «ورود به سیستم مرورگر فعال شود» تنظیم شود، کاربر مجاز است به سیستم مرورگر وارد شود و هنگامی که به سرویس‌های وب Google مانند Gmail وارد شده باشد، به‌طور خودکار به سیستم مرورگر وارد می‌شود. وارد سیستم شدن یعنی مرورگر اطلاعات حساب کاربر را حفظ می‌کند. اما به این معنی نیست که «همگام‌سازی Chrome» به‌طور خودکار روشن خواهد شد؛ کاربر باید برای استفاده از این ویژگی به‌طور مجزا شرکت کند. فعال کردن این خط‌مشی، مانع از این می‌شود که کاربر تنظیمی را خاموش کند که ورود به سیستم مرورگر را مجاز می‌کند. برای کنترل دردسترس بودن «همگام‌سازی Chrome»، از خط‌مشی SyncDisabled استفاده کنید.
-
-      اگر خط‌مشی روی «ورود اجباری به سیستم مرورگر» تنظیم شده باشد، یک کادر گفتگوی انتخاب حساب برای کاربر ارائه می‌شود و باید برای استفاده از مرورگر، حسابی را انتخاب کند و به آن وارد شود. این به شما اطمینان می‌دهد که خط‌مشی‌های مرتبط با حساب برای حساب‌های مدیریت‌شده اعمال و اجرا می‌شود. به‌طور پیش‌فرض، این کار «همگام‌سازی Google» را برای حساب موردنظر فعال می‌کند، به‌جز وقتی که همگام‌سازی توسط سرپرست دامنه یا ازطریق خط‌مشی «SyncDisabled» غیرفعال شده باشد. مقدار پیش‌فرض BrowserGuestModeEnabled روی نادرست تنظیم خواهد شد. توجه داشته باشید که بعد از فعال کردن این خط‌مشی، نمایه‌های امضا‌نشده موجود قفل و غیرقابل‌دسترس می‌شود. برای اطلاعات بیشتر، مقاله مرکز راهنمایی را ببینید:https://support.google.com/chrome/a/answer/7572556
-
-      اگر این خط‌مشی تنظیم نشود، کاربر می‌تواند تصمیم بگیرد که می‌خواهد گزینه ورود به سیستم مرورگر را فعال کند و از آن همان‌گونه که می‌بیند استفاده کند یا نه.</translation>
 <translation id="3911737181201537215">‏این خط‌مشی در ورود به سیستمی که ازطریق Android انجام می‌شود تأثیری ندارد.</translation>
 <translation id="391531815696899618">‏وقتی روی درست تنظیم شده باشد، همگام‌سازی Google Drive را در برنامه Files‏ <ph name="PRODUCT_OS_NAME" /> غیر فعال می‌کند. در این حالت، هیچ داده‌ایی در Google Drive بارگذاری نمی‌شود.
 
diff --git a/components/policy/resources/policy_templates_fi.xtb b/components/policy/resources/policy_templates_fi.xtb
index 592e321c..9a9455ad9 100644
--- a/components/policy/resources/policy_templates_fi.xtb
+++ b/components/policy/resources/policy_templates_fi.xtb
@@ -1600,16 +1600,6 @@
       Jos et ota tätä käytäntöä käyttöön, <ph name="PRODUCT_NAME" /> käyttää tavallista oletushakemistoaan (käyttöympäristökohtainen).
 
       Osoitteessa https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables on lista käytettävissä olevista muuttujista.</translation>
-<translation id="3904459740090265495">Tällä käytännöllä hallitaan selaimen kirjautumiskäyttäytymistä. Sillä voit valita, voiko käyttäjä suorittaa <ph name="PRODUCT_NAME" /> ‑kirjautumisen tilillään ja käyttää tähän liittyviä palveluita, kuten Chromen synkronointia.
-
-      Jos käytännön arvo on Estä kirjautuminen selaimelle, käyttäjä ei voi kirjautua selaimelle tai käyttää tilipohjaisia palveluita. Tällöin selaintason palvelut kuten Chromen synkronointi eivät ole käytettävissä. Jos käyttäjä oli kirjautuneena, kun käytännön arvoksi valittiin Estä, hänet kirjataan ulos seuraavalla Chromen suorituskerralla. Paikallinen profiilidata, esimerkiksi kirjanmerkit ja salasanat, säilytetään silti. Käyttäjä voi kirjautua Googlen verkkopalveluihin (esim. Gmail) ja käyttää niitä.
-
-      Jos käytännön arvo on Salli kirjautuminen selaimelle, käyttäjä voi kirjautua selaimelle, ja hänet kirjataan automaattisesti selaimelle Gmailiin tai muihin Googlen verkkopalveluihin kirjautumisen yhteydessä. Kun käyttäjä on kirjautunut selaimelle, se tallentaa hänen tilitietonsa. Chromen synkronointi ei kuitenkaan ole käytössä oletuksena, vaan käyttäjän on otettava tämä ominaisuus käyttöön erikseen. Tämän käytännön voimaantulo estää käyttäjää kytkemästä päälle asetusta, joka sallii selaimelle kirjautumisen. Voit päättää Chromen synkronoinnin saatavuudesta SyncDisabled-käytännöllä.
-
-      Jos käytännön arvo on Pakota kirjautumaan selaimelle, käyttäjälle näytetään tilinvalintaikkuna, ja hänen täytyy valita tili ja kirjautua sisään käyttääkseen selainta. Näin varmistetaan, että tilin käytäntöjä noudatetaan hallinnoiduilla tileillä. Samalla Chromen synkronointi otetaan oletuksena käyttöön tilillä, paitsi jos synkronointi on verkkotunnuksen 
-ylläpitäjän tai SyncDisabled-käytännön estämä. BrowserGuestModeEnabled-käytännön arvoksi asetetaan Epätosi. Aiemmin luodut profiilit, joilla ei ole kirjauduttu sisään, lukitaan pois käytöstä, kun käytäntö on voimassa. Lisätietoja on artikkelissa https://support.google.com/chrome/a/answer/7572556.
-
-      Jos tälle käytännölle ei määritetä arvoa, käyttäjä voi valita, otetaan selaimelle kirjautuminen käyttöön, ja käyttää ominaisuutta haluamallaan tavalla.</translation>
 <translation id="3911737181201537215">Tällä käytännöllä ei ole vaikutusta Androidin tekemään lokikirjaukseen.</translation>
 <translation id="391531815696899618">Jos arvo on tosi, Google Driven synkronointi tuotteen <ph name="PRODUCT_OS_NAME" /> Tiedostot-sovelluksen kanssa poistetaan käytöstä. Tällöin mitään tietoja ei lähetetä Google Driveen.
 
diff --git a/components/policy/resources/policy_templates_fil.xtb b/components/policy/resources/policy_templates_fil.xtb
index 42423e3..b592ab1 100644
--- a/components/policy/resources/policy_templates_fil.xtb
+++ b/components/policy/resources/policy_templates_fil.xtb
@@ -1630,15 +1630,6 @@
       Kung hindi mo itatakda ang patakarang ito, gagamitin ng <ph name="PRODUCT_NAME" /> ang karaniwang default na directory nito (partikular sa platform).
 
       Tingnan ang https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables para sa isang listahan ng mga magagamit na variable.</translation>
-<translation id="3904459740090265495">Kinokontrol ng patakarang ito ang gawi sa pag-sign in ng browser. Nagbibigay-daan ito sa iyong tukuyin kung ang user ay maaaring mag-sign in sa <ph name="PRODUCT_NAME" /> gamit ang kanyang account at gumamit ng mga serbisyong nauugnay sa account tulad ng Chrome sync.
-
-      Kung itatakda ang patakaran sa "I-disable ang pag-sign in sa browser," ang user ay hindi maaaring mag-sign in sa browser at gumamit ng mga serbisyong nakabatay sa account. Sa ganitong sitwasyon, hindi magagamit at hindi magiging available ang mga feature sa antas ng browser tulad ng Chrome sync. Kung naka-sign in ang user at nakatakda ang patakaran sa "Naka-disable," masa-sign out siya sa susunod na magpatakbo siya ng Chrome ngunit mapapanatili ang kanyang lokal na data ng profile tulad ng mga bookmark, password, etc. Magagawa pa rin ng user na mag-sign in sa at gumamit ng mga serbisyo sa web ng Google tulad ng Gmail.
-
-      Kung itatakda ang patakaran sa "I-enable ang pag-sign in sa browser," papayagan ang user na mag-sign in sa browser at awtomatiko siyang masa-sign in sa browser kapag nag-sign in sa mga serbisyo sa web ng Google tulad ng Gmail. Ang pagiging naka-sign in sa browser ay nangangahulugang pananatilihin ng browser ang impormasyon ng account ng user. Gayunpaman, hindi ito nangangahulugang mao-on bilang default ang Chrome sync; dapat ay hiwalay na mag-opt in ang user para magamit ang feature na ito. Kapag na-enable ang patakarang ito, mapipigilan ang user na i-off ang setting na nagbibigay-daan sa pag-sign in sa browser. Para makontrol ang availability ng Chrome sync, gamitin ang patakarang "SyncDisabled."
-
-      Kung itatakda ang patakaran sa "Pwersahin ang pag-sign in sa browser," papakitaan ng dialog sa pagpili ng account ang user at kailangan niyang pumili at mag-sign in sa isang account para magamit ang browser. Tinitiyak nitong malalapat at mapapatupad ang mga patakarang nauugnay sa account para sa mga pinamamahalaang account. Bilang default, ino-on nito ang Chrome sync para sa account, maliban sa sitwasyon kung saan ang pag-sync ay na-disable ng admin ng domain o sa pamamagitan ng patakarang "SyncDisabled." Itatakda sa false ang default na value ng BrowserGuestModeEnabled. Tandaang mala-lock at hindi na maa-access ang mga kasalukuyang unsigned na profile pagkatapos i-enable ang patakarang ito. Para sa higit pang impormasyon, tingnan ang artikulo sa help center: https://support.google.com/chrome/a/answer/7572556.
-
-      Kung hindi itatakda ang patakarang ito, maaaring magpasya ang user kung gusto niyang i-enable ang opsyon sa pag-sign in sa browser at gamitin ito sa paraang naaangkop para sa kanya.</translation>
 <translation id="3911737181201537215">Walang epekto ang patakarang ito sa pag-log na ginawa ng Android.</translation>
 <translation id="391531815696899618">Dini-disable ang pagsi-sync ng Google Drive sa <ph name="PRODUCT_OS_NAME" /> Files app kapag nakatakda sa True. Sa sitwasyong iyon, walang data na maa-upload sa Google Drive.
 
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index 14ac8c7..1aa1f3a 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -1630,15 +1630,6 @@
       Si vous ne configurez pas cette règle, <ph name="PRODUCT_NAME" /> utilise le répertoire par défaut habituel (spécifique à la plate-forme).
 
       Vous pouvez consulter la liste des variables utilisables à l'adresse https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Cette règle permet de gérer la connexion au navigateur et de spécifier si l'utilisateur peut ou non se connecter à <ph name="PRODUCT_NAME" /> avec son compte et utiliser les services relatifs au compte, comme la synchronisation Chrome.
-
-      Si la règle est définie sur "Désactiver la connexion au navigateur", l'utilisateur ne peut pas se connecter au navigateur et utiliser les services relatifs au compte. Dans ce cas, les fonctionnalités de navigateur comme la synchronisation Chrome sont indisponibles et ne peuvent pas être utilisés. Si l'utilisateur était connecté et que la règle est définie sur "Disabled", il sera déconnecté la prochaine fois qu'il utilisera Chrome, mais ses données de profil locales (favoris, mots de passe, etc.) seront conservées. L'utilisateur peut toujours se connecter aux services Web Google comme Gmail et s'en servir.
-
-      Si la règle est définie sur "Activer la connexion au navigateur", l'utilisateur peut se connecter au navigateur. Il est également automatiquement connecté au navigateur lorsqu'il est connecté aux services Web Google comme Gmail. Lorsque l'utilisateur est connecté au navigateur, ses informations de compte sont conservées par le navigateur. Cependant, cela ne signifie pas que la synchronisation Chrome est activée par défaut, l'utilisateur doit accepter d'utiliser cette fonctionnalité séparément. En activant cette règle, vous empêchez l'utilisateur de désactiver le paramètre qui autorise la connexion au navigateur. Pour contrôler la disponibilité de la synchronisation Chrome, utilisez la règle "SyncDisabled".
-
-      Si la règle est définie sur "Obliger la connexion au navigateur", une boîte de dialogue s'affiche pour permettre à l'utilisateur de choisir un compte auquel se connecter pour utiliser le navigateur. Cette mesure permet de s'assurer que dans le cas de comptes gérés, les règles associées à un compte sont appliquées. Active par défaut la synchronisation Chrome pour le compte, sauf dans le cas où la synchronisation a été désactivée par l'administrateur de domaine ou via la règle "SyncDisabled". La valeur par défaut de "BrowserGuestModeEnabled" est définie sur "False". Sachez que les profils existants non signés seront verrouillés et inaccessibles une fois cette règle activée. Pour en savoir plus, consultez l'article suivant du centre d'aide : https://support.google.com/chrome/a/answer/7572556.
-
-      Si la règle n'est pas définie, l'utilisateur peut décider d'activer ou non l'option de connexion au navigateur et l'utiliser à sa convenance.</translation>
 <translation id="3911737181201537215">Cette règle n'a aucun effet sur l'enregistrement effectué par Android.</translation>
 <translation id="391531815696899618">Désactive la synchronisation de Google Drive dans l'application Fichiers de <ph name="PRODUCT_OS_NAME" /> lorsque ce paramètre est défini sur "True". Dans ce cas, aucune donnée n'est importée dans Google Drive.
 
@@ -2078,13 +2069,13 @@
 
       Si ce paramètre n'est pas défini, la période par défaut est fixée à 345 600 000 millisecondes (quatre jours) pour les appareils <ph name="PRODUCT_OS_NAME" /> et à 604 800 000 millisecondes (une semaine) pour <ph name="PRODUCT_NAME" />.</translation>
 <translation id="4777805166623621364">
-      La règle SitePerProcess peut être employée pour empêcher les utilisateurs de désactiver le paramètre par défaut qui isole tous les sites. Notez que la règle IsolateOrigins peut également servir à isoler d'autres origines plus précises.
-      Si la présente règle est activée, les utilisateurs ne peuvent pas désactiver le paramètre par défaut où chaque site exécute son propre processus.
+      La règle SitePerProcess peut être employée pour empêcher les utilisateurs de désactiver le comportement par défaut qui isole tous les sites. Notez que la règle IsolateOrigins peut également servir à isoler d'autres origines plus précises.
+      Si la règle est activée, les utilisateurs ne peuvent pas désactiver le comportement par défaut, dans lequel chaque site exécute son propre processus.
       Si cette règle n'est pas configurée ou si elle est désactivée, les utilisateurs peuvent désactiver l'isolation de sites
-      (en accédant à l'option "Désactiver l'isolation de sites" sur la page chrome://flags, par exemple).  Si cette règle est désactivée et/ou si elle n'est pas configurée, l'isolation de sites n'est pas désactivée.
-      Pour <ph name="PRODUCT_OS_NAME" /> 76 ou version antérieure, nous vous recommandons d'attribuer la même valeur à la règle <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> relative aux appareils. Si les valeurs sont différentes, il peut y avoir un certain délai lors de l'ouverture d'une session utilisateur dû à l'application de la valeur spécifiée par la règle relative aux utilisateurs.
+      (en accédant à l'option "Désactiver l'isolation de sites" sur la page chrome://flags, par exemple).  Le fait de désactiver cette règle, ou de ne pas la configurer, ne désactive pas l'isolation de sites.
+      Pour <ph name="PRODUCT_OS_NAME" /> 76 ou version antérieure, nous vous recommandons d'attribuer la même valeur à la règle <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> relative aux appareils. Si les valeurs ne sont pas identiques pour les deux règles, la règle relative aux utilisateurs s'applique. Cela peut ralentir l'ouverture de la session utilisateur.
 
-      REMARQUE : Cette règle ne s'applique pas à Android. Pour l'activer sur Android, utilisez le paramètre de la règle SitePerProcessAndroid.
+      REMARQUE : Cette règle ne s'applique pas à Android. Pour activer la règle SitePerProcess sur Android, utilisez le paramètre SitePerProcessAndroid.
       </translation>
 <translation id="4788252609789586009">Active la fonctionnalité de saisie automatique de <ph name="PRODUCT_NAME" />, qui permet à l'utilisateur de remplir automatiquement des formulaires Web à partir de données stockées précédemment, telles que des informations relatives à sa carte de crédit.
 
@@ -2231,7 +2222,7 @@
 <translation id="5148753489738115745">Permet de spécifier les paramètres supplémentaires utilisés lorsque <ph name="PRODUCT_FRAME_NAME" /> lance <ph name="PRODUCT_NAME" />.
 
           Si cette règle n'est pas configurée, la ligne de commande par défaut est utilisée.</translation>
-<translation id="5152787786897382519">Chromium et Google Chrome possèdent tous les deux des groupes de règles interdépendantes pour contrôler une fonctionnalité. Ces ensembles sont représentés par les groupes de règles suivants. Les règles pouvant avoir plusieurs sources, seules les valeurs issues de la source avec la priorité la plus haute sont appliquées. Les valeurs provenant d'une source avec une priorité inférieure dans le même groupe sont ignorées. L'ordre de priorité est défini dans le document <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
+<translation id="5152787786897382519">Chromium et Google Chrome possèdent tous deux des groupes de règles interdépendantes pour contrôler une fonctionnalité. Ces ensembles sont représentés par les groupes de règles suivants. Les règles pouvant avoir plusieurs sources, seules les valeurs issues de la source ayant la priorité la plus haute sont appliquées. Les valeurs provenant d'une source ayant une priorité inférieure dans le même groupe sont ignorées. L'ordre de priorité est défini à la page <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
 <translation id="5159469559091666409">Indiquer la fréquence d'envoi de paquets réseau de contrôle, en millisecondes.
 
       Si cette règle n'est pas définie, l'intervalle par défaut est de 3 minutes.
@@ -2781,7 +2772,7 @@
 <translation id="5983708779415553259">Comportement par défaut des sites ne figurant dans aucun pack de contenu</translation>
 <translation id="5997543603646547632">Utiliser le format d'horloge 24 h par défaut</translation>
 <translation id="5997846976342452720">Indiquer si l'outil de recherche de plug-ins doit être désactivé (obsolète)</translation>
-<translation id="5998198091336830580">Cette règle fait partie du groupe atomique suivant (seules les règles issues de la source avec la plus haute priorité, figurant dans le groupe sont appliquées) :</translation>
+<translation id="5998198091336830580">Cette règle fait partie du groupe atomique suivant (seules les règles issues de la source ayant la plus haute priorité dans le groupe sont appliquées) :</translation>
 <translation id="6017568866726630990">Affiche la boîte de dialogue d'impression du système au lieu de l'aperçu avant impression.
 
       Lorsque ce paramètre est activé, <ph name="PRODUCT_NAME" /> ouvre la boîte de dialogue d'impression du système au lieu de l'aperçu avant impression intégré lorsqu'un utilisateur souhaite imprimer une page.
@@ -3528,7 +3519,7 @@
 
       Cette règle n'est effective que lorsque <ph name="CHROME_REPORTING_EXTENSION_NAME" /> est activée et que l'ordinateur est inscrit à <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
 <translation id="7359307926583593395">
-      Cette règle s'applique à l'écran de connexion. Veuillez également consulter celle applicable à la session utilisateur (<ph name="SITE_PER_PROCESS_POLICY_NAME" />). Nous vous recommandons d'attribuer la même valeur à ces deux règles. Si les valeurs sont différentes, il peut y avoir un certain délai lors de l'ouverture d'une session utilisateur dû à l'application de la valeur spécifiée par la règle relative aux utilisateurs.
+      Cette règle s'applique à l'écran de connexion. Veuillez également consulter celle applicable à la session utilisateur (<ph name="SITE_PER_PROCESS_POLICY_NAME" />). Nous vous recommandons d'attribuer la même valeur à ces deux règles. Si les valeurs ne sont pas identiques, la règle relative aux utilisateurs s'applique. Cela peut ralentir l'ouverture de la session utilisateur.
       </translation>
 <translation id="737655323154569539">Limite le format de la page d'impression. Si la règle n'est pas définie ou qu'elle est vide, on considère qu'il n'y a aucune restriction.</translation>
 <translation id="7389872682701720082">Si vous activez ce paramètre, les plug-ins non obsolètes sont toujours exécutés.
@@ -4070,13 +4061,13 @@
 <translation id="8489964335640955763">PluginVm</translation>
 <translation id="8493645415242333585">Désactiver l'enregistrement de l'historique du navigateur</translation>
 <translation id="8499172469244085141">Paramètres par défaut (les utilisateurs peuvent les contourner)</translation>
-<translation id="849962487677588458">Cette règle est obsolète (elle va être supprimée dans Chrome 78, sans être remplacée).
+<translation id="849962487677588458">Cette règle est obsolète (elle va être supprimée dans Chrome 78 et ne sera pas remplacée).
 
       Elle active le protocole HTTP/0.9 sur les ports autres que 80 pour HTTP et 443 pour HTTPS.
 
       Elle est désactivée par défaut. Si elle est activée, elle expose les utilisateurs à la faille de sécurité décrite sur la page https://crbug.com/600352.
 
-      Elle vise à donner la possibilité aux entreprises de migrer les serveurs actuels pour qu'ils n'utilisent plus HTTP/0.9. Elle va être supprimée prochainement.
+      Elle vise à permettre aux entreprises qui utilisent encore le protocole HTTP/0.9 à migrer leurs serveurs vers une version plus récente. Elle sera supprimée prochainement.
 
       Si cette règle n'est pas configurée, le protocole HTTP/0.9 est désactivé sur les ports non définis par défaut.</translation>
 <translation id="8507835864888987300">Définit une version cible pour les mises à jour automatiques.
diff --git a/components/policy/resources/policy_templates_gu.xtb b/components/policy/resources/policy_templates_gu.xtb
index 886d53b7..b74a4fb6 100644
--- a/components/policy/resources/policy_templates_gu.xtb
+++ b/components/policy/resources/policy_templates_gu.xtb
@@ -1608,15 +1608,6 @@
       જો તમે આ નીતિ સેટ નહિ કરો, તો <ph name="PRODUCT_NAME" /> તેની ડિફૉલ્ટ ડિરેક્ટરીનો ઉપયોગ કરશે (ખાસ પ્લેટફોર્મ પ્રમાણે).
 
       ઉપયોગમાં લઈ શકાય તેવા વેરિયેબલની સૂચિ માટે https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables જુઓ.</translation>
-<translation id="3904459740090265495">આ નીતિ બ્રાઉઝરની સાઇન ઇન વર્તણૂંકનું નિયંત્રણ કરે છે. વપરાશકર્તા તેમના એકાઉન્ટ વડે <ph name="PRODUCT_NAME" /> પર સાઇન ઇન કરી શકે કે કેમ તેમજ Chrome સિંક જેવી એકાઉન્ટ સંબંધિત સેવાઓનો ઉપયોગ કરી શકે કે કેમ તે સ્પષ્ટ કરવાની તે તમને મંજૂરી આપે છે.
-
-      "બ્રાઉઝર સાઇન ઇન બંધ કરો" પર નીતિ સેટ કરેલી હોય, તો વપરાશકર્તા બ્રાઉઝર પર સાઇન ઇન ન કરી શકે તેમજ એકાઉન્ટ આધારિત સેવાઓનો ઉપયોગ ન કરી શકે. આ કિસ્સામાં Chrome સિંક જેવી બ્રાઉઝર સ્તરની સુવિધાઓનો ઉપયોગ ન થઈ શકે અને તે ઉપલબ્ધ નહીં હોય. વપરાશકર્તાએ સાઇન ઇન કરેલું હોય અને નીતિ "બંધ કરો" પર સેટ કરેલી હોય, તો પછી જ્યારે તેઓ Chrome ચલાવશે ત્યારે તેમને સાઇન આઉટ કરવામાં આવશે, જોકે બુકમાર્ક, પાસવર્ડ, વગેરે જેવો તેમનો સ્થાનિક પ્રોફાઇલ ડેટા સચવાશે. વપરાશકર્તા હજુ સાઇન ઇન કરી શકશે અને Gmail જેવી Google વેબ સેવાઓનો ઉપયોગ કરી શકશે.
-
-      "બ્રાઉઝર સાઇન ઇન ચાલુ કરો" પર નીતિ સેટ કરેલી હોય, તો વપરાશકર્તાને બ્રાઉઝર પર સાઇન ઇન કરવાની મંજૂરી છે તેમજ Gmail જેવી Google વેબ સેવાઓ પર તે જ્યારે પણ સાઇન ઇન કરશે ત્યારે તે ઑટોમૅટિક રીતે સાઇન ઇન થઈ જાય છે. બ્રાઉઝર પર સાઇન ઇન કર્યું હોવાનો અર્થ એ કે વપરાશકર્તાની એકાઉન્ટ માહિતી બ્રાઉઝર પાસે રહેશે. જોકે, એનો અર્થ એ નથી કે, ડિફૉલ્ટ તરીકે જ Chrome સિંક ચાલુ થઈ જશે; આ સુવિધાનો ઉપયોગ કરવા માટે વપરાશકર્તાએ તેની અલગ પસંદગી કરવી પડશે. આ નીતિ ચાલુ કરવાથી હવે વપરાશકર્તા બ્રાઉઝર સાઇન ઇનની મંજૂરી આપતું  સેટિંગ બંધ નહીં કરી શકે. Chrome સિંકની ઉપલબ્ધતા નિયંત્રિત કરવા માટે, "SyncDisabled" નીતિનો ઉપયોગ કરો.
-
-      "બ્રાઉઝર સાઇન ઇન ફરજિયાત બનાવો" પર નીતિ સેટ કરેલી હોય, તો વપરાશકર્તા સામે એક એકાઉન્ટ પસંદગીનો સંવાદ આવશે અને તેણે બ્રાઉઝરનો ઉપયોગ કરવા માટે એક એકાઉન્ટ પસંદ કરી તેમાં સાઇન ઇન કરવું પડશે. મેનેજ કરેલાં એકાઉન્ટ માટે એકાઉન્ટ સાથે સંકળાયેલી નીતિઓ લાગુ પડાઈ હોવાની તેમજ તેનો અમલ થયો હોવાનું તે સુનિશ્ચિત કરે છે. ડોમેન વ્યવસ્થાપક દ્વારા અથવા "SyncDisabled" નીતિ મારફત સિંક બંધ કરવામાં આવ્યું હોય તે સિવાય, ડિફૉલ્ટ તરીકે તે એકાઉન્ટ માટે Chrome સિંક ચાલુ કરે છે. BrowserGuestModeEnabledનું ડિફૉલ્ટ મૂલ્ય false પર સેટ કરવામાં આવશે. નોંધ કરો કે આ નીતિને ચાલુ કર્યા પછી હાલની સાઇન ઇન નહીં કરેલી પ્રોફાઇલ લૉક કરવામાં આવશે અને ઇનઍક્સેસિબલ રહેશે. વધુ માહિતી માટે, સહાયતા કેન્દ્ર લેખ જુઓ: https://support.google.com/chrome/a/answer/7572556.
-
-      જો આ નીતિ સેટ ન કરેલી હોય, તો વપરાશકર્તા બ્રાઉઝર સાઇન ઇન વિકલ્પ ચાલુ કરવા માગે છે કે નહીં તે નક્કી કરી શકે તેમજ તેમને યોગ્ય લાગે તેમ તેનો ઉપયોગ કરી શકે છે.</translation>
 <translation id="3911737181201537215">આ નીતિનો Android દ્વારા લૉગ ઇન કરવા પર કોઈ પ્રભાવ પડતો નથી.</translation>
 <translation id="391531815696899618">જ્યારે ટ્રુ પર સેટ હોય, ત્યારે <ph name="PRODUCT_OS_NAME" /> ફાઇલ્સ એપ્લિકેશનમાં Google ડ્રાઇવ સમન્વયન અક્ષમ કરે છે. તેવા કિસ્સામાં, Google ડ્રાઇવ પર કોઈ ડેટા અપલોડ કરવામાં આવતો નથી.
 
@@ -4057,7 +4048,7 @@
 
       આ નીતિનો ઉદ્દેશ ઉદ્યોગોને HTTP/0.9નાં અસ્તિત્વમાં છે તે સર્વરથી બહાર સ્થાનાંતર કરવા માટે તક આપવી છે અને તેને ભવિષ્યમાં કાઢી નાખવામાં આવશે.
 
-      જો આ નીતિ સેટ કરેલી ન હોય, તો HTTP/0.9ને બિન-ડિફૉલ્ટ પોર્ટ પર બંધ કરવામાં આવશે.</translation>
+      જો આ નીતિ સેટ કરેલી ન હોય, તો HTTP/0.9ને નૉન-ડિફૉલ્ટ પોર્ટ પર બંધ કરવામાં આવશે.</translation>
 <translation id="8507835864888987300">ઑટોમૅટિક રીતે અપડેટ માટે લક્ષ્ય વર્ઝન સેટ કરે છે.
 
       <ph name="PRODUCT_OS_NAME" /> જેના પર અપડેટ થવું જોઈએ તેના લક્ષ્ય વર્ઝનના પ્રીફિક્સનો ઉલ્લેખ કરે છે. જો ડિવાઇસ ઉલ્લેખિત પ્રીફિક્સ કરતાં પહેલાંના વર્ઝન પર ચાલતું હોય, તો તેને આપેલ પ્રીફિક્સ સાથે નવીનતમ વર્ઝન પર અપડેટ કરવામાં આવશે. જો ડિવાઇસ પહેલેથી નવા વર્ઝન પર હોય, તો પ્રભાવ <ph name="DEVICE_ROLLBACK_TO_TARGET_VERSION_POLICY_NAME" />ના મૂલ્ય પર નિર્ભર છે. પ્રીફિક્સ ફૉર્મેટ નીચેના ઉદાહરણમાં દર્શાવ્યા પ્રમાણે ઘટક-પ્રમાણે કાર્ય કરે છે:
diff --git a/components/policy/resources/policy_templates_hi.xtb b/components/policy/resources/policy_templates_hi.xtb
index 357efafd..46dcf5c 100644
--- a/components/policy/resources/policy_templates_hi.xtb
+++ b/components/policy/resources/policy_templates_hi.xtb
@@ -1629,15 +1629,6 @@
       अगर आप इस नीति को सेट नहीं करते हैं, तो <ph name="PRODUCT_NAME" /> उसकी सामान्य डिफ़ॉल्ट निर्देशिका (प्लैटफ़ॉर्म-आधारित) का इस्तेमाल करेगा.
 
       इस्तेमाल किए जा सकने वाले वैरिएबल की सूची के लिए https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables देखें.</translation>
-<translation id="3904459740090265495">यह नीति ब्राउज़र के साइन इन बर्ताव को नियंत्रित करती है. यह नीति आपको यह तय करने देती है कि उपयोगकर्ता अपने खाते से <ph name="PRODUCT_NAME" /> में साइन कर सकते हैं और खाते से जुड़ी सेवाएं जैसे 'Chrome सिंक' का इस्तेमाल कर सकते हैं.
-
-      अगर यह नीति "ब्राउज़र में साइन इन बंद करें" पर सेट की हुई है, तो उपयोगकर्ता ब्राउज़र में साइन इन नहीं कर सकते हैं और खाता आधारित सेवाओं का इस्तेमाल नहीं कर सकते हैं. इस मामले में ब्राउज़र लेवल की सुविधाओं जैसे 'Chrome सिंक' का इस्तेमाल नहीं किया जा सकता है और ये मौजूद नहीं रहेंगी. अगर उपयोगकर्ता ने साइन इन किया हुआ है और नीति "बंद" पर सेट है, तो अगली बार जब उपयोगकर्ता Chrome चलाएगा तो उसे साइन आउट कर दिया जाएगा लेकिन उसका स्थानीय प्रोफ़ाइल डेटा जैसे बुकमार्क, पासवर्ड वगैरह वैसे ही बने रहेंगे. उपयोगकर्ता अब भी Google वेब सेवाओं, जैसे Gmail में साइन इन कर सकेगा और उनका इस्तेमाल कर सकेगा.
-
-      अगर नीति "ब्राउज़र में साइन इन चालू करें" पर सेट की हुई है, तो उपयोगकर्ता को ब्राउज़र में साइन इन करने की अनुमति रहती है और Google वेब सेवाओं जैसे Gmail में साइन इन होने पर उसे ब्राउज़र में अपने आप साइन इन कर दिया जाता है. ब्राउज़र में साइन इन होने का मतलब यह है कि उपयोगकर्ता की खाता जानकारी ब्राउज़र के पास रहेगी. हालांकि, इसका यह मतलब नहीं है कि 'Chrome सिंक' डिफ़ॉल्ट रूप से चालू रहेगा; उपयोगकर्ता को इस सुविधा का इस्तेमाल करने के लिए उसे अलग से चुनना होगा. इस नीति के चालू होने पर उपयोगकर्ता को उस सेटिंग को बंद करने से रोका जाएगा जो ब्राउज़र में साइन इन करने देती है. 'Chrome सिंक' की मौजूदगी को नियंत्रित करने के लिए, "SyncDisabled" नीति का इस्तेमाल करें.
-
-      अगर नीति "ब्राउज़र में साइन इन करना ज़रूरी है" पर सेट की हुई है, तो उपयोगकर्ता को खाता चुनने का विकल्प दिखाई देगा और ब्राउज़र का इस्तेमाल करने के लिए उसे एक खाता चुनकर साइन इन करना होगा. इससे यह पक्का किया जाता है कि प्रबंधित खातों के लिए खाते से जुड़ी नीतियां लागू करके चालू कर दी गई हैं. इससे जिन मामलों में डोमेन एडमिन या "SyncDisabled" नीति की ओर से सिंक बंद हो उन्हें छोड़कर, खाते के लिए 'Chrome सिंक' डिफ़ॉल्ट रूप से चालू हो जाता है. BrowserGuestModeEnabled का डिफ़ॉल्ट मान 'गलत' पर सेट कर दिया जाएगा. ध्यान दें कि इस नीति को चालू करने के बाद, साइन इन नहीं की गईं मौजूदा प्रोफ़ाइल लॉक कर दी जाएंगी और एक्सेस नहीं की जा सकेंगी. ज़्यादा जानकारी के लिए, 'सहायता केंद्र लेख' देखें: https://support.google.com/chrome/a/answer/7572556.
-
-      अगर यह नीति सेट नहीं है तो उपयोगकर्ता तय कर सकता है कि वह ब्राउज़र में साइन इन करने का विकल्प चालू करे या नहीं और ठीक लगने पर इस्तेमाल करे या नहीं.</translation>
 <translation id="3911737181201537215">इस नीति का Android द्वारा किए गए प्रवेश पर कोई प्रभाव नहीं पड़ता.</translation>
 <translation id="391531815696899618">सही पर सेट होने पर <ph name="PRODUCT_OS_NAME" /> Files ऐप्लिकेशन में Google डिस्क सिंक को बंद कर देती है. उस स्थिति में, Google डिस्क पर कोई डेटा अपलोड नहीं किया जाता.
 
diff --git a/components/policy/resources/policy_templates_hr.xtb b/components/policy/resources/policy_templates_hr.xtb
index 5f348245..ec2eb8f3 100644
--- a/components/policy/resources/policy_templates_hr.xtb
+++ b/components/policy/resources/policy_templates_hr.xtb
@@ -1586,15 +1586,6 @@
       Ako ne postavite to pravilo, <ph name="PRODUCT_NAME" /> upotrebljava svoj uobičajeni zadani direktorij (ovisno o platformi).
 
       Popis varijabli koje se mogu upotrebljavati potražite na stranici https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">To pravilo upravlja ponašanjem prijave putem preglednika. Omogućuje vam da odredite može li se korisnik prijaviti na preglednik <ph name="PRODUCT_NAME" /> svojim računom i upotrebljavati usluge povezane s računom kao što je Chrome sinkronizacija.
-
-      Ako se to pravilo postavi na "Onemogući prijavu putem preglednika", korisnik se ne može prijaviti na preglednik i upotrebljavati usluge računa. U tom se slučaju značajke na razini preglednika kao što je Chrome sinkronizacija ne mogu upotrebljavati i neće biti dostupne. Ako je korisnik bio prijavljen i pravilo se postavi na "Onemogućeno", korisnik će se odjaviti sljedeći put kad pokrene Chrome, no zadržat će se lokalni podaci profila kao što su oznake, zaporke itd. Korisnik će se i dalje moći prijaviti na Googleove web-usluge kao što je Gmail i moći će ih upotrebljavati.
-
-      Ako se to pravilo postavi na "Omogući prijavu putem preglednika", korisnik se može prijaviti na preglednik i automatski se prijavljuje na preglednik kad se prijavi na Googleove web-usluge kao što je Gmail. Kad je korisnik prijavljen na preglednik, to znači da preglednik sprema podatke o korisnikovom računu. No to ne znači da će Chrome sinkronizacija biti uključena prema zadanim postavkama; da bi upotrebljavao tu značajku, korisnik se mora uključiti zasebno. Ako se to pravilo omogući, korisnik neće moći isključiti postavku koja omogućuje prijavu na preglednik. Da biste kontrolirali dostupnost Chrome sinkronizacije, upotrijebite pravilo "SyncDisabled".
-
-      Ako se pravilo postavi na "Nametni prijavu putem preglednika", korisniku se prikazuje dijaloški okvir za odabir računa i on mora odabrati račun i prijaviti se da bi upotrebljavao preglednik. Na taj se način za upravljane račune osigurava primjena i provedba pravila povezanih s računom. Prema zadanim postavkama time se uključuje Chrome sinkronizacija za račun, osim kad je sinkronizaciju onemogućio administrator domene ili kad je onemogućena putem pravila "SyncDisabled". Zadana vrijednost za BrowserGuestModeEnabled bit će postavljena na False. Postojeći neprijavljeni profili bit će zaključani i neće biti dostupni nakon što se to pravilo omogući. Više informacija potražite u članku centra za pomoć: https://support.google.com/chrome/a/answer/7572556.
-
-      Ako se to pravilo ne postavi, korisnik može odlučiti hoće li omogućiti opciju prijave putem preglednika i može je upotrebljavati kako želi.</translation>
 <translation id="3911737181201537215">To pravilo nema utjecaja na Androidovo bilježenje u zapisnike.</translation>
 <translation id="391531815696899618">Onemogućuje sinkronizaciju Google diska u aplikaciji Datoteke za <ph name="PRODUCT_OS_NAME" /> kada je postavljeno na točno. U tom se slučaju nikakvi podaci ne prenose na Google disk.
 
diff --git a/components/policy/resources/policy_templates_hu.xtb b/components/policy/resources/policy_templates_hu.xtb
index 6b2bae7..2c5c6f2 100644
--- a/components/policy/resources/policy_templates_hu.xtb
+++ b/components/policy/resources/policy_templates_hu.xtb
@@ -1594,15 +1594,6 @@
       Ha nem állítja be a házirendet, a <ph name="PRODUCT_NAME" /> a szokásos (operációs rendszertől függő) alapértelmezett könyvtárat fogja használni.
 
       A használható változók listáját itt tekintheti meg: https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Ez a házirend a böngésző bejelentkezési viselkedését szabályozza. Segítségével megadhatja, hogy bejelentkezhet-e a felhasználó a fiókjával a <ph name="PRODUCT_NAME" /> böngészőbe, és használhatja-e a fiókkal kapcsolatos szolgáltatásokat, például a Chrome-szinkronizálást.
-
-      Ha a házirend beállítása „A böngészőbe való bejelentkezés letiltása”, akkor a felhasználó nem tud bejelentkezni a böngészőbe, és nem tudja használni a fiókalapú szolgáltatásokat. Ebben az esetben nem használhatók és nem is hozzáférhetők a böngészőszintű funkciók, például a Chrome-szinkronizálás. Ha a felhasználó bejelentkezett, és Ön ezt követően állítja a házirendet „Letiltva” állapotúra, akkor a Chrome felhasználó általi következő futtatásakor a rendszer kijelentkezteti a felhasználót, akinek azonban a helyi profiladatai – így a könyvjelzői, jelszavai stb. – megőrződnek. A felhasználó ezt követően is be tud jelentkezni a Google webes szolgáltatásaiba (például a Gmail szolgáltatásba), és használni is tudja őket.
-
-      Ha a házirend beállítása „A böngészőbe való bejelentkezés engedélyezése”, akkor a felhasználó bejelentkezhet a böngészőbe, valamint a rendszer automatikusan bejelentkezteti a böngészőbe, ha be van jelentkezve a Google webes szolgáltatásaiba, például a Gmailbe. Ha a felhasználó be van jelentkezve a böngészőbe, az azt jelenti, hogy a böngésző megőrzi a felhasználó fiókadatait. Ez azonban nem jelenti azt, hogy a Chrome-szinkronizálás alapértelmezés szerint bekapcsolódna; a felhasználónak külön kell engedélyeznie a funkció használatát. E házirend engedélyezése megakadályozza, hogy a felhasználó kikapcsolja azt a beállítást, amely lehetővé teszi a böngészőbe való bejelentkezést. A Chrome-szinkronizálás funkció rendelkezésre állásának vezérléséhez használja a szinkronizálást letiltó „SyncDisabled” házirendet.
-
-      Ha a házirend beállítása „A felhasználók bejelentkezésre kényszerítése a böngésző használatához”, akkor a rendszer fiókválasztó párbeszédablakot jelenít meg a felhasználónak, akinek fiókot kell választania, majd be kell jelentkeznie a kiválasztott fiókba a böngésző használatához. Felügyelt fiók esetében ez biztosítja a fiókhoz társított házirendeket alkalmazását és betartását. Alapértelmezés szerint ez bekapcsolja a Chrome-szinkronizálást az adott fiókra vonatkozóan – kivéve, ha a szinkronizálást a domainadminisztrátor vagy a szinkronizálást letiltó „SyncDisabled” házirend letiltotta. A „BrowserGuestModeEnabled” értékét a rendszer hamisra állítja. Megjegyzés: A meglévő, nem hitelesített profilokat a rendszer kizárja, e profilok a házirend engedélyezése után hozzáférhetetlenné válnak. További információ a következő súgócikkben található: https://support.google.com/chrome/a/answer/7572556.
-
-      Ha a házirend nincs beállítva, akkor a felhasználó döntheti el, hogy kívánja-e engedélyezni – és saját belátása szerint használni – a böngészőbe való bejelentkezés lehetőségét.</translation>
 <translation id="3911737181201537215">A házirend nem vonatkozik az Android által végzett naplózásra.</translation>
 <translation id="391531815696899618">Igaz érték esetén letiltja a Google Drive szinkronizálását a <ph name="PRODUCT_OS_NAME" /> Fájlok alkalmazásában. Ebben az esetben nem lesznek feltöltve adatok a Google Drive-ra.
 
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index 0ad5b38..85e7cdbf 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -1580,15 +1580,6 @@
       Jika Anda tidak menyetel kebijakan ini, <ph name="PRODUCT_NAME" /> akan menggunakan direktori defaultnya yang biasa digunakan (khusus platform).
 
       Lihat https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables untuk mengetahui daftar variabel yang dapat digunakan.</translation>
-<translation id="3904459740090265495">Kebijakan ini mengontrol perilaku login browser. Dengan kebijakan ini, Anda dapat menentukan apakah pengguna dapat login ke <ph name="PRODUCT_NAME" /> dengan akun mereka dan menggunakan layanan terkait akun seperti sinkronisasi Chrome.
-
-      Jika kebijakan ini ditetapkan ke "Nonaktifkan login browser", maka pengguna tidak dapat login ke browser dan menggunakan layanan berbasis akun. Dalam hal ini, fitur tingkat browser seperti sinkronisasi Chrome tidak dapat digunakan dan tidak akan tersedia. Jika pengguna telah login dan kebijakan ini ditetapkan ke "Dinonaktifkan", pengguna akan dibuat logout saat berikutnya menjalankan Chrome, namun data profil lokalnya, seperti bookmark, sandi, dsb. akan tetap tersimpan. Pengguna masih dapat login dan menggunakan layanan web Google seperti Gmail.
-
-      Jika kebijakan ini ditetapkan ke "Aktifkan login browser", maka pengguna diizinkan untuk login ke browser, dan akan otomatis dibuat login ke browser saat mereka login ke layanan web Google seperti Gmail. Setelah login ke browser, informasi akun pengguna akan disimpan oleh browser. Namun, ini tidak berarti bahwa sinkronisasi Chrome akan diaktifkan secara default; pengguna harus secara khusus memilih untuk ikut serta menggunakan fitur ini. Jika kebijakan ini diaktifkan, pengguna tidak akan dapat menonaktifkan setelan yang mengizinkan login browser. Untuk mengontrol ketersediaan sinkronisasi Chrome, gunakan kebijakan "SyncDisabled".
-
-      Jika kebijakan ini ditetapkan ke "Paksa login browser", maka dialog pemilihan akun akan ditampilkan dan pengguna harus memilih serta login ke salah satu akun agar dapat menggunakan browser. Hal ini memastikan bahwa untuk akun terkelola, kebijakan yang terkait dengan akun tersebut diterapkan dan diberlakukan. Secara default, langkah ini mengaktifkan sinkronisasi Chrome untuk akun tersebut, kecuali jika sinkronisasi dinonaktifkan oleh admin domain atau melalui kebijakan "SyncDisabled". Nilai default BrowserGuestModeEnabled akan ditetapkan ke false. Harap diperhatikan bahwa profil yang ada dan belum ditandatangani akan dikunci dan tidak dapat diakses setelah kebijakan ini diaktifkan. Untuk informasi selengkapnya, lihat artikel pusat bantuan: https://support.google.com/chrome/a/answer/7572556.
-
-      Jika kebijakan ini tidak ditetapkan, maka pengguna dapat memutuskan apakah mereka ingin mengaktifkan opsi login browser dan menggunakannya bila dirasa sesuai.</translation>
 <translation id="3911737181201537215">Kebijakan ini tidak memengaruhi penyimpanan log yang dilakukan oleh Android.</translation>
 <translation id="391531815696899618">Menonaktifkan sinkronisasi Google Drive di aplikasi File <ph name="PRODUCT_OS_NAME" /> ketika disetel ke True. Dalam kasus ini, tidak ada data yang diupload ke Google Drive.
 
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index a714667..9d7a2bf 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -1565,15 +1565,6 @@
       Se questa norma non viene impostata, verrà usata la normale directory predefinita (specifica della piattaforma) di <ph name="PRODUCT_NAME" />.
 
       Visita il sito https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables per consultare un elenco di variabili utilizzabili.</translation>
-<translation id="3904459740090265495">Questa norma consente di stabilire il comportamento di accesso del browser. Ti consente di specificare se l'utente può accedere a <ph name="PRODUCT_NAME" /> con il proprio account e usare i servizi correlati all'account come Sincronizzazione Chrome.
-
-      Se la norma viene impostata su "Disattiva accesso al browser", l'utente non potrà accedere al browser e usare i servizi basati sull'account. In questo caso, le funzionalità a livello di browser come la Sincronizzazione Chrome non potranno essere usate e non saranno disponibili. Se la norma viene impostata su "Disattivata" dopo che l'utente ha eseguito l'accesso, l'utente verrà scollegato alla successiva esecuzione di Chrome, ma i dati locali del profilo, come preferiti, password ecc., verranno mantenuti. L'utente potrà comunque accedere e usare i servizi web di Google come Gmail.
-
-      Se la norma viene impostata su "Attiva accesso al browser", l'utente potrà accedere al browser e verrà collegato automaticamente al browser se accederà a servizi web di Google come Gmail. Se viene eseguito l'accesso al browser, i dati dell'account dell'utente vengono memorizzati dal browser, ma la funzione Sincronizzazione Chrome non viene attivata per impostazione predefinita; per poter utilizzare questa funzione, l'utente deve attivarla separatamente. Se attivi questa norma, l'utente non potrà disattivare l'impostazione che consente l'accesso al browser. Per gestire la disponibilità della funzione Sincronizzazione Chrome, usa la norma "SyncDisabled".
-
-      Se la norma viene impostata su "Forza accesso al browser", all'utente verrà mostrata una finestra di dialogo di selezione dell'account, da cui dovrà scegliere un account a cui accedere per usare il browser. Questa misura garantisce l'applicazione, nell'ambito degli account gestiti, delle norme associate all'account. La funzione Sincronizzazione Chrome viene attivata per impostazione predefinita per l'account, ad eccezione del caso in cui la sincronizzazione sia stata disattivata dall'amministratore di dominio o tramite la norma "SyncDisabled". Il valore predefinito della norma BrowserGuestModeEnabled sarà false. Tieni presente che i profili esistenti a cui non viene eseguito l'accesso saranno bloccati e inaccessibili dopo l'attivazione di questa norma. Per ulteriori informazioni, leggi il seguente articolo del Centro assistenza: https://support.google.com/chrome/a/answer/7572556.
-
-      Se questa norma non è impostata, l'utente potrà decidere se attivare o meno l'opzione di accesso al browser e di usarla in base alle necessità.</translation>
 <translation id="3911737181201537215">Questa norma non influisce sulla registrazione effettuata da Android.</translation>
 <translation id="391531815696899618">Consente di disattivare la sincronizzazione di Google Drive nell'app File di <ph name="PRODUCT_OS_NAME" /> quando è impostata su True. In tal caso, non vengono caricati dati in Google Drive.
 
@@ -3912,7 +3903,7 @@
 
       Questo criterio è disattivato per impostazione predefinita e, se attivato, rende gli utenti vulnerabili al problema di sicurezza https://crbug.com/600352.
 
-      Questo criterio è pensato per offrire alle aziende la possibilità di migrare i server esistenti da HTTP/0.9 e verrà rimosso in futuro.
+      Questo criterio è pensato per offrire alle aziende la possibilità di eseguire la migrazione di server esistenti da HTTP/0.9 e verrà rimosso in futuro.
 
       Se questo criterio non viene impostato, HTTP/0.9 verrà disattivato per le porte non predefinite.</translation>
 <translation id="8507835864888987300">Consente di impostare una versione target per gli Aggiornamenti automatici.
diff --git a/components/policy/resources/policy_templates_iw.xtb b/components/policy/resources/policy_templates_iw.xtb
index 69cef44..c652ac11 100644
--- a/components/policy/resources/policy_templates_iw.xtb
+++ b/components/policy/resources/policy_templates_iw.xtb
@@ -1587,16 +1587,6 @@
       אם המדיניות הזו לא מוגדרת, <ph name="PRODUCT_NAME" /> ישתמש בספרייה שמוגדרת בו כברירת מחדל (בהתאם לפלטפורמה)
 
       בכתובת https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables אפשר למצוא רשימת משתנים שבהם אפשר להשתמש.</translation>
-<translation id="3904459740090265495">‏המדיניות הזו קובעת את התנהגות הכניסה לחשבון בדפדפן. היא מאפשרת לך לקבוע אם המשתמש יכול להיכנס אל <ph name="PRODUCT_NAME" /> עם החשבון שלו ולהשתמש בשירותים הקשורים לחשבון, כמו סנכרון Chrome.
-
-      אם המדיניות הוגדרה כ"השבתת כניסה לחשבון בדפדפן", המשתמש לא יכול להיכנס לדפדפן ולהשתמש בשירותים מבוססי-חשבון. במקרה הזה, תכונות ברמת הדפדפן, כמו סנכרון Chrome, אינן זמינות. אם המשתמש היה מחובר והמדיניות שונתה ל"מושבתת", המערכת תוציא אותו מהחשבון בפעם הבאה שיפעיל את Chrome, אבל נתוני הפרופיל המקומי שלו, כמו סימניות, סיסמאות וכו', יישמרו. המשתמש עדיין יוכל להיכנס אל שירותי אינטרנט של Google, כמו Gmail, ולהשתמש בהם.
-
-      אם המדיניות מוגדרת כ"הפעלת כניסה לחשבון בדפדפן", המשתמש יכול להיכנס לדפדפן, והמערכת תכניס אותו לדפדפן באופן אוטומטי כשהוא מתחבר אל שירותי אינטרנט של Google, כמו Gmail. מפני שהוא מחובר לדפדפן, פרטי חשבון המשתמש יישמרו בדפדפן. עם זאת, סנכרון Chrome לא יופעל כברירת מחדל - המשתמש צריך להסכים לתכונה הזו בנפרד. הפעלת המדיניות הזו תמנע מהמשתמש להשבית את ההגדרה שמאפשרת כניסה לדפדפן. כדי לשלוט בזמינות של סנכרון Chrome יש להשתמש במדיניות "SyncDisabled".
-
-      אם המדיניות הזו מוגדרת כ"אילוץ כניסה לדפדפן", למשתמש מוצגת תיבת דו-שיח לבחירת חשבון ועליו לבחור חשבון ולהיכנס אליו כדי להשתמש בדפדפן. התכונה הזו מאפשרת לוודא שבמקרה של חשבונות מנוהלים, המדיניות המשויכת לחשבון תיושם ותיאכף. כברירת מחדל, ההגדרה הזו מפעילה את סנכרון Chrome בשביל החשבון, מלבד במקרים שבהם הסנכרון הושבת על-ידי מנהל הדומיין או דרך המדיניות "SyncDisabled". ערך ברירת המחדל של BrowserGuestModeEnabled יוגדר כ-false. לתשומת ליבך, פרופילים קיימים ללא חתימה יינעלו ולא יתאפשר לגשת אליהם לאחר הפעלת המדיניות הזו.
-מידע נוסף זמין במאמר מרכז העזרה: https://support.google.com/chrome/a/answer/7572556.
-
-      אם המדיניות הזו לא מוגדרת, המשתמש יכול לבחור אם להפעיל את אפשרות הכניסה לדפדפן בהתאם לשיקול דעתו.</translation>
 <translation id="3911737181201537215">‏אין למדיניות הזו השפעה על הרישום ש-Android מבצע ביומן.</translation>
 <translation id="391531815696899618">‏מבטלת את הסנכרון של Google Drive ביישום ה'קבצים' של <ph name="PRODUCT_OS_NAME" /> כשמוגדר כ-true. במקרה זה, נתונים אינם מועלים ל- Google Drive.
 
@@ -2181,7 +2171,7 @@
 <translation id="5148753489738115745">מאפשר לך לציין פרמטרים נוספים הנמצאים בשימוש כאשר <ph name="PRODUCT_FRAME_NAME" /> מפעיל את <ph name="PRODUCT_NAME" />.
 
           אם מדיניות זו לא מוגדרת, ייעשה שימוש בשורת הפקודה המוגדרת כברירת מחדל.</translation>
-<translation id="5152787786897382519">‏גם ב-Chromium וגם ב-Google Chrome יש קבוצות המכילות הגדרות מדיניות שתלויות אחת בשניה כדי לספק שליטה לגבי תכונה מסוימת. הן מיוצגות על-ידי קבוצות המדיניות הבאות. להגדרות המדיניות האלה יכולים להיות מקורות שונים, ולכן המערכת תחיל רק ערכים שמגיעים מהמקורות בעלי העדיפות הגבוהה ביותר. המערכת תתעלם מערכים שמגיעים ממקורות בעלי עדיפות נמוכה יותר באותה קבוצה. סדר העדיפות מוגדר ב-<ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
+<translation id="5152787786897382519">‏גם ב-Chromium וגם ב-Google Chrome יש קבוצות המכילות הגדרות מדיניות שתלויות אחת בשניה כדי לספק שליטה לגבי תכונה מסוימת. הן מיוצגות על-ידי קבוצות המדיניות הבאות. להגדרות המדיניות האלה יכולים להיות מקורות שונים, ולכן המערכת תחיל רק ערכים שמגיעים מהמקורות בעלי העדיפות הגבוהה ביותר. המערכת תתעלם מערכים שמגיעים ממקורות בעלי עדיפות נמוכה יותר באותה קבוצה. סדר העדיפויות מוגדר ב-<ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
 <translation id="5159469559091666409">תדירות השליחה של מנות רשת לניטור, באלפיות השנייה.
       
 אם מדיניות זו אינה מוגדרת, מרווח ברירת המחדל הוא 3 דקות. המרווח המינימלי הוא 30 שניות והמרווח המקסימלי הוא 24 שעות - ערכים שנמצאים מחוץ לטווח הזה יוחלפו בערכים שתואמים את הטווח הזה.</translation>
@@ -3961,7 +3951,7 @@
 <translation id="8499172469244085141">הגדרות ברירת מחדל (המשתמשים יכולים לעקוף אותן)</translation>
 <translation id="849962487677588458">‏המדיניות הזו הוצאה משימוש, ובגרסת Chrome 78 נסיר אותה ללא הוספה של מדיניות חלופית.
 
-      המדיניות הזו מפעילה HTTP/0.9 ביציאות שאינן 80 (ל-HTTP) ו-443 (ל-HTTPS).
+      המדיניות הזו מפעילה HTTP/0.9 ביציאות מלבד 80 (ל-HTTP) ו-443 (ל-HTTPS).
 
       המדיניות הזו מושבתת כברירת מחדל, ואם היא מופעלת, המשתמשים חשופים לבעיות אבטחה
 https://crbug.com/600352.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index 2b3944ddd..b858584 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -1584,15 +1584,6 @@
       このポリシーを設定しない場合、<ph name="PRODUCT_NAME" /> ではプラットフォーム固有の通常のデフォルト ディレクトリが使用されます。
 
       使用できる変数については、https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables をご覧ください。</translation>
-<translation id="3904459740090265495">ブラウザのログイン動作を制御するポリシーです。ユーザーが自分のアカウントで <ph name="PRODUCT_NAME" /> にログインして Chrome 同期などのアカウント関連のサービスを使用できるかどうかを指定します。
-
-      このポリシーが「ブラウザのログインを無効にする」に設定されている場合、ユーザーは、ブラウザにログインしてアカウントに基づくサービスを使用することができません。この場合、Chrome 同期のようなブラウザレベルの機能は使用不可となります。ユーザーがすでにログインしている状態でこのポリシーが「無効」に設定された場合は、次回 Chrome を起動するとログアウトの状態になります。ただし、ブックマーク、パスワードといったローカルのプロフィール データは保持されます。Gmail のような Google ウェブサービスは、引き続きログインして使用することができます。
-
-      このポリシーが「ブラウザのログインを有効にする」に設定されている場合、ユーザーはブラウザにログインすることができ、また Gmail のような Google ウェブサービスにログインするとブラウザにも自動的にログインした状態になります。ブラウザにログインしているときには、ユーザーのアカウント情報がブラウザで保持されます。ただし、Chrome 同期はデフォルトでオンにはなりません。Chrome 同期を使用するには、ユーザーが別途この機能をオンにする必要があります。このポリシーを有効にした場合、ブラウザにログインできるかどうかの設定をユーザーがオフにすることはできません。Chrome 同期を利用できるかどうかを制御するには、「SyncDisabled」ポリシーを使用します。
-
-      このポリシーが「ブラウザのログインを必須とする」に設定されている場合、ユーザーにはアカウント選択のダイアログが表示されます。ブラウザを使用するには、いずれかのアカウントを選択してログインする必要があります。管理対象アカウントの場合、この設定を使用することで、アカウントに関連付けられているポリシーの適用を徹底できます。対象のアカウントでは Chrome 同期もデフォルトでオンになります(ドメインの管理者または「SyncDisabled」ポリシーによって同期が無効に設定されている場合を除く)。また、BrowserGuestModeEnabled のデフォルト値は false になります。このポリシーを有効にした後、ログインしていない既存のプロフィールはロックされ、アクセスできなくなります。詳しくは次のヘルプセンター記事をご覧ください: https://support.google.com/chrome/a/answer/7572556。
-
-      このポリシーが未設定の場合、ユーザーはブラウザのログイン オプションを有効にするかどうかを自分で判断し、状況に応じて使用することができます。</translation>
 <translation id="3911737181201537215">このポリシーは Android によるログには適用されません。</translation>
 <translation id="391531815696899618">True に設定されている場合、<ph name="PRODUCT_OS_NAME" /> ファイル アプリでの Google ドライブの同期が無効になります。その場合、Google ドライブにデータはアップロードされません。
 
diff --git a/components/policy/resources/policy_templates_kn.xtb b/components/policy/resources/policy_templates_kn.xtb
index 7df886ec..eab1162 100644
--- a/components/policy/resources/policy_templates_kn.xtb
+++ b/components/policy/resources/policy_templates_kn.xtb
@@ -1532,16 +1532,6 @@
 ಈ ನೀತಿಯನ್ನು ನೀವು ಹೊಂದಿಸದೇ ಇದ್ದಲ್ಲಿ, <ph name="PRODUCT_NAME" /> ಯು ತನ್ನ ಸಾಮಾನ್ಯ ಡೀಫಾಲ್ಟ್ ಡೈರಕ್ಟರಿಯನ್ನು (ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ನಿರ್ದಿಷ್ಟ) ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ.
 
 ಬಳಸಬಹುದಾದ ವೇರಿಯೇಬಲ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ವೀಕ್ಷಿಸಲು https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables ಅನ್ನು ನೋಡಿ.</translation>
-<translation id="3904459740090265495">ಈ ಕಾರ್ಯನೀತಿಯು ಬ್ರೌಸರ್‌ನ ಸೈನ್ ಇನ್ ಮಾಡುವ ವರ್ತನೆಯನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಬಳಕೆದಾರರು ತಮ್ಮ ಖಾತೆಯ ಮೂಲಕ <ph name="PRODUCT_NAME" /> ಗೆ ಸೈನ್ ಇನ್ ಮಾಡುವುದು ಮತ್ತು Chrome ಸಿಂಕ್‌ನಂತಹ ಖಾತೆ ಸಂಬಂಧಿತ ಸೇವೆಗಳನ್ನು ಬಳಸುವುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
- 
-ಕಾರ್ಯನೀತಿಯನ್ನು "ಬ್ರೌಸರ್ ಸೈನ್ ಇನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" ಎಂದು ಹೊಂದಿಸಿದಲ್ಲಿ ಬಳಕೆದಾರರು ಬ್ರೌಸರ್‌ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಮತ್ತು ಖಾತೆ ಆಧಾರಿತ ಸೇವೆಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ಸಂದರ್ಭದಲ್ಲಿ Chrome ಸಿಂಕ್ ನಂತಹ ಬ್ರೌಸರ್ ಮಟ್ಟದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಅವುಗಳು ಲಭ್ಯವಿರುವುದಿಲ್ಲ. ಬಳಕೆದಾರರು ಸೈನ್ ಇನ್ ಮಾಡಿದ್ದರೆ ಮತ್ತು ಕಾರ್ಯನೀತಿಯನ್ನು "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" ಎಂದು ಹೊಂದಿಸಿದರೆ, ಮುಂದಿನ ಬಾರಿ ಅವರು Chrome ಅನ್ನು ರನ್ ಮಾಡಿದಾಗ ಅವರನ್ನು ಸೈನ್ ಔಟ್ ಮಾಡಲಾಗುತ್ತದೆ ಆದರೆ ಅವರ ಸ್ಥಳೀಯ ಪ್ರೊಫೈಲ್ ಡೇಟಾಗಳಾದ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಇತ್ಯಾದಿಗಳನ್ನು ಸಂರಕ್ಷಿಸಲಾಗುತ್ತದೆ. ಬಳಕೆದಾರರಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಮತ್ತು Gmail ನಂತಹ Google ವೆಬ್ ಸೇವೆಗಳನ್ನು ಇನ್ನೂ ಬಳಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.
-
-ಕಾರ್ಯನೀತಿಯನ್ನು "ಬ್ರೌಸರ್ ಸೈನ್ ಇನ್ ಸಕ್ರಿಯಗೊಳಿಸಿ" ಎಂದು ಹೊಂದಿಸಿದರೆ, ಬ್ರೌಸರ್‌ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಲಾಗುತ್ತದೆ ಮತ್ತು Gmail ನಂತಹ Google ವೆಬ್ ಸೇವೆಗಳಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿದಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬ್ರೌಸರ್‌ಗೆ ಸೈನ್ ಇನ್ ಆಗುತ್ತಾರೆ. ಬ್ರೌಸರ್‌ಗೆ ಸೈನ್ ಮಾಡಲಾಗುತ್ತಿದೆ ಎಂದರೆ ಬಳಕೆದಾರರ ಖಾತೆ ಮಾಹಿತಿಯನ್ನು ಬ್ರೌಸರ್ ಮೂಲಕ ಇರಿಸಲಾಗುತ್ತಿದೆ ಎಂದರ್ಥ. ಅದಾಗ್ಯೂ, ಪ್ರತಿ ಡೀಫಾಲ್ಟ್ ಮೂಲಕ Chrome ಸಿಂಕ್ ಅನ್ನು ಆನ್ ಮಾಡಲಾಗುವುದು ಎಂದರ್ಥವಲ್ಲ; ಬಳಕೆದಾರರು ಪ್ರತ್ಯೇಕವಾಗಿ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿರಬೇಕು. ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದು ಬ್ರೌಸರ್ ಸೈನ್ ಇನ್ ಅನ್ನು ಅನುಮತಿಸುವ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಆಫ್ ಮಾಡುವುದರಿಂದ ಬಳಕೆದಾರರನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ. Chrome ಸಿಂಕ್‌ನ ಲಭ್ಯತೆಯನ್ನು ನಿಯಂತ್ರಿಸಲು, "ಸಿಂಕ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" ಕಾರ್ಯನೀತಿಯನ್ನು ಬಳಸಿ.
-
-ಕಾರ್ಯನೀತಿಯನ್ನು "ಒತ್ತಾಯವಾಗಿ ಬ್ರೌಸರ್ ಸೈನ್ ಇನ್ ಮಾಡುವಿಕೆ" ಎಂದು ಹೊಂದಿಸಿದರೆ, ಬಳಕೆದಾರರಿಗೆ ಖಾತೆ ಆಯ್ಕೆ ಮಾಡುವ ಡೈಲಾಗ್ ಅನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಗುವುದು ಮತ್ತು ಬ್ರೌಸರ್ ಅನ್ನು ಬಳಸಲು ಖಾತೆಯನ್ನು ಆರಿಸಬೇಕು ಮತ್ತು ಸೈನ್ ಇನ್ ಮಾಡಬೇಕು. ನಿರ್ವಹಿಸಲಾದ ಖಾತೆಗಳಿಗಾಗಿ ಖಾತೆಯೊಂದಿಗೆ ಸಂಯೋಜಿತಗೊಂಡ ಕಾರ್ಯನೀತಿಗಳನ್ನು ಅನ್ವಯಿಸಲಾಗಿದೆ ಮತ್ತು ಜಾರಿಗೊಳಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಇದು ಖಾತ್ರಿಪಡಿಸುತ್ತದೆ. ಡೊಮೇನ್ ನಿರ್ವಾಹಕರ ಮೂಲಕ ಅಥವಾ "SyncDisabled" ಕಾರ್ಯನೀತಿಯ ಮೂಲಕ ಸಿಂಕ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿರುವ ಸಂದರ್ಭವನ್ನು ಹೊರತುಪಡಿಸಿ, ಡೀಫಾಲ್ಟ್ ಆಗಿ ಇದು ಖಾತೆಗೆ Chrome ಸಿಂಕ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ. BrowserGuestModeEnabled ನ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು ತಪ್ಪು ಎಂದು ಹೊಂದಿಸಲಾಗುತ್ತದೆ. ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ ನಂತರ ಪ್ರಸ್ತುತ ಸೈನ್ ಇನ್ ಮಾಡಿರದ ಪ್ರೊಫೈಲ್‌ಗಳನ್ನು ಲಾಕ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರವೇಶಿಸಲಾಗುವುದಿಲ್ಲ ಎಂಬುದನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಳ್ಳಿ. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ಸಹಾಯ ಕೇಂದ್ರದ ಲೇಖನವನ್ನು ನೋಡಿ:
-https://support.google.com/chrome/a/answer/7572556.
-
-ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಹೊಂದಿಸದಿದ್ದರೆ, ಬಳಕೆದಾರರು ಬ್ರೌಸರ್ ಸೈನ್ ಇನ್ ಆಯ್ಕೆ ಸಕ್ರಿಯಗೊಳಿಸಬೇಕೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಬಹುದು ಮತ್ತು ಸರಿ ಎಂದು ತೋರಿದಲ್ಲಿ ಇದನ್ನು ಬಳಸಬಹುದು.</translation>
 <translation id="3911737181201537215">ಈ ನೀತಿಯು Android ಮೂಲಕ ಲಾಗಿಂಗ್ ಮಾಡಿದ ಸಂದರ್ಭದಲ್ಲಿ ಯಾವುದೇ ಪರಿಣಾಮವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ.</translation>
 <translation id="391531815696899618">ಸರಿ ಎಂದು ಹೊಂದಿಸಿದರೆ <ph name="PRODUCT_OS_NAME" /> ಫೈಲ್‌ಗಳ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ Google ಡ್ರೈವ್‌ ಸಿಂಕ್‌ ಮಾಡುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ಅಂತಹ ಸಂದರ್ಭದಲ್ಲಿ, Google ಡ್ರೈವ್‌ಗೆ ಯಾವುದೇ ಡೇಟಾವನ್ನು ಅಪ್‌ಲೋಡ್‌ ಮಾಡಲಾಗುವುದಿಲ್ಲ.
 
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index c114a53..5449eed 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -1632,15 +1632,6 @@
       이 정책을 설정하지 않으면 <ph name="PRODUCT_NAME" />에서 일반적인 기본 디렉터리(플랫폼별)를 사용합니다.
 
       사용할 수 있는 변수 목록을 확인하려면 https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables 페이지를 참조하세요.</translation>
-<translation id="3904459740090265495">브라우저의 로그인 동작을 제어하는 정책입니다. 이 정책을 사용하면 사용자가 자신의 계정으로 <ph name="PRODUCT_NAME" />에 로그인하고 Chrome 동기화와 같은 계정 관련 서비스를 사용하도록 허용할지 결정할 수 있습니다.
-
-      정책을 '브라우저 로그인 사용 중지'로 설정하면 사용자가 브라우저에 로그인하여 계정 기반 서비스를 사용할 수 없게 됩니다. 이 경우 Chrome 동기화와 같은 브라우저 수준의 기능을 사용할 수 없으며, 이러한 기능이 제공되지도 않습니다. 사용자가 로그인되어 있는 상태에서 정책이 '사용 중지'로 설정되면 다음번에 Chrome을 실행할 때 사용자가 로그아웃됩니다. 이때 북마크, 비밀번호 등 사용자의 로컬 프로필 데이터는 삭제되지 않습니다. Gmail과 같은 Google 웹 서비스의 경우 계속해서 로그인하여 사용할 수 있습니다.
-
-      정책을 '브라우저 로그인 사용'으로 설정하면 사용자가 브라우저에 로그인할 수 있으며, Gmail과 같은 Google 웹 서비스에 로그인하면 브라우저에도 자동으로 로그인됩니다. 브라우저에 로그인되었다는 것은 사용자의 계정 정보가 브라우저에 보관된다는 의미입니다. 하지만 그렇다고 해서 Chrome 동기화가 기본적으로 사용 설정되는 것은 아닙니다. 사용자가 이 기능을 이용하려면 별도로 선택해야 합니다. 이 정책을 사용 설정하면 사용자가 브라우저 로그인을 허용하는 설정을 사용 중지할 수 없게 됩니다. Chrome 동기화의 사용 가능 여부를 제어하려면 'SyncDisabled' 정책을 사용하세요.
-
-      정책을 '브라우저 로그인 강제 사용'으로 설정하면 사용자에게 계정 선택 대화상자가 표시되며, 브라우저를 사용하기 위해서는 계정을 선택하여 로그인해야 합니다. 관리 계정의 경우 이 설정을 통해 계정과 관련된 정책을 적용 및 시행할 수 있습니다. 도메인 관리자가 동기화를 사용 중지하거나 'SyncDisabled' 정책을 통해 동기화가 사용 중지되지 않은 이상 계정에서 Chrome 동기화가 기본적으로 사용 설정됩니다. 또한 BrowserGuestModeEnabled의 기본값은 False로 설정됩니다. 이 정책을 사용 설정하면 로그인되지 않은 기존 프로필은 잠겨서 액세스할 수 없게 됩니다. 자세한 내용은 다음 고객센터 도움말을 확인하세요. https://support.google.com/chrome/a/answer/7572556
-
-      정책을 설정하지 않으면 사용자가 브라우저 로그인 옵션을 사용 설정할지 결정하고 필요에 따라 사용할 수 있습니다.</translation>
 <translation id="3911737181201537215">이 정책은 Android에 의해 수행된 로깅에 아무런 영향을 미치지 않습니다.</translation>
 <translation id="391531815696899618">True로 설정하면 <ph name="PRODUCT_OS_NAME" /> 파일 앱에서 Google 드라이브 동기화를 사용 중지합니다. 이런 경우 Google 드라이브에 데이터가 업로드되지 않습니다.
 
diff --git a/components/policy/resources/policy_templates_lt.xtb b/components/policy/resources/policy_templates_lt.xtb
index a9dcdb45..e2f6b925 100644
--- a/components/policy/resources/policy_templates_lt.xtb
+++ b/components/policy/resources/policy_templates_lt.xtb
@@ -1630,15 +1630,6 @@
       Nenustačius šios politikos, „<ph name="PRODUCT_NAME" />“ naudos įprastą numatytąjį katalogą (konkrečios platformos).
 
       Jei reikia kintamųjų, kuriuos galima naudoti, sąrašo, žr. https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Ši politika valdo naršyklės prisijungimo elgseną. Ji leidžia nurodyti, ar naudotojas gali prisijungti prie „<ph name="PRODUCT_NAME" />“ naudodamas savo paskyrą ir naudoti su paskyra susijusias paslaugas, pvz., „Chrome“ sinchronizavimą.
-
-      Jei politika nustatyta kaip „Išjungti naršyklės prisijungimą“, naudotojas negali prisijungti prie naršyklės ir naudoti su paskyra susijusių paslaugų. Šiuo atveju negalima naudoti naršyklės lygio funkcijų, pvz., „Chrome“ sinchronizavimo, ir jos bus nepasiekiamos. Jei naudotojas buvo prisijungęs ir politika nustatoma kaip „Išjungta“, kitą kartą paleidęs „Chrome“ naudotojas nebus prisijungęs, bet jo vietiniai profilio duomenys, pvz., žymės, slaptažodžiai ir kt., bus saugomi. Naudotojas vis tiek galės prisijungti ir naudoti „Google“ žiniatinklio paslaugas, pvz., „Gmail“.
-
-      Jei politika nustatyta kaip „Įgalinti naršyklės prisijungimą“, naudotojui leidžiama prisijungti prie naršyklės ir automatiškai prisijungiama prie naršyklės, prisijungus prie „Google“ žiniatinklio paslaugų, pvz., „Gmail“. Prisijungus prie naršyklės naudotojo paskyros informacija saugoma naršyklėje. Tačiau tai nereiškia, kad „Chrome“ sinchronizavimas bus įjungtas pagal numatytuosius nustatymus. Naudotojas turi atskirai pasirinkti naudoti šią funkciją. Įgalinus šią funkciją nebus leidžiama naudotojui išjungti nustatymo, leidžiančio prisijungti prie naršyklės. Jei norite valdyti „Chrome“ sinchronizavimo pasiekiamumą, naudokite politiką „SyncDisabled“.
-
-      Jei politika nustatyta kaip „Priverstinis naršyklės prisijungimas“, naudotojui pateikiamas paskyros pasirinkimo dialogo langas ir jis turi pasirinkti ir prisijungti prie paskyros, kad galėtų naudoti naršyklę. Tai reiškia, kad valdomoms paskyroms taikoma ir vykdoma su paskyra susijusi politika. Pagal numatytuosius nustatymus įjungiamas „Chrome“ sinchronizavimas paskyroje, išskyrus tuo atveju, jei sinchronizavimą išjungė domeno administratorius arba jis buvo išjungtas taikant politiką „SyncDisabled“. Numatytoji politikos „BrowserGuestModeEnabled“ vertė bus nustatyta kaip „netiesa“. Atminkite, kad įgalinus šią politiką esami neprijungti profiliai bus užrakinti ir nepasiekiami. Jei reikia daugiau informacijos, žr. pagalbos centro straipsnį adresu https://support.google.com/chrome/a/answer/7572556.
-
-      Jei ši politika nenustatyta, naudotojas gali nuspręsti, ar nori įgalinti naršyklės prisijungimo parinktį ir naudoti ją, kai tinkama.</translation>
 <translation id="3911737181201537215">Ši politika neturi įtakos „Android“ vykdomam registravimo procesui.</translation>
 <translation id="391531815696899618">Kai nustatyta kaip „true“, neleidžiamas „Google“ disko sinchronizavimas „<ph name="PRODUCT_OS_NAME" />“ programoje „Failai“. Tokiu atveju duomenys į „Google“ diską neįkeliami.
 
diff --git a/components/policy/resources/policy_templates_lv.xtb b/components/policy/resources/policy_templates_lv.xtb
index 41802f2..9ec7204 100644
--- a/components/policy/resources/policy_templates_lv.xtb
+++ b/components/policy/resources/policy_templates_lv.xtb
@@ -1616,15 +1616,6 @@
       Ja neiestatīsiet šo politiku, produktā <ph name="PRODUCT_NAME" /> tiks izmantots ierastais noklusējuma direktorijs (atkarīgs no konkrētas platformas).
 
       Pieejamo mainīgo sarakstu skatiet vietnē https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Šī politika nosaka pārlūkprogrammas pierakstīšanās darbību. Varat norādīt, vai lietotājs var pierakstīties pārlūkprogrammā <ph name="PRODUCT_NAME" /> ar savu kontu un izmantot ar kontu saistītus pakalpojumus, piemēram, Chrome sinhronizāciju.
-
-      Ja šai politikai ir iestatīta vērtība “Atspējot pierakstīšanos pārlūkprogrammā”, tad lietotājs nevar pierakstīties pārlūkprogrammā un izmantot ar kontu saistītus pakalpojumus. Šādā gadījumā tādas pārlūkprogrammas līmeņa funkcijas kā Chrome sinhronizācija nav pieejamas – lietotājs nevar tās izmantot. Ja politikas atspējošanas brīdī lietotājs ir pierakstījies, nākamajā Chrome palaišanas reizē lietotājs tiek izrakstīts no pārlūkprogrammas, taču vietējie profila dati, piemēram, grāmatzīmes, paroles u.c., tiek saglabāti. Lietotājs arī turpmāk var pierakstīties Google tīmekļa pakalpojumos, piemēram, Gmail, un lietot tos.
-
-      Ja politikai ir iestatīta vērtība “Iespējot pierakstīšanos pārlūkprogrammā”, tad lietotājam ir atļauts pierakstīties pārlūkprogrammā, turklāt lietotājs tiek automātiski pierakstīts pārlūkprogrammā, pierakstoties tādos Google tīmekļa pakalpojumos kā Gmail. Pierakstīšanās pārlūkprogrammā nozīmē, ka pārlūkprogrammā tiek glabāta lietotāja konta informācija. Tomēr tas nenozīmē, ka pēc noklusējuma tiktu ieslēgta Chrome sinhronizācija, – lai lietotu šo funkciju, lietotājam tā jāizvēlas atsevišķi. Ja šī politika ir ieslēgta, lietotājs nevar izslēgt iestatījumu, ar kuru tiek atļauta pierakstīšanās pārlūkprogrammā. Lai kontrolētu Chrome sinhronizācijas pieejamību, izmantojiet politiku SyncDisabled.
-
-      Ja politikai ir iestatīta vērtība “Likt lietotājiem pierakstīties, lai lietotu pārlūkprogrammu”, lietotājam tiek rādīts konta izvēles dialoglodziņš un, lai lietotu pārlūkprogrammu, ir jāizvēlas konts un jāpierakstās. Pārvaldītiem kontiem šis iestatījums nodrošina ar kontu saistīto politiku lietošanu un piemērošanu. Pēc noklusējuma ar šo iestatījumu kontam tiek ieslēgta Chrome sinhronizācija, izņemot gadījumus, kad sinhronizāciju ir atspējojis domēna administrators vai kad tā ir atspējota, izmantojot politiku SyncDisabled. Šādā gadījumā politikai BrowserGuestModeEnabled tiek iestatīta noklusējuma vērtība “false”. Ņemiet vērā, ka pēc šīs politikas iespējošanas neparakstītie profili tiek bloķēti un nav pieejami. Plašāku informāciju skatiet šajā palīdzības centra rakstā: https://support.google.com/chrome/a/answer/7572556.
-
-      Ja šī politika nav iestatīta, lietotājs var izvēlēties, vai iespējot pierakstīšanos pārlūkprogrammā, un izmantot šo iespēju pēc vēlēšanās.</translation>
 <translation id="3911737181201537215">Šī politika neietekmē datu reģistrēšanu Android lietotnēs.</translation>
 <translation id="391531815696899618">Tiek atspējota Google diska sinhronizēšana operētājsistēmas <ph name="PRODUCT_OS_NAME" /> lietotnē Faili, ja ir iestatīta vērtība Patiesa. Šajā gadījumā Google diskā netiek augšupielādēti dati.
 
diff --git a/components/policy/resources/policy_templates_ml.xtb b/components/policy/resources/policy_templates_ml.xtb
index 9ebcb35..7f53cc82 100644
--- a/components/policy/resources/policy_templates_ml.xtb
+++ b/components/policy/resources/policy_templates_ml.xtb
@@ -1596,15 +1596,6 @@
       ഈ നയം സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ, <ph name="PRODUCT_NAME" /> എന്നത് ഇതിന്‍റെ സാധാരണ ഡിഫോൾട്ട് ഡയറക്റ്ററി (പ്ലാറ്റ്ഫോം - നിർദ്ദിഷ്‌ടമായത്) ഉപയോഗിക്കും.
 
       ഉപയോഗിക്കാനാകുന്ന വേരിയബിളുകളുടെ ലിസ്‌റ്റിനായി https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables കാണുക.</translation>
-<translation id="3904459740090265495">ഈ നയം ബ്രൗസറിന്റെ സൈൻ ഇൻ ചെയ്യൽ രീതിയെ നിയന്ത്രിക്കുന്നു. ഉപയോക്താവിന് അവരുടെ അക്കൗണ്ട് ഉപയോഗിച്ച് <ph name="PRODUCT_NAME" />-ലേക്ക് സൈൻ ഇൻ ചെയ്‌ത്, അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട Chrome സമന്വയം പോലുള്ള സേവനങ്ങൾ ഉപയോഗിക്കാനാവുമോ എന്ന് വ്യക്തമാക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.
-
-      നയം "ബ്രൗസർ സൈൻ ഇൻ പ്രവർത്തനരഹിതമാക്കുക" എന്ന് സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ഉപയോക്താവിന് ബ്രൗസറിലേക്ക് സൈൻ ഇൻ ചെയ്യാനും അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട സേവനങ്ങൾ ഉപയോഗിക്കാനുമാവില്ല. ഈ സാഹചര്യത്തിൽ, Chrome സമന്വയം പോലുള്ള ബ്രൗസർ തലത്തിലുള്ള ഫീച്ചറുകൾ ഉപയോഗിക്കാനായി ലഭ്യമാകില്ല. ഉപയോക്താവ് സൈൻ ഇൻ ചെയ്‌തിരിക്കുകയും, നയം "പ്രവർത്തനരഹിതമാക്കി" എന്ന് സജ്ജീകരിക്കുകയും ചെയ്‌തിട്ടുണ്ടെങ്കിൽ, അടുത്ത തവണ Chrome റൺ ചെയ്യുമ്പോൾ അവർ സൈൻ ഔട്ടാകും, എന്നാൽ ബുക്ക്‌മാര്‍‌ക്കുകള്‍‌, പാസ്‌വേഡുകൾ തുടങ്ങിയവ പോലുള്ള പ്രാദേശിക പ്രൊഫൈൽ ഡാറ്റ തുടർന്നും സംരക്ഷിക്കപ്പെടും. ഉപയോക്താവിന് തുടർന്നും Gmail പോലുള്ള Google വെബ് സേവനങ്ങളിലേക്ക് സൈൻ ഇൻ ചെയ്യാനും ഉപയോഗിക്കാനുമാകും.
-
-     നയം "ബ്രൗസർ സൈൻ ഇൻ പ്രവർത്തനക്ഷമമാക്കുക" എന്ന് സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ബ്രൗസറിൽ സൈൻ ഇൻ ചെയ്യാൻ ഉപയോക്താവിനെ അനുവദിക്കുകയും, Gmail പോലുള്ള Google വെബ് സേവനങ്ങളിൽ സൈൻ ഇൻ ചെയ്യുമ്പോൾ സ്വമേധയായി ബ്രൗസറിൽ സൈൻ ഇന്നാവുകയും ചെയ്യുന്നു. ബ്രൗസറിൽ സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്നു എന്നതിലൂടെ, ഉപയോക്താവിന്റെ അക്കൗണ്ട് വിവരങ്ങൾ ബ്രൗസർ സംരക്ഷിക്കും എന്ന് അർത്ഥമാക്കുന്നു. എന്നിരുന്നാലും, Chrome സമന്വയം ഡിഫോൾട്ടായി ഓണാക്കപ്പെടുമെന്ന് ഇത് അർത്ഥമാക്കുന്നില്ല; ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ ഉപയോക്താവ് പ്രത്യേകം തിരഞ്ഞെടുക്കണം. ഈ നയം പ്രവർത്തനക്ഷമമാക്കുന്നതിലൂടെ, ബ്രൗസറിൽ സൈൻ ഇൻ ചെയ്യാൻ അനുവദിക്കുന്ന ക്രമീകരണം ഓഫാക്കാൻ ഉപയോക്താവിനാവില്ല. Chrome സമന്വയത്തിന്റെ ലഭ്യത നിയന്ത്രിക്കാൻ, "SyncDisabled" നയം ഉപയോഗിക്കുക.
-
-         നയം "നിർബന്ധിത ബ്രൗസർ സൈൻ ഇൻ" എന്ന് സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ഉപയോക്താവിന് ഒരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കൽ ഡയലോഗ് ലഭ്യമാവുകയും, ബ്രൗസർ ഉപയോഗിക്കാൻ, ഇവയിൽ ഒന്ന് തിരഞ്ഞെടുത്ത് അക്കൗണ്ടിൽ സൈൻ ഇൻ ചെയ്യുകയും വേണം. അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട നയങ്ങൾ, മാനേജ് ചെയ്യപ്പെടുന്ന അക്കൗണ്ടുകൾക്കായി ബാധകമാക്കുകയും നടപ്പിലാക്കുകയും ചെയ്യുന്നുവെന്ന് ഇത് ഉറപ്പാക്കുന്നു. ഡൊമെയ്ൻ അഡ്‌മിൻ അല്ലെങ്കിൽ "SyncDisabled" നയം മുഖേന സമന്വയം പ്രവർത്തനരഹിതമാക്കിയിട്ടില്ലാത്ത സാഹചര്യത്തിൽ, അക്കൗണ്ടിനായുള്ള Chrome സമന്വയം ഇത് ഡിഫോൾട്ടായി ഓണാക്കുന്നു. BrowserGuestModeEnabled എന്നതിന്റെ ഡിഫോൾട്ട് മൂല്യം 'തെറ്റ്' എന്ന് സജ്ജീകരിക്കും. ഈ നയം പ്രവർത്തനക്ഷമമാക്കിയാൽ, നിലവിലെ സൈൻ ഇൻ ചെയ്യാത്ത പ്രൊഫൈലുകൾ ബ്ലോക്ക് ചെയ്യപ്പെടുകയും ആക്‌സസ് ചെയ്യാനാവുകയുമില്ലെന്ന് ശ്രദ്ധിക്കുക. കൂടുതൽ വിവരങ്ങൾക്ക്, സഹായ കേന്ദ്ര ലേഖനം കാണുക: https://support.google.com/chrome/a/answer/7572556.
-
-      ഈ നയം സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ, ബ്രൗസർ സൈൻ ഇൻ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കണോയെന്നും അനുയോജ്യമായ രീതിയിൽ ഇത് ഉപയോഗിക്കണോയെന്നും ഉപയോക്താവിന് തീരുമാനിക്കാം.</translation>
 <translation id="3911737181201537215">ഈ നയം Android ആപ്പുകളിലെ ലോഗിൻ ചെയ്യലിന് ബാധകമല്ല.</translation>
 <translation id="391531815696899618">ശരി എന്നായി സജ്ജമാക്കുമ്പോൾ <ph name="PRODUCT_OS_NAME" /> ഫയലുകളുടെ ആപ്പിൽ Google ഡ്രൈവ് സമന്വയിപ്പിക്കുന്നത് പ്രവർത്തനരഹിതമാക്കുന്നു. അത്തരം സാഹചര്യത്തിൽ ഡാറ്റയൊന്നും Google ഡ്രൈവിൽ അപ്‌ലോഡ് ചെയ്യില്ല.
 
@@ -2728,7 +2719,7 @@
 <translation id="5983708779415553259">ഉള്ളടക്ക പാക്കിലൊന്നുമില്ലാത്ത സൈറ്റുകളുടെ ഡിഫോൾട്ട് പെരുമാറ്റം</translation>
 <translation id="5997543603646547632">ഡിഫോൾട്ടായി 24 മണിക്കൂർ ക്ലോക്ക് ഉപയോഗിക്കുക</translation>
 <translation id="5997846976342452720">പ്ലഗിൻ ഫൈൻഡർ പ്രവർത്തനരഹിതമാക്കണമോ എന്ന് നിർദ്ദേശിക്കുക (ഒഴിവാക്കി)</translation>
-<translation id="5998198091336830580">ഈ നയം ഇനിപ്പറയുന്ന ആറ്റോമിക് ഗ്രൂപ്പിൻ്റെ ഭാഗമാണ് (ഗ്രൂപ്പിലെ ഏറ്റവും ഉയർന്ന മുൻ‌ഗണന ഉറവിടത്തിൽ നിന്നുള്ള നയങ്ങൾ മാത്രമേ പ്രയോഗിക്കൂ)</translation>
+<translation id="5998198091336830580">ഈ നയം ഇനിപ്പറയുന്ന ആറ്റോമിക് ഗ്രൂപ്പിൻ്റെ ഭാഗമാണ് (ഗ്രൂപ്പിലെ ഏറ്റവും ഉയർന്ന മുൻ‌ഗണന ഉറവിടത്തിൽ നിന്നുള്ള നയങ്ങൾ മാത്രമേ പ്രയോഗിക്കൂ):</translation>
 <translation id="6017568866726630990">പ്രിന്റ് പ്രിവ്യൂവിന് പകരമായി സിസ്റ്റം പ്രിന്റ് ഡയലോഗ് കാണിക്കുക.
 
       ഈ ക്രമീകരണം പ്രാപ്‌തമാക്കിയിരിക്കുമ്പോൾ, ഉപയോക്താവ് ഒരു പേജ് പ്രിന്റ് ചെയ്യുന്നതിനായി അഭ്യർത്ഥിക്കുമ്പോൾ <ph name="PRODUCT_NAME" /> എന്നത് അന്തർനിർമ്മിത പ്രിന്റ് പ്രിവ്യൂവിന് പകരമായി സിസ്റ്റം പ്രിന്റ് ഡയലോഗ് തുറക്കും.
@@ -4008,7 +3999,7 @@
 
       ഡിഫോൾട്ടായി ഈ നയം പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു, എന്നാലത് പ്രവർത്തനക്ഷമമാക്കിയാൽ ഉപയോക്താക്കൾക്ക് https://crbug.com/600352 സുരക്ഷാ പ്രശ്‌നം ഉണ്ടാക്കുന്നതിനിടയാക്കുന്നു.
 
-      ഈ നയം HTTP/0.9 ൽ നിന്ന് നിലവിലെ സെർവറുകളെ മൈഗ്രേറ്റ് ചെയ്യുന്നതിന് എൻ്റർപ്രൈസുകൾക്ക് അവസരം നൽകുന്നതിനെ ഉദ്ദേശിച്ചുള്ളതാണ്.
+      ഈ നയം HTTP/0.9 ൽ നിന്ന് നിലവിലെ സെർവറുകളെ മൈഗ്രേറ്റ് ചെയ്യുന്നതിന് എൻ്റർപ്രൈസുകൾക്ക് അവസരം നൽകുന്നതിനെ ഉദ്ദേശിച്ചുള്ളതാണ്, ഇത് പിന്നീട് നീക്കം ചെയ്യുന്നതാണ്.
 
       ഈ നയം സജ്ജമാക്കിയിട്ടില്ലെങ്കിൽ, ഡിഫോൾട്ടല്ലാത്ത പോർട്ടുകളിൽ HTTP/0.9 പ്രവർത്തനരഹിതമാകും.</translation>
 <translation id="8507835864888987300">സ്വയമേവയുള്ള അപ്‌ഡേറ്റുകൾക്കായി ടാർഗറ്റ് പതിപ്പ് സജ്ജീകരിക്കുന്നു. 
diff --git a/components/policy/resources/policy_templates_mr.xtb b/components/policy/resources/policy_templates_mr.xtb
index 110735d..3c53fef 100644
--- a/components/policy/resources/policy_templates_mr.xtb
+++ b/components/policy/resources/policy_templates_mr.xtb
@@ -1593,15 +1593,6 @@
       तुम्ही हे धोरण सेट न केल्यास, <ph name="PRODUCT_NAME" /> त्याची डीफॉल्ट (प्लॅटफॉर्म-विशिष्ट) डिरेक्टरी वापरेल.
 
       वापरू शकणाऱ्या व्हेरिएबलच्‍या सूचीसाठी https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables पाहा.</translation>
-<translation id="3904459740090265495">हे धोरण ब्राउझरचे साइन इन वर्तन नियंत्रित करते. ते वापरकर्त्याला त्यांच्या खात्याने <ph name="PRODUCT_NAME" /> मध्ये साइन इन करता येते का आणि खात्याशी संबंधित Chrome सिंक सारख्या सेवा वापरता येतात का ते तुम्हाला नमूद करू देते.
-
-      धोरण "ब्राउझर साइन इन बंद करा" वर सेट केले असल्यास वापरकर्त्याला ब्राउझरमध्ये साइन इन करता येत नाही आणि खाते आधारित सेवा वापरता येत नाहीत. या बाबतीत Chrome सिंक सारखी ब्राउझर पातळीवरील वैशिष्ट्ये वापरता येत नाहीत आणि ती उपलब्ध नसतील. वापरकर्त्याने साइन इन केलेले असल्यास आणि धोरण "बंद केलेले" वर सेट केले असल्यास पुढील वेळी त्यांनी Chrome रन केल्यावर त्यांना साइन आउट केले जाईल, परंतु त्यांचा बुकमार्क, पासवर्ड इ. सारखा स्थानिक प्रोफाइल डेटा जतन केलेला राहील. वापरकर्त्याला तरीही Gmail सारख्या Google वेब सेवांमध्ये साइन इन करता येईल आणि त्या वापरता येतील.
-
-      धोरण "ब्राउझर साइन इन सुरू करा" वर सेट केले असल्यास, वापरकर्त्याला ब्राउझरमध्ये साइन इन करता येते आणि Gmail सारख्या Google वेब सेवांमध्ये साइन इन केलेले असताना ब्राउझरमध्ये आपोआप साइन इन केले जाते. ब्राउझरमध्ये साइन इन केलेले असणे म्हणजे वापरकर्त्याची खाते माहिती ब्राउझरकडून ठेवली जाईल. मात्र, याचा अर्थ असा नाही की Chrome सिंक प्रत्येक डीफॉल्टनुसार सुरू केले जाईल; हे वैशिष्ट्य वापरण्यासाठी वापरकर्त्याला स्वतंत्रपणे निवड करणे आवश्यक आहे. हे वैशिष्ट्य सुरू केल्याने ब्राउझर साइन इन करू देणारे सेटिंग बंद करण्यापासून वापरकर्त्याला रोखले जाईल. Chrome सिंक ची उपलब्धता नियंत्रित करण्यासाठी, "SyncDisabled" धोरण वापरा.
-
-      धोरण "सक्तीचे ब्राउझर साइन इन" वर सेट केले असल्यास वापरकर्त्याला खाते निवड डायलॉग दाखवला जातो आणि ब्राउझर वापरण्यासाठी त्याला खाते निवडून त्यामध्ये साइन इन करावे लागते. यामुळे व्यवस्थापित खात्यांसाठी खात्याशी संबंधित धोरणे लागू केली आहेत आणि त्यांची अंमलबजावणी केली आहे याची खात्री होते. डोमेन ॲडमिनकडून किंवा "SyncDisabled" धोरणामार्फत सिंक बंद केलेले असणे वगळता, हे खात्यासाठी बाय डीफॉल्ट Chrome सिंक सुरू करते. BrowserGuestModeEnabled चे डीफॉल्ट मूल्य असत्य वर सेट केले जाईल. हे धोरण सुरू केल्यानंतर सद्य साइन न केलेली प्रोफाइल लॉक केली जातील आणि ती ॲक्सेसिबल नसतील याची नोंद घ्या. अधिक माहितीसाठी, मदत केंद्र लेख पहा: https://support.google.com/chrome/a/answer/7572556.
-
-      हे धोरण सेट केलेले नसल्यास वापरकर्त्याला ब्राउझर साइन इन पर्याय सुरू करायचा आहे का आणि त्यांना योग्य वाटेल त्याप्रमाणे वापरायचा आहे का हे वापरकर्ता ठरवू शकतो.</translation>
 <translation id="3911737181201537215">या धोरणाचा Android द्वारे केलेल्या लॉग इन वर कोणताही परिणाम नसतो.</translation>
 <translation id="391531815696899618">सत्य वर सेट केलेले असते तेव्हा <ph name="PRODUCT_OS_NAME" /> फायली ॲपमध्ये Google ड्राइव्ह संकालन अक्षम करते. त्या बाबतीत, Google ड्राइव्हवर कोणताही डेटा अपडेट केला जात नाही.
 
diff --git a/components/policy/resources/policy_templates_ms.xtb b/components/policy/resources/policy_templates_ms.xtb
index 7d43d69c..202727bd 100644
--- a/components/policy/resources/policy_templates_ms.xtb
+++ b/components/policy/resources/policy_templates_ms.xtb
@@ -367,7 +367,7 @@
 <translation id="1561424797596341174">Pembatalan dasar untuk binaan Nyahpepijat bagi hos akses jauh</translation>
 <translation id="1561967320164410511">Sambungan U2F tambah untuk pembuktian individu</translation>
 <translation id="1566329065312331399">
-      Dasar ini apabila ditetapkan kepada Palsu, tidak membenarkan peranti mencetuskan powerwash.
+      Apabila ditetapkan kepada Palsu, dasar ini tidak membenarkan peranti mencetuskan powerwash.
       Apabila ditetapkan kepada Benar, dasar ini membenarkan peranti mencetuskan powerwash.
       Jika dibiarkan tidak ditetapkan, dasar ini akan ditetapkan kepada Palsu secara lalai, yang bermakna dasar ini tidak membenarkan peranti mencetuskan powerwash.
       </translation>
@@ -1627,15 +1627,6 @@
       Jika anda tidak menetapkan dasar ini, <ph name="PRODUCT_NAME" /> akan menggunakan direktori lalainya yang biasa (khusus platform).
 
       Lihat https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables untuk mendapatkan senarai pemboleh ubah yang boleh digunakan.</translation>
-<translation id="3904459740090265495">Dasar ini mengawal gelagat log masuk penyemak imbas. Dasar ini membolehkan anda menentukan sama ada pengguna boleh log masuk ke <ph name="PRODUCT_NAME" /> dengan akaun mereka dan menggunakan perkhidmatan yang berkaitan dengan akaun, seperti penyegerakan Chrome.
-
-      Jika dasar ini ditetapkan kepada "Lumpuhkan log masuk penyemak imbas", maka pengguna tidak boleh log masuk ke penyemak imbas dan menggunakan perkhidmatan yang berkaitan dengan akaun. Dalam keadaan ini, ciri tahap penyemak imbas, seperti penyegerakan Chrome, tidak boleh digunakan dan tidak akan tersedia. Jika pengguna telah log masuk dan dasar ini ditetapkan kepada "Dilumpuhkan", mereka akan dilog keluar apabila mereka menjalankan Chrome selepas ini tetapi data profil setempat mereka, seperti penanda halaman, kata laluan dan sebagainya, tidak akan berubah. Pengguna masih boleh log masuk dan menggunakan perkhidmatan web Google, seperti Gmail.
-
-      Jika dasar ini ditetapkan kepada "Dayakan log masuk penyemak imbas", maka pengguna dibenarkan untuk log masuk ke penyemak imbas dan dilog masuk ke penyemak imbas secara automatik apabila mengelog masuk ke perkhidmatan web Google, seperti Gmail. Tindakan log masuk ke penyemak imbas bermakna maklumat akaun pengguna akan disimpan oleh penyemak imbas. Walau bagaimanapun, ini tidak bermakna penyegerakan Chrome akan dihidupkan secara lalai; pengguna mesti ikut serta menggunakan ciri ini secara berasingan. Tindakan mendayakan dasar ini akan menghalang pengguna daripada mematikan tetapan yang membenarkan log masuk penyemak imbas. Untuk mengawal ketersediaan penyegerakan Chrome, gunakan dasar "SyncDisabled".
-
-      Jika dasar ini ditetapkan kepada "Paksa log masuk penyemak imbas", pengguna akan melihat dialog pemilihan akaun dan perlu memilih serta log masuk ke akaun untuk menggunakan penyemak imbas. Langkah ini memastikan bahawa bagi akaun terurus, dasar yang dikaitkan dengan akaun tersebut akan diterapkan dan dikuatkuasakan. Secara lalai, dasar ini menghidupkan penyegerakan Chrome untuk akaun tersebut, kecuali dalam keadaan apabila penyegerakan dilumpuhkan oleh pentadbir domain atau melalui dasar "SyncDisabled". Nilai lalai BrowserGuestModeEnabled akan ditetapkan kepada palsu. Sila ambil perhatian bahawa profil tidak bertandatangan yang sedia ada akan dikunci dan tidak boleh diakses selepas dasar ini didayakan. Untuk mendapatkan maklumat lanjut, lihat artikel pusat bantuan: https://support.google.com/chrome/a/answer/7572556.
-
-      Jika dasar ini tidak ditetapkan, maka pengguna boleh menentukan sama ada mereka mahu mendayakan pilihan log masuk penyemak imbas dan menggunakannya mengikut kesesuaian mereka.</translation>
 <translation id="3911737181201537215">Dasar ini tidak memberi kesan kepada pengelogan yang dilakukan oleh Android.</translation>
 <translation id="391531815696899618">Melumpuhkan penyegerakan Google Drive dalam apl Fail <ph name="PRODUCT_OS_NAME" /> apabila ditetapkan kepada Benar. Jika ini berlaku, tiada data akan dimuat naik ke Google Drive.
 
@@ -2076,7 +2067,7 @@
 
       Jika tidak ditetapkan, tempoh lalai selama 345,600,000 milisaat (empat hari) digunakan untuk peranti <ph name="PRODUCT_OS_NAME" /> dan 604,800,000 milisaat (satu minggu) untuk <ph name="PRODUCT_NAME" />.</translation>
 <translation id="4777805166623621364">
-      Tetapan ini, SitePerProcess, boleh digunakan untuk melarang pengguna menarik diri daripada gelagat lalai yang mengasingkan semua tapak Sila ambil perhatian bahawa dasar IsolateOrigins juga mungkin berguna untuk mengasingkan asalan tambahan yang lebih terperinci.
+      Tetapan ini, SitePerProcess, boleh digunakan untuk melarang pengguna menarik diri daripada gelagat lalai yang mengasingkan semua tapak. Sila ambil perhatian bahawa dasar IsolateOrigins juga mungkin berguna untuk mengasingkan asalan tambahan yang lebih terperinci.
       Jika dasar ini didayakan, pengguna tidak akan dapat menarik diri daripada gelagat lalai, iaitu setiap tapak berjalan dalam prosesnya sendiri.
       Jika dasar ini tidak dikonfigurasikan atau dilumpuhkan, pengguna akan dapat menarik diri daripada pengasingan tapak
       (mis. menggunakan masukan "Lumpuhkan pengasingan tapak" dalam chrome://flags).  Tindakan menetapkan dasar ini kepada dilumpuhkan dan/atau tidak mengkonfigurasikan dasar ini tidak akan mematikan Pengasingan Tapak.
@@ -2232,7 +2223,7 @@
 <translation id="5148753489738115745">Membolehkan anda menentukan parameter tambahan yang digunakan apabila  <ph name="PRODUCT_FRAME_NAME" /> melancarkan <ph name="PRODUCT_NAME" />.
 
           Jika dasar ini tidak ditetapkan, baris perintah lalai akan digunakan.</translation>
-<translation id="5152787786897382519">Kedua-dua Chromium dan Google Chrome mempunyai beberapa kumpulan dasar yang bergantung pada satu sama lain untuk memberikan kawalan terhadap ciri. Set ini diwakili oleh kumpulan dasar berikut. Memandangkan dasar boleh mempunyai pelbagai sumber, hanya nilai yang berasal daripada sumber berkeutamaan tertinggi akan digunakan. Nilai yang berasal daripada sumber berkeutamaan lebih rendah dalam kumpulan yang sama akan diabaikan. Urutan keutamaan ditakrifkan dalam <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
+<translation id="5152787786897382519">Chromium dan Google Chrome mempunyai beberapa kumpulan dasar yang bergantung pada satu sama lain untuk memberikan kawalan terhadap ciri. Set ini diwakili oleh kumpulan dasar berikut. Memandangkan dasar boleh mempunyai pelbagai sumber, hanya nilai yang berasal daripada sumber berkeutamaan tertinggi akan digunakan. Nilai yang berasal daripada sumber berkeutamaan lebih rendah dalam kumpulan yang sama akan diabaikan. Urutan keutamaan ditakrifkan dalam <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
 <translation id="5159469559091666409">Kekerapan bingkisan rangkaian pemantauan dihantar dalam milisaat.
 
       Jika dasar ini tidak ditetapkan, selang masa lalai ialah 3 minit.. Selang masa      minimum ialah 30 saat dan selang masa maksimum ialah 24 jam - nilai
@@ -4081,13 +4072,13 @@
 <translation id="8489964335640955763">PluginVm</translation>
 <translation id="8493645415242333585">Lumpuhkan penyimpanan sejarah penyemakan imbas</translation>
 <translation id="8499172469244085141">Tetapan lalai (pengguna boleh mengatasi)</translation>
-<translation id="849962487677588458">Dasar ini ditamatkan dan dirancang untuk dialih keluar dalam Chrome 78, tanpa pengganti.
+<translation id="849962487677588458">Dasar ini telah ditamatkan dan akan dialih keluar dalam Chrome 78, tanpa pengganti.
 
       Dasar ini mendayakan HTTP/0.9 pada port selain 80 untuk HTTP dan 443 untuk HTTPS.
 
       Dasar ini dilumpuhkan secara lalai dan jika didayakan akan menyebabkan pengguna terdedah kepada isu keselamatan https://crbug.com/600352.
 
-      Dasar ini bertujuan untuk memberi pihak syarikat peluang menghijrahkan pelayan sedia ada yang menggunakan HTTP/0.9 dan akan dialih keluar pada masa hadapan.
+      Dasar ini bertujuan untuk memberi pihak syarikat peluang menghijrahkan pelayan sedia ada yang menggunakan HTTP/0.9, dan akan dialih keluar pada masa hadapan.
 
       Jika dasar ini tidak ditetapkan, HTTP/0.9 akan dilumpuhkan pada port bukan lalai.</translation>
 <translation id="8507835864888987300">Menetapkan versi sasaran untuk Autokemas Kini.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index a7ed5345..18c7370 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -364,7 +364,7 @@
 <translation id="1566329065312331399">
       Wanneer dit beleid wordt ingesteld op False, kan het apparaat Powerwash niet activeren.
       Wanneer het beleid wordt ingesteld op True, kan het apparaat Powerwash activeren.
-      Als het beleid niet wordt ingesteld is de standaardwaarde False, wat betekent dat het apparaat Powerwash niet kan gebruiken.
+      Als het beleid niet wordt ingesteld, is de standaardwaarde False, wat betekent dat het apparaat Powerwash niet kan gebruiken.
       </translation>
 <translation id="1574554504290354326">Deze instelling is beëindigd. Gebruik in plaats daarvan SafeBrowsingExtendedReportingEnabled. Het inschakelen of uitschakelen van SafeBrowsingExtendedReportingEnabled staat gelijk aan het instellen van SafeBrowsingExtendedReportingOptInAllowed op 'False'.
 
@@ -1625,15 +1625,6 @@
       Als je dit beleid niet instelt, gebruikt <ph name="PRODUCT_NAME" /> de normale standaardmap (platformspecifiek).
 
       Raadpleeg https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables voor een lijst met variabelen die kunnen worden gebruikt.</translation>
-<translation id="3904459740090265495">Met dit beleid wordt het inloggedrag van de browser beheerd. Hiermee kun je specificeren of de gebruiker kan inloggen bij <ph name="PRODUCT_NAME" /> met zijn account en accountgerelateerde services (zoals Chrome-synchronisatie) kan gebruiken.
-
-      Als het beleid is ingesteld op 'Inloggen bij browser uitschakelen', kan de gebruiker niet inloggen bij de browser en geen accountgebaseerde services gebruiken. Functies op browserniveau (zoals Chrome-synchronisatie) kunnen in dit geval niet worden gebruikt en zijn niet beschikbaar. Als de gebruiker was ingelogd en het beleid is ingesteld op 'Uitgeschakeld', wordt de gebruiker uitgelogd wanneer hij Chrome de volgende keer gebruikt. Zijn lokale profielgegevens (zoals bladwijzers, wachtwoorden, enzovoort) blijven behouden. De gebruiker kan nog steeds inloggen bij en gebruikmaken van Google-webservices zoals Gmail.
-
-      Als het beleid is ingesteld op 'Inloggen bij browser inschakelen', mag de gebruiker inloggen bij de browser en wordt deze automatisch ingelogd bij de browser wanneer hij is ingelogd bij Google-webservices zoals Gmail. Als een gebruiker wordt ingelogd bij de browser, betekent dit dat de accountgegevens van de gebruiker worden bewaard door de browser. Het betekent echter niet dat Chrome-synchronisatie standaard wordt ingeschakeld. De gebruiker moet zich afzonderlijk aanmelden voor gebruik van deze functie. Als dit beleid wordt ingeschakeld, kan de gebruiker de instelling die inloggen bij de browser toestaat, niet uitschakelen. Gebruik het beleid 'SyncDisabled' om de beschikbaarheid van Chrome-synchronisatie te beheren.
-
-      Als het beleid is ingesteld op 'Inloggen bij browser afdwingen', krijgt de gebruiker een dialoogvenster voor accountselectie te zien en moet deze een account kiezen en inloggen om de browser te gebruiken. Dit zorgt ervoor dat voor beheerde accounts de beleidsregels die aan het account zijn gekoppeld, worden toegepast en afgedwongen. Hiermee wordt Chrome-synchronisatie standaard ingeschakeld voor het account, behalve wanneer synchronisatie is uitgeschakeld door de domeinbeheerder of via het beleid 'SyncDisabled'. De standaardwaarde van BrowserGuestModeEnabled wordt ingesteld op 'False'. Houd er rekening mee dat bestaande, niet-ingelogde profielen worden vergrendeld en niet toegankelijk zijn na inschakeling van dit beleid. Bekijk het Helpcentrum-artikel voor meer informatie: https://support.google.com/chrome/a/answer/7572556.
-
-      Als dit beleid niet is ingesteld, kan de gebruiker bepalen of deze de optie voor inloggen bij de browser wil inschakelen en deze naar wens gebruiken.</translation>
 <translation id="3911737181201537215">Dit beleid is niet van invloed op de logboekregistratie van Android.</translation>
 <translation id="391531815696899618">Hiermee wordt synchronisatie van Google Drive in de app Bestanden van <ph name="PRODUCT_OS_NAME" /> uitgeschakeld wanneer de optie is ingesteld op 'True'. In dat geval worden geen gegevens naar Google Drive geüpload.
 
@@ -2065,10 +2056,10 @@
 
       Als dit beleid niet is ingesteld, wordt de standaardperiode van 345.600.000 milliseconden (vier dagen) voor <ph name="PRODUCT_OS_NAME" />-apparaten en een periode van 604.800.000 milliseconden (één week) voor <ph name="PRODUCT_NAME" /> gebruikt.</translation>
 <translation id="4777805166623621364">
-      Deze instelling, SitePerProcess, kan worden gebruikt om gebruikers niet toe te staan het standaardgedrag uit te schakelen waarbij alle sites worden geïsoleerd. Het beleid IsolateOrigins kan ook handig zijn om aanvullende, gedetailleerdere herkomsten te isoleren.
-      Als het beleid is ingeschakeld, kunnen gebruikers het standaardgedrag niet uitschakelen waarbij elke site in een eigen proces wordt uitgevoerd.
-      Als het beleid niet is geconfigureerd of is uitgeschakeld, kan de gebruiker de site-isolatie uitschakelen (bijvoorbeeld met 'Disable site isolation' ('Site-isolatie uitschakelen) in chrome://flags).  Wanneer je dit beleid instelt op uitgeschakeld en/of het beleid niet configureert, wordt site-isolatie niet uitgeschakeld.
-      In <ph name="PRODUCT_OS_NAME" /> versie 76 en eerder wordt aanbevolen om het apparaatbeleid <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> ook op dezelfde waarde in te stellen. Als de waarden die zijn opgegeven in de twee beleidsregels niet overeenkomen, kan er een vertraging optreden bij het starten van een gebruikerssessie terwijl de waarde wordt toegepast die is gespecificeerd door het gebruikersbeleid.
+      Deze instelling, SitePerProcess, kan worden gebruikt om gebruikers niet toe te staan het standaardgedrag waarbij alle sites worden geïsoleerd, uit te schakelen. Het beleid IsolateOrigins kan ook handig zijn om aanvullende, gedetailleerdere herkomsten te isoleren.
+      Als het beleid ingeschakeld is, kunnen gebruikers het standaardgedrag waarbij elke site in een eigen proces wordt uitgevoerd, niet uitschakelen.
+      Als het beleid niet geconfigureerd of uitgeschakeld is, kan de gebruiker de site-isolatie uitschakelen (bijvoorbeeld met 'Disable site isolation' ('Site-isolatie uitschakelen) in chrome://flags).  Wanneer je dit beleid instelt op uitgeschakeld en/of het beleid niet configureert, wordt site-isolatie niet uitgeschakeld.
+      In <ph name="PRODUCT_OS_NAME" /> versie 76 en eerder wordt aanbevolen om het apparaatbeleid <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> ook op dezelfde waarde in te stellen. Als de waarden die zijn opgegeven in de twee beleidsregels niet overeenkomen, kan er bij het starten van een gebruikerssessie terwijl de door het gebruikersbeleid gespecificeerde waarde wordt toegepast, een vertraging optreden.
 
       OPMERKING: Dit beleid is niet van toepassing op Android. Als je SitePerProcess wilt inschakelen op Android, gebruik je de beleidsinstelling SitePerProcessAndroid.
       </translation>
@@ -3502,7 +3493,7 @@
 
       Dit beleid is alleen van toepassing wanneer de <ph name="CHROME_REPORTING_EXTENSION_NAME" /> is ingeschakeld en de machine is ingeschreven met <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
 <translation id="7359307926583593395">
-      Dit beleid is van toepassing op het inlogscherm. Raadpleeg ook het beleid <ph name="SITE_PER_PROCESS_POLICY_NAME" /> dat van toepassing is op de gebruikerssessie. Het wordt aangeraden beide beleidsregels op dezelfde waarde in te stellen. Als de waarden niet overeenkomen, kan er een vertraging optreden bij het starten van een gebruikerssessie terwijl de waarde wordt toegepast die is gespecificeerd door het gebruikersbeleid.
+      Dit beleid is van toepassing op het inlogscherm. Raadpleeg ook het beleid <ph name="SITE_PER_PROCESS_POLICY_NAME" /> dat van toepassing is op de gebruikerssessie. Het wordt aangeraden beide beleidsregels op dezelfde waarde in te stellen. Als de waarden niet overeenkomen, kan er bij het starten van een gebruikerssessie terwijl de door het gebruikersbeleid gespecificeerde waarde wordt toegepast, een vertraging optreden.
       </translation>
 <translation id="737655323154569539">Hiermee beperk je de grootte van de afdrukpagina. Als er geen beleid is ingesteld of de instelling leeg is, gelden er geen beperkingen.</translation>
 <translation id="7389872682701720082">Als je deze instelling inschakelt, worden plug-ins altijd uitgevoerd als ze niet verouderd zijn.
@@ -4039,13 +4030,13 @@
 <translation id="8489964335640955763">PluginVm</translation>
 <translation id="8493645415242333585">Opslaan van browsegeschiedenis uitschakelen</translation>
 <translation id="8499172469244085141">Standaardinstellingen (gebruikers kunnen overschrijven)</translation>
-<translation id="849962487677588458">Dit beleid is beëindigd en gepland voor verwijdering in Chrome 78, zonder vervanging.
+<translation id="849962487677588458">Dit beleid is beëindigd en wordt in Chrome 78 zonder vervanging verwijderd.
 
       Met dit beleid wordt HTTP/0.9 ingeschakeld op alle poorten behalve poort 80 voor HTTP en poort 443 voor HTTPS.
 
       Dit beleid is standaard uitgeschakeld. Indien ingeschakeld worden gebruikers blootgesteld aan het beveiligingsprobleem https://crbug.com/600352.
 
-      Dit beleid is bedoeld om bedrijven de mogelijkheid te bieden bestaande servers te laten overstappen vanaf HTTP/0.9 en zal in de toekomst worden verwijderd.
+      Dit beleid is bedoeld om bedrijven de mogelijkheid te bieden bestaande servers te laten overstappen vanaf HTTP/0.9 en wordt in de toekomst verwijderd.
 
       Als dit beleid niet wordt ingesteld, wordt HTTP/0.9 uitgeschakeld op niet-standaardpoorten.</translation>
 <translation id="8507835864888987300">Hiermee stel je een doelversie voor 'Automatische updates' in.
diff --git a/components/policy/resources/policy_templates_no.xtb b/components/policy/resources/policy_templates_no.xtb
index 7bcbeeb..2373f6d 100644
--- a/components/policy/resources/policy_templates_no.xtb
+++ b/components/policy/resources/policy_templates_no.xtb
@@ -1592,15 +1592,6 @@
       Hvis du ikke angir denne regelen, bruker <ph name="PRODUCT_NAME" /> den vanlige standardkatalogen (plattformspesifikk).
 
       Se https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables for en liste over variabler som kan brukes.</translation>
-<translation id="3904459740090265495">Denne regelen styrer påloggingsatferden til nettleseren. Du kan spesifisere hvorvidt brukeren kan logge på <ph name="PRODUCT_NAME" /> med kontoen sin og bruke kontorelaterte tjenester som Chrome-synkronisering.
-
-      Hvis regelen er angitt som «Deaktiver nettleserpålogging», kan ikke brukeren logge på nettleseren og bruke kontobaserte tjenester. Da er det ikke mulig å bruke funksjoner på nettlesernivå, for eksempel Chrome-synkronisering, og slike funksjoner er utilgjengelige. Hvis brukeren var pålogget da regelen ble deaktivert, logges vedkommende av neste gang Chrome startes, men lokale profildata som bokmerker, passord osv. beholdes. Brukeren kan fortsatt logge på og bruke Google-nettjenester som Gmail.
-
-      Hvis regelen er angitt som «Aktiver nettleserpålogging», kan brukeren logge på nettleseren og logges på nettleseren automatisk når vedkommende logger på Google-nettjenester som Gmail. Når brukeren er logget på nettleseren, lagrer nettleseren brukerens kontoinformasjon. Men dette betyr ikke at Chrome-synkronisering er på som standard. Brukeren må velge å bruke denne funksjonen. Når denne regelen aktiveres, kan ikke brukeren slå av innstillingen som styrer nettleserpålogging. For å styre hvorvidt Chrome-synkronisering skal være tilgjengelig, bruk regelen «SyncDisabled».
-
-      Hvis regelen er angitt som «Tving nettleserpålogging», vises brukeren en dialogboks for kontovalg og må velge og logge på en konto for å bruke nettleseren. Dette sikrer at reglene som er knyttet til kontoen, brukes og håndheves for administrerte kontoer. Dette slår på Chrome-synkronisering for kontoen som standard, med mindre synkronisering er deaktivert av domeneadministratoren eller med regelen «SyncDisabled». Standardverdien for BrowserGuestModeEnabled er satt til «False» (usann). Merk at eksisterende, usignerte profiler låses og gjøres utilgjengelige når denne regelen aktiveres. For mer informasjon, se denne brukerstøtteartikkelen: https://support.google.com/chrome/a/answer/7572556.
-
-      Hvis denne regelen ikke er angitt, kan brukeren velge om alternativet for nettleserpålogging skal aktiveres, og bruke det som vedkommende selv vil.</translation>
 <translation id="3911737181201537215">Denne regelen har ingen innvirkning på loggføring i Android.</translation>
 <translation id="391531815696899618">Slår av Google Disk-synkronisering i Filer-appen for <ph name="PRODUCT_OS_NAME" /> ved bruk av mobiltilkobling når den har verdien true (sann). I disse tilfellene lastes ikke noen data opp til Google Disk.
 
diff --git a/components/policy/resources/policy_templates_pl.xtb b/components/policy/resources/policy_templates_pl.xtb
index b0f217d..c5070a02 100644
--- a/components/policy/resources/policy_templates_pl.xtb
+++ b/components/policy/resources/policy_templates_pl.xtb
@@ -359,9 +359,9 @@
 <translation id="1561424797596341174">Zasada zastępuje kompilacje hosta dostępu zdalnego w trybie debugowania</translation>
 <translation id="1561967320164410511">U2F i rozszerzenia do indywidualnego poświadczania</translation>
 <translation id="1566329065312331399">
-      Gdy ta zasada ma ustawienie Fałsz, urządzenie nie może uruchomić funkcji Powerwash.
-      Gdy ma ustawienie Prawda, urządzenie może uruchomić Powerwash.
-      Jeśli zasada jest nieskonfigurowana, stosowana jest domyślna wartość Fałsz (czyli urządzenie może uruchomić Powerwash).
+      Gdy ta zasada ma wartość Fałsz, urządzenie nie może uruchomić funkcji Powerwash.
+      Gdy ma wartość Prawda, urządzenie może uruchomić Powerwash.
+      Jeśli zasada jest nieskonfigurowana, stosowana jest domyślna wartość Fałsz (czyli urządzenie nie może uruchomić Powerwash).
       </translation>
 <translation id="1574554504290354326">To ustawienie zostało wycofane. Zamiast niego użyj ustawienia SafeBrowsingExtendedReportingEnabled. Włączenie lub wyłączenie zasady SafeBrowsingExtendedReportingEnabled działa tak samo jak ustawienie wartości false w zasadzie SafeBrowsingExtendedReportingOptInAllowed.
 
@@ -1586,15 +1586,6 @@
       Jeśli zasada pozostanie nieustawiona, <ph name="PRODUCT_NAME" /> będzie używać katalogu domyślnego (zależnego od platformy).
 
       Listę zmiennych, których można użyć, znajdziesz na https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables</translation>
-<translation id="3904459740090265495">Ta zasada kontroluje mechanizm logowania w przeglądarce. Umożliwia określenie, czy użytkownik może zalogować się w <ph name="PRODUCT_NAME" /> przy użyciu swojego konta i używać usług związanych z kontem, na przykład synchronizacji Chrome.
-
-      Jeśli zasada ma wartość „Wyłącz logowanie w przeglądarce”, użytkownik nie może zalogować się w przeglądarce ani używać usług związanych z kontem. Funkcje przeglądarki, takie jak synchronizacja Chrome, będą niedostępne. Jeśli użytkownik był wcześniej zalogowany, a zasada jest wyłączona, użytkownik zostanie wylogowany po najbliższym uruchomieniu Chrome, ale dane z jego profilu lokalnego, takie jak zakładki, hasła itd., zostaną zachowane. Użytkownik nadal będzie mógł logować się w usługach internetowych Google takich jak Gmail i ich używać.
-
-      Jeśli zasada ma wartość „Włącz logowanie w przeglądarce”, użytkownik może zalogować się w przeglądarce i jest logowany w niej automatycznie po zalogowaniu się w usługach internetowych Google takich jak Gmail. Zalogowanie w przeglądarce oznacza, że przeglądarka będzie przechowywać dane z konta użytkownika. Nie oznacza to jednak, że domyślnie włączona zostanie synchronizacja Chrome – użytkownik musi zgodzić się na jej używanie oddzielnie. Włączenie tej zasady uniemożliwi użytkownikowi wyłączenie logowania w przeglądarce w ustawieniach. Do określania dostępności synchronizacji Chrome służy zasada „SyncDisabled”.
-
-      Jeśli zasada ma wartość „Wymuś logowanie w przeglądarce", użytkownikowi wyświetlane jest okno wyboru konta i musi on wybrać konto oraz zalogować się na nie, by używać przeglądarki. Jest to gwarancją, że na kontach zarządzanych będą stosowane i egzekwowane zasady. Domyślnie powoduje to włączenie dla tego konta synchronizacji Chrome – o ile synchronizacja nie została wyłączona przez administratora domeny lub za pomocą zasady „SyncDisabled”. Domyślnie wartość zasady BrowserGuestModeEnabled zostanie ustawiona na fałsz. Uwaga: po włączeniu tej zasady istniejące niepodpisane profile zostaną zablokowane i będą niedostępne. Więcej informacji znajdziesz w tym artykule w Centrum pomocy: https://support.google.com/chrome/a/answer/7572556
-
-      Jeśli zasada jest nieskonfigurowana, użytkownik może samodzielnie włączyć lub wyłączyć logowanie w przeglądarce i korzystać z tej funkcji według własnego uznania.</translation>
 <translation id="3911737181201537215">Ta zasada nie ma żadnego wpływu na zapisywanie w dzienniku przez Androida.</translation>
 <translation id="391531815696899618">Po ustawieniu wartości prawda wyłącza synchronizację Dysku Google w aplikacji Pliki w <ph name="PRODUCT_OS_NAME" />. Żadne dane nie są przesyłane na Dysk Google.
 
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index b5c4725..c9a2fc60 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -1582,15 +1582,6 @@
       Se você não definir esta política, o <ph name="PRODUCT_NAME" /> usará o diretório padrão (específico da plataforma).
 
       Consulte http://www.chromium.org/administrators/policy-list-3/user-data-directory-variables (link em inglês) para ver uma lista de variáveis que podem ser usadas.</translation>
-<translation id="3904459740090265495">Esta política controla o comportamento de login no navegador. Ela permite especificar se o usuário pode fazer login no <ph name="PRODUCT_NAME" /> com a própria conta e usar os serviços relacionados a ela, como a "Sincronização do Chrome".
-
-      Se a política for definida como "Desativar login no navegador", não será possível fazer login no navegador e usar os serviços baseados na conta. Nesse caso, os recursos do navegador, como a "Sincronização do Chrome", não poderão ser usados e ficarão indisponíveis. Se o usuário estiver conectado e a política for definida como "Desativada", ele será desconectado na próxima vez que executar o Chrome, mas os dados locais do perfil dele, como favoritos e senhas, serão preservados. O usuário ainda conseguirá fazer login e usar os serviços do Google na Web, como o Gmail.
-
-      Se a política for definida como "Ativar login no navegador", o usuário poderá fazer login no navegador e será automaticamente conectado a ele quando se conectar aos serviços do Google na Web, como o Gmail. As informações da conta serão mantidas pelo navegador quando o usuário estiver conectado a ele. No entanto, isso não significa que a "Sincronização do Chrome" será ativada por padrão, ou seja, o usuário precisa ativar o uso desse recurso separadamente. A ativação desta política impedirá que o usuário desative a configuração que permite o login no navegador. Para controlar a disponibilidade da "Sincronização do Chrome", use a política "SyncDisabled".
-
-      Se a política for definida como "Forçar login no navegador", o usuário verá uma caixa de diálogo de seleção de conta e precisará fazer login em uma delas para usar o navegador. Isso garante que, no caso de contas gerenciadas, as políticas associadas à conta sejam aplicadas e executadas. Por padrão, isso ativa a "Sincronização do Chrome" para a conta, exceto se a sincronização tiver sido desativada pelo administrador do domínio ou por meio da política "SyncDisabled". O valor padrão de BrowserGuestModeEnabled será definido como false. Os perfis existentes desconectados serão bloqueados, e não será possível acessá-los depois de ativar esta política. Para mais informações, consulte o artigo da Central de Ajuda: https://support.google.com/chrome/a/answer/7572556.
-
-      Se esta política não for configurada, o usuário poderá decidir se quer ativar a opção de login no navegador e usá-la conforme adequado.</translation>
 <translation id="3911737181201537215">Esta política não tem nenhum efeito sobre o registro feito pelo Android.</translation>
 <translation id="391531815696899618">Desativa a sincronização do Google Drive no aplicativo Files do <ph name="PRODUCT_OS_NAME" /> quando definida como "true". Nesse caso, nenhum dado é transferido por upload para o Google Drive.
 
diff --git a/components/policy/resources/policy_templates_pt-PT.xtb b/components/policy/resources/policy_templates_pt-PT.xtb
index 04d8d9e..dade91a 100644
--- a/components/policy/resources/policy_templates_pt-PT.xtb
+++ b/components/policy/resources/policy_templates_pt-PT.xtb
@@ -1602,15 +1602,6 @@
       Se não definir esta política, o <ph name="PRODUCT_NAME" /> utiliza o respetivo diretório predefinido habitual (específico da plataforma).
 
       Consulte https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables para ver uma lista das variáveis que é possível utilizar.</translation>
-<translation id="3904459740090265495">Esta política controla o comportamento de início de sessão do navegador. Permite-lhe especificar se o utilizador pode iniciar sessão no <ph name="PRODUCT_NAME" /> com a respetiva conta e utilizar serviços relacionados com a conta, como a Sincronização do Chrome.
-
-      Se a política estiver definida como "Desativar o início de sessão no navegador", o utilizador não pode iniciar sessão no navegador nem utilizar os serviços baseados na conta. Neste caso, as funcionalidades ao nível do navegador, como a Sincronização do Chrome, não podem ser utilizadas e estão indisponíveis. Se o utilizador tiver sessão iniciada e a política for definida como "Desativada", a sessão do utilizador é terminada da próxima vez que este executar o Chrome, mas os respetivos dados locais do perfil, como marcadores, palavras-passe etc., mantêm-se guardados. O utilizador ainda poderá iniciar sessão e utilizar os serviços Web Google como o Gmail.
-
-      Se a política estiver definida como "Ativar o início de sessão no navegador", o utilizador tem autorização para iniciar sessão no navegador e a respetiva sessão é iniciada automaticamente no navegador quando tem sessão iniciada nos serviços Web Google como o Gmail. Ter a sessão iniciada no navegador significa que as informações da conta do utilizador são guardadas pelo navegador. Contudo, tal não significa que a Sincronização do Chrome estará ativada por predefinição; o utilizador tem de ativar separadamente a utilização desta funcionalidade. A ativação desta política impede que o utilizador desative a definição que permite o início de sessão no navegador. Para controlar a disponibilidade da Sincronização do Chrome, utilize a política "SyncDisabled".
-
-      Se esta política estiver definida como "Forçar início de sessão no navegador", é apresentada ao utilizador uma caixa de diálogo de seleção de conta e este tem de optar e iniciar sessão para utilizar o navegador. Isto garante que, para as contas geridas, as políticas associadas à conta sejam aplicadas e implementadas. Por predefinição, esta opção ativa a Sincronização do Chrome para a conta, exceto no caso em que a sincronização tenha sido desativada pelo administrador do domínio ou através da política "SyncDisabled". O valor predefinido de BrowserGuestModeEnabled vai ser definido como falso. Tenha em atenção que os perfis não assinados existentes serão bloqueados e estarão inacessíveis após a ativação desta política. Para mais informações, consulte o artigo do Centro de Ajuda: https://support.google.com/chrome/a/answer/7572556.
-
-      Se esta política não for definida, o utilizador pode decidir se pretende ativar a opção de início de sessão no navegador e utilizá-la conforme entender.</translation>
 <translation id="3911737181201537215">Esta política não tem qualquer efeito nos registos realizados pelo Android.</translation>
 <translation id="391531815696899618">Desativa a sincronização do Google Drive na aplicação Ficheiros do <ph name="PRODUCT_OS_NAME" /> quando definida como verdadeira. Nesse caso, os dados não são carregados para o Google Drive.
 
@@ -2043,8 +2034,8 @@
 <translation id="4777805166623621364">
       Esta definição, SitePerProcess, pode ser utilizada para não permitir que os utilizadores recusem o comportamento predefinido de isolamento de todos os sites. Tenha em atenção que a política IsolateOrigins também pode ser útil para isolar origens adicionais mais detalhadas.
       Se a política estiver ativada, os utilizadores não poderão recusar o comportamento predefinido, que prevê que cada site seja executado no seu próprio processo.
-      Se a política não for configurada ou estiver desativada, o utilizador poderá recusar o isolamento de sites
-      (por exemplo, ao utilizar a entrada "Desativar isolamento de sites" em chrome://flags).  Definir a política como desativada e/ou não configurar a política não desativa o Isolamento de sites.
+      Se a política não for configurada ou estiver desativada, o utilizador poderá recusar o isolamento de site
+      (por exemplo, ao utilizar a entrada "Desativar isolamento de site" em chrome://flags).  Definir a política como desativada e/ou não configurar a política não desativa o isolamento de site.
       Na versão 76 e anteriores do <ph name="PRODUCT_OS_NAME" />, recomenda-se também a definição da política do dispositivo <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> para o mesmo valor. Se os valores especificados pelas duas políticas não coincidirem, poderá ocorrer um atraso ao iniciar uma sessão de utilizador enquanto o valor especificado pela Política do Utilizador é aplicado.
 
       NOTA: esta política não se aplica ao Android. Para ativar a política SitePerProcess no Android, utilize a definição da política SitePerProcessAndroid.
diff --git a/components/policy/resources/policy_templates_ro.xtb b/components/policy/resources/policy_templates_ro.xtb
index 8c33900..5fded517 100644
--- a/components/policy/resources/policy_templates_ro.xtb
+++ b/components/policy/resources/policy_templates_ro.xtb
@@ -1589,15 +1589,6 @@
       Dacă nu setezi această politică, <ph name="PRODUCT_NAME" /> va utiliza directorul prestabilit obișnuit (specific platformei).
 
       Pentru o listă a variabilelor care pot fi utilizate, accesează https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Această politică stabilește comportamentul de conectare al browserului. Îți permite să specifici dacă utilizatorul poate să se conecteze la <ph name="PRODUCT_NAME" /> cu contul său și să folosească servicii conexe contului, cum ar fi Sincronizarea Chrome.
-
-      Dacă politica este setată la „Dezactivează conectarea la browser”, utilizatorul nu poate să se conecteze la browser și să folosească serviciile bazate pe cont. În acest caz, funcțiile la nivel de browser, cum ar fi Sincronizarea Chrome, nu pot fi folosite și vor fi indisponibile. Dacă utilizatorul era conectat, iar politica este setată ca „Dezactivată”, acesta va fi deconectat data viitoare când folosește Chrome, însă datele profilului său local, cum ar fi marcajele, parolele etc., se vor păstra. Utilizatorul va putea să se conecteze și să folosească serviciile web Google, cum ar fi Gmail.
-
-      Dacă politica este setată la „Activează conectarea la browser”, utilizatorul are permisiunea de a se conecta la browser și este conectat automat când este conectat la serviciile web Google, cum ar fi Gmail. Conectarea la browser înseamnă că informațiile contului utilizatorului vor fi păstrate de browser. Cu toate acestea, Sincronizarea Chrome nu va fi activată automat. Utilizatorul trebuie să activeze separat această funcție. Activând această politică, utilizatorul nu va dezactiva setarea care permite conectarea la browser. Pentru a controla disponibilitatea Sincronizării Chrome, folosiți politica „SyncDisabled”.
-
-      Dacă politica este setată la „Conectare obligatorie la browser”, utilizatorul va vedea un dialog de selectare a contului și trebuie să aleagă și să se conecteze la un cont pentru a folosi browserul. Astfel, se vor aplica politicile asociate contului pentru conturile gestionate. În mod prestabilit, Sincronizarea Chrome se va activa pentru acel cont, cu excepția cazului în care sincronizarea a fost dezactivată de administratorul domeniului sau prin politica „SyncDisabled”. Valoarea prestabilită pentru BrowserGuestModeEnabled va fi dezactivată. Reține că profilurile neconectate existente vor fi blocate și inaccesibile după activarea acestei politici. Pentru mai multe informații, consultă articolul din centrul de ajutor: https://support.google.com/chrome/a/answer/7572556.
-
-      Dacă această politică nu este setată, utilizatorul poate decide dacă să activeze opțiunea de conectare la browser și să o folosească după cum dorește.</translation>
 <translation id="3911737181201537215">Această politică nu afectează înregistrările în jurnal din Android.</translation>
 <translation id="391531815696899618">Dacă este activată, dezactivează sincronizarea cu Google Drive în aplicația Fișiere din <ph name="PRODUCT_OS_NAME" />. În acest caz, datele nu sunt încărcate în Google Drive.
 
@@ -3441,7 +3432,7 @@
 
       Politica se aplică doar când este activată <ph name="CHROME_REPORTING_EXTENSION_NAME" />, iar dispozitivul este înregistrat cu <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
 <translation id="7359307926583593395">
-      Această politică este valabilă pentru ecranul de conectare. Consultă și politica <ph name="SITE_PER_PROCESS_POLICY_NAME" />, care este valabilă pentru sesiunea de utilizator. Se recomandă să setezi ambele politici la aceeași valoare. Dacă valorile nu se potrivesc, poate apărea o întârziere când intri într-o sesiune de utilizator în timp ce este aplicată valoarea indicată de politica de utilizator.
+      Această politică este valabilă pentru ecranul de conectare. Consultă și politica <ph name="SITE_PER_PROCESS_POLICY_NAME" />, care este valabilă pentru sesiunea de utilizator. Se recomandă să setezi ambele politici la aceeași valoare. Dacă valorile nu se potrivesc, poate apărea o întârziere când intri într-o sesiune de utilizator în timp ce este aplicată valoarea indicată de politica privind utilizatorii.
       </translation>
 <translation id="737655323154569539">Restricționează dimensiunea paginii de printare. Politica nesetată și setul gol sunt tratate ca lipsa oricărei restricții.</translation>
 <translation id="7389872682701720082">Dacă activezi setarea, pluginurile care nu sunt învechite rulează întotdeauna.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index 0aa9eeb..b6683fa 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -1586,15 +1586,6 @@
       Если правило не настроено, <ph name="PRODUCT_NAME" /> будет использовать каталог для скачивания по умолчанию (он зависит от платформы).
 
       Список поддерживаемых переменных приведен здесь: http://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Это правило контролирует необходимость выполнять вход в браузере. Оно позволяет указать, может ли пользователь входить в <ph name="PRODUCT_NAME" /> с помощью учетных данных своего аккаунта, и настроить доступность связанных с аккаунтом функций (например, Синхронизации Chrome).
-
-      Если для правила выбрано значение Disable browser sign-in (Отключить вход в браузере), пользователь не сможет выполнить вход в браузере и работать с сервисами, связанными с аккаунтом. В этом случае некоторые функции браузера, например Синхронизация Chrome, будут недоступны. Если пользователь уже вошел в систему через браузер, после чего для правила выбрано значение Disabled (Отключено), при следующем запуске Chrome произойдет автоматический выход из аккаунта. При этом данные профиля (пароли, закладки и т. д.) будут сохранены. Пользователь по-прежнему сможет входить в веб-сервисы Google, например Gmail.
-
-      Если для правила выбрано значение Enable browser sign-in (Включить вход в браузере), пользователь сможет выполнять вход в браузере. При входе в веб-сервисы Google (например, Gmail) вход в браузере также будет выполняться автоматически. Если пользователь войдет в систему через браузер, в нем будет сохраняться информация аккаунта. Однако это не значит, что Синхронизация Chrome будет работать по умолчанию – ее понадобится настроить отдельно. Если правило включено, пользователь не сможет отключить настройку, разрешающую вход в браузере. Для управления Синхронизацией Chrome предназначено правило SyncDisabled.
-
-      Если для правила настроено значение Force browser sign-in (Принудительный вход в браузере), пользователю будет предложено выбрать аккаунт и войти в него. Это гарантирует применение всех необходимых правил для управляемых аккаунтов. По умолчанию для такого аккаунта включается Синхронизация Chrome, если она не была отключена администратором домена или с помощью правила SyncDisabled. Значением правила BrowserGuestModeEnabled по умолчанию будет выбрано False. Обратите внимание, что после включения правила все профили, в которые не выполнен вход, будут заблокированы. Подробности можно найти в Справочном центре: https://support.google.com/chrome/a/answer/7572556.
-
-      Если правило не настроено, пользователь сможет сам решить, включать ли функцию входа в браузере.</translation>
 <translation id="3911737181201537215">Правило не влияет на вход, выполненный в приложении Android.</translation>
 <translation id="391531815696899618">Если задано значение "true", синхронизация Google Диска в приложении "Файлы" <ph name="PRODUCT_OS_NAME" /> будет отключена, и данные нельзя будет загружать на Google Диск.
 
diff --git a/components/policy/resources/policy_templates_sk.xtb b/components/policy/resources/policy_templates_sk.xtb
index 900675f..430272d 100644
--- a/components/policy/resources/policy_templates_sk.xtb
+++ b/components/policy/resources/policy_templates_sk.xtb
@@ -1605,15 +1605,6 @@
       Ak toto pravidlo nenastavíte, <ph name="PRODUCT_NAME" /> bude používať obvyklý predvolený adresár (podľa konkrétnej platformy).
 
       Zoznam premenných, ktoré sa dajú použiť, nájdete na adrese https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Toto pravidlo ovláda prihlasovacie správanie prehliadača. Umožňuje určiť, či sa používateľ môže prihlásiť do prehliadača <ph name="PRODUCT_NAME" /> pomocou svojho účtu a používať služby súvisiace s účtom, ako je napríklad synchronizácia Chromu.
-
-      Ak ho nastavíte na možnosť Zakázať prihlásenie do prehliadača, používateľ sa nemôže prihlásiť do prehliadača ani používať služby založené v účte. V tomto prípade nie je možné použiť funkcie na úrovni prehliadača, ako napríklad synchronizáciu Chromu, pričom nebudú k dispozícii. Ak bol používateľ prihlásený a pravidlo nastavíte na možnosť Zakázané, bude pri ďalšom spustení Chromu odhlásený, ale údaje jeho miestneho profilu (napríklad záložky, heslá atď.) sa zachovajú. Používateľ sa bude môcť naďalej prihlasovať do webových služieb Googlu, ako je napríklad Gmail, a používať ich.
-
-      Ak ho nastavíte na možnosť Povoliť prihlásenie do prehliadača, používateľ sa môže prihlásiť do prehliadača a automaticky bude prihlasovaný do prehliadača pri prihlásení do webových služieb Googlu, ako je napríklad Gmail. To, že je používateľ prihlásený do prehliadača, znamená, že prehliadač bude uchovávať informácie o jeho účte. Neznamená to však, že synchronizácia Chromu bude predvolene zapnutá. Používateľ si musí túto funkciu samostatne aktivovať. Povolením tohto pravidla zabránite používateľovi vypnúť nastavenie umožňujúce prihlásenie do účtu. Ak chcete ovládať dostupnosť synchronizácie Chromu, použite pravidlo SyncDisabled.
-
-      Ak ho nastavíte na možnosť Presadzovať prihlásenie do prehliadača, používateľovi sa zobrazí dialógové okno na výber účtu, v ktorom musí vybrať účet a prihlásiť sa doň, aby mohol prehliadač používať. Tým sa zaistí, že v prípade spravovaných účtov sa budú uplatňovať a presadzovať pravidlá priradené k danému účtu. Predvolene sa tým v danom účte zapne aj synchronizácia Chromu. Výnimku predstavujú prípady, keď je zakázaná správcom domény alebo pravidlom SyncDisabled. Predvolená hodnota parametra BrowserGuestModeEnabled bude nastavená na hodnotu false. Upozorňujeme, že po povolení tohto pravidla sa existujúce nepriradené profily uzamknú a budú neprístupné. Ďalšie informácie nájdete v článku centra pomoci na https://support.google.com/chrome/a/answer/7572556.
-
-      Ak toto pravidlo nenastavíte, používateľ sa môže rozhodnúť, či chce možnosť prihlásenia do prehliadača povoliť, a následne ju použiť, keď to považuje za vhodné.</translation>
 <translation id="3911737181201537215">Na zaznamenávanie do denníkov vykonávané systémom Android nemá toto pravidlo žiaden vplyv.</translation>
 <translation id="391531815696899618">Ak je toto pravidlo nastavené na hodnotu True, zakazuje synchronizáciu aplikácie Súbory systému <ph name="PRODUCT_OS_NAME" /> s Diskom Google. V takom prípade sa na Disk Google nenahrajú žiadne údaje.
 
diff --git a/components/policy/resources/policy_templates_sl.xtb b/components/policy/resources/policy_templates_sl.xtb
index c4a922d..d004c231 100644
--- a/components/policy/resources/policy_templates_sl.xtb
+++ b/components/policy/resources/policy_templates_sl.xtb
@@ -1632,15 +1632,6 @@
       Če tega pravilnika ne nastavite, <ph name="PRODUCT_NAME" /> uporabi običajni privzeti imenik (odvisno od posameznega okolja).
 
       Na https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables si lahko ogledate seznam spremenljivk, ki jih je mogoče uporabiti.</translation>
-<translation id="3904459740090265495">Ta pravilnik nadzira delovanje prijave v brskalniku. Omogoča vam, da določite, ali se sme uporabnik prijaviti v brskalnik <ph name="PRODUCT_NAME" /> z računom in uporabljati storitve, povezane z računom, na primer sinhronizacijo za Chrome.
-
-      Če je pravilnik nastavljen na »Onemogočanje prijave v brskalnik«, se uporabnik ne more prijaviti v brskalnik in uporabljati storitev, ki temeljijo na računu. V tem primeru funkcij na ravni brskalnika, kot je sinhronizacija za Chrome, ni mogoče uporabljati in niso na voljo. Če je bil uporabnik prijavljen in je pravilnik nastavljen na »Onemogočeno«, bo ob naslednjem zagonu Chroma odjavljen, lokalni podatki profila, kot so zaznamki, gesla ipd., pa se bodo ohranili. Uporabnik se bo še vedno lahko prijavljal v Googlove spletne storitve, na primer Gmail, in jih uporabljal.
-
-      Če je pravilnik nastavljen na »Omogočanje prijave v brskalnik«, se uporabnik sme prijaviti v brskalnik in je samodejno prijavljen vanj, če je prijavljen v Googlove spletne storitve, na primer Gmail. Če je uporabnik prijavljen v brskalnik, pomeni, da brskalnik ohrani podatke o njegovem računu, vendar to ne pomeni, da je sinhronizacija za Chrome privzeto vklopljena; če želi uporabnik to funkcijo uporabljati, jo mora omogočiti ločeno. Če omogočite ta pravilnik, bo uporabniku preprečen izklop nastavitve, ki omogoča prijavo v brskalnik. Če želite nadzirati razpoložljivost sinhronizacije za Chrome, uporabite pravilnik »SyncDisabled«.
-
-      Če je pravilnik nastavljen na »Vsiljenje prijave v brskalnik«, je uporabniku prikazano pogovorno okno za izbiro računa, v katerem mora izbrati račun in se prijaviti vanj, če želi uporabljati brskalnik. S tem se zagotovi, da se pri upravljanih računih uporabljajo in izvajajo pravilniki, povezani z računom. S tem je za račun privzeto vklopljena sinhronizacija za Chrome, razen v primeru, če sinhronizacijo prek pravilnika »SyncDisabled« onemogoči skrbnik domene. Privzeta vrednost za BrowserGuestModeEnabled bo nastavljena na onemogočeno. Obstoječi neprijavljeni profili bodo po omogočanju tega pravilnika zaklenjeni in nedostopni. Več informacij je na voljo v tem članku centra za pomoč: https://support.google.com/chrome/a/answer/7572556.
-
-      Če ta pravilnik ni nastavljen, se lahko uporabnik odloči, ali želi omogočiti možnost prijave v brskalnik in jo uporabljati po želji.</translation>
 <translation id="3911737181201537215">Ta pravilnik ne vpliva na zapisovanje dnevnik sistema Android.</translation>
 <translation id="391531815696899618">Če je ta možnost nastavljena na »True«, onemogoči sinhroniziranje Googla Drive v aplikaciji Datoteke za <ph name="PRODUCT_OS_NAME" />. V tem primeru se v Google Drive ne naložijo nobeni podatki.
 
@@ -2786,7 +2777,7 @@
 <translation id="5983708779415553259">Privzeto delovanje za spletna mesta, ki niso v nobenem paketu vsebine</translation>
 <translation id="5997543603646547632">Privzeto uporabi 24-urni čas</translation>
 <translation id="5997846976342452720">Določanje, ali naj bo iskalnik vtičnikov onemogočen (zastarelo)</translation>
-<translation id="5998198091336830580">Ta pravilnik je del naslednje atomske skupine (uporabljamo se samo pravilniki iz vira z največjo prednostjo, prisotni v skupini):</translation>
+<translation id="5998198091336830580">Ta pravilnik je del naslednje atomske skupine (uporabljajo se samo pravilniki iz vira z največjo prednostjo, prisotni v skupini):</translation>
 <translation id="6017568866726630990">Namesto predogleda tiskanja prikaže sistemsko pogovorno okno za tiskanje.
 
       Če je ta nastavitev omogočena, <ph name="PRODUCT_NAME" /> pri uporabnikovi zahtevi za tiskanje strani namesto vgrajenega predogleda tiskanja odpre sistemsko pogovorno okno za tiskanje.
@@ -4090,7 +4081,7 @@
 <translation id="8499172469244085141">Privzete nastavitve (uporabniki jih lahko preglasijo)</translation>
 <translation id="849962487677588458">Ta pravilnik je zastarel in je načrtovan za odstranitev v Chromu 78. Zanj ne bo zamenjave.
 
-      Ta pravilnik omogoča HTTP/0.9 za vrata, ki niso 80, za HTTP in za 443 za HTTPS.
+      Ta pravilnik omogoča HTTP/0.9 za vrata, ki niso 80 (za HTTP) ali 443 (za HTTPS).
 
       Ta pravilnik je privzeto onemogočen, če pa je omogočen, so uporabniki izpostavljeni varnostni težavi https://crbug.com/600352.
 
diff --git a/components/policy/resources/policy_templates_sr.xtb b/components/policy/resources/policy_templates_sr.xtb
index 91383b4a..4134eab7 100644
--- a/components/policy/resources/policy_templates_sr.xtb
+++ b/components/policy/resources/policy_templates_sr.xtb
@@ -1599,15 +1599,6 @@
       Ако не подесите ове смернице, <ph name="PRODUCT_NAME" /> ће користити уобичајени подразумевани директоријум (у зависности од платформе).
 
       Листу променљивих које можете да користите погледајте на https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Ове смернице управљају понашањем при пријављивању преко прегледача. Омогућавају вам да подесите да ли корисник може да се пријави у <ph name="PRODUCT_NAME" /> помоћу свог налога и користи услуге повезане са налогом попут Chrome синхронизације.
-
-      Ако су ове смернице подешене на „Онемогући пријављивање преко прегледача“, корисник не може да се пријављује преко прегледача и користи услуге повезане са налогом. У том случају функције на нивоу прегледача попут Chrome синхронизације не могу да се користе и биће недоступне. Ако је корисник био пријављен, а смернице су подешене на „Онемогући“, биће одјављен следећи пут када покрене Chrome, али ће се локални подаци профила, попут обележивача, лозинки итд, сачувати. Корисник ће и даље моћи да се пријављује на Google веб-услуге попут Gmail-а.
-
-      Ако су ове смернице подешене на „Омогући пријављивање преко прегледача“, корисник може да се пријављује преко прегледача и аутоматски ће бити пријављен у прегледач када се пријави у Google веб-услуге попут Gmail-а. Пријављивање преко прегледача подразумева да ће се информације о налогу корисника чувати у прегледачу. Међутим, то не значи да ће Chrome синхронизација подразумевано бити укључена. Корисник мора засебно да омогући ту функцију. Ако се ове смернице омогуће, корисник неће моћи да искључи подешавање које омогућава пријављивање преко прегледача. Да бисте управљали доступношћу Chrome синхронизације, користите смернице „SyncDisabled“.
-
-      Ако су ове смернице подешене на „Наметни пријављивање преко прегледача“, кориснику се приказује дијалог за бирање налога преко ког ће се пријавити и користити прегледач. Тиме се осигурава примена смерница повезаних са налогом за управљане налоге. Ово подразумевано укључује Chrome синхронизацију за налог, осим у случају када је синхронизација онемогућена од стране администратора домена или преко смерница „SyncDisabled“. Подразумевана вредност за BrowserGuestModeEnabled биће подешена на „Нетачно“. Имајте на уму да ће постојећи профили на које нисте пријављени бити закључани и недоступни када се ове смернице омогуће. Додатне информације потражите у чланку центра за помоћ: https://support.google.com/chrome/a/answer/7572556.
-
-      Ако смернице нису подешене, корисник може да одлучи да ли ће омогућити опцију за пријављивање преко прегледача и користи је према свом нахођењу.</translation>
 <translation id="3911737181201537215">Ове смернице немају утицаја на евидентирање које обавља Android.</translation>
 <translation id="391531815696899618">Када су подешене на Тачно, онемогућавају синхронизовање са Google диском у <ph name="PRODUCT_OS_NAME" /> апликацији Датотеке. У том случају, на Google диск се не отпремају никакви подаци.
 
@@ -2049,7 +2040,7 @@
 <translation id="4777805166623621364">
       Ово подешавање, SitePerProcess, може да се користи за спречавање корисника да онемогуће подразумевано понашање изоловања свих сајтова. Имајте у виду да смернице IsolateOrigins могу да буду корисне и за изоловање додатних, прецизније одређених извора.
       Ако омогућите ове смернице, корисници не могу да онемогуће подразумевано понашање при ком се сваки сајт покреће у сопственом процесу.
-      Ако не конфигуришете или онемогућите ове смернице, корисник може да онемогући изоловање сајта
+      Ако не конфигуришете ове смернице или их онемогућите, корисник може да онемогући изоловање сајта
       (нпр. помоћу уноса „Онемогући изоловање сајта“ у оквиру chrome://flags).  Ако онемогућите ове смернице и/или их не конфигуришете, тиме не искључујете изоловање сајтова.
       Препоручујемо да у верзији 76 система <ph name="PRODUCT_OS_NAME" /> и новијим подесите и смернице за уређај <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> на исту вредност. Ако се вредности које наводе једне и друге смернице не подударају, може да дође до кашњења при уласку у корисничку сесију док се примењује вредност коју наводе смернице за корисника.
 
@@ -2200,7 +2191,7 @@
 <translation id="5148753489738115745">Омогућава вам да одредите додатне параметре који се користе када <ph name="PRODUCT_FRAME_NAME" /> покреће <ph name="PRODUCT_NAME" />.
 
           Ако ове смернице не буду подешене, биће коришћена подразумевана командна линија.</translation>
-<translation id="5152787786897382519">Chromium и Google Chrome имају неке групе међусобно зависних смерница које омогућавају контролу над функцијом. Те скупове представљају следеће групе смерница. Пошто смернице могу да имају више извора, примењују се само смернице из извора са највишим приоритетом. Вредности које потичу из извора нижег приоритета у истој групи се занемарују. Редослед приоритета је дефинисан у документу <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
+<translation id="5152787786897382519">Chromium и Google Chrome имају неке групе међусобно зависних смерница које омогућавају контролу над одређеном функцијом. Те скупове представљају следеће групе смерница. Пошто смернице могу да имају више извора, примењују се само смернице из извора са највишим приоритетом. Вредности које потичу из извора нижег приоритета у истој групи се занемарују. Редослед приоритета је дефинисан у документу <ph name="POLICY_PRIORITY_DOC_URL" />.</translation>
 <translation id="5159469559091666409">Колико често се шаљу мрежни пакети за надгледање, у милисекундама.
 
       Ако нисте подесили ове смернице, подразумевана учесталост је 3 минута. Највећа учесталост
@@ -2741,7 +2732,7 @@
 <translation id="5983708779415553259">Подразумевано понашање за сајтове који се не налазе ни у једном пакету садржаја</translation>
 <translation id="5997543603646547632">Подразумевано коришћење 24-часовног часовника</translation>
 <translation id="5997846976342452720">Наводе да ли проналазач додатних компонената треба да буде онемогућен (застарело)</translation>
-<translation id="5998198091336830580">Ове смернице су део следеће атомске групе (примењују се само смернице из извора са највишим приоритетом који је присутан у групи):</translation>
+<translation id="5998198091336830580">Ове смернице су део следеће ћелијске групе (примењују се само смернице из извора са највишим приоритетом који је присутан у групи):</translation>
 <translation id="6017568866726630990">Приказује дијалог штампања система уместо прегледа за штампу.
 
       Када је ово подешавање омогућено, <ph name="PRODUCT_NAME" /> отвара дијалог штампања система уместо уграђеног прегледа за штампу када корисник захтева штампање странице.
@@ -3825,7 +3816,7 @@
 
           Погледајте и смернице „CookiesAllowedForUrls“ и „CookiesSessionOnlyForUrls“. Имајте на уму да међу овим трима смерницама не смеју да постоје неусаглашени URL обрасци – није наведено које смернице имају предност.</translation>
 <translation id="8099880303030573137">Време до мировања када се користи батерија</translation>
-<translation id="8101381354936029836">Атомска група смерница:</translation>
+<translation id="8101381354936029836">Ћелијска група смерница:</translation>
 <translation id="8102913158860568230">Подразумевано подешавање MediaStream-а</translation>
 <translation id="8104186956182795918">Омогућавају вам да подесите да ли је веб-сајтовима дозвољено да приказују слике. Приказивање слика се може дозволити или забранити за све веб-сајтове.
 
diff --git a/components/policy/resources/policy_templates_sv.xtb b/components/policy/resources/policy_templates_sv.xtb
index 206990c..cd98b054 100644
--- a/components/policy/resources/policy_templates_sv.xtb
+++ b/components/policy/resources/policy_templates_sv.xtb
@@ -1632,15 +1632,6 @@
       Om principen inte anges används standardkatalogen för nedladdning (för den aktuella plattformen) i <ph name="PRODUCT_NAME" />.
 
       En lista med variabler som kan användas finns på https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Den här principen styr webbläsarens inloggningsfunktion. Med den kan du ange om användaren kan logga in i <ph name="PRODUCT_NAME" /> med sitt konto och använda kontorelaterade tjänster som Chrome Sync.
-
-      Om principen är inställt på Inaktivera inloggning i webbläsaren kan användaren inte logga in i webbläsaren och använda kontobaserade tjänster. Då går det inte att använda funktioner på webbläsarnivå, till exempel Chrome Sync. Om användaren var inloggad när principen ställdes in på Inaktiverad loggas han eller hon ut nästa gång de kör Chrome, men användarens data i den lokala profilen sparas, till exempel bokmärken och lösenord. Användaren kan fortfarande logga in i och använda Googles webbtjänster, till exempel Gmail.
-
-      Om principen är inställd på Aktivera inloggning i webbläsare kan användaren logga in i webbläsaren och loggas in automatiskt i webbläsaren när han eller hon är inloggad i Googles webbtjänster, till exempel Gmail. När användaren är inloggad i webbläsaren lagras hans eller hennes kontouppgifter i webbläsaren. Det innebär däremot inte att Chrome Sync aktiveras som standard, användaren måste välja att aktivera funktionen separat. Om den här principen aktiveras förhindras användare från att inaktivera inställningen som tillåter inloggning i webbläsare. Om du vill styra tillgängligheten för funktionen Chrome Sync använder du principen SyncDisabled.
-
-      Om principen är inställd på Tvinga inloggning i webbläsare visas en dialogruta där användaren måste välja och logga in på ett konto om han eller hon vill använda webbläsaren. På så vis tillämpas och verkställs alltid principer för hanterade konton. Chrome Sync aktiveras som standard för kontot, förutom när synkronisering har inaktiverats av domänens administratör eller med principen SyncDisabled. Standardvärdet för BrowserGuestModeEnabled ställs in på Falskt. Observera att när principen aktiveras låses befintliga, osignerade profiler och är därefter inte längre tillgängliga. Du hittar mer information i den här artikeln i hjälpcentret: https://support.google.com/chrome/a/answer/7572556.
-
-      Om principen inte är inställd på något värde kan användare välja om han eller hon vill aktivera inloggning i webbläsare och använda den på det sätt han eller hon vill.</translation>
 <translation id="3911737181201537215">Den här principen har ingen inverkan på loggningen i Android.</translation>
 <translation id="391531815696899618">När inställningen här är Sant inaktiveras Google Drive-synkronisering i appen Filer i <ph name="PRODUCT_OS_NAME" />. Då överförs ingen data till Google Drive.
 
diff --git a/components/policy/resources/policy_templates_sw.xtb b/components/policy/resources/policy_templates_sw.xtb
index 2d7bb54..d946707 100644
--- a/components/policy/resources/policy_templates_sw.xtb
+++ b/components/policy/resources/policy_templates_sw.xtb
@@ -1606,15 +1606,6 @@
       Kama hutaweka sera hii, <ph name="PRODUCT_NAME" /> itatumia saraka chaguomsingi ya kawaida (inayolenga mfumo mahususi).
 
      Ili kupata orodha ya vigezo vinavyoweza kutumika, angalia https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Sera hii hudhibiti hali ya kuingia katika akaunti ya kivinjari. Inakusaidia kubainisha kama mtumiaji anaweza kuingia katika akaunti ya <ph name="PRODUCT_NAME" /> kwa kutumia akaunti yake na atumie huduma zinazohusiana kama Usawazishaji wa Chrome.
-
-      Ikiwa sera imewekwa kuwa "Zima kuingia katika akaunti ya kivinjari" basi mtumiaji hawezi kuingia katika akaunti ya kivinjari na atumie huduma zinazotegemea akaunti. Katika hali hii vipengele vya kiwango cha kivinjari kama vile Usawazishaji wa Chrome havitatumika na havitapatikana. Kama mtumiaji alikuwa ameingia katika akaunti na sera imewekwa kuwa "Imezimwa" ataondolewa kwenye akaunti wakati unaofuata atakapotekeleza Chrome lakini data yake ya wasifu kwenye kifaa kama vile alamisho, nenosiri n.k. itawekwa salama. Mtumiaji bado ataweza kuingia katika akaunti na atumie huduma za wavuti za Google kama Gmail.
-
-      Ikiwa sera imewekwa kuwa "Ruhusu kuingia katika akaunti ya kivinjari," basi mtumiaji anakubaliwa kuingia katika akaunti ya kivinjari na anaingia katika akaunti ya kivinjari kiotomatiki anapoingia katika akaunti ya huduma za wavuti za Google kama Gmail. Kuingia katika akaunti ya kivinjari kuna maana kuwa maelezo ya akaunti ya mtumiaji yatahifadhiwa na kivinjari. Hata hivyo, haina maana kuwa Usawazishaji wa Chrome utawashwa kwa chaguomsingi; lazima mtumiaji achague kuingia ili aweze kutumia kipengele hiki. Kuweka sera hii kutamzuia mtumiaji kuzima mipangilio inayoruhusu kuingia katika akaunti ya kivinjari. Ili kudhibiti upatikanaji wa usawazishaji wa Chrome, tumia sera ya "SyncDisabled".
-
-      Ikiwa sera imewekwa kuwa "Lazimisha kuingia katika akaunti ya kivinjari" kidirisha cha kuchagua akaunti huwasilishwa kwa mtumiaji na anapaswa kuchagua na aingie katika akaunti ili kutumia kivinjari. Hii inahakikisha kwamba sera zinazohusishwa na akaunti zinazosimamiwa zimetumika na kutekelezwa. Kwa chaguomsingi hii huwasha kipengele cha Usawazishaji wa Chrome kwenye akaunti, isipokuwa ambapo usawazishaji ulizimwa na msimamizi wa kikoa au kupitia sera ya "SyncDisabled". Thamani chaguomsingi ya BrowserGuestModeEnabled itawekwa kuwa sivyo. Kumbuka kwamba wasifu uliopo ambao haujatumiwa kuingia katika akaunti utafungwa na hautaweza kufikiwa baada ya kuwasha sera hii. Kwa maelezo zaidi, angalia makala ya kituo cha usaidizi: https://support.google.com/chrome/a/answer/7572556.
-
-      Ikiwa sera hii haijawekwa basi mtumiaji anaweza kuamua kama anataka kuwasha chaguo la kuingia katika akaunti ya kivinjari na kuitumia anavyopenda.</translation>
 <translation id="3911737181201537215">Sera hii haiathiri uwekaji kumbukumbu wa Android.</translation>
 <translation id="391531815696899618">Huzima usawazishaji wa Hifadhi ya Google katika programu ya Faili ya <ph name="PRODUCT_OS_NAME" /> unapowekwa kuwa Ndivyo. Kwa hivyo, hakuna data inayopakiwa kwenye Hifadhi ya Google.
 
diff --git a/components/policy/resources/policy_templates_ta.xtb b/components/policy/resources/policy_templates_ta.xtb
index b5ac096..5f45b0f 100644
--- a/components/policy/resources/policy_templates_ta.xtb
+++ b/components/policy/resources/policy_templates_ta.xtb
@@ -1575,15 +1575,6 @@
      இந்தக் கொள்கையை அமைக்கவில்லை எனில், வழக்கமான இயல்பு கோப்பகத்தை (இயங்குதளம் சார்ந்தது) <ph name="PRODUCT_NAME" /> பயன்படுத்தும்.
 
       பயன்படுத்தக்கூடிய மாறிகளின் பட்டியலைப் பார்க்க, https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables எனும் இணைப்பிற்குச் செல்லவும்.</translation>
-<translation id="3904459740090265495">இந்தக் கொள்கை, உலாவியின் உள்நுழைவுச் செயல்பாட்டைக் கட்டுப்படுத்தும். இதன் மூலம் பயனர் அவரது கணக்கைப் பயன்படுத்தி <ph name="PRODUCT_NAME" /> இல் உள்நுழையவும் Chrome ஒத்திசைவு போன்ற கணக்கு தொடர்பான சேவைகளைப் பயன்படுத்தவும் அனுமதிப்பதா என்பதை நீங்கள் கட்டுப்படுத்தலாம்.
-
-      கொள்கையை "உலாவி உள்நுழைவை முடக்கு" என்று அமைத்திருந்தால் பயனரால் உலாவியில் உள்நுழையவும் கணக்கு அடிப்படையிலான சேவைகளைப் பயன்படுத்தவும் முடியாது. இதனால் Chrome ஒத்திசைவு போன்ற உலாவி நிலையில் கிடைக்கும் அம்சங்களைப் பயன்படுத்த முடியாது, அவை கிடைக்காது. பயனர் உள்நுழைந்திருந்து, கொள்கையை "முடக்கப்பட்டது" என்று அமைத்திருந்தால் அவர் அடுத்த முறை Chromeமை இயக்கும்போது வெளியேற்றப்படுவார், எனினும் புக்மார்க்குகள், கடவுச்சொற்கள் போன்ற அவரது அகக் கணக்குத் தரவு அகற்றப்படாது. பயனரால் தொடர்ந்து Gmail போன்ற Google இணையச் சேவைகளில் உள்நுழையவும் அவற்றைப் பயன்படுத்தவும் முடியும்.
-
-      கொள்கையை "உலாவி உள்நுழைவை இயக்கு" என்று அமைத்திருந்தால் உலாவியில் உள்நுழைய பயனர் அனுமதிக்கப்படுவதோடு அவர் Gmail போன்ற Google இணையச் சேவைகளில் உள்நுழைந்திருக்கும்போது தானாகவே உலாவியில் உள்நுழைக்கப்படுவார். உலாவியில் உள்நுழைந்திருப்பது என்றால் பயனரின் கணக்கு விவரத்தை உலாவி சேமித்து வைத்திருக்கும் என்று பொருள். எனினும் Chrome ஒத்திசைவு இயல்புநிலையில் இயக்கப்பட்டிருக்காது, இந்த அம்சத்தைப் பயன்படுத்த, பயனர் அதைத் தனியாகத் தேர்வு செய்ய வேண்டும். இந்தக் கொள்கையை இயக்கினால் உலாவி உள்நுழைவை அனுமதிக்கும் அமைப்பைப் பயனரால் முடக்க முடியாது. Chrome ஒத்திசைவின் கிடைக்கும்நிலையைக் கட்டுப்படுத்த "SyncDisabled" கொள்கையைப் பயன்படுத்தவும்.
-
-     கொள்கையை " உலாவி உள்நுழைவை வலியுறுத்து" என்று அமைத்திருந்தால் பயனருக்கு ஒரு கணக்குத் தேர்வு உரையாடல் காண்பிக்கப்படும், அவர் உலாவியைப் பயன்படுத்த அதில் ஒரு கணக்கைத் தேர்வு செய்து உள்நுழைய வேண்டும். இதன் மூலம், நிர்வகிக்கப்படும் கணக்குகளுக்கு அந்தக் கணக்குடன் தொடர்புடைய கொள்கைகள் பயன்படுத்தப்படுகின்றன மற்றும் அமலாக்கப்படுகின்றன என்பது உறுதிப்படுத்தப்படும். டொமைன் நிர்வாகியால் அல்லது "SyncDisabled" கொள்கை மூலம் ஒத்திசைவு முடக்கப்பட்டிருந்தால் தவிர, இது இயல்பாக அந்தக் கணக்கிற்கு Chrome ஒத்திசைவை இயக்கும். BrowserGuestModeEnabledன் இயல்பு மதிப்பு 'தவறு' என அமைக்கப்படும். இந்தக் கொள்கையை இயக்கிய பிறகு, தற்போதுள்ள கையொப்பமிடாத கணக்குகள் முடக்கப்பட்டு, அவற்றை அணுக முடியாது என்பதை நினைவில் கொள்ளவும். மேலும் தகவலைப் பெற உதவி மையக் கட்டுரையைப் பார்க்கவும்: https://support.google.com/chrome/a/answer/7572556.
-
-      இந்தக் கொள்கை அமைக்கப்படாவிட்டால் உலாவி உள்நுழைவு விருப்பத்தை இயக்குவதா என்பதைப் பயனரே முடிவு செய்யலாம்.</translation>
 <translation id="3911737181201537215">Android மூலம் உள்நுழைந்திருப்பதால் இந்தக் கொள்கை எந்த மாற்றத்தையும் ஏற்படுத்தாது</translation>
 <translation id="391531815696899618">சரி என அமைக்கப்படும்போது <ph name="PRODUCT_OS_NAME" /> கோப்புகள் பயன்பாட்டில் உள்ள Google இயக்கக ஒத்திசைவு முடக்கப்படுகிறது. இந்தச் சமயங்களில் Google இயக்ககத்திற்கு எந்தத் தரவும் பதிவேற்றப்படாது.
 
diff --git a/components/policy/resources/policy_templates_te.xtb b/components/policy/resources/policy_templates_te.xtb
index 80a35b09..50e87534 100644
--- a/components/policy/resources/policy_templates_te.xtb
+++ b/components/policy/resources/policy_templates_te.xtb
@@ -1578,15 +1578,6 @@
       మీరు ఈ విధానాన్ని సెట్ చేయకుంటే, <ph name="PRODUCT_NAME" /> దీని సాధారణ డిఫాల్ట్-డైరెక్టరీని (ప్లాట్‌ఫామ్‌కు సంబంధించి నిర్దిష్టమైనది) ఉపయోగిస్తుంది.
 
       ఉపయోగించగల వేరియబుల్‌ల జాబితా కోసం https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables చూడండి.</translation>
-<translation id="3904459740090265495">ఈ విధానం బ్రౌజర్ సైన్-ఇన్ ప్రవర్తనను నియంత్రిస్తుంది. వినియోగదారు వారి ఖాతాతో <ph name="PRODUCT_NAME" />కి సైన్ ఇన్ చేయవచ్చో లేదో, Chrome సమకాలీకరణ లాంటి ఖాతా సంబంధిత సేవలను ఉపయోగించవచ్చో లేదో పేర్కొనడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది .
-
-      ఒకవేళ విధానాన్ని "బ్రౌజర్ సైన్-ఇన్‌ని నిలిపివేయి"కి సెట్ చేస్తే, వినియోగదారు బ్రౌజర్‌కు సైన్ ఇన్ చేసి, ఖాతా సంబంధిత సేవలను ఉపయోగించలేరు. ఇలాంటి సందర్భంలో, Chrome సమకాలీకరణ లాంటి బ్రౌజర్ స్థాయి ఫీచర్‌లను ఉపయోగించలేరు, ఇవి అందుబాటులో ఉండవు. ఒకవేళ వినియోగదారు సైన్ ఇన్ చేసి ఉండి, విధానాన్ని "నిలిపివేయబడింది"కి సెట్ చేసి ఉంటే, వారు Chromeని ఉపయోగించిన తర్వాతిసారి సైన్ అవుట్ చేయబడతారు, కానీ వారి స్థానిక ప్రొఫైల్ డేటా, అంటే బుక్‌మార్క్‌లు, పాస్‌వర్డ్‌లు మొదలైనవి భద్రపరచబడతాయి. ఇప్పటికీ Gmail లాంటి Google వెబ్ సేవలకు వినియోగదారు సైన్ ఇన్ చేయగలరు మరియు ఉపయోగించగలరు.
-
-      ఒకవేళ విధానాన్ని "బ్రౌజర్ సైన్-ఇన్‌ని ప్రారంభించు"కి సెట్ చేస్తే, వినియోగదారు బ్రౌజర్‌లో సైన్ చేయడానికి అనుమతించబడతారు, అలాగే Gmail లాంటి Google వెబ్ సేవలలో సైన్ ఇన్ చేసి ఉన్నప్పుడు బ్రౌజర్‌లో ఆటోమేటిక్‌గా సైన్ ఇన్ చేయబడతారు. బ్రౌజర్‌లో సైన్ ఇన్ చేసి ఉండటం అంటే, వినియోగదారు ఖాతా సమాచారం బ్రౌజర్ ద్వారా నిల్వ చేయబడుతుంది. అయితే, దీనర్థం Chrome సమకాలీకరణ డిఫాల్ట్‌గా ఆన్ అవుతుందని కాదు; వినియోగదారులు ఈ ఫీచర్‌ని ఉపయోగించడానికి తప్పనిసరిగా వేరుగా ఎంచుకోవాలి. ఈ విధానాన్ని ప్రారంభించడం వలన వినియోగదారు బ్రౌజర్ సైన్-ఇన్‌ని అనుమతించే సెట్టింగ్‌ను ఆఫ్ చేయకుండా నిరోధించబడతారు. Chrome సమకాలీకరణ లభ్యతను నియంత్రించడానికి, "SyncDisabled" విధానాన్ని నిలిపివేయండి.
-
-      ఒకవేళ విధానాన్ని "బ్రౌజర్ సైన్-ఇన్‌ని నిర్బంధించు"కి సెట్ చేస్తే, వినియోగదారుకు ఖాతా ఎంపిక డైలాగ్ చూపబడుతుంది, బ్రౌజర్‌ను ఉపయోగించేందుకు ఒక ఖాతాను ఎంచుకుని, ఆ ఖాతాలోకి సైన్ ఇన్ చేయాల్సి ఉంటుంది. దీని ప్రకారం నిర్వహిత ఖాతాల విషయంలో ఖాతాతో అనుబంధించిన విధానాలు వర్తిస్తాయి మరియు అమలు అవుతాయి. ఇది డిఫాల్ట్‌గా ఖాతాకు Chrome సమకాలీకరణను ఆన్ చేస్తుంది, కానీ డొమైన్ నిర్వాహకులు లేదా "SyncDisabled" విధానం ద్వారా నిలిపివేసి ఉంటే పని చేయదు. BrowserGuestModeEnabled డిఫాల్ట్ విలువ తప్పుకు సెట్ చేయబడుతుంది. ఈ విధానాన్ని ప్రారంభించిన తర్వాత ఇప్పటికే ఉన్న సంతకం చేయని ప్రొఫైల్‌లు లాక్ చేయబడతాయని, యాక్సెస్ చేయలేని విధంగా అవుతాయని గుర్తుంచుకోండి. మరింత సమాచారం కోసం, ఈ సహాయ కేంద్ర కథనాన్ని చూడండి: https://support.google.com/chrome/a/answer/7572556.
-
-      ఈ విధానాన్ని సెట్ చేయకుంటే, బ్రౌజర్ సైన్ ఇన్ ఎంపికను ప్రారంభించాలో లేదో వినియోగదారు నిర్ణయించుకోవచ్చు, వాళ్లకు తగినట్లు భావించేది ఉపయోగించవచ్చు.</translation>
 <translation id="3911737181201537215">Android ద్వారా చేసిన లాగింగ్‌పై ఈ విధానం ఎలాంటి ప్రభావాన్ని చూపదు.</translation>
 <translation id="391531815696899618">ఒప్పున‌కు సెట్ చేసినప్పుడు <ph name="PRODUCT_OS_NAME" /> ఫైల్స్ యాప్‌లో Google డిస్క్ సింక్‌ను నిలిపివేస్తుంది. ఆ సందర్భంలో, Google డిస్క్‌కు డేటా ఏదీ అప్‌లోడ్ చేయబడదు.
 
@@ -2019,8 +2010,8 @@
 <translation id="4777805166623621364">
       ఈ SitePerProcess సెట్టింగ్, అన్ని సైట్‌లను వేరు చేసే డిఫాల్ట్ ప్రవర్తనను వినియోగదారులు నిలిపివేయకుండా అడ్డుకోవడానికి ఉపయోగించబడవచ్చు. ఈ IsolateOrigins విధానం అదనంగా అందించబడే, మరింత సూక్ష్మస్థాయి ప్రారంభ స్థానాలను వేరు చేయడానికి కూడా ఉపయోగించబడవచ్చని గుర్తుంచుకోండి.
       ఈ విధానాన్ని ప్రారంభించినట్లయితే, ప్రతి సైట్ దాని స్వంత ప్రక్రియను అమలు చేసే డిఫాల్ట్ ప్రవర్తనను వినియోగదారులు నిలిపివేయలేరు.
-      ఈ విధానాన్ని కన్ఫిగర్ చేయకుంటే లేదా నిలిపివేస్తే, సైట్ ఐసోలేషన్‌ను వినియోగదారు నిలిపివేయగలుగుతారు
-      (ఉదా. chrome://flagsలో "సైట్ ఐసోలేషన్‌ను నిలిపివేయి" నమోదును ఉపయోగించడం).  ఈ విధానాన్ని నిలిపివేసే విధంగా సెట్ చేసినా మరియు/లేదా కన్ఫిగర్ చేయకుండా వదిలేసినా, సైట్ ఐసోలేషన్ ఆఫ్ చేయబడదు.
+      ఈ విధానాన్ని కాన్ఫిగర్ చేయకుంటే లేదా నిలిపివేస్తే, సైట్ ఐసోలేషన్‌ను వినియోగదారు నిలిపివేయగలుగుతారు
+      (ఉదా. chrome://flagsలో "సైట్ ఐసోలేషన్‌ను నిలిపివేయి" నమోదును ఉపయోగించడం).  ఈ విధానాన్ని నిలిపివేసే విధంగా సెట్ చేసినా మరియు/లేదా కాన్ఫిగర్ చేయకుండా వదిలేసినా, సైట్ ఐసోలేషన్ ఆఫ్ చేయబడదు.
       <ph name="PRODUCT_OS_NAME" /> వెర్షన్ 76, అంతకంటే పాత వాటిలో, '<ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" />' పరికర విధానాన్ని కూడా అదే విలువకు సెట్ చేయాల్సిందిగా సిఫార్సు చేయడమైనది. ఈ రెండు విధానాల ద్వారా పేర్కొన్న విలువలు సరిపోలకుంటే, వినియోగదారు విధానం ద్వారా పేర్కొన్న విలువను వర్తింపజేస్తున్నప్పుడు వినియోగదారు సెషన్‌లోకి ప్రవేశించే సమయంలో ఆలస్యం కావచ్చు.
 
       గమనిక: ఈ విధానం Androidలో వర్తించదు. Androidలో SitePerProcessను ప్రారంభించడానికి, SitePerProcessAndroid విధాన సెట్టింగ్‌ను ఉపయోగించండి.
@@ -2167,7 +2158,7 @@
 <translation id="5148753489738115745"><ph name="PRODUCT_FRAME_NAME" /> <ph name="PRODUCT_NAME" />ను ప్రారంభించినప్పుడు ఉపయోగించే అదనపు పారామీటర్‌లను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తుంది.
 
           ఈ విధానాన్ని సెట్ చేయకపోతే డిఫాల్ట్ ఆదేశ పంక్తి ఉపయోగించబడుతుంది.</translation>
-<translation id="5152787786897382519">Chromium మరియు Google Chrome రెండింటిలో కూడా ఒక ఫీచర్‌ను నియంత్రించడానికి ఒకదానిపై ఒకటి ఆధారపడే కొన్ని విధాన సమూహాలు ఉంటాయి. ఈ సెట్‌లు కింది విధానా సమూహాలుగా సూచించబడతాయి. విధానాలలో బహుళ మూలాధారాలు ఉండవచ్చని పేర్కొన్నప్పటికీ, కేవలం అధిక ప్రాధాన్యత మూలాధారం నుండి అందించిన విలువలు మాత్రమే వర్తింపజేయబడతాయి. అదే సమూహంలో, తక్కువ ప్రాధాన్యతల గల మూలాధారం నుండి అందించబడే విలువలు విస్మరించబడతాయి. ప్రాధాన్యత క్రమం అన్నది <ph name="POLICY_PRIORITY_DOC_URL" />లో పేర్కొన్న విధంగా నిర్వచించబడుతుంది.</translation>
+<translation id="5152787786897382519">Chromium మరియు Google Chrome రెండింటిలో కూడా ఒక ఫీచర్‌ను నియంత్రించడానికి ఒక దానిపై ఒకటి ఆధారపడే కొన్ని విధాన సమూహాలు ఉంటాయి. ఈ సెట్‌లు కింది విధానా సమూహాలుగా సూచించబడతాయి. విధానాలలో బహుళ మూలాధారాలు ఉండవచ్చని పేర్కొన్నప్పటికీ, కేవలం అధిక ప్రాధాన్యత మూలాధారం నుండి అందించిన విలువలు మాత్రమే వర్తింపజేయబడతాయి. అదే సమూహంలో, తక్కువ ప్రాధాన్యతల గల మూలాధారం నుండి అందించబడే విలువలు విస్మరించబడతాయి. ప్రాధాన్యత క్రమం అన్నది <ph name="POLICY_PRIORITY_DOC_URL" />లో పేర్కొన్న విధంగా నిర్వచించబడుతుంది.</translation>
 <translation id="5159469559091666409">పర్యవేక్షిత నెట్‌వర్క్ ప్యాకెట్‌లు పంపబడే సమయ వ్యవధి, మిల్లీసెకన్లలో ఉండాలి.
 
       ఈ విధానాన్ని సెట్ చేయకుంటే, డిఫాల్ట్ సమయ వ్యవధి 3 నిమిషాలు ఉంటుంది. దీని కనీస సమయ వ్యవధి 30 సెకన్లు, గరిష్ట వ్యవధి 24 గంటలు - ఈ పరిధిని విలువలు దాటితే నిర్బంధంగా ఈ పరిధిలోకి మార్చబడతాయి.</translation>
@@ -3955,7 +3946,7 @@
 
       ఈ విధానం ప్రకారం పోర్ట్‌లలో HTTP కోసం 80, HTTPS కోసం 443 కాకుండా HTTP/0.9 ప్రారంభించబడుతుంది.
 
-      ఈ విధానం డిఫాల్ట్‌గా నిలిపివేసి ఉంటుంది. దీనిని ప్రారంభిస్తే, https://crbug.com/600352 భద్రతాపరమైన సమస్యకు వినియోగదారులు తమ స్వంత నిర్ణయం తీసుకోగలరు.
+      ఈ విధానం డిఫాల్ట్‌గా నిలిపివేసి ఉంటుంది. దీనిని ప్రారంభిస్తే, https://crbug.com/600352 అనే భద్రతా సమస్యపై వినియోగదారులు తమ స్వంత నిర్ణయం తీసుకోగలరు.
 
       ఈ విధానం ఎంటర్‌ప్రైజ్‌లు ప్రస్తుతం ఉపయోగిస్తున్న సర్వర్‌లను HTTP/0.9 నుండి తరలించేందుకు అవకాశం ఇవ్వడానికి ఉద్దేశించినది, ఇది భవిష్యత్తులో నిలిపివేయబడుతుంది.
 
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index 62108d9..ad296d9 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -1587,15 +1587,6 @@
       หากไม่ได้กำหนดนโยบายนี้ <ph name="PRODUCT_NAME" /> จะใช้ไดเรกทอรีเริ่มต้นปกติของตน (เฉพาะแพลตฟอร์ม)
 
       ไปที่ https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables เพื่อดูตัวแปรที่สามารถใช้ได้</translation>
-<translation id="3904459740090265495">นโยบายนี้ควบคุมลักษณะการทำงานในการลงชื่อเข้าใช้ของเบราว์เซอร์ โดยให้คุณระบุว่าผู้ใช้จะลงชื่อเข้าใช้ <ph name="PRODUCT_NAME" /> ด้วยบัญชีของตนและใช้บริการที่เกี่ยวข้องกับบัญชี เช่น การซิงค์ของ Chrome ได้หรือไม่
-
-      หากตั้งค่านโยบายเป็น "ปิดใช้การลงชื่อเข้าใช้เบราว์เซอร์" ผู้ใช้จะลงชื่อเข้าใช้เบราว์เซอร์และใช้บริการที่เกี่ยวข้องกับบัญชีไม่ได้ ในกรณีนี้ฟีเจอร์ระดับเบราว์เซอร์อย่างเช่น การซิงค์ของ Chrome จะใช้งานไม่ได้และไม่มีให้ใช้งาน หากผู้ใช้ลงชื่อเข้าใช้และนโยบายนี้ตั้งค่าเป็น "ปิดใช้" ผู้ใช้จะต้องออกจากระบบในครั้งถัดไปที่เรียกใช้ Chrome แต่ข้อมูลโปรไฟล์ในเครื่องของผู้ใช้ เช่น บุ๊กมาร์ก รหัสผ่าน ฯลฯ จะยังคงอยู่ ผู้ใช้จะยังคงลงชื่อเข้าใช้และใช้บริการเว็บของ Google เช่น Gmail ได้ต่อไป
-
-      หากตั้งค่านโยบายเป็น "เปิดใช้การลงชื่อเข้าใช้เบราว์เซอร์" ผู้ใช้จะได้รับอนุญาตให้ลงชื่อเข้าใช้เบราว์เซอร์และจะมีการลงชื่อเข้าใช้เบราว์เซอร์โดยอัตโนมัติเมื่อลงชื่อเข้าใช้บริการเว็บของ Google เช่น Gmail การลงชื่อเข้าใช้เบราว์เซอร์หมายถึงเบราว์เซอร์จะเก็บข้อมูลบัญชีของผู้ใช้ไว้ อย่างไรก็ตาม ไม่ได้หมายความว่าระบบจะเปิดใช้การซิงค์ของ Chrome ไว้โดยค่าเริ่มต้น ผู้ใช้ต้องเลือกใช้ฟีเจอร์นี้แยกต่างหาก การเปิดใช้นโยบายนี้จะป้องกันไม่ให้ผู้ใช้ปิดการตั้งค่าที่อนุญาตให้ลงชื่อเข้าใช้เบราว์เซอร์ หากต้องการควบคุมความพร้อมให้บริการของฟีเจอร์การซิงค์ของ Chrome ให้ใช้นโยบาย "SyncDisabled"
-
-      หากตั้งค่านโยบายนี้เป็น "บังคับให้ลงชื่อเข้าใช้เบราว์เซอร์" ระบบจะแสดงกล่องโต้ตอบการเลือกบัญชีและบังคับให้ผู้ใช้ต้องเลือกลงชื่อเข้าใช้บัญชีเพื่อที่จะใช้เบราว์เซอร์ ในกรณีของบัญชีที่จัดการ วิธีนี้ช่วยให้แน่ใจว่าจะมีการใช้งานและบังคับใช้นโยบายที่เกี่ยวข้องกับบัญชีนั้น การตั้งค่าดังกล่าวจะเปิดฟีเจอร์การซิงค์ของ Chrome สำหรับบัญชีนั้นไว้โดยค่าเริ่มต้น ยกเว้นกรณีที่ผู้ดูแลระบบโดเมนปิดใช้การซิงค์หรือการซิงค์ถูกปิดผ่านทางนโยบาย "SyncDisabled" ค่าเริ่มต้นของ BrowserGuestModeEnabled จะตั้งไว้เป็น "เท็จ" โปรดทราบว่าโปรไฟล์ที่ไม่ได้ลงชื่อเข้าใช้ซึ่งมีอยู่จะถูกล็อกและเข้าถึงไม่ได้หลังจากเปิดใช้นโยบายนี้แล้ว ดูข้อมูลเพิ่มเติมได้จากบทความในศูนย์ช่วยเหลือที่ https://support.google.com/chrome/a/answer/7572556
-
-      หากไม่ได้ตั้งค่านโยบายนี้ ผู้ใช้จะตัดสินใจเองได้ว่าจะเปิดใช้ตัวเลือกการลงชื่อเข้าใช้เบราว์เซอร์หรือไม่และใช้งานได้ตามที่เห็นสมควร</translation>
 <translation id="3911737181201537215">นโยบายนี้ไม่มีผลต่อการบันทึกที่ดำเนินการโดย Android</translation>
 <translation id="391531815696899618">ปิดใช้การซิงค์ Google ไดรฟ์ในแอป Files ของ <ph name="PRODUCT_OS_NAME" /> เมื่อตั้งค่าเป็น True ในกรณีดังกล่าวจะไม่มีการอัปโหลดข้อมูลไปยัง Google ไดรฟ์
 
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index f24d6d31..f91cd218 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -1614,15 +1614,6 @@
       Bu politikayı ayarlamazsanız, <ph name="PRODUCT_NAME" /> kendi olağan varsayılan dizinini (platforma özgü) kullanır.
 
       Kullanılabilecek değişkenlerin listesi için https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables adresine bakın.</translation>
-<translation id="3904459740090265495">Bu politika, tarayıcının oturum açma davranışını denetler. Kullanıcının hesabıyla <ph name="PRODUCT_NAME" /> ürününde oturum açıp açamayacağını ve Chrome senkronizasyonu gibi hesapla ilgili hizmetleri kullanıp kullanamayacağını belirtmenize olanak tanır.
-
-      Politika, "Tarayıcıda oturum açmayı devre dışı bırak" olarak ayarlanmışsa, kullanıcı tarayıcıda oturum açamaz ve hesaba dayalı hizmetleri kullanamaz. Bu durumda, Chrome senkronizasyonu gibi tarayıcı seviyesindeki özellikler kullanılamaz. Kullanıcı oturum açmışsa ve politika "Devre dışı" olarak ayarlanmışsa, Chrome'u bir sonraki çalıştırmalarında oturumları kapatılır. Ancak yer işaretleri, şifreler gibi yerel profil verileri korunur. Kullanıcı yine de Gmail gibi Google web hizmetlerinde oturum açabilir ve bu hizmetleri kullanabilir.
-
-      Politika "Tarayıcıda oturum açmayı etkinleştir" olarak ayarlanmışsa, kullanıcı tarayıcıda oturum açabilir ve Gmail gibi Google web hizmetlerinde oturum açtığında otomatik olarak tarayıcıda oturum açar. Tarayıcıda oturum açmak demek kullanıcının hesap bilgilerinin tarayıcı tarafından saklanması demektir. Ancak bu Chrome senkronizasyonunun varsayılan olarak açılacağı anlamına gelmez. Kullanıcının bu özelliği kullanabilmesi için ayrıca kaydolması gerekir. Bu politikanın etkinleştirilmesi kullanıcının tarayıcıda oturum açmaya imkan tanıyan ayarı kapatmasını engelleyecektir. Chrome senkronizasyonunun kullanılabilirliğini denetlemek için "SyncDisabled" politikasını kullanın.
-
-      Politika "Tarayıcıda oturum açmaya zorla" olarak ayarlanmışsa, kullanıcıya bir hesap seçimi iletişim kutusu sunulur ve tarayıcıyı kullanmak üzere bir hesabı seçmesi ve bu hesapta oturum açması gerekir. Bu sayede yönetilen hesaplarda hesapla ilişkili politikalar uygulanır ve zorunlu tutulur. Varsayılan olarak bu ayar, senkronizasyonun alan yöneticisi veya "SyncDisabled" politikası tarafından devre dışı bırakılması haricindeki durumlarda, hesap için Chrome senkronizasyonunu etkinleştirir. BrowserGuestModeEnabled'ın varsayılan değeri "false" (yanlış) olarak ayarlanır. Bu politika etkinleştirildikten sonra mevcut imzasız profillerin kilitleneceğini ve erişilemez hale geleceğini unutmayın. Daha fazla bilgi edinmek için yardım merkezi makalesine bakabilirsiniz: https://support.google.com/chrome/a/answer/7572556.
-
-      Bu politika ayarlanmazsa kullanıcı tarayıcıda oturum açma seçeneğini etkinleştirmek isteyip istemediğine karar verebilir ve uygun gördüğü şekilde kullanabilir.</translation>
 <translation id="3911737181201537215">Bu politikanın Android tarafından gerçekleştirilen günlük kaydı üzerinde hiçbir etkisi yoktur.</translation>
 <translation id="391531815696899618">Doğru seçeneğine ayarlanırsa <ph name="PRODUCT_OS_NAME" /> Files uygulamasında Google Drive'ın senkronizasyonunu devre dışı bırakır. Bu durumda Google Drive'a veri yüklenmez.
 
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 42667e80..85b40d6 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -1604,15 +1604,6 @@
       Якщо це правило не налаштовано, <ph name="PRODUCT_NAME" /> завантажує файли в каталог за умовчанням (залежно від платформи).
 
       Перелік змінних, які можна використовувати, наведено на сторінці https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables.</translation>
-<translation id="3904459740090265495">Це правило визначає потребу входу в обліковий запис у веб-переглядачі. Воно дає змогу вказати, чи може користувач входити в <ph name="PRODUCT_NAME" /> за допомогою свого облікового запису та використовувати пов’язані з ним функції, як-от синхронізацію Chrome.
-
-       Якщо для правила вибрано варіант "Вимкнути вхід в обліковий запис у веб-переглядачі", користувач не зможе входити в обліковий запис і користуватися відповідними сервісами. Функції веб-переглядача, як-от синхронізація Chrome, будуть недоступними. Якщо користувач увійшов в обліковий запис, тоді як для правила вибрано значення "Disabled", під час наступного запуску Chrome буде виконано вихід із системи. Проте локальні дані профілю користувача, як-от закладки, паролі тощо, буде збережено. Користувач зможе входити у веб-служби Google (наприклад, Gmail) і користуватися ними.
-
-      Якщо для правила вибрано варіант "Увімкнути вхід в обліковий запис у веб-переглядачі", користувач зможе входити в обліковий запис у веб-переглядачі. Це також відбуватиметься автоматично, коли він входитиме у веб-служби Google, як-от Gmail. Коли виконано вхід, дані облікового запису зберігаються у веб-переглядачі. Однак синхронізація Chrome не вмикається за умовчанням. Користувачу потрібно зробити це самостійно. Якщо ввімкнути це правило, користувач не зможе його вимкнути. Щоб керувати доступністю синхронізації Chrome, скористайтеся правилом SyncDisabled.
-
-      Якщо для правила вибрано варіант "Змушувати користувачів входити в обліковий запис у веб-переглядачі", на екрані з’являтиметься діалогове вікно з пропозицією вибрати обліковий запис і ввійти в нього, щоб користуватися веб-переглядачем. Цей варіант підходить для керованих облікових записів, оскільки забезпечує застосування правил, пов’язаних з окремими обліковими записами. Синхронізацію Chrome увімкнено за умовчанням для облікового запису, окрім випадків, коли її вимкнено адміністратором домену або правилом SyncDisabled. Для правила BrowserGuestModeEnabled за умовчанням буде вибрано значення "False". Зверніть увагу, що після ввімкнення цього правила наявні профілі, у які не виконано вхід, буде заблоковано. Докладніше читайте в цій довідковій статті: https://support.google.com/chrome/a/answer/7572556.
-
-      Якщо це правило не налаштовано, користувач зможе самостійно вмикати або вимикати опцію входу в обліковий запис у веб-переглядачі.</translation>
 <translation id="3911737181201537215">Це правило не впливає на вхід в обліковий запис із додатка Android.</translation>
 <translation id="391531815696899618">Вимикає синхронізацію Google Диска в додатку Файли в <ph name="PRODUCT_OS_NAME" />, якщо для правила встановлено значення "true". У такому випадку на Google Диск не завантажуються жодні дані.
 
@@ -2045,7 +2036,7 @@
       Якщо це правило ввімкнено, користувачі не зможуть вимкнути поведінку за умовчанням, за якої кожний сайт відкривається окремо.
       Якщо це правило не налаштовано або вимкнено, користувачі зможуть вимикати ізоляцію сайтів
       (наприклад, скориставшись записом "Disable site isolation" у chrome://flags).  Якщо для цього правила встановити значення disabled та/або не налаштувати його, ізоляцію сайтів не буде вимкнено.
-      У <ph name="PRODUCT_OS_NAME" /> 76 або старішої версії радимо вибрати таке саме значення для правила <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" />. Інакше сеанс користувача може починатись із затримкою, оскільки застосовуватиметься значення, указане в політиці користувача.
+      У <ph name="PRODUCT_OS_NAME" /> 76 або старішої версії радимо вибрати таке саме значення для правила <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" />. Інакше сеанс користувача може починатись із затримкою, оскільки застосовуватиметься значення, указане в правилах для користувача.
 
       ПРИМІТКА: це правило не застосовується на Android. Щоб увімкнути SitePerProcess на Android, скористайтеся правилом SitePerProcessAndroid.
       </translation>
@@ -2717,7 +2708,7 @@
 <translation id="5983708779415553259">Поведінка за умовчанням для сайтів, яких немає в жодному пакеті вмісту</translation>
 <translation id="5997543603646547632">Використовувати 24-годинний формат годинника за умовчанням</translation>
 <translation id="5997846976342452720">Указати, чи потрібно вимкнути інструмент пошуку плагінів (не підтримується)</translation>
-<translation id="5998198091336830580">Це правило є частиною цієї атомної групи (застосовуються лише правила з джерела з найвищим пріоритетом у групі):</translation>
+<translation id="5998198091336830580">Це правило є частиною цієї елементарної групи (застосовуються лише правила з джерела з найвищим пріоритетом у групі):</translation>
 <translation id="6017568866726630990">Відображається системне діалогове вікно для друку, а не вікно попереднього перегляду.
 
       Якщо це налаштування ввімкнено, і користувач хоче надрукувати сторінку, <ph name="PRODUCT_NAME" /> відкриває системне діалогове вікно для друку, а не вбудоване вікно попереднього перегляду.
@@ -3450,7 +3441,7 @@
 
       Це правило працює, лише коли ввімкнено <ph name="CHROME_REPORTING_EXTENSION_NAME" />, а комп’ютер зареєстровано відповідно до правила <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" />.</translation>
 <translation id="7359307926583593395">
-      Це правило діє для екрана входу. Також перегляньте правило <ph name="SITE_PER_PROCESS_POLICY_NAME" />, яке застосовується до сеансу користувача. Радимо встановити для обох правил однакове значення. Інакше сеанс користувача може починатись із затримкою, оскільки застосовуватиметься значення, указане в політиці користувача.
+      Це правило діє для екрана входу. Також перегляньте правило <ph name="SITE_PER_PROCESS_POLICY_NAME" />, яке застосовується до сеансу користувача. Радимо встановити для обох правил однакове значення. Інакше сеанс користувача може починатись із затримкою, оскільки застосовуватиметься значення, указане в правилах для користувача.
       </translation>
 <translation id="737655323154569539">Обмежує розмір сторінки друку. Якщо це правило не налаштоване або порожнє, вважається, що воно не має обмежень.</translation>
 <translation id="7389872682701720082">Якщо це налаштування ввімкнено, завжди запускаються актуальні плагіни.
@@ -3777,7 +3768,7 @@
 
           Також перегляньте правила CookiesAllowedForUrls і CookiesSessionOnlyForUrls. Зауважте, що ці три правила не повинні містити конфліктних шаблонів URL-адрес, оскільки не вказано пріоритетне правило.</translation>
 <translation id="8099880303030573137">Затримка через неактивність, коли використовується заряд акумулятора</translation>
-<translation id="8101381354936029836">Атомна група правила:</translation>
+<translation id="8101381354936029836">Елементарна група правила:</translation>
 <translation id="8102913158860568230">Налаштування потоку медіаданих за умовчанням</translation>
 <translation id="8104186956182795918">Дає змогу вказувати, чи можуть веб-сайти показувати зображення. Показ зображень можна дозволити чи заборонити для всіх веб-сайтів.
 
@@ -3995,7 +3986,7 @@
 
       Це правило дає можливість підприємствам вимкнути протокол HTTP/0.9 для наявних серверів. У майбутньому його буде видалено.
 
-      Якщо це правило не налаштовано, протокол HTTP/0.9 вимикається для нестандартних портів.</translation>
+      Якщо це правило не налаштовано, протокол HTTP/0.9 вимикається для портів, не заданих за умовчанням.</translation>
 <translation id="8507835864888987300">Установлює цільову версію для автоматичних оновлень.
 
       Указує префікс цільової версії, до якої <ph name="PRODUCT_OS_NAME" /> має оновитися. Якщо на пристрої використовується версія, нижча за вказаний префікс, її буде замінено останньою версією з цим префіксом. Якщо на пристрої вже встановлено останню версію, дії залежать від значення правила <ph name="DEVICE_ROLLBACK_TO_TARGET_VERSION_POLICY_NAME" />. Формат префіксу працює покомпонентно, як показано на прикладі нижче.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index 130c8713..84fc617 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -1624,15 +1624,6 @@
       Nếu bạn không đặt chính sách này, <ph name="PRODUCT_NAME" /> sẽ sử dụng thư mục mặc định thông thường (dành riêng cho nền tảng).
 
       Hãy xem https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables để biết danh sách các biến có thể được sử dụng.</translation>
-<translation id="3904459740090265495">Chính sách này kiểm soát hành vi đăng nhập của trình duyệt. Chính sách cho phép bạn chỉ định xem người dùng có thể đăng nhập vào <ph name="PRODUCT_NAME" /> bằng tài khoản của họ và sử dụng các dịch vụ liên quan đến tài khoản như tính năng đồng bộ hóa trên Chrome hay không.
-
-      Nếu bạn đặt chính sách này thành "Vô hiệu hóa đăng nhập vào trình duyệt", thì người dùng sẽ không thể đăng nhập vào trình duyệt và sử dụng các dịch vụ dựa trên tài khoản. Trong trường hợp này, các tính năng ở cấp trình duyệt như đồng bộ hóa trên Chrome sẽ không sử dụng được và không có sẵn. Nếu người dùng đã đăng nhập và chính sách này được đặt thành "Tắt", thì họ sẽ bị đăng xuất khi chạy Chrome vào lần sau. Tuy nhiên, các dữ liệu hồ sơ cục bộ của họ như dấu trang, mật khẩu, v.v. sẽ vẫn giữ nguyên. Người dùng vẫn có thể đăng nhập và sử dụng các dịch vụ web của Google như Gmail.
-
-      Nếu bạn đặt chính sách này thành "Cho phép đăng nhập vào trình duyệt", thì người dùng sẽ được phép đăng nhập vào trình duyệt và tự động được đăng nhập vào trình duyệt khi họ đăng nhập vào các dịch vụ web của Google như Gmail. Được đăng nhập vào trình duyệt nghĩa là thông tin tài khoản của người dùng sẽ do trình duyệt lưu giữ. Tuy nhiên, điều đó không có nghĩa là tính năng đồng bộ hóa trên Chrome sẽ được bật theo mặc định; người dùng phải chọn sử dụng tính năng này riêng biệt. Việc bật chính sách này sẽ ngăn không cho người dùng tắt tùy chọn cài đặt cho phép đăng nhập vào trình duyệt. Để kiểm soát việc có cho phép tính năng đồng bộ hóa trên Chrome hay không, hãy sử dụng chính sách "SyncDisabled".
-
-      Nếu bạn đặt chính sách này thành "Buộc đăng nhập vào trình duyệt", thì người dùng sẽ thấy hộp thoại lựa chọn tài khoản và phải chọn rồi đăng nhập vào tài khoản để sử dụng trình duyệt. Điều này đảm bảo rằng các chính sách liên kết với tài khoản sẽ được áp dụng và thực thi (đối với tài khoản được quản lý). Theo mặc định, việc này sẽ bật tính năng đồng bộ hóa trên Chrome cho tài khoản, trừ khi quản trị viên miền hoặc chính sách "SyncDisabled" đã tắt tính năng đó. Giá trị mặc định của BrowserGuestModeEnabled sẽ được đặt thành false. Lưu ý rằng các hồ sơ chưa ký hiện tại sẽ bị khóa và không truy cập được sau khi bật chính sách này. Để biết thêm thông tin, hãy xem bài viết trên trung tâm trợ giúp: https://support.google.com/chrome/a/answer/7572556.
-
-      Nếu bạn không đặt chính sách này, thì người dùng có thể quyết định xem họ có muốn bật tùy chọn đăng nhập vào trình duyệt và sử dụng khi thấy phù hợp hay không.</translation>
 <translation id="3911737181201537215">Chính sách này không ảnh hưởng đến việc ghi nhật ký do Android thực hiện.</translation>
 <translation id="391531815696899618">Tắt đồng bộ hóa Google Drive trong ứng dụng Tệp <ph name="PRODUCT_OS_NAME" /> khi được đặt thành True. Trong trường hợp đó, không có dữ liệu nào được tải lên Google Drive.
 
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index fde94d034..1a2b9a7 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -1539,15 +1539,6 @@
       如果您未设置此政策,<ph name="PRODUCT_NAME" /> 将会使用其惯用的默认目录(因平台而异)。
 
       有关可用变量的列表,请访问 https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables。</translation>
-<translation id="3904459740090265495">此政策可控制浏览器的登录行为。它允许您指定用户是否可使用其帐号登录 <ph name="PRODUCT_NAME" /> 并使用与帐号相关的服务(如 Chrome 同步)。
-
-      如果此政策设为“禁止登录浏览器”,用户便无法登录浏览器并使用帐号相关服务。在这种情况下,用户无法使用也无法访问浏览器级功能(如 Chrome 同步)。如果用户已登录并且此政策设为“停用”,则用户将在下次运行 Chrome 时退出登录,但是他们的本地个人资料数据(如书签、密码等)会保留。用户仍能够登录并使用 Google 网络服务(如 Gmail)。
-
-      如果此政策设为“允许登录浏览器”,用户将可以登录浏览器,并且会在登录 Google 网络服务(如 Gmail)后自动登录浏览器。登录浏览器意味着浏览器将保存用户的帐号信息,但并不意味着 Chrome 同步功能将默认开启;用户必须单独选择启用此功能。启用此政策会阻止用户关闭允许登录浏览器的设置。要控制 Chrome 同步功能的可用性,请使用“SyncDisabled”政策。
-
-      如果此政策设为“强制登录浏览器”,系统将向用户显示帐号选择对话框,并且用户必须选择并登录某个帐号才能使用浏览器。这样可确保针对受管理的帐号应用并强制执行与相应帐号关联的政策。默认情况下,此设置会为帐号开启 Chrome 同步功能,但同步功能已被网域管理员停用或已通过“SyncDisabled”政策停用的情况除外。BrowserGuestModeEnabled 的默认值将设为 false。请注意,启用此政策后,现有的未登录个人资料将处于锁定且不可访问的状态。有关详情,请参阅帮助中心文章:https://support.google.com/chrome/a/answer/7572556。
-
-      如果此政策未设置,用户可以决定是否要启用浏览器登录选项并随意使用该选项。</translation>
 <translation id="3911737181201537215">此政策对 Android 完成的记录没有任何影响。</translation>
 <translation id="391531815696899618">当此政策设为 True 时,在 <ph name="PRODUCT_OS_NAME" />的“文件”应用中停用 Google 云端硬盘同步功能。在这种情况下,系统不会将任何数据上传到 Google 云端硬盘。
 
@@ -2117,7 +2108,7 @@
 <translation id="5148753489738115745">可让您指定在 <ph name="PRODUCT_FRAME_NAME" />启动 <ph name="PRODUCT_NAME" />时所使用的其他参数。
 
           如果未设置此政策,系统将会使用默认命令行。</translation>
-<translation id="5152787786897382519">Chromium 和 Google Chrome 均有一些政策组需要通过相互依赖来共同控制某项功能。这些集合由以下政策组表示。如果相关政策有多个来源,系统仅会应用来自最高优先级来源的值。同一组中来自较低优先级来源的值会被忽略。<ph name="POLICY_PRIORITY_DOC_URL" /> 中定义了优先级顺序。</translation>
+<translation id="5152787786897382519">Chromium 和 Google Chrome 均有一些政策组,其中的政策以相互依赖的方式来控制某项功能。这些集合由以下政策组表示。如果相关政策有多个来源,系统仅会应用来源优先级最高的值。同一组中来源优先级较低的值会被忽略。<ph name="POLICY_PRIORITY_DOC_URL" /> 中定义了优先级顺序。</translation>
 <translation id="5159469559091666409">发送监控网络数据包的频率(以毫秒为单位)。
 
       如果此政策未设置,则默认间隔为 3 分钟。系统所允许的最短间隔为 30 秒,最长间隔为 24 小时(低于 30 秒的值将被视为 30 秒,高于 24 小时的值将被视为 24 小时)。</translation>
@@ -2626,7 +2617,7 @@
 <translation id="5983708779415553259">非任何内容包内的网站的默认行为</translation>
 <translation id="5997543603646547632">默认情况下,使用24小时制</translation>
 <translation id="5997846976342452720">指定是否应停用插件查找器(已弃用)</translation>
-<translation id="5998198091336830580">此政策是下面这个原子政策组的一部分(系统仅会应用该组中来自最高优先级来源的政策):</translation>
+<translation id="5998198091336830580">此政策是下面这个原子政策组的一部分(系统仅会应用该组中来源优先级最高的政策):</translation>
 <translation id="6017568866726630990">显示系统打印对话框而非打印预览。
 
       启用此设置后,当用户请求打印某个页面时,<ph name="PRODUCT_NAME" /> 将打开系统打印对话框而非内置打印预览。
@@ -3863,11 +3854,11 @@
 <translation id="8499172469244085141">默认设置(用户可以覆盖)</translation>
 <translation id="849962487677588458">此政策已被弃用,预定会在 Chrome 78 中被移除,且无替代政策。
 
-      此政策用于在除 80 (HTTP) 和 443 (HTTPS) 以外的端口上启用 HTTP/0.9。
+      此政策用于在 80 (HTTP) 和 443 (HTTPS) 以外的端口上启用 HTTP/0.9。
 
       此政策默认处于停用状态;如果启用,则会使用户面临安全问题 https://crbug.com/600352。
 
-      此政策旨在让企业能够有机会使现有服务器弃用 HTTP/0.9,日后会被移除。
+      此政策旨在让企业能够使现有服务器迁移到 HTTP/0.9 以外的协议版本,日后会被移除。
 
       如果未设置此政策,非默认端口上将会停用 HTTP/0.9。</translation>
 <translation id="8507835864888987300">为自动更新设定目标版本。
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index c9285f1..021dc12 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -1579,15 +1579,6 @@
       如果不設定這項政策,<ph name="PRODUCT_NAME" /> 將使用一般的預設目錄 (依平台區分)。
 
       如需可使用的變數清單,請參閱 https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables。</translation>
-<translation id="3904459740090265495">這項政策可控制瀏覽器的登入行為。你可以指定使用者是否能用個人帳戶登入 <ph name="PRODUCT_NAME" /> 並使用帳戶相關服務 (例如 Chrome 同步功能)。
-
-      如果將這項政策設為「禁止登入瀏覽器」,使用者便無法登入瀏覽器及使用帳戶提供的服務。在這種情況下,瀏覽器層級的功能 (例如 Chrome 同步功能) 是無法使用的。將這項政策設為「禁止登入瀏覽器」之後,原先已登入瀏覽器的使用者會在下次執行 Chrome 時被登出,不過,他們的本機設定檔資料 (例如書籤、密碼等) 仍會保留在裝置上。使用者仍然可以登入並使用 Gmail 之類的 Google 網路服務。
-
-      如果將這項政策設為「允許登入瀏覽器」,使用者便能登入瀏覽器,而且當他們登入 Gmail 之類的 Google 網路服務時,也會自動登入瀏覽器。在登入瀏覽器的狀態下,瀏覽器會保留使用者的帳戶資料。不過,Chrome 同步功能不會預設開啟,使用者必須另外選擇啟用這項功能。啟用這項政策後,使用者將無法關閉允許登入瀏覽器的設定。如要管理能否使用 Chrome 同步功能,請使用「SyncDisabled」政策。
-
-      如果將這項政策設為「強制登入瀏覽器」,使用者便會看到帳戶選項對話方塊,而且必須選擇要登入哪個帳戶使用瀏覽器。這樣可確保系統在所有受管理的帳戶中套用並強制執行相關政策。根據預設,這會開啟帳戶的 Chrome 同步功能 (除非網域管理員已停用同步功能,或是另外設定了「SyncDisabled」政策)。BrowserGuestModeEnabled 的預設值將設為 False。請注意,啟用這項政策後,未經簽署的現有設定檔會遭到鎖定,無法再使用。詳情請參閱說明中心文章:https://support.google.com/chrome/a/answer/7572556.
-
-      如果未設定這項政策,使用者則可以決定是否要啟用瀏覽器登入選項,並視情況使用。</translation>
 <translation id="3911737181201537215">這項政策對 Android 應用程式執行的登入作業沒有影響。</translation>
 <translation id="391531815696899618">如果你設為 Ture,<ph name="PRODUCT_OS_NAME" />的「檔案」應用程式就會停用 Google 雲端硬碟同步功能。這種情形下,系統無法將資料上傳至 Google 雲端硬碟。
 
@@ -2005,8 +1996,7 @@
 <translation id="4777805166623621364">
       這項 SitePerProcess 設定可在系統預設為隔離所有網站時,禁止使用者停用這項行為。請注意,IsolateOrigins 政策也可用於隔離其他更精細的來源。
       如果啟用這項政策,當系統預設為以獨立程序執行每個網站時,使用者將無法停用這項行為。
-      如果不設定或停用這項政策,使用者可以選擇停用網站隔離功能
-      (例如,使用 chrome://flags 中的「停用網站隔離」選項)。即使將這項政策設為停用和/或不設定,也不會關閉網站隔離功能。
+      如果不設定或停用這項政策,使用者可以選擇停用網站隔離功能,例如:使用 chrome://flags 中的 Disable site isolation (停用網站隔離) 選項。即使將這項政策設為停用和/或不設定,也不會關閉網站隔離功能。
       在 <ph name="PRODUCT_OS_NAME" /> 76 以下版本中,建議你將 <ph name="DEVICE_LOGIN_SCREEN_SITE_PER_PROCESS_POLICY_NAME" /> 裝置政策設定為相同的值。如果兩個政策指定的值不相符,進入使用者工作階段時,系統可能會因為套用使用者政策指定的值而發生延遲。
 
       注意:這項政策不適用於 Android。如要在 Android 上啟用 SitePerProcess,請使用 SitePerProcessAndroid 政策設定。
@@ -2155,7 +2145,7 @@
 <translation id="5148753489738115745">允許你指定 <ph name="PRODUCT_FRAME_NAME" /> 啟動 <ph name="PRODUCT_NAME" /> 時使用的其他參數。
 
           如果未設定這項政策,系統會使用預設命令列。</translation>
-<translation id="5152787786897382519">Chromium 和 Google Chrome 有部分政策群組具有相依關係,以共同管控特定功能。這些組合如下列政策群組所示。由於政策可以具有多個來源,系統只會套用優先順序最高的來源所提供的值。系統會忽略相同群組中優先順序較低的來源所提供的值。請參閱 <ph name="POLICY_PRIORITY_DOC_URL" /> 瞭解來源的優先順序。</translation>
+<translation id="5152787786897382519">Chromium 和 Google Chrome 有部分政策群組具有相依關係,依此共同管控特定功能。這些組合如下列政策群組所示。由於政策可能具有多個來源,系統只會套用群組中最高優先來源所提供的值,忽略同個群組中優先順序較低的來源所提供的值。請參閱 <ph name="POLICY_PRIORITY_DOC_URL" /> 瞭解來源的優先順序。</translation>
 <translation id="5159469559091666409">監控網路封包的傳送頻率 (以毫秒為單位)。
 
       如果未設定這項政策,預設間隔為 3 分鐘。
@@ -2668,7 +2658,7 @@
 <translation id="5983708779415553259">非任何內容套件中網站的預設行為</translation>
 <translation id="5997543603646547632">預設使用 24 小時制時鐘</translation>
 <translation id="5997846976342452720">指定是否要停用外掛程式尋找工具 (已淘汰)</translation>
-<translation id="5998198091336830580">這項政策屬於下列不可部分完成群組 (系統僅會套用群組中優先順序最高的來源所設定的政策):</translation>
+<translation id="5998198091336830580">這項政策屬於下列不可部分完成的群組 (系統僅會套用群組中最高優先來源所設定的政策):</translation>
 <translation id="6017568866726630990">顯示系統列印對話方塊 (而不是列印預覽)。
 
       如果你啟用這項設定,當使用者要求列印網頁時,<ph name="PRODUCT_NAME" /> 就會開啟系統列印對話方塊,而不是內建的列印預覽。
@@ -3374,7 +3364,7 @@
 
       只有在已啟用 <ph name="CHROME_REPORTING_EXTENSION_NAME" /> 且已透過 <ph name="MACHINE_LEVEL_USER_CLOUD_POLICY_ENROLLMENT_TOKEN_POLICY_NAME" /> 註冊電腦的情況下,這項政策才會有作用。</translation>
 <translation id="7359307926583593395">
-      這項政策適用於登入畫面。另請查看適用於使用者工作階段的 <ph name="SITE_PER_PROCESS_POLICY_NAME" /> 政策。建議你為這兩項政策設定相同的值。如果兩者的值不相符,進入使用者工作階段時,系統可能會因為套用使用者政策指定的值而發生延遲。
+      這項政策適用於登入畫面。另請查看適用於使用者工作階段的 <ph name="SITE_PER_PROCESS_POLICY_NAME" /> 政策。建議你為這兩項政策設定相同的值,如果兩者的值不相符,進入使用者工作階段時,系統可能會因為套用使用者政策指定的值而發生延遲。
       </translation>
 <translation id="737655323154569539">限制列印頁面大小。未設定這項政策或將設定留空,系統會視為未設限制。</translation>
 <translation id="7389872682701720082">如果啟用這項設定,系統會一律執行未過期的外掛程式。
@@ -3694,7 +3684,7 @@
 
           另請查看「CookiesAllowedForUrls」和「CookiesSessionOnlyForUrls」政策。請注意,這三項政策的網址模式不得有衝突,否則系統將無法判定應優先遵循哪一項政策。</translation>
 <translation id="8099880303030573137">在電池供電環境下執行時的閒置延遲時間</translation>
-<translation id="8101381354936029836">政策不可部分完成群組:</translation>
+<translation id="8101381354936029836">政策不可部分完成的群組:</translation>
 <translation id="8102913158860568230">預設媒體串流設定</translation>
 <translation id="8104186956182795918">讓你設定網站是否可顯示圖片。你可以允許或禁止所有網站顯示圖片。
 
diff --git a/components/policy/tools/template_writers/policy_template_generator.py b/components/policy/tools/template_writers/policy_template_generator.py
index 43f38b6a6..bedb927 100755
--- a/components/policy/tools/template_writers/policy_template_generator.py
+++ b/components/policy/tools/template_writers/policy_template_generator.py
@@ -22,8 +22,12 @@
 
   def _ImportMessage(self, msg_txt):
     msg_txt = msg_txt.decode('utf-8')
-    lines = msg_txt.split('\n')
+    # Replace the placeholder of app name.
+    msg_txt = msg_txt.replace('$1', self._config['app_name'])
+    msg_txt = msg_txt.replace('$2', self._config['os_name'])
+    msg_txt = msg_txt.replace('$3', self._config['frame_name'])
 
+    lines = msg_txt.split('\n')
     # Strip any extra leading spaces, but keep useful indentation:
     min_leading_spaces = min(list(self._IterateLeadingSpaces(lines)) or [0])
     if min_leading_spaces > 0:
diff --git a/components/policy/tools/template_writers/policy_template_generator_unittest.py b/components/policy/tools/template_writers/policy_template_generator_unittest.py
index b6570eb..9b5fd3e 100755
--- a/components/policy/tools/template_writers/policy_template_generator_unittest.py
+++ b/components/policy/tools/template_writers/policy_template_generator_unittest.py
@@ -257,6 +257,44 @@
 
     self.do_test(policy_defs_mock, LocalMockWriter())
 
+  def testPolicyTexts(self):
+    # Test that GUI messages of policies all get placeholders replaced.
+    policy_data_mock = {
+        'policy_definitions': [
+            {
+                'name': 'Group1',
+                'type': 'group',
+                'desc': '',
+                'caption': '',
+                'policies': ['Policy1'],
+            },
+            {
+                'name': 'Policy1',
+                'caption': '1. app_name -- $1',
+                'label': '2. os_name -- $2',
+                'desc': '3. frame_name -- $3',
+                'type': 'string',
+                'supported_on': []
+            },
+        ]
+    }
+
+    class LocalMockWriter(mock_writer.MockWriter):
+
+      def WritePolicy(self, policy):
+        if policy['name'] == 'Policy1':
+          self.tester.assertEquals(policy['caption'],
+                                   '1. app_name -- _app_name')
+          self.tester.assertEquals(policy['label'], '2. os_name -- _os_name')
+          self.tester.assertEquals(policy['desc'],
+                                   '3. frame_name -- _frame_name')
+        elif policy['name'] == 'Group1':
+          pass
+        else:
+          self.tester.fail()
+
+    self.do_test(policy_data_mock, LocalMockWriter())
+
   def testIntEnumTexts(self):
     # Test that GUI messages are assigned correctly to int-enums
     # (aka dropdown menus).
diff --git a/components/policy/tools/template_writers/writers/plist_strings_writer_unittest.py b/components/policy/tools/template_writers/writers/plist_strings_writer_unittest.py
index 91c39f43..83bdf789 100755
--- a/components/policy/tools/template_writers/writers/plist_strings_writer_unittest.py
+++ b/components/policy/tools/template_writers/writers/plist_strings_writer_unittest.py
@@ -26,7 +26,7 @@
         'placeholders': [],
         'messages': {
           'mac_chrome_preferences': {
-            'text': 'Chromium preferen"ces',
+            'text': '$1 preferen"ces',
             'desc': 'blah'
           }
         }
@@ -48,7 +48,7 @@
         'placeholders': [],
         'messages': {
           'mac_chrome_preferences': {
-            'text': 'Chromium preferen"ces',
+            'text': '$1 preferen"ces',
             'desc': 'blah'
           }
         }
@@ -88,7 +88,7 @@
         'placeholders': [],
         'messages': {
           'mac_chrome_preferences': {
-            'text': 'Preferences of Google Chrome',
+            'text': 'Preferences of $1',
             'desc': 'blah'
           }
         }
@@ -131,7 +131,7 @@
         'placeholders': [],
         'messages': {
           'mac_chrome_preferences': {
-            'text': 'Preferences of Chromium',
+            'text': 'Preferences of $1',
             'desc': 'blah'
           }
         }
@@ -176,7 +176,7 @@
         'placeholders': [],
         'messages': {
           'mac_chrome_preferences': {
-            'text': 'Preferences of Chromium',
+            'text': 'Preferences of $1',
             'desc': 'blah'
           }
         }
@@ -233,7 +233,7 @@
         'placeholders': [],
         'messages': {
           'mac_chrome_preferences': {
-            'text': 'Preferences of Chromium',
+            'text': 'Preferences of $1',
             'desc': 'blah'
           }
         }
@@ -286,7 +286,7 @@
         'placeholders': [],
         'messages': {
           'mac_chrome_preferences': {
-            'text': 'Google Chrome preferences',
+            'text': '$1 preferences',
             'desc': 'blah'
           }
         }
@@ -340,7 +340,7 @@
         'placeholders': [],
         'messages': {
           'mac_chrome_preferences': {
-            'text': 'Google Chrome preferences',
+            'text': '$1 preferences',
             'desc': 'blah'
           }
         }
@@ -383,7 +383,7 @@
         'placeholders': [],
         'messages': {
           'mac_chrome_preferences': {
-            'text': 'Google Chrome preferences',
+            'text': '$1 preferences',
             'desc': 'blah'
           }
         }
diff --git a/components/previews/content/hint_cache.cc b/components/previews/content/hint_cache.cc
index 7c856229..0bab45b 100644
--- a/components/previews/content/hint_cache.cc
+++ b/components/previews/content/hint_cache.cc
@@ -7,8 +7,8 @@
 #include <algorithm>
 
 #include "base/bind.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/previews/content/hint_update_data.h"
-#include "components/previews/core/previews_experiments.h"
 #include "url/gurl.h"
 
 namespace previews {
@@ -117,7 +117,8 @@
     expiry_time += base::TimeDelta().FromSeconds(
         get_hints_response->max_cache_duration().seconds());
   } else {
-    expiry_time += params::StoredFetchedHintsFreshnessDuration();
+    expiry_time +=
+        optimization_guide::features::StoredFetchedHintsFreshnessDuration();
   }
   std::unique_ptr<HintUpdateData> fetched_hints_update_data =
       CreateUpdateDataForFetchedHints(update_time, expiry_time);
diff --git a/components/previews/content/hint_cache_store_unittest.cc b/components/previews/content/hint_cache_store_unittest.cc
index cce4eca..c227b1e 100644
--- a/components/previews/content/hint_cache_store_unittest.cc
+++ b/components/previews/content/hint_cache_store_unittest.cc
@@ -13,13 +13,13 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "components/leveldb_proto/testing/fake_db.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_prefs.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/scoped_user_pref_update.h"
 #include "components/prefs/testing_pref_service.h"
 #include "components/previews/content/hint_update_data.h"
 #include "components/previews/content/proto/hint_cache.pb.h"
-#include "components/previews/core/previews_experiments.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
@@ -1199,8 +1199,8 @@
 
   std::unique_ptr<HintUpdateData> update_data =
       hint_store()->CreateUpdateDataForFetchedHints(
-          update_time,
-          update_time + params::StoredFetchedHintsFreshnessDuration());
+          update_time, update_time + optimization_guide::features::
+                                         StoredFetchedHintsFreshnessDuration());
   ASSERT_TRUE(update_data);
   SeedFetchedUpdateData(update_data.get(), update_hint_count);
   UpdateFetchedHints(std::move(update_data));
@@ -1242,7 +1242,9 @@
   // Add fetched hints to the store that overlap with the same hosts as the
   // initial set.
   update_data = hint_store()->CreateUpdateDataForFetchedHints(
-      update_time, update_time + params::StoredFetchedHintsFreshnessDuration());
+      update_time,
+      update_time +
+          optimization_guide::features::StoredFetchedHintsFreshnessDuration());
 
   optimization_guide::proto::Hint hint;
   hint.set_key("domain2.org");
@@ -1359,7 +1361,9 @@
   EXPECT_TRUE(hint_store()->FindHintEntryKey(host_suffix, &hint_entry_key));
 
   update_data = hint_store()->CreateUpdateDataForFetchedHints(
-      update_time, update_time + params::StoredFetchedHintsFreshnessDuration());
+      update_time,
+      update_time +
+          optimization_guide::features::StoredFetchedHintsFreshnessDuration());
   optimization_guide::proto::Hint new_hint;
   new_hint.set_key("domain1.org");
   new_hint.set_key_representation(optimization_guide::proto::HOST_SUFFIX);
@@ -1465,7 +1469,8 @@
   // Also seed a fetched hint into the store.
   update_data = hint_store()->CreateUpdateDataForFetchedHints(
       base::Time().Now(),
-      base::Time().Now() + params::StoredFetchedHintsFreshnessDuration());
+      base::Time().Now() +
+          optimization_guide::features::StoredFetchedHintsFreshnessDuration());
   optimization_guide::proto::Hint hint;
   hint.set_key("domain2.org");
   hint.set_key_representation(optimization_guide::proto::HOST_SUFFIX);
diff --git a/components/previews/content/hint_cache_unittest.cc b/components/previews/content/hint_cache_unittest.cc
index 3632ca9..8cdb85d8 100644
--- a/components/previews/content/hint_cache_unittest.cc
+++ b/components/previews/content/hint_cache_unittest.cc
@@ -14,9 +14,9 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_task_environment.h"
 #include "components/leveldb_proto/content/proto_database_provider_factory.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/previews/content/hint_cache_store.h"
 #include "components/previews/content/proto_database_provider_test_base.h"
-#include "components/previews/core/previews_experiments.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
@@ -605,7 +605,7 @@
   LoadHint("host.domain.org");
   histogram_tester.ExpectTimeBucketCount(
       "Previews.OptimizationGuide.HintCache.FetchedHint.TimeToExpiration",
-      params::StoredFetchedHintsFreshnessDuration(), 1);
+      optimization_guide::features::StoredFetchedHintsFreshnessDuration(), 1);
 }
 
 }  // namespace
diff --git a/components/previews/content/hint_update_data_unittest.cc b/components/previews/content/hint_update_data_unittest.cc
index 9e903c2..0bf0493 100644
--- a/components/previews/content/hint_update_data_unittest.cc
+++ b/components/previews/content/hint_update_data_unittest.cc
@@ -10,9 +10,9 @@
 #include "base/macros.h"
 #include "base/time/time.h"
 #include "base/version.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/previews/content/proto/hint_cache.pb.h"
-#include "components/previews/core/previews_experiments.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace previews {
@@ -56,8 +56,8 @@
 
   std::unique_ptr<HintUpdateData> fetch_update =
       HintUpdateData::CreateFetchedHintUpdateData(
-          update_time,
-          update_time + params::StoredFetchedHintsFreshnessDuration());
+          update_time, update_time + optimization_guide::features::
+                                         StoredFetchedHintsFreshnessDuration());
   fetch_update->MoveHintIntoUpdateData(std::move(hint1));
   EXPECT_FALSE(fetch_update->component_version().has_value());
   EXPECT_TRUE(fetch_update->fetch_update_time().has_value());
diff --git a/components/previews/content/hints_fetcher.cc b/components/previews/content/hints_fetcher.cc
index 92ef0ca..f1ba354e 100644
--- a/components/previews/content/hints_fetcher.cc
+++ b/components/previews/content/hints_fetcher.cc
@@ -10,9 +10,9 @@
 #include "base/feature_list.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/previews/content/hint_cache.h"
-#include "components/previews/core/previews_experiments.h"
 #include "net/base/load_flags.h"
 #include "net/base/url_util.h"
 #include "net/http/http_request_headers.h"
@@ -30,10 +30,10 @@
     : optimization_guide_service_url_(net::AppendOrReplaceQueryParameter(
           optimization_guide_service_url,
           "key",
-          params::GetOptimizationGuideServiceAPIKey())) {
+          optimization_guide::features::GetOptimizationGuideServiceAPIKey())) {
   url_loader_factory_ = std::move(url_loader_factory);
   CHECK(optimization_guide_service_url_.SchemeIs(url::kHttpsScheme));
-  CHECK(previews::params::IsHintsFetchingEnabled());
+  CHECK(optimization_guide::features::IsHintsFetchingEnabled());
 }
 
 HintsFetcher::~HintsFetcher() {}
diff --git a/components/previews/content/hints_fetcher_unittest.cc b/components/previews/content/hints_fetcher_unittest.cc
index 71042934..67a3d103 100644
--- a/components/previews/content/hints_fetcher_unittest.cc
+++ b/components/previews/content/hints_fetcher_unittest.cc
@@ -13,9 +13,8 @@
 #include "base/run_loop.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/scoped_task_environment.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/previews/content/hint_cache.h"
-#include "components/previews/core/previews_experiments.h"
-#include "components/previews/core/previews_features.h"
 #include "net/base/url_util.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
@@ -34,7 +33,7 @@
                 &test_url_loader_factory_)) {
     base::test::ScopedFeatureList scoped_list;
     scoped_list.InitAndEnableFeatureWithParameters(
-        features::kOptimizationHintsFetching, {});
+        optimization_guide::features::kOptimizationHintsFetching, {});
 
     hints_fetcher_ = std::make_unique<HintsFetcher>(
         shared_url_loader_factory_, GURL(optimization_guide_service_url));
diff --git a/components/previews/content/previews_decider_impl.cc b/components/previews/content/previews_decider_impl.cc
index a523ac0..722db07 100644
--- a/components/previews/content/previews_decider_impl.cc
+++ b/components/previews/content/previews_decider_impl.cc
@@ -20,6 +20,7 @@
 #include "base/strings/stringprintf.h"
 #include "base/time/clock.h"
 #include "components/blacklist/opt_out_blacklist/opt_out_store.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/previews/content/previews_ui_service.h"
 #include "components/previews/content/previews_user_data.h"
 #include "components/previews/core/previews_experiments.h"
@@ -327,7 +328,7 @@
 
   // Check server whitelist/blacklist, if provided.
   if (ShouldCheckOptimizationHints(type)) {
-    if (params::IsOptimizationHintsEnabled()) {
+    if (optimization_guide::features::IsOptimizationHintsEnabled()) {
       // Optimization hints are configured, so determine if those hints
       // allow the optimization type (as of start-of-navigation time anyway).
       return ShouldAllowPreviewPerOptimizationHints(previews_data, url, type,
@@ -391,7 +392,7 @@
 
   // Re-check server optimization hints (if provided) on this commit-time URL.
   if (ShouldCheckOptimizationHints(type) &&
-      params::IsOptimizationHintsEnabled()) {
+      optimization_guide::features::IsOptimizationHintsEnabled()) {
     std::vector<PreviewsEligibilityReason> passed_reasons;
     PreviewsEligibilityReason status = ShouldCommitPreviewPerOptimizationHints(
         previews_data, committed_url, type, &passed_reasons);
diff --git a/components/previews/content/previews_decider_impl_unittest.cc b/components/previews/content/previews_decider_impl_unittest.cc
index 573f674..9e33e77f 100644
--- a/components/previews/content/previews_decider_impl_unittest.cc
+++ b/components/previews/content/previews_decider_impl_unittest.cc
@@ -38,6 +38,7 @@
 #include "components/blacklist/opt_out_blacklist/opt_out_store.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_switches.h"
 #include "components/leveldb_proto/content/proto_database_provider_factory.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_service.h"
 #include "components/prefs/testing_pref_service.h"
 #include "components/previews/content/hint_cache_store.h"
@@ -872,7 +873,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kNoScriptPreviews},
-      {features::kOptimizationHints});
+      {optimization_guide::features::kOptimizationHints});
   InitializeUIService();
 
   for (const auto& test_ect :
@@ -898,7 +899,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kNoScriptPreviews,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -926,7 +927,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kNoScriptPreviews,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -1093,7 +1094,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kLitePageServerPreviews},
-      {features::kOptimizationHints});
+      {optimization_guide::features::kOptimizationHints});
   InitializeUIService();
 
   base::HistogramTester histogram_tester;
@@ -1114,7 +1115,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kLitePageServerPreviews,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -1151,7 +1152,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kLitePageServerPreviews,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -1188,8 +1189,9 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kLitePageServerPreviews,
-       features::kOptimizationHints, features::kNoScriptPreviews,
-       features::kResourceLoadingHints, features::kDeferAllScriptPreviews},
+       optimization_guide::features::kOptimizationHints,
+       features::kNoScriptPreviews, features::kResourceLoadingHints,
+       features::kDeferAllScriptPreviews},
       {});
   InitializeUIService();
 
@@ -1240,7 +1242,8 @@
 TEST_F(PreviewsDeciderImplTest, ResourceLoadingHintsAllowedByDefault) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
-      {features::kPreviews, features::kOptimizationHints}, {});
+      {features::kPreviews, optimization_guide::features::kOptimizationHints},
+      {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
 
@@ -1263,7 +1266,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kResourceLoadingHints},
-      {features::kOptimizationHints});
+      {optimization_guide::features::kOptimizationHints});
   InitializeUIService();
 
   base::HistogramTester histogram_tester;
@@ -1288,7 +1291,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kResourceLoadingHints,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -1317,7 +1320,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kResourceLoadingHints,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -1339,7 +1342,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kResourceLoadingHints,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -1426,7 +1429,8 @@
 TEST_F(PreviewsDeciderImplTest, DeferAllScriptNotAllowedByDefault) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
-      {features::kPreviews, features::kOptimizationHints}, {});
+      {features::kPreviews, optimization_guide::features::kOptimizationHints},
+      {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
 
@@ -1443,7 +1447,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kDeferAllScriptPreviews},
-      {features::kOptimizationHints});
+      {optimization_guide::features::kOptimizationHints});
   InitializeUIService();
 
   base::HistogramTester histogram_tester;
@@ -1467,7 +1471,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kDeferAllScriptPreviews,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -1496,7 +1500,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kDeferAllScriptPreviews,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -1518,7 +1522,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kDeferAllScriptPreviews,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -1727,7 +1731,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kNoScriptPreviews},
-      {features::kOptimizationHints});
+      {optimization_guide::features::kOptimizationHints});
   InitializeUIService();
   auto expected_type = PreviewsType::NOSCRIPT;
   PreviewsUserData user_data(kDefaultPageId);
@@ -1806,7 +1810,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kResourceLoadingHints,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   auto expected_reason = PreviewsEligibilityReason::EXCLUDED_BY_MEDIA_SUFFIX;
@@ -1894,7 +1898,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kResourceLoadingHints,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
@@ -2109,7 +2113,7 @@
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeatures(
       {features::kPreviews, features::kNoScriptPreviews,
-       features::kOptimizationHints},
+       optimization_guide::features::kOptimizationHints},
       {});
   InitializeUIService();
   InitializeOptimizationGuideHints();
diff --git a/components/previews/content/previews_hints.cc b/components/previews/content/previews_hints.cc
index e0e7204..286a9e3d 100644
--- a/components/previews/content/previews_hints.cc
+++ b/components/previews/content/previews_hints.cc
@@ -17,7 +17,6 @@
 #include "components/previews/content/hint_update_data.h"
 #include "components/previews/core/bloom_filter.h"
 #include "components/previews/core/previews_features.h"
-#include "components/previews/core/previews_switches.h"
 #include "url/gurl.h"
 
 namespace previews {
diff --git a/components/previews/content/previews_hints_unittest.cc b/components/previews/content/previews_hints_unittest.cc
index f34b18f1..989215b 100644
--- a/components/previews/content/previews_hints_unittest.cc
+++ b/components/previews/content/previews_hints_unittest.cc
@@ -16,6 +16,7 @@
 #include "base/test/scoped_task_environment.h"
 #include "components/leveldb_proto/content/proto_database_provider_factory.h"
 #include "components/optimization_guide/hints_component_info.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/previews/content/hint_cache.h"
 #include "components/previews/content/hint_cache_store.h"
@@ -23,7 +24,6 @@
 #include "components/previews/content/previews_hints_util.h"
 #include "components/previews/content/proto_database_provider_test_base.h"
 #include "components/previews/core/previews_features.h"
-#include "components/previews/core/previews_switches.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
@@ -669,7 +669,7 @@
   {
     base::test::ScopedFeatureList scoped_list2;
     scoped_list2.InitAndEnableFeatureWithParameters(
-        features::kOptimizationHintsExperiments,
+        optimization_guide::features::kOptimizationHintsExperiments,
         {{"experiment_name", "foo_experiment"}});
 
     int inflation_percent = 0;
@@ -751,7 +751,7 @@
   {
     base::test::ScopedFeatureList scoped_list2;
     scoped_list2.InitAndEnableFeatureWithParameters(
-        features::kOptimizationHintsExperiments,
+        optimization_guide::features::kOptimizationHintsExperiments,
         {{"experiment_name", "foo_experiment"}});
 
     int inflation_percent = 0;
@@ -830,7 +830,7 @@
   {
     base::test::ScopedFeatureList scoped_list2;
     scoped_list2.InitAndEnableFeatureWithParameters(
-        features::kOptimizationHintsExperiments,
+        optimization_guide::features::kOptimizationHintsExperiments,
         {{"experiment_name", "foo_experiment"}});
 
     EXPECT_TRUE(MaybeLoadHintAndCheckIsWhitelisted(
diff --git a/components/previews/content/previews_hints_util.cc b/components/previews/content/previews_hints_util.cc
index d1ff326b..fd5dd25 100644
--- a/components/previews/content/previews_hints_util.cc
+++ b/components/previews/content/previews_hints_util.cc
@@ -8,9 +8,9 @@
 
 #include "base/metrics/field_trial_params.h"
 #include "base/strings/stringprintf.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/optimization_guide/url_pattern_with_wildcards.h"
-#include "components/previews/core/previews_features.h"
 #include "url/gurl.h"
 
 namespace previews {
@@ -22,8 +22,9 @@
       !optimization.experiment_name().empty() &&
       optimization.experiment_name() !=
           base::GetFieldTrialParamValueByFeature(
-              features::kOptimizationHintsExperiments,
-              features::kOptimizationHintsExperimentNameParam)) {
+              optimization_guide::features::kOptimizationHintsExperiments,
+              optimization_guide::features::
+                  kOptimizationHintsExperimentNameParam)) {
     return true;
   }
   // Now check if optimization depends on an experiment not being enabled.
@@ -31,8 +32,9 @@
       !optimization.excluded_experiment_name().empty() &&
       optimization.excluded_experiment_name() ==
           base::GetFieldTrialParamValueByFeature(
-              features::kOptimizationHintsExperiments,
-              features::kOptimizationHintsExperimentNameParam)) {
+              optimization_guide::features::kOptimizationHintsExperiments,
+              optimization_guide::features::
+                  kOptimizationHintsExperimentNameParam)) {
     return true;
   }
   return false;
diff --git a/components/previews/content/previews_optimization_guide.cc b/components/previews/content/previews_optimization_guide.cc
index 1b8de18d..1a48d9aa 100644
--- a/components/previews/content/previews_optimization_guide.cc
+++ b/components/previews/content/previews_optimization_guide.cc
@@ -15,8 +15,10 @@
 #include "base/time/default_clock.h"
 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h"
 #include "components/optimization_guide/hints_component_info.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_prefs.h"
 #include "components/optimization_guide/optimization_guide_service.h"
+#include "components/optimization_guide/optimization_guide_switches.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/prefs/pref_service.h"
 #include "components/previews/content/hint_cache_store.h"
@@ -53,15 +55,17 @@
 // override instead.
 bool ShouldPurgeHintCacheStoreOnStartup() {
   base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
-  return cmd_line->HasSwitch(switches::kHintsProtoOverride) ||
-         cmd_line->HasSwitch(switches::kPurgeHintCacheStore);
+  return cmd_line->HasSwitch(
+             optimization_guide::switches::kHintsProtoOverride) ||
+         cmd_line->HasSwitch(
+             optimization_guide::switches::kPurgeHintCacheStore);
 }
 
 // Available hint components are only processed if a proto override isn't being
 // used; otherwise, the hints from the proto override are used instead.
 bool IsHintComponentProcessingDisabled() {
   return base::CommandLine::ForCurrentProcess()->HasSwitch(
-      switches::kHintsProtoOverride);
+      optimization_guide::switches::kHintsProtoOverride);
 }
 
 // Attempts to parse a base64 encoded Optimization Guide Configuration proto
@@ -70,11 +74,11 @@
 std::unique_ptr<optimization_guide::proto::Configuration>
 ParseHintsProtoFromCommandLine() {
   base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
-  if (!cmd_line->HasSwitch(switches::kHintsProtoOverride))
+  if (!cmd_line->HasSwitch(optimization_guide::switches::kHintsProtoOverride))
     return nullptr;
 
-  std::string b64_pb =
-      cmd_line->GetSwitchValueASCII(switches::kHintsProtoOverride);
+  std::string b64_pb = cmd_line->GetSwitchValueASCII(
+      optimization_guide::switches::kHintsProtoOverride);
 
   std::string binary_pb;
   if (!base::Base64Decode(b64_pb, &binary_pb)) {
@@ -99,11 +103,11 @@
 base::Optional<std::vector<std::string>>
 ParseHintsFetchOverrideFromCommandLine() {
   base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
-  if (!cmd_line->HasSwitch(switches::kFetchHintsOverride))
+  if (!cmd_line->HasSwitch(optimization_guide::switches::kFetchHintsOverride))
     return base::nullopt;
 
-  std::string override_hosts_value =
-      cmd_line->GetSwitchValueASCII(switches::kFetchHintsOverride);
+  std::string override_hosts_value = cmd_line->GetSwitchValueASCII(
+      optimization_guide::switches::kFetchHintsOverride);
 
   std::vector<std::string> hosts =
       base::SplitString(override_hosts_value, ",", base::TRIM_WHITESPACE,
@@ -117,7 +121,7 @@
 
 bool ShouldOverrideFetchHintsTimer() {
   return base::CommandLine::ForCurrentProcess()->HasSwitch(
-      switches::kFetchHintsOverrideTimer);
+      optimization_guide::switches::kFetchHintsOverrideTimer);
 }
 
 // Provides a random time delta in seconds between |kFetchRandomMinDelay| and
@@ -326,14 +330,17 @@
       ParseHintsFetchOverrideFromCommandLine();
   if (!top_hosts) {
     top_hosts = previews_top_host_provider_->GetTopHosts(
-        previews::params::MaxHostsForOptimizationGuideServiceHintsFetch());
+        optimization_guide::features::
+            MaxHostsForOptimizationGuideServiceHintsFetch());
   }
-  DCHECK_GE(previews::params::MaxHostsForOptimizationGuideServiceHintsFetch(),
+  DCHECK_GE(optimization_guide::features::
+                MaxHostsForOptimizationGuideServiceHintsFetch(),
             top_hosts->size());
 
   if (!hints_fetcher_) {
     hints_fetcher_ = std::make_unique<HintsFetcher>(
-        url_loader_factory_, params::GetOptimizationGuideServiceURL());
+        url_loader_factory_,
+        optimization_guide::features::GetOptimizationGuideServiceURL());
   }
 
   if (top_hosts->size() > 0) {
@@ -417,7 +424,7 @@
     return;
   }
 
-  if (!previews::params::IsHintsFetchingEnabled())
+  if (!optimization_guide::features::IsHintsFetchingEnabled())
     return;
 
   if (ParseHintsFetchOverrideFromCommandLine() ||
diff --git a/components/previews/content/previews_optimization_guide_unittest.cc b/components/previews/content/previews_optimization_guide_unittest.cc
index 7f9a957..a8eb6f9 100644
--- a/components/previews/content/previews_optimization_guide_unittest.cc
+++ b/components/previews/content/previews_optimization_guide_unittest.cc
@@ -26,8 +26,10 @@
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_switches.h"
 #include "components/leveldb_proto/content/proto_database_provider_factory.h"
 #include "components/optimization_guide/hints_component_info.h"
+#include "components/optimization_guide/optimization_guide_features.h"
 #include "components/optimization_guide/optimization_guide_prefs.h"
 #include "components/optimization_guide/optimization_guide_service.h"
+#include "components/optimization_guide/optimization_guide_switches.h"
 #include "components/optimization_guide/proto/hints.pb.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/testing_pref_service.h"
@@ -39,7 +41,6 @@
 #include "components/previews/core/bloom_filter.h"
 #include "components/previews/core/previews_experiments.h"
 #include "components/previews/core/previews_features.h"
-#include "components/previews/core/previews_switches.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
 #include "services/network/test/test_url_loader_factory.h"
@@ -290,7 +291,8 @@
     guide_->SetTimeClockForTesting(scoped_task_environment_.GetMockClock());
 
     base::test::ScopedFeatureList scoped_list;
-    scoped_list.InitAndEnableFeature(features::kOptimizationHintsFetching);
+    scoped_list.InitAndEnableFeature(
+        optimization_guide::features::kOptimizationHintsFetching);
 
     // Add observer is called after the HintCache is fully initialized,
     // indicating that the PreviewsOptimizationGuide is ready to process hints.
@@ -662,7 +664,7 @@
   base::Base64Encode(encoded_config, &encoded_config);
 
   base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-      switches::kHintsProtoOverride, encoded_config);
+      optimization_guide::switches::kHintsProtoOverride, encoded_config);
   CreateServiceAndGuide();
 
   // Verify page matches and ECT thresholds.
@@ -697,7 +699,7 @@
   base::Base64Encode(encoded_config, &encoded_config);
 
   base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-      switches::kHintsProtoOverride, encoded_config);
+      optimization_guide::switches::kHintsProtoOverride, encoded_config);
   CreateServiceAndGuide();
 
   // Verify page matches and ECT thresholds.
@@ -737,7 +739,7 @@
   base::Base64Encode(encoded_config, &encoded_config);
 
   base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-      switches::kHintsProtoOverride, encoded_config);
+      optimization_guide::switches::kHintsProtoOverride, encoded_config);
   CreateServiceAndGuide();
 
   // Verify page matches and ECT thresholds.
@@ -757,7 +759,7 @@
 TEST_F(PreviewsOptimizationGuideTest,
        ProcessHintsWithInvalidCommandLineOverride) {
   base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-      switches::kHintsProtoOverride, "this-is-not-a-proto");
+      optimization_guide::switches::kHintsProtoOverride, "this-is-not-a-proto");
   CreateServiceAndGuide();
 
   EXPECT_FALSE(guide()->GetHintsForTesting());
@@ -766,7 +768,7 @@
 TEST_F(PreviewsOptimizationGuideTest,
        ProcessHintsWithPurgeHintCacheStoreCommandLineAndNoPreexistingData) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
-      switches::kPurgeHintCacheStore);
+      optimization_guide::switches::kPurgeHintCacheStore);
   CreateServiceAndGuide();
 
   EXPECT_FALSE(guide()->MaybeLoadOptimizationHints(
@@ -792,7 +794,7 @@
       GURL("https://www.somedomain.org/news/football"), base::DoNothing()));
 
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
-      switches::kPurgeHintCacheStore);
+      optimization_guide::switches::kPurgeHintCacheStore);
   CreateServiceAndGuide();
 
   EXPECT_FALSE(guide()->MaybeLoadOptimizationHints(
@@ -1086,7 +1088,8 @@
   // With the optimization NOT flagged as experimental and no experiment
   // enabled, the optimization should be enabled.
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndDisableFeature(features::kOptimizationHintsExperiments);
+  scoped_list.InitAndDisableFeature(
+      optimization_guide::features::kOptimizationHintsExperiments);
   DoExperimentFlagTest(base::nullopt, true);
 }
 
@@ -1094,7 +1097,8 @@
        HandlesExperimentalFlagWithEmptyExperimentName) {
   // Empty experiment names should be equivalent to no experiment flag set.
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndDisableFeature(features::kOptimizationHintsExperiments);
+  scoped_list.InitAndDisableFeature(
+      optimization_guide::features::kOptimizationHintsExperiments);
   DoExperimentFlagTest("", true);
 }
 
@@ -1103,7 +1107,8 @@
   // With the optimization flagged as experimental and no experiment
   // enabled, the optimization should be disabled.
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndDisableFeature(features::kOptimizationHintsExperiments);
+  scoped_list.InitAndDisableFeature(
+      optimization_guide::features::kOptimizationHintsExperiments);
   DoExperimentFlagTest("foo_experiment", false);
 }
 
@@ -1113,7 +1118,7 @@
   // name running, the optimization should be enabled.
   base::test::ScopedFeatureList scoped_list;
   scoped_list.InitAndEnableFeatureWithParameters(
-      features::kOptimizationHintsExperiments,
+      optimization_guide::features::kOptimizationHintsExperiments,
       {{"experiment_name", "foo_experiment"}});
   DoExperimentFlagTest("foo_experiment", true);
 }
@@ -1124,7 +1129,7 @@
   // enabled, the optimization should be disabled.
   base::test::ScopedFeatureList scoped_list;
   scoped_list.InitAndEnableFeatureWithParameters(
-      features::kOptimizationHintsExperiments,
+      optimization_guide::features::kOptimizationHintsExperiments,
       {{"experiment_name", "bar_experiment"}});
   DoExperimentFlagTest("foo_experiment", false);
 }
@@ -1548,7 +1553,7 @@
 
   base::test::ScopedFeatureList scoped_list2;
   scoped_list2.InitAndEnableFeatureWithParameters(
-      features::kOptimizationHintsExperiments,
+      optimization_guide::features::kOptimizationHintsExperiments,
       {{"experiment_name", "experiment_1"}});
 
   InitializeFixedCountResourceLoadingHintsWithTwoExperiments();
@@ -1585,7 +1590,7 @@
 
   base::test::ScopedFeatureList scoped_list2;
   scoped_list2.InitAndEnableFeatureWithParameters(
-      features::kOptimizationHintsExperiments,
+      optimization_guide::features::kOptimizationHintsExperiments,
       {{"experiment_name", "experiment_2"}});
 
   InitializeFixedCountResourceLoadingHintsWithTwoExperiments();
@@ -1622,7 +1627,7 @@
 
   base::test::ScopedFeatureList scoped_list2;
   scoped_list2.InitAndEnableFeatureWithParameters(
-      features::kOptimizationHintsExperiments,
+      optimization_guide::features::kOptimizationHintsExperiments,
       {{"experiment_name", "experiment_1"},
        {"experiment_name", "experiment_2"}});
 
@@ -1816,7 +1821,8 @@
 TEST_F(PreviewsOptimizationGuideTest, HintsFetcherEnabledNoHosts) {
   base::HistogramTester histogram_tester;
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndEnableFeature(features::kOptimizationHintsFetching);
+  scoped_list.InitAndEnableFeature(
+      optimization_guide::features::kOptimizationHintsFetching);
 
   guide()->SetHintsFetcherForTesting(
       BuildTestHintsFetcher(HintsFetcherEndState::kFetchSuccessWithHints));
@@ -1834,7 +1840,8 @@
 TEST_F(PreviewsOptimizationGuideTest, HintsFetcherEnabledWithHosts) {
   base::HistogramTester histogram_tester;
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndEnableFeature(features::kOptimizationHintsFetching);
+  scoped_list.InitAndEnableFeature(
+      optimization_guide::features::kOptimizationHintsFetching);
   std::string opt_guide_url = "https://hintsserver.com";
 
   guide()->SetHintsFetcherForTesting(
@@ -1857,7 +1864,8 @@
 TEST_F(PreviewsOptimizationGuideTest, HintsFetcherTimerRetryDelay) {
   base::HistogramTester histogram_tester;
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndEnableFeature(features::kOptimizationHintsFetching);
+  scoped_list.InitAndEnableFeature(
+      optimization_guide::features::kOptimizationHintsFetching);
   std::string opt_guide_url = "https://hintsserver.com";
 
   guide()->SetHintsFetcherForTesting(
@@ -1886,7 +1894,8 @@
 TEST_F(PreviewsOptimizationGuideTest, HintsFetcherTimerFetchSucceeds) {
   base::HistogramTester histogram_tester;
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndEnableFeature(features::kOptimizationHintsFetching);
+  scoped_list.InitAndEnableFeature(
+      optimization_guide::features::kOptimizationHintsFetching);
   std::string opt_guide_url = "https://hintsserver.com";
 
   guide()->SetHintsFetcherForTesting(
@@ -1918,7 +1927,8 @@
 
 TEST_F(PreviewsOptimizationGuideTest, HintsFetcherDisabled) {
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndDisableFeature(features::kOptimizationHintsFetching);
+  scoped_list.InitAndDisableFeature(
+      optimization_guide::features::kOptimizationHintsFetching);
 
   EXPECT_CALL(*top_host_provider(), GetTopHosts(testing::_)).Times(0);
   CreateServiceAndGuide();
@@ -1931,7 +1941,8 @@
 TEST_F(PreviewsOptimizationGuideTest, HintsFetcherLastFetchAtttempt) {
   base::HistogramTester histogram_tester;
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndEnableFeature(features::kOptimizationHintsFetching);
+  scoped_list.InitAndEnableFeature(
+      optimization_guide::features::kOptimizationHintsFetching);
 
   // Set the last fetch attempt to 5 minutes ago, simulating a short duration
   // since last execution (simulating browser crash/close-reopen).
@@ -1985,7 +1996,8 @@
        HintsFetcherEnabledDataSaverDisabled) {
   base::HistogramTester histogram_tester;
   base::test::ScopedFeatureList scoped_list;
-  scoped_list.InitAndEnableFeature(features::kOptimizationHintsFetching);
+  scoped_list.InitAndEnableFeature(
+      optimization_guide::features::kOptimizationHintsFetching);
   std::string opt_guide_url = "https://hintsserver.com";
 
   guide()->SetHintsFetcherForTesting(
diff --git a/components/previews/core/BUILD.gn b/components/previews/core/BUILD.gn
index f27efa0..bc54e154 100644
--- a/components/previews/core/BUILD.gn
+++ b/components/previews/core/BUILD.gn
@@ -30,7 +30,6 @@
     "//base",
     "//components/blacklist/opt_out_blacklist",
     "//components/variations",
-    "//google_apis",
     "//net:net",
     "//third_party/re2",
     "//third_party/smhasher:murmurhash3",
diff --git a/components/previews/core/DEPS b/components/previews/core/DEPS
index 1f73c3e..776d207 100644
--- a/components/previews/core/DEPS
+++ b/components/previews/core/DEPS
@@ -1,7 +1,6 @@
 include_rules = [
   "+components/blacklist/opt_out_blacklist",
   "+components/variations",
-  "+google_apis",
   "+net",
   "+third_party/re2",
   "+third_party/smhasher"
diff --git a/components/previews/core/previews_constants.cc b/components/previews/core/previews_constants.cc
index cc90d62..7597b091 100644
--- a/components/previews/core/previews_constants.cc
+++ b/components/previews/core/previews_constants.cc
@@ -12,7 +12,4 @@
 const char kPreviewsOptimizationGuideOnLoadedHintResultHistogramString[] =
     "PreviewsOptimizationGuide.OnLoadedHint.Result";
 
-extern const char kOptimizationGuideServiceDefaultURL[] =
-    "https://optimizationguide-pa.googleapis.com/v1:GetHints";
-
 }  // namespace previews
diff --git a/components/previews/core/previews_constants.h b/components/previews/core/previews_constants.h
index 0a7ac8a1..87216f4 100644
--- a/components/previews/core/previews_constants.h
+++ b/components/previews/core/previews_constants.h
@@ -15,10 +15,6 @@
 // finished loading.
 extern const char kPreviewsOptimizationGuideOnLoadedHintResultHistogramString[];
 
-// The remote Optimization Guide Service production server to fetcher hints
-// from.
-extern const char kOptimizationGuideServiceDefaultURL[];
-
 }  // namespace previews
 
 #endif  // COMPONENTS_PREVIEWS_CORE_PREVIEWS_CONSTANTS_H_
diff --git a/components/previews/core/previews_experiments.cc b/components/previews/core/previews_experiments.cc
index 46471cb..57c76ad6 100644
--- a/components/previews/core/previews_experiments.cc
+++ b/components/previews/core/previews_experiments.cc
@@ -16,7 +16,6 @@
 #include "components/previews/core/previews_constants.h"
 #include "components/previews/core/previews_features.h"
 #include "components/previews/core/previews_switches.h"
-#include "google_apis/google_api_keys.h"
 #include "net/base/url_util.h"
 
 namespace previews {
@@ -115,27 +114,6 @@
                               "max_hosts_in_blacklist", 100);
 }
 
-size_t MaxHintsFetcherTopHostBlacklistSize() {
-  // The blacklist will be limited to the most engaged hosts and will hold twice
-  // (2*N) as many hosts that the HintsFetcher request hints for. The extra N
-  // hosts on the blacklist are meant to cover the case that the engagement
-  // scores on some of the top N host engagement scores decay and they fall out
-  // of the top N.
-  return 2 * MaxHostsForOptimizationGuideServiceHintsFetch();
-}
-
-size_t MaxHostsForOptimizationGuideServiceHintsFetch() {
-  return GetFieldTrialParamByFeatureAsInt(
-      features::kOptimizationHintsFetching,
-      "max_hosts_for_optimization_guide_service_hints_fetch", 30);
-}
-
-base::TimeDelta StoredFetchedHintsFreshnessDuration() {
-  return base::TimeDelta::FromDays(GetFieldTrialParamByFeatureAsInt(
-      features::kOptimizationHintsFetching,
-      "max_store_duration_for_featured_hints_in_days", 7));
-}
-
 int PerHostBlackListOptOutThreshold() {
   return GetParamValueAsInt(kClientSidePreviewsFieldTrial,
                             "per_host_opt_out_threshold", 2);
@@ -239,39 +217,6 @@
   return GURL("https://litepages.googlezip.net/");
 }
 
-std::string GetOptimizationGuideServiceAPIKey() {
-  // Command line override takes priority.
-  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(switches::kOptimizationGuideServiceAPIKey)) {
-    return command_line->GetSwitchValueASCII(
-        switches::kOptimizationGuideServiceAPIKey);
-  }
-
-  return google_apis::GetAPIKey();
-}
-
-GURL GetOptimizationGuideServiceURL() {
-  // Command line override takes priority.
-  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(switches::kOptimizationGuideServiceURL)) {
-    // Assume the command line switch is correct and return it.
-    return GURL(command_line->GetSwitchValueASCII(
-        switches::kOptimizationGuideServiceURL));
-  }
-
-  std::string url = base::GetFieldTrialParamValueByFeature(
-      features::kOptimizationHintsFetching, "optimization_guide_service_url");
-  if (url.empty() || !GURL(url).SchemeIs(url::kHttpsScheme)) {
-    if (!url.empty())
-      LOG(WARNING)
-          << "Empty or invalid optimization_guide_service_url provided: "
-          << url;
-    return GURL(previews::kOptimizationGuideServiceDefaultURL);
-  }
-
-  return GURL(url);
-}
-
 bool IsInLitePageRedirectControl() {
   return base::GetFieldTrialParamByFeatureAsBool(
       features::kLitePageServerPreviews, "control_group", false);
@@ -373,14 +318,6 @@
                                           kVersion, 0);
 }
 
-bool IsOptimizationHintsEnabled() {
-  return base::FeatureList::IsEnabled(features::kOptimizationHints);
-}
-
-bool IsHintsFetchingEnabled() {
-  return base::FeatureList::IsEnabled(features::kOptimizationHintsFetching);
-}
-
 int NoScriptPreviewsInflationPercent() {
   // The default value was determined from lab experiment data of whitelisted
   // URLs. It may be improved once there is enough UKM live experiment data
diff --git a/components/previews/core/previews_experiments.h b/components/previews/core/previews_experiments.h
index bc0fa0b..44b6659d 100644
--- a/components/previews/core/previews_experiments.h
+++ b/components/previews/core/previews_experiments.h
@@ -87,21 +87,6 @@
 // The maximum number of hosts allowed in the in memory black list.
 size_t MaxInMemoryHostsInBlackList();
 
-// The maximum number of hosts that can be stored in the
-// |kHintsFetcherTopHostBlacklist| dictionary pref when initialized. The top
-// hosts will also be returned in order of most engaged. This prevents the most
-// engaged hosts in a user's history before DataSaver being enabled from being
-// requested until the user navigates to the host again.
-size_t MaxHintsFetcherTopHostBlacklistSize();
-
-// The maximum number of hosts allowed to be requested by the client to the
-// remote Optimzation Guide Service.
-size_t MaxHostsForOptimizationGuideServiceHintsFetch();
-
-// The amount of time a fetched hint will be considered fresh enough
-// to be used and remain in the HintCacheStore.
-base::TimeDelta StoredFetchedHintsFreshnessDuration();
-
 // The number of recent navigations that were opted out of for a given host that
 // would trigger that host to be blacklisted.
 int PerHostBlackListOptOutThreshold();
@@ -130,12 +115,6 @@
 // The host for Lite Page server previews.
 GURL GetLitePagePreviewsDomainURL();
 
-// The API key for the One Platform Optimization Guide Service.
-std::string GetOptimizationGuideServiceAPIKey();
-
-// The host for the One Platform Optimization Guide Service.
-GURL GetOptimizationGuideServiceURL();
-
 // The duration of a single bypass for Lite Page Server Previews.
 base::TimeDelta LitePagePreviewsSingleBypassDuration();
 
@@ -197,13 +176,6 @@
 int ResourceLoadingHintsVersion();
 int DeferAllScriptPreviewsVersion();
 
-// Whether server optimization hints are enabled.
-bool IsOptimizationHintsEnabled();
-
-// Returns true if the feature to fetch hints from the remote Optimization Guide
-// Service is enabled.
-bool IsHintsFetchingEnabled();
-
 // For estimating NoScript data savings, this is the percentage factor to
 // multiple by the network bytes for inflating the original_bytes count.
 int NoScriptPreviewsInflationPercent();
diff --git a/components/previews/core/previews_experiments_unittest.cc b/components/previews/core/previews_experiments_unittest.cc
index 3bccade..01c3f9b 100644
--- a/components/previews/core/previews_experiments_unittest.cc
+++ b/components/previews/core/previews_experiments_unittest.cc
@@ -190,31 +190,6 @@
   }
 }
 
-TEST(PreviewsExperimentsTest, TestGetOptimizationGuideServiceURLHTTPSOnly) {
-  base::test::ScopedFeatureList scoped_feature_list;
-
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      features::kOptimizationHintsFetching,
-      {{"optimization_guide_service_url", "http://NotAnHTTPSServer.com"}});
-
-  EXPECT_EQ(params::GetOptimizationGuideServiceURL().spec(),
-            kOptimizationGuideServiceDefaultURL);
-  EXPECT_TRUE(
-      params::GetOptimizationGuideServiceURL().SchemeIs(url::kHttpsScheme));
-}
-
-TEST(PreviewsExperimentsTest, TestGetOptimizationGuideServiceURLViaFinch) {
-  base::test::ScopedFeatureList scoped_feature_list;
-
-  std::string optimization_guide_service_url = "https://finchserver.com/";
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      features::kOptimizationHintsFetching,
-      {{"optimization_guide_service_url", optimization_guide_service_url}});
-
-  EXPECT_EQ(params::GetOptimizationGuideServiceURL().spec(),
-            optimization_guide_service_url);
-}
-
 }  // namespace
 
 }  // namespace previews
diff --git a/components/previews/core/previews_features.cc b/components/previews/core/previews_features.cc
index cf04b26..2578c64 100644
--- a/components/previews/core/previews_features.cc
+++ b/components/previews/core/previews_features.cc
@@ -40,29 +40,6 @@
 const base::Feature kStalePreviewsTimestamp{"StalePreviewsTimestamp",
                                             base::FEATURE_ENABLED_BY_DEFAULT};
 
-// Enables the syncing of the Optimization Hints component, which provides
-// hints for what Previews can be applied on a page load.
-const base::Feature kOptimizationHints {
-  "OptimizationHints",
-#if defined(OS_ANDROID)
-      base::FEATURE_ENABLED_BY_DEFAULT
-#else   // !defined(OS_ANDROID)
-      base::FEATURE_DISABLED_BY_DEFAULT
-#endif  // defined(OS_ANDROID)
-};
-
-// Enables Optimization Hints that are marked as experimental. Optimizations are
-// marked experimental by setting an experiment name in the "experiment_name"
-// field of the Optimization proto. This allows experiments at the granularity
-// of a single PreviewType for a single host (or host suffix). The intent is
-// that optimizations that may not work properly for certain sites can be tried
-// at a small scale via Finch experiments. Experimental optimizations can be
-// activated by enabling this feature and passing an experiment name as a
-// parameter called "experiment_name" that matches the experiment name in the
-// Optimization proto.
-const base::Feature kOptimizationHintsExperiments{
-    "OptimizationHintsExperiments", base::FEATURE_DISABLED_BY_DEFAULT};
-
 // Enables the application of the resource loading hints when loading resources.
 const base::Feature kResourceLoadingHints {
   "ResourceLoadingHints",
@@ -86,10 +63,6 @@
 const base::Feature kHTTPSServerPreviewsUsingURLLoader{
     "HTTPSServerPreviewsUsingURLLoader", base::FEATURE_DISABLED_BY_DEFAULT};
 
-// Enables fetching optimization hints from a remote Optimization Guide Service.
-const base::Feature kOptimizationHintsFetching{
-    "OptimizationHintsFetching", base::FEATURE_DISABLED_BY_DEFAULT};
-
 // Enables the use of a pref to only trigger Offline Previews when there is a
 // high chance that there is one to serve.
 const base::Feature kOfflinePreviewsFalsePositivePrevention{
diff --git a/components/previews/core/previews_features.h b/components/previews/core/previews_features.h
index 9ff5622e..c9ca1e7a0 100644
--- a/components/previews/core/previews_features.h
+++ b/components/previews/core/previews_features.h
@@ -14,14 +14,10 @@
 extern const base::Feature kOfflinePreviews;
 extern const base::Feature kNoScriptPreviews;
 extern const base::Feature kStalePreviewsTimestamp;
-extern const base::Feature kOptimizationHints;
-extern const base::Feature kOptimizationHintsExperiments;
-constexpr char kOptimizationHintsExperimentNameParam[] = "experiment_name";
 extern const base::Feature kResourceLoadingHints;
 extern const base::Feature kLitePageServerPreviews;
 extern const base::Feature kSlowPageTriggering;
 extern const base::Feature kHTTPSServerPreviewsUsingURLLoader;
-extern const base::Feature kOptimizationHintsFetching;
 extern const base::Feature kOfflinePreviewsFalsePositivePrevention;
 extern const base::Feature kCoinFlipHoldback;
 extern const base::Feature kExcludedMediaSuffixes;
diff --git a/components/previews/core/previews_switches.cc b/components/previews/core/previews_switches.cc
index 60a2d43d..2ba553d 100644
--- a/components/previews/core/previews_switches.cc
+++ b/components/previews/core/previews_switches.cc
@@ -38,36 +38,6 @@
 const char kClearLitePageRedirectLocalBlacklist[] =
     "clear-litepage-redirect-local-blacklist-on-startup";
 
-// Overrides the Hints Protobuf that would come from the component updater. If
-// the value of this switch is invalid, regular hint processing is used.
-// The value of this switch should be a base64 encoding of a binary
-// Configuration message, found in optimization_guide's hints.proto. Providing a
-// valid value to this switch causes Chrome startup to block on hints parsing.
-const char kHintsProtoOverride[] = "optimization_guide_hints_override";
-
-// Overrides scheduling and time delays for fetching hints and causes a hints
-// fetch immediately on start up using the provided comma separate lists of
-// hosts.
-const char kFetchHintsOverride[] = "optimization-guide-fetch-hints-override";
-
-// Overrides the hints fetch scheduling and delay, causing a hints fetch
-// immediately on start up using the TopHostProvider. This is meant for testing.
-const char kFetchHintsOverrideTimer[] =
-    "optimization-guide-fetch-hints-override-timer";
-
-// Overrides the Optimization Guide Service URL that the HintsFetcher will
-// request remote hints from.
-const char kOptimizationGuideServiceURL[] = "optimization-guide-service-url";
-
-// Overrides the Optimization Guide Service API Key for remote requests to be
-// made.
-const char kOptimizationGuideServiceAPIKey[] =
-    "optimization-guide-service-api-key";
-
-// Purges the hint cache store on startup, so that it's guaranteed to be using
-// fresh data.
-const char kPurgeHintCacheStore[] = "purge_hint_cache_store";
-
 // Sets the trigger ordering of Lite Page Redirect to be higher than page hints.
 const char kLitePageRedirectOverridesPageHints[] =
     "litepage_redirect_overrides_page_hints";
diff --git a/components/previews/core/previews_switches.h b/components/previews/core/previews_switches.h
index 142993d6..c671c90c 100644
--- a/components/previews/core/previews_switches.h
+++ b/components/previews/core/previews_switches.h
@@ -18,12 +18,6 @@
 extern const char kLitePageServerPreviewHost[];
 extern const char kIgnoreLitePageRedirectOptimizationBlacklist[];
 extern const char kClearLitePageRedirectLocalBlacklist[];
-extern const char kHintsProtoOverride[];
-extern const char kFetchHintsOverride[];
-extern const char kFetchHintsOverrideTimer[];
-extern const char kOptimizationGuideServiceURL[];
-extern const char kOptimizationGuideServiceAPIKey[];
-extern const char kPurgeHintCacheStore[];
 extern const char kLitePageRedirectOverridesPageHints[];
 
 }  // namespace switches
diff --git a/components/renderer_context_menu/context_menu_content_type.cc b/components/renderer_context_menu/context_menu_content_type.cc
index 88f916bf..730b46e 100644
--- a/components/renderer_context_menu/context_menu_content_type.cc
+++ b/components/renderer_context_menu/context_menu_content_type.cc
@@ -118,11 +118,7 @@
       return params_.media_type == WebContextMenuData::kMediaTypePlugin;
 
     case ITEM_GROUP_MEDIA_FILE:
-#if defined(WEBCONTEXT_MEDIATYPEFILE_DEFINED)
       return params_.media_type == WebContextMenuData::kMediaTypeFile;
-#else
-      return false;
-#endif
 
     case ITEM_GROUP_EDITABLE:
       return params_.is_editable;
diff --git a/components/signin/core/browser/account_reconcilor.cc b/components/signin/core/browser/account_reconcilor.cc
index 12d70e0..f8b9189 100644
--- a/components/signin/core/browser/account_reconcilor.cc
+++ b/components/signin/core/browser/account_reconcilor.cc
@@ -24,7 +24,6 @@
 #include "components/signin/core/browser/account_reconcilor_delegate.h"
 #include "components/signin/core/browser/consistency_cookie_manager_base.h"
 #include "components/signin/core/browser/set_accounts_in_cookie_result.h"
-#include "components/signin/core/browser/signin_buildflags.h"
 #include "components/signin/core/browser/signin_client.h"
 #include "components/signin/core/browser/signin_metrics.h"
 #include "components/signin/public/identity_manager/accounts_cookie_mutator.h"
diff --git a/components/signin/core/browser/account_reconcilor_unittest.cc b/components/signin/core/browser/account_reconcilor_unittest.cc
index aa8884f..498a475e 100644
--- a/components/signin/core/browser/account_reconcilor_unittest.cc
+++ b/components/signin/core/browser/account_reconcilor_unittest.cc
@@ -738,7 +738,17 @@
     // First reconcile (Chrome restart): Rebuild the Gaia cookie to match the
     // tokens. Make the Sync account the default account in the Gaia cookie.
     // Sync enabled.
+    {  "",      "A",   IsFirstReconcile::kBoth,       "X",   "",      "",    "P",   "",     "xA"},
     {  "*AB",   "AB",  IsFirstReconcile::kBoth,       "",    "*AB",   "AB",  "",    "*AB",  "AB"},
+    {  "*A",    "A",   IsFirstReconcile::kBoth,       "",    "*A",    "A",   "",    "*A" ,  "A"},
+
+    {  "*A",    "",    IsFirstReconcile::kFirst,      "A",   "*A",    "A",   "UA",  "*A" ,  "A"},
+    {  "*A",    "",    IsFirstReconcile::kNotFirst,   "A",   "*A",    "A",   "PA",  "*A" ,  "A"},
+
+    {  "*A",    "B",   IsFirstReconcile::kFirst,      "XA",  "*A",    "A",   "UA",  "*A" ,  "A"},
+    {  "*A",    "B",   IsFirstReconcile::kNotFirst,   "XA",  "*A",    "A",   "PA",  "*A" ,  "xBA"},
+
+    {  "*A",    "AB",  IsFirstReconcile::kBoth,       "XA",  "*A",    "A",   "PA",  "*A" ,  "AxB"},
 
     {  "*AB",   "BA",  IsFirstReconcile::kFirst,      "XAB", "*AB",   "AB",  "UAB", "*AB",  "AB"},
     {  "*AB",   "BA",  IsFirstReconcile::kNotFirst,   "",    "*AB",   "BA",  "",    "*AB",  "BA"},
@@ -846,7 +856,6 @@
 
     // Miscellaneous cases.
     // Check that unknown Gaia accounts are signed out.
-    {  "",     "A",    IsFirstReconcile::kBoth,       "X",  "",       "",     "P",  "",     "xA"},
     {  "*A",   "AB",   IsFirstReconcile::kBoth,       "XA", "*A",     "A",    "PA", "*A",   "AxB"},
     // Check that Gaia default account is kept in first position.
     {  "AB",   "BC",   IsFirstReconcile::kBoth,       "XBA","AB",     "BA",   "PAB","AB",   "BxCA"},
diff --git a/components/signin/core/browser/chrome_connected_header_helper.cc b/components/signin/core/browser/chrome_connected_header_helper.cc
index 142c31b..69098155 100644
--- a/components/signin/core/browser/chrome_connected_header_helper.cc
+++ b/components/signin/core/browser/chrome_connected_header_helper.cc
@@ -53,7 +53,7 @@
 
 ChromeConnectedHeaderHelper::ChromeConnectedHeaderHelper(
     AccountConsistencyMethod account_consistency)
-    : SigninHeaderHelper("Mirror"), account_consistency_(account_consistency) {}
+    : account_consistency_(account_consistency) {}
 
 // static
 std::string ChromeConnectedHeaderHelper::BuildRequestCookieIfPossible(
diff --git a/components/signin/core/browser/dice_header_helper.cc b/components/signin/core/browser/dice_header_helper.cc
index eac6a7c..0c9880e 100644
--- a/components/signin/core/browser/dice_header_helper.cc
+++ b/components/signin/core/browser/dice_header_helper.cc
@@ -50,7 +50,7 @@
 }  // namespace
 
 DiceHeaderHelper::DiceHeaderHelper(AccountConsistencyMethod account_consistency)
-    : SigninHeaderHelper("Dice"), account_consistency_(account_consistency) {}
+    : account_consistency_(account_consistency) {}
 
 // static
 DiceResponseParams DiceHeaderHelper::BuildDiceSigninResponseParams(
diff --git a/components/signin/core/browser/signin_header_helper.cc b/components/signin/core/browser/signin_header_helper.cc
index 3be4ed5..cf0a387 100644
--- a/components/signin/core/browser/signin_header_helper.cc
+++ b/components/signin/core/browser/signin_header_helper.cc
@@ -22,16 +22,6 @@
 
 namespace signin {
 
-namespace {
-// Buckes of the |Signin.RequestHeaderOperation.Dice| and
-// |SigninRequestHeaderOperation.Mirror| histograms.
-enum class RequestHeaderOperation {
-  kHeaderAdded = 0,
-  kHeaderRemoved = 1,
-  kMaxValue = kHeaderRemoved
-};
-}  // namespace
-
 const char kChromeConnectedHeader[] = "X-Chrome-Connected";
 const char kDiceRequestHeader[] = "X-Chrome-ID-Consistency-Request";
 const char kDiceResponseHeader[] = "X-Chrome-ID-Consistency-Response";
@@ -106,8 +96,7 @@
       url, account_id, account_consistency, cookie_settings, profile_mode_mask);
 }
 
-SigninHeaderHelper::SigninHeaderHelper(const std::string& histogram_suffix)
-    : histogram_suffix_(histogram_suffix) {}
+SigninHeaderHelper::SigninHeaderHelper() = default;
 SigninHeaderHelper::~SigninHeaderHelper() = default;
 
 bool SigninHeaderHelper::AppendOrRemoveRequestHeader(
@@ -122,16 +111,12 @@
     if (!redirect_url.is_empty() && request->HasHeader(header_name) &&
         IsUrlEligibleForRequestHeader(request->GetUrl()) &&
         !IsUrlEligibleForRequestHeader(redirect_url)) {
-      base::UmaHistogramEnumeration(
-          GetSuffixedHistogramName("Signin.RequestHeaderOperation"),
-          RequestHeaderOperation::kHeaderRemoved);
+      VLOG(1) << "Sign-in request header [" << header_name << "] removed.";
       request->RemoveRequestHeaderByName(header_name);
     }
     return false;
   }
-  base::UmaHistogramEnumeration(
-      GetSuffixedHistogramName("Signin.RequestHeaderOperation"),
-      RequestHeaderOperation::kHeaderAdded);
+  VLOG(1) << "Sign-in request header [" << header_name << "] added.";
   request->SetExtraHeaderByName(header_name, header_value);
   return true;
 }
@@ -159,11 +144,6 @@
   return dictionary;
 }
 
-std::string SigninHeaderHelper::GetSuffixedHistogramName(
-    const std::string& histogram_name) {
-  return histogram_name + "." + histogram_suffix_;
-}
-
 void AppendOrRemoveMirrorRequestHeader(
     RequestAdapter* request,
     const GURL& redirect_url,
diff --git a/components/signin/core/browser/signin_header_helper.h b/components/signin/core/browser/signin_header_helper.h
index ab001f6..c202229 100644
--- a/components/signin/core/browser/signin_header_helper.h
+++ b/components/signin/core/browser/signin_header_helper.h
@@ -181,7 +181,7 @@
       const content_settings::CookieSettings* cookie_settings) = 0;
 
  protected:
-  explicit SigninHeaderHelper(const std::string& histogram_suffix);
+  SigninHeaderHelper();
   virtual ~SigninHeaderHelper();
 
   // Dictionary of fields in a account consistency response header.
@@ -196,13 +196,6 @@
   // Returns whether the url is eligible for the request header.
   virtual bool IsUrlEligibleForRequestHeader(const GURL& url) = 0;
 
-  // Returns a string that can be used as a histogram name. Its value ios
-  // "|histogram_name|.|histogram_suffix_|".
-  std::string GetSuffixedHistogramName(const std::string& histogram_name);
-
-  // Suffix to be used by the histograms recodered by this SigninHeaderHelper.
-  std::string histogram_suffix_;
-
   DISALLOW_COPY_AND_ASSIGN(SigninHeaderHelper);
 };
 
diff --git a/components/signin/public/identity_manager/identity_manager_builder.cc b/components/signin/public/identity_manager/identity_manager_builder.cc
index b3b74c9..d131e97 100644
--- a/components/signin/public/identity_manager/identity_manager_builder.cc
+++ b/components/signin/public/identity_manager/identity_manager_builder.cc
@@ -4,10 +4,8 @@
 
 #include "components/signin/public/identity_manager/identity_manager_builder.h"
 
-#include <memory>
 #include <utility>
 
-#include "build/build_config.h"
 #include "components/image_fetcher/core/image_decoder.h"
 #include "components/signin/core/browser/account_fetcher_service.h"
 #include "components/signin/core/browser/account_tracker_service.h"
diff --git a/components/signin/public/identity_manager/identity_manager_builder.h b/components/signin/public/identity_manager/identity_manager_builder.h
index 2c42442..a6a77b3 100644
--- a/components/signin/public/identity_manager/identity_manager_builder.h
+++ b/components/signin/public/identity_manager/identity_manager_builder.h
@@ -7,6 +7,8 @@
 
 #include <memory>
 
+#include "build/build_config.h"
+
 class AccountTrackerService;
 class PrefService;
 class ProfileOAuth2TokenService;
@@ -24,6 +26,12 @@
 enum class AccountConsistencyMethod;
 }
 
+#if defined(OS_CHROMEOS)
+namespace chromeos {
+class AccountManager;
+}
+#endif
+
 namespace identity {
 class IdentityManager;
 
@@ -39,6 +47,11 @@
   PrefService* pref_service;
   SigninClient* signin_client;
   std::unique_ptr<ProfileOAuth2TokenService> token_service;
+
+#if defined(OS_CHROMEOS)
+  chromeos::AccountManager* account_manager;
+  bool is_regular_profile;
+#endif
 };
 
 // Builds an IdentityManager instance from the supplied embedder-level
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb
index cdde1096..23a07a9 100644
--- a/components/strings/components_strings_am.xtb
+++ b/components/strings/components_strings_am.xtb
@@ -396,7 +396,6 @@
 <translation id="3060227939791841287">C9 (የደብዳቤ ፖስታ)</translation>
 <translation id="3061707000357573562">የመጠገኛ አገልግሎት</translation>
 <translation id="3064966200440839136">በውጫዊ ማከማቻ በኩል ለማጫወት ማንነት ከማያሳውቅ ሁነታ በመውጣት ላይ። ይቀጥል?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{ምንም}=1{1 የይለፍ ቃል}one{# የይለፍ ቃሎች}other{# የይለፍ ቃሎች}}</translation>
 <translation id="3095940652251934233">መግለጫ</translation>
 <translation id="3096100844101284527">የመውሰጃ አድራሻ ያክሉ</translation>
 <translation id="3105172416063519923">የእሴት መታወቂያ፦</translation>
@@ -945,7 +944,6 @@
 <translation id="6094273045989040137">አብራራ</translation>
 <translation id="610911394827799129">የእርስዎ Google መለያ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ላይ ሌሎች የአሰሳ ታሪክ ዓይነቶች ሊኖረው ይችላል።</translation>
 <translation id="6132597952260690497">ስለተጫኑ ቅጥያዎች እና ተሰኪዎች መረጃ</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{ምንም}=1{1 የይለፍ ቃል (የተሰመረ)}one{# የይለፍ ቃሎች (የተሰመሩ)}other{# የይለፍ ቃሎች (የተሰመሩ)}}</translation>
 <translation id="6146055958333702838">ማናቸውም ገመዶችን ይፈትሹና እየተጠቀሙ ሊሆኑ የሚችሏቸውን ማንኛውም ራውተሮች፣
         ሞደሞችን ወይም ሌላ አውታረ መረብ መሣሪያዎችን ዳግም ያስጀምሩ።</translation>
 <translation id="614940544461990577">ይሞክሩ፦</translation>
@@ -1183,7 +1181,6 @@
 <translation id="7451311239929941790">ስለዚህ ችግር <ph name="BEGIN_LINK" />ይበልጥ በመረዳት ላይ<ph name="END_LINK" />።</translation>
 <translation id="7455133967321480974">ሁለንተናዊ ነባሪውን ተጠቀም (አግድ)</translation>
 <translation id="7460618730930299168">ማያ ገጹ አቀራረብ እርስዎ ከመረጡት የተለየ ነው። ይቀጥል?</translation>
-<translation id="7465410862124366659">ይህ ገጽ በ<ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] ባለቤትነት እንደተያዘ ተለይቷል።</translation>
 <translation id="7473891865547856676">አይ፣ አመሰግናለሁ</translation>
 <translation id="7481312909269577407">ወደ ፊት</translation>
 <translation id="7485870689360869515">ምንም ውሂብ አልተገኘም።</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index e4904660..db6c519 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">‏C9 (مغلف)</translation>
 <translation id="3061707000357573562">خدمة رمز التصحيح</translation>
 <translation id="3064966200440839136">ستتم مغادرة وضع التصفح المتخفي للدفع عبر تطبيق خارجي. هل تريد المتابعة؟</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{بدون}=1{كلمة مرور واحدة}two{كلمتا مرور (#)}few{# كلمات مرور}many{# كلمة مرور}other{# كلمة مرور}}</translation>
 <translation id="3095940652251934233">كشف</translation>
 <translation id="3096100844101284527">إضافة عنوان الاستلام من المستخدم</translation>
 <translation id="3105172416063519923">رقم تعريف الأصل:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">إضافة تعليق توضيحي</translation>
 <translation id="610911394827799129">‏قد يتضمّن حسابك على Google نماذج أخرى من سجلّ التصفّح على <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">معلومات حول المكوّنات الإضافية والإضافات المُثبّتة</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{بدون}=1{ كلمة مرور واحدة (تمت مزامنتها)}two{كلمتا مرور (#) (تمت مزامنتهما)}few{# كلمات مرور (تمت مزامنتها)}many{# كلمة مرور (تمت مزامنتها)}other{# كلمة مرور (تمت مزامنتها)}}</translation>
 <translation id="6146055958333702838">تحقق من أي كابلات وأعد تشغيل أي أجهزة توجيه أو أجهزة مودم أو أجهزة شبكة
         أخرى ربما تستخدمها.</translation>
 <translation id="614940544461990577">يمكنك محاولة:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /> حول هذه المشكلة.</translation>
 <translation id="7455133967321480974">استخدام الإعداد التلقائي العمومي (حظر)</translation>
 <translation id="7460618730930299168">يختلف هذا الفحص عن اختيارك. هل تريد المتابعة؟</translation>
-<translation id="7465410862124366659">تم تحديد هذه الصفحة باعتبارها مملوكة إلى <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">لا، شكرًا</translation>
 <translation id="7481312909269577407">إلى الأمام</translation>
 <translation id="7485870689360869515">لم يتم العثور على بيانات.</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb
index 6a2a3e3..b4e99f2 100644
--- a/components/strings/components_strings_bg.xtb
+++ b/components/strings/components_strings_bg.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (плик)</translation>
 <translation id="3061707000357573562">Услуга за корекции</translation>
 <translation id="3064966200440839136">Ще напуснете режим „инкогнито“, за да платите във външно приложение. Искате ли да продължите?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Няма}=1{1 парола}other{# пароли}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Добавяне на адрес за вземане</translation>
 <translation id="3105172416063519923">ID на актива:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Добавяне на пояснения</translation>
 <translation id="610911394827799129">В профила ви в Google може да има други видове история на сърфиране, съхранявани на адрес <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Информация за инсталираните разширения и приставки</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Няма}=1{1 парола (синхронизирана)}other{# пароли (синхронизирани)}}</translation>
 <translation id="6146055958333702838">Проверете всички кабели и рестартирайте маршрутизаторите, модемите или другите мрежови
 устройства, които може да използвате.</translation>
 <translation id="614940544461990577">Изпробвайте следното:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /> за този проблем.</translation>
 <translation id="7455133967321480974">Използване на глобалната стандартна стойност (блокиране)</translation>
 <translation id="7460618730930299168">Прожекцията е различна от избраната от вас. Искате ли да продължите?</translation>
-<translation id="7465410862124366659">Тази страница е идентифицирана като собственост на <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Не, благодаря</translation>
 <translation id="7481312909269577407">Препращане</translation>
 <translation id="7485870689360869515">Няма намерени данни.</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index b3a96c51..7d04fa48 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -403,7 +403,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">প্যাচ পরিষেবা</translation>
 <translation id="3064966200440839136">বহিরাগত অ্যাপের মাধ্যমে পেমেন্ট করার জন্য ছদ্মবেশী মোড থেকে বেরিয়ে যাচ্ছে। চালিয়ে যাবেন?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{কিছুই নয়}=1{১টি পাসওয়ার্ড}one{#টি পাসওয়ার্ড}other{#টি পাসওয়ার্ড}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">পিক-আপের ঠিকানা যোগ করুন</translation>
 <translation id="3105172416063519923">সম্পদ আইডি:</translation>
@@ -953,7 +952,6 @@
 <translation id="6094273045989040137">ব্যাখ্যা করুন</translation>
 <translation id="610911394827799129"><ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />-এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিংয়ের ইতিহাস থাকতে পারে</translation>
 <translation id="6132597952260690497">ইনস্টল করা এক্সটেনশন এবং প্লাগ-ইন সম্বন্ধীয় তথ্য</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{কিছুই নয়}=1{১টি পাসওয়ার্ড (সিঙ্ক করা হয়েছে)}one{#টি পাসওয়ার্ড (সিঙ্ক করা হয়েছে)}other{#টি পাসওয়ার্ড (সিঙ্ক করা হয়েছে)}}</translation>
 <translation id="6146055958333702838">সব কেবল পরীক্ষা করুন এবং আপনি ব্যবহার করছেন এমন যেকোনো রাউটার, মডেম বা অন্যান্য নেটওয়ার্ক ডিভাইসগুলি আবার চালু করুন।</translation>
 <translation id="614940544461990577">এটি করে দেখুন:</translation>
 <translation id="6151417162996330722">সার্ভারের সার্টিফিকেটের বৈধতার সময়সীমা আছে যা খুবই দীর্ঘ।</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790">এই সমস্যা সম্পর্কে <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" />।</translation>
 <translation id="7455133967321480974">বিশ্বব্যাপী ডিফল্ট ব্যবহার করুন (অবরোধ করুন)</translation>
 <translation id="7460618730930299168">আপনি যা বেছে নিয়েছেন তার থেকে স্ক্রিনিংটি আলাদা। এগিয়ে যাবেন?</translation>
-<translation id="7465410862124366659">এই পৃষ্ঠা, <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />]-এর মালিকানাধীন বলে শনাক্ত করা হয়েছে।</translation>
 <translation id="7473891865547856676">না থাক</translation>
 <translation id="7481312909269577407">ফরওয়ার্ড</translation>
 <translation id="7485870689360869515">কোনো ডেটা পাওয়া যায়নি৷</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb
index f3adf1ab..d4b947d 100644
--- a/components/strings/components_strings_ca.xtb
+++ b/components/strings/components_strings_ca.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (sobre)</translation>
 <translation id="3061707000357573562">Servei de pedaç</translation>
 <translation id="3064966200440839136">Per pagar amb una aplicació externa sortiràs del mode d'incògnit. Vols continuar?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Cap}=1{1 contrasenya}other{# contrasenyes}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Afegeix l'adreça de recollida</translation>
 <translation id="3105172416063519923">Identificador de l'element:</translation>
@@ -944,7 +943,6 @@
 <translation id="6094273045989040137">Anota</translation>
 <translation id="610911394827799129">A <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> trobaràs altres maneres d'explorar l'historial de navegació del teu Compte de Google</translation>
 <translation id="6132597952260690497">Informació sobre les extensions i els connectors instal·lats</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Cap}=1{1 contrasenya (sincronitzada)}other{# contrasenyes (sincronitzades)}}</translation>
 <translation id="6146055958333702838">Reviseu els cables i reinicieu els encaminadors, els mòdems o altres
         dispositius de xarxa que feu servir.</translation>
 <translation id="614940544461990577">Prova el següent:</translation>
@@ -1182,7 +1180,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Obtenir més informació<ph name="END_LINK" /> sobre aquest problema</translation>
 <translation id="7455133967321480974">Utilitza l'opció predeterminada global (Bloqueja)</translation>
 <translation id="7460618730930299168">La projecció no és com havies seleccionat. Vols continuar?</translation>
-<translation id="7465410862124366659">Aquesta pàgina s'ha identificat com a propietat de l'organització <ph name="ORGANIZATION" /> (<ph name="JURISDICTION" />).</translation>
 <translation id="7473891865547856676">No, gràcies</translation>
 <translation id="7481312909269577407">Endavant</translation>
 <translation id="7485870689360869515">No s'han trobat dades.</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index 8cf38809..3b8c1d75a 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (obálka)</translation>
 <translation id="3061707000357573562">Služba oprav</translation>
 <translation id="3064966200440839136">Chystáte se opustit anonymní režim, abyste mohli zaplatit v externí aplikaci. Chcete pokračovat?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Žádné}=1{1 heslo}few{# hesla}many{# hesla}other{# hesel}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Přidat adresu vyzvednutí</translation>
 <translation id="3105172416063519923">ID díla:</translation>
@@ -940,7 +939,6 @@
 <translation id="6094273045989040137">Přidat značky a poznámky</translation>
 <translation id="610911394827799129">Na stránce <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> mohou být k dispozici další druhy historie prohlížení zaznamenané ve vašem účtu Google.</translation>
 <translation id="6132597952260690497">Informace o nainstalovaných rozšířeních a pluginech</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Žádné}=1{1 heslo (synchronizováno)}few{# hesla (synchronizováno)}many{# hesla (synchronizováno)}other{# hesel (synchronizováno)}}</translation>
 <translation id="6146055958333702838">Zkontrolujte všechny kabely a restartujte všechny směrovače, modemy a další síťová zařízení, která používáte.</translation>
 <translation id="614940544461990577">Zkuste:</translation>
 <translation id="6151417162996330722">Certifikát serveru má příliš dlouhé období platnosti.</translation>
@@ -1176,7 +1174,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /> o tomto problému.</translation>
 <translation id="7455133967321480974">Použít výchozí globální hodnotu (Blokovat)</translation>
 <translation id="7460618730930299168">Přehrává se jiný obsah, než jste vybrali. Pokračovat?</translation>
-<translation id="7465410862124366659">Tuto stránku vlastní organizace <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Ne, děkuji</translation>
 <translation id="7481312909269577407">Vpřed</translation>
 <translation id="7485870689360869515">Nebyla nalezena žádná data.</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index bf6cc961..d1a62d4 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Tjeneste til programrettelse</translation>
 <translation id="3064966200440839136">Du forlader inkognitotilstand for at betale via en ekstern applikation. Vil du fortsætte?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Ingen}=1{1 adgangskode}one{# adgangskode}other{# adgangskoder}}</translation>
 <translation id="3095940652251934233">Erklæring</translation>
 <translation id="3096100844101284527">Tilføj afhentningsadresse</translation>
 <translation id="3105172416063519923">Aktiv-id:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Annoter</translation>
 <translation id="610911394827799129">Din Google-konto kan have andre former for browserhistorik på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Oplysninger om installerede udvidelser og plugins</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Ingen}=1{1 adgangskode (synkroniseret)}one{# adgangskode (synkroniseret)}other{# adgangskoder (synkroniseret)}}</translation>
 <translation id="6146055958333702838">Kontrollér eventuelle kabler, og genstart alle routere, modemmer eller andre
     netværksenheder, du bruger.</translation>
 <translation id="614940544461990577">Prøv at:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /> om dette problem.</translation>
 <translation id="7455133967321480974">Brug global standard (bloker)</translation>
 <translation id="7460618730930299168">Screeningen stemmer ikke overens med det, du har valgt. Vil du fortsætte?</translation>
-<translation id="7465410862124366659"><ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] blev identificeret som ejer af denne side.</translation>
 <translation id="7473891865547856676">Nej tak</translation>
 <translation id="7481312909269577407">Frem</translation>
 <translation id="7485870689360869515">Der blev ikke fundet nogen data.</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index 001107c1..59933ab4 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (Umschlag)</translation>
 <translation id="3061707000357573562">Patchdienst</translation>
 <translation id="3064966200440839136">Der Inkognitomodus wird beendet, um über eine externe Anwendung zu zahlen. Fortfahren?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Keine}=1{1 Passwort}other{# Passwörter}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Abholadresse hinzufügen</translation>
 <translation id="3105172416063519923">Geräte-ID: </translation>
@@ -942,7 +941,6 @@
 <translation id="6094273045989040137">Anmerkung hinzufügen</translation>
 <translation id="610911394827799129">Unter <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> sind möglicherweise weitere Arten von Browserverlaufsdaten für Ihr Google-Konto gespeichert.</translation>
 <translation id="6132597952260690497">Informationen zu installierten Erweiterungen und Plug-ins</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Keine}=1{1 Passwort (synchronisiert)}other{# Passwörter (synchronisiert)}}</translation>
 <translation id="6146055958333702838">Überprüfen Sie alle Kabel und starten Sie alle verwendeten Router, Modems und
     anderen Netzwerkgeräte neu.</translation>
 <translation id="614940544461990577">Versuchen Sie Folgendes:</translation>
@@ -1180,7 +1178,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /> zu diesem Problem.</translation>
 <translation id="7455133967321480974">Globalen Standard verwenden (Blockieren)</translation>
 <translation id="7460618730930299168">Die Filmvorführung entspricht nicht Ihrer Auswahl. Möchten Sie fortfahren?</translation>
-<translation id="7465410862124366659">Diese Seite wurde als Eigentum von <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] identifiziert.</translation>
 <translation id="7473891865547856676">Nein danke</translation>
 <translation id="7481312909269577407">Vorwärts</translation>
 <translation id="7485870689360869515">Keine Daten gefunden</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index 975c0640..4691361 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Φάκελος)</translation>
 <translation id="3061707000357573562">Υπηρεσία ενημέρωσης κώδικα</translation>
 <translation id="3064966200440839136">Αποχώρηση από την κατάσταση ανώνυμης περιήγησης για πληρωμή μέσω εξωτερικής εφαρμογής. Συνέχεια;</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Κανένας}=1{1 κωδικός πρόσβασης}other{# κωδικοί πρόσβασης}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Προσθήκη διεύθυνσης παραλαβής</translation>
 <translation id="3105172416063519923">Αναγνωριστικό στοιχείο:</translation>
@@ -953,7 +952,6 @@
 <translation id="6094273045989040137">Σχολιασμός</translation>
 <translation id="610911394827799129">Ο Λογαριασμός Google ενδέχεται να διαθέτει άλλες μορφές ιστορικού περιήγησης στη διεύθυνση <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Πληροφορίες σχετικά με εγκατεστημένες επεκτάσεις και προσθήκες</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Κανένας}=1{1 κωδικός πρόσβασης (συγχρονισμένος)}other{# κωδικοί πρόσβασης (συγχρονισμένοι)}}</translation>
 <translation id="6146055958333702838">Ελέγξτε τυχόν καλώδια και επανεκκινήστε δρομολογητές, μόντεμ ή άλλες συσκευές
     του δικτύου που ενδεχομένως χρησιμοποιείτε.</translation>
 <translation id="614940544461990577">Δοκιμάστε να κάνετε τα εξής:</translation>
@@ -1194,7 +1192,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Να μάθετε περισσότερα<ph name="END_LINK" /> σχετικά με αυτό το πρόβλημα.</translation>
 <translation id="7455133967321480974">Χρήση καθολικής προεπιλεγμένης ρύθμισης (Αποκλεισμός)</translation>
 <translation id="7460618730930299168">Η προβολή είναι διαφορετική από αυτήν που έχετε επιλέξει. Θέλετε να συνεχίσετε;</translation>
-<translation id="7465410862124366659">Αυτή η σελίδα έχει αναγνωριστεί ότι ανήκει στον οργανισμό <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Όχι, ευχαριστώ</translation>
 <translation id="7481312909269577407">Προώθηση</translation>
 <translation id="7485870689360869515">Δεν βρέθηκαν δεδομένα</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb
index 8494163..d75f69f0c 100644
--- a/components/strings/components_strings_en-GB.xtb
+++ b/components/strings/components_strings_en-GB.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Patch Service</translation>
 <translation id="3064966200440839136">Leaving incognito mode to pay via an external application. Continue?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{None}=1{1 password}other{# passwords}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Add pickup address</translation>
 <translation id="3105172416063519923">Asset ID:</translation>
@@ -944,7 +943,6 @@
 <translation id="6094273045989040137">Annotate</translation>
 <translation id="610911394827799129">Your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Information about installed extensions and plugins</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{None}=1{1 password (synced)}other{# passwords (synced)}}</translation>
 <translation id="6146055958333702838">Check any cables and reboot any routers, modems or other network
     devices you may be using.</translation>
 <translation id="614940544461990577">Try:</translation>
@@ -1182,7 +1180,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Find out more<ph name="END_LINK" /> about this problem.</translation>
 <translation id="7455133967321480974">Use global default (Block)</translation>
 <translation id="7460618730930299168">The screening is different from what you selected. Continue?</translation>
-<translation id="7465410862124366659">This page has been identified as being owned by <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">No, thanks</translation>
 <translation id="7481312909269577407">Forward</translation>
 <translation id="7485870689360869515">No data found.</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index bd73473..e6f30ca 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Aplicar parche al servicio</translation>
 <translation id="3064966200440839136">Saldrás del modo de navegación incógnito para pagar mediante una aplicación externa. ¿Deseas continuar?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Ninguna}=1{1 contraseña}other{# contraseñas}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Agregar dirección de retiro</translation>
 <translation id="3105172416063519923">ID de recurso:</translation>
@@ -953,7 +952,6 @@
 <translation id="6094273045989040137">Agregar anotación</translation>
 <translation id="610911394827799129">Es posible que tu cuenta de Google tenga otros formularios del historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Información sobre las extensiones y los complementos instalados</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Ninguna}=1{1 contraseña (sincronizada)}other{# contraseñas (sincronizadas)}}</translation>
 <translation id="6146055958333702838">Revisa los cables y reinicia los routers, módems u otros dispositivos
         de red que estés usando.</translation>
 <translation id="614940544461990577">Intenta:</translation>
@@ -1194,7 +1192,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /> acerca de este problema</translation>
 <translation id="7455133967321480974">Usar configuración global predeterminada (Bloquear)</translation>
 <translation id="7460618730930299168">La proyección es diferente a tu selección. ¿Quieres continuar?</translation>
-<translation id="7465410862124366659">Esta página pertenece a <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">No, gracias</translation>
 <translation id="7481312909269577407">Reenviar</translation>
 <translation id="7485870689360869515">No se encontró ningún dato.</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index 602eab73..db44a67 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -29,7 +29,7 @@
 <translation id="1113869188872983271">&amp;Deshacer reorganización</translation>
 <translation id="1125573121925420732">Es probable que se muestren advertencias mientras se actualiza la seguridad de los sitios web, pero pronto se solucionará.</translation>
 <translation id="1126551341858583091">El tamaño del almacenamiento local es de <ph name="CRASH_SIZE" />.</translation>
-<translation id="1127259989763091435">¿Quieres confirmar y guardar la tarjeta en la cuenta de Google?</translation>
+<translation id="1127259989763091435">¿Quieres confirmar y guardar la tarjeta en tu cuenta de Google?</translation>
 <translation id="112840717907525620">Caché de política correcta</translation>
 <translation id="1131264053432022307">Imagen copiada</translation>
 <translation id="1150979032973867961">Este servidor no ha podido probar que su dominio es <ph name="DOMAIN" />, el sistema operativo de tu ordenador no confía en su certificado de seguridad. Este problema puede deberse a una configuración incorrecta o a que un atacante haya interceptado la conexión.</translation>
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (sobre)</translation>
 <translation id="3061707000357573562">Aplicar parche a servicio</translation>
 <translation id="3064966200440839136">Saldrás del modo de incógnito para realizar un pago en una aplicación externa. ¿Quieres continuar?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Ninguna}=1{1 contraseña}other{# contraseñas}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Añadir dirección de recogida</translation>
 <translation id="3105172416063519923">ID de recurso:</translation>
@@ -695,7 +694,7 @@
 <translation id="4738601419177586157">Sugerencia de búsqueda de <ph name="TEXT" /></translation>
 <translation id="4742407542027196863">Gestionar contraseñas…</translation>
 <translation id="4744603770635761495">Ruta del ejecutable</translation>
-<translation id="47454865135383664">¿Quieres añadir la tarjeta a la cuenta de Google?</translation>
+<translation id="47454865135383664">¿Quieres almacenar los detalles de facturación en tu cuenta de Google?</translation>
 <translation id="4750917950439032686">Tu información (por ejemplo, las contraseñas o los números de las tarjetas de crédito) es privada cuando se envía a este sitio web.</translation>
 <translation id="4756388243121344051">&amp;Historial</translation>
 <translation id="4758311279753947758">Añadir información de contacto</translation>
@@ -944,7 +943,6 @@
 <translation id="6094273045989040137">Anotar</translation>
 <translation id="610911394827799129">Es posible que tu cuenta de Google tenga otros tipos de historial de navegación en la página <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Información de las extensiones y complementos instalados</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Ninguna}=1{1 contraseña (sincronizada)}other{# contraseñas (sincronizadas)}}</translation>
 <translation id="6146055958333702838">Comprueba los cables y reinicia los routers, los módems o cualquier otro dispositivo
     de red que estés utilizando.</translation>
 <translation id="614940544461990577">Prueba a:</translation>
@@ -1182,7 +1180,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Consultar más información<ph name="END_LINK" /> sobre este problema</translation>
 <translation id="7455133967321480974">Utilizar valor predeterminado global (Bloquear)</translation>
 <translation id="7460618730930299168">El filtro es distinto al que has seleccionado. ¿Quieres continuar?</translation>
-<translation id="7465410862124366659">Esta página se ha identificado como propiedad de <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">No, gracias</translation>
 <translation id="7481312909269577407">Adelante</translation>
 <translation id="7485870689360869515">No se han encontrado datos.</translation>
@@ -1353,7 +1350,7 @@
 <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation>
 <translation id="834457929814110454">Si entiendes los riesgos para tu seguridad, puedes <ph name="BEGIN_LINK" />acceder a este sitio<ph name="END_LINK" /> antes de que se hayan eliminado los programas dañinos.</translation>
 <translation id="8349305172487531364">Barra de marcadores</translation>
-<translation id="836241887727198552">¿Quieres guardar la tarjeta en la cuenta de Google?</translation>
+<translation id="836241887727198552">¿Quieres guardar los detalles de facturación en tu cuenta de Google?</translation>
 <translation id="8363502534493474904">Desactivar el modo avión</translation>
 <translation id="8364627913115013041">No establecida</translation>
 <translation id="8368476060205742148">Servicios de Google Play</translation>
@@ -1396,7 +1393,7 @@
 <translation id="8620436878122366504">Tus padres aún no lo han aprobado</translation>
 <translation id="8622948367223941507">Legal-Extra</translation>
 <translation id="8625384913736129811">Guardar esta tarjeta en el dispositivo</translation>
-<translation id="8626112503828625890">¿Quieres guardar la información de facturación en la cuenta de Google?</translation>
+<translation id="8626112503828625890">¿Quieres almacenar los detalles de facturación en tu cuenta de Google?</translation>
 <translation id="8663226718884576429">Resumen del pedido: <ph name="TOTAL_LABEL" /> (más detalles)</translation>
 <translation id="8680536109547170164"><ph name="QUERY" />, respuesta: <ph name="ANSWER" /></translation>
 <translation id="8685155993131031756">Prc-16K</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb
index 3268415..916ff47 100644
--- a/components/strings/components_strings_et.xtb
+++ b/components/strings/components_strings_et.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (ümbrik)</translation>
 <translation id="3061707000357573562">Teenuse paikamine</translation>
 <translation id="3064966200440839136">Väljute inkognito režiimist, et välise rakenduse kaudu maksta. Kas soovite jätkata?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Ühtegi}=1{1 parool}other{# parooli}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Lisage kättesaamisaadress</translation>
 <translation id="3105172416063519923">Vara ID:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Lisa märkus</translation>
 <translation id="610911394827799129">Aadressil <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> võib teie Google'i kontol olla muus vormis sirvimisajalugu</translation>
 <translation id="6132597952260690497">Installitud laienduste ja pistikprogrammide teave</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Ühtegi}=1{1 parool (sünkroonitud)}other{# parooli (sünkroonitud)}}</translation>
 <translation id="6146055958333702838">Kontrollige kaableid ning taaskäivitage kõik ruuterid, modemid ja muud
     kasutuses olevad võrguseadmed.</translation>
 <translation id="614940544461990577">Proovige järgmist.</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Vaadake lisateavet<ph name="END_LINK" /> probleemi kohta.</translation>
 <translation id="7455133967321480974">Kasuta globaalset vaikeseadet (blokeeri)</translation>
 <translation id="7460618730930299168">Filtreerimine erineb valitust. Kas jätkata?</translation>
-<translation id="7465410862124366659">Tuvastati, et selle lehe omanik on <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Tänan, ei</translation>
 <translation id="7481312909269577407">Edasta</translation>
 <translation id="7485870689360869515">Andmeid ei leitud.</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index 0ed8f0f..b5d12a33 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">سرویس وصله</translation>
 <translation id="3064966200440839136">درحال خروج از حالت ناشناس، برای پرداخت ازطریق یک برنامه خارجی. ادامه می‌دهید؟</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{هیچ‌کدام}=1{۱ گذرواژه}one{# گذرواژه}other{# گذرواژه}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">افزودن نشانی تحویل گرفتن</translation>
 <translation id="3105172416063519923">شناسه دارایی:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">حاشیه‌نویسی</translation>
 <translation id="610911394827799129">‏ممکن است حساب Google شما اشکال دیگری از سابقه مرور در <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> داشته باشد</translation>
 <translation id="6132597952260690497">اطلاعات مربوط به افزونه‌ها و افزایه‌های نصب‌شده</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{هیچ‌کدام}=1{۱ گذرواژه (همگام‌سازی‌شده)}one{# گذرواژه (همگام‌سازی‌شده)}other{# گذرواژه (همگام‌سازی‌شده)}}</translation>
 <translation id="6146055958333702838">همه کابل‌ها را بررسی کنید و همه ره‌یاب‌ها، مودم‌ها، یا دیگر دستگاه‌های
    شبکه‌ای را که ممکن است درحال استفاده از آن‌ها باشید مجدداً راه‌اندازی کنید.</translation>
 <translation id="614940544461990577">این موارد را امتحان کنید:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790">درباره این مشکل <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">استفاده از پیش‌فرض جهانی (مسدود)</translation>
 <translation id="7460618730930299168">فیلم در حال نمایش با آنچه انتخاب کرده‌اید متفاوت است. ادامه می‌دهید؟</translation>
-<translation id="7465410862124366659">این صفحه به‌عنوان صفحه‌ای متعلق به <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] شناسایی شده است.</translation>
 <translation id="7473891865547856676">نه متشکرم</translation>
 <translation id="7481312909269577407">ارسال کردن</translation>
 <translation id="7485870689360869515">هیچ داده‌ای یافت نشد.</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb
index ceec66a8..55c0ae88 100644
--- a/components/strings/components_strings_fi.xtb
+++ b/components/strings/components_strings_fi.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (kirjekuori)</translation>
 <translation id="3061707000357573562">Virheenkorjauspalvelu</translation>
 <translation id="3064966200440839136">Incognito-tilasta poistutaan ulkoisessa sovelluksessa maksamisen vuoksi. Haluatko jatkaa?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Ei mitään}=1{1 salasana}other{# salasanaa}}</translation>
 <translation id="3095940652251934233">Tiliote</translation>
 <translation id="3096100844101284527">Lisää noutopaikan osoite</translation>
 <translation id="3105172416063519923">Laitteen tunnus:</translation>
@@ -953,7 +952,6 @@
 <translation id="6094273045989040137">Tee merkintä</translation>
 <translation id="610911394827799129">Google-tililläsi voi olla muita selaushistoriatietoja osoitteessa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Tietoja asennetuista laajennuksista</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Ei mitään}=1{1 salasana (synkronoitu)}other{# salasanaa (synkronoitu)}}</translation>
 <translation id="6146055958333702838">Tarkista kaikki kaapelit ja käynnistä uudelleen reitittimet, modeemit ja muut
     käytössä olevat verkkolaitteet.</translation>
 <translation id="614940544461990577">Kokeile seuraavia toimenpiteitä:</translation>
@@ -1194,7 +1192,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />tiedonhakua<ph name="END_LINK" /> ongelmaan liittyen</translation>
 <translation id="7455133967321480974">Käytä yleistä oletusasetusta (estä)</translation>
 <translation id="7460618730930299168">Näkymä eroaa valinnoistasi. Haluatko jatkaa?</translation>
-<translation id="7465410862124366659">Tämän sivun omistajaksi on tunnistettu <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Ei kiitos</translation>
 <translation id="7481312909269577407">Seuraava</translation>
 <translation id="7485870689360869515">Tietoja ei löydy.</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index 5dc52e24..29be2b4 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Serbisyo sa Pag-patch</translation>
 <translation id="3064966200440839136">Aalis sa incognito mode upang magbayad sa pamamagitan ng external na application. Magpatuloy?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Wala}=1{1 password}one{# password}other{# na password}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Magdagdag ng Address sa Pag-pick up</translation>
 <translation id="3105172416063519923">Asset ID:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">I-annotate</translation>
 <translation id="610911394827799129">Maaaring may iba pang anyo ng history ng pag-browse ang iyong Google Account sa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Impormasyon tungkol sa mga naka-install na extension at plugin</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Wala}=1{1 password (naka-sync)}one{# password (naka-sync)}other{# na password (naka-sync)}}</translation>
 <translation id="6146055958333702838">Tingnan ang anumang mga kable at i-reboot ang anumang mga router, modem o iba
     pang mga network device na maaaring ginagamit mo.</translation>
 <translation id="614940544461990577">Subukang:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /> tungkol sa problemang ito.</translation>
 <translation id="7455133967321480974">Gamitin ang pangkalahatang default (I-block)</translation>
 <translation id="7460618730930299168">Iba ang screening sa napili mo. Magpatuloy?</translation>
-<translation id="7465410862124366659">Natukoy ang page na ito bilang pagmamay-ari ng <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Hindi, Salamat</translation>
 <translation id="7481312909269577407">Sumulong</translation>
 <translation id="7485870689360869515">Walang nahanap na data.</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index a9000d8..29dd16f 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (enveloppe)</translation>
 <translation id="3061707000357573562">Service d'application de correctifs</translation>
 <translation id="3064966200440839136">En payant via une application externe, vous allez quitter le mode navigation privée. Voulez-vous continuer ?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Aucun}=1{1 mot de passe}one{# mot de passe}other{# mots de passe}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Ajouter une adresse d'enlèvement</translation>
 <translation id="3105172416063519923">ID d'élément : </translation>
@@ -944,7 +943,6 @@
 <translation id="6094273045989040137">Annoter</translation>
 <translation id="610911394827799129">Votre compte Google conserve peut-être d'autres contenus d'historique de navigation sur la page <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Informations à propos des extensions et plug-ins installés</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Aucun}=1{1 mot de passe (synchronisé)}one{# mot de passe (synchronisé)}other{# mots de passe (synchronisés)}}</translation>
 <translation id="6146055958333702838">Vérifiez les câbles et redémarrez votre routeur, votre modem
     ou tout autre périphérique réseau utilisé.</translation>
 <translation id="614940544461990577">Voici quelques conseils :</translation>
@@ -1182,7 +1180,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /> sur ce problème.</translation>
 <translation id="7455133967321480974">Utiliser le paramètre global par défaut ("Bloquer")</translation>
 <translation id="7460618730930299168">Le filtrage est différent de ce que vous avez sélectionné. Continuer ?</translation>
-<translation id="7465410862124366659">Cette page a été identifiée comme appartenant à <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Non, merci</translation>
 <translation id="7481312909269577407">Avancer</translation>
 <translation id="7485870689360869515">Aucune donnée n'a été trouvée.</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 3ec375f..251290fb 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (એન્વલપ)</translation>
 <translation id="3061707000357573562">પૅચ સેવા</translation>
 <translation id="3064966200440839136">બાહ્ય ઍપ્લિકેશન મારફતે ચુકવણી કરવા માટે છુપો મોડ છોડી રહ્યાં છીએ. તો ચાલુ રાખીએ?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{કોઈ નહીં}=1{1 પાસવર્ડ}one{# પાસવર્ડ}other{# પાસવર્ડ}}</translation>
 <translation id="3095940652251934233">સ્ટેટમેંટ</translation>
 <translation id="3096100844101284527">પિકઅપ માટેનું સરનામું ઉમેરો</translation>
 <translation id="3105172416063519923">સંપત્તિ ID:</translation>
@@ -951,7 +950,6 @@
 <translation id="6094273045989040137">એનોટેટ કરો</translation>
 <translation id="610911394827799129">તમારા Google એકાઉન્ટમાં <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> પર બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો હોય શકે છે</translation>
 <translation id="6132597952260690497">ઇન્સ્ટૉલ કરેલાં એક્સ્ટેંશન અને પ્લગ-ઇન વિશે માહિતી</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{કોઈ નહીં}=1{1 પાસવર્ડ (સિંક કરેલ)}one{# પાસવર્ડ (સિંક કરેલ)}other{# પાસવર્ડ (સિંક કરેલ)}}</translation>
 <translation id="6146055958333702838">કોઈપણ કેબલ્સ તપાસો અને તમે કદાચ ઉપયોગમાં લઇ રહ્યાં હોય તેવા કોઇપણ રાઉટર્સ, મૉડેમ્સ 
     અથવા અન્ય નેટવર્ક ઉપકરણોને રીબૂટ કરો.</translation>
 <translation id="614940544461990577">પ્રયાસ કરો:</translation>
@@ -1192,7 +1190,6 @@
 <translation id="7451311239929941790">આ સમસ્યા વિશે <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">વૈશ્વિક ડિફોલ્ટનો ઉપયોગ કરો (અવરોધિત કરો)</translation>
 <translation id="7460618730930299168">તમે પસંદ કર્યું તેનાથી સ્ક્રીનિંગ અલગ છે. ચાલુ રાખીએ?</translation>
-<translation id="7465410862124366659">આ પેજ <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />]ની માલિકીનું હોવાનું ઓળખવામાં આવ્યું છે.</translation>
 <translation id="7473891865547856676">નહીં આભાર</translation>
 <translation id="7481312909269577407">ફોર્વર્ડ કરો</translation>
 <translation id="7485870689360869515">કોઈ ડેટા મળ્યો નથી.</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb
index be3e846..5b84b01 100644
--- a/components/strings/components_strings_hi.xtb
+++ b/components/strings/components_strings_hi.xtb
@@ -401,7 +401,6 @@
 <translation id="3060227939791841287">सी9 (एन्वेलप)</translation>
 <translation id="3061707000357573562">पैच सेवा</translation>
 <translation id="3064966200440839136">किसी बाहरी ऐप्लिकेशन के ज़रिए भुगतान करने के लिए गुप्त मोड छोड़ रहे हैं. जारी रखना चाहते हैं?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{कुछ नहीं}=1{1 पासवर्ड}one{# पासवर्ड}other{# पासवर्ड}}</translation>
 <translation id="3095940652251934233">जानकारी</translation>
 <translation id="3096100844101284527">पिकअप का पता जोड़ें</translation>
 <translation id="3105172416063519923">एसेट आईडी:</translation>
@@ -950,7 +949,6 @@
 <translation id="6094273045989040137">एनोटेट करें</translation>
 <translation id="610911394827799129">आपके Google खाते में <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> पर दूसरी तरह के ब्राउज़िंग इतिहास हो सकते हैं</translation>
 <translation id="6132597952260690497">इंस्टॉल किए गए एक्सटेंशन और प्लग इन के बारे में जानकारी</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{कुछ नहीं}=1{1 पासवर्ड (सिंक किया हुआ)}one{# पासवर्ड (सिंक किए हुए)}other{# पासवर्ड (सिंक किए हुए)}}</translation>
 <translation id="6146055958333702838">सभी केबल जांचें और आपके उपयोग किए जा रहे सभी राउटर, मॉडेम या अन्य नेटवर्क
     डिवाइस को 'फिर चालू करें'.</translation>
 <translation id="614940544461990577">यह आज़माकर देखें:</translation>
@@ -1191,7 +1189,6 @@
 <translation id="7451311239929941790">इस समस्या के बारे में <ph name="BEGIN_LINK" />ज़्यादा जानें<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">वैश्विक डिफ़ॉल्ट का उपयोग करें (अवरोधित करें)</translation>
 <translation id="7460618730930299168">यह स्क्रीनिंग आपकी चुनी गई स्क्रीनिंग से अलग है. क्या आप जारी रखना चाहते हैं?</translation>
-<translation id="7465410862124366659">इस पेज की पहचान की गई है कि इसका मालिक <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] है.</translation>
 <translation id="7473891865547856676">नहीं, रहने दें</translation>
 <translation id="7481312909269577407">आगे जाएं</translation>
 <translation id="7485870689360869515">कोई डेटा नहीं मिला</translation>
@@ -1393,7 +1390,7 @@
 <translation id="8522552481199248698">Chrome से आप अपने Google खाते की सुरक्षा कर सकते हैं और अपना पासवर्ड बदल सकते हैं.</translation>
 <translation id="8543181531796978784">आप <ph name="BEGIN_ERROR_LINK" />पहचान संबंधी समस्‍या की रिपोर्ट<ph name="END_ERROR_LINK" /> कर सकते हैं या अगर आप अपनी सुरक्षा संबंधी जोखिमों को समझते हैं तो, <ph name="BEGIN_LINK" />इस असुरक्षित साइट पर जा<ph name="END_LINK" /> सकते हैं.</translation>
 <translation id="8543556556237226809">प्रश्न पूछना चाहते हैं? तो उस व्यक्ति से संपर्क करें जो आपकी प्रोफ़ाइल की निगरानी करता है.</translation>
-<translation id="8553075262323480129">अनुवाद विफल हो गया क्योंकि पेज की भाषा निर्धारित नहीं की जा सकी.</translation>
+<translation id="8553075262323480129">अनुवाद विफल हो गया क्योंकि पेज की भाषा तय नहीं की जा सकी.</translation>
 <translation id="8557066899867184262">कार्ड वेरीफ़िकेशन कोड (सीवीसी) आपके कार्ड के पीछे मौजूद होता है.</translation>
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> से एक निजी कनेक्‍शन स्‍थापित नहीं किया जा सकता क्‍योंकि आपके डिवाइस का तारीख और समय (<ph name="DATE_AND_TIME" />) गलत है.</translation>
 <translation id="8564985650692024650">अगर आपने अपने <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> पासवर्ड का दूसरी साइटों पर दोबारा इस्तेमाल किया है, तो क्रोमियम आपको उसे रीसेट करने का सुझाव देता है.</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index 2490220..9152c73 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (omotnica)</translation>
 <translation id="3061707000357573562">Usluga zakrpe</translation>
 <translation id="3064966200440839136">Napuštate anonimni način rada da biste platili putem vanjske aplikacije. Želite li nastaviti?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Nijedna}=1{1 zaporka}one{# zaporka}few{# zaporke}other{# zaporki}}</translation>
 <translation id="3095940652251934233">Izjava</translation>
 <translation id="3096100844101284527">Dodajte adresu preuzimanja</translation>
 <translation id="3105172416063519923">ID uređaja:</translation>
@@ -951,7 +950,6 @@
 <translation id="6094273045989040137">Dodaj bilješku</translation>
 <translation id="610911394827799129">Na vašem Google računu možda postoje drugi oblici povijesti pregledavanja na stranici <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Informacije o instaliranim proširenjima i dodacima</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Nijedna}=1{1 zaporka (sinkronizirana)}one{# zaporka (sinkronizirana)}few{# zaporke (sinkronizirane)}other{# zaporki (sinkroniziranih)}}</translation>
 <translation id="6146055958333702838">Provjerite kabele i ponovo pokrenite usmjerivače, modeme ili druge mrežne
         uređaje koje možda upotrebljavate.</translation>
 <translation id="614940544461990577">Pokušajte sljedeće:</translation>
@@ -1192,7 +1190,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /> o tom problemu.</translation>
 <translation id="7455133967321480974">Upotrijebi globalnu zadanu vrijednost (blokiraj)</translation>
 <translation id="7460618730930299168">Projekcija se razlikuje od onog što ste odabrali. Želite li nastaviti?</translation>
-<translation id="7465410862124366659">Otkriveno je da je ta stranica u vlasništvu organizacije <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Ne, hvala</translation>
 <translation id="7481312909269577407">Naprijed</translation>
 <translation id="7485870689360869515">Nema pronađenih podataka.</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index a9415ca5..8e3a970 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (boríték)</translation>
 <translation id="3061707000357573562">Javítókészlet szolgáltatás</translation>
 <translation id="3064966200440839136">Inkognitómód elhagyása külső alkalmazással történő fizetéshez. Folytatja?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Nincs}=1{1 jelszó}other{# jelszó}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Átvételi cím hozzáadása</translation>
 <translation id="3105172416063519923">Tartalomazonosító:</translation>
@@ -950,7 +949,6 @@
 <translation id="6094273045989040137">Jegyzetelés</translation>
 <translation id="610911394827799129">Előfordulhat, hogy a böngészési előzmények más formái még megtalálhatók Google-fiókjában a <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> webhelyen</translation>
 <translation id="6132597952260690497">Információ a telepített bővítményekről és beépülő modulokról</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Nincs}=1{1 jelszó (szinkronizálva)}other{# jelszó (szinkronizálva)}}</translation>
 <translation id="6146055958333702838">Ellenőrizze a kábeleket, majd indítsa újra a routert, modemet vagy más
     hálózati eszközt, amelyet használ.</translation>
 <translation id="614940544461990577">Próbálja ki a következőket:</translation>
@@ -1191,7 +1189,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />További információk megtekintése<ph name="END_LINK" /> a problémával kapcsolatban.</translation>
 <translation id="7455133967321480974">Globális alapértelmezés használata (Tiltás)</translation>
 <translation id="7460618730930299168">Az előzetes vetítés eltér az Ön által kijelölttől.  Folytatja?</translation>
-<translation id="7465410862124366659">Az oldalt a rendszer a(z) <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] tulajdonaként azonosította.</translation>
 <translation id="7473891865547856676">Nem, köszönöm</translation>
 <translation id="7481312909269577407">Előre</translation>
 <translation id="7485870689360869515">Nem található adat.</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index 1ab6e45..0a2ee14 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Layanan Patch</translation>
 <translation id="3064966200440839136">Keluar dari mode penyamaran untuk membayar melalui aplikasi eksternal. Lanjutkan?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Tidak ada}=1{1 sandi}other{# sandi}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Tambahkan Alamat Pengambilan</translation>
 <translation id="3105172416063519923">ID Aset:</translation>
@@ -951,7 +950,6 @@
 <translation id="6094273045989040137">Anotasi</translation>
 <translation id="610911394827799129">Akun Google Anda mungkin memiliki bentuk histori penjelajahan lainnya di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Informasi tentang ekstensi dan plugin yang diinstal</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Tidak ada}=1{1 sandi (disinkronkan)}other{# sandi (disinkronkan)}}</translation>
 <translation id="6146055958333702838">Periksa semua kabel dan boot ulang router, modem, atau perangkat
     jaringan lain yang mungkin Anda gunakan.</translation>
 <translation id="614940544461990577">Coba:</translation>
@@ -1190,7 +1188,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /> tentang masalah ini.</translation>
 <translation id="7455133967321480974">Gunakan default global (Cekal)</translation>
 <translation id="7460618730930299168">Penyaringan ini berbeda dengan yang telah Anda pilih. Lanjutkan?</translation>
-<translation id="7465410862124366659">Halaman ini telah diidentifikasi sebagai milik <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Lain Kali</translation>
 <translation id="7481312909269577407">Maju</translation>
 <translation id="7485870689360869515">Tidak ada data yang ditemukan.</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb
index aee74ee..83fc558 100644
--- a/components/strings/components_strings_it.xtb
+++ b/components/strings/components_strings_it.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Servizio di applicazione patch</translation>
 <translation id="3064966200440839136">Per procedere al pagamento tramite un'applicazione esterna, uscirai dalla modalità di navigazione in incognito. Continuare?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Nessuna}=1{1 password}other{# password}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Aggiungi l'indirizzo di ritiro</translation>
 <translation id="3105172416063519923">ID asset:</translation>
@@ -949,7 +948,6 @@
 <translation id="6094273045989040137">Consente di inserire l'annotazione</translation>
 <translation id="610911394827799129">Il tuo Account Google potrebbe avere altre forme di cronologia di navigazione all'indirizzo <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Informazioni su estensioni e plug-in installati</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Nessuna}=1{1 password (sincronizzata)}other{# password (sincronizzate)}}</translation>
 <translation id="6146055958333702838">Controlla eventuali cavi e riavvia eventuali router, modem o altri dispositivi di rete in uso.</translation>
 <translation id="614940544461990577">Prova a:</translation>
 <translation id="6151417162996330722">Il certificato del server ha un periodo di validità troppo lungo.</translation>
@@ -1189,7 +1187,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Leggere ulteriori informazioni<ph name="END_LINK" /> sul problema.</translation>
 <translation id="7455133967321480974">Usa predefinita globale (Blocca)</translation>
 <translation id="7460618730930299168">I contenuti mostrati sono diversi da quelli che hai selezionato. Continuare?</translation>
-<translation id="7465410862124366659">Questa pagina è stata identificata come proprietà di <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">No grazie</translation>
 <translation id="7481312909269577407">Avanti</translation>
 <translation id="7485870689360869515">Nessun dato trovato.</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb
index 2c289cf..de53f25e 100644
--- a/components/strings/components_strings_iw.xtb
+++ b/components/strings/components_strings_iw.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (Envelope)‎</translation>
 <translation id="3061707000357573562">שירות תיקון</translation>
 <translation id="3064966200440839136">בחרת לצאת ממצב גלישה בסתר כדי לשלם באמצעות יישום חיצוני. להמשיך?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{ללא}=1{סיסמה אחת}two{שתי סיסמאות}many{# סיסמאות}other{# סיסמאות}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">הוספת כתובת לאיסוף</translation>
 <translation id="3105172416063519923">מזהה נכס:</translation>
@@ -949,7 +948,6 @@
 <translation id="6094273045989040137">הוספת הערה</translation>
 <translation id="610911394827799129">‏ייתכן שלחשבון Google שלך משויכים סוגים אחרים של היסטוריית גלישה בכתובת <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">מידע על תוספים ויישומי פלאגין מותקנים</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{ללא}=1{סיסמה אחת (מסונכרנת)}two{שתי סיסמאות (מסונכרנות)}many{# סיסמאות (מסונכרנות)}other{# סיסמאות (מסונכרנות)}}</translation>
 <translation id="6146055958333702838">בדוק את הכבלים והפעל מחדש את הנתבים, המודמים ושאר התקני הרשת
   שאתה משתמש בהם.</translation>
 <translation id="614940544461990577">כדאי לנסות:</translation>
@@ -1187,7 +1185,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />למידע נוסף<ph name="END_LINK" /> על בעיה זו.</translation>
 <translation id="7455133967321480974">השתמש בברירת המחדל הכללית (חסום)</translation>
 <translation id="7460618730930299168">הסינון שונה ממה שבחרת. להמשיך?</translation>
-<translation id="7465410862124366659">המערכת זיהתה שהדף הזה נמצא בבעלות <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">לא, תודה</translation>
 <translation id="7481312909269577407">קדימה</translation>
 <translation id="7485870689360869515">לא נמצאו נתונים.</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index 135b075..941f454 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9(封筒)</translation>
 <translation id="3061707000357573562">サービスへのパッチの適用</translation>
 <translation id="3064966200440839136">外部アプリケーションを経由したお支払いの処理に進むため、シークレット モードを解除します。続行しますか?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{なし}=1{1 個のパスワード}other{# 個のパスワード}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">集荷先住所を追加</translation>
 <translation id="3105172416063519923">アセット ID:</translation>
@@ -944,7 +943,6 @@
 <translation id="6094273045989040137">注釈を追加</translation>
 <translation id="610911394827799129">お使いの Google アカウントの <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> に、他の形式の閲覧履歴が記録されている場合があります</translation>
 <translation id="6132597952260690497">インストールされている拡張機能とプラグインに関する情報</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{なし}=1{1 個のパスワード(同期済み)}other{# 個のパスワード(同期済み)}}</translation>
 <translation id="6146055958333702838">ケーブルを確認し、使用しているネットワーク デバイス(ルーター、モデムなど)を
     再起動してください。</translation>
 <translation id="614940544461990577">次をお試しください</translation>
@@ -1182,7 +1180,6 @@
 <translation id="7451311239929941790">この問題について<ph name="BEGIN_LINK" />詳細を確認<ph name="END_LINK" />する</translation>
 <translation id="7455133967321480974">グローバルのデフォルト値([ブロック])を使用</translation>
 <translation id="7460618730930299168">スクリーニングが選択内容と異なっています。続行しますか?</translation>
-<translation id="7465410862124366659">このページは <ph name="ORGANIZATION" />(<ph name="JURISDICTION" />)が所有するページであることが確認されています。</translation>
 <translation id="7473891865547856676">スキップ</translation>
 <translation id="7481312909269577407">進む</translation>
 <translation id="7485870689360869515">データが見つかりません。</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index 417305d..ba547da 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -400,7 +400,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">ಪ್ಯಾಚ್ ಸೇವೆ</translation>
 <translation id="3064966200440839136">ಬಾಹ್ಯ ಅಪ್ಲಿಕೇಶನ್‌‌ ಮೂಲಕರ ಪಾವತಿಸಲು ಅದೃಶ್ಯ ಮೋಡ್‌‌ ತೊರೆಯಲಾಗುತ್ತಿದೆ. ಮುಂದುವರಿಸುವುದೇ?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{ಯಾವುದೂ ಇಲ್ಲ}=1{1 ಪಾಸ್‌ವರ್ಡ್‌}one{# ಪಾಸ್‌ವರ್ಡ್‌ಗಳು}other{# ಪಾಸ್‌ವರ್ಡ್‌ಗಳು}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">ಪಿಕಪ್ ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="3105172416063519923">ಸ್ವತ್ತು ID:</translation>
@@ -947,7 +946,6 @@
 <translation id="6094273045989040137">ಟಿಪ್ಪಣಿ</translation>
 <translation id="610911394827799129">ನಿಮ್ಮ Google ಖಾತೆಯು <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ನಲ್ಲಿ ಇತರ ವಿಧಗಳ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿರಬಹುದು</translation>
 <translation id="6132597952260690497">ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವ ವಿಸ್ತರಣೆಗಳು ಮತ್ತು ಪ್ಲಗ್ಇನ್‌ಗಳ ಕುರಿತು ಮಾಹಿತಿ</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{ಯಾವುದೂ ಇಲ್ಲ}=1{1 ಪಾಸ್‌ವರ್ಡ್ (ಸಿಂಕ್ ಮಾಡಲಾಗಿದೆ)}one{# ಪಾಸ್‌ವರ್ಡ್‌ಗಳು (ಸಿಂಕ್ ಮಾಡಲಾಗಿದೆ)}other{# ಪಾಸ್‌ವರ್ಡ್‌ಗಳು (ಸಿಂಕ್ ಮಾಡಲಾಗಿದೆ)}}</translation>
 <translation id="6146055958333702838">ಯಾವುದೇ ಕೇಬಲ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ. ನೀವು ಬಳಸುತ್ತಿರಬಹುದಾದ ಯಾವುದೇ ರೂಟರ್‌ಗಳು, ಮೋಡೆಮ್‌ಗಳು ಅಥವಾ ಇತರ ನೆಟ್‌ವರ್ಕ್ ಸಾಧನಗಳನ್ನು ರೀಬೂಟ್ ಮಾಡಿ.</translation>
 <translation id="614940544461990577">ಪ್ರಯತ್ನಿಸಿ:</translation>
 <translation id="6151417162996330722">ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರವು ತುಂಬಾ ಉದ್ದವಾದ ವಾಯಿದೆ ಅವಧಿಯನ್ನು ಹೊಂದಿದೆ.</translation>
@@ -1186,7 +1184,6 @@
 <translation id="7451311239929941790">ಈ ಸಮಸ್ಯೆಯ ಕುರಿತು <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯುವಿಕೆ<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">ಜಾಗತಿಕ ಡಿಫಾಲ್ಟ್ ಬಳಸಿ (ನಿರ್ಬಂಧಿಸಿ)</translation>
 <translation id="7460618730930299168">ವೀಕ್ಷಣೆ ಅವಧಿಯು ನೀವು ಆಯ್ಕೆ ಮಾಡಿರುವುದಕ್ಕಿಂತಲೂ ಭಿನ್ನವಾಗಿದೆ. ಮುಂದುವರಿಯುವುದೇ?</translation>
-<translation id="7465410862124366659">ಈ ಪುಟವು <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] ಮಾಲೀಕತ್ವದಲ್ಲಿದೆ ಎಂಬುದನ್ನು ಗುರುತಿಸಲಾಗಿದೆ.</translation>
 <translation id="7473891865547856676">ಇಲ್ಲ, ಧನ್ಯವಾದಗಳು</translation>
 <translation id="7481312909269577407">ಫಾರ್ವರ್ಡ್</translation>
 <translation id="7485870689360869515">ಯಾವುದೇ ಡೇಟಾ ಕಂಡುಬಂದಿಲ್ಲ.</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index 8d2f07fa..3888c22b 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9(봉투)</translation>
 <translation id="3061707000357573562">서비스 패치</translation>
 <translation id="3064966200440839136">시크릿 모드를 종료하고 외부 애플리케이션에서 결제합니다. 계속하시겠습니까?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{없음}=1{비밀번호 1개}other{비밀번호 #개}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">수령 주소 추가</translation>
 <translation id="3105172416063519923">애셋 ID:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">주석 추가</translation>
 <translation id="610911394827799129">Google 계정의 내 활동(<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />)에는 인터넷 방문 기록이 다른 형식으로 남아 있을 수도 있습니다</translation>
 <translation id="6132597952260690497">설치된 확장 프로그램 및 플러그인에 관한 정보</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{없음}=1{비밀번호 1개(동기화됨)}other{비밀번호 #개(동기화됨)}}</translation>
 <translation id="6146055958333702838">케이블을 확인하고 사용 중인 라우터, 모뎀 또는 기타 네트워크 기기를
     재부팅하시기 바랍니다.</translation>
 <translation id="614940544461990577">다음 방법을 시도해 보세요.</translation>
@@ -1192,7 +1190,6 @@
 <translation id="7451311239929941790">이 문제를 <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation>
 <translation id="7455133967321480974">전체 기본값 사용(차단)</translation>
 <translation id="7460618730930299168">선택한 영화와 상영 영화가 다릅니다. 계속하시겠습니까?</translation>
-<translation id="7465410862124366659">이 페이지는 <ph name="ORGANIZATION" />[<ph name="JURISDICTION" />] 소유인 것으로 확인되었습니다.</translation>
 <translation id="7473891865547856676">건너뛰기</translation>
 <translation id="7481312909269577407">앞으로</translation>
 <translation id="7485870689360869515">데이터 없음</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index fd6b45b..9dcbae21 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (vokas)</translation>
 <translation id="3061707000357573562">Pataisos paslauga</translation>
 <translation id="3064966200440839136">Išjungiate inkognito režimą, kad galėtumėte sumokėti naudodami išorinę programą. Tęsti?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Nėra}=1{1 slaptažodis}one{# slaptažodis}few{# slaptažodžiai}many{# slaptažodžio}other{# slaptažodžių}}</translation>
 <translation id="3095940652251934233">Ataskaita</translation>
 <translation id="3096100844101284527">Pridėti paėmimo adresą</translation>
 <translation id="3105172416063519923">Ištekliaus ID:</translation>
@@ -953,7 +952,6 @@
 <translation id="6094273045989040137">Komentuoti</translation>
 <translation id="610911394827799129">„Google“ paskyroje gali būti kito tipo naršymo istorijos, kuri pasiekiama adresu <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Informacija apie įdiegtus plėtinius ir papildinius</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Nėra}=1{1 slaptažodis (sinchronizuotas)}one{# slaptažodis (sinchronizuotas)}few{# slaptažodžiai (sinchronizuoti)}many{# slaptažodžio (sinchronizuota)}other{# slaptažodžių (sinchronizuota)}}</translation>
 <translation id="6146055958333702838">Patikrinkite laidus ir iš naujo paleiskite maršruto parinktuvus, modemus ar kitus
         naudojamus tinklo įrenginius.</translation>
 <translation id="614940544461990577">Pabandykite atlikti toliau nurodytus veiksmus.</translation>
@@ -1194,7 +1192,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /> apie šią problemą.</translation>
 <translation id="7455133967321480974">Naudoti visuotinį numatytąjį nustatymą (blokuoti)</translation>
 <translation id="7460618730930299168">Vaizdas ekrane skiriasi nuo to, ką pasirinkote. Tęsti?</translation>
-<translation id="7465410862124366659">Nustatyta, kad šis puslapis priklauso „<ph name="ORGANIZATION" />“ (<ph name="JURISDICTION" />).</translation>
 <translation id="7473891865547856676">Ne, ačiū</translation>
 <translation id="7481312909269577407">Persiųsti</translation>
 <translation id="7485870689360869515">Nerasta jokių duomenų.</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index 6f1ea19..2e55bfa 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -395,7 +395,6 @@
 <translation id="3060227939791841287">C9 (aploksne)</translation>
 <translation id="3061707000357573562">Ielāpu pakalpojums</translation>
 <translation id="3064966200440839136">Ja maksāšanai tiks izmantota ārēja lietojumprogramma, tiks aizvērts inkognito režīms. Vai turpināt?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Nav}=1{1 parole}zero{# paroles}one{# parole}other{# paroles}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Pievienot saņemšanas adresi</translation>
 <translation id="3105172416063519923">Līdzekļa ID:</translation>
@@ -944,7 +943,6 @@
 <translation id="6094273045989040137">Pievienot piezīmi</translation>
 <translation id="610911394827799129">Jūsu Google kontam var būt citu veidu pārlūkošanas vēstures dati vietnē <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Informācija par instalētajiem paplašinājumiem un spraudņiem</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Nav}=1{1 parole (sinhronizēta)}zero{# paroles (sinhronizētas)}one{# parole (sinhronizēta)}other{# paroles (sinhronizētas)}}</translation>
 <translation id="6146055958333702838">Pārbaudiet vadus un atkārtoti palaidiet maršrutētājus, modemus vai citas
     izmantotās tīkla ierīces.</translation>
 <translation id="614940544461990577">Veiciet tālāk norādītās darbības.</translation>
@@ -1182,7 +1180,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Uzzināt vairāk<ph name="END_LINK" /> par šo problēmu.</translation>
 <translation id="7455133967321480974">Izmantot globālo noklusējumu (Bloķēt)</translation>
 <translation id="7460618730930299168">Pārmeklēšana atšķiras no jūsu atlasītās. Vai vēlaties turpināt?</translation>
-<translation id="7465410862124366659">Tika konstatēts, ka šī lapa pieder organizācijai <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Nē, paldies!</translation>
 <translation id="7481312909269577407">Pārsūtīt</translation>
 <translation id="7485870689360869515">Dati netika atrasti.</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb
index f1abbb0..cef97cf 100644
--- a/components/strings/components_strings_ml.xtb
+++ b/components/strings/components_strings_ml.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (എൻവലപ്പ്)</translation>
 <translation id="3061707000357573562">പാച്ച് സേവനം</translation>
 <translation id="3064966200440839136">ഒരു എക്‌സ്‌റ്റേണൽ അപ്ലിക്കേഷൻ വഴി പണമടയ്‌ക്കാൻ അദൃശ്യ മോഡ് ഒഴിവാക്കുന്നു. തുടരണോ?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{ഒന്നുമില്ല}=1{ഒരു പാസ്‌വേഡ്}other{# പാസ്‌വേഡുകൾ}}</translation>
 <translation id="3095940652251934233">പ്രസ്‌താവന</translation>
 <translation id="3096100844101284527">പിക്കപ്പ് വിലാസം ചേർക്കുക</translation>
 <translation id="3105172416063519923">അസറ്റ് ഐഡി:</translation>
@@ -943,7 +942,6 @@
 <translation id="6094273045989040137">അനോട്ടേറ്റ് ചെയ്യുക</translation>
 <translation id="610911394827799129">നിങ്ങളുടെ Google അക്കൗണ്ടിന് <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> എന്നതിൽ മറ്റ് തരത്തിലുള്ള ബ്രൗസിംഗ് ചരിത്രമുണ്ടായിരിക്കാം.</translation>
 <translation id="6132597952260690497">ഇൻസ്‌റ്റാൾ ചെയ്‌ത വിപുലീകരണങ്ങളെയും പ്ലഗിന്നുകളെയും കുറിച്ചുള്ള വിവരങ്ങൾ</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{ഒന്നുമില്ല}=1{ഒരു പാസ്‌വേഡ് (സമന്വയിപ്പിച്ചത്)}other{# പാസ്‌വേഡുകൾ (സമന്വയിപ്പിച്ചത്)}}</translation>
 <translation id="6146055958333702838">എല്ലാ കേബിളുകളും പരിശോധിക്കുക ഒപ്പം ഏതെങ്കിലും റൂട്ടറുകൾ, മോഡങ്ങൾ നിങ്ങൾ ഉപയോഗിക്കാനിടയുള്ള
         മറ്റ് നെറ്റ്‌വർക്ക് ഉപകരണങ്ങൾ എന്നിവ റീബൂട്ടുചെയ്യുക.</translation>
 <translation id="614940544461990577">പരീക്ഷിച്ചുനോക്കൂ:</translation>
@@ -1179,7 +1177,6 @@
 <translation id="7451311239929941790">ഈ പ്രശ്‌നത്തെക്കുറിച്ച് <ph name="BEGIN_LINK" />കൂടുതലറിയുന്നു<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">ആഗോള ഡിഫോൾട്ട് ഉപയോഗിക്കുക (ബ്ലോക്ക് ചെയ്യുക)</translation>
 <translation id="7460618730930299168">നിങ്ങൾ തിരഞ്ഞെടുത്തതിൽ നിന്ന് വ്യത്യസ്‌തമാണ് ഈ സ്ക്രീനിംഗ്. തുടരണോ?</translation>
-<translation id="7465410862124366659">ഈ പേജ് <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] എന്നതിന്റെ ഉടമസ്‌ഥതയിൽ ആണെന്ന് തിരിച്ചറിഞ്ഞിരിക്കുന്നു.</translation>
 <translation id="7473891865547856676">വേണ്ട, നന്ദി</translation>
 <translation id="7481312909269577407">മുന്നോട്ട്</translation>
 <translation id="7485870689360869515">ഡാറ്റകളൊന്നും കണ്ടെത്തിയില്ല.</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb
index 2c3a9a23..ed6a9639 100644
--- a/components/strings/components_strings_mr.xtb
+++ b/components/strings/components_strings_mr.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">पॅच सेवा</translation>
 <translation id="3064966200440839136">बाह्य ॲप्लिकेशन द्वारे पेमेंट देण्यासाठी गुप्त मोड सोडत आहे. सुरु ठेवायचे?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{काहीही नाही}=1{1 पासवर्ड}other{# पासवर्ड}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">पिकअप पत्ता जोडा</translation>
 <translation id="3105172416063519923">मालमत्ता आयडी:</translation>
@@ -951,7 +950,6 @@
 <translation id="6094273045989040137">भाष्य करा</translation>
 <translation id="610911394827799129">तुमच्या Google खात्यामध्ये <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> वर ब्राउझिंग इतिहासाची अन्य स्वरूपे असू शकतात.</translation>
 <translation id="6132597952260690497">इंस्टॉल केलेल्या एक्स्टेंशन आणि प्लग-इनविषयी माहिती</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{काहीही नाही}=1{1 पासवर्ड (सिंक केलेला)}other{# पासवर्ड (सिंक केलेले)}}</translation>
 <translation id="6146055958333702838">कोणत्याही केबल तपासा आणि कोणतेही राउटर, मोडेम किंवा तुम्ही
 वापरत असलेले
         अन्य नेटवर्क डिव्हाइसेस रीबूट करा.</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790">या समस्येविषयी <ph name="BEGIN_LINK" />अधिक जाणून घेणे<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">सार्वत्रिक डीफॉल्‍ट वापरा (अवरोधित करा)</translation>
 <translation id="7460618730930299168">तुम्ही जे निवडले, त्यापेक्षा स्क्रीनिंग वेगळे आहे. सुरू ठेवायचे का?</translation>
-<translation id="7465410862124366659">हे पेज <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] च्या मालकीचे असल्याचे ओळखले गेले आहे.</translation>
 <translation id="7473891865547856676">नाही, नको</translation>
 <translation id="7481312909269577407">पुढील</translation>
 <translation id="7485870689360869515">डेटा आढळला नाही.</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index 10c38afbf..c06c204 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -395,7 +395,6 @@
 <translation id="3060227939791841287">C9 (Sampul Surat)</translation>
 <translation id="3061707000357573562">Perkhidmatan Tampung</translation>
 <translation id="3064966200440839136">Meninggalkan mod inkognito untuk membayar melalui aplikasi luar. Teruskan?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Tiada}=1{1 kata laluan}other{# kata laluan}}</translation>
 <translation id="3095940652251934233">Kenyataan</translation>
 <translation id="3096100844101284527">Tambahkan Alamat Pengambilan</translation>
 <translation id="3105172416063519923">ID Aset:</translation>
@@ -946,7 +945,6 @@
 <translation id="6094273045989040137">Anotasi</translation>
 <translation id="610911394827799129">Akaun Google anda mungkin mempunyai bentuk sejarah penyemakan imbas yang lain di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Maklumat tentang sambungan dan pemalam yang dipasang</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Tiada}=1{1 kata laluan (disegerakkan)}other{# kata laluan (disegerakkan)}}</translation>
 <translation id="6146055958333702838">Periksa mana-mana kabel dan but semula mana-mana penghala, modem atau peranti
     rangkaian lain yang mungkin anda gunakan.</translation>
 <translation id="614940544461990577">Cuba:</translation>
@@ -1184,7 +1182,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /> tentang masalah ini.</translation>
 <translation id="7455133967321480974">Gunakan lalai global (Sekat)</translation>
 <translation id="7460618730930299168">Tayangan ini berbeza daripada pilihan anda. Teruskan?</translation>
-<translation id="7465410862124366659"><ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] telah dikenal pasti sebagai pemilik halaman ini.</translation>
 <translation id="7473891865547856676">Tidak, Terima Kasih</translation>
 <translation id="7481312909269577407">Majukan</translation>
 <translation id="7485870689360869515">Tiada data dijumpai.</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 522a7631..da35828 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (envelop)</translation>
 <translation id="3061707000357573562">Patchservice</translation>
 <translation id="3064966200440839136">Je verlaat de incognitomodus om te betalen via een externe app. Doorgaan?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Geen}=1{1 wachtwoord}other{# wachtwoorden}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Ophaaladres toevoegen</translation>
 <translation id="3105172416063519923">Item-ID:</translation>
@@ -939,7 +938,6 @@
 <translation id="6094273045989040137">Aantekeningen maken</translation>
 <translation id="610911394827799129">Er kunnen andere vormen van browsegeschiedenis zijn opgeslagen voor je Google-account op <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Informatie over geïnstalleerde extensies en plug-ins</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Geen}=1{1 wachtwoord (gesynchroniseerd)}other{# wachtwoorden (gesynchroniseerd)}}</translation>
 <translation id="6146055958333702838">Controleer alle kabels en start alle routers, modems of andere netwerkapparaten die je gebruikt, opnieuw op.</translation>
 <translation id="614940544461990577">Probeer dit eens:</translation>
 <translation id="6151417162996330722">Het servercertificaat heeft een te lange geldigheidsperiode.</translation>
@@ -1176,7 +1174,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /> over dit probleem.</translation>
 <translation id="7455133967321480974">Algemene standaardinstelling gebruiken (Blokkeren)</translation>
 <translation id="7460618730930299168">De screening verschilt van wat je hebt geselecteerd. Doorgaan?</translation>
-<translation id="7465410862124366659">Deze pagina is geïdentificeerd als eigendom van <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Nee, bedankt</translation>
 <translation id="7481312909269577407">Vooruit</translation>
 <translation id="7485870689360869515">Geen gegevens gevonden.</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index 0120409a..b7236ef 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (konvolutt)</translation>
 <translation id="3061707000357573562">Feilrettingstjeneste</translation>
 <translation id="3064966200440839136">Går ut av inkognitomodus for å betale via en ekstern app. Vil du fortsette?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Ingen}=1{1 passord}other{# passord}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Legg til henteadresse</translation>
 <translation id="3105172416063519923">Ressurs-ID:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Annoter</translation>
 <translation id="610911394827799129">Det kan hende Google-kontoen din har andre typer nettleserlogger på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Informasjon om installerte utvidelser og programtillegg</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Ingen}=1{1 passord (synkronisert)}other{# passord (synkronisert)}}</translation>
 <translation id="6146055958333702838">Sjekk alle kabler, og start rutere, modemer eller andre nettverksenheter
      du bruker, på nytt.</translation>
 <translation id="614940544461990577">Prøv dette:</translation>
@@ -1192,7 +1190,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /> om dette problemet.</translation>
 <translation id="7455133967321480974">Bruk global standardinnstilling (Blokkér)</translation>
 <translation id="7460618730930299168">Fremvisningen er forskjellig fra den du har valgt. Vil du fortsette?</translation>
-<translation id="7465410862124366659">Vi har identifisert at denne siden eies av <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Nei takk</translation>
 <translation id="7481312909269577407">Frem</translation>
 <translation id="7485870689360869515">Ingen data ble funnet.</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb
index f7691b3..079e31be 100644
--- a/components/strings/components_strings_pl.xtb
+++ b/components/strings/components_strings_pl.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (koperta)</translation>
 <translation id="3061707000357573562">Zastosowanie poprawki do usługi</translation>
 <translation id="3064966200440839136">Opuszczasz tryb incognito, by zapłacić w aplikacji zewnętrznej. Kontynuować?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Brak}=1{1 hasło}few{# hasła}many{# haseł}other{# hasła}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Dodaj adres odbioru</translation>
 <translation id="3105172416063519923">Identyfikator zasobu:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Dodaj adnotacje</translation>
 <translation id="610911394827799129">Inne rodzaje historii przeglądania mogą być nadal dostępne na Twoim koncie Google na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Informacje o zainstalowanych rozszerzeniach i wtyczkach</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Brak}=1{1 hasło (synchronizowane)}few{# hasła (synchronizowane)}many{# haseł (synchronizowanych)}other{# hasła (synchronizowanego)}}</translation>
 <translation id="6146055958333702838">Sprawdź wszystkie kable i uruchom ponownie wszelkie używane routery, modemy
     i inne urządzenia sieciowe.</translation>
 <translation id="614940544461990577">Wypróbuj te rozwiązania:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Dowiedz się więcej<ph name="END_LINK" /> o tym problemie.</translation>
 <translation id="7455133967321480974">Użyj globalnej wartości domyślnej (Blokuj)</translation>
 <translation id="7460618730930299168">Godziny seansów są inne niż wybrane przez Ciebie. Czy chcesz kontynuować?</translation>
-<translation id="7465410862124366659">Ta strona została zidentyfikowana jako własność organizacji <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Nie, dziękuję</translation>
 <translation id="7481312909269577407">Dalej</translation>
 <translation id="7485870689360869515">Nie znaleziono danych.</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index df735ce0..ecc335c8 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Aplicar patch ao serviço</translation>
 <translation id="3064966200440839136">Saindo do modo de navegação anônima para pagar usando um aplicativo externo. Continuar?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Nenhuma}=1{1 senha}one{# senha}other{# senhas}}</translation>
 <translation id="3095940652251934233">Meia carta</translation>
 <translation id="3096100844101284527">Adicionar endereço de retirada</translation>
 <translation id="3105172416063519923">Código do recurso:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Anotar</translation>
 <translation id="610911394827799129">Sua Conta do Google pode ter outras formas de histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Informações sobre extensões e plug-ins instalados</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Nenhuma}=1{1 senha (sincronizada)}one{# senha (sincronizada)}other{# senhas (sincronizadas)}}</translation>
 <translation id="6146055958333702838">Verifique todos os cabos e reinicie todos os roteadores, modens ou outros
     dispositivos de rede que você estiver usando.</translation>
 <translation id="614940544461990577">Tente:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Saber mais<ph name="END_LINK" /> sobre esse problema.</translation>
 <translation id="7455133967321480974">Usar padrão global (Bloquear)</translation>
 <translation id="7460618730930299168">A exibição na tela está diferente da que você selecionou. Continuar?</translation>
-<translation id="7465410862124366659">A identificação desta página indica que ela pertence a <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Não, obrigado</translation>
 <translation id="7481312909269577407">Avançar</translation>
 <translation id="7485870689360869515">Nenhum dado encontrado</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index 4a9babd..eee2363c 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Serviço de patch</translation>
 <translation id="3064966200440839136">Está a sair do modo de navegação anónima para pagar através de uma aplicação externa. Pretende continuar?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Nenhuma}=1{1 palavra-passe}other{# palavras-passe}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Adicionar endereço de levantamento</translation>
 <translation id="3105172416063519923">ID de recurso:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Anotar</translation>
 <translation id="610911394827799129">A sua Conta Google pode ter outras formas do histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Informações acerca das extensões e dos plug-ins instalados</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Nenhuma}=1{1 palavra-passe (sincronizada)}other{# palavras-passe (sincronizadas)}}</translation>
 <translation id="6146055958333702838">Verifique os cabos e reinicie todos os routers, modems ou outros
     dispositivos de rede que possa estar a utilizar.</translation>
 <translation id="614940544461990577">Experimente:</translation>
@@ -1192,7 +1190,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Saber mais<ph name="END_LINK" /> sobre este problema.</translation>
 <translation id="7455133967321480974">Utilizar predefinição global (Bloquear)</translation>
 <translation id="7460618730930299168">A apresentação é diferente daquilo que selecionou. Pretende continuar?</translation>
-<translation id="7465410862124366659">Esta página foi identificada como pertencente à entidade <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Não, obrigado</translation>
 <translation id="7481312909269577407">Avançar</translation>
 <translation id="7485870689360869515">Não foram encontrados dados.</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb
index 8edcd2c..f48f847 100644
--- a/components/strings/components_strings_ro.xtb
+++ b/components/strings/components_strings_ro.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Plic)</translation>
 <translation id="3061707000357573562">Serviciu de corecție</translation>
 <translation id="3064966200440839136">Vei părăsi modul incognito pentru a plăti folosind o aplicație externă. Continui?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Niciuna}=1{1 parolă}few{# parole}other{# de parole}}</translation>
 <translation id="3095940652251934233">Extras</translation>
 <translation id="3096100844101284527">Adaugă o adresă de preluare</translation>
 <translation id="3105172416063519923">ID articol:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Adnotează</translation>
 <translation id="610911394827799129">Contul Google poate să ofere alte forme ale istoricului de navigare la <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Informații despre extensiile și pluginurile instalate</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Niciuna}=1{1 parolă (sincronizată)}few{# parole (sincronizate)}other{# de parole (sincronizate)}}</translation>
 <translation id="6146055958333702838">Verifică toate cablurile și repornește routerele, modemurile sau alte
     dispozitive de rețea pe care le folosești.</translation>
 <translation id="614940544461990577">Încearcă:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />să afli mai multe<ph name="END_LINK" /> despre această problemă.</translation>
 <translation id="7455133967321480974">Utilizați setarea prestabilită la nivel global (Blocați)</translation>
 <translation id="7460618730930299168">Proiecția este diferită de ce ai selectat. Continui?</translation>
-<translation id="7465410862124366659">Această pagină a fost identificată ca fiind deținută de <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Nu, mulțumesc</translation>
 <translation id="7481312909269577407">Înainte</translation>
 <translation id="7485870689360869515">Nu s-au găsit date.</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index e448d188..817c5b5 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (конверт)</translation>
 <translation id="3061707000357573562">Исправление сервиса</translation>
 <translation id="3064966200440839136">Вы выйдете из режима инкогнито, чтобы произвести оплату во внешнем приложении. Продолжить?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Нет}=1{1 пароль}one{# пароль}few{# пароля}many{# паролей}other{# пароля}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Добавить адрес получения</translation>
 <translation id="3105172416063519923">Идентификатор объекта:</translation>
@@ -943,7 +942,6 @@
 <translation id="6094273045989040137">Аннотировать</translation>
 <translation id="610911394827799129">Информация о других ваших действиях в Интернете может также храниться на странице <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Информация об установленных расширениях и плагинах</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Нет}=1{1 синхронизированный пароль}one{# синхронизированный пароль}few{# синхронизированных пароля}many{# синхронизированных паролей}other{# синхронизированного пароля}}</translation>
 <translation id="6146055958333702838">Проверьте соединение кабелей, перезагрузите маршрутизаторы, модемы и другие
     сетевые устройства.</translation>
 <translation id="614940544461990577">Попробуйте сделать следующее:</translation>
@@ -1181,7 +1179,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Узнайте больше<ph name="END_LINK" /> об этой проблеме.</translation>
 <translation id="7455133967321480974">Использовать глобальный параметр по умолчанию (блокировать)</translation>
 <translation id="7460618730930299168">Настройки этого сеанса отличаются от тех, которые выбрали вы. Продолжить?</translation>
-<translation id="7465410862124366659">Судя по всему, эта страница принадлежит организации "<ph name="ORGANIZATION" />" (<ph name="JURISDICTION" />).</translation>
 <translation id="7473891865547856676">Пропустить</translation>
 <translation id="7481312909269577407">Вперед</translation>
 <translation id="7485870689360869515">Данные не найдены.</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index dd3f98a73..42bb007 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (obálka)</translation>
 <translation id="3061707000357573562">Služba opráv</translation>
 <translation id="3064966200440839136">Ak zaplatíte pomocou externej aplikácie, opustíte režim inkognito. Chcete pokračovať?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Žiadne}=1{1 heslo}few{# heslá}many{# hesla}other{# hesiel}}</translation>
 <translation id="3095940652251934233">Výpis</translation>
 <translation id="3096100844101284527">Pridať adresu vyzdvihnutia</translation>
 <translation id="3105172416063519923">Identifikátor obsahu:</translation>
@@ -940,7 +939,6 @@
 <translation id="6094273045989040137">Pridať anotáciu</translation>
 <translation id="610911394827799129">Váš účet Google môže mať ďalšie formy histórie prehliadania na adrese <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Informácie o nainštalovaných rozšíreniach a doplnkoch</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Žiadne}=1{1 heslo (synchronizované)}few{# heslá (synchronizované)}many{# hesla (synchronizované)}other{# hesiel (synchronizované)}}</translation>
 <translation id="6146055958333702838">Skontrolujte všetky káble a reštartujte všetky používané smerovače, modemy alebo iné sieťové zariadenia.</translation>
 <translation id="614940544461990577">Vyskúšajte:</translation>
 <translation id="6151417162996330722">Obdobie platnosti certifikátu servera je príliš dlhé</translation>
@@ -1177,7 +1175,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Ďalšie informácie o tomto probléme<ph name="END_LINK" /></translation>
 <translation id="7455133967321480974">Použiť predvolené všeobecné nastavenie (Blokovať)</translation>
 <translation id="7460618730930299168">Zobrazené informácie sa líšia od vášho výberu. Pokračovať?</translation>
-<translation id="7465410862124366659">Táto stránka bola identifikovaná ako vlastníctvo organizácie <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Nie, ďakujem</translation>
 <translation id="7481312909269577407">Dopredu</translation>
 <translation id="7485870689360869515">Nenašli sa žiadne údaje.</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index 98a0e8c..372790ff1 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Storitev za popravke</translation>
 <translation id="3064966200440839136">Zaradi plačila v zunanji aplikaciji boste zapustili način brez beleženja zgodovine. Želite nadaljevati?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Brez}=1{1 geslo}one{# geslo}two{# gesli}few{# gesla}other{# gesel}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Dodajanje naslova za prevzem</translation>
 <translation id="3105172416063519923">ID sredstva:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Pripisovanje</translation>
 <translation id="610911394827799129">V Google Računu so morda druge vrste zgodovine brskanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Podatki o nameščenih razširitvah in vtičnikih</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Brez}=1{1 geslo (sinhronizirano)}one{# geslo (sinhronizirano)}two{# gesli (sinhronizirani)}few{# gesla (sinhronizirana)}other{# gesel (sinhroniziranih)}}</translation>
 <translation id="6146055958333702838">Preverite kable in znova zaženite usmerjevalnike, modeme ali druge omrežne 
     naprave, ki jih uporabljate.</translation>
 <translation id="614940544461990577">Poskusite:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Preberite več<ph name="END_LINK" /> o tej težavi.</translation>
 <translation id="7455133967321480974">Uporabi globalno privzeto (Blokiraj)</translation>
 <translation id="7460618730930299168">Predvajanje se razlikuje od tega, kar ste izbrali. Želite nadaljevati?</translation>
-<translation id="7465410862124366659">Ugotovljeno je bilo, da je lastnik te strani <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Ne, hvala</translation>
 <translation id="7481312909269577407">Naprej</translation>
 <translation id="7485870689360869515">Ni podatkov.</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index a7eab4a..576d649 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (коверат)</translation>
 <translation id="3061707000357573562">Услуга крпљења</translation>
 <translation id="3064966200440839136">Напустићете режим без архивирања да бисте платили у спољној апликацији. Желите ли да наставите?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{None}=1{1 лозинка}one{# лозинка}few{# лозинке}other{# лозинки}}</translation>
 <translation id="3095940652251934233">Изјава</translation>
 <translation id="3096100844101284527">Додај адресу преузимања</translation>
 <translation id="3105172416063519923">ИД елемента:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Додајте напомене</translation>
 <translation id="610911394827799129">Google налог може да има друге облике историје прегледања на <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Информације о инсталираним додацима и додатним компонентама</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{None}=1{1 лозинка (синхронизована)}one{# лозинка (синхронизована)}few{# лозинке (синхронизоване)}other{# лозинки (синхронизованих)}}</translation>
 <translation id="6146055958333702838">Проверите све каблове и рестартујте све рутере, модеме или друге мрежне уређаје које можда користите.</translation>
 <translation id="614940544461990577">Покушајте:</translation>
 <translation id="6151417162996330722">Сертификат сервера има предугачак период важења.</translation>
@@ -1192,7 +1190,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />да сазнате више<ph name="END_LINK" /> о овом проблему.</translation>
 <translation id="7455133967321480974">Користи глобалну подразумевану вредност (Блокирај)</translation>
 <translation id="7460618730930299168">Приказ се разликује од онога што сте изабрали. Желите ли да наставите?</translation>
-<translation id="7465410862124366659">Ова страница је идентификована као власништво организације <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Не, хвала</translation>
 <translation id="7481312909269577407">Проследи</translation>
 <translation id="7485870689360869515">Нису пронађени подаци.</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index 0d3db6a..c900da5 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (kuvert)</translation>
 <translation id="3061707000357573562">Tjänst för programkorrigering</translation>
 <translation id="3064966200440839136">Om du betalar i ett externt program sker inte det i inkognitoläge. Vill du fortsätta?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Ingen}=1{1 lösenord}other{# lösenord}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Lägg till hämtningsadress</translation>
 <translation id="3105172416063519923">Tillgångs-id:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Annotera</translation>
 <translation id="610911394827799129">Det kan finnas andra former av webbhistorik i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Information om installerade tillägg och pluginprogram</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Ingen}=1{1 lösenord (synkroniserat)}other{# lösenord (synkroniserade)}}</translation>
 <translation id="6146055958333702838">Kontrollera kablar och starta om routrar, modem och andra nätverksenheter
     som används.</translation>
 <translation id="614940544461990577">Testa att</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />att läsa mer<ph name="END_LINK" /> om det här problemet.</translation>
 <translation id="7455133967321480974">Använd global standardinställning (Blockera)</translation>
 <translation id="7460618730930299168">Visningen skiljer sig från den du valde. Vill du fortsätta?</translation>
-<translation id="7465410862124366659">Den här sidan har identifierats som tillhörig <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Nej tack</translation>
 <translation id="7481312909269577407">Framåt</translation>
 <translation id="7485870689360869515">Ingen data hittades.</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb
index 69a4a17..4be9d2e 100644
--- a/components/strings/components_strings_sw.xtb
+++ b/components/strings/components_strings_sw.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Bahasha)</translation>
 <translation id="3061707000357573562">Huduma ya Kurekebisha</translation>
 <translation id="3064966200440839136">Inaacha hali fiche ili kulipa kupitia programu ya nje. Je, ungependa kuendelea?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Hamna}=1{Nenosiri 1}other{Manenosiri #}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Ongeza Anwani ya Mahali pa Kuchukulia Bidhaa</translation>
 <translation id="3105172416063519923">Kitambulisho cha Kipengee:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Weka vidokezo</translation>
 <translation id="610911394827799129">Huenda Akaunti yako ya Google ina aina nyingine za historia ya kuvinjari katika <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6132597952260690497">Maelezo kuhusu viendelezi na programu jalizi zilizosakinishwa</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Hamna}=1{Nenosiri 1 (limesawazishwa)}other{Manenosiri # (yamesawazishwa)}}</translation>
 <translation id="6146055958333702838">Angalia kebo zozote na uwashe tena kisambaza data, modemu, au vifaa vingine vyovyote vya
         mtandao ambavyo huenda unavitumia.</translation>
 <translation id="614940544461990577">Jaribu:</translation>
@@ -1191,7 +1189,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /> kuhusu hitilafu hii.</translation>
 <translation id="7455133967321480974">Tumia chaguomsingi la duniani (Zuia)</translation>
 <translation id="7460618730930299168">Onyesho kwenye skrini ni tofauti na ile uliyochagua. Ungependa kuendelea?</translation>
-<translation id="7465410862124366659">Tumebaini kuwa ukurasa huu unamilikiwa na <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">La Asante</translation>
 <translation id="7481312909269577407">Mbele</translation>
 <translation id="7485870689360869515">Hakuna data iliyopatikana.</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index 12ecb03..aa8bec22 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -403,7 +403,6 @@
 <translation id="3060227939791841287">C9 (என்வலப்)</translation>
 <translation id="3061707000357573562">பேட்ச் சேவை</translation>
 <translation id="3064966200440839136">வெளிப்புற ஆப்ஸின் மூலம் பணத்தை செலுத்த, மறைநிலையிலிருந்து வெளியேறுகிறீர்கள். தொடரவா?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{ஏதுமில்லை}=1{1 கடவுச்சொல்}other{# கடவுச்சொற்கள்}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">பிக்அப் முகவரியைச் சேர்</translation>
 <translation id="3105172416063519923">பண்பு ஐடி:</translation>
@@ -949,7 +948,6 @@
 <translation id="6094273045989040137">விரிவுரைப் பயன்முறை</translation>
 <translation id="610911394827799129"><ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> என்ற முகவரியில், உங்கள் Google கணக்கிற்கான பிற வகை உலாவல் வரலாறும் இருக்கக்கூடும்</translation>
 <translation id="6132597952260690497">நிறுவப்பட்டுள்ள நீட்டிப்புகளையும் செருகுநிரல்களையும் குறித்த தகவல்கள்</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{ஏதுமில்லை}=1{1 கடவுச்சொல் (ஒத்திசைத்தது)}other{# கடவுச்சொற்கள் (ஒத்திசைத்தவை)}}</translation>
 <translation id="6146055958333702838">கேபிள்களைச் சரிபார்த்து, நீங்கள் பயன்படுத்தக்கூடிய ரூட்டர்கள், மோடம்கள் அல்லது பிற நெட்வொர்க் சாதனங்களை மறுபடி தொடங்கவும்.</translation>
 <translation id="614940544461990577">இவற்றைச் செய்து பார்க்கவும்:</translation>
 <translation id="6151417162996330722">சேவை சான்றிதழ் நீண்ட செல்லுபடிக் காலத்தைக் கொண்டுள்ளது.</translation>
@@ -1189,7 +1187,6 @@
 <translation id="7451311239929941790">இந்தச் சிக்கல் குறித்து <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">முழுமையான இயல்புநிலையைப் பயன்படுத்து (தடு)</translation>
 <translation id="7460618730930299168">திரையிலுள்ள உள்ளடக்கமும் நீங்கள் தேர்ந்தெடுத்த உள்ளடக்கமும் மாறுபடுகின்றன. தொடரவா?</translation>
-<translation id="7465410862124366659">இந்தப் பக்கம் <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] நிறுவனத்துக்குச் சொந்தமானது எனக் கண்டறியப்பட்டுள்ளது.</translation>
 <translation id="7473891865547856676">வேண்டாம் நன்றி</translation>
 <translation id="7481312909269577407">அடுத்த பக்கம்</translation>
 <translation id="7485870689360869515">தரவு எதுவும் இல்லை.</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 71cf2e3..47838eb 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -396,7 +396,6 @@
 <translation id="3060227939791841287">C9 (ఎన్వలప్)</translation>
 <translation id="3061707000357573562">ప్యాచ్ సేవ</translation>
 <translation id="3064966200440839136">బాహ్య అప్లికేషన్‌ ద్వారా చెల్లించడానికి అజ్ఞాత మోడ్ నుండి నిష్క్రమిస్తోంది. కొనసాగించాలా?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{ఏమీ లేవు}=1{1 పాస్‌వర్డ్}other{# పాస్‌వర్డ్‌లు}}</translation>
 <translation id="3095940652251934233">స్టేట్‌మెంట్</translation>
 <translation id="3096100844101284527">పికప్ చిరునామాను జోడించండి</translation>
 <translation id="3105172416063519923">అసెట్ ID:</translation>
@@ -946,7 +945,6 @@
 <translation id="6094273045989040137">అదనపు గమనికను జోడించండి</translation>
 <translation id="610911394827799129">మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు</translation>
 <translation id="6132597952260690497">ఇన్‌స్టాల్ చేసిన ఎక్స్‌టెన్షన్‌లు, ప్లగ్ఇన్‌ల గురించిన సమాచారం</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{ఏమీ లేవు}=1{1 పాస్‌వర్డ్ (సమకాలీకరించబడింది)}other{# పాస్‌వర్డ్‌లు (సమకాలీకరించబడ్డాయి)}}</translation>
 <translation id="6146055958333702838">ఏవైనా కేబుల్‌లను తనిఖీ చేయండి మరియు మీరు ఉపయోగించే ఏవైనా రూటర్‌లు, మోడెమ్‌లు
         లేదా ఇతర నెట్‌వర్క్ పరికరాలను రీబూట్ చేయండి.</translation>
 <translation id="614940544461990577">ఇలా చేసి ప్రయత్నించండి:</translation>
@@ -1184,7 +1182,6 @@
 <translation id="7451311239929941790">ఈ సమస్య గురించి <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">సార్వజనీన డిఫాల్ట్‌ను ఉపయోగించు (బ్లాక్ చేయి)</translation>
 <translation id="7460618730930299168">మీరు ఎంచుకున్నది మరియు స్క్రీనింగ్ చేస్తున్నది వేరుగా ఉన్నాయి. కొనసాగించాలా?</translation>
-<translation id="7465410862124366659">ఈ పేజీ అన్నది <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />]కు చెందినదిగా గుర్తించబడింది.</translation>
 <translation id="7473891865547856676">వద్దు, ధన్యవాదాలు</translation>
 <translation id="7481312909269577407">ఫార్వర్డ్</translation>
 <translation id="7485870689360869515">డేటా కనుగొనబడలేదు.</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index 7c2f276..89c27b4c 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (ซองจดหมาย)</translation>
 <translation id="3061707000357573562">แพตช์บริการ</translation>
 <translation id="3064966200440839136">ออกจากโหมดไม่ระบุตัวตนเพื่อชำระเงินผ่านแอปพลิเคชันภายนอก ดำเนินการต่อไหม</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{ไม่มี}=1{รหัสผ่าน 1 รายการ}other{รหัสผ่าน # รายการ}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">เพิ่มที่อยู่สำหรับรับสินค้า</translation>
 <translation id="3105172416063519923">รหัสสินทรัพย์:</translation>
@@ -951,7 +950,6 @@
 <translation id="6094273045989040137">ใส่หมายเหตุ</translation>
 <translation id="610911394827799129">บัญชี Google อาจมีประวัติการท่องเว็บรูปแบบอื่นๆ ที่ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">ข้อมูลเกี่ยวกับส่วนขยายและปลั๊กอินที่ติดตั้งไว้</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{ไม่มี}=1{รหัสผ่าน (ที่ซิงค์) 1 รายการ}other{รหัสผ่าน (ที่ซิงค์) # รายการ}}</translation>
 <translation id="6146055958333702838">ตรวจสายเคเบิลและรีบูตเราเตอร์ โมเด็ม หรืออุปกรณ์เครือข่ายอื่น
     ที่คุณอาจใช้งานอยู่</translation>
 <translation id="614940544461990577">ลอง:</translation>
@@ -1192,7 +1190,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" />เกี่ยวกับปัญหานี้</translation>
 <translation id="7455133967321480974">ใช้ค่าเริ่มต้นสากล (บล็อก)</translation>
 <translation id="7460618730930299168">การแสดงบนหน้าจอแตกต่างจากที่คุณเลือก ต้องการดำเนินการต่อไหม</translation>
-<translation id="7465410862124366659">หน้านี้ได้รับการระบุว่าเป็นของ <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />]</translation>
 <translation id="7473891865547856676">ไม่ ขอบคุณ</translation>
 <translation id="7481312909269577407">ส่งต่อ</translation>
 <translation id="7485870689360869515">ไม่พบข้อมูล</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 148bc21b..44250f58 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Zarf)</translation>
 <translation id="3061707000357573562">Yama Hizmeti</translation>
 <translation id="3064966200440839136">Harici bir uygulama üzerinden ödeme gerçekleştirmek için gizli moddan çıkılacak. Devam edilsin mi?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Yok}=1{1 şifre}other{# şifre}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Alınacağı Adres Ekle</translation>
 <translation id="3105172416063519923">Öğe Kimliği:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Ek açıklama ekle</translation>
 <translation id="610911394827799129">Google Hesabınızın <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> adresinde başka biçimlerde tarama geçmişi olabilir</translation>
 <translation id="6132597952260690497">Yüklü uzantılar ve eklentiler hakkında bilgi</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Yok}=1{1 şifre (senkronize edildi)}other{# şifre (senkronize edildi)}}</translation>
 <translation id="6146055958333702838">Kabloları kontrol edin ve kullandığınız yönlendiricileri, modemleri
     veya diğer ağ cihazlarını yeniden başlatın.</translation>
 <translation id="614940544461990577">Aşağıdakileri deneyin:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790">Bu sorun hakkında <ph name="BEGIN_LINK" />daha fazla<ph name="END_LINK" /> bilgi edinme.</translation>
 <translation id="7455133967321480974">Genel varsayılanı kullan (Engelle)</translation>
 <translation id="7460618730930299168">Filtreleme sizin seçiminizden farklı. Devam etmek istiyor musunuz?</translation>
-<translation id="7465410862124366659">Bu sayfanın <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] adlı kuruluşa ait olduğu belirlendi.</translation>
 <translation id="7473891865547856676">Hayır, Teşekkürler</translation>
 <translation id="7481312909269577407">İleri</translation>
 <translation id="7485870689360869515">Hiçbir veri bulunamadı.</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index 25b52e3..942e0fa56 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (конверт)</translation>
 <translation id="3061707000357573562">Служба виправлень</translation>
 <translation id="3064966200440839136">Щоб оплатити в зовнішньому додатку, ви вийдете з режиму анонімного перегляду. Продовжити?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Немає}=1{1 пароль}one{# пароль}few{# паролі}many{# паролів}other{# пароля}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Додати адресу отримання</translation>
 <translation id="3105172416063519923">Ідентифікатор об’єкта:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Додати примітку</translation>
 <translation id="610911394827799129">Історія веб-перегляду може також зберігатися у вашому обліковому записі Google на сторінці <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Інформація про встановлені розширення та плагіни</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Немає}=1{1 пароль (синхронізовано)}one{# пароль (синхронізовано)}few{# паролі (синхронізовано)}many{# паролів (синхронізовано)}other{# пароля (синхронізовано)}}</translation>
 <translation id="6146055958333702838">Перевірте всі кабелі та перезавантажте всі маршрутизатори, модеми чи інші мережеві
     пристрої, які ви використовуєте.</translation>
 <translation id="614940544461990577">Спробуйте:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />дізнатися більше<ph name="END_LINK" /> про цю проблему.</translation>
 <translation id="7455133967321480974">Використовувати глобальне налаштування за умовчанням (Блокувати)</translation>
 <translation id="7460618730930299168">Дані відрізняються від вибраних. Продовжити?</translation>
-<translation id="7465410862124366659">Власником цієї сторінки є <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Ні, дякую</translation>
 <translation id="7481312909269577407">Переслати</translation>
 <translation id="7485870689360869515">Даних не знайдено.</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb
index 7419051e..06042562 100644
--- a/components/strings/components_strings_vi.xtb
+++ b/components/strings/components_strings_vi.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (Phong bì)</translation>
 <translation id="3061707000357573562">Dịch vụ vá lỗi</translation>
 <translation id="3064966200440839136">Rời khỏi chế độ ẩn danh để thanh toán qua một ứng dụng bên ngoài. Tiếp tục?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{Không có}=1{1 mật khẩu}other{# mật khẩu}}</translation>
 <translation id="3095940652251934233">Tuyên bố</translation>
 <translation id="3096100844101284527">Thêm địa chỉ nhận hàng</translation>
 <translation id="3105172416063519923">ID phần tử:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">Chú thích</translation>
 <translation id="610911394827799129">Tài khoản Google của bạn có thể có các dạng lịch sử duyệt web khác tại <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
 <translation id="6132597952260690497">Thông tin về các tiện ích và plugin đã cài đặt</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{Không có}=1{1 mật khẩu (đã đồng bộ hóa)}other{# mật khẩu (đã đồng bộ hóa)}}</translation>
 <translation id="6146055958333702838">Kiểm tra mọi dây cáp rồi khởi động lại bộ định tuyến, modem hoặc các thiết bị
     mạng khác mà bạn có thể đang sử dụng.</translation>
 <translation id="614940544461990577">Hãy thử:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /> về sự cố này.</translation>
 <translation id="7455133967321480974">Sử dụng cài đặt mặc định chung (Chặn)</translation>
 <translation id="7460618730930299168">Màn hình khác với nội dung bạn đã chọn. Bạn có muốn tiếp tục không?</translation>
-<translation id="7465410862124366659">Trang này đã được xác định là thuộc sở hữu của <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />].</translation>
 <translation id="7473891865547856676">Không, cảm ơn</translation>
 <translation id="7481312909269577407">Chuyển tiếp</translation>
 <translation id="7485870689360869515">Không tìm thấy dữ liệu.</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index e80ad7e7..d272c35e7 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -394,7 +394,6 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">修补服务</translation>
 <translation id="3064966200440839136">将要退出隐身模式,以便通过外部应用付款。是否继续?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{无}=1{1 个密码}other{# 个密码}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">添加取货地址</translation>
 <translation id="3105172416063519923">资产 ID:</translation>
@@ -940,7 +939,6 @@
 <translation id="6094273045989040137">注释</translation>
 <translation id="610911394827799129">您的 Google 帐号在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的浏览记录</translation>
 <translation id="6132597952260690497">与已安装的扩展程序和插件相关的信息</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{无}=1{1 个密码(已同步)}other{# 个密码(已同步)}}</translation>
 <translation id="6146055958333702838">请检查所有网线是否都已连好,然后重新启动您可能正在使用的任何路由器、调制解调器或其他网络设备。</translation>
 <translation id="614940544461990577">请试试以下办法:</translation>
 <translation id="6151417162996330722">该服务器证书的有效期过长。</translation>
@@ -1177,7 +1175,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />详细了解<ph name="END_LINK" />此问题。</translation>
 <translation id="7455133967321480974">使用全局默认设置(阻止)</translation>
 <translation id="7460618730930299168">此处显示的放映时间不同于您的选择。继续?</translation>
-<translation id="7465410862124366659">系统识别出此网页归 <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] 所有。</translation>
 <translation id="7473891865547856676">不,谢谢</translation>
 <translation id="7481312909269577407">前进</translation>
 <translation id="7485870689360869515">找不到数据。</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index 209f49a..5ed1c48 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -402,7 +402,6 @@
 <translation id="3060227939791841287">C9 (信封)</translation>
 <translation id="3061707000357573562">修補服務</translation>
 <translation id="3064966200440839136">即將離開無痕模式,改為使用外部應用程式付款,要繼續嗎?</translation>
-<translation id="3083099961703215236">{COUNT,plural, =0{無}=1{1 組密碼}other{# 組密碼}}</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">新增取件地址</translation>
 <translation id="3105172416063519923">資產 ID:</translation>
@@ -952,7 +951,6 @@
 <translation id="6094273045989040137">註解</translation>
 <translation id="610911394827799129">你的 Google 帳戶仍可能保留了其他類型的瀏覽記錄 (可前往 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 查詢)。</translation>
 <translation id="6132597952260690497">已安裝的擴充功能和外掛程式相關資訊</translation>
-<translation id="6144381551823904650">{COUNT,plural, =0{無}=1{1 組密碼 (保持同步)}other{# 組密碼 (保持同步)}}</translation>
 <translation id="6146055958333702838">檢查您的網路線是否穩固連接。重新啟動您可能正在使用的任何路由器、
     數據機或其他網路裝置。</translation>
 <translation id="614940544461990577">建議做法:</translation>
@@ -1193,7 +1191,6 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />進一步瞭解<ph name="END_LINK" />這個問題。</translation>
 <translation id="7455133967321480974">使用全域預設值 (封鎖)</translation>
 <translation id="7460618730930299168">放映場次細節與你所選取的不同。要繼續嗎?</translation>
-<translation id="7465410862124366659">系統識別此頁面為 <ph name="ORGANIZATION" /> [<ph name="JURISDICTION" />] 所擁有。</translation>
 <translation id="7473891865547856676">不用了,謝謝</translation>
 <translation id="7481312909269577407">往前</translation>
 <translation id="7485870689360869515">找不到任何資料。</translation>
diff --git a/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc b/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc
index cf00360..430ac2c 100644
--- a/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc
+++ b/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc
@@ -498,8 +498,8 @@
 }
 
 TEST_F(BookmarkModelObserverImplTest, ShouldNotSyncUnsyncableBookmarks) {
-  auto owned_extra_node =
-      std::make_unique<bookmarks::BookmarkPermanentNode>(100);
+  auto owned_extra_node = std::make_unique<bookmarks::BookmarkPermanentNode>(
+      100, bookmarks::BookmarkNode::FOLDER);
   bookmarks::BookmarkPermanentNode* extra_node = owned_extra_node.get();
   auto client = std::make_unique<bookmarks::TestBookmarkClient>();
   client->SetExtraNodeToLoad(std::move(owned_extra_node));
diff --git a/components/sync_bookmarks/synced_bookmark_tracker_unittest.cc b/components/sync_bookmarks/synced_bookmark_tracker_unittest.cc
index 330190e3..5ca2e2b 100644
--- a/components/sync_bookmarks/synced_bookmark_tracker_unittest.cc
+++ b/components/sync_bookmarks/synced_bookmark_tracker_unittest.cc
@@ -559,8 +559,8 @@
      ShouldMatchModelWithUnsyncableNodesAndMetadata) {
   // Add a managed node with an arbitrary id 100.
   const int64_t kManagedNodeId = 100;
-  auto owned_extra_node =
-      std::make_unique<bookmarks::BookmarkPermanentNode>(kManagedNodeId);
+  auto owned_extra_node = std::make_unique<bookmarks::BookmarkPermanentNode>(
+      kManagedNodeId, bookmarks::BookmarkNode::FOLDER);
   bookmarks::BookmarkPermanentNode* extra_node = owned_extra_node.get();
   auto client = std::make_unique<bookmarks::TestBookmarkClient>();
   client->SetExtraNodeToLoad(std::move(owned_extra_node));
diff --git a/components/sync_sessions/session_sync_bridge.cc b/components/sync_sessions/session_sync_bridge.cc
index df684e7..bef9c12 100644
--- a/components/sync_sessions/session_sync_bridge.cc
+++ b/components/sync_sessions/session_sync_bridge.cc
@@ -16,6 +16,7 @@
 #include "base/sequenced_task_runner.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/time/time.h"
+#include "components/history/core/browser/history_service.h"
 #include "components/sync/base/hash_util.h"
 #include "components/sync/base/time.h"
 #include "components/sync/model/data_type_activation_request.h"
@@ -297,6 +298,16 @@
   local_session_event_router_->Stop();
   if (delete_metadata_change_list) {
     store_->DeleteAllDataAndMetadata();
+
+    // Ensure that we clear on-demand favicons that were downloaded using user
+    // synced history data, especially by HistoryUiFaviconRequestHandler. We do
+    // it upon disabling of sessions sync to have symmetry with the condition
+    // checked inside that layer to allow downloads (sessions sync enabled).
+    history::HistoryService* history_service =
+        sessions_client_->GetHistoryService();
+    if (history_service) {
+      history_service->ClearAllOnDemandFavicons();
+    }
   }
   syncing_.reset();
 }
diff --git a/components/viz/common/gpu/metal_api_proxy.mm b/components/viz/common/gpu/metal_api_proxy.mm
index 2c88f8c3..7edc312f 100644
--- a/components/viz/common/gpu/metal_api_proxy.mm
+++ b/components/viz/common/gpu/metal_api_proxy.mm
@@ -5,16 +5,133 @@
 #include "components/viz/common/gpu/metal_api_proxy.h"
 
 #include "base/debug/crash_logging.h"
+#include "base/memory/ref_counted.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/sys_string_conversions.h"
+#include "base/synchronization/condition_variable.h"
 #include "components/crash/core/common/crash_key.h"
 #include "ui/gl/progress_reporter.h"
 
 namespace {
+
+// State shared between the caller of [MTLDevice newLibraryWithSource:] and its
+// MTLNewLibraryCompletionHandler (and similarly for -[MTLDevice
+// newRenderPipelineStateWithDescriptor:]. The completion handler may be called
+// on another thread, so all members are protected by a lock. Accessed via
+// scoped_refptr to ensure that it exists until its last accessor is gone.
+class API_AVAILABLE(macos(10.11)) AsyncMetalState
+    : public base::RefCountedThreadSafe<AsyncMetalState> {
+ public:
+  AsyncMetalState() : condition_variable(&lock) {}
+
+  // All members may only be accessed while |lock| is held.
+  base::Lock lock;
+  base::ConditionVariable condition_variable;
+
+  // Set to true when the completion handler is called.
+  bool has_result = false;
+
+  // The results of the async operation. These are set only by the first
+  // completion handler to run.
+  id<MTLLibrary> library = nil;
+  id<MTLRenderPipelineState> render_pipeline_state = nil;
+  NSError* error = nil;
+
+ private:
+  friend class base::RefCountedThreadSafe<AsyncMetalState>;
+  ~AsyncMetalState() { DCHECK(has_result); }
+};
+
+id<MTLLibrary> API_AVAILABLE(macos(10.11))
+    NewLibraryWithRetry(id<MTLDevice> device,
+                        NSString* source,
+                        MTLCompileOptions* options,
+                        __autoreleasing NSError** error) {
+  // Request and wait on an asynchronous shader compilation. If the compilation
+  // does not return within kRetryPeriod, then re-issue the compilation request.
+  // The value of kRetryPeriod is the 98th percentile of
+  // Gpu.MetalProxy.NewLibraryTime.
+  SCOPED_UMA_HISTOGRAM_TIMER("Gpu.MetalProxy.NewLibraryTime");
+  const base::TimeDelta kRetryPeriod = base::TimeDelta::FromMilliseconds(50);
+
+  auto state = base::MakeRefCounted<AsyncMetalState>();
+  for (size_t attempt = 0;; ++attempt) {
+    // The completion handler will signal the condition variable we will wait
+    // on. Note that completionHandler will hold a reference to |state|.
+    MTLNewLibraryCompletionHandler completionHandler = ^(id<MTLLibrary> library,
+                                                         NSError* error) {
+      base::AutoLock lock(state->lock);
+      if (!state->has_result) {
+        UMA_HISTOGRAM_COUNTS_100("Gpu.MetalProxy.NewLibraryAttempt", attempt);
+        state->has_result = true;
+        state->library = [library retain];
+        state->error = [error retain];
+        state->condition_variable.Signal();
+      }
+    };
+
+    // Request asynchronous compilation. Note that |completionHandler| may be
+    // called from within this function call, or it may be called from a
+    // different thread.
+    [device newLibraryWithSource:source
+                         options:options
+               completionHandler:completionHandler];
+
+    // Wait for any of the previous calls to complete.
+    base::AutoLock lock(state->lock);
+    state->condition_variable.TimedWait(kRetryPeriod);
+
+    // If we have results from any attempt, use them.
+    if (state->has_result) {
+      *error = [state->error autorelease];
+      return state->library;
+    }
+
+    // Otherwise, try compiling the shader again. Keep re-trying forever until
+    // the watchdog timer kills the process.
+  }
+}
+
+id<MTLRenderPipelineState> API_AVAILABLE(macos(10.11))
+    NewRenderPipelineStateWithRetry(id<MTLDevice> device,
+                                    MTLRenderPipelineDescriptor* descriptor,
+                                    __autoreleasing NSError** error) {
+  // This function is almost-identical to the above NewLibraryWithRetry. See
+  // comments in that function.
+  // The value of kRetryPeriod is the 99th percentile of
+  // Gpu.MetalProxy.NewRenderPipelineStateTime.
+  SCOPED_UMA_HISTOGRAM_TIMER("Gpu.MetalProxy.NewRenderPipelineStateTime");
+  const base::TimeDelta kRetryPeriod = base::TimeDelta::FromMilliseconds(50);
+  auto state = base::MakeRefCounted<AsyncMetalState>();
+  for (size_t attempt = 0;; ++attempt) {
+    MTLNewRenderPipelineStateCompletionHandler completionHandler =
+        ^(id<MTLRenderPipelineState> render_pipeline_state, NSError* error) {
+          base::AutoLock lock(state->lock);
+          if (!state->has_result) {
+            UMA_HISTOGRAM_COUNTS_100(
+                "Gpu.MetalProxy.NewRenderPipelineStateAttempt", attempt);
+            state->has_result = true;
+            state->render_pipeline_state = [render_pipeline_state retain];
+            state->error = [error retain];
+            state->condition_variable.Signal();
+          }
+        };
+    [device newRenderPipelineStateWithDescriptor:descriptor
+                               completionHandler:completionHandler];
+    base::AutoLock lock(state->lock);
+    state->condition_variable.TimedWait(kRetryPeriod);
+    if (state->has_result) {
+      *error = [state->error autorelease];
+      return state->render_pipeline_state;
+    }
+  }
+}
+
 // Maximum length of a shader to be uploaded with a crash report.
 constexpr uint32_t kShaderCrashDumpLength = 8128;
-}
+
+}  // namespace
 
 @implementation MTLDeviceProxy
 - (id)initWithDevice:(id<MTLDevice>)device {
@@ -189,9 +306,7 @@
 
   gl::ScopedProgressReporter scoped_reporter(progressReporter_);
   SCOPED_UMA_HISTOGRAM_TIMER("Gpu.MetalProxy.NewLibraryTime");
-  id<MTLLibrary> library = [device_ newLibraryWithSource:source
-                                                 options:options
-                                                   error:error];
+  id<MTLLibrary> library = NewLibraryWithRetry(device_, source, options, error);
   shaderKey.Clear();
 
   // Shaders from Skia will have either a vertexMain or fragmentMain function.
@@ -249,7 +364,7 @@
   gl::ScopedProgressReporter scoped_reporter(progressReporter_);
   SCOPED_UMA_HISTOGRAM_TIMER("Gpu.MetalProxy.NewRenderPipelineStateTime");
   id<MTLRenderPipelineState> pipelineState =
-      [device_ newRenderPipelineStateWithDescriptor:descriptor error:error];
+      NewRenderPipelineStateWithRetry(device_, descriptor, error);
 
   vertexShaderKey.Clear();
   fragmentShaderKey.Clear();
diff --git a/components/viz/service/display/display.cc b/components/viz/service/display/display.cc
index 6162ab2..7710a7f 100644
--- a/components/viz/service/display/display.cc
+++ b/components/viz/service/display/display.cc
@@ -537,7 +537,7 @@
       frame.metadata.latency_info.emplace_back(ui::SourceEventType::FRAME);
       frame.metadata.latency_info.back().AddLatencyNumberWithTimestamp(
           ui::LATENCY_BEGIN_FRAME_DISPLAY_COMPOSITOR_COMPONENT,
-          scheduler_->current_frame_time(), 1);
+          scheduler_->current_frame_time());
     }
 
     std::vector<std::unique_ptr<Surface::PresentationHelper>>
diff --git a/components/viz/service/display/output_surface.cc b/components/viz/service/display/output_surface.cc
index 6e51005e..81f92a2 100644
--- a/components/viz/service/display/output_surface.cc
+++ b/components/viz/service/display/output_surface.cc
@@ -48,11 +48,10 @@
     std::vector<ui::LatencyInfo>* latency_info) {
   for (auto& latency : *latency_info) {
     latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, response.timings.swap_start,
-        1);
+        ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, response.timings.swap_start);
     latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, response.timings.swap_end,
-        1);
+        ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT,
+        response.timings.swap_end);
   }
 }
 
diff --git a/components/viz/service/display_embedder/output_surface_provider_impl.cc b/components/viz/service/display_embedder/output_surface_provider_impl.cc
index a7915a85..abc5488 100644
--- a/components/viz/service/display_embedder/output_surface_provider_impl.cc
+++ b/components/viz/service/display_embedder/output_surface_provider_impl.cc
@@ -111,8 +111,10 @@
     return nullptr;
 #else
     if (renderer_settings.use_skia_renderer_non_ddl) {
-      DCHECK_EQ(gl::GetGLImplementation(), gl::kGLImplementationEGLGLES2)
-          << "SkiaRendererNonDDL is only supported with GLES2.";
+      bool is_gles2 =
+          (gl::GetGLImplementation() == gl::kGLImplementationEGLGLES2) ||
+          (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE);
+      DCHECK(is_gles2) << "SkiaRendererNonDDL is only supported with GLES2.";
       auto gl_surface = gpu::ImageTransportSurface::CreateNativeSurface(
           nullptr, surface_handle, gl::GLSurfaceFormat());
       if (!shared_context_state_) {
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
index 66cdc3e..fe7fb13 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -751,11 +751,10 @@
 
   for (auto& latency : frame.latency_info) {
     latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, response.timings.swap_start,
-        1);
+        ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, response.timings.swap_start);
     latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, response.timings.swap_end,
-        1);
+        ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT,
+        response.timings.swap_end);
   }
   latency_tracker_.OnGpuSwapBuffersCompleted(frame.latency_info);
 }
diff --git a/components/viz/service/display_embedder/software_output_surface.cc b/components/viz/service/display_embedder/software_output_surface.cc
index e2d4cdb..af0e1858bc 100644
--- a/components/viz/service/display_embedder/software_output_surface.cc
+++ b/components/viz/service/display_embedder/software_output_surface.cc
@@ -62,9 +62,9 @@
   base::TimeTicks swap_time = base::TimeTicks::Now();
   for (auto& latency : frame.latency_info) {
     latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, swap_time, 1);
+        ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, swap_time);
     latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, swap_time, 1);
+        ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, swap_time);
   }
 
   DCHECK(stored_latency_info_.empty())
diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc
index 01e93c5..780467f 100644
--- a/content/app/content_main_runner_impl.cc
+++ b/content/app/content_main_runner_impl.cc
@@ -927,11 +927,6 @@
 
     delegate_->PostTaskSchedulerStart();
 
-    if (!base::FeatureList::IsEnabled(
-            features::kAllowStartingServiceManagerOnly)) {
-      should_start_service_manager_only = false;
-    }
-
     if (base::FeatureList::IsEnabled(network::features::kNetworkService)) {
       bool force_in_process = false;
       if (should_start_service_manager_only) {
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 254b7f68..34f4e3e 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -1788,6 +1788,8 @@
     "service_worker/service_worker_internals_ui.h",
     "service_worker/service_worker_job_coordinator.cc",
     "service_worker/service_worker_job_coordinator.h",
+    "service_worker/service_worker_loader_helpers.cc",
+    "service_worker/service_worker_loader_helpers.h",
     "service_worker/service_worker_metrics.cc",
     "service_worker/service_worker_metrics.h",
     "service_worker/service_worker_navigation_handle.cc",
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index 9975d7b..5d13613 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -16,7 +16,7 @@
 #include "content/browser/accessibility/browser_accessibility.h"
 #include "content/common/accessibility_messages.h"
 #include "content/public/common/use_zoom_for_dsf_policy.h"
-#include "ui/accessibility/ax_language_info.h"
+#include "ui/accessibility/ax_language_detection.h"
 #include "ui/accessibility/ax_node_position.h"
 #include "ui/accessibility/ax_tree_data.h"
 #include "ui/accessibility/ax_tree_manager_map.h"
@@ -430,9 +430,9 @@
     // TODO(chrishall): we will want to run this more often for dynamic pages.
     if (targeted_event.event_params.event ==
         ui::AXEventGenerator::Event::LOAD_COMPLETE) {
-      DetectLanguageForSubtree(tree_->root(), tree_.get());
-      if (!LabelLanguageForSubtree(tree_->root(), tree_.get()))
-        LOG(FATAL) << "Language detection failed at step: Label";
+      tree_->language_detection_manager->DetectLanguageForSubtree(
+          tree_->root());
+      tree_->language_detection_manager->LabelLanguageForSubtree(tree_->root());
     }
 
     FireGeneratedEvent(targeted_event.event_params.event, event_target);
diff --git a/content/browser/accessibility/dump_accessibility_events_browsertest.cc b/content/browser/accessibility/dump_accessibility_events_browsertest.cc
index 820193e..e67dd7dd 100644
--- a/content/browser/accessibility/dump_accessibility_events_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_events_browsertest.cc
@@ -352,9 +352,16 @@
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-focus.html"));
 }
 
-// TODO(aboxhall): Fix flaky test
+// TODO(835455): Fails on Windows.
+#if defined(OS_WIN)
+#define MAYBE_AccessibilityEventsAriaComboBoxDelayAddList \
+  DISABLED_AccessibilityEventsAriaComboBoxDelayAddList
+#else
+#define MAYBE_AccessibilityEventsAriaComboBoxDelayAddList \
+  AccessibilityEventsAriaComboBoxDelayAddList
+#endif
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
-                       DISABLED_AccessibilityEventsAriaComboBoxDelayAddList) {
+                       MAYBE_AccessibilityEventsAriaComboBoxDelayAddList) {
   RunEventTest(FILE_PATH_LITERAL("aria-combo-box-delay-add-list.html"));
 }
 
@@ -536,9 +543,8 @@
   RunEventTest(FILE_PATH_LITERAL("live-region-elem-reparent.html"));
 }
 
-// TODO(aboxhall): Fix flakiness.
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
-                       DISABLED_AccessibilityEventsLiveRegionIgnoresClick) {
+                       AccessibilityEventsLiveRegionIgnoresClick) {
   RunEventTest(FILE_PATH_LITERAL("live-region-ignores-click.html"));
 }
 
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index 0065ffe..544c0eca7 100644
--- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -1293,20 +1293,6 @@
   RunHtmlTest(FILE_PATH_LITERAL("heading.html"));
 }
 
-IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityHidden) {
-  RunAriaTest(FILE_PATH_LITERAL("hidden.html"));
-}
-
-IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
-                       AccessibilityHiddenDescribedBy) {
-  RunAriaTest(FILE_PATH_LITERAL("hidden-described-by.html"));
-}
-
-IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
-                       AccessibilityHiddenLabeledBy) {
-  RunAriaTest(FILE_PATH_LITERAL("hidden-labelled-by.html"));
-}
-
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityHR) {
   RunHtmlTest(FILE_PATH_LITERAL("hr.html"));
 }
diff --git a/content/browser/accessibility/hit_testing_browsertest.cc b/content/browser/accessibility/hit_testing_browsertest.cc
index 15e0fe1..70bc5ac 100644
--- a/content/browser/accessibility/hit_testing_browsertest.cc
+++ b/content/browser/accessibility/hit_testing_browsertest.cc
@@ -15,6 +15,7 @@
 #include "content/public/test/test_utils.h"
 #include "content/shell/browser/shell.h"
 #include "content/test/accessibility_browser_test_utils.h"
+#include "content/test/content_browser_test_utils_internal.h"
 #include "net/dns/mock_host_resolver.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -25,7 +26,6 @@
   AccessibilityHitTestingBrowserTest() {}
   ~AccessibilityHitTestingBrowserTest() override {}
 
- protected:
   BrowserAccessibility* HitTestAndWaitForResultWithEvent(
       const gfx::Point& point,
       ax::mojom::Event event_to_fire) {
@@ -104,6 +104,23 @@
   }
 };
 
+class AccessibilityHitTestingCrossProcessBrowserTest
+    : public AccessibilityHitTestingBrowserTest {
+ public:
+  AccessibilityHitTestingCrossProcessBrowserTest() {}
+  ~AccessibilityHitTestingCrossProcessBrowserTest() override {}
+
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    IsolateAllSitesForTesting(command_line);
+  }
+
+  void SetUpOnMainThread() override {
+    host_resolver()->AddRule("*", "127.0.0.1");
+    SetupCrossSiteRedirector(embedded_test_server());
+    ASSERT_TRUE(embedded_test_server()->Start());
+  }
+};
+
 IN_PROC_BROWSER_TEST_F(AccessibilityHitTestingBrowserTest,
                        HitTestOutsideDocumentBoundsReturnsRoot) {
   NavigateToURL(shell(), GURL(url::kAboutBlankURL));
@@ -200,6 +217,151 @@
   ASSERT_EQ(ax::mojom::Role::kGenericContainer, hit_node->GetRole());
 }
 
+IN_PROC_BROWSER_TEST_F(AccessibilityHitTestingCrossProcessBrowserTest,
+                       HitTestingInCrossProcessIframes) {
+  GURL url_a(embedded_test_server()->GetURL(
+      "a.com", "/accessibility/hit_testing/hit_testing_a.html"));
+  GURL url_b(embedded_test_server()->GetURL(
+      "b.com", "/accessibility/hit_testing/hit_testing_b.html"));
+  GURL url_c(embedded_test_server()->GetURL(
+      "c.com", "/accessibility/hit_testing/hit_testing_c.html"));
+
+  EXPECT_TRUE(NavigateToURL(shell(), GURL(url::kAboutBlankURL)));
+  AccessibilityNotificationWaiter waiter(shell()->web_contents(),
+                                         ui::kAXModeComplete,
+                                         ax::mojom::Event::kLoadComplete);
+
+  EXPECT_TRUE(NavigateToURL(shell(), url_a));
+  waiter.WaitForNotification();
+  WaitForAccessibilityTreeToContainNodeWithName(shell()->web_contents(),
+                                                "Button A");
+
+  auto* web_contents = static_cast<WebContentsImpl*>(shell()->web_contents());
+  FrameTreeNode* root = web_contents->GetFrameTree()->root();
+  ASSERT_EQ(1U, root->child_count());
+
+  FrameTreeNode* child = root->child_at(0);
+  NavigateFrameToURL(child, url_b);
+  EXPECT_EQ(url_b, child->current_url());
+  WaitForAccessibilityTreeToContainNodeWithName(shell()->web_contents(),
+                                                "Button B");
+  ASSERT_EQ(1U, child->child_count());
+
+  FrameTreeNode* grand_child = child->child_at(0);
+  NavigateFrameToURL(grand_child, url_c);
+  EXPECT_EQ(url_c, grand_child->current_url());
+  WaitForAccessibilityTreeToContainNodeWithName(shell()->web_contents(),
+                                                "Button C");
+
+  FrameTreeVisualizer visualizer;
+  EXPECT_EQ(
+      " Site A ------------ proxies for B C\n"
+      "   +--Site B ------- proxies for A C\n"
+      "        +--Site C -- proxies for A B\n"
+      "Where A = http://a.com/\n"
+      "      B = http://b.com/\n"
+      "      C = http://c.com/",
+      visualizer.DepictFrameTree(root));
+
+  {
+    // (26, 26) -> "Button A"
+    BrowserAccessibility* hit_node;
+    hit_node = HitTestAndWaitForResult(gfx::Point(26, 26));
+    ASSERT_TRUE(hit_node != nullptr);
+    ASSERT_EQ(ax::mojom::Role::kButton, hit_node->GetRole());
+    ASSERT_EQ("Button A",
+              hit_node->GetStringAttribute(ax::mojom::StringAttribute::kName));
+  }
+
+  {
+    // (26, 176) -> "Button B"
+    // 176 = height of div in parent (150), plus button offset (26).
+    BrowserAccessibility* hit_node;
+    hit_node = HitTestAndWaitForResult(gfx::Point(26, 176));
+    ASSERT_TRUE(hit_node != nullptr);
+    ASSERT_EQ(ax::mojom::Role::kButton, hit_node->GetRole());
+    ASSERT_EQ("Button B",
+              hit_node->GetStringAttribute(ax::mojom::StringAttribute::kName));
+  }
+
+  {
+    // (26, 326) -> "Button C"
+    // 326 = 2x height of div in ancestors (300), plus button offset (26).
+    BrowserAccessibility* hit_node;
+    hit_node = HitTestAndWaitForResult(gfx::Point(26, 326));
+    ASSERT_TRUE(hit_node != nullptr);
+    ASSERT_EQ(ax::mojom::Role::kButton, hit_node->GetRole());
+    ASSERT_EQ("Button C",
+              hit_node->GetStringAttribute(ax::mojom::StringAttribute::kName));
+  }
+}
+
+IN_PROC_BROWSER_TEST_F(AccessibilityHitTestingCrossProcessBrowserTest,
+                       HitTestingInScrolledCrossProcessIframe) {
+  GURL url_a(embedded_test_server()->GetURL(
+      "a.com", "/accessibility/hit_testing/hit_testing_a.html"));
+  GURL url_b(embedded_test_server()->GetURL(
+      "b.com", "/accessibility/hit_testing/hit_testing_b_tall.html"));
+
+  EXPECT_TRUE(NavigateToURL(shell(), GURL(url::kAboutBlankURL)));
+  AccessibilityNotificationWaiter waiter(shell()->web_contents(),
+                                         ui::kAXModeComplete,
+                                         ax::mojom::Event::kLoadComplete);
+
+  EXPECT_TRUE(NavigateToURL(shell(), url_a));
+  waiter.WaitForNotification();
+  WaitForAccessibilityTreeToContainNodeWithName(shell()->web_contents(),
+                                                "Button A");
+
+  auto* web_contents = static_cast<WebContentsImpl*>(shell()->web_contents());
+  FrameTreeNode* root = web_contents->GetFrameTree()->root();
+  ASSERT_EQ(1U, root->child_count());
+
+  FrameTreeNode* child = root->child_at(0);
+  NavigateFrameToURL(child, url_b);
+  EXPECT_EQ(url_b, child->current_url());
+  WaitForAccessibilityTreeToContainNodeWithName(shell()->web_contents(),
+                                                "Button B");
+  ASSERT_EQ(1U, child->child_count());
+
+  // Before scrolling.
+  {
+    // (26, 476) -> "Button B"
+    // 476 = height of div in parent (150), plus the placeholder div height
+    // (300), plus button offset (26).
+    BrowserAccessibility* hit_node;
+    hit_node = HitTestAndWaitForResult(gfx::Point(26, 476));
+    ASSERT_TRUE(hit_node != nullptr);
+    ASSERT_EQ(ax::mojom::Role::kButton, hit_node->GetRole());
+    ASSERT_EQ("Button B",
+              hit_node->GetStringAttribute(ax::mojom::StringAttribute::kName));
+  }
+
+  // Scroll div up 100px.
+  int scroll_delta = 100;
+  double actual_scroll_delta = 0;
+  std::string scroll_string = base::StringPrintf(
+      "window.scrollTo(0, %d); "
+      "window.domAutomationController.send(window.scrollY);",
+      scroll_delta);
+  EXPECT_TRUE(ExecuteScriptAndExtractDouble(
+      child->current_frame_host(), scroll_string, &actual_scroll_delta));
+  EXPECT_NEAR(static_cast<double>(scroll_delta), actual_scroll_delta, 1.0);
+
+  // After scrolling.
+  {
+    // (26, 376) -> "Button B"
+    // 376 = height of div in parent (150), plus the placeholder div height
+    // (300), plus button offset (26), less the scroll delta.
+    BrowserAccessibility* hit_node;
+    hit_node = HitTestAndWaitForResult(gfx::Point(26, 476 - scroll_delta));
+    ASSERT_TRUE(hit_node != nullptr);
+    ASSERT_EQ(ax::mojom::Role::kButton, hit_node->GetRole());
+    ASSERT_EQ("Button B",
+              hit_node->GetStringAttribute(ax::mojom::StringAttribute::kName));
+  }
+}
+
 IN_PROC_BROWSER_TEST_F(AccessibilityHitTestingBrowserTest,
                        CachingAsyncHitTestingInIframes) {
   ASSERT_TRUE(embedded_test_server()->Start());
diff --git a/content/browser/android/ime_adapter_android.cc b/content/browser/android/ime_adapter_android.cc
index 5ce9d65..90dec62 100644
--- a/content/browser/android/ime_adapter_android.cc
+++ b/content/browser/android/ime_adapter_android.cc
@@ -351,12 +351,11 @@
     const JavaParamRef<jobject>&,
     int start,
     int end) {
-  RenderFrameHostImpl* rfh =
-      static_cast<RenderFrameHostImpl*>(GetFocusedFrame());
-  if (!rfh)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  rfh->GetFrameInputHandler()->SetEditableSelectionOffsets(start, end);
+  input_handler->SetEditableSelectionOffsets(start, end);
 }
 
 void ImeAdapterAndroid::SetCharacterBounds(
@@ -386,9 +385,8 @@
                                            const JavaParamRef<jobject>&,
                                            int start,
                                            int end) {
-  RenderFrameHostImpl* rfh =
-      static_cast<RenderFrameHostImpl*>(GetFocusedFrame());
-  if (!rfh)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
   std::vector<ui::ImeTextSpan> ime_text_spans;
@@ -397,18 +395,17 @@
                       ui::ImeTextSpan::Thickness::kThin, SK_ColorTRANSPARENT,
                       SK_ColorTRANSPARENT, std::vector<std::string>()));
 
-  rfh->GetFrameInputHandler()->SetCompositionFromExistingText(start, end,
-                                                              ime_text_spans);
+  input_handler->SetCompositionFromExistingText(start, end, ime_text_spans);
 }
 
 void ImeAdapterAndroid::DeleteSurroundingText(JNIEnv*,
                                               const JavaParamRef<jobject>&,
                                               int before,
                                               int after) {
-  RenderFrameHostImpl* rfh =
-      static_cast<RenderFrameHostImpl*>(GetFocusedFrame());
-  if (rfh)
-    rfh->GetFrameInputHandler()->DeleteSurroundingText(before, after);
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
+    return;
+  input_handler->DeleteSurroundingText(before, after);
 }
 
 void ImeAdapterAndroid::DeleteSurroundingTextInCodePoints(
@@ -416,12 +413,10 @@
     const JavaParamRef<jobject>&,
     int before,
     int after) {
-  RenderFrameHostImpl* rfh =
-      static_cast<RenderFrameHostImpl*>(GetFocusedFrame());
-  if (rfh) {
-    rfh->GetFrameInputHandler()->DeleteSurroundingTextInCodePoints(before,
-                                                                   after);
-  }
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
+    return;
+  input_handler->DeleteSurroundingTextInCodePoints(before, after);
 }
 
 bool ImeAdapterAndroid::RequestTextInputStateUpdate(
@@ -469,6 +464,13 @@
   return nullptr;
 }
 
+mojom::FrameInputHandler* ImeAdapterAndroid::GetFocusedFrameInputHandler() {
+  auto* focused_frame = static_cast<RenderFrameHostImpl*>(GetFocusedFrame());
+  if (!focused_frame)
+    return nullptr;
+  return focused_frame->GetFrameInputHandler();
+}
+
 std::vector<ui::ImeTextSpan> ImeAdapterAndroid::GetImeTextSpansFromJava(
     JNIEnv* env,
     const base::android::JavaParamRef<jobject>& obj,
diff --git a/content/browser/android/ime_adapter_android.h b/content/browser/android/ime_adapter_android.h
index 2b16c70..b05d827 100644
--- a/content/browser/android/ime_adapter_android.h
+++ b/content/browser/android/ime_adapter_android.h
@@ -22,6 +22,12 @@
 
 namespace content {
 
+namespace mojom {
+
+class FrameInputHandler;
+
+}  // namespace mojom
+
 class RenderFrameHost;
 class RenderWidgetHostImpl;
 class RenderWidgetHostViewAndroid;
@@ -115,6 +121,7 @@
  private:
   RenderWidgetHostImpl* GetFocusedWidget();
   RenderFrameHost* GetFocusedFrame();
+  mojom::FrameInputHandler* GetFocusedFrameInputHandler();
   std::vector<ui::ImeTextSpan> GetImeTextSpansFromJava(
       JNIEnv* env,
       const base::android::JavaParamRef<jobject>& obj,
diff --git a/content/browser/android/synchronous_compositor_host.cc b/content/browser/android/synchronous_compositor_host.cc
index e9e5a093..3bbc04d 100644
--- a/content/browser/android/synchronous_compositor_host.cc
+++ b/content/browser/android/synchronous_compositor_host.cc
@@ -28,7 +28,7 @@
 #include "content/public/common/content_features.h"
 #include "content/public/common/content_switches.h"
 #include "ipc/ipc_sender.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
+#include "mojo/public/cpp/bindings/self_owned_receiver.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 #include "third_party/skia/include/core/SkImageInfo.h"
@@ -52,24 +52,26 @@
     bridge_->RemoteClosedOnIOThread();
   }
 
-  static void Create(mojom::SynchronousCompositorControlHostRequest request,
-                     scoped_refptr<SynchronousCompositorSyncCallBridge> bridge,
-                     int process_id) {
+  static void Create(
+      mojo::PendingReceiver<mojom::SynchronousCompositorControlHost> receiver,
+      scoped_refptr<SynchronousCompositorSyncCallBridge> bridge,
+      int process_id) {
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
     base::PostTaskWithTraits(
         FROM_HERE, {BrowserThread::IO},
-        base::BindOnce(&CreateOnIOThread, std::move(request), std::move(bridge),
-                       process_id));
+        base::BindOnce(&CreateOnIOThread, std::move(receiver),
+                       std::move(bridge), process_id));
   }
 
   static void CreateOnIOThread(
-      mojom::SynchronousCompositorControlHostRequest request,
+      mojo::PendingReceiver<mojom::SynchronousCompositorControlHost> receiver,
       scoped_refptr<SynchronousCompositorSyncCallBridge> bridge,
       int process_id) {
     DCHECK_CURRENTLY_ON(BrowserThread::IO);
-    mojo::MakeStrongBinding(std::make_unique<SynchronousCompositorControlHost>(
-                                std::move(bridge), process_id),
-                            std::move(request));
+    mojo::MakeSelfOwnedReceiver(
+        std::make_unique<SynchronousCompositorControlHost>(std::move(bridge),
+                                                           process_id),
+        std::move(receiver));
   }
 
   // SynchronousCompositorControlHost overrides.
@@ -117,7 +119,6 @@
       process_id_(rwhva_->GetRenderWidgetHost()->GetProcess()->GetID()),
       routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()),
       use_in_process_zero_copy_software_draw_(use_in_proc_software_draw),
-      host_binding_(this),
       bytes_limit_(0u),
       renderer_param_version_(0u),
       need_animate_scroll_(false),
@@ -134,21 +135,13 @@
 }
 
 void SynchronousCompositorHost::InitMojo() {
-  mojom::SynchronousCompositorControlHostPtr host_control;
-  mojom::SynchronousCompositorControlHostRequest host_request =
-      mojo::MakeRequest(&host_control);
+  mojo::PendingRemote<mojom::SynchronousCompositorControlHost> host_control;
 
-  SynchronousCompositorControlHost::Create(std::move(host_request), bridge_,
-                                           process_id_);
-  mojom::SynchronousCompositorHostAssociatedPtr host;
-  host_binding_.Bind(mojo::MakeRequest(&host));
-
-  mojom::SynchronousCompositorAssociatedRequest compositor_request =
-      mojo::MakeRequest(&sync_compositor_);
-
+  SynchronousCompositorControlHost::Create(
+      host_control.InitWithNewPipeAndPassReceiver(), bridge_, process_id_);
   rwhva_->host()->GetWidgetInputHandler()->AttachSynchronousCompositor(
-      std::move(host_control), host.PassInterface(),
-      std::move(compositor_request));
+      std::move(host_control), host_receiver_.BindNewEndpointAndPassRemote(),
+      sync_compositor_.BindNewEndpointAndPassReceiver());
 }
 
 bool SynchronousCompositorHost::IsReadyForSynchronousCall() {
@@ -583,6 +576,8 @@
 
 mojom::SynchronousCompositor*
 SynchronousCompositorHost::GetSynchronousCompositor() {
+  if (!sync_compositor_)
+    return nullptr;
   return sync_compositor_.get();
 }
 
diff --git a/content/browser/android/synchronous_compositor_host.h b/content/browser/android/synchronous_compositor_host.h
index 8d510f2..b418ae2 100644
--- a/content/browser/android/synchronous_compositor_host.h
+++ b/content/browser/android/synchronous_compositor_host.h
@@ -18,8 +18,8 @@
 #include "content/common/input/synchronous_compositor.mojom.h"
 #include "content/public/browser/android/synchronous_compositor.h"
 #include "content/public/common/input_event_ack_state.h"
-#include "mojo/public/cpp/bindings/associated_binding.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/associated_receiver.h"
+#include "mojo/public/cpp/bindings/associated_remote.h"
 #include "ui/android/view_android.h"
 #include "ui/gfx/geometry/scroll_offset.h"
 #include "ui/gfx/geometry/size_f.h"
@@ -116,8 +116,9 @@
   const int process_id_;
   const int routing_id_;
   const bool use_in_process_zero_copy_software_draw_;
-  mojom::SynchronousCompositorAssociatedPtr sync_compositor_;
-  mojo::AssociatedBinding<mojom::SynchronousCompositorHost> host_binding_;
+  mojo::AssociatedRemote<mojom::SynchronousCompositor> sync_compositor_;
+  mojo::AssociatedReceiver<mojom::SynchronousCompositorHost> host_receiver_{
+      this};
 
   bool registered_with_filter_ = false;
 
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc
index 66bdd842..f8f2d81 100644
--- a/content/browser/back_forward_cache_browsertest.cc
+++ b/content/browser/back_forward_cache_browsertest.cc
@@ -96,6 +96,61 @@
   EXPECT_TRUE(rfh_b->is_in_back_forward_cache());
 }
 
+// Navigate from back and forward repeatedly.
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
+                       NavigateBackForwardRepeatedly) {
+  ASSERT_TRUE(embedded_test_server()->Start());
+  GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
+  GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
+
+  // 1) Navigate to A.
+  EXPECT_TRUE(NavigateToURL(shell(), url_a));
+  RenderFrameHostImpl* rfh_a = current_frame_host();
+  RenderFrameDeletedObserver delete_rfh_a(rfh_a);
+
+  // 2) Navigate to B.
+  EXPECT_TRUE(NavigateToURL(shell(), url_b));
+  RenderFrameHostImpl* rfh_b = current_frame_host();
+  RenderFrameDeletedObserver delete_rfh_b(rfh_b);
+  EXPECT_TRUE(rfh_a->is_in_back_forward_cache());
+  EXPECT_FALSE(rfh_b->is_in_back_forward_cache());
+
+  // 3) Go back to A.
+  web_contents()->GetController().GoBack();
+  EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
+
+  EXPECT_EQ(rfh_a, current_frame_host());
+  EXPECT_FALSE(rfh_a->is_in_back_forward_cache());
+  EXPECT_TRUE(rfh_b->is_in_back_forward_cache());
+
+  // 4) Go forward to B.
+  web_contents()->GetController().GoForward();
+  EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
+
+  EXPECT_EQ(rfh_b, current_frame_host());
+  EXPECT_TRUE(rfh_a->is_in_back_forward_cache());
+  EXPECT_FALSE(rfh_b->is_in_back_forward_cache());
+
+  // 5) Go back to A.
+  web_contents()->GetController().GoBack();
+  EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
+
+  EXPECT_EQ(rfh_a, current_frame_host());
+  EXPECT_FALSE(rfh_a->is_in_back_forward_cache());
+  EXPECT_TRUE(rfh_b->is_in_back_forward_cache());
+
+  // 6) Go forward to B.
+  web_contents()->GetController().GoForward();
+  EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
+
+  EXPECT_EQ(rfh_b, current_frame_host());
+  EXPECT_TRUE(rfh_a->is_in_back_forward_cache());
+  EXPECT_FALSE(rfh_b->is_in_back_forward_cache());
+
+  EXPECT_FALSE(delete_rfh_a.deleted());
+  EXPECT_FALSE(delete_rfh_b.deleted());
+}
+
 // Navigate from A(B) to C and go back.
 IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest, BasicIframe) {
   ASSERT_TRUE(embedded_test_server()->Start());
@@ -422,4 +477,53 @@
   // The page with the unsupported feature should be deleted (not cached).
   delete_rfh_a.WaitUntilDeleted();
 }
+
+// Check that unload event handlers are not dispatched when the page goes
+// into BackForwardCache.
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
+                       ConfirmUnloadEventNotFired) {
+  ASSERT_TRUE(embedded_test_server()->Start());
+  GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
+  GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
+
+  // 1) Navigate to A.
+  EXPECT_TRUE(NavigateToURL(shell(), url_a));
+  RenderFrameHostImpl* rfh_a = current_frame_host();
+  RenderFrameDeletedObserver delete_rfh_a(rfh_a);
+
+  // 2) Set unload handler and check the title.
+  EXPECT_TRUE(ExecJs(rfh_a,
+                     "document.title = 'loaded!';"
+                     "window.addEventListener('unload', () => {"
+                     "  document.title = 'unloaded!';"
+                     "});"));
+  {
+    base::string16 title_when_loaded = base::UTF8ToUTF16("loaded!");
+    TitleWatcher title_watcher(web_contents(), title_when_loaded);
+    EXPECT_EQ(title_watcher.WaitAndGetTitle(), title_when_loaded);
+  }
+
+  // 3) Navigate to B.
+  EXPECT_TRUE(NavigateToURL(shell(), url_b));
+  RenderFrameHostImpl* rfh_b = current_frame_host();
+  RenderFrameDeletedObserver delete_rfh_b(rfh_b);
+  EXPECT_FALSE(delete_rfh_a.deleted());
+  EXPECT_TRUE(rfh_a->is_in_back_forward_cache());
+  EXPECT_FALSE(rfh_b->is_in_back_forward_cache());
+
+  // 4) Go back to A and check the title again.
+  web_contents()->GetController().GoBack();
+  EXPECT_TRUE(WaitForLoadStop(web_contents()));
+  EXPECT_FALSE(delete_rfh_a.deleted());
+  EXPECT_FALSE(delete_rfh_b.deleted());
+  EXPECT_EQ(rfh_a, current_frame_host());
+  EXPECT_FALSE(rfh_a->is_in_back_forward_cache());
+  EXPECT_TRUE(rfh_b->is_in_back_forward_cache());
+  {
+    base::string16 title_when_loaded = base::UTF8ToUTF16("loaded!");
+    TitleWatcher title_watcher(web_contents(), title_when_loaded);
+    EXPECT_EQ(title_watcher.WaitAndGetTitle(), title_when_loaded);
+  }
+}
+
 }  // namespace content
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc
index dfd38d52..245ca7b 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.cc
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc
@@ -917,7 +917,7 @@
                                               const std::string& name) {
   RenderFrameHostImpl* focused_frame =
       static_cast<RenderFrameHostImpl*>(web_contents()->GetFocusedFrame());
-  if (!focused_frame)
+  if (!focused_frame || !focused_frame->GetFrameInputHandler())
     return;
 
   focused_frame->GetFrameInputHandler()->ExecuteEditCommand(name,
@@ -971,7 +971,7 @@
     int after) {
   RenderFrameHostImpl* rfh = static_cast<RenderFrameHostImpl*>(
       web_contents()->GetFocusedFrame());
-  if (rfh)
+  if (rfh && rfh->GetFrameInputHandler())
     rfh->GetFrameInputHandler()->ExtendSelectionAndDelete(before, after);
 }
 
diff --git a/content/browser/compositor/software_browser_compositor_output_surface.cc b/content/browser/compositor/software_browser_compositor_output_surface.cc
index e9d4785..415d703 100644
--- a/content/browser/compositor/software_browser_compositor_output_surface.cc
+++ b/content/browser/compositor/software_browser_compositor_output_surface.cc
@@ -67,9 +67,9 @@
   base::TimeTicks swap_time = base::TimeTicks::Now();
   for (auto& latency : frame.latency_info) {
     latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, swap_time, 1);
+        ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, swap_time);
     latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, swap_time, 1);
+        ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, swap_time);
   }
 
   gfx::VSyncProvider* vsync_provider = software_device()->GetVSyncProvider();
diff --git a/content/browser/download/download_browsertest.cc b/content/browser/download/download_browsertest.cc
index 9bfae65..fdb2aa7 100644
--- a/content/browser/download/download_browsertest.cc
+++ b/content/browser/download/download_browsertest.cc
@@ -1848,6 +1848,56 @@
             downloads[0]->GetLastReason());
 }
 
+// Test that content length mismatch errors are handled properly.
+IN_PROC_BROWSER_TEST_F(DownloadContentTest, ContentLengthMismatch) {
+  GURL url = TestDownloadHttpResponse::GetNextURLForDownload();
+  GURL server_url = embedded_test_server()->GetURL(url.host(), url.path());
+  // Server response doesn't contain strong validators.
+  TestDownloadHttpResponse::StartServingStaticResponse(
+      "HTTP/1.1 200 OK\r\n"
+      "Content-Length: 100000\r\n"
+      "\r\n"
+      "abc\r\n",
+      server_url);
+
+  auto download_parameters = std::make_unique<download::DownloadUrlParameters>(
+      server_url, TRAFFIC_ANNOTATION_FOR_TESTS);
+  DownloadManagerForShell(shell())->DownloadUrl(std::move(download_parameters));
+  std::unique_ptr<DownloadTestObserver> observer(CreateWaiter(shell(), 1));
+  observer->WaitForFinished();
+
+  // Verify download completed without any interruptions.
+  std::vector<download::DownloadItem*> downloads;
+  DownloadManagerForShell(shell())->GetAllDownloads(&downloads);
+  EXPECT_EQ(1u, downloads.size());
+  EXPECT_EQ(download::DownloadItem::COMPLETE, downloads[0]->GetState());
+  EXPECT_EQ(download::DOWNLOAD_INTERRUPT_REASON_NONE,
+            downloads[0]->GetLastReason());
+  EXPECT_EQ(0, downloads[0]->GetAutoResumeCount());
+  downloads[0]->Remove();
+
+  // Change server response to include strong validators.
+  TestDownloadHttpResponse::StartServingStaticResponse(
+      "HTTP/1.1 200 OK\r\n"
+      "Content-Length: 100000\r\n"
+      "Etag: xyz\r\n"
+      "\r\n"
+      "abc\r\n",
+      server_url);
+  download_parameters = std::make_unique<download::DownloadUrlParameters>(
+      server_url, TRAFFIC_ANNOTATION_FOR_TESTS);
+  DownloadManagerForShell(shell())->DownloadUrl(std::move(download_parameters));
+  std::unique_ptr<DownloadTestObserver> observer2(CreateWaiter(shell(), 1));
+  observer2->WaitForFinished();
+
+  // Verify the new download completed with 1 auto resumption attempt.
+  downloads.clear();
+  DownloadManagerForShell(shell())->GetAllDownloads(&downloads);
+  EXPECT_EQ(1u, downloads.size());
+  EXPECT_EQ(download::DownloadItem::COMPLETE, downloads[0]->GetState());
+  EXPECT_EQ(1, downloads[0]->GetAutoResumeCount());
+}
+
 // If the server response for the resumption request specifies a bad range (i.e.
 // not the range that was requested or an invalid or missing Content-Range
 // header), then the download should be marked as interrupted again without
diff --git a/content/browser/download/download_request_core.cc b/content/browser/download/download_request_core.cc
index 87b1ff4..411e834 100644
--- a/content/browser/download/download_request_core.cc
+++ b/content/browser/download/download_request_core.cc
@@ -410,9 +410,9 @@
       error_code = net::ERR_FAILED;
   }
   download::DownloadInterruptReason reason =
-      download::HandleRequestCompletionStatus(error_code, has_strong_validators,
-                                              request()->ssl_info().cert_status,
-                                              abort_reason_);
+      download::HandleRequestCompletionStatus(
+          error_code, !has_strong_validators, request()->ssl_info().cert_status,
+          abort_reason_);
 
   std::string accept_ranges;
   if (request()->response_headers()) {
diff --git a/content/browser/font_unique_name_lookup/font_unique_name_lookup.cc b/content/browser/font_unique_name_lookup/font_unique_name_lookup.cc
index 360468a..db75f376 100644
--- a/content/browser/font_unique_name_lookup/font_unique_name_lookup.cc
+++ b/content/browser/font_unique_name_lookup/font_unique_name_lookup.cc
@@ -15,6 +15,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/time/time.h"
+#include "base/trace_event/trace_event.h"
 #include "third_party/blink/public/common/font_unique_name_lookup/font_table_matcher.h"
 #include "third_party/blink/public/common/font_unique_name_lookup/font_table_persistence.h"
 #include "third_party/blink/public/common/font_unique_name_lookup/font_unique_name_table.pb.h"
@@ -276,6 +277,7 @@
 }
 
 bool FontUniqueNameLookup::UpdateTableIfNeeded() {
+  TRACE_EVENT0("fonts", "FontUniqueNameLookup::UpdateTableIfNeeded");
   blink::FontUniqueNameTable font_table;
   bool update_needed =
       !proto_storage_.IsValid() || !proto_storage_.mapping.size() ||
@@ -291,6 +293,8 @@
 }
 
 bool FontUniqueNameLookup::UpdateTable() {
+  TRACE_EVENT0("fonts", "FontUniqueNameLookup::UpdateTable");
+
   base::TimeTicks update_table_start_time = base::TimeTicks::Now();
 
   std::vector<std::string> font_files_to_index = GetFontFilePaths();
@@ -303,6 +307,7 @@
     int32_t number_of_faces =
         NumberOfFacesInFontFile(ft_library.get(), font_file);
     for (int32_t i = 0; i < number_of_faces; ++i) {
+      TRACE_EVENT0("fonts", "FontUniqueNameLookup::UpdateTable - IndexFile");
       IndexFile(ft_library.get(), &font_table, font_file, i);
     }
   }
@@ -327,6 +332,7 @@
 }
 
 bool FontUniqueNameLookup::LoadFromFile() {
+  TRACE_EVENT0("fonts", "FontUniqueNameLookup::LoadFromFile");
   bool load_success = blink::font_table_persistence::LoadFromFile(
       TableCacheFilePath(), &proto_storage_);
   LogUMALoadFromFileSuccess(load_success);
@@ -334,6 +340,7 @@
 }
 
 bool FontUniqueNameLookup::PersistToFile() {
+  TRACE_EVENT0("fonts", "FontUniqueNameLookup::PersistToFile");
   bool persist_success = blink::font_table_persistence::PersistToFile(
       proto_storage_, TableCacheFilePath());
   LogUMAPersistSuccess(persist_success);
diff --git a/content/browser/frame_host/frame_tree.cc b/content/browser/frame_host/frame_tree.cc
index f68548fd..a5122abb 100644
--- a/content/browser/frame_host/frame_tree.cc
+++ b/content/browser/frame_host/frame_tree.cc
@@ -263,12 +263,13 @@
     SiteInstance* site_instance) {
   // Create the RenderFrameProxyHost for the new SiteInstance.
   if (!source || !source->IsMainFrame()) {
-    RenderViewHostImpl* render_view_host = GetRenderViewHost(site_instance);
-    if (!render_view_host) {
-      root()->render_manager()->CreateRenderFrameProxy(site_instance);
-    } else {
+    RenderViewHostImpl* render_view_host =
+        GetRenderViewHost(site_instance).get();
+    if (render_view_host) {
       root()->render_manager()->EnsureRenderViewInitialized(render_view_host,
                                                             site_instance);
+    } else {
+      root()->render_manager()->CreateRenderFrameProxy(site_instance);
     }
   }
 
@@ -359,14 +360,16 @@
   on_frame_removed_ = on_frame_removed;
 }
 
-RenderViewHostImpl* FrameTree::CreateRenderViewHost(
+scoped_refptr<RenderViewHostImpl> FrameTree::CreateRenderViewHost(
     SiteInstance* site_instance,
     int32_t routing_id,
     int32_t main_frame_routing_id,
     int32_t widget_routing_id,
     bool swapped_out,
     bool hidden) {
-  if (RenderViewHostImpl* existing_rvh = GetRenderViewHost(site_instance))
+  scoped_refptr<RenderViewHostImpl> existing_rvh =
+      GetRenderViewHost(site_instance);
+  if (existing_rvh)
     return existing_rvh;
 
   RenderViewHostImpl* rvh =
@@ -374,38 +377,24 @@
           site_instance, render_view_delegate_, render_widget_delegate_,
           routing_id, main_frame_routing_id, widget_routing_id, swapped_out,
           hidden));
-
-  render_view_host_map_[site_instance->GetId()] = base::WrapUnique(rvh);
-  return rvh;
+  render_view_host_map_[site_instance->GetId()] = rvh;
+  return base::WrapRefCounted(rvh);
 }
 
-RenderViewHostImpl* FrameTree::GetRenderViewHost(SiteInstance* site_instance) {
+scoped_refptr<RenderViewHostImpl> FrameTree::GetRenderViewHost(
+    SiteInstance* site_instance) {
   auto it = render_view_host_map_.find(site_instance->GetId());
   if (it == render_view_host_map_.end())
     return nullptr;
 
-  return it->second.get();
+  return base::WrapRefCounted(it->second);
 }
 
-void FrameTree::AddRenderViewHostRef(RenderViewHostImpl* rvh) {
+void FrameTree::RenderViewHostDeleted(RenderViewHost* rvh) {
   auto it = render_view_host_map_.find(rvh->GetSiteInstance()->GetId());
   CHECK(it != render_view_host_map_.end());
-  CHECK_EQ(it->second.get(), rvh);
-
-  rvh->increment_ref_count();
-}
-
-void FrameTree::ReleaseRenderViewHostRef(RenderViewHostImpl* rvh) {
-  auto it = render_view_host_map_.find(rvh->GetSiteInstance()->GetId());
-  CHECK(it != render_view_host_map_.end());
-  CHECK_EQ(it->second.get(), rvh);
-
-  // Decrement the refcount and delete the RenderViewHost if no one else is
-  // using it.
-  CHECK_GT(rvh->ref_count(), 0);
-  rvh->decrement_ref_count();
-  if (rvh->ref_count() == 0)
-    render_view_host_map_.erase(it);
+  CHECK_EQ(it->second, rvh);
+  render_view_host_map_.erase(it);
 }
 
 void FrameTree::FrameUnloading(FrameTreeNode* frame) {
diff --git a/content/browser/frame_host/frame_tree.h b/content/browser/frame_host/frame_tree.h
index 646b2f4..2c2ccf0 100644
--- a/content/browser/frame_host/frame_tree.h
+++ b/content/browser/frame_host/frame_tree.h
@@ -201,26 +201,29 @@
   void SetFrameRemoveListener(
       const base::Callback<void(RenderFrameHost*)>& on_frame_removed);
 
-  // Creates a RenderViewHost for a new RenderFrameHost in the given
-  // |site_instance|.  The RenderViewHost will have its Shutdown method called
-  // when all of the RenderFrameHosts using it are deleted.
-  RenderViewHostImpl* CreateRenderViewHost(SiteInstance* site_instance,
-                                           int32_t routing_id,
-                                           int32_t main_frame_routing_id,
-                                           int32_t widget_routing_id,
-                                           bool swapped_out,
-                                           bool hidden);
+  // Creates a RenderViewHostImpl for a given |site_instance| in the tree.
+  //
+  // The RenderFrameHostImpls and the RenderFrameProxyHosts will share ownership
+  // of this object.
+  scoped_refptr<RenderViewHostImpl> CreateRenderViewHost(
+      SiteInstance* site_instance,
+      int32_t routing_id,
+      int32_t main_frame_routing_id,
+      int32_t widget_routing_id,
+      bool swapped_out,
+      bool hidden);
 
   // Returns the existing RenderViewHost for a new RenderFrameHost.
   // There should always be such a RenderViewHost, because the main frame
   // RenderFrameHost for each SiteInstance should be created before subframes.
-  RenderViewHostImpl* GetRenderViewHost(SiteInstance* site_instance);
+  scoped_refptr<RenderViewHostImpl> GetRenderViewHost(
+      SiteInstance* site_instance);
 
-  // Keeps track of which RenderFrameHosts and RenderFrameProxyHosts are using
-  // each RenderViewHost.  When the number drops to zero, we call Shutdown on
-  // the RenderViewHost.
-  void AddRenderViewHostRef(RenderViewHostImpl* render_view_host);
-  void ReleaseRenderViewHostRef(RenderViewHostImpl* render_view_host);
+  // The FrameTree maintains a list of existing RenderViewHostImpl so that
+  // FrameTree::CreateRenderViewHost() can return them directly instead of
+  // creating a new one. Calling this function removes it from the list when the
+  // |render_view_host| is deleted.
+  void RenderViewHostDeleted(RenderViewHost* render_view_host);
 
   // This is called when the frame is about to be removed and started to run
   // unload handlers.
@@ -256,9 +259,6 @@
  private:
   friend class FrameTreeTest;
   FRIEND_TEST_ALL_PREFIXES(RenderFrameHostImplBrowserTest, RemoveFocusedFrame);
-  using RenderViewHostMap =
-      std::unordered_map<int /* SiteInstance ID */,
-                         std::unique_ptr<RenderViewHostImpl>>;
 
   // Returns a range to iterate over all FrameTreeNodes in the frame tree in
   // breadth-first traversal order, skipping the subtree rooted at
@@ -275,11 +275,9 @@
   // Map of SiteInstance ID to RenderViewHost. This allows us to look up the
   // RenderViewHost for a given SiteInstance when creating RenderFrameHosts.
   // Each RenderViewHost maintains a refcount and is deleted when there are no
-  // more RenderFrameHosts using it.
-  //
-  // Must be declared before |root_| so that it is deleted afterward. Otherwise
-  // the map will be cleared before we delete the RenderFrameHosts in the tree.
-  RenderViewHostMap render_view_host_map_;
+  // more RenderFrameHosts or RenderFrameProxyHosts using it.
+  std::unordered_map<int /* SiteInstance ID */, RenderViewHostImpl*>
+      render_view_host_map_;
 
   // This is an owned ptr to the root FrameTreeNode, which never changes over
   // the lifetime of the FrameTree. It is not a scoped_ptr because we need the
diff --git a/content/browser/frame_host/interstitial_page_impl.cc b/content/browser/frame_host/interstitial_page_impl.cc
index 106239c..f295ce0f 100644
--- a/content/browser/frame_host/interstitial_page_impl.cc
+++ b/content/browser/frame_host/interstitial_page_impl.cc
@@ -433,50 +433,43 @@
 }
 
 void InterstitialPageImpl::Cut() {
-  FrameTreeNode* focused_node = frame_tree_->GetFocusedFrame();
-  if (!focused_node)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
-
-  focused_node->current_frame_host()->GetFrameInputHandler()->Cut();
+  input_handler->Cut();
   RecordAction(base::UserMetricsAction("Cut"));
 }
 
 void InterstitialPageImpl::ExecuteEditCommand(
     const std::string& command,
     const base::Optional<base::string16>& value) {
-  FrameTreeNode* focused_node = frame_tree_->GetFocusedFrame();
-  if (!focused_node)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
-
-  focused_node->current_frame_host()
-      ->GetFrameInputHandler()
-      ->ExecuteEditCommand(command, value);
+  input_handler->ExecuteEditCommand(command, value);
 }
 
 void InterstitialPageImpl::Copy() {
-  FrameTreeNode* focused_node = frame_tree_->GetFocusedFrame();
-  if (!focused_node)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
-
-  focused_node->current_frame_host()->GetFrameInputHandler()->Copy();
+  input_handler->Copy();
   RecordAction(base::UserMetricsAction("Copy"));
 }
 
 void InterstitialPageImpl::Paste() {
-  FrameTreeNode* focused_node = frame_tree_->GetFocusedFrame();
-  if (!focused_node)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
-
-  focused_node->current_frame_host()->GetFrameInputHandler()->Paste();
+  input_handler->Paste();
   RecordAction(base::UserMetricsAction("Paste"));
 }
 
 void InterstitialPageImpl::SelectAll() {
-  FrameTreeNode* focused_node = frame_tree_->GetFocusedFrame();
-  if (!focused_node)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
-
-  focused_node->current_frame_host()->GetFrameInputHandler()->SelectAll();
+  input_handler->SelectAll();
   RecordAction(base::UserMetricsAction("SelectAll"));
 }
 
@@ -1100,4 +1093,12 @@
   NOTREACHED();
 }
 
+mojom::FrameInputHandler* InterstitialPageImpl::GetFocusedFrameInputHandler() {
+  FrameTreeNode* focused_node = frame_tree_->GetFocusedFrame();
+  if (!focused_node)
+    return nullptr;
+
+  return focused_node->current_frame_host()->GetFrameInputHandler();
+}
+
 }  // namespace content
diff --git a/content/browser/frame_host/interstitial_page_impl.h b/content/browser/frame_host/interstitial_page_impl.h
index c2b1d79..fdb78ec 100644
--- a/content/browser/frame_host/interstitial_page_impl.h
+++ b/content/browser/frame_host/interstitial_page_impl.h
@@ -243,6 +243,9 @@
   // Creates the RenderViewHost containing the interstitial content.
   RenderViewHostImpl* CreateRenderViewHost();
 
+  // Returns the focused frame's input handler.
+  mojom::FrameInputHandler* GetFocusedFrameInputHandler();
+
   // Watches the underlying WebContents for reasons to cancel the interstitial.
   UnderlyingContentObserver underlying_content_observer_;
 
diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
index 818e8e4..7f08df8 100644
--- a/content/browser/frame_host/navigation_controller_impl.cc
+++ b/content/browser/frame_host/navigation_controller_impl.cc
@@ -745,7 +745,8 @@
 }
 
 int NavigationControllerImpl::GetEntryCount() {
-  DCHECK_LE(entries_.size(), max_entry_count());
+  DCHECK_LE(entries_.size(),
+            max_entry_count() + (transient_entry_index_ == -1 ? 0 : 1));
   return static_cast<int>(entries_.size());
 }
 
@@ -3326,10 +3327,10 @@
 void NavigationControllerImpl::SetTransientEntry(
     std::unique_ptr<NavigationEntry> entry) {
   // Discard any current transient entry, we can only have one at a time.
+  DiscardTransientEntry();
   int index = 0;
   if (last_committed_entry_index_ != -1)
     index = last_committed_entry_index_ + 1;
-  DiscardTransientEntry();
   entries_.insert(entries_.begin() + index,
                   NavigationEntryImpl::FromNavigationEntry(std::move(entry)));
   if (pending_entry_index_ >= index)
diff --git a/content/browser/frame_host/navigation_controller_impl_unittest.cc b/content/browser/frame_host/navigation_controller_impl_unittest.cc
index 3b44a73..a322ace 100644
--- a/content/browser/frame_host/navigation_controller_impl_unittest.cc
+++ b/content/browser/frame_host/navigation_controller_impl_unittest.cc
@@ -2848,6 +2848,57 @@
   EXPECT_EQ(controller.GetEntryAtIndex(1)->GetURL(), transient_url);
 }
 
+// Ensure that adding a transient entry works when history is full.
+TEST_F(NavigationControllerTest, TransientEntryWithFullHistory) {
+  NavigationControllerImpl& controller = controller_impl();
+
+  const GURL url0("http://foo/0");
+  const GURL url1("http://foo/1");
+  const GURL url2("http://foo/2");
+  const GURL transient_url("http://foo/transient");
+
+  // Maximum count should be at least 2 or we will not be able to perform
+  // another navigation, since it would need to prune the last committed entry
+  // which is not safe.
+  controller.set_max_entry_count_for_testing(2);
+  NavigationSimulator::NavigateAndCommitFromBrowser(contents(), url0);
+  NavigationSimulator::NavigateAndCommitFromBrowser(contents(), url1);
+
+  // Add a transient entry beyond entry count limit.
+  auto transient_entry = std::make_unique<NavigationEntryImpl>();
+  transient_entry->SetURL(transient_url);
+  controller.SetTransientEntry(std::move(transient_entry));
+
+  // Check our state.
+  EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL());
+  EXPECT_EQ(controller.GetEntryCount(), 3);
+  EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 1);
+  EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
+  EXPECT_TRUE(controller.GetLastCommittedEntry());
+  EXPECT_FALSE(controller.GetPendingEntry());
+  EXPECT_TRUE(controller.CanGoBack());
+  EXPECT_FALSE(controller.CanGoForward());
+
+  // Go back, removing the transient entry.
+  controller.GoBack();
+  EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL());
+  EXPECT_EQ(controller.GetEntryCount(), 2);
+
+  // Initiate a navigation, then add a transient entry with the pending entry
+  // present.
+  auto navigation =
+      NavigationSimulator::CreateBrowserInitiated(url2, contents());
+  navigation->Start();
+  auto another_transient = std::make_unique<NavigationEntryImpl>();
+  another_transient->SetURL(transient_url);
+  controller.SetTransientEntry(std::move(another_transient));
+  EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL());
+  EXPECT_EQ(controller.GetEntryCount(), 3);
+  navigation->Commit();
+  EXPECT_EQ(url2, controller.GetVisibleEntry()->GetURL());
+  EXPECT_EQ(controller.GetEntryCount(), 2);
+}
+
 // Ensure that renderer initiated pending entries get replaced, so that we
 // don't show a stale virtual URL when a navigation commits.
 // See http://crbug.com/266922.
diff --git a/content/browser/frame_host/render_frame_host_factory.cc b/content/browser/frame_host/render_frame_host_factory.cc
index 5f8784a5..ef71766 100644
--- a/content/browser/frame_host/render_frame_host_factory.cc
+++ b/content/browser/frame_host/render_frame_host_factory.cc
@@ -8,6 +8,7 @@
 #include "base/memory/ptr_util.h"
 #include "content/browser/frame_host/frame_tree_node.h"
 #include "content/browser/frame_host/render_frame_host_impl.h"
+#include "content/browser/renderer_host/render_view_host_impl.h"
 
 namespace content {
 
@@ -17,7 +18,7 @@
 // static
 std::unique_ptr<RenderFrameHostImpl> RenderFrameHostFactory::Create(
     SiteInstance* site_instance,
-    RenderViewHostImpl* render_view_host,
+    scoped_refptr<RenderViewHostImpl> render_view_host,
     RenderFrameHostDelegate* delegate,
     FrameTree* frame_tree,
     FrameTreeNode* frame_tree_node,
@@ -27,12 +28,14 @@
     bool renderer_initiated_creation) {
   if (factory_) {
     return factory_->CreateRenderFrameHost(
-        site_instance, render_view_host, delegate, frame_tree, frame_tree_node,
-        routing_id, widget_routing_id, hidden, renderer_initiated_creation);
+        site_instance, std::move(render_view_host), delegate, frame_tree,
+        frame_tree_node, routing_id, widget_routing_id, hidden,
+        renderer_initiated_creation);
   }
   return base::WrapUnique(new RenderFrameHostImpl(
-      site_instance, render_view_host, delegate, frame_tree, frame_tree_node,
-      routing_id, widget_routing_id, hidden, renderer_initiated_creation));
+      site_instance, std::move(render_view_host), delegate, frame_tree,
+      frame_tree_node, routing_id, widget_routing_id, hidden,
+      renderer_initiated_creation));
 }
 
 // static
diff --git a/content/browser/frame_host/render_frame_host_factory.h b/content/browser/frame_host/render_frame_host_factory.h
index 9b3c548..182b6c72 100644
--- a/content/browser/frame_host/render_frame_host_factory.h
+++ b/content/browser/frame_host/render_frame_host_factory.h
@@ -10,6 +10,7 @@
 #include <memory>
 
 #include "base/macros.h"
+#include "base/memory/scoped_refptr.h"
 #include "content/common/content_export.h"
 
 namespace content {
@@ -30,7 +31,7 @@
   // or a regular RenderFrameHostImpl if no factory is registered.
   static std::unique_ptr<RenderFrameHostImpl> Create(
       SiteInstance* site_instance,
-      RenderViewHostImpl* render_view_host,
+      scoped_refptr<RenderViewHostImpl> render_view_host,
       RenderFrameHostDelegate* delegate,
       FrameTree* frame_tree,
       FrameTreeNode* frame_tree_node,
@@ -50,7 +51,7 @@
   // function to create an alternate kind of RenderFrameHostImpl for testing.
   virtual std::unique_ptr<RenderFrameHostImpl> CreateRenderFrameHost(
       SiteInstance* site_instance,
-      RenderViewHostImpl* render_view_host,
+      scoped_refptr<RenderViewHostImpl> render_view_host,
       RenderFrameHostDelegate* delegate,
       FrameTree* frame_tree,
       FrameTreeNode* frame_tree_node,
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index ee3bf9e..8d54041 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -173,6 +173,7 @@
 #include "mojo/public/cpp/bindings/associated_interface_ptr.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
 #include "mojo/public/cpp/bindings/message.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 #include "mojo/public/cpp/system/data_pipe.h"
 #include "net/url_request/url_request_context.h"
@@ -832,16 +833,17 @@
       create_network_factory_callback;
 }
 
-RenderFrameHostImpl::RenderFrameHostImpl(SiteInstance* site_instance,
-                                         RenderViewHostImpl* render_view_host,
-                                         RenderFrameHostDelegate* delegate,
-                                         FrameTree* frame_tree,
-                                         FrameTreeNode* frame_tree_node,
-                                         int32_t routing_id,
-                                         int32_t widget_routing_id,
-                                         bool hidden,
-                                         bool renderer_initiated_creation)
-    : render_view_host_(render_view_host),
+RenderFrameHostImpl::RenderFrameHostImpl(
+    SiteInstance* site_instance,
+    scoped_refptr<RenderViewHostImpl> render_view_host,
+    RenderFrameHostDelegate* delegate,
+    FrameTree* frame_tree,
+    FrameTreeNode* frame_tree_node,
+    int32_t routing_id,
+    int32_t widget_routing_id,
+    bool hidden,
+    bool renderer_initiated_creation)
+    : render_view_host_(std::move(render_view_host)),
       delegate_(delegate),
       site_instance_(static_cast<SiteInstanceImpl*>(site_instance)),
       process_(site_instance->GetProcess()),
@@ -881,7 +883,6 @@
           RenderViewHostImpl::kUnloadTimeoutMS)),
       commit_callback_interceptor_(nullptr),
       weak_ptr_factory_(this) {
-  frame_tree_->AddRenderViewHostRef(render_view_host_);
   GetProcess()->AddRoute(routing_id_, this);
   g_routing_id_frame_map.Get().emplace(
       RenderFrameHostID(GetProcess()->GetID(), routing_id_), this);
@@ -940,19 +941,11 @@
       owned_render_widget_host_->set_owned_by_render_frame_host(true);
     }
 
-    mojom::WidgetInputHandlerAssociatedPtr widget_handler;
-    mojom::WidgetInputHandlerHostRequest host_request;
-    if (frame_input_handler_) {
-      mojom::WidgetInputHandlerHostPtr host;
-      host_request = mojo::MakeRequest(&host);
-      frame_input_handler_->GetWidgetInputHandler(
-          mojo::MakeRequest(&widget_handler), std::move(host));
-    }
     if (!frame_tree_node_->parent())
       GetLocalRenderWidgetHost()->SetIntersectsViewport(true);
     GetLocalRenderWidgetHost()->SetFrameDepth(frame_tree_node_->depth());
-    GetLocalRenderWidgetHost()->SetWidgetInputHandler(std::move(widget_handler),
-                                                      std::move(host_request));
+    GetLocalRenderWidgetHost()->SetFrameInputHandler(
+        frame_input_handler_.get());
     GetLocalRenderWidgetHost()->input_router()->SetFrameTreeNodeId(
         frame_tree_node_->frame_tree_node_id());
   }
@@ -1088,10 +1081,6 @@
   if (owned_render_widget_host_)
     owned_render_widget_host_->ShutdownAndDestroyWidget(false);
 
-  // Notify the FrameTree that this RFH is going away, allowing it to shut down
-  // the corresponding RenderViewHost if it is no longer needed.
-  frame_tree_->ReleaseRenderViewHostRef(render_view_host_);
-
   // If another frame is waiting for a beforeunload ACK from this frame,
   // simulate it now.
   RenderFrameHostImpl* beforeunload_initiator = GetBeforeUnloadInitiator();
@@ -1391,7 +1380,7 @@
 }
 
 RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() {
-  return render_view_host_;
+  return render_view_host_.get();
 }
 
 service_manager::InterfaceProvider* RenderFrameHostImpl::GetRemoteInterfaces() {
@@ -1793,6 +1782,8 @@
 }
 
 mojom::FrameInputHandler* RenderFrameHostImpl::GetFrameInputHandler() {
+  if (!frame_input_handler_)
+    return nullptr;
   return frame_input_handler_.get();
 }
 
@@ -1952,17 +1943,8 @@
     mojom::WidgetPtr widget;
     GetRemoteInterfaces()->GetInterface(&widget);
     GetLocalRenderWidgetHost()->SetWidget(std::move(widget));
-
-    if (frame_input_handler_) {
-      mojom::WidgetInputHandlerAssociatedPtr widget_handler;
-      mojom::WidgetInputHandlerHostPtr host;
-      mojom::WidgetInputHandlerHostRequest host_request =
-          mojo::MakeRequest(&host);
-      frame_input_handler_->GetWidgetInputHandler(
-          mojo::MakeRequest(&widget_handler), std::move(host));
-      GetLocalRenderWidgetHost()->SetWidgetInputHandler(
-          std::move(widget_handler), std::move(host_request));
-    }
+    GetLocalRenderWidgetHost()->SetFrameInputHandler(
+        frame_input_handler_.get());
     GetLocalRenderWidgetHost()->input_router()->SetFrameTreeNodeId(
         frame_tree_node_->frame_tree_node_id());
     viz::mojom::InputTargetClientPtr input_target_client;
@@ -3997,8 +3979,10 @@
     return;
   }
   RenderFrameProxyHost* proxy_host = portal->CreateProxyAndAttachPortal();
-  std::move(callback).Run(proxy_host->GetRoutingID(),
-                          portal->GetDevToolsFrameToken());
+  std::move(callback).Run(
+      proxy_host->GetRoutingID(),
+      proxy_host->frame_tree_node()->current_replication_state(),
+      portal->GetDevToolsFrameToken());
 }
 
 void RenderFrameHostImpl::IssueKeepAliveHandle(
@@ -4300,7 +4284,7 @@
                                               base::Unretained(this)));
 
   registry_->AddInterface(base::BindRepeating(
-      &PictureInPictureServiceImpl::Create, base::Unretained(this)));
+      &PictureInPictureServiceImpl::CreateFromRequest, base::Unretained(this)));
 
   if (base::FeatureList::IsEnabled(blink::features::kNativeFileSystemAPI)) {
     registry_->AddInterface(base::BindRepeating(
@@ -4800,7 +4784,8 @@
   //
   // TODO(arthursonzogni): Replace DumpWithoutCrashing by a CHECK on M79 if it
   // is never reached.
-  if (common_params.url.IsAboutSrcdoc()) {
+  bool is_srcdoc = common_params.url.IsAboutSrcdoc();
+  if (is_srcdoc) {
     if (frame_tree_node_->IsMainFrame() ||
         common_params.url != GURL(url::kAboutSrcdocURL)) {
       base::debug::DumpWithoutCrashing();
@@ -4874,7 +4859,7 @@
   std::unique_ptr<blink::URLLoaderFactoryBundleInfo>
       subresource_loader_factories;
   if (base::FeatureList::IsEnabled(network::features::kNetworkService) &&
-      (!is_same_document || is_first_navigation)) {
+      (!is_same_document || is_first_navigation) && !is_srcdoc) {
     recreate_default_url_loader_factory_after_network_service_crash_ = false;
     subresource_loader_factories =
         std::make_unique<blink::URLLoaderFactoryBundleInfo>();
@@ -4949,9 +4934,12 @@
     subresource_loader_factories->default_factory_info() =
         std::move(default_factory_info);
 
-
+    // Only file resources can load file subresources.
+    //
+    // Other URLs like about:srcdoc or about:blank might be able load files, but
+    // only because they will inherit loaders from their parents instead of the
+    // ones provided by the browser process here.
     if (common_params.url.SchemeIsFile()) {
-      // Only file resources can load file subresources
       auto file_factory = std::make_unique<FileURLLoaderFactory>(
           browser_context->GetPath(),
           browser_context->GetSharedCorsOriginAccessList(),
@@ -5024,7 +5012,7 @@
   // It is imperative that cross-document navigations always provide a set of
   // subresource ULFs when the Network Service is enabled.
   DCHECK(!base::FeatureList::IsEnabled(network::features::kNetworkService) ||
-         is_same_document || !is_first_navigation ||
+         is_same_document || !is_first_navigation || is_srcdoc ||
          subresource_loader_factories);
 
   if (is_same_document) {
@@ -5060,7 +5048,7 @@
           std::move(subresource_loader_factories));
       subresource_loader_factories = CloneFactoryBundle(bundle);
       factory_bundle_for_prefetch = CloneFactoryBundle(bundle);
-    } else if (!is_same_document || is_first_navigation) {
+    } else if ((!is_same_document || is_first_navigation) && !is_srcdoc) {
       DCHECK(!base::FeatureList::IsEnabled(network::features::kNetworkService));
       factory_bundle_for_prefetch =
           std::make_unique<blink::URLLoaderFactoryBundleInfo>();
@@ -5129,6 +5117,24 @@
       }
     }
 
+    // about:srcdoc "inherits" loaders from its parent in the renderer process,
+    // There are no need to provide new ones here.
+    // TODO(arthursonzogni): What about about:blank URLs?
+    // TODO(arthursonzogni): What about data-URLs?
+    //
+    // Note: Inheriting loaders could be done in the browser process, but we
+    //       aren't confident there are enough reliable information in the
+    //       browser process to always make the correct decision. "Inheriting"
+    //       in the renderer process is slightly less problematic in that it
+    //       guarantees the renderer won't have higher privileges than it
+    //       originally had (since it will inherit loader factories it already
+    //       had access to).
+    if (is_srcdoc) {
+      DCHECK(!subresource_loader_factories);
+      DCHECK(!subresource_overrides);
+      DCHECK(!prefetch_loader_factory);
+    }
+
     SendCommitNavigation(
         navigation_client, navigation_request, common_params, commit_params,
         head, std::move(response_body), std::move(url_loader_client_endpoints),
@@ -5261,7 +5267,8 @@
   remote_interfaces_.reset(new service_manager::InterfaceProvider);
   remote_interfaces_->Bind(std::move(remote_interfaces));
 
-  remote_interfaces_->GetInterface(&frame_input_handler_);
+  remote_interfaces_->GetInterface(
+      frame_input_handler_.BindNewPipeAndPassReceiver());
 }
 
 void RenderFrameHostImpl::InvalidateMojoConnection() {
@@ -5271,6 +5278,7 @@
   frame_bindings_control_.reset();
   frame_host_associated_binding_.Close();
   navigation_control_.reset();
+  frame_input_handler_.reset();
 
   // Disconnect with ImageDownloader Mojo service in RenderFrame.
   mojo_image_downloader_.reset();
@@ -6140,8 +6148,8 @@
 }
 
 void RenderFrameHostImpl::GetAudioContextManager(
-    blink::mojom::AudioContextManagerRequest request) {
-  AudioContextManagerImpl::Create(this, std::move(request));
+    mojo::PendingReceiver<blink::mojom::AudioContextManager> receiver) {
+  AudioContextManagerImpl::Create(this, std::move(receiver));
 }
 
 void RenderFrameHostImpl::GetAuthenticator(
@@ -6156,9 +6164,9 @@
 }
 
 void RenderFrameHostImpl::GetCredentialManager(
-    blink::mojom::CredentialManagerRequest request) {
-  GetContentClient()->browser()->BindCredentialManagerRequest(
-      this, std::move(request));
+    mojo::PendingReceiver<blink::mojom::CredentialManager> receiver) {
+  GetContentClient()->browser()->BindCredentialManagerReceiver(
+      this, std::move(receiver));
 }
 
 void RenderFrameHostImpl::GetPushMessaging(
@@ -6178,15 +6186,16 @@
 }
 
 void RenderFrameHostImpl::GetVirtualAuthenticatorManager(
-    blink::test::mojom::VirtualAuthenticatorManagerRequest request) {
+    mojo::PendingReceiver<blink::test::mojom::VirtualAuthenticatorManager>
+        receiver) {
 #if !defined(OS_ANDROID)
   if (base::FeatureList::IsEnabled(features::kWebAuth)) {
     if (base::CommandLine::ForCurrentProcess()->HasSwitch(
             switches::kEnableWebAuthTestingAPI)) {
       auto* environment_singleton = AuthenticatorEnvironmentImpl::GetInstance();
       environment_singleton->EnableVirtualAuthenticatorFor(frame_tree_node_);
-      environment_singleton->AddVirtualAuthenticatorBinding(frame_tree_node_,
-                                                            std::move(request));
+      environment_singleton->AddVirtualAuthenticatorReceiver(
+          frame_tree_node_, std::move(receiver));
     }
   }
 #endif  // !defined(OS_ANDROID)
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index 72aea75c..77dbc25 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -57,6 +57,7 @@
 #include "content/public/common/transferrable_url_loader.mojom.h"
 #include "media/mojo/interfaces/interface_factory.mojom.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/system/data_pipe.h"
 #include "net/base/network_isolation_key.h"
 #include "net/cookies/canonical_cookie.h"
@@ -400,7 +401,7 @@
   void DidNavigate(const FrameHostMsg_DidCommitProvisionalLoad_Params& params,
                    bool is_same_document_navigation);
 
-  RenderViewHostImpl* render_view_host() { return render_view_host_; }
+  RenderViewHostImpl* render_view_host() { return render_view_host_.get(); }
   RenderFrameHostDelegate* delegate() { return delegate_; }
   FrameTreeNode* frame_tree_node() const { return frame_tree_node_; }
 
@@ -976,7 +977,7 @@
   // should be the abstraction needed here, but we need RenderViewHost to pass
   // into WebContentsObserver::FrameDetached for now.
   RenderFrameHostImpl(SiteInstance* site_instance,
-                      RenderViewHostImpl* render_view_host,
+                      scoped_refptr<RenderViewHostImpl> render_view_host,
                       RenderFrameHostDelegate* delegate,
                       FrameTree* frame_tree,
                       FrameTreeNode* frame_tree_node,
@@ -1424,14 +1425,16 @@
   void GetFrameHostTestInterface(
       blink::mojom::FrameHostTestInterfaceRequest request) override;
   void GetAudioContextManager(
-      blink::mojom::AudioContextManagerRequest request) override;
+      mojo::PendingReceiver<blink::mojom::AudioContextManager> receiver)
+      override;
   void GetCredentialManager(
-      blink::mojom::CredentialManagerRequest request) override;
+      mojo::PendingReceiver<blink::mojom::CredentialManager> receiver) override;
   void GetAuthenticator(blink::mojom::AuthenticatorRequest request) override;
   void GetPushMessaging(
       mojo::PendingReceiver<blink::mojom::PushMessaging> receiver) override;
   void GetVirtualAuthenticatorManager(
-      blink::test::mojom::VirtualAuthenticatorManagerRequest request) override;
+      mojo::PendingReceiver<blink::test::mojom::VirtualAuthenticatorManager>
+          receiver) override;
   void RegisterAppCacheHost(blink::mojom::AppCacheHostRequest host_request,
                             blink::mojom::AppCacheFrontendPtr frontend,
                             const base::UnguessableToken& host_id) override;
@@ -1682,13 +1685,18 @@
       const std::string& cookie_url,
       base::circular_deque<size_t>* already_seen_url_hashes);
 
-  // For now, RenderFrameHosts indirectly keep RenderViewHosts alive via a
-  // refcount that calls Shutdown when it reaches zero.  This allows each
-  // RenderFrameHostManager to just care about RenderFrameHosts, while ensuring
-  // we have a RenderViewHost for each RenderFrameHost.
+  // The RenderViewHost that this RenderFrameHost is associated with.
+  //
+  // It is kept alive as long as any RenderFrameHosts or RenderFrameProxyHosts
+  // are using it.
+  //
+  // The refcount allows each RenderFrameHostManager to just care about
+  // RenderFrameHosts, while ensuring we have a RenderViewHost for each
+  // RenderFrameHost.
+  //
   // TODO(creis): RenderViewHost will eventually go away and be replaced with
   // some form of page context.
-  RenderViewHostImpl* const render_view_host_;
+  const scoped_refptr<RenderViewHostImpl> render_view_host_;
 
   RenderFrameHostDelegate* const delegate_;
 
@@ -2097,7 +2105,7 @@
   base::Optional<base::UnguessableToken> overlay_routing_token_;
 
   viz::mojom::InputTargetClient* input_target_client_ = nullptr;
-  mojom::FrameInputHandlerPtr frame_input_handler_;
+  mojo::Remote<mojom::FrameInputHandler> frame_input_handler_;
 
   std::unique_ptr<KeepAliveHandleFactory> keep_alive_handle_factory_;
   base::TimeDelta keep_alive_timeout_;
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index 6ed97085..cfc019e 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -1038,12 +1038,12 @@
 
 RenderFrameProxyHost* RenderFrameHostManager::CreateRenderFrameProxyHost(
     SiteInstance* site_instance,
-    RenderViewHostImpl* rvh) {
+    scoped_refptr<RenderViewHostImpl> rvh) {
   int site_instance_id = site_instance->GetId();
   CHECK(proxy_hosts_.find(site_instance_id) == proxy_hosts_.end())
       << "A proxy already existed for this SiteInstance.";
   RenderFrameProxyHost* proxy_host =
-      new RenderFrameProxyHost(site_instance, rvh, frame_tree_node_);
+      new RenderFrameProxyHost(site_instance, std::move(rvh), frame_tree_node_);
   proxy_hosts_[site_instance_id] = base::WrapUnique(proxy_host);
   static_cast<SiteInstanceImpl*>(site_instance)->AddObserver(this);
   return proxy_host;
@@ -1914,7 +1914,7 @@
 
   // Create a RVH for main frames, or find the existing one for subframes.
   FrameTree* frame_tree = frame_tree_node_->frame_tree();
-  RenderViewHostImpl* render_view_host = nullptr;
+  scoped_refptr<RenderViewHostImpl> render_view_host;
   if (frame_tree_node_->IsMainFrame()) {
     render_view_host = frame_tree->CreateRenderViewHost(
         site_instance, view_routing_id, frame_routing_id, widget_routing_id,
@@ -2049,24 +2049,25 @@
   // At this point we know that we either have to 1) create a new
   // RenderFrameProxyHost or 2) revive an existing, but no longer alive
   // RenderFrameProxyHost.
-  RenderViewHostImpl* render_view_host =
-      frame_tree_node_->frame_tree()->GetRenderViewHost(instance);
   if (!proxy) {
+    // The RenderViewHost creates the page level structure in Blink. The first
+    // object to depend on it is necessarily a main frame one.
+    CHECK(frame_tree_node_->frame_tree()->GetRenderViewHost(instance) ||
+          frame_tree_node_->IsMainFrame());
+
     // Before creating a new RenderFrameProxyHost, ensure a RenderViewHost
     // exists for |instance|, as it creates the page level structure in Blink.
-    if (!render_view_host) {
-      CHECK(frame_tree_node_->IsMainFrame());
-      render_view_host = frame_tree_node_->frame_tree()->CreateRenderViewHost(
-          instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE, MSG_ROUTING_NONE, true,
-          true);
-    }
+    scoped_refptr<RenderViewHostImpl> render_view_host =
+        frame_tree_node_->frame_tree()->CreateRenderViewHost(
+            instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE, MSG_ROUTING_NONE,
+            true, true);
 
-    proxy = CreateRenderFrameProxyHost(instance, render_view_host);
+    proxy = CreateRenderFrameProxyHost(instance, std::move(render_view_host));
   }
 
   // Make sure that the RenderFrameProxy is present in the renderer.
-  if (frame_tree_node_->IsMainFrame() && render_view_host) {
-    InitRenderView(render_view_host, proxy);
+  if (frame_tree_node_->IsMainFrame() && proxy->GetRenderViewHost()) {
+    InitRenderView(proxy->GetRenderViewHost(), proxy);
   } else {
     proxy->InitRenderFrameProxy();
   }
diff --git a/content/browser/frame_host/render_frame_host_manager.h b/content/browser/frame_host/render_frame_host_manager.h
index 4bd1f4a..f93cf92 100644
--- a/content/browser/frame_host/render_frame_host_manager.h
+++ b/content/browser/frame_host/render_frame_host_manager.h
@@ -575,8 +575,10 @@
   };
 
   // Create a RenderFrameProxyHost owned by this object.
-  RenderFrameProxyHost* CreateRenderFrameProxyHost(SiteInstance* site_instance,
-                                                   RenderViewHostImpl* rvh);
+  RenderFrameProxyHost* CreateRenderFrameProxyHost(
+      SiteInstance* site_instance,
+      scoped_refptr<RenderViewHostImpl> rvh);
+
   // Delete a RenderFrameProxyHost owned by this object.
   void DeleteRenderFrameProxyHost(SiteInstance* site_instance);
 
diff --git a/content/browser/frame_host/render_frame_host_manager_browsertest.cc b/content/browser/frame_host/render_frame_host_manager_browsertest.cc
index a09d204..192253c 100644
--- a/content/browser/frame_host/render_frame_host_manager_browsertest.cc
+++ b/content/browser/frame_host/render_frame_host_manager_browsertest.cc
@@ -3197,7 +3197,8 @@
   // The corresponding RVH should still be referenced by the proxy and the old
   // frame.
   RenderViewHostImpl* rvh_a = rfh_a->render_view_host();
-  EXPECT_EQ(2, rvh_a->ref_count());
+  EXPECT_FALSE(rvh_a->HasOneRef());
+  EXPECT_TRUE(rvh_a->HasAtLeastOneRef());
 
   // Kill the old process.
   RenderProcessHost* process = rfh_a->GetProcess();
@@ -3209,7 +3210,7 @@
   // |rfh_a| is now deleted, thanks to the bug fix.
 
   // With |rfh_a| gone, the RVH should only be referenced by the (dead) proxy.
-  EXPECT_EQ(1, rvh_a->ref_count());
+  EXPECT_TRUE(rvh_a->HasOneRef());
   EXPECT_TRUE(root->render_manager()->GetRenderFrameProxyHost(site_instance_a));
   EXPECT_FALSE(root->render_manager()
                    ->GetRenderFrameProxyHost(site_instance_a)
diff --git a/content/browser/frame_host/render_frame_proxy_host.cc b/content/browser/frame_host/render_frame_proxy_host.cc
index ab3be343..62b8af6 100644
--- a/content/browser/frame_host/render_frame_proxy_host.cc
+++ b/content/browser/frame_host/render_frame_proxy_host.cc
@@ -55,24 +55,23 @@
   return it == frames->end() ? NULL : it->second;
 }
 
-RenderFrameProxyHost::RenderFrameProxyHost(SiteInstance* site_instance,
-                                           RenderViewHostImpl* render_view_host,
-                                           FrameTreeNode* frame_tree_node)
+RenderFrameProxyHost::RenderFrameProxyHost(
+    SiteInstance* site_instance,
+    scoped_refptr<RenderViewHostImpl> render_view_host,
+    FrameTreeNode* frame_tree_node)
     : routing_id_(site_instance->GetProcess()->GetNextRoutingID()),
       site_instance_(site_instance),
       process_(site_instance->GetProcess()),
       frame_tree_node_(frame_tree_node),
       render_frame_proxy_created_(false),
-      render_view_host_(render_view_host) {
+      render_view_host_(std::move(render_view_host)) {
   GetProcess()->AddRoute(routing_id_, this);
   CHECK(g_routing_id_frame_proxy_map.Get().insert(
       std::make_pair(
           RenderFrameProxyHostID(GetProcess()->GetID(), routing_id_),
           this)).second);
-  CHECK(render_view_host ||
+  CHECK(render_view_host_ ||
         frame_tree_node_->render_manager()->IsMainFrameForInnerDelegate());
-  if (render_view_host)
-    frame_tree_node_->frame_tree()->AddRenderViewHostRef(render_view_host_);
 
   bool is_proxy_to_parent = !frame_tree_node_->IsMainFrame() &&
                             frame_tree_node_->parent()
@@ -107,8 +106,11 @@
       Send(new FrameMsg_DeleteProxy(routing_id_));
   }
 
-  if (render_view_host_)
-    frame_tree_node_->frame_tree()->ReleaseRenderViewHostRef(render_view_host_);
+  // TODO(arthursonzogni): There are no known reason for removing the
+  // RenderViewHostImpl here instead of automatically at the end of the
+  // destructor. This line can be removed.
+  render_view_host_.reset();
+
   GetProcess()->RemoveRoute(routing_id_);
   g_routing_id_frame_proxy_map.Get().erase(
       RenderFrameProxyHostID(GetProcess()->GetID(), routing_id_));
@@ -124,8 +126,9 @@
 }
 
 RenderViewHostImpl* RenderFrameProxyHost::GetRenderViewHost() {
-  return frame_tree_node_->frame_tree()->GetRenderViewHost(
-      site_instance_.get());
+  return frame_tree_node_->frame_tree()
+      ->GetRenderViewHost(site_instance_.get())
+      .get();
 }
 
 RenderWidgetHostView* RenderFrameProxyHost::GetRenderWidgetHostView() {
diff --git a/content/browser/frame_host/render_frame_proxy_host.h b/content/browser/frame_host/render_frame_proxy_host.h
index 2336e45..ebff31c 100644
--- a/content/browser/frame_host/render_frame_proxy_host.h
+++ b/content/browser/frame_host/render_frame_proxy_host.h
@@ -70,7 +70,7 @@
   static RenderFrameProxyHost* FromID(int process_id, int routing_id);
 
   RenderFrameProxyHost(SiteInstance* site_instance,
-                       RenderViewHostImpl* render_view_host,
+                       scoped_refptr<RenderViewHostImpl> render_view_host,
                        FrameTreeNode* frame_tree_node);
   ~RenderFrameProxyHost() override;
 
@@ -177,10 +177,14 @@
   // parent's renderer process.
   std::unique_ptr<CrossProcessFrameConnector> cross_process_frame_connector_;
 
-  // The RenderViewHost that this RenderFrameProxyHost is associated with. It is
-  // kept alive as long as any RenderFrameHosts or RenderFrameProxyHosts
-  // are associated with it.
-  RenderViewHostImpl* render_view_host_;
+  // The RenderViewHost that this RenderFrameProxyHost is associated with.
+  //
+  // It is kept alive as long as any RenderFrameHosts or RenderFrameProxyHosts
+  // are using it.
+  //
+  // TODO(creis): RenderViewHost will eventually go away and be replaced with
+  // some form of page context.
+  scoped_refptr<RenderViewHostImpl> render_view_host_;
 
   DISALLOW_COPY_AND_ASSIGN(RenderFrameProxyHost);
 };
diff --git a/content/browser/loader/cross_site_document_blocking_browsertest.cc b/content/browser/loader/cross_site_document_blocking_browsertest.cc
index c0f7fd52..8281ef7 100644
--- a/content/browser/loader/cross_site_document_blocking_browsertest.cc
+++ b/content/browser/loader/cross_site_document_blocking_browsertest.cc
@@ -471,9 +471,14 @@
     VerifyImgRequest(resource, expectations,
                      GURL("http://foo.com/title1.html"));
 
-    // Test from a file: origin.
-    VerifyImgRequest(resource, expectations,
-                     GetTestUrl(nullptr, "title1.html"));
+    // Pre-NetworkService CORB implementation doesn't have an equivalent of
+    // URLLoaderFactoryParams::is_corb_enabled and therefore there is no way to
+    // turn off CORB only when allow_universal_access_from_file_urls is false.
+    if (base::FeatureList::IsEnabled(network::features::kNetworkService)) {
+      // Test from a file: origin.
+      VerifyImgRequest(resource, expectations,
+                       GetTestUrl(nullptr, "title1.html"));
+    }
   }
 
   void VerifyImgRequest(std::string resource,
@@ -540,12 +545,7 @@
   DISALLOW_COPY_AND_ASSIGN(CrossSiteDocumentBlockingTest);
 };
 
-#if defined(OS_ANDROID)
-#define MAYBE_BlockImages DISABLED_BlockImages
-#else
-#define MAYBE_BlockImages BlockImages
-#endif
-IN_PROC_BROWSER_TEST_P(CrossSiteDocumentBlockingTest, MAYBE_BlockImages) {
+IN_PROC_BROWSER_TEST_P(CrossSiteDocumentBlockingTest, BlockImagesWithSniffing) {
   embedded_test_server()->StartAcceptingConnections();
 
   // The following are files under content/test/data/site_isolation. All
@@ -574,6 +574,10 @@
                                      "nosniff.json-prefixed.js"};
   for (const char* resource : blocked_resources)
     VerifyImgRequest(resource, kShouldBeSniffedAndBlocked);
+}
+
+IN_PROC_BROWSER_TEST_P(CrossSiteDocumentBlockingTest, BlockImagesNoSniffing) {
+  embedded_test_server()->StartAcceptingConnections();
 
   // These files should be disallowed without sniffing.
   //   nosniff.*   - Won't sniff correctly, but blocked because of nosniff.
@@ -587,6 +591,10 @@
       "nosniff.html", "nosniff.xml", "nosniff.json", "nosniff.txt", "fake.zip"};
   for (const char* resource : nosniff_blocked_resources)
     VerifyImgRequest(resource, kShouldBeBlockedWithoutSniffing);
+}
+
+IN_PROC_BROWSER_TEST_P(CrossSiteDocumentBlockingTest, AllowImagesWithSniffing) {
+  embedded_test_server()->StartAcceptingConnections();
 
   // These files are allowed for XHR under the document blocking policy because
   // the sniffing logic determines they are not actually documents.
diff --git a/content/browser/media/session/media_session_android.cc b/content/browser/media/session/media_session_android.cc
index 232d94a..93e7d90 100644
--- a/content/browser/media/session/media_session_android.cc
+++ b/content/browser/media/session/media_session_android.cc
@@ -41,8 +41,8 @@
   if (contents_android)
     contents_android->SetMediaSession(j_media_session);
 
-  media_session::mojom::MediaSessionObserverPtr observer;
-  observer_binding_.Bind(mojo::MakeRequest(&observer));
+  mojo::PendingRemote<media_session::mojom::MediaSessionObserver> observer;
+  observer_binding_.Bind(observer.InitWithNewPipeAndPassReceiver());
   session->AddObserver(std::move(observer));
 }
 
diff --git a/content/browser/media/session/media_session_impl.cc b/content/browser/media/session/media_session_impl.cc
index 0b78bac..e8a9ac3 100644
--- a/content/browser/media/session/media_session_impl.cc
+++ b/content/browser/media/session/media_session_impl.cc
@@ -255,10 +255,8 @@
 
   images_.insert_or_assign(MediaSessionImageType::kSourceIcon, icons);
 
-  observers_.ForAllPtrs(
-      [this](media_session::mojom::MediaSessionObserver* observer) {
-        observer->MediaSessionImagesChanged(this->images_);
-      });
+  for (auto& observer : observers_)
+    observer->MediaSessionImagesChanged(this->images_);
 }
 
 bool MediaSessionImpl::AddPlayer(MediaSessionPlayerObserver* observer,
@@ -835,16 +833,17 @@
 }
 
 void MediaSessionImpl::AddObserver(
-    media_session::mojom::MediaSessionObserverPtr observer) {
-  observer->MediaSessionInfoChanged(GetMediaSessionInfoSync());
-  observer->MediaSessionMetadataChanged(metadata_);
-  observer->MediaSessionImagesChanged(images_);
+    mojo::PendingRemote<media_session::mojom::MediaSessionObserver> observer) {
+  mojo::Remote<media_session::mojom::MediaSessionObserver>
+      media_session_observer(std::move(observer));
+  media_session_observer->MediaSessionInfoChanged(GetMediaSessionInfoSync());
+  media_session_observer->MediaSessionMetadataChanged(metadata_);
+  media_session_observer->MediaSessionImagesChanged(images_);
 
   std::vector<media_session::mojom::MediaSessionAction> actions(
       actions_.begin(), actions_.end());
-  observer->MediaSessionActionsChanged(actions);
-
-  observers_.AddPtr(std::move(observer));
+  media_session_observer->MediaSessionActionsChanged(actions);
+  observers_.Add(std::move(media_session_observer));
 }
 
 void MediaSessionImpl::FinishSystemAudioFocusRequest(
@@ -967,10 +966,8 @@
   if (current_info == session_info_)
     return;
 
-  observers_.ForAllPtrs(
-      [&current_info](media_session::mojom::MediaSessionObserver* observer) {
-        observer->MediaSessionInfoChanged(current_info.Clone());
-      });
+  for (auto& observer : observers_)
+    observer->MediaSessionInfoChanged(current_info.Clone());
 
   delegate_->MediaSessionInfoChanged(current_info.Clone());
 
@@ -1186,10 +1183,8 @@
 
   std::vector<media_session::mojom::MediaSessionAction> actions_vec(
       actions.begin(), actions.end());
-  observers_.ForAllPtrs(
-      [&actions_vec](media_session::mojom::MediaSessionObserver* observer) {
-        observer->MediaSessionActionsChanged(actions_vec);
-      });
+  for (auto& observer : observers_)
+    observer->MediaSessionActionsChanged(actions_vec);
 }
 
 void MediaSessionImpl::RebuildAndNotifyMetadataChanged() {
@@ -1235,16 +1230,13 @@
 
   if (!images_changed && !metadata_changed)
     return;
+  for (auto& observer : observers_) {
+    if (metadata_changed)
+      observer->MediaSessionMetadataChanged(this->metadata_);
 
-  observers_.ForAllPtrs(
-      [this, metadata_changed,
-       images_changed](media_session::mojom::MediaSessionObserver* observer) {
-        if (metadata_changed)
-          observer->MediaSessionMetadataChanged(this->metadata_);
-
-        if (images_changed)
-          observer->MediaSessionImagesChanged(this->images_);
-      });
+    if (images_changed)
+      observer->MediaSessionImagesChanged(this->images_);
+  }
 }
 
 WEB_CONTENTS_USER_DATA_KEY_IMPL(MediaSessionImpl)
diff --git a/content/browser/media/session/media_session_impl.h b/content/browser/media/session/media_session_impl.h
index abde0ac..bd082252 100644
--- a/content/browser/media/session/media_session_impl.h
+++ b/content/browser/media/session/media_session_impl.h
@@ -27,6 +27,7 @@
 #include "mojo/public/cpp/bindings/binding.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
 #include "mojo/public/cpp/bindings/interface_ptr_set.h"
+#include "mojo/public/cpp/bindings/remote_set.h"
 #include "services/media_session/public/mojom/audio_focus.mojom.h"
 
 #if defined(OS_ANDROID)
@@ -221,7 +222,8 @@
 
   // Adds a mojo based observer to listen to events related to this session.
   void AddObserver(
-      media_session::mojom::MediaSessionObserverPtr observer) override;
+      mojo::PendingRemote<media_session::mojom::MediaSessionObserver> observer)
+      override;
 
   // Called by |AudioFocusDelegate| when an async audio focus request is
   // completed.
@@ -419,7 +421,7 @@
   // Bindings for Mojo pointers to |this| held by media route providers.
   mojo::BindingSet<media_session::mojom::MediaSession> bindings_;
 
-  mojo::InterfacePtrSet<media_session::mojom::MediaSessionObserver> observers_;
+  mojo::RemoteSet<media_session::mojom::MediaSessionObserver> observers_;
 
   WEB_CONTENTS_USER_DATA_KEY_DECL();
 
diff --git a/content/browser/media/session/media_session_impl_unittest.cc b/content/browser/media/session/media_session_impl_unittest.cc
index 4880f1e..11349c6 100644
--- a/content/browser/media/session/media_session_impl_unittest.cc
+++ b/content/browser/media/session/media_session_impl_unittest.cc
@@ -125,7 +125,7 @@
   }
 
   void ClearObservers(MediaSessionImpl* session) {
-    session->observers_.CloseAll();
+    session->observers_.Clear();
   }
 
   bool HasObservers(MediaSessionImpl* session) {
diff --git a/content/browser/media/webaudio/audio_context_manager_impl.cc b/content/browser/media/webaudio/audio_context_manager_impl.cc
index 1ed05d2..798e49e 100644
--- a/content/browser/media/webaudio/audio_context_manager_impl.cc
+++ b/content/browser/media/webaudio/audio_context_manager_impl.cc
@@ -4,12 +4,13 @@
 
 #include "content/browser/media/webaudio/audio_context_manager_impl.h"
 
+#include <utility>
+
 #include "base/time/default_tick_clock.h"
 #include "content/browser/frame_host/render_frame_host_impl.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
 #include "services/metrics/public/cpp/ukm_builders.h"
 #include "services/metrics/public/cpp/ukm_recorder.h"
 
@@ -30,18 +31,18 @@
 
 void AudioContextManagerImpl::Create(
     RenderFrameHost* render_frame_host,
-    blink::mojom::AudioContextManagerRequest request) {
+    mojo::PendingReceiver<blink::mojom::AudioContextManager> receiver) {
   DCHECK(render_frame_host);
 
   // The object is bound to the lifetime of |render_frame_host| and the mojo
   // connection. See FrameServiceBase for details.
-  new AudioContextManagerImpl(render_frame_host, std::move(request));
+  new AudioContextManagerImpl(render_frame_host, std::move(receiver));
 }
 
 AudioContextManagerImpl::AudioContextManagerImpl(
     RenderFrameHost* render_frame_host,
-    blink::mojom::AudioContextManagerRequest request)
-    : FrameServiceBase(render_frame_host, std::move(request)),
+    mojo::PendingReceiver<blink::mojom::AudioContextManager> receiver)
+    : FrameServiceBase(render_frame_host, std::move(receiver)),
       render_frame_host_impl_(
           static_cast<RenderFrameHostImpl*>(render_frame_host)),
       clock_(base::DefaultTickClock::GetInstance()) {
diff --git a/content/browser/media/webaudio/audio_context_manager_impl.h b/content/browser/media/webaudio/audio_context_manager_impl.h
index b35978d..ffd7fb6 100644
--- a/content/browser/media/webaudio/audio_context_manager_impl.h
+++ b/content/browser/media/webaudio/audio_context_manager_impl.h
@@ -7,7 +7,7 @@
 
 #include "content/common/content_export.h"
 #include "content/public/browser/frame_service_base.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "third_party/blink/public/mojom/webaudio/audio_context_manager.mojom.h"
 
 namespace base {
@@ -30,11 +30,12 @@
  public:
   explicit AudioContextManagerImpl(
       RenderFrameHost* render_frame_host,
-      blink::mojom::AudioContextManagerRequest request);
+      mojo::PendingReceiver<blink::mojom::AudioContextManager> receiver);
   ~AudioContextManagerImpl() override;
 
-  static void Create(RenderFrameHost* render_frame_host,
-                     blink::mojom::AudioContextManagerRequest request);
+  static void Create(
+      RenderFrameHost* render_frame_host,
+      mojo::PendingReceiver<blink::mojom::AudioContextManager> receiver);
 
   // Notify observers that audible audio started/stopped playing from an
   // AudioContext.
diff --git a/content/browser/media/webaudio/audio_context_manager_impl_unittest.cc b/content/browser/media/webaudio/audio_context_manager_impl_unittest.cc
index 0d229d8..ee79917 100644
--- a/content/browser/media/webaudio/audio_context_manager_impl_unittest.cc
+++ b/content/browser/media/webaudio/audio_context_manager_impl_unittest.cc
@@ -4,9 +4,12 @@
 
 #include "content/browser/media/webaudio/audio_context_manager_impl.h"
 
+#include <vector>
+
 #include "base/test/simple_test_tick_clock.h"
 #include "components/ukm/test_ukm_recorder.h"
 #include "content/public/test/test_renderer_host.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "services/metrics/public/cpp/ukm_builders.h"
 
 namespace content {
@@ -20,9 +23,9 @@
 
     clock_.SetNowTicks(base::TimeTicks::Now());
 
-    blink::mojom::AudioContextManagerPtr service_ptr;
+    mojo::Remote<blink::mojom::AudioContextManager> service_remote;
     audio_context_manager_ = new AudioContextManagerImpl(
-        main_rfh(), mojo::MakeRequest(&service_ptr));
+        main_rfh(), service_remote.BindNewPipeAndPassReceiver());
     audio_context_manager_->set_clock_for_testing(&clock_);
   }
 
diff --git a/content/browser/payments/payment_app_provider_impl.cc b/content/browser/payments/payment_app_provider_impl.cc
index c2db98f..c233385 100644
--- a/content/browser/payments/payment_app_provider_impl.cc
+++ b/content/browser/payments/payment_app_provider_impl.cc
@@ -5,6 +5,7 @@
 #include "content/browser/payments/payment_app_provider_impl.h"
 
 #include <map>
+#include <sstream>
 #include <string>
 #include <vector>
 
@@ -489,6 +490,7 @@
 
 DevToolsBackgroundServicesContext* GetDevTools(BrowserContext* browser_context,
                                                const url::Origin& sw_origin) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
   auto* storage_partition = BrowserContext::GetStoragePartitionForSite(
       browser_context, sw_origin.GetURL(), /*can_create=*/true);
   if (!storage_partition)
@@ -501,6 +503,67 @@
              : nullptr;
 }
 
+void OnResponseForCanMakePaymentOnUiThread(
+    BrowserContext* browser_context,
+    int64_t registration_id,
+    const url::Origin& sw_origin,
+    const std::string& payment_request_id,
+    PaymentAppProvider::PaymentEventResultCallback callback,
+    bool can_make_payment) {
+  auto* dev_tools = GetDevTools(browser_context, sw_origin);
+  if (dev_tools) {
+    dev_tools->LogBackgroundServiceEvent(
+        registration_id, sw_origin, DevToolsBackgroundService::kPaymentHandler,
+        "Can make payment response",
+        /*instance_id=*/payment_request_id,
+        {{"Can Make Payment", can_make_payment ? "true" : "false"}});
+  }
+
+  std::move(callback).Run(can_make_payment);
+}
+
+void OnResponseForAbortPaymentOnUiThread(
+    BrowserContext* browser_context,
+    int64_t registration_id,
+    const url::Origin& sw_origin,
+    const std::string& payment_request_id,
+    PaymentAppProvider::PaymentEventResultCallback callback,
+    bool payment_aborted) {
+  auto* dev_tools = GetDevTools(browser_context, sw_origin);
+  if (dev_tools) {
+    dev_tools->LogBackgroundServiceEvent(
+        registration_id, sw_origin, DevToolsBackgroundService::kPaymentHandler,
+        "Abort payment response",
+        /*instance_id=*/payment_request_id,
+        {{"Payment Aborted", payment_aborted ? "true" : "false"}});
+  }
+
+  std::move(callback).Run(payment_aborted);
+}
+
+void OnResponseForPaymentRequestOnUiThread(
+    BrowserContext* browser_context,
+    int64_t registration_id,
+    const url::Origin& sw_origin,
+    const std::string& payment_request_id,
+    PaymentAppProvider::InvokePaymentAppCallback callback,
+    payments::mojom::PaymentHandlerResponsePtr response) {
+  auto* dev_tools = GetDevTools(browser_context, sw_origin);
+  if (dev_tools) {
+    std::stringstream response_type;
+    response_type << response->response_type;
+    dev_tools->LogBackgroundServiceEvent(
+        registration_id, sw_origin, DevToolsBackgroundService::kPaymentHandler,
+        "Payment response",
+        /*instance_id=*/payment_request_id,
+        {{"Method Name", response->method_name},
+         {"Details", response->stringified_details},
+         {"Type", response_type.str()}});
+  }
+
+  std::move(callback).Run(std::move(response));
+}
+
 }  // namespace
 
 // static
@@ -559,8 +622,11 @@
 
   StartServiceWorkerForDispatch(
       browser_context, registration_id,
-      base::BindOnce(&DispatchPaymentRequestEvent, browser_context,
-                     std::move(event_data), std::move(callback)));
+      base::BindOnce(
+          &DispatchPaymentRequestEvent, browser_context, std::move(event_data),
+          base::BindOnce(&OnResponseForPaymentRequestOnUiThread,
+                         browser_context, registration_id, sw_origin,
+                         event_data->payment_request_id, std::move(callback))));
 }
 
 void PaymentAppProviderImpl::InstallAndInvokePaymentApp(
@@ -634,7 +700,10 @@
   StartServiceWorkerForDispatch(
       browser_context, registration_id,
       base::BindOnce(&DispatchCanMakePaymentEvent, browser_context,
-                     std::move(event_data), std::move(callback)));
+                     std::move(event_data),
+                     base::BindOnce(&OnResponseForCanMakePaymentOnUiThread,
+                                    browser_context, registration_id, sw_origin,
+                                    payment_request_id, std::move(callback))));
 }
 
 void PaymentAppProviderImpl::AbortPayment(BrowserContext* browser_context,
@@ -655,7 +724,9 @@
   StartServiceWorkerForDispatch(
       browser_context, registration_id,
       base::BindOnce(&DispatchAbortPaymentEvent, browser_context,
-                     std::move(callback)));
+                     base::BindOnce(&OnResponseForAbortPaymentOnUiThread,
+                                    browser_context, registration_id, sw_origin,
+                                    payment_request_id, std::move(callback))));
 }
 
 void PaymentAppProviderImpl::SetOpenedWindow(WebContents* web_contents) {
diff --git a/content/browser/picture_in_picture/picture_in_picture_service_impl.cc b/content/browser/picture_in_picture/picture_in_picture_service_impl.cc
index c2266716..f465e90 100644
--- a/content/browser/picture_in_picture/picture_in_picture_service_impl.cc
+++ b/content/browser/picture_in_picture/picture_in_picture_service_impl.cc
@@ -15,16 +15,26 @@
 // static
 void PictureInPictureServiceImpl::Create(
     RenderFrameHost* render_frame_host,
-    blink::mojom::PictureInPictureServiceRequest request) {
+    mojo::PendingReceiver<blink::mojom::PictureInPictureService> receiver) {
   DCHECK(render_frame_host);
-  new PictureInPictureServiceImpl(render_frame_host, std::move(request));
+  new PictureInPictureServiceImpl(render_frame_host, std::move(receiver));
+}
+
+// static
+void PictureInPictureServiceImpl::CreateFromRequest(
+    RenderFrameHost* render_frame_host,
+    blink::mojom::PictureInPictureServiceRequest request) {
+  // Implicit conversion to
+  // mojo::PendingReceiver<blink::mojom::PictureInPictureService>.
+  Create(render_frame_host, std::move(request));
 }
 
 // static
 PictureInPictureServiceImpl* PictureInPictureServiceImpl::CreateForTesting(
     RenderFrameHost* render_frame_host,
-    blink::mojom::PictureInPictureServiceRequest request) {
-  return new PictureInPictureServiceImpl(render_frame_host, std::move(request));
+    mojo::PendingReceiver<blink::mojom::PictureInPictureService> receiver) {
+  return new PictureInPictureServiceImpl(render_frame_host,
+                                         std::move(receiver));
 }
 
 void PictureInPictureServiceImpl::StartSession(
@@ -33,9 +43,8 @@
     const gfx::Size& natural_size,
     bool show_play_pause_button,
     bool show_mute_button,
-    blink::mojom::PictureInPictureSessionObserverPtr observer,
+    mojo::PendingRemote<blink::mojom::PictureInPictureSessionObserver> observer,
     StartSessionCallback callback) {
-  blink::mojom::PictureInPictureSessionPtr session_ptr;
   gfx::Size window_size;
 
   WebContentsImpl* web_contents_impl =
@@ -44,22 +53,25 @@
   auto result = web_contents_impl->EnterPictureInPicture(surface_id.value(),
                                                          natural_size);
 
+  mojo::PendingRemote<blink::mojom::PictureInPictureSession> session_remote;
+
   // Picture-in-Picture may not be supported by all embedders, so we should only
   // create the session if the EnterPictureInPicture request was successful.
   if (result == PictureInPictureResult::kSuccess) {
     active_session_ = std::make_unique<PictureInPictureSession>(
         this, MediaPlayerId(render_frame_host_, player_id), surface_id,
         natural_size, show_play_pause_button, show_mute_button,
-        mojo::MakeRequest(&session_ptr), std::move(observer), &window_size);
+        session_remote.InitWithNewPipeAndPassReceiver(), std::move(observer),
+        &window_size);
   }
 
-  std::move(callback).Run(std::move(session_ptr), window_size);
+  std::move(callback).Run(std::move(session_remote), window_size);
 }
 
 PictureInPictureServiceImpl::PictureInPictureServiceImpl(
     RenderFrameHost* render_frame_host,
-    blink::mojom::PictureInPictureServiceRequest request)
-    : FrameServiceBase(render_frame_host, std::move(request)),
+    mojo::PendingReceiver<blink::mojom::PictureInPictureService> receiver)
+    : FrameServiceBase(render_frame_host, std::move(receiver)),
       render_frame_host_(render_frame_host) {}
 
 PictureInPictureServiceImpl::~PictureInPictureServiceImpl() {
diff --git a/content/browser/picture_in_picture/picture_in_picture_service_impl.h b/content/browser/picture_in_picture/picture_in_picture_service_impl.h
index 2d32633..cfa35d1 100644
--- a/content/browser/picture_in_picture/picture_in_picture_service_impl.h
+++ b/content/browser/picture_in_picture/picture_in_picture_service_impl.h
@@ -5,9 +5,13 @@
 #ifndef CONTENT_BROWSER_PICTURE_IN_PICTURE_PICTURE_IN_PICTURE_SERVICE_IMPL_H_
 #define CONTENT_BROWSER_PICTURE_IN_PICTURE_PICTURE_IN_PICTURE_SERVICE_IMPL_H_
 
+#include <memory>
+
 #include "base/containers/unique_ptr_adapters.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/frame_service_base.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
 #include "third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom.h"
 
 namespace content {
@@ -22,20 +26,28 @@
 class CONTENT_EXPORT PictureInPictureServiceImpl final
     : public content::FrameServiceBase<blink::mojom::PictureInPictureService> {
  public:
-  static void Create(RenderFrameHost*,
-                     blink::mojom::PictureInPictureServiceRequest);
+  static void Create(
+      RenderFrameHost*,
+      mojo::PendingReceiver<blink::mojom::PictureInPictureService>);
+
+  // Temporary method while RenderProcessHostImpl does not migrate from using
+  // service_manager::BinderRegistry to using service_manager::BinderMap.
+  static void CreateFromRequest(RenderFrameHost*,
+                                blink::mojom::PictureInPictureServiceRequest);
+
   static PictureInPictureServiceImpl* CreateForTesting(
       RenderFrameHost*,
-      blink::mojom::PictureInPictureServiceRequest);
+      mojo::PendingReceiver<blink::mojom::PictureInPictureService>);
 
   // PictureInPictureService implementation.
-  void StartSession(uint32_t player_id,
-                    const base::Optional<viz::SurfaceId>& surface_id,
-                    const gfx::Size& natural_size,
-                    bool show_play_pause_button,
-                    bool show_mute_button,
-                    blink::mojom::PictureInPictureSessionObserverPtr,
-                    StartSessionCallback) final;
+  void StartSession(
+      uint32_t player_id,
+      const base::Optional<viz::SurfaceId>& surface_id,
+      const gfx::Size& natural_size,
+      bool show_play_pause_button,
+      bool show_mute_button,
+      mojo::PendingRemote<blink::mojom::PictureInPictureSessionObserver>,
+      StartSessionCallback) final;
 
   PictureInPictureSession* active_session_for_testing() const {
     return active_session_.get();
@@ -44,8 +56,9 @@
  private:
   friend class PictureInPictureSession;
 
-  PictureInPictureServiceImpl(RenderFrameHost*,
-                              blink::mojom::PictureInPictureServiceRequest);
+  PictureInPictureServiceImpl(
+      RenderFrameHost*,
+      mojo::PendingReceiver<blink::mojom::PictureInPictureService>);
   ~PictureInPictureServiceImpl() override;
 
   RenderFrameHost* render_frame_host_ = nullptr;
diff --git a/content/browser/picture_in_picture/picture_in_picture_service_impl_unittest.cc b/content/browser/picture_in_picture/picture_in_picture_service_impl_unittest.cc
index 53ad671b..b0b4520 100644
--- a/content/browser/picture_in_picture/picture_in_picture_service_impl_unittest.cc
+++ b/content/browser/picture_in_picture/picture_in_picture_service_impl_unittest.cc
@@ -16,7 +16,9 @@
 #include "content/test/test_render_frame_host.h"
 #include "content/test/test_render_view_host.h"
 #include "content/test/test_web_contents.h"
-#include "mojo/public/cpp/bindings/interface_ptr.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 namespace content {
@@ -106,9 +108,9 @@
 
     contents()->SetDelegate(&delegate_);
 
-    blink::mojom::PictureInPictureServiceRequest request;
+    mojo::Remote<blink::mojom::PictureInPictureService> service_remote;
     service_impl_ = PictureInPictureServiceImpl::CreateForTesting(
-        render_frame_host, std::move(request));
+        render_frame_host, service_remote.BindNewPipeAndPassReceiver());
   }
 
   void TearDown() override {
@@ -137,10 +139,11 @@
   const int kPlayerVideoOnlyId = 30;
 
   DummyPictureInPictureSessionObserver observer;
-  mojo::Binding<blink::mojom::PictureInPictureSessionObserver>
-      observer_bindings(&observer);
-  blink::mojom::PictureInPictureSessionObserverPtr observer_ptr;
-  observer_bindings.Bind(mojo::MakeRequest(&observer_ptr));
+  mojo::Receiver<blink::mojom::PictureInPictureSessionObserver>
+      observer_receiver(&observer);
+  mojo::PendingRemote<blink::mojom::PictureInPictureSessionObserver>
+      observer_remote;
+  observer_receiver.Bind(observer_remote.InitWithNewPipeAndPassReceiver());
 
   // If Picture-in-Picture there shouldn't be an active session.
   EXPECT_FALSE(service().active_session_for_testing());
@@ -154,21 +157,23 @@
               EnterPictureInPicture(contents(), surface_id, gfx::Size(42, 42)))
       .WillRepeatedly(testing::Return(PictureInPictureResult::kSuccess));
 
-  blink::mojom::PictureInPictureSessionPtr session_ptr;
+  mojo::Remote<blink::mojom::PictureInPictureSession> session_remote;
   gfx::Size window_size;
 
   service().StartSession(
       kPlayerVideoOnlyId, surface_id, gfx::Size(42, 42),
       true /* show_play_pause_button */, true /* show_mute_button */,
-      std::move(observer_ptr),
+      std::move(observer_remote),
       base::BindLambdaForTesting(
-          [&](blink::mojom::PictureInPictureSessionPtr a, const gfx::Size& b) {
-            session_ptr = std::move(a);
+          [&](mojo::PendingRemote<blink::mojom::PictureInPictureSession> remote,
+              const gfx::Size& b) {
+            if (remote.is_valid())
+              session_remote.Bind(std::move(remote));
             window_size = b;
           }));
 
   EXPECT_TRUE(service().active_session_for_testing());
-  EXPECT_TRUE(session_ptr);
+  EXPECT_TRUE(session_remote);
   EXPECT_EQ(gfx::Size(42, 42), window_size);
 
   // Picture-in-Picture media player id should not be reset when the media is
@@ -182,8 +187,8 @@
 
 TEST_F(PictureInPictureServiceImplTest, EnterPictureInPicture_NotSupported) {
   const int kPlayerVideoOnlyId = 30;
-
-  blink::mojom::PictureInPictureSessionObserverPtr observer_ptr;
+  mojo::PendingRemote<blink::mojom::PictureInPictureSessionObserver>
+      observer_remote;
   EXPECT_FALSE(service().active_session_for_testing());
 
   viz::SurfaceId surface_id =
@@ -195,21 +200,26 @@
               EnterPictureInPicture(contents(), surface_id, gfx::Size(42, 42)))
       .WillRepeatedly(testing::Return(PictureInPictureResult::kNotSupported));
 
-  blink::mojom::PictureInPictureSessionPtr session_ptr;
+  mojo::Remote<blink::mojom::PictureInPictureSession> session_remote;
   gfx::Size window_size;
 
   service().StartSession(
       kPlayerVideoOnlyId, surface_id, gfx::Size(42, 42),
       true /* show_play_pause_button */, true /* show_mute_button */,
-      std::move(observer_ptr),
+      std::move(observer_remote),
       base::BindLambdaForTesting(
-          [&](blink::mojom::PictureInPictureSessionPtr a, const gfx::Size& b) {
-            session_ptr = std::move(a);
+          [&](mojo::PendingRemote<blink::mojom::PictureInPictureSession> remote,
+              const gfx::Size& b) {
+            if (remote.is_valid())
+              session_remote.Bind(std::move(remote));
             window_size = b;
           }));
 
   EXPECT_FALSE(service().active_session_for_testing());
-  EXPECT_FALSE(session_ptr);
+  // The |session_remote| won't be bound because the |pending_remote| received
+  // in the StartSessionCallback will be invalid due to PictureInPictureSession
+  // not ever being created (meaning the the receiver won't be bound either).
+  EXPECT_FALSE(session_remote);
   EXPECT_EQ(gfx::Size(), window_size);
 }
 
diff --git a/content/browser/picture_in_picture/picture_in_picture_session.cc b/content/browser/picture_in_picture/picture_in_picture_session.cc
index ea1e401..99cba809 100644
--- a/content/browser/picture_in_picture/picture_in_picture_session.cc
+++ b/content/browser/picture_in_picture/picture_in_picture_session.cc
@@ -4,6 +4,8 @@
 
 #include "content/browser/picture_in_picture/picture_in_picture_session.h"
 
+#include <utility>
+
 #include "content/browser/picture_in_picture/picture_in_picture_service_impl.h"
 #include "content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h"
 #include "content/browser/web_contents/web_contents_impl.h"
@@ -17,14 +19,14 @@
     const gfx::Size& natural_size,
     bool show_play_pause_button,
     bool show_mute_button,
-    mojo::InterfaceRequest<blink::mojom::PictureInPictureSession> request,
-    blink::mojom::PictureInPictureSessionObserverPtr observer,
+    mojo::PendingReceiver<blink::mojom::PictureInPictureSession> receiver,
+    mojo::PendingRemote<blink::mojom::PictureInPictureSessionObserver> observer,
     gfx::Size* window_size)
     : service_(service),
-      binding_(this, std::move(request)),
+      receiver_(this, std::move(receiver)),
       player_id_(player_id),
       observer_(std::move(observer)) {
-  binding_.set_connection_error_handler(base::BindOnce(
+  receiver_.set_disconnect_handler(base::BindOnce(
       &PictureInPictureSession::OnConnectionError, base::Unretained(this)));
 
   GetController().SetActiveSession(this);
diff --git a/content/browser/picture_in_picture/picture_in_picture_session.h b/content/browser/picture_in_picture/picture_in_picture_session.h
index 6cdeb36..fe080c9 100644
--- a/content/browser/picture_in_picture/picture_in_picture_session.h
+++ b/content/browser/picture_in_picture/picture_in_picture_session.h
@@ -6,7 +6,10 @@
 #define CONTENT_BROWSER_PICTURE_IN_PICTURE_PICTURE_IN_PICTURE_SESSION_H_
 
 #include "content/public/browser/media_player_id.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom.h"
 
 namespace content {
@@ -31,8 +34,9 @@
       const gfx::Size& natural_size,
       bool show_play_pause_button,
       bool show_mute_button,
-      mojo::InterfaceRequest<blink::mojom::PictureInPictureSession> request,
-      blink::mojom::PictureInPictureSessionObserverPtr observer,
+      mojo::PendingReceiver<blink::mojom::PictureInPictureSession> receiver,
+      mojo::PendingRemote<blink::mojom::PictureInPictureSessionObserver>
+          observer,
       gfx::Size* window_size);
   ~PictureInPictureSession() override;
 
@@ -61,7 +65,7 @@
   // change of active session and deletes self.
   void StopInternal(StopCallback callback);
 
-  // Called when the |binding_| hits a connection error.
+  // Called when the |receiver_| hits a connection error.
   void OnConnectionError();
 
   // Returns the WebContentsImpl associated with this Picture-in-Picture
@@ -75,7 +79,7 @@
   // Owns |this|.
   PictureInPictureServiceImpl* service_;
 
-  mojo::Binding<blink::mojom::PictureInPictureSession> binding_;
+  mojo::Receiver<blink::mojom::PictureInPictureSession> receiver_;
 
   base::Optional<MediaPlayerId> player_id_;
 
@@ -84,7 +88,7 @@
   // the dtor will check that it's stopping.
   bool is_stopping_ = false;
 
-  blink::mojom::PictureInPictureSessionObserverPtr observer_ = nullptr;
+  mojo::Remote<blink::mojom::PictureInPictureSessionObserver> observer_;
 };
 
 }  // namespace content
diff --git a/content/browser/portal/portal_browsertest.cc b/content/browser/portal/portal_browsertest.cc
index ba0b6d69..38a7ae8 100644
--- a/content/browser/portal/portal_browsertest.cc
+++ b/content/browser/portal/portal_browsertest.cc
@@ -200,8 +200,10 @@
         PortalInterceptorForTesting::Create(render_frame_host_impl_, portal);
     portal_ = portal_interceptor->GetPortal();
     RenderFrameProxyHost* proxy_host = portal_->CreateProxyAndAttachPortal();
-    std::move(callback).Run(proxy_host->GetRoutingID(),
-                            portal->GetDevToolsFrameToken());
+    std::move(callback).Run(
+        proxy_host->GetRoutingID(),
+        proxy_host->frame_tree_node()->current_replication_state(),
+        portal->GetDevToolsFrameToken());
 
     if (run_loop_)
       run_loop_->Quit();
diff --git a/content/browser/renderer_host/input/composited_scrolling_browsertest.cc b/content/browser/renderer_host/input/composited_scrolling_browsertest.cc
index 8a5c0bd..d146cd3f 100644
--- a/content/browser/renderer_host/input/composited_scrolling_browsertest.cc
+++ b/content/browser/renderer_host/input/composited_scrolling_browsertest.cc
@@ -104,14 +104,21 @@
     return value;
   }
 
-  int GetScrollTop() {
-    return ExecuteScriptAndExtractInt(
+  double ExecuteScriptAndExtractDouble(const std::string& script) {
+    double value = 0;
+    EXPECT_TRUE(content::ExecuteScriptAndExtractDouble(
+        shell(), "domAutomationController.send(" + script + ")", &value));
+    return value;
+  }
+
+  double GetScrollTop() {
+    return ExecuteScriptAndExtractDouble(
         "document.getElementById(\"scroller\").scrollTop");
   }
 
   // Generate touch events for a synthetic scroll from |point| for |distance|.
   // Returns the distance scrolled.
-  int DoTouchScroll(const gfx::Point& point, const gfx::Vector2d& distance) {
+  double DoTouchScroll(const gfx::Point& point, const gfx::Vector2d& distance) {
     EXPECT_EQ(0, GetScrollTop());
 
     int scroll_height = ExecuteScriptAndExtractInt(
@@ -159,10 +166,10 @@
 IN_PROC_BROWSER_TEST_F(CompositedScrollingBrowserTest,
                        MAYBE_Scroll3DTransformedScroller) {
   LoadURL();
-  int scroll_distance =
+  double scroll_distance =
       DoTouchScroll(gfx::Point(50, 150), gfx::Vector2d(0, 100));
   // The scroll distance is increased due to the rotation of the scroller.
-  EXPECT_EQ(std::floor(100 / std::cos(gfx::DegToRad(30.f))), scroll_distance);
+  EXPECT_NEAR(100 / std::cos(gfx::DegToRad(30.f)), scroll_distance, 1.f);
 }
 
 }  // namespace content
diff --git a/content/browser/renderer_host/input/input_router.h b/content/browser/renderer_host/input/input_router.h
index ed482871..ff5c10a 100644
--- a/content/browser/renderer_host/input/input_router.h
+++ b/content/browser/renderer_host/input/input_router.h
@@ -13,6 +13,7 @@
 #include "content/common/widget.mojom.h"
 #include "content/public/browser/native_web_keyboard_event.h"
 #include "content/public/common/input_event_ack_state.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
 #include "third_party/blink/public/platform/web_input_event.h"
 
 namespace content {
@@ -84,9 +85,12 @@
 
   virtual void SetForceEnableZoom(bool enabled) = 0;
 
-  // Associate this InputRouter with a remote host channel.
-  virtual void BindHost(mojom::WidgetInputHandlerHostRequest request,
-                        bool frame_handler) = 0;
+  // Create and bind a new host channel.
+  virtual mojo::PendingRemote<mojom::WidgetInputHandlerHost> BindNewHost() = 0;
+
+  // Create and bind a new frame based host channel.
+  virtual mojo::PendingRemote<mojom::WidgetInputHandlerHost>
+  BindNewFrameHost() = 0;
 
   // Used to stop an active fling if such exists.
   virtual void StopFling() = 0;
diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc
index b0b6cde..bdf3bb96 100644
--- a/content/browser/renderer_host/input/input_router_impl.cc
+++ b/content/browser/renderer_host/input/input_router_impl.cc
@@ -91,8 +91,6 @@
       device_scale_factor_(1.f),
       compositor_touch_action_enabled_(
           base::FeatureList::IsEnabled(features::kCompositorTouchAction)),
-      host_binding_(this),
-      frame_host_binding_(this),
       weak_ptr_factory_(this) {
   weak_this_ = weak_ptr_factory_.GetWeakPtr();
 
@@ -245,15 +243,16 @@
   return touch_action_filter_.active_touch_action();
 }
 
-void InputRouterImpl::BindHost(mojom::WidgetInputHandlerHostRequest request,
-                               bool frame_handler) {
-  if (frame_handler) {
-    frame_host_binding_.Close();
-    frame_host_binding_.Bind(std::move(request));
-  } else {
-    host_binding_.Close();
-    host_binding_.Bind(std::move(request));
-  }
+mojo::PendingRemote<mojom::WidgetInputHandlerHost>
+InputRouterImpl::BindNewHost() {
+  host_receiver_.reset();
+  return host_receiver_.BindNewPipeAndPassRemote();
+}
+
+mojo::PendingRemote<mojom::WidgetInputHandlerHost>
+InputRouterImpl::BindNewFrameHost() {
+  frame_host_receiver_.reset();
+  return frame_host_receiver_.BindNewPipeAndPassRemote();
 }
 
 void InputRouterImpl::StopFling() {
diff --git a/content/browser/renderer_host/input/input_router_impl.h b/content/browser/renderer_host/input/input_router_impl.h
index b4b8f4da..9d04f90 100644
--- a/content/browser/renderer_host/input/input_router_impl.h
+++ b/content/browser/renderer_host/input/input_router_impl.h
@@ -29,7 +29,8 @@
 #include "content/common/widget.mojom.h"
 #include "content/public/browser/native_web_keyboard_event.h"
 #include "content/public/common/input_event_ack_source.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 
 namespace ui {
 class LatencyInfo;
@@ -83,8 +84,9 @@
   void SetForceEnableZoom(bool enabled) override;
   base::Optional<cc::TouchAction> AllowedTouchAction() override;
   base::Optional<cc::TouchAction> ActiveTouchAction() override;
-  void BindHost(mojom::WidgetInputHandlerHostRequest request,
-                bool frame_handler) override;
+  mojo::PendingRemote<mojom::WidgetInputHandlerHost> BindNewHost() override;
+  mojo::PendingRemote<mojom::WidgetInputHandlerHost> BindNewFrameHost()
+      override;
   void StopFling() override;
   void OnSetTouchAction(cc::TouchAction touch_action) override;
   void ForceSetTouchActionAuto() override;
@@ -112,9 +114,9 @@
   void WaitForInputProcessed(base::OnceClosure callback) override;
 
   // Exposed so that tests can swap out the implementation and intercept calls.
-  mojo::Binding<mojom::WidgetInputHandlerHost>&
-  frame_host_binding_for_testing() {
-    return frame_host_binding_;
+  mojo::Receiver<mojom::WidgetInputHandlerHost>&
+  frame_host_receiver_for_testing() {
+    return frame_host_receiver_;
   }
 
   void ForceResetTouchActionForTest();
@@ -252,13 +254,13 @@
   // Last touch position relative to screen. Used to compute movementX/Y.
   base::flat_map<int, gfx::Point> global_touch_position_;
 
-  // The host binding associated with the widget input handler from
+  // The host receiver associated with the widget input handler from
   // the widget.
-  mojo::Binding<mojom::WidgetInputHandlerHost> host_binding_;
+  mojo::Receiver<mojom::WidgetInputHandlerHost> host_receiver_{this};
 
-  // The host binding associated with the widget input handler from
+  // The host receiver associated with the widget input handler from
   // the frame.
-  mojo::Binding<mojom::WidgetInputHandlerHost> frame_host_binding_;
+  mojo::Receiver<mojom::WidgetInputHandlerHost> frame_host_receiver_{this};
 
   base::WeakPtr<InputRouterImpl> weak_this_;
   base::WeakPtrFactory<InputRouterImpl> weak_ptr_factory_;
diff --git a/content/browser/renderer_host/input/mock_input_router.cc b/content/browser/renderer_host/input/mock_input_router.cc
index d2890cbe..096d1a6 100644
--- a/content/browser/renderer_host/input/mock_input_router.cc
+++ b/content/browser/renderer_host/input/mock_input_router.cc
@@ -45,6 +45,16 @@
   return cc::kTouchActionAuto;
 }
 
+mojo::PendingRemote<mojom::WidgetInputHandlerHost>
+MockInputRouter::BindNewHost() {
+  return mojo::NullRemote();
+}
+
+mojo::PendingRemote<mojom::WidgetInputHandlerHost>
+MockInputRouter::BindNewFrameHost() {
+  return mojo::NullRemote();
+}
+
 void MockInputRouter::OnHasTouchEventHandlers(bool has_handlers) {
   has_handlers_ = has_handlers;
 }
diff --git a/content/browser/renderer_host/input/mock_input_router.h b/content/browser/renderer_host/input/mock_input_router.h
index 9bc5dab..a2a5276 100644
--- a/content/browser/renderer_host/input/mock_input_router.h
+++ b/content/browser/renderer_host/input/mock_input_router.h
@@ -44,8 +44,9 @@
   base::Optional<cc::TouchAction> AllowedTouchAction() override;
   base::Optional<cc::TouchAction> ActiveTouchAction() override;
   void SetForceEnableZoom(bool enabled) override {}
-  void BindHost(mojom::WidgetInputHandlerHostRequest request,
-                bool frame_handler) override {}
+  mojo::PendingRemote<mojom::WidgetInputHandlerHost> BindNewHost() override;
+  mojo::PendingRemote<mojom::WidgetInputHandlerHost> BindNewFrameHost()
+      override;
   void StopFling() override {}
   void OnSetTouchAction(cc::TouchAction touch_action) override {}
   void ForceSetTouchActionAuto() override {}
diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc b/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc
index ec4452bc..1e2ebb1 100644
--- a/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc
+++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc
@@ -143,9 +143,7 @@
       timestamp_original = timestamp_now;
 
     latency->AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
-        timestamp_original,
-        1);
+        ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, timestamp_original);
   }
 
   latency->AddLatencyNumberWithTraceName(
@@ -165,10 +163,10 @@
           has_seen_first_gesture_scroll_update_
               ? ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT
               : ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT,
-          original_event_timestamp, 1);
+          original_event_timestamp);
       latency->AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT,
-          original_event_timestamp, 1);
+          original_event_timestamp);
     }
 
     has_seen_first_gesture_scroll_update_ = true;
diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
index 07a5b71..5f4d05e 100644
--- a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
+++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
@@ -37,24 +37,24 @@
     ui::LatencyInfo* latency,
     base::TimeTicks time_stamp) {
   latency->AddLatencyNumberWithTimestamp(ui::INPUT_EVENT_LATENCY_UI_COMPONENT,
-                                         time_stamp, 1);
+                                         time_stamp);
   latency->AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, time_stamp, 1);
+      ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, time_stamp);
   latency->AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, time_stamp, 1);
+      ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, time_stamp);
   latency->AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT, time_stamp, 1);
+      ui::INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT, time_stamp);
   latency->AddLatencyNumberWithTimestamp(
-      ui::DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, time_stamp, 1);
+      ui::DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, time_stamp);
 }
 
 void AddFakeComponents(const RenderWidgetHostLatencyTracker& tracker,
                        ui::LatencyInfo* latency) {
   base::TimeTicks now = base::TimeTicks::Now();
   latency->AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, now, 1);
+      ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, now);
   latency->AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, now, 1);
+      ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, now);
   AddFakeComponentsWithTimeStamp(tracker, latency, base::TimeTicks::Now());
 }
 
@@ -63,13 +63,10 @@
                                     base::TimeTicks time_stamp) {
   if (main) {
     latency->AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN_COMPONENT, time_stamp,
-        1);
-
+        ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN_COMPONENT, time_stamp);
   } else {
     latency->AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL_COMPONENT, time_stamp,
-        1);
+        ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL_COMPONENT, time_stamp);
   }
 }
 
@@ -166,30 +163,30 @@
 
   latency_info.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT,
-      now + base::TimeDelta::FromMilliseconds(60), 1);
+      now + base::TimeDelta::FromMilliseconds(60));
 
   latency_info.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL_COMPONENT,
-      now + base::TimeDelta::FromMilliseconds(50), 1);
+      now + base::TimeDelta::FromMilliseconds(50));
 
   latency_info.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT,
-      now + base::TimeDelta::FromMilliseconds(40), 1);
+      now + base::TimeDelta::FromMilliseconds(40));
 
   latency_info.AddLatencyNumberWithTimestamp(
       ui::DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT,
-      now + base::TimeDelta::FromMilliseconds(30), 1);
+      now + base::TimeDelta::FromMilliseconds(30));
 
   latency_info.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
-      now + base::TimeDelta::FromMilliseconds(20), 1);
+      now + base::TimeDelta::FromMilliseconds(20));
 
   latency_info.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT,
-      now + base::TimeDelta::FromMilliseconds(10), 1);
+      now + base::TimeDelta::FromMilliseconds(10));
 
   latency_info.AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, now, 1);
+      ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT, now);
 
   viz_tracker()->OnGpuSwapBuffersCompleted(latency_info);
 
@@ -238,8 +235,7 @@
       wheel.SetTimeStamp(now);
       ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL);
       wheel_latency.AddLatencyNumberWithTimestamp(
-          ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, now,
-          1);
+          ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, now);
       AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now);
       AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now);
       tracker()->OnInputEvent(wheel, &wheel_latency);
@@ -351,7 +347,7 @@
       wheel.SetTimeStamp(now);
       ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL);
       wheel_latency.AddLatencyNumberWithTimestamp(
-          ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, now, 1);
+          ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, now);
       AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now);
       AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now);
       tracker()->OnInputEvent(wheel, &wheel_latency);
@@ -543,10 +539,9 @@
       ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH);
       base::TimeTicks now = base::TimeTicks::Now();
       touch_latency.AddLatencyNumberWithTimestamp(
-          ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, now,
-          1);
+          ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, now);
       touch_latency.AddLatencyNumberWithTimestamp(
-          ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, now, 1);
+          ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, now);
       AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now);
       AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now);
       tracker()->OnInputEvent(touch, &touch_latency);
@@ -660,9 +655,9 @@
       ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH);
       base::TimeTicks now = base::TimeTicks::Now();
       touch_latency.AddLatencyNumberWithTimestamp(
-          ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, now, 1);
+          ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, now);
       touch_latency.AddLatencyNumberWithTimestamp(
-          ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, now, 1);
+          ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, now);
       AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now);
       AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now);
       tracker()->OnInputEvent(touch, &touch_latency);
@@ -761,7 +756,7 @@
       for (bool on_main_thread : on_main) {
         ui::LatencyInfo scrollbar_latency(ui::SourceEventType::SCROLLBAR);
         AddFakeComponentsWithTimeStamp(*tracker(), &scrollbar_latency, now);
-        scrollbar_latency.AddLatencyNumberWithTimestamp(component, now, 1);
+        scrollbar_latency.AddLatencyNumberWithTimestamp(component, now);
         AddRenderingScheduledComponent(&scrollbar_latency, on_main_thread, now);
         tracker()->OnInputEvent(mouse_move, &scrollbar_latency);
         EXPECT_TRUE(scrollbar_latency.FindLatency(
@@ -968,20 +963,17 @@
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[0]),
-          1);
+              base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[0]));
 
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_RENDERER_MAIN_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[1]),
-          1);
+              base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[1]));
 
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[2]),
-          1);
+              base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[2]));
 
       // Call ComputeInputLatencyHistograms directly to avoid OnInputEventAck
       // overwriting components.
@@ -1012,20 +1004,17 @@
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(touchmove_timestamps_ms[0]),
-          1);
+              base::TimeDelta::FromMilliseconds(touchmove_timestamps_ms[0]));
 
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_RENDERER_MAIN_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(touchmove_timestamps_ms[1]),
-          1);
+              base::TimeDelta::FromMilliseconds(touchmove_timestamps_ms[1]));
 
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(touchmove_timestamps_ms[2]),
-          1);
+              base::TimeDelta::FromMilliseconds(touchmove_timestamps_ms[2]));
 
       // Call ComputeInputLatencyHistograms directly to avoid OnInputEventAck
       // overwriting components.
@@ -1053,20 +1042,17 @@
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(touchend_timestamps_ms[0]),
-          1);
+              base::TimeDelta::FromMilliseconds(touchend_timestamps_ms[0]));
 
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_RENDERER_MAIN_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(touchend_timestamps_ms[1]),
-          1);
+              base::TimeDelta::FromMilliseconds(touchend_timestamps_ms[1]));
 
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(touchend_timestamps_ms[2]),
-          1);
+              base::TimeDelta::FromMilliseconds(touchend_timestamps_ms[2]));
 
       // Call ComputeInputLatencyHistograms directly to avoid OnInputEventAck
       // overwriting components.
@@ -1154,20 +1140,17 @@
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(event_timestamps_ms[0]),
-          1);
+              base::TimeDelta::FromMilliseconds(event_timestamps_ms[0]));
 
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_RENDERER_MAIN_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(event_timestamps_ms[1]),
-          1);
+              base::TimeDelta::FromMilliseconds(event_timestamps_ms[1]));
 
       fake_latency.AddLatencyNumberWithTimestamp(
           ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT,
           base::TimeTicks() +
-              base::TimeDelta::FromMilliseconds(event_timestamps_ms[2]),
-          1);
+              base::TimeDelta::FromMilliseconds(event_timestamps_ms[2]));
 
       // Call ComputeInputLatencyHistograms directly to avoid OnInputEventAck
       // overwriting components.
@@ -1206,26 +1189,22 @@
   latency_info.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
       base::TimeTicks() +
-          base::TimeDelta::FromMicroseconds(event_timestamps_microseconds[0]),
-      1);
+          base::TimeDelta::FromMicroseconds(event_timestamps_microseconds[0]));
 
   latency_info.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
       base::TimeTicks() +
-          base::TimeDelta::FromMicroseconds(event_timestamps_microseconds[0]),
-      1);
+          base::TimeDelta::FromMicroseconds(event_timestamps_microseconds[0]));
 
   latency_info.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT,
       base::TimeTicks() +
-          base::TimeDelta::FromMicroseconds(event_timestamps_microseconds[1]),
-      1);
+          base::TimeDelta::FromMicroseconds(event_timestamps_microseconds[1]));
 
   latency_info.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_LATENCY_FRAME_SWAP_COMPONENT,
       base::TimeTicks() +
-          base::TimeDelta::FromMicroseconds(event_timestamps_microseconds[1]),
-      1);
+          base::TimeDelta::FromMicroseconds(event_timestamps_microseconds[1]));
 
   viz_tracker()->OnGpuSwapBuffersCompleted(latency_info);
 
@@ -1264,20 +1243,17 @@
     fake_latency.AddLatencyNumberWithTimestamp(
         ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
         base::TimeTicks() +
-            base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[0]),
-        1);
+            base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[0]));
 
     fake_latency.AddLatencyNumberWithTimestamp(
         ui::INPUT_EVENT_LATENCY_RENDERER_MAIN_COMPONENT,
         base::TimeTicks() +
-            base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[1]),
-        1);
+            base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[1]));
 
     fake_latency.AddLatencyNumberWithTimestamp(
         ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT,
         base::TimeTicks() +
-            base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[2]),
-        1);
+            base::TimeDelta::FromMilliseconds(touchstart_timestamps_ms[2]));
 
     // Call ComputeInputLatencyHistograms directly to avoid OnInputEventAck
     // overwriting components.
@@ -1298,10 +1274,10 @@
   latency.set_source_event_type(ui::SourceEventType::TOUCHPAD);
   latency.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
-      base::TimeTicks() + base::TimeDelta::FromMilliseconds(1), 1);
+      base::TimeTicks() + base::TimeDelta::FromMilliseconds(1));
   latency.AddLatencyNumberWithTimestamp(
       ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
-      base::TimeTicks() + base::TimeDelta::FromMilliseconds(3), 1);
+      base::TimeTicks() + base::TimeDelta::FromMilliseconds(3));
   AddFakeComponentsWithTimeStamp(
       *tracker(), &latency,
       base::TimeTicks() + base::TimeDelta::FromMilliseconds(5));
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
index f717ea4..ade78e33 100644
--- a/content/browser/renderer_host/render_view_host_impl.cc
+++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -219,7 +219,6 @@
     bool swapped_out,
     bool has_initialized_audio_host)
     : render_widget_host_(std::move(widget)),
-      frames_ref_count_(0),
       delegate_(delegate),
       instance_(static_cast<SiteInstanceImpl*>(instance)),
       is_swapped_out_(swapped_out),
@@ -297,6 +296,11 @@
 
   delegate_->RenderViewDeleted(this);
   GetProcess()->RemoveObserver(this);
+
+  // This can be called inside the FrameTree destructor. When the delegate is
+  // the InterstialPageImpl, the |frame_tree| is set to null before deleting it.
+  if (FrameTree* frame_tree = GetDelegate()->GetFrameTree())
+    frame_tree->RenderViewHostDeleted(this);
 }
 
 RenderViewHostDelegate* RenderViewHostImpl::GetDelegate() {
diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h
index c093e07..a23d425 100644
--- a/content/browser/renderer_host/render_view_host_impl.h
+++ b/content/browser/renderer_host/render_view_host_impl.h
@@ -18,6 +18,7 @@
 #include "base/gtest_prod_util.h"
 #include "base/logging.h"
 #include "base/macros.h"
+#include "base/memory/ref_counted.h"
 #include "base/process/kill.h"
 #include "build/build_config.h"
 #include "content/browser/renderer_host/input/input_device_change_observer.h"
@@ -61,11 +62,13 @@
 //
 // For context, please see https://crbug.com/467770 and
 // https://www.chromium.org/developers/design-documents/site-isolation.
-class CONTENT_EXPORT RenderViewHostImpl : public RenderViewHost,
-                                          public RenderWidgetHostOwnerDelegate,
-                                          public RenderProcessHostObserver,
-                                          public ui::GpuSwitchingObserver,
-                                          public IPC::Listener {
+class CONTENT_EXPORT RenderViewHostImpl
+    : public RenderViewHost,
+      public RenderWidgetHostOwnerDelegate,
+      public RenderProcessHostObserver,
+      public ui::GpuSwitchingObserver,
+      public IPC::Listener,
+      public base::RefCounted<RenderViewHostImpl> {
  public:
   // Convenience function, just like RenderViewHost::FromID.
   static RenderViewHostImpl* FromID(int process_id, int routing_id);
@@ -80,7 +83,6 @@
                      int32_t main_frame_routing_id,
                      bool swapped_out,
                      bool has_initialized_audio_host);
-  ~RenderViewHostImpl() override;
 
   // RenderViewHost implementation.
   bool Send(IPC::Message* msg) override;
@@ -197,18 +199,6 @@
   // view is not considered active.
   void SetMainFrameRoutingId(int routing_id);
 
-  // Increases the refcounting on this RVH. This is done by the FrameTree on
-  // creation of a RenderFrameHost or RenderFrameProxyHost.
-  void increment_ref_count() { ++frames_ref_count_; }
-
-  // Decreases the refcounting on this RVH. This is done by the FrameTree on
-  // destruction of a RenderFrameHost or RenderFrameProxyHost.
-  void decrement_ref_count() { --frames_ref_count_; }
-
-  // Returns the refcount on this RVH, that is the number of RenderFrameHosts
-  // and RenderFrameProxyHosts currently using it.
-  int ref_count() { return frames_ref_count_; }
-
   // Called during frame eviction to return all SurfaceIds in the frame tree.
   // Marks all views in the frame tree as evicted.
   std::vector<viz::SurfaceId> CollectSurfaceIdsForEviction();
@@ -222,6 +212,9 @@
   // to keep them consistent).
 
  protected:
+  friend class RefCounted<RenderViewHostImpl>;
+  ~RenderViewHostImpl() override;
+
   // RenderWidgetHostOwnerDelegate overrides.
   void RenderWidgetDidInit() override;
   void RenderWidgetDidClose() override;
@@ -305,9 +298,6 @@
   // The RenderWidgetHost.
   std::unique_ptr<RenderWidgetHostImpl> render_widget_host_;
 
-  // The number of RenderFrameHosts which have a reference to this RVH.
-  int frames_ref_count_;
-
   // Our delegate, which wants to know about changes in the RenderView.
   RenderViewHostDelegate* delegate_;
 
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 775cf8b..650b965c 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -323,10 +323,10 @@
     DLOG(WARNING) << "Input request on unbound interface";
   }
   void AttachSynchronousCompositor(
-      mojom::SynchronousCompositorControlHostPtr control_host,
-      mojom::SynchronousCompositorHostAssociatedPtrInfo host,
-      mojom::SynchronousCompositorAssociatedRequest compositor_request)
-      override {
+      mojo::PendingRemote<mojom::SynchronousCompositorControlHost> control_host,
+      mojo::PendingAssociatedRemote<mojom::SynchronousCompositorHost> host,
+      mojo::PendingAssociatedReceiver<mojom::SynchronousCompositor>
+          compositor_request) override {
     NOTREACHED() << "Input request on unbound interface";
   }
 };
@@ -3017,8 +3017,8 @@
 void RenderWidgetHostImpl::SetupInputRouter() {
   in_flight_event_count_ = 0;
   StopInputEventAckTimeout();
-  associated_widget_input_handler_ = nullptr;
-  widget_input_handler_ = nullptr;
+  associated_widget_input_handler_.reset();
+  widget_input_handler_.reset();
 
   input_router_ = std::make_unique<InputRouterImpl>(
       this, this, fling_scheduler_.get(), GetInputRouterConfigForPlatform());
@@ -3036,11 +3036,13 @@
   input_router_->SetForceEnableZoom(enabled);
 }
 
-void RenderWidgetHostImpl::SetWidgetInputHandler(
-    mojom::WidgetInputHandlerAssociatedPtr widget_input_handler,
-    mojom::WidgetInputHandlerHostRequest host_request) {
-  associated_widget_input_handler_ = std::move(widget_input_handler);
-  input_router_->BindHost(std::move(host_request), true);
+void RenderWidgetHostImpl::SetFrameInputHandler(
+    mojom::FrameInputHandler* frame_input_handler) {
+  if (!frame_input_handler)
+    return;
+  frame_input_handler->GetWidgetInputHandler(
+      associated_widget_input_handler_.BindNewEndpointAndPassReceiver(),
+      input_router_->BindNewFrameHost());
 }
 
 void RenderWidgetHostImpl::SetInputTargetClient(
@@ -3051,15 +3053,12 @@
 void RenderWidgetHostImpl::SetWidget(mojom::WidgetPtr widget) {
   if (widget) {
     // If we have a bound handler ensure that we destroy the old input router.
-    if (widget_input_handler_.get())
+    if (widget_input_handler_.is_bound())
       SetupInputRouter();
 
-    mojom::WidgetInputHandlerHostPtr host;
-    mojom::WidgetInputHandlerHostRequest host_request =
-        mojo::MakeRequest(&host);
-    widget->SetupWidgetInputHandler(mojo::MakeRequest(&widget_input_handler_),
-                                    std::move(host));
-    input_router_->BindHost(std::move(host_request), false);
+    widget->SetupWidgetInputHandler(
+        widget_input_handler_.BindNewPipeAndPassReceiver(),
+        input_router_->BindNewHost());
   }
 }
 
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
index ca5df334..93a1e1b 100644
--- a/content/browser/renderer_host/render_widget_host_impl.h
+++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -56,7 +56,9 @@
 #include "content/public/common/page_zoom.h"
 #include "content/public/common/url_constants.h"
 #include "ipc/ipc_listener.h"
+#include "mojo/public/cpp/bindings/associated_remote.h"
 #include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "services/viz/public/interfaces/compositing/compositor_frame_sink.mojom.h"
 #include "services/viz/public/interfaces/hit_test/input_target_client.mojom.h"
 #include "third_party/blink/public/common/manifest/web_display_mode.h"
@@ -660,13 +662,8 @@
   // there are any queued messages belonging to it, they will be processed.
   void DidProcessFrame(uint32_t frame_token);
 
-  // An associated WidgetInputHandler should be set if the RWHI is associated
-  // with a RenderFrameHost. Using an associated channel will allow the
-  // interface calls processed on the FrameInputHandler to be processed in order
-  // with the interface calls processed on the WidgetInputHandler.
-  void SetWidgetInputHandler(
-      mojom::WidgetInputHandlerAssociatedPtr widget_input_handler,
-      mojom::WidgetInputHandlerHostRequest host_request);
+  // Indicate the frame input handler is now available.
+  void SetFrameInputHandler(mojom::FrameInputHandler*);
   void SetWidget(mojom::WidgetPtr widget);
 
   viz::mojom::InputTargetClient* input_target_client() {
@@ -1172,8 +1169,9 @@
   // at the frame input level; see FrameInputHandler. Note that when the
   // RWHI wraps a WebPagePopup widget it will only have a
   // a |widget_input_handler_|.
-  mojom::WidgetInputHandlerAssociatedPtr associated_widget_input_handler_;
-  mojom::WidgetInputHandlerPtr widget_input_handler_;
+  mojo::AssociatedRemote<mojom::WidgetInputHandler>
+      associated_widget_input_handler_;
+  mojo::Remote<mojom::WidgetInputHandler> widget_input_handler_;
   viz::mojom::InputTargetClientPtr input_target_client_;
 
   base::Optional<uint16_t> screen_orientation_angle_for_testing_;
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.h b/content/browser/renderer_host/render_widget_host_input_event_router.h
index 576418e..27ab31c 100644
--- a/content/browser/renderer_host/render_widget_host_input_event_router.h
+++ b/content/browser/renderer_host/render_widget_host_input_event_router.h
@@ -288,15 +288,6 @@
       const ui::LatencyInfo& latency,
       const base::Optional<gfx::PointF>& target_location);
 
-  // Transforms |point| from |root_view| coord space to |target| coord space.
-  // Result is stored in |transformed_point|. Returns true if the transform
-  // is successful, false otherwise.
-  bool TransformPointToTargetCoordSpace(RenderWidgetHostViewBase* root_view,
-                                        RenderWidgetHostViewBase* target,
-                                        const gfx::PointF& point,
-                                        gfx::PointF* transformed_point,
-                                        viz::EventSource source) const;
-
   // TODO(828422): Remove once this issue no longer occurs.
   void ReportBubblingScrollToSameView(const blink::WebGestureEvent& event,
                                       const RenderWidgetHostViewBase* view);
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index b1a4cbc..5e5be87 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -1415,8 +1415,10 @@
   RenderFrameHostImpl* rfh = GetFocusedFrame();
   if (!rfh)
     return false;
-  rfh->GetFrameInputHandler()->SetEditableSelectionOffsets(range.start(),
-                                                           range.end());
+  auto* input_handler = rfh->GetFrameInputHandler();
+  if (!input_handler)
+    return false;
+  input_handler->SetEditableSelectionOffsets(range.start(), range.end());
   return true;
 }
 
@@ -1473,8 +1475,12 @@
 void RenderWidgetHostViewAura::ExtendSelectionAndDelete(
     size_t before, size_t after) {
   RenderFrameHostImpl* rfh = GetFocusedFrame();
-  if (rfh)
-    rfh->GetFrameInputHandler()->ExtendSelectionAndDelete(before, after);
+  if (!rfh)
+    return;
+  auto* input_handler = rfh->GetFrameInputHandler();
+  if (!input_handler)
+    return;
+  input_handler->ExtendSelectionAndDelete(before, after);
 }
 
 void RenderWidgetHostViewAura::EnsureCaretNotInRect(
@@ -1524,11 +1530,14 @@
     const gfx::Range& range,
     const std::vector<ui::ImeTextSpan>& ui_ime_text_spans) {
   RenderFrameHostImpl* frame = GetFocusedFrame();
-  if (frame) {
-    frame->GetFrameInputHandler()->SetCompositionFromExistingText(
-        range.start(), range.end(), ui_ime_text_spans);
-    has_composition_text_ = true;
-  }
+  if (!frame)
+    return false;
+  auto* input_handler = frame->GetFrameInputHandler();
+  if (!input_handler)
+    return false;
+  input_handler->SetCompositionFromExistingText(range.start(), range.end(),
+                                                ui_ime_text_spans);
+  has_composition_text_ = true;
   return true;
 }
 
@@ -2530,9 +2539,13 @@
 void RenderWidgetHostViewAura::ScrollFocusedEditableNodeIntoRect(
     const gfx::Rect& node_rect) {
   RenderFrameHostImpl* rfh = GetFocusedFrame();
-  if (rfh) {
-    rfh->GetFrameInputHandler()->ScrollFocusedEditableNodeIntoRect(node_rect);
-  }
+  if (!rfh)
+    return;
+
+  auto* input_handler = rfh->GetFrameInputHandler();
+  if (!input_handler)
+    return;
+  input_handler->ScrollFocusedEditableNodeIntoRect(node_rect);
 }
 
 void RenderWidgetHostViewAura::OnSynchronizedDisplayPropertiesChanged() {
diff --git a/content/browser/service_worker/service_worker_loader_helpers.cc b/content/browser/service_worker/service_worker_loader_helpers.cc
new file mode 100644
index 0000000..bbe4ad4b5
--- /dev/null
+++ b/content/browser/service_worker/service_worker_loader_helpers.cc
@@ -0,0 +1,76 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/service_worker/service_worker_loader_helpers.h"
+
+#include "base/command_line.h"
+#include "base/strings/stringprintf.h"
+#include "components/network_session_configurator/common/network_switches.h"
+#include "content/common/service_worker/service_worker_types.h"
+#include "third_party/blink/public/common/mime_util/mime_util.h"
+
+namespace content {
+
+namespace service_worker_loader_helpers {
+
+std::unique_ptr<net::HttpResponseInfo> CreateHttpResponseInfoAndCheckHeaders(
+    const network::ResourceResponseHead& response_head,
+    network::URLLoaderCompletionStatus* out_completion_status,
+    std::string* out_error_message) {
+  net::Error error_code = net::OK;
+  std::string error_message;
+  auto response_info = std::make_unique<net::HttpResponseInfo>();
+  response_info->headers = response_head.headers;
+  if (response_head.ssl_info.has_value())
+    response_info->ssl_info = *response_head.ssl_info;
+  response_info->was_fetched_via_spdy = response_head.was_fetched_via_spdy;
+  response_info->was_alpn_negotiated = response_head.was_alpn_negotiated;
+  response_info->alpn_negotiated_protocol =
+      response_head.alpn_negotiated_protocol;
+  response_info->connection_info = response_head.connection_info;
+  response_info->remote_endpoint = response_head.remote_endpoint;
+  response_info->response_time = response_head.response_time;
+
+  if (response_head.headers->response_code() / 100 != 2) {
+    // Non-2XX HTTP status code is handled as an error.
+    error_code = net::ERR_INVALID_RESPONSE;
+    error_message = base::StringPrintf(kServiceWorkerBadHTTPResponseError,
+                                       response_head.headers->response_code());
+  } else if (net::IsCertStatusError(response_head.cert_status) &&
+             !base::CommandLine::ForCurrentProcess()->HasSwitch(
+                 switches::kIgnoreCertificateErrors)) {
+    error_code = static_cast<net::Error>(
+        net::MapCertStatusToNetError(response_head.cert_status));
+    error_message = kServiceWorkerSSLError;
+  } else if (!blink::IsSupportedJavascriptMimeType(response_head.mime_type)) {
+    error_code = net::ERR_INSECURE_RESPONSE;
+    error_message = response_head.mime_type.empty()
+                        ? kServiceWorkerNoMIMEError
+                        : base::StringPrintf(kServiceWorkerBadMIMEError,
+                                             response_head.mime_type.c_str());
+  }
+  if (out_completion_status)
+    *out_completion_status = network::URLLoaderCompletionStatus(error_code);
+
+  if (out_error_message)
+    *out_error_message = error_message;
+
+  return response_info;
+}
+
+blink::ServiceWorkerStatusCode MapNetErrorToServiceWorkerStatus(
+    net::Error error_code) {
+  switch (error_code) {
+    case net::OK:
+      return blink::ServiceWorkerStatusCode::kOk;
+    case net::ERR_INSECURE_RESPONSE:
+      return blink::ServiceWorkerStatusCode::kErrorSecurity;
+    default:
+      return blink::ServiceWorkerStatusCode::kErrorNetwork;
+  }
+}
+
+}  // namespace service_worker_loader_helpers
+
+}  // namespace content
diff --git a/content/browser/service_worker/service_worker_loader_helpers.h b/content/browser/service_worker/service_worker_loader_helpers.h
new file mode 100644
index 0000000..2f7583ff
--- /dev/null
+++ b/content/browser/service_worker/service_worker_loader_helpers.h
@@ -0,0 +1,31 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_LOADER_HELPERS_H_
+#define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_LOADER_HELPERS_H_
+
+#include <memory>
+#include <string>
+
+#include "services/network/public/cpp/resource_response.h"
+#include "services/network/public/cpp/url_loader_completion_status.h"
+#include "third_party/blink/public/common/service_worker/service_worker_status_code.h"
+
+namespace content {
+
+namespace service_worker_loader_helpers {
+
+std::unique_ptr<net::HttpResponseInfo> CreateHttpResponseInfoAndCheckHeaders(
+    const network::ResourceResponseHead& response_head,
+    network::URLLoaderCompletionStatus* out_completion_status,
+    std::string* out_error_message);
+
+blink::ServiceWorkerStatusCode MapNetErrorToServiceWorkerStatus(
+    net::Error error_code);
+
+}  // namespace service_worker_loader_helpers
+
+}  // namespace content
+
+#endif  // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_LOADER_HELPERS_H_
diff --git a/content/browser/service_worker/service_worker_new_script_loader.cc b/content/browser/service_worker/service_worker_new_script_loader.cc
index 3e9079c..d5783b9 100644
--- a/content/browser/service_worker/service_worker_new_script_loader.cc
+++ b/content/browser/service_worker/service_worker_new_script_loader.cc
@@ -9,11 +9,11 @@
 
 #include "base/bind.h"
 #include "base/numerics/safe_conversions.h"
-#include "components/network_session_configurator/common/network_switches.h"
 #include "content/browser/appcache/appcache_response.h"
 #include "content/browser/service_worker/service_worker_cache_writer.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_disk_cache.h"
+#include "content/browser/service_worker/service_worker_loader_helpers.h"
 #include "content/browser/service_worker/service_worker_storage.h"
 #include "content/browser/service_worker/service_worker_version.h"
 #include "content/browser/url_loader_factory_getter.h"
@@ -23,7 +23,6 @@
 #include "net/base/net_errors.h"
 #include "net/cert/cert_status_flags.h"
 #include "services/network/public/cpp/resource_response.h"
-#include "third_party/blink/public/common/mime_util/mime_util.h"
 #include "third_party/blink/public/common/service_worker/service_worker_utils.h"
 
 namespace content {
@@ -281,67 +280,22 @@
     return;
   }
 
-  // We don't have complete info here, but fill in what we have now.
-  // At least we need headers and SSL info.
-  auto response_info = std::make_unique<net::HttpResponseInfo>();
-  response_info->headers = response_head.headers;
-  if (response_head.ssl_info.has_value())
-    response_info->ssl_info = *response_head.ssl_info;
-  response_info->was_fetched_via_spdy = response_head.was_fetched_via_spdy;
-  response_info->was_alpn_negotiated = response_head.was_alpn_negotiated;
-  response_info->alpn_negotiated_protocol =
-      response_head.alpn_negotiated_protocol;
-  response_info->connection_info = response_head.connection_info;
-  response_info->remote_endpoint = response_head.remote_endpoint;
-  response_info->response_time = response_head.response_time;
-
-  // The following sequence is equivalent to
-  // ServiceWorkerWriteToCacheJob::OnResponseStarted.
-  // TODO(falken): Make these steps be in the same order as the spec. Right now
-  // there are slight differences, like we only bump last update check time on
-  // OK status.
-
-  if (response_head.headers->response_code() / 100 != 2) {
-    // Non-2XX HTTP status code is handled as an error.
-    std::string error_message =
-        base::StringPrintf(kServiceWorkerBadHTTPResponseError,
-                           response_head.headers->response_code());
-    CommitCompleted(
-        network::URLLoaderCompletionStatus(net::ERR_INVALID_RESPONSE),
-        error_message);
-    return;
-  }
-
-  // Check the certificate error.
-  if (net::IsCertStatusError(response_head.cert_status) &&
-      !base::CommandLine::ForCurrentProcess()->HasSwitch(
-          switches::kIgnoreCertificateErrors)) {
-    CommitCompleted(
-        network::URLLoaderCompletionStatus(
-            net::MapCertStatusToNetError(response_head.cert_status)),
-        kServiceWorkerSSLError);
+  network::URLLoaderCompletionStatus completion_status;
+  std::string error_message;
+  std::unique_ptr<net::HttpResponseInfo> response_info =
+      service_worker_loader_helpers::CreateHttpResponseInfoAndCheckHeaders(
+          response_head, &completion_status, &error_message);
+  if (completion_status.error_code != net::OK) {
+    CommitCompleted(completion_status, error_message);
     return;
   }
 
   if (resource_type_ == ResourceType::kServiceWorker) {
-    if (!blink::IsSupportedJavascriptMimeType(response_head.mime_type)) {
-      std::string error_message =
-          response_head.mime_type.empty()
-              ? kServiceWorkerNoMIMEError
-              : base::StringPrintf(kServiceWorkerBadMIMEError,
-                                   response_head.mime_type.c_str());
-      CommitCompleted(
-          network::URLLoaderCompletionStatus(net::ERR_INSECURE_RESPONSE),
-          error_message);
-      return;
-    }
-
     // Check the path restriction defined in the spec:
     // https://w3c.github.io/ServiceWorker/#service-worker-script-response
     std::string service_worker_allowed;
     bool has_header = response_head.headers->EnumerateHeader(
         nullptr, kServiceWorkerAllowed, &service_worker_allowed);
-    std::string error_message;
     if (!ServiceWorkerUtils::IsPathRestrictionSatisfied(
             version_->scope(), request_url_,
             has_header ? &service_worker_allowed : nullptr, &error_message)) {
diff --git a/content/browser/service_worker/service_worker_single_script_update_checker.cc b/content/browser/service_worker/service_worker_single_script_update_checker.cc
index 89bbc04..0844809 100644
--- a/content/browser/service_worker/service_worker_single_script_update_checker.cc
+++ b/content/browser/service_worker/service_worker_single_script_update_checker.cc
@@ -7,10 +7,9 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/strings/stringprintf.h"
-#include "components/network_session_configurator/common/network_switches.h"
 #include "content/browser/appcache/appcache_response.h"
 #include "content/browser/service_worker/service_worker_cache_writer.h"
+#include "content/browser/service_worker/service_worker_loader_helpers.h"
 #include "content/common/service_worker/service_worker_utils.h"
 #include "content/public/common/resource_type.h"
 #include "mojo/public/cpp/system/simple_watcher.h"
@@ -18,7 +17,6 @@
 #include "net/base/load_flags.h"
 #include "services/network/public/cpp/net_adapters.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
-#include "third_party/blink/public/common/mime_util/mime_util.h"
 
 // TODO(momohatt): Use ServiceWorkerMetrics for UMA.
 
@@ -149,47 +147,16 @@
   DCHECK_EQ(network_loader_state_,
             ServiceWorkerNewScriptLoader::NetworkLoaderState::kLoadingHeader);
 
-  // We don't have complete info here, but fill in what we have now.
-  // At least we need headers and SSL info.
-  auto response_info = std::make_unique<net::HttpResponseInfo>();
-  response_info->headers = response_head.headers;
-  if (response_head.ssl_info.has_value())
-    response_info->ssl_info = *response_head.ssl_info;
-  response_info->was_fetched_via_spdy = response_head.was_fetched_via_spdy;
-  response_info->was_alpn_negotiated = response_head.was_alpn_negotiated;
-  response_info->alpn_negotiated_protocol =
-      response_head.alpn_negotiated_protocol;
-  response_info->connection_info = response_head.connection_info;
-  response_info->remote_endpoint = response_head.remote_endpoint;
-
-  network_loader_state_ =
-      ServiceWorkerNewScriptLoader::NetworkLoaderState::kWaitingForBody;
-  network_accessed_ = response_head.network_accessed;
-
-  if (response_head.headers->response_code() / 100 != 2) {
-    std::string error_message =
-        base::StringPrintf(kServiceWorkerBadHTTPResponseError,
-                           response_head.headers->response_code());
-    Fail(blink::ServiceWorkerStatusCode::kErrorNetwork, error_message);
-    return;
-  }
-
-  // Check the certificate error.
-  if (net::IsCertStatusError(response_head.cert_status) &&
-      !base::CommandLine::ForCurrentProcess()->HasSwitch(
-          switches::kIgnoreCertificateErrors)) {
-    Fail(blink::ServiceWorkerStatusCode::kErrorSecurity,
-         kServiceWorkerSSLError);
-    return;
-  }
-
-  if (!blink::IsSupportedJavascriptMimeType(response_head.mime_type)) {
-    std::string error_message =
-        response_head.mime_type.empty()
-            ? kServiceWorkerNoMIMEError
-            : base::StringPrintf(kServiceWorkerBadMIMEError,
-                                 response_head.mime_type.c_str());
-    Fail(blink::ServiceWorkerStatusCode::kErrorSecurity, error_message);
+  network::URLLoaderCompletionStatus completion_status;
+  std::string error_message;
+  std::unique_ptr<net::HttpResponseInfo> response_info =
+      service_worker_loader_helpers::CreateHttpResponseInfoAndCheckHeaders(
+          response_head, &completion_status, &error_message);
+  if (completion_status.error_code != net::OK) {
+    blink::ServiceWorkerStatusCode status_code =
+        service_worker_loader_helpers::MapNetErrorToServiceWorkerStatus(
+            static_cast<net::Error>(completion_status.error_code));
+    Fail(status_code, error_message);
     return;
   }
 
@@ -200,7 +167,6 @@
     std::string service_worker_allowed;
     bool has_header = response_head.headers->EnumerateHeader(
         nullptr, kServiceWorkerAllowed, &service_worker_allowed);
-    std::string error_message;
     if (!ServiceWorkerUtils::IsPathRestrictionSatisfied(
             scope_, script_url_, has_header ? &service_worker_allowed : nullptr,
             &error_message)) {
@@ -209,6 +175,10 @@
     }
   }
 
+  network_loader_state_ =
+      ServiceWorkerNewScriptLoader::NetworkLoaderState::kWaitingForBody;
+  network_accessed_ = response_head.network_accessed;
+
   WriteHeaders(
       base::MakeRefCounted<HttpResponseInfoIOBuffer>(std::move(response_info)));
 }
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index 41fdfe17..ba07e77 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -7437,8 +7437,11 @@
 
   // Ensure the RenderViewHost for the SiteInstance of the child is considered
   // in swapped out state.
-  RenderViewHostImpl* rvh = contents->GetFrameTree()->GetRenderViewHost(
-      root->child_at(0)->current_frame_host()->GetSiteInstance());
+  RenderViewHostImpl* rvh =
+      contents->GetFrameTree()
+          ->GetRenderViewHost(
+              root->child_at(0)->current_frame_host()->GetSiteInstance())
+          .get();
   EXPECT_TRUE(rvh->is_swapped_out_);
 
   // Have the child frame navigate its parent to its SiteInstance.
@@ -8225,7 +8228,7 @@
   // The RenderViewHost for b.com in the main tab should not be active.
   SiteInstance* b_instance = popup_shell->web_contents()->GetSiteInstance();
   RenderViewHostImpl* rvh =
-      web_contents()->GetFrameTree()->GetRenderViewHost(b_instance);
+      web_contents()->GetFrameTree()->GetRenderViewHost(b_instance).get();
   EXPECT_FALSE(rvh->is_active());
 
   // Navigate main tab to a b.com URL that will not commit.
@@ -8283,7 +8286,7 @@
   // The RenderViewHost for b.com in the main tab should not be active.
   SiteInstance* b_instance = popup_shell->web_contents()->GetSiteInstance();
   RenderViewHostImpl* rvh =
-      web_contents()->GetFrameTree()->GetRenderViewHost(b_instance);
+      web_contents()->GetFrameTree()->GetRenderViewHost(b_instance).get();
   EXPECT_FALSE(rvh->is_active());
 
   // Navigate main tab to a b.com URL that will not commit.
diff --git a/content/browser/site_per_process_hit_test_browsertest.cc b/content/browser/site_per_process_hit_test_browsertest.cc
index 0836dcd..39756bef5 100644
--- a/content/browser/site_per_process_hit_test_browsertest.cc
+++ b/content/browser/site_per_process_hit_test_browsertest.cc
@@ -592,7 +592,7 @@
       : msg_received_(false),
         capturing_(false),
         host_(host),
-        impl_(binding().SwapImplForTesting(this)) {}
+        impl_(receiver().internal_state()->SwapImplForTesting(this)) {}
 
   bool Capturing() const { return capturing_; }
 
@@ -625,12 +625,12 @@
   friend class base::RefCountedThreadSafe<SetMouseCaptureInterceptor>;
 
   ~SetMouseCaptureInterceptor() override {
-    binding().SwapImplForTesting(impl_);
+    receiver().internal_state()->SwapImplForTesting(impl_);
   }
 
-  mojo::Binding<mojom::WidgetInputHandlerHost>& binding() {
+  mojo::Receiver<mojom::WidgetInputHandlerHost>& receiver() {
     return static_cast<InputRouterImpl*>(host_->input_router())
-        ->frame_host_binding_for_testing();
+        ->frame_host_receiver_for_testing();
   }
 
   std::unique_ptr<base::RunLoop> run_loop_;
diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc
index c657fec..79407ed1 100644
--- a/content/browser/web_contents/web_contents_android.cc
+++ b/content/browser/web_contents/web_contents_android.cc
@@ -455,10 +455,10 @@
 void WebContentsAndroid::ScrollFocusedEditableNodeIntoView(
     JNIEnv* env,
     const JavaParamRef<jobject>& obj) {
-  RenderFrameHostImpl* frame = web_contents_->GetFocusedFrame();
-  if (!frame)
+  auto* input_handler = web_contents_->GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
-  frame->GetFrameInputHandler()->ScrollFocusedEditableNodeIntoRect(gfx::Rect());
+  input_handler->ScrollFocusedEditableNodeIntoRect(gfx::Rect());
 }
 
 void WebContentsAndroid::SelectWordAroundCaretAck(bool did_select,
@@ -472,10 +472,10 @@
 void WebContentsAndroid::SelectWordAroundCaret(
     JNIEnv* env,
     const JavaParamRef<jobject>& obj) {
-  RenderFrameHostImpl* frame = web_contents_->GetFocusedFrame();
-  if (!frame)
+  auto* input_handler = web_contents_->GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
-  frame->GetFrameInputHandler()->SelectWordAroundCaret(
+  input_handler->SelectWordAroundCaret(
       base::BindOnce(&WebContentsAndroid::SelectWordAroundCaretAck,
                      weak_factory_.GetWeakPtr()));
 }
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 2cc8cae9..24ea4bd 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -3315,48 +3315,48 @@
 void WebContentsImpl::ExecuteEditCommand(
     const std::string& command,
     const base::Optional<base::string16>& value) {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->ExecuteEditCommand(command, value);
+  input_handler->ExecuteEditCommand(command, value);
 }
 
 void WebContentsImpl::MoveRangeSelectionExtent(const gfx::Point& extent) {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->MoveRangeSelectionExtent(extent);
+  input_handler->MoveRangeSelectionExtent(extent);
 }
 
 void WebContentsImpl::SelectRange(const gfx::Point& base,
                                   const gfx::Point& extent) {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->SelectRange(base, extent);
+  input_handler->SelectRange(base, extent);
 }
 
 void WebContentsImpl::MoveCaret(const gfx::Point& extent) {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->MoveCaret(extent);
+  input_handler->MoveCaret(extent);
 }
 
 void WebContentsImpl::AdjustSelectionByCharacterOffset(
     int start_adjust,
     int end_adjust,
     bool show_selection_menu) {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
   using blink::mojom::SelectionMenuBehavior;
-  focused_frame->GetFrameInputHandler()->AdjustSelectionByCharacterOffset(
+  input_handler->AdjustSelectionByCharacterOffset(
       start_adjust, end_adjust,
       show_selection_menu ? SelectionMenuBehavior::kShow
                           : SelectionMenuBehavior::kHide);
@@ -3612,114 +3612,115 @@
 }
 
 void WebContentsImpl::Undo() {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->Undo();
+  input_handler->Undo();
   RecordAction(base::UserMetricsAction("Undo"));
 }
 
 void WebContentsImpl::Redo() {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
-  focused_frame->GetFrameInputHandler()->Redo();
+
+  input_handler->Redo();
   RecordAction(base::UserMetricsAction("Redo"));
 }
 
 void WebContentsImpl::Cut() {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->Cut();
+  input_handler->Cut();
   RecordAction(base::UserMetricsAction("Cut"));
 }
 
 void WebContentsImpl::Copy() {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->Copy();
+  input_handler->Copy();
   RecordAction(base::UserMetricsAction("Copy"));
 }
 
 void WebContentsImpl::CopyToFindPboard() {
 #if defined(OS_MACOSX)
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
   // Windows/Linux don't have the concept of a find pasteboard.
-  focused_frame->GetFrameInputHandler()->CopyToFindPboard();
+  input_handler->CopyToFindPboard();
   RecordAction(base::UserMetricsAction("CopyToFindPboard"));
 #endif
 }
 
 void WebContentsImpl::Paste() {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->Paste();
+  input_handler->Paste();
   for (auto& observer : observers_)
     observer.OnPaste();
   RecordAction(base::UserMetricsAction("Paste"));
 }
 
 void WebContentsImpl::PasteAndMatchStyle() {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->PasteAndMatchStyle();
+  input_handler->PasteAndMatchStyle();
   for (auto& observer : observers_)
     observer.OnPaste();
   RecordAction(base::UserMetricsAction("PasteAndMatchStyle"));
 }
 
 void WebContentsImpl::Delete() {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->Delete();
+  input_handler->Delete();
   RecordAction(base::UserMetricsAction("DeleteSelection"));
 }
 
 void WebContentsImpl::SelectAll() {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->SelectAll();
+  input_handler->SelectAll();
   RecordAction(base::UserMetricsAction("SelectAll"));
 }
 
 void WebContentsImpl::CollapseSelection() {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->CollapseSelection();
+  input_handler->CollapseSelection();
 }
 
 void WebContentsImpl::Replace(const base::string16& word) {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->Replace(word);
+  input_handler->Replace(word);
 }
 
 void WebContentsImpl::ReplaceMisspelling(const base::string16& word) {
-  RenderFrameHostImpl* focused_frame = GetFocusedFrame();
-  if (!focused_frame)
+  auto* input_handler = GetFocusedFrameInputHandler();
+  if (!input_handler)
     return;
 
-  focused_frame->GetFrameInputHandler()->ReplaceMisspelling(word);
+  input_handler->ReplaceMisspelling(word);
 }
 
 void WebContentsImpl::NotifyContextMenuClosed(
@@ -7250,4 +7251,11 @@
     NotifyPreferencesChanged();
 }
 
+mojom::FrameInputHandler* WebContentsImpl::GetFocusedFrameInputHandler() {
+  auto* focused_frame = GetFocusedFrame();
+  if (!focused_frame)
+    return nullptr;
+  return focused_frame->GetFrameInputHandler();
+}
+
 }  // namespace content
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index bf85ec4..2fde40c 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -1064,6 +1064,9 @@
     return javascript_dialog_navigation_deferrer_.get();
   }
 
+  // Returns the focused frame's input handler.
+  mojom::FrameInputHandler* GetFocusedFrameInputHandler();
+
  private:
   friend class WebContentsObserver;
   friend class WebContents;  // To implement factory methods.
diff --git a/content/browser/webauth/authenticator_environment_impl.cc b/content/browser/webauth/authenticator_environment_impl.cc
index 308e3be..fb702c2 100644
--- a/content/browser/webauth/authenticator_environment_impl.cc
+++ b/content/browser/webauth/authenticator_environment_impl.cc
@@ -80,12 +80,13 @@
   return nullptr;
 }
 
-void AuthenticatorEnvironmentImpl::AddVirtualAuthenticatorBinding(
+void AuthenticatorEnvironmentImpl::AddVirtualAuthenticatorReceiver(
     FrameTreeNode* node,
-    blink::test::mojom::VirtualAuthenticatorManagerRequest request) {
+    mojo::PendingReceiver<blink::test::mojom::VirtualAuthenticatorManager>
+        receiver) {
   auto* factory = GetVirtualFactoryFor(node);
   DCHECK(factory);
-  factory->AddBinding(std::move(request));
+  factory->AddReceiver(std::move(receiver));
 }
 
 void AuthenticatorEnvironmentImpl::OnDiscoveryDestroyed(
diff --git a/content/browser/webauth/authenticator_environment_impl.h b/content/browser/webauth/authenticator_environment_impl.h
index 8d4194d..f386ee0 100644
--- a/content/browser/webauth/authenticator_environment_impl.h
+++ b/content/browser/webauth/authenticator_environment_impl.h
@@ -13,6 +13,7 @@
 #include "content/browser/frame_host/frame_tree_node.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/authenticator_environment.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "third_party/blink/public/mojom/webauthn/virtual_authenticator.mojom.h"
 
 namespace device {
@@ -55,11 +56,12 @@
   // environment is enabled for it, otherwise returns nullptr.
   VirtualFidoDiscoveryFactory* GetVirtualFactoryFor(FrameTreeNode* node);
 
-  // Binds the request to the virtual authenticator enabled for the |node|. The
+  // Adds the receiver to the virtual authenticator enabled for the |node|. The
   // virtual authenticator must be enabled beforehand.
-  void AddVirtualAuthenticatorBinding(
+  void AddVirtualAuthenticatorReceiver(
       FrameTreeNode* node,
-      blink::test::mojom::VirtualAuthenticatorManagerRequest request);
+      mojo::PendingReceiver<blink::test::mojom::VirtualAuthenticatorManager>
+          receiver);
 
   // Called by VirtualFidoDiscoveries when they are destructed.
   void OnDiscoveryDestroyed(VirtualFidoDiscovery* discovery);
diff --git a/content/browser/webauth/virtual_fido_discovery_factory.cc b/content/browser/webauth/virtual_fido_discovery_factory.cc
index afce3ef..657e5cf 100644
--- a/content/browser/webauth/virtual_fido_discovery_factory.cc
+++ b/content/browser/webauth/virtual_fido_discovery_factory.cc
@@ -74,9 +74,10 @@
   return removed;
 }
 
-void VirtualFidoDiscoveryFactory::AddBinding(
-    blink::test::mojom::VirtualAuthenticatorManagerRequest request) {
-  bindings_.AddBinding(this, std::move(request));
+void VirtualFidoDiscoveryFactory::AddReceiver(
+    mojo::PendingReceiver<blink::test::mojom::VirtualAuthenticatorManager>
+        receiver) {
+  receivers_.Add(this, std::move(receiver));
 }
 
 void VirtualFidoDiscoveryFactory::OnDiscoveryDestroyed(
@@ -90,7 +91,7 @@
                                     ::service_manager::Connector* connector) {
   auto discovery = std::make_unique<VirtualFidoDiscovery>(transport);
 
-  if (bindings_.empty() && authenticators_.empty()) {
+  if (receivers_.empty() && authenticators_.empty()) {
     // If no bindings are active then create a virtual device. This is a
     // stop-gap measure for web-platform tests which assume that they can make
     // webauthn calls until the WebAuthn Testing API is released.
diff --git a/content/browser/webauth/virtual_fido_discovery_factory.h b/content/browser/webauth/virtual_fido_discovery_factory.h
index 44049ed..0bd44d9d 100644
--- a/content/browser/webauth/virtual_fido_discovery_factory.h
+++ b/content/browser/webauth/virtual_fido_discovery_factory.h
@@ -15,7 +15,8 @@
 #include "content/common/content_export.h"
 #include "device/fido/fido_discovery_factory.h"
 #include "device/fido/virtual_fido_device.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver_set.h"
 #include "third_party/blink/public/mojom/webauthn/virtual_authenticator.mojom.h"
 
 namespace device {
@@ -55,8 +56,9 @@
   // authenticator matched the |id|, false otherwise.
   bool RemoveAuthenticator(const std::string& id);
 
-  void AddBinding(
-      blink::test::mojom::VirtualAuthenticatorManagerRequest request);
+  void AddReceiver(
+      mojo::PendingReceiver<blink::test::mojom::VirtualAuthenticatorManager>
+          receiver);
 
   // Notify that a discovery has been destroyed.
   void OnDiscoveryDestroyed(VirtualFidoDiscovery* discovery);
@@ -79,7 +81,7 @@
   void ClearAuthenticators(ClearAuthenticatorsCallback callback) override;
 
  private:
-  mojo::BindingSet<blink::test::mojom::VirtualAuthenticatorManager> bindings_;
+  mojo::ReceiverSet<blink::test::mojom::VirtualAuthenticatorManager> receivers_;
 
   // The key is the unique_id of the corresponding value (the authenticator).
   std::map<std::string, std::unique_ptr<VirtualAuthenticator>> authenticators_;
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
index 877bacd7..cd703e9 100644
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -63,9 +63,6 @@
   if (!base::FeatureList::IsEnabled(features::kWebUsb))
     WebRuntimeFeatures::EnableWebUsb(false);
 
-  WebRuntimeFeatures::EnableBlinkHeapIncrementalMarking(
-      base::FeatureList::IsEnabled(features::kBlinkHeapIncrementalMarking));
-
   if (base::FeatureList::IsEnabled(
           blink::features::kBlockingFocusWithoutUserActivation)) {
     WebRuntimeFeatures::EnableBlockingFocusWithoutUserActivation(true);
@@ -266,9 +263,6 @@
       base::FeatureList::IsEnabled(
           features::kExpensiveBackgroundTimerThrottling));
 
-  if (base::FeatureList::IsEnabled(features::kHeapCompaction))
-    WebRuntimeFeatures::EnableHeapCompaction(true);
-
   WebRuntimeFeatures::EnableRenderingPipelineThrottling(
       base::FeatureList::IsEnabled(features::kRenderingPipelineThrottling));
 
diff --git a/content/common/frame.mojom b/content/common/frame.mojom
index c5078d2..360b9b6 100644
--- a/content/common/frame.mojom
+++ b/content/common/frame.mojom
@@ -6,6 +6,7 @@
 
 import "content/common/document_scoped_interface_bundle.mojom";
 import "content/common/frame_messages.mojom";
+import "content/common/native_types.mojom";
 import "content/common/navigation_client.mojom";
 import "content/common/navigation_params.mojom";
 import "content/public/common/resource_type.mojom";
@@ -367,9 +368,11 @@
 
   // Requests that this frame adopts the portal identified by |portal_token|.
   // Returns |proxy_routing_id|, which is the routing id of the portal's
-  // RenderFrameProxy.
+  // RenderFrameProxy, |replicated_state|, the replicated state associated with
+  // that RFP, and the |devtools_frame_token|.
   [Sync] AdoptPortal(mojo_base.mojom.UnguessableToken portal_token)
       => (int32 proxy_routing_id,
+          FrameReplicationState replicated_state,
           mojo_base.mojom.UnguessableToken devtools_frame_token);
 
   // Creates and returns a KeepAliveHandle.
diff --git a/content/common/input/event_with_latency_info_unittest.cc b/content/common/input/event_with_latency_info_unittest.cc
index 3a1d413..1d5fec2 100644
--- a/content/common/input/event_with_latency_info_unittest.cc
+++ b/content/common/input/event_with_latency_info_unittest.cc
@@ -117,7 +117,7 @@
   MouseEventWithLatencyInfo mouse_0 =
       CreateMouseEvent(WebInputEvent::kMouseMove, 5.0);
   mouse_0.latency.AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, base::TimeTicks(), 1);
+      ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, base::TimeTicks());
   MouseEventWithLatencyInfo mouse_1 =
       CreateMouseEvent(WebInputEvent::kMouseMove, 10.0);
 
diff --git a/content/common/input/input_handler.mojom b/content/common/input/input_handler.mojom
index a2bbde9e..79d584f 100644
--- a/content/common/input/input_handler.mojom
+++ b/content/common/input/input_handler.mojom
@@ -291,9 +291,9 @@
   // Attach the synchronous compositor interface. This method only
   // should be called for Android WebView.
   AttachSynchronousCompositor(
-      SynchronousCompositorControlHost control_host,
-      associated SynchronousCompositorHost host,
-      associated SynchronousCompositor& compositor_request);
+      pending_remote<SynchronousCompositorControlHost> control_host,
+      pending_associated_remote<SynchronousCompositorHost> host,
+      pending_associated_receiver<SynchronousCompositor> compositor_request);
 };
 
 // This interface provides the input actions associated with the RenderFrame.
@@ -384,6 +384,7 @@
   // Return an associated WidgetInputHandler interface so that input
   // messages to the widget associated with this frame can be sent
   // serially.
-  GetWidgetInputHandler(associated WidgetInputHandler& interface_request,
-                        WidgetInputHandlerHost host);
+  GetWidgetInputHandler(
+      pending_associated_receiver<WidgetInputHandler> interface_request,
+      pending_remote<WidgetInputHandlerHost> host);
 };
diff --git a/content/common/widget.mojom b/content/common/widget.mojom
index a002e4f..6a2ed26 100644
--- a/content/common/widget.mojom
+++ b/content/common/widget.mojom
@@ -8,5 +8,11 @@
 
 // Interface exposed by the renderer for Widgets.
 interface Widget {
-  SetupWidgetInputHandler(WidgetInputHandler& request, WidgetInputHandlerHost host);
+  // Setup the input channel for this widget. If the widget is a frame,
+  // then it will have a FrameInputHandler and the WidgetInputHandler should
+  // be obtained using that interface instead. The frame's FrameInputHandler
+  // uses associated receivers to ensure serial ordering with the frame
+  // input messages.
+  SetupWidgetInputHandler(pending_receiver<WidgetInputHandler> request,
+                          pending_remote<WidgetInputHandlerHost> host);
 };
diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
index 5433738..4212196 100644
--- a/content/gpu/gpu_main.cc
+++ b/content/gpu/gpu_main.cc
@@ -232,6 +232,9 @@
   // COM callbacks.
   base::win::ScopedCOMInitializer com_initializer(
       base::win::ScopedCOMInitializer::kMTA);
+
+  if (base::FeatureList::IsEnabled(features::kGpuProcessHighPriorityWin))
+    ::SetPriorityClass(::GetCurrentProcess(), HIGH_PRIORITY_CLASS);
 #endif
 
   logging::SetLogMessageHandler(GpuProcessLogMessageHandler);
diff --git a/content/public/android/java/src/org/chromium/content/browser/androidoverlay/DialogOverlayCore.java b/content/public/android/java/src/org/chromium/content/browser/androidoverlay/DialogOverlayCore.java
index 82ddb24..38f2e485 100644
--- a/content/public/android/java/src/org/chromium/content/browser/androidoverlay/DialogOverlayCore.java
+++ b/content/public/android/java/src/org/chromium/content/browser/androidoverlay/DialogOverlayCore.java
@@ -7,6 +7,7 @@
 import android.annotation.SuppressLint;
 import android.app.Dialog;
 import android.content.Context;
+import android.os.Build;
 import android.os.IBinder;
 import android.os.Looper;
 import android.view.Gravity;
@@ -162,10 +163,26 @@
 
         @Override
         public void surfaceDestroyed(SurfaceHolder holder) {
-            assertProperThread();
-
             if (mDialog == null || mHost == null) return;
 
+            // This method should be called on the overlay thread, but is sometimes called on the
+            // browser UI thread due to framework bugs.  If that happens, we can't really clean up
+            // properly (synchronously), since |mHost| can't be closed properly from the remote side
+            // since we're blocking the UI thread.  To avoid that, we just give up on synchronous
+            // shutdown and hope for the best.
+            //
+            // We only allow it on P, though, since that's the only place it should be observed.
+            if (Build.VERSION.SDK_INT != Build.VERSION_CODES.P) {
+                assertProperThread();
+            } else if (mLooper != Looper.myLooper()) {
+                Log.e(TAG, "surfaceDestroyed called on wrong thread.  Avoiding proper shutdown.");
+                // We still notify the client, so that it can shut down, but we don't wait.  Note
+                // that this can result in calls back into |this| on the overlay thread, including
+                // clearing |mHost| even if it is not null now.
+                mHost.onOverlayDestroyed();
+                return;
+            }
+
             // Notify the host that we've been destroyed, and wait for it to clean up or time out.
             mHost.onOverlayDestroyed();
             mHost.waitForClose();
diff --git a/content/public/android/java/src/org/chromium/content/browser/picker/MultiFieldTimePickerDialog.java b/content/public/android/java/src/org/chromium/content/browser/picker/MultiFieldTimePickerDialog.java
index 37847f08..d15a3db 100644
--- a/content/public/android/java/src/org/chromium/content/browser/picker/MultiFieldTimePickerDialog.java
+++ b/content/public/android/java/src/org/chromium/content/browser/picker/MultiFieldTimePickerDialog.java
@@ -4,7 +4,6 @@
 
 package org.chromium.content.browser.picker;
 
-import android.annotation.SuppressLint;
 import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -16,6 +15,7 @@
 import org.chromium.content.R;
 
 import java.util.ArrayList;
+import java.util.Locale;
 
 /**
  * A time picker dialog with upto 5 number pickers left to right:
@@ -26,8 +26,6 @@
  * The milli picker is not displayed if step >= SECOND_IN_MILLIS
  * The second picker is not displayed if step >= MINUTE_IN_MILLIS.
  */
-// TODO(crbug.com/635567): Fix these properly.
-@SuppressLint("DefaultLocale")
 public class MultiFieldTimePickerDialog
         extends AlertDialog implements OnClickListener {
 
@@ -235,7 +233,7 @@
             // Non-decimal step value.
             ArrayList<String> strValue = new ArrayList<String>();
             for (int i = min; i < max; i += step) {
-                strValue.add(String.format("%03d", i));
+                strValue.add(String.format(Locale.getDefault(), "%03d", i));
             }
             mMilliSpinner.setMinValue(0);
             mMilliSpinner.setMaxValue(strValue.size() - 1);
@@ -285,7 +283,7 @@
 
         @Override
         public String format(int value) {
-            return String.format(mFormat, value);
+            return String.format(Locale.getDefault(), mFormat, value);
         }
     }
 }
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 62f34c7..45d2c02 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -970,11 +970,11 @@
       const std::string& interface_name,
       mojo::ScopedMessagePipeHandle interface_pipe) {}
 
-  // Content was unable to bind a CredentialManager request, so the embedder
-  // should try.
-  virtual void BindCredentialManagerRequest(
+  // Content was unable to bind a CredentialManager pending receiver, so the
+  // embedder should try.
+  virtual void BindCredentialManagerReceiver(
       RenderFrameHost* render_frame_host,
-      blink::mojom::CredentialManagerRequest request) {}
+      mojo::PendingReceiver<blink::mojom::CredentialManager> receiver) {}
 
   // Content was unable to bind a request for this associated interface, so the
   // embedder should try. Returns true if the |handle| was actually taken and
diff --git a/content/public/browser/frame_service_base.h b/content/public/browser/frame_service_base.h
index 31cc869..2ae4e26e 100644
--- a/content/public/browser/frame_service_base.h
+++ b/content/public/browser/frame_service_base.h
@@ -5,6 +5,8 @@
 #ifndef CONTENT_PUBLIC_BROWSER_FRAME_SERVICE_BASE_H_
 #define CONTENT_PUBLIC_BROWSER_FRAME_SERVICE_BASE_H_
 
+#include <utility>
+
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/threading/thread_checker.h"
@@ -12,8 +14,8 @@
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_contents_observer.h"
-#include "mojo/public/cpp/bindings/binding.h"
-#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 #include "url/origin.h"
 
 namespace content {
@@ -34,14 +36,14 @@
 class FrameServiceBase : public Interface, public WebContentsObserver {
  public:
   FrameServiceBase(RenderFrameHost* render_frame_host,
-                   mojo::InterfaceRequest<Interface> request)
+                   mojo::PendingReceiver<Interface> pending_receiver)
       : WebContentsObserver(
             WebContents::FromRenderFrameHost(render_frame_host)),
         render_frame_host_(render_frame_host),
         origin_(render_frame_host_->GetLastCommittedOrigin()),
-        binding_(this, std::move(request)) {
-    // |this| owns |binding_|, so unretained is safe.
-    binding_.set_connection_error_handler(
+        receiver_(this, std::move(pending_receiver)) {
+    // |this| owns |receiver_|, so unretained is safe.
+    receiver_.set_disconnect_handler(
         base::BindOnce(&FrameServiceBase::Close, base::Unretained(this)));
   }
 
@@ -94,7 +96,7 @@
 
   RenderFrameHost* const render_frame_host_ = nullptr;
   const url::Origin origin_;
-  mojo::Binding<Interface> binding_;
+  mojo::Receiver<Interface> receiver_;
 };
 
 }  // namespace content
diff --git a/content/public/browser/media_session.h b/content/public/browser/media_session.h
index e8e0207..d2b84451 100644
--- a/content/public/browser/media_session.h
+++ b/content/public/browser/media_session.h
@@ -67,7 +67,8 @@
 
   // Adds an observer to listen to events related to this MediaSession.
   void AddObserver(
-      media_session::mojom::MediaSessionObserverPtr observer) override = 0;
+      mojo::PendingRemote<media_session::mojom::MediaSessionObserver> observer)
+      override = 0;
 
   // Skip to the previous track. If there is no previous track then this will be
   // a no-op.
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
index 0d6c71a..e38f65d 100644
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -16,10 +16,6 @@
 const base::Feature kAllowActivationDelegationAttr{
     "AllowActivationDelegationAttr", base::FEATURE_DISABLED_BY_DEFAULT};
 
-// Allows starting services without the browser process.
-const base::Feature kAllowStartingServiceManagerOnly{
-    "AllowStartingServiceManagerOnly", base::FEATURE_ENABLED_BY_DEFAULT};
-
 // Enables content-initiated, main frame navigations to data URLs.
 // TODO(meacer): Remove when the deprecation is complete.
 //               https://www.chromestatus.com/feature/5669602927312896
@@ -65,11 +61,6 @@
 const base::Feature kBackForwardCache{"BackForwardCache",
                                       base::FEATURE_DISABLED_BY_DEFAULT};
 
-// Enable incremental marking for Blink's heap managed by the Oilpan garbage
-// collector.
-const base::Feature kBlinkHeapIncrementalMarking{
-    "BlinkHeapIncrementalMarking", base::FEATURE_ENABLED_BY_DEFAULT};
-
 // Allows swipe left/right from touchpad change browser navigation. Currently
 // only enabled by default on CrOS.
 const base::Feature kTouchpadOverscrollHistoryNavigation {
@@ -176,10 +167,6 @@
 const base::Feature kGuestViewCrossProcessFrames{
     "GuestViewCrossProcessFrames", base::FEATURE_ENABLED_BY_DEFAULT};
 
-// Enables BlinkGC heap compaction.
-const base::Feature kHeapCompaction{"HeapCompaction",
-                                    base::FEATURE_DISABLED_BY_DEFAULT};
-
 // If a page does a client side redirect or adds to the history without a user
 // gesture, then skip it on back/forward UI.
 const base::Feature kHistoryManipulationIntervention{
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
index 33916be..1766d6f3 100644
--- a/content/public/common/content_features.h
+++ b/content/public/common/content_features.h
@@ -17,7 +17,6 @@
 // All features in alphabetical order. The features should be documented
 // alongside the definition of their values in the .cc file.
 CONTENT_EXPORT extern const base::Feature kAllowActivationDelegationAttr;
-CONTENT_EXPORT extern const base::Feature kAllowStartingServiceManagerOnly;
 CONTENT_EXPORT extern const base::Feature
     kAllowContentInitiatedDataUrlNavigations;
 CONTENT_EXPORT extern const base::Feature
@@ -28,7 +27,6 @@
 CONTENT_EXPORT extern const base::Feature kAudioServiceOutOfProcess;
 CONTENT_EXPORT extern const base::Feature kBackgroundFetch;
 CONTENT_EXPORT extern const base::Feature kBackForwardCache;
-CONTENT_EXPORT extern const base::Feature kBlinkHeapIncrementalMarking;
 CONTENT_EXPORT extern const base::Feature kBlockCredentialedSubresources;
 CONTENT_EXPORT extern const base::Feature kBundledHTTPExchanges;
 CONTENT_EXPORT extern const base::Feature kCacheInlineScriptCode;
@@ -47,7 +45,6 @@
 CONTENT_EXPORT extern const base::Feature kFeaturePolicyForSandbox;
 CONTENT_EXPORT extern const base::Feature kFontSrcLocalMatching;
 CONTENT_EXPORT extern const base::Feature kGuestViewCrossProcessFrames;
-CONTENT_EXPORT extern const base::Feature kHeapCompaction;
 CONTENT_EXPORT extern const base::Feature kHistoryManipulationIntervention;
 CONTENT_EXPORT extern const base::Feature kIdleDetection;
 CONTENT_EXPORT extern const base::Feature kInputPredictorTypeChoice;
diff --git a/content/public/common/url_loader_throttle.h b/content/public/common/url_loader_throttle.h
index 03d15f2..48e86aa 100644
--- a/content/public/common/url_loader_throttle.h
+++ b/content/public/common/url_loader_throttle.h
@@ -10,9 +10,8 @@
 
 #include "base/strings/string_piece.h"
 #include "content/common/content_export.h"
-#include "content/public/common/resource_type.h"
-#include "content/public/common/transferrable_url_loader.mojom.h"
 #include "net/base/request_priority.h"
+#include "services/network/public/mojom/url_loader.mojom.h"
 
 class GURL;
 
diff --git a/content/public/test/browser_test_base.cc b/content/public/test/browser_test_base.cc
index c86780b..74a6b17 100644
--- a/content/public/test/browser_test_base.cc
+++ b/content/public/test/browser_test_base.cc
@@ -21,6 +21,7 @@
 #include "base/macros.h"
 #include "base/message_loop/message_loop.h"
 #include "base/message_loop/message_loop_current.h"
+#include "base/rand_util.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
 #include "base/strings/string_number_conversions.h"
@@ -526,6 +527,31 @@
 }
 #endif
 
+namespace {
+
+std::string GetDefaultTraceFilaneme() {
+  std::string test_suite_name = ::testing::UnitTest::GetInstance()
+                                    ->current_test_info()
+                                    ->test_suite_name();
+  std::string test_name =
+      ::testing::UnitTest::GetInstance()->current_test_info()->name();
+  // Add random number to the trace file to distinguish traces from different
+  // test runs.
+  // We don't use timestamp here to avoid collisions with parallel runs of the
+  // same test.
+  std::string random_seed = base::NumberToString(base::RandInt(1e7, 1e8 - 1));
+  std::string status = ::testing::UnitTest::GetInstance()
+                               ->current_test_info()
+                               ->result()
+                               ->Passed()
+                           ? "OK"
+                           : "FAIL";
+  return "trace_test_" + test_suite_name + "_" + test_name + "_" + random_seed +
+         "_" + status + ".json";
+}
+
+}  // namespace
+
 void BrowserTestBase::ProxyRunTestOnMainThreadLoop() {
   // Install a RunLoop timeout if none is present but do not override tests that
   // set a ScopedRunTimeoutForTest from their fixture's constructor (which
@@ -611,7 +637,7 @@
     // If there was no file specified, put a hardcoded one in the current
     // working directory.
     if (trace_file.empty())
-      trace_file = base::FilePath().AppendASCII("trace.json");
+      trace_file = base::FilePath().AppendASCII(GetDefaultTraceFilaneme());
 
     // Wait for tracing to collect results from the renderers.
     base::RunLoop run_loop;
diff --git a/content/public/test/url_loader_interceptor.cc b/content/public/test/url_loader_interceptor.cc
index e3f3e2ec..cdcd51e9 100644
--- a/content/public/test/url_loader_interceptor.cc
+++ b/content/public/test/url_loader_interceptor.cc
@@ -304,10 +304,10 @@
     if (parent_->Intercept(&params))
       return;
 
-    url_loader_client_interceptor_ =
+    url_loader_client_interceptors_.push_back(
         std::make_unique<URLLoaderClientInterceptor>(
             std::move(original_factory_getter_), std::move(params),
-            parent_->GetCompletionStatusCallback());
+            parent_->GetCompletionStatusCallback()));
   }
 
   void Clone(network::mojom::URLLoaderFactoryRequest request) override {
@@ -324,7 +324,8 @@
   OriginalFactoryGetter original_factory_getter_;
   mojo::BindingSet<network::mojom::URLLoaderFactory> bindings_;
   base::OnceClosure error_handler_;
-  std::unique_ptr<URLLoaderClientInterceptor> url_loader_client_interceptor_;
+  std::vector<std::unique_ptr<URLLoaderClientInterceptor>>
+      url_loader_client_interceptors_;
 
   DISALLOW_COPY_AND_ASSIGN(Interceptor);
 };
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn
index 4d27f405..e33a7a4 100644
--- a/content/renderer/BUILD.gn
+++ b/content/renderer/BUILD.gn
@@ -218,8 +218,6 @@
     "media/stream/media_stream_renderer_factory_impl.h",
     "media/stream/processed_local_audio_source.cc",
     "media/stream/processed_local_audio_source.h",
-    "media/stream/track_audio_renderer.cc",
-    "media/stream/track_audio_renderer.h",
     "media/stream/user_media_client_impl.cc",
     "media/stream/user_media_client_impl.h",
     "media/stream/user_media_processor.cc",
diff --git a/content/renderer/accessibility/blink_ax_tree_source.cc b/content/renderer/accessibility/blink_ax_tree_source.cc
index 0d4a7d3..988c1d46 100644
--- a/content/renderer/accessibility/blink_ax_tree_source.cc
+++ b/content/renderer/accessibility/blink_ax_tree_source.cc
@@ -1211,11 +1211,6 @@
   if (!base::FeatureList::IsEnabled(features::kExperimentalAccessibilityLabels))
     return;
 
-  // Reject ignored objects
-  if (src.AccessibilityIsIgnored()) {
-    return;
-  }
-
   // Reject images that are explicitly empty, or that have a name already.
   //
   // In the future, we may annotate some images that have a name
diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc
index 6b5a3dd..e5df765e 100644
--- a/content/renderer/accessibility/render_accessibility_impl.cc
+++ b/content/renderer/accessibility/render_accessibility_impl.cc
@@ -25,6 +25,7 @@
 #include "content/renderer/accessibility/ax_image_annotator.h"
 #include "content/renderer/accessibility/blink_ax_enum_conversion.h"
 #include "content/renderer/render_frame_impl.h"
+#include "content/renderer/render_frame_proxy.h"
 #include "content/renderer/render_view_impl.h"
 #include "services/image_annotation/public/mojom/image_annotation.mojom.h"
 #include "third_party/blink/public/platform/task_type.h"
@@ -879,8 +880,24 @@
   if (data.HasContentIntAttribute(AX_CONTENT_ATTR_CHILD_ROUTING_ID) ||
       data.HasContentIntAttribute(
           AX_CONTENT_ATTR_CHILD_BROWSER_PLUGIN_INSTANCE_ID)) {
+    gfx::Point transformed_point = point;
+    bool is_remote_frame = RenderFrameProxy::FromRoutingID(
+        data.GetContentIntAttribute(AX_CONTENT_ATTR_CHILD_ROUTING_ID));
+    if (is_remote_frame) {
+      // Remote frames don't have access to the information from the visual
+      // viewport regarding the visual viewport offset, so we adjust the
+      // coordinates before sending them to the remote renderer.
+      WebRect rect = obj.GetBoundsInFrameCoordinates();
+      // The following transformation of the input point is naive, but works
+      // fairly well. It will fail with CSS transforms that rotate or shear.
+      // https://crbug.com/981959.
+      WebView* web_view = render_frame_->GetRenderView()->GetWebView();
+      blink::WebFloatPoint viewport_offset = web_view->VisualViewportOffset();
+      transformed_point += gfx::Vector2d(viewport_offset.x, viewport_offset.y) -
+                           gfx::Rect(rect).OffsetFromOrigin();
+    }
     Send(new AccessibilityHostMsg_ChildFrameHitTestResult(
-        routing_id(), action_request_id, point,
+        routing_id(), action_request_id, transformed_point,
         data.GetContentIntAttribute(AX_CONTENT_ATTR_CHILD_ROUTING_ID),
         data.GetContentIntAttribute(
             AX_CONTENT_ATTR_CHILD_BROWSER_PLUGIN_INSTANCE_ID),
diff --git a/content/renderer/input/frame_input_handler_impl.cc b/content/renderer/input/frame_input_handler_impl.cc
index f7d656c3..03e935b 100644
--- a/content/renderer/input/frame_input_handler_impl.cc
+++ b/content/renderer/input/frame_input_handler_impl.cc
@@ -422,20 +422,20 @@
 }
 
 void FrameInputHandlerImpl::GetWidgetInputHandler(
-    mojom::WidgetInputHandlerAssociatedRequest interface_request,
-    mojom::WidgetInputHandlerHostPtr host) {
+    mojo::PendingAssociatedReceiver<mojom::WidgetInputHandler> receiver,
+    mojo::PendingRemote<mojom::WidgetInputHandlerHost> host) {
   if (!main_thread_task_runner_->BelongsToCurrentThread()) {
     main_thread_task_runner_->PostTask(
-        FROM_HERE, base::BindOnce(&FrameInputHandlerImpl::GetWidgetInputHandler,
-                                  weak_this_, std::move(interface_request),
-                                  std::move(host)));
+        FROM_HERE,
+        base::BindOnce(&FrameInputHandlerImpl::GetWidgetInputHandler,
+                       weak_this_, std::move(receiver), std::move(host)));
     return;
   }
   if (!render_frame_)
     return;
   render_frame_->GetLocalRootRenderWidget()
       ->widget_input_handler_manager()
-      ->AddAssociatedInterface(std::move(interface_request), std::move(host));
+      ->AddAssociatedInterface(std::move(receiver), std::move(host));
 }
 
 void FrameInputHandlerImpl::ExecuteCommandOnMainThread(
diff --git a/content/renderer/input/frame_input_handler_impl.h b/content/renderer/input/frame_input_handler_impl.h
index 8155c1a..6c91a84 100644
--- a/content/renderer/input/frame_input_handler_impl.h
+++ b/content/renderer/input/frame_input_handler_impl.h
@@ -78,8 +78,8 @@
   void ScrollFocusedEditableNodeIntoRect(const gfx::Rect& rect) override;
   void MoveCaret(const gfx::Point& point) override;
   void GetWidgetInputHandler(
-      mojom::WidgetInputHandlerAssociatedRequest interface_request,
-      mojom::WidgetInputHandlerHostPtr host) override;
+      mojo::PendingAssociatedReceiver<mojom::WidgetInputHandler> receiver,
+      mojo::PendingRemote<mojom::WidgetInputHandlerHost> host) override;
 
  private:
   ~FrameInputHandlerImpl() override;
diff --git a/content/renderer/input/render_widget_input_handler.cc b/content/renderer/input/render_widget_input_handler.cc
index 2281020..e23bdc9 100644
--- a/content/renderer/input/render_widget_input_handler.cc
+++ b/content/renderer/input/render_widget_input_handler.cc
@@ -619,7 +619,7 @@
             last_injected_gesture_was_begin_
                 ? ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT
                 : ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT,
-            original_timestamp, 1);
+            original_timestamp);
       } else {
         // If we're injecting a GSU in response to a GSU (touch drags of the
         // scrollbar thumb in Blink handles GSUs, and reverses them with
diff --git a/content/renderer/input/synchronous_compositor_proxy.cc b/content/renderer/input/synchronous_compositor_proxy.cc
index a0a0a74..4d52a6f 100644
--- a/content/renderer/input/synchronous_compositor_proxy.cc
+++ b/content/renderer/input/synchronous_compositor_proxy.cc
@@ -24,7 +24,6 @@
 SynchronousCompositorProxy::SynchronousCompositorProxy(
     ui::SynchronousInputHandlerProxy* input_handler_proxy)
     : input_handler_proxy_(input_handler_proxy),
-      binding_(this),
       use_in_process_zero_copy_software_draw_(
           base::CommandLine::ForCurrentProcess()->HasSwitch(
               switches::kSingleProcess)),
@@ -395,12 +394,13 @@
 }
 
 void SynchronousCompositorProxy::BindChannel(
-    mojom::SynchronousCompositorControlHostPtr control_host,
-    mojom::SynchronousCompositorHostAssociatedPtrInfo host,
-    mojom::SynchronousCompositorAssociatedRequest compositor_request) {
-  control_host_ = std::move(control_host);
+    mojo::PendingRemote<mojom::SynchronousCompositorControlHost> control_host,
+    mojo::PendingAssociatedRemote<mojom::SynchronousCompositorHost> host,
+    mojo::PendingAssociatedReceiver<mojom::SynchronousCompositor>
+        compositor_request) {
+  control_host_.Bind(std::move(control_host));
   host_.Bind(std::move(host));
-  binding_.Bind(std::move(compositor_request));
+  receiver_.Bind(std::move(compositor_request));
 
   if (layer_tree_frame_sink_)
     LayerTreeFrameSinkCreated();
diff --git a/content/renderer/input/synchronous_compositor_proxy.h b/content/renderer/input/synchronous_compositor_proxy.h
index ffa72ca4..ae3ffab9 100644
--- a/content/renderer/input/synchronous_compositor_proxy.h
+++ b/content/renderer/input/synchronous_compositor_proxy.h
@@ -16,7 +16,9 @@
 #include "content/common/input/synchronous_compositor.mojom.h"
 #include "content/public/common/input_event_ack_state.h"
 #include "content/renderer/android/synchronous_layer_tree_frame_sink.h"
-#include "mojo/public/cpp/bindings/associated_binding.h"
+#include "mojo/public/cpp/bindings/associated_receiver.h"
+#include "mojo/public/cpp/bindings/associated_remote.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "ui/events/blink/synchronous_input_handler_proxy.h"
 #include "ui/gfx/geometry/scroll_offset.h"
 #include "ui/gfx/geometry/size_f.h"
@@ -42,9 +44,10 @@
 
   void Init();
   void BindChannel(
-      mojom::SynchronousCompositorControlHostPtr control_host,
-      mojom::SynchronousCompositorHostAssociatedPtrInfo host,
-      mojom::SynchronousCompositorAssociatedRequest compositor_request);
+      mojo::PendingRemote<mojom::SynchronousCompositorControlHost> control_host,
+      mojo::PendingAssociatedRemote<mojom::SynchronousCompositorHost> host,
+      mojo::PendingAssociatedReceiver<mojom::SynchronousCompositor>
+          compositor_request);
 
   // ui::SynchronousInputHandler overrides.
   void SetNeedsSynchronousAnimateInput() final;
@@ -116,9 +119,9 @@
   struct SharedMemoryWithSize;
 
   ui::SynchronousInputHandlerProxy* const input_handler_proxy_;
-  mojom::SynchronousCompositorControlHostPtr control_host_;
-  mojom::SynchronousCompositorHostAssociatedPtr host_;
-  mojo::AssociatedBinding<mojom::SynchronousCompositor> binding_;
+  mojo::Remote<mojom::SynchronousCompositorControlHost> control_host_;
+  mojo::AssociatedRemote<mojom::SynchronousCompositorHost> host_;
+  mojo::AssociatedReceiver<mojom::SynchronousCompositor> receiver_{this};
   const bool use_in_process_zero_copy_software_draw_;
 
   bool compute_scroll_called_via_ipc_ = false;
diff --git a/content/renderer/input/widget_input_handler_impl.cc b/content/renderer/input/widget_input_handler_impl.cc
index ed5274a0..65c14d1c 100644
--- a/content/renderer/input/widget_input_handler_impl.cc
+++ b/content/renderer/input/widget_input_handler_impl.cc
@@ -196,11 +196,12 @@
 }
 
 void WidgetInputHandlerImpl::AttachSynchronousCompositor(
-    mojom::SynchronousCompositorControlHostPtr control_host,
-    mojom::SynchronousCompositorHostAssociatedPtrInfo host,
-    mojom::SynchronousCompositorAssociatedRequest compositor_request) {
+    mojo::PendingRemote<mojom::SynchronousCompositorControlHost> control_host,
+    mojo::PendingAssociatedRemote<mojom::SynchronousCompositorHost> host,
+    mojo::PendingAssociatedReceiver<mojom::SynchronousCompositor>
+        compositor_receiver) {
   input_handler_manager_->AttachSynchronousCompositor(
-      std::move(control_host), std::move(host), std::move(compositor_request));
+      std::move(control_host), std::move(host), std::move(compositor_receiver));
 }
 
 void WidgetInputHandlerImpl::RunOnMainThread(base::OnceClosure closure) {
diff --git a/content/renderer/input/widget_input_handler_impl.h b/content/renderer/input/widget_input_handler_impl.h
index d921ca1..583b0e3 100644
--- a/content/renderer/input/widget_input_handler_impl.h
+++ b/content/renderer/input/widget_input_handler_impl.h
@@ -58,10 +58,10 @@
   void DispatchNonBlockingEvent(std::unique_ptr<content::InputEvent>) override;
   void WaitForInputProcessed(WaitForInputProcessedCallback callback) override;
   void AttachSynchronousCompositor(
-      mojom::SynchronousCompositorControlHostPtr control_host,
-      mojom::SynchronousCompositorHostAssociatedPtrInfo host,
-      mojom::SynchronousCompositorAssociatedRequest compositor_request)
-      override;
+      mojo::PendingRemote<mojom::SynchronousCompositorControlHost> control_host,
+      mojo::PendingAssociatedRemote<mojom::SynchronousCompositorHost> host,
+      mojo::PendingAssociatedReceiver<mojom::SynchronousCompositor>
+          compositor_receiver) override;
   void InputWasProcessed();
 
  private:
diff --git a/content/renderer/input/widget_input_handler_manager.cc b/content/renderer/input/widget_input_handler_manager.cc
index ca70ecb..a527fddc 100644
--- a/content/renderer/input/widget_input_handler_manager.cc
+++ b/content/renderer/input/widget_input_handler_manager.cc
@@ -171,41 +171,38 @@
 WidgetInputHandlerManager::~WidgetInputHandlerManager() = default;
 
 void WidgetInputHandlerManager::AddAssociatedInterface(
-    mojom::WidgetInputHandlerAssociatedRequest request,
-    mojom::WidgetInputHandlerHostPtr host) {
+    mojo::PendingAssociatedReceiver<mojom::WidgetInputHandler> receiver,
+    mojo::PendingRemote<mojom::WidgetInputHandlerHost> host) {
   if (compositor_task_runner_) {
-    associated_host_ =
-        mojo::ThreadSafeInterfacePtr<mojom::WidgetInputHandlerHost>::Create(
-            host.PassInterface(), compositor_task_runner_);
+    associated_host_ = mojo::SharedRemote<mojom::WidgetInputHandlerHost>(
+        std::move(host), compositor_task_runner_);
     // Mojo channel bound on compositor thread.
     compositor_task_runner_->PostTask(
         FROM_HERE,
         base::BindOnce(&WidgetInputHandlerManager::BindAssociatedChannel, this,
-                       std::move(request)));
+                       std::move(receiver)));
   } else {
     associated_host_ =
-        mojo::ThreadSafeInterfacePtr<mojom::WidgetInputHandlerHost>::Create(
-            std::move(host));
+        mojo::SharedRemote<mojom::WidgetInputHandlerHost>(std::move(host));
     // Mojo channel bound on main thread.
-    BindAssociatedChannel(std::move(request));
+    BindAssociatedChannel(std::move(receiver));
   }
 }
 
 void WidgetInputHandlerManager::AddInterface(
-    mojom::WidgetInputHandlerRequest request,
-    mojom::WidgetInputHandlerHostPtr host) {
+    mojo::PendingReceiver<mojom::WidgetInputHandler> receiver,
+    mojo::PendingRemote<mojom::WidgetInputHandlerHost> host) {
   if (compositor_task_runner_) {
-    host_ = mojo::ThreadSafeInterfacePtr<mojom::WidgetInputHandlerHost>::Create(
-        host.PassInterface(), compositor_task_runner_);
+    host_ = mojo::SharedRemote<mojom::WidgetInputHandlerHost>(
+        std::move(host), compositor_task_runner_);
     // Mojo channel bound on compositor thread.
     compositor_task_runner_->PostTask(
         FROM_HERE, base::BindOnce(&WidgetInputHandlerManager::BindChannel, this,
-                                  std::move(request)));
+                                  std::move(receiver)));
   } else {
-    host_ = mojo::ThreadSafeInterfacePtr<mojom::WidgetInputHandlerHost>::Create(
-        std::move(host));
+    host_ = mojo::SharedRemote<mojom::WidgetInputHandlerHost>(std::move(host));
     // Mojo channel bound on main thread.
-    BindChannel(std::move(request));
+    BindChannel(std::move(receiver));
   }
 }
 
@@ -290,16 +287,17 @@
 mojom::WidgetInputHandlerHost*
 WidgetInputHandlerManager::GetWidgetInputHandlerHost() {
   if (associated_host_)
-    return associated_host_.get()->get();
+    return associated_host_.get();
   if (host_)
-    return host_.get()->get();
+    return host_.get();
   return nullptr;
 }
 
 void WidgetInputHandlerManager::AttachSynchronousCompositor(
-    mojom::SynchronousCompositorControlHostPtr control_host,
-    mojom::SynchronousCompositorHostAssociatedPtrInfo host,
-    mojom::SynchronousCompositorAssociatedRequest compositor_request) {
+    mojo::PendingRemote<mojom::SynchronousCompositorControlHost> control_host,
+    mojo::PendingAssociatedRemote<mojom::SynchronousCompositorHost> host,
+    mojo::PendingAssociatedReceiver<mojom::SynchronousCompositor>
+        compositor_request) {
 #if defined(OS_ANDROID)
   DCHECK(synchronous_compositor_registry_);
   synchronous_compositor_registry_->proxy()->BindChannel(
@@ -489,8 +487,8 @@
 }
 
 void WidgetInputHandlerManager::BindAssociatedChannel(
-    mojom::WidgetInputHandlerAssociatedRequest request) {
-  if (!request.is_pending())
+    mojo::PendingAssociatedReceiver<mojom::WidgetInputHandler> request) {
+  if (!request.is_valid())
     return;
   // Don't pass the |input_event_queue_| on if we don't have a
   // |compositor_task_runner_| as events might get out of order.
@@ -501,8 +499,8 @@
 }
 
 void WidgetInputHandlerManager::BindChannel(
-    mojom::WidgetInputHandlerRequest request) {
-  if (!request.is_pending())
+    mojo::PendingReceiver<mojom::WidgetInputHandler> request) {
+  if (!request.is_valid())
     return;
   // Don't pass the |input_event_queue_| on if we don't have a
   // |compositor_task_runner_| as events might get out of order.
diff --git a/content/renderer/input/widget_input_handler_manager.h b/content/renderer/input/widget_input_handler_manager.h
index a98ce998..bfce74d 100644
--- a/content/renderer/input/widget_input_handler_manager.h
+++ b/content/renderer/input/widget_input_handler_manager.h
@@ -10,8 +10,9 @@
 #include "content/common/content_export.h"
 #include "content/common/input/input_handler.mojom.h"
 #include "content/renderer/render_frame_impl.h"
-#include "mojo/public/cpp/bindings/associated_binding.h"
-#include "mojo/public/cpp/bindings/thread_safe_interface_ptr.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/shared_remote.h"
 #include "ui/events/blink/input_handler_proxy.h"
 #include "ui/events/blink/input_handler_proxy_client.h"
 
@@ -54,11 +55,11 @@
       blink::scheduler::WebThreadScheduler* main_thread_scheduler,
       bool needs_input_handler);
   void AddAssociatedInterface(
-      mojom::WidgetInputHandlerAssociatedRequest interface_request,
-      mojom::WidgetInputHandlerHostPtr host);
+      mojo::PendingAssociatedReceiver<mojom::WidgetInputHandler> receiver,
+      mojo::PendingRemote<mojom::WidgetInputHandlerHost> host);
 
-  void AddInterface(mojom::WidgetInputHandlerRequest interface_request,
-                    mojom::WidgetInputHandlerHostPtr host);
+  void AddInterface(mojo::PendingReceiver<mojom::WidgetInputHandler> receiver,
+                    mojo::PendingRemote<mojom::WidgetInputHandlerHost> host);
 
   // InputHandlerProxyClient overrides.
   void WillShutdown() override;
@@ -93,9 +94,10 @@
   mojom::WidgetInputHandlerHost* GetWidgetInputHandlerHost();
 
   void AttachSynchronousCompositor(
-      mojom::SynchronousCompositorControlHostPtr control_host,
-      mojom::SynchronousCompositorHostAssociatedPtrInfo host,
-      mojom::SynchronousCompositorAssociatedRequest compositor_request);
+      mojo::PendingRemote<mojom::SynchronousCompositorControlHost> control_host,
+      mojo::PendingAssociatedRemote<mojom::SynchronousCompositorHost> host,
+      mojo::PendingAssociatedReceiver<mojom::SynchronousCompositor>
+          compositor_request);
 
 #if defined(OS_ANDROID)
   content::SynchronousCompositorRegistry* GetSynchronousCompositorRegistry();
@@ -129,8 +131,8 @@
       bool smooth_scroll_enabled,
       bool sync_compositing);
   void BindAssociatedChannel(
-      mojom::WidgetInputHandlerAssociatedRequest request);
-  void BindChannel(mojom::WidgetInputHandlerRequest request);
+      mojo::PendingAssociatedReceiver<mojom::WidgetInputHandler> request);
+  void BindChannel(mojo::PendingReceiver<mojom::WidgetInputHandler> request);
   void HandleInputEvent(
       const ui::WebScopedInputEvent& event,
       const ui::LatencyInfo& latency,
@@ -164,16 +166,13 @@
   // thread.
   std::unique_ptr<ui::InputHandlerProxy> input_handler_proxy_;
 
-  using WidgetInputHandlerHost = scoped_refptr<
-      mojo::ThreadSafeInterfacePtr<mojom::WidgetInputHandlerHost>>;
-
   // The WidgetInputHandlerHost is bound on the compositor task runner
   // but class can be called on the compositor and main thread.
-  WidgetInputHandlerHost host_;
+  mojo::SharedRemote<mojom::WidgetInputHandlerHost> host_;
 
   // Host that was passed as part of the FrameInputHandler associated
   // channel.
-  WidgetInputHandlerHost associated_host_;
+  mojo::SharedRemote<mojom::WidgetInputHandlerHost> associated_host_;
 
   // Any thread can access these variables.
   scoped_refptr<MainThreadEventQueue> input_event_queue_;
diff --git a/content/renderer/media/renderer_webmediaplayer_delegate.cc b/content/renderer/media/renderer_webmediaplayer_delegate.cc
index d8cbaf1..93a45c2 100644
--- a/content/renderer/media/renderer_webmediaplayer_delegate.cc
+++ b/content/renderer/media/renderer_webmediaplayer_delegate.cc
@@ -44,15 +44,7 @@
   idle_cleanup_interval_ = base::TimeDelta::FromSeconds(5);
   idle_timeout_ = base::TimeDelta::FromSeconds(15);
 
-  is_jelly_bean_ = false;
-
-#if defined(OS_ANDROID)
-  // On Android, due to the instability of the OS level media components, we
-  // consider all pre-KitKat devices to be potentially buggy.
-  is_jelly_bean_ |= base::android::BuildInfo::GetInstance()->sdk_int() <=
-                    base::android::SDK_VERSION_JELLY_BEAN_MR2;
-#endif
-
+  is_low_end_ = base::SysInfo::IsLowEndDevice();
   idle_cleanup_timer_.SetTaskRunner(
       render_frame->GetTaskRunner(blink::TaskType::kInternalMedia));
 }
@@ -247,11 +239,11 @@
     base::TimeDelta idle_timeout,
     base::TimeDelta idle_cleanup_interval,
     const base::TickClock* tick_clock,
-    bool is_jelly_bean) {
+    bool is_low_end) {
   idle_cleanup_interval_ = idle_cleanup_interval;
   idle_timeout_ = idle_timeout;
   tick_clock_ = tick_clock;
-  is_jelly_bean_ = is_jelly_bean;
+  is_low_end_ = is_low_end;
 }
 
 bool RendererWebMediaPlayerDelegate::IsIdleCleanupTimerRunningForTesting()
@@ -384,12 +376,12 @@
   // When we reach the maximum number of idle players, clean them up
   // aggressively. Values chosen after testing on a Galaxy Nexus device for
   // http://crbug.com/612909.
-  if (idle_player_map_.size() > (is_jelly_bean_ ? 2u : 8u))
+  if (idle_player_map_.size() > (is_low_end_ ? 2u : 8u))
     aggressive_cleanup = true;
 
   // When a player plays on a buggy old device, clean up idle players
   // aggressively.
-  if (has_played_video_since_last_update_task && is_jelly_bean_)
+  if (has_played_video_since_last_update_task && is_low_end_)
     aggressive_cleanup = true;
 
   CleanUpIdlePlayers(aggressive_cleanup ? base::TimeDelta() : idle_timeout_);
diff --git a/content/renderer/media/renderer_webmediaplayer_delegate.h b/content/renderer/media/renderer_webmediaplayer_delegate.h
index fc39ff3..cc51e85 100644
--- a/content/renderer/media/renderer_webmediaplayer_delegate.h
+++ b/content/renderer/media/renderer_webmediaplayer_delegate.h
@@ -73,12 +73,12 @@
   void OnDestruct() override;
 
   // Zeros out |idle_cleanup_interval_|, sets |idle_timeout_| to |idle_timeout|,
-  // and |is_jelly_bean_| to |is_jelly_bean|. A zero cleanup interval
+  // and |is_low_end_| to |is_low_end|. A zero cleanup interval
   // will cause the idle timer to run with each run of the message loop.
   void SetIdleCleanupParamsForTesting(base::TimeDelta idle_timeout,
                                       base::TimeDelta idle_cleanup_interval,
                                       const base::TickClock* tick_clock,
-                                      bool is_jelly_bean);
+                                      bool is_low_end);
   bool IsIdleCleanupTimerRunningForTesting() const;
 
   // Note: Does not call OnFrameHidden()/OnFrameShown().
@@ -159,7 +159,7 @@
 
   // Determined at construction time based on system information; determines
   // when the idle cleanup timer should be fired more aggressively.
-  bool is_jelly_bean_;
+  bool is_low_end_;
 
   DISALLOW_COPY_AND_ASSIGN(RendererWebMediaPlayerDelegate);
 };
diff --git a/content/renderer/media/stream/media_stream_renderer_factory_impl.cc b/content/renderer/media/stream/media_stream_renderer_factory_impl.cc
index 8e767eb0..8d75b35e6 100644
--- a/content/renderer/media/stream/media_stream_renderer_factory_impl.cc
+++ b/content/renderer/media/stream/media_stream_renderer_factory_impl.cc
@@ -8,7 +8,6 @@
 
 #include "base/strings/utf_string_conversions.h"
 #include "content/public/renderer/render_frame.h"
-#include "content/renderer/media/stream/track_audio_renderer.h"
 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h"
 #include "content/renderer/media/webrtc/webrtc_audio_device_impl.h"
 #include "content/renderer/render_thread_impl.h"
@@ -18,6 +17,7 @@
 #include "third_party/blink/public/platform/web_media_stream.h"
 #include "third_party/blink/public/web/modules/mediastream/media_stream_video_renderer_sink.h"
 #include "third_party/blink/public/web/modules/mediastream/media_stream_video_track.h"
+#include "third_party/blink/public/web/modules/mediastream/track_audio_renderer.h"
 #include "third_party/blink/public/web/modules/webrtc/webrtc_audio_renderer.h"
 #include "third_party/blink/public/web/web_local_frame.h"
 #include "third_party/webrtc/api/media_stream_interface.h"
@@ -109,16 +109,15 @@
   }
 
   // If the track has a local source, or is a remote track that does not use the
-  // WebRTC audio pipeline, return a new TrackAudioRenderer instance.
+  // WebRTC audio pipeline, return a new blink::TrackAudioRenderer instance.
   if (!blink::PeerConnectionRemoteAudioTrack::From(audio_track)) {
     // TODO(xians): Add support for the case where the media stream contains
     // multiple audio tracks.
     DVLOG(1) << "Creating TrackAudioRenderer for "
              << (audio_track->is_local_track() ? "local" : "remote")
              << " track.";
-    int render_frame_id = RenderFrame::GetRoutingIdForWebFrame(web_frame);
-    return new TrackAudioRenderer(audio_tracks[0], render_frame_id,
-                                  0 /* no session_id */, device_id);
+    return new blink::TrackAudioRenderer(audio_tracks[0], web_frame,
+                                         0 /* no session_id */, device_id);
   }
 
   // This is a remote WebRTC media stream.
diff --git a/content/renderer/media/stream/mock_media_stream_video_sink.h b/content/renderer/media/stream/mock_media_stream_video_sink.h
deleted file mode 100644
index 5d336b2..0000000
--- a/content/renderer/media/stream/mock_media_stream_video_sink.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2014 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 CONTENT_RENDERER_MEDIA_STREAM_MOCK_MEDIA_STREAM_VIDEO_SINK_H_
-#define CONTENT_RENDERER_MEDIA_STREAM_MOCK_MEDIA_STREAM_VIDEO_SINK_H_
-
-#include "third_party/blink/public/web/modules/mediastream/media_stream_video_sink.h"
-
-#include "base/memory/weak_ptr.h"
-#include "media/base/video_frame.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "third_party/blink/public/common/media/video_capture.h"
-
-namespace content {
-
-class MockMediaStreamVideoSink : public blink::MediaStreamVideoSink {
- public:
-  MockMediaStreamVideoSink();
-  ~MockMediaStreamVideoSink() override;
-
-  void ConnectToTrack(const blink::WebMediaStreamTrack& track) {
-    blink::MediaStreamVideoSink::ConnectToTrack(track, GetDeliverFrameCB(),
-                                                true);
-  }
-
-  void ConnectToTrackWithCallback(
-      const blink::WebMediaStreamTrack& track,
-      const blink::VideoCaptureDeliverFrameCB& callback) {
-    blink::MediaStreamVideoSink::ConnectToTrack(track, callback, true);
-  }
-
-  void DisconnectFromTrack() {
-    blink::MediaStreamVideoSink::DisconnectFromTrack();
-  }
-
-  void OnReadyStateChanged(
-      blink::WebMediaStreamSource::ReadyState state) override;
-  void OnEnabledChanged(bool enabled) override;
-
-  // Triggered when OnVideoFrame(scoped_refptr<media::VideoFrame> frame)
-  // is called.
-  MOCK_METHOD0(OnVideoFrame, void());
-
-  blink::VideoCaptureDeliverFrameCB GetDeliverFrameCB();
-
-  int number_of_frames() const { return number_of_frames_; }
-  media::VideoPixelFormat format() const { return format_; }
-  gfx::Size frame_size() const { return frame_size_; }
-  scoped_refptr<media::VideoFrame> last_frame() const { return last_frame_; }
-
-  bool enabled() const { return enabled_; }
-  blink::WebMediaStreamSource::ReadyState state() const { return state_; }
-
- private:
-  void DeliverVideoFrame(scoped_refptr<media::VideoFrame> frame,
-                         base::TimeTicks estimated_capture_time);
-
-  int number_of_frames_;
-  bool enabled_;
-  media::VideoPixelFormat format_;
-  blink::WebMediaStreamSource::ReadyState state_;
-  gfx::Size frame_size_;
-  scoped_refptr<media::VideoFrame> last_frame_;
-  base::WeakPtrFactory<MockMediaStreamVideoSink> weak_factory_;
-};
-
-}  // namespace content
-
-#endif  // CONTENT_RENDERER_MEDIA_STREAM_MOCK_MEDIA_STREAM_VIDEO_SINK_H_
diff --git a/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc b/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc
index e67e9f82..b66700e0 100644
--- a/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc
+++ b/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc
@@ -15,7 +15,6 @@
 #include "base/test/scoped_task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "content/child/child_process.h"
-#include "content/renderer/media/stream/mock_media_stream_video_sink.h"
 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory.h"
 #include "media/base/video_frame.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -23,6 +22,7 @@
 #include "third_party/blink/public/platform/modules/webrtc/track_observer.h"
 #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
 #include "third_party/blink/public/web/modules/mediastream/media_stream_video_track.h"
+#include "third_party/blink/public/web/modules/mediastream/mock_media_stream_video_sink.h"
 #include "third_party/blink/public/web/web_heap.h"
 #include "third_party/webrtc/api/video/color_space.h"
 #include "third_party/webrtc/api/video/i420_buffer.h"
@@ -165,7 +165,7 @@
   std::unique_ptr<blink::MediaStreamVideoTrack> track(CreateTrack());
   EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
 
-  MockMediaStreamVideoSink sink;
+  blink::MockMediaStreamVideoSink sink;
   track->AddSink(&sink, sink.GetDeliverFrameCB(), false);
   base::RunLoop run_loop;
   base::Closure quit_closure = run_loop.QuitClosure();
@@ -191,7 +191,7 @@
 TEST_F(MediaStreamRemoteVideoSourceTest, RemoteTrackStop) {
   std::unique_ptr<blink::MediaStreamVideoTrack> track(CreateTrack());
 
-  MockMediaStreamVideoSink sink;
+  blink::MockMediaStreamVideoSink sink;
   track->AddSink(&sink, sink.GetDeliverFrameCB(), false);
   EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive, sink.state());
   EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive,
@@ -207,7 +207,7 @@
 
 TEST_F(MediaStreamRemoteVideoSourceTest, PreservesColorSpace) {
   std::unique_ptr<blink::MediaStreamVideoTrack> track(CreateTrack());
-  MockMediaStreamVideoSink sink;
+  blink::MockMediaStreamVideoSink sink;
   track->AddSink(&sink, sink.GetDeliverFrameCB(), false);
 
   base::RunLoop run_loop;
diff --git a/content/renderer/media/webrtc/rtc_video_decoder_adapter.cc b/content/renderer/media/webrtc/rtc_video_decoder_adapter.cc
index 8766545b..6192208 100644
--- a/content/renderer/media/webrtc/rtc_video_decoder_adapter.cc
+++ b/content/renderer/media/webrtc/rtc_video_decoder_adapter.cc
@@ -11,6 +11,7 @@
 #include "base/bind.h"
 #include "base/bind_helpers.h"
 #include "base/command_line.h"
+#include "base/feature_list.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
@@ -24,6 +25,7 @@
 #include "build/build_config.h"
 #include "content/renderer/media/render_media_log.h"
 #include "media/base/media_log.h"
+#include "media/base/media_switches.h"
 #include "media/base/media_util.h"
 #include "media/base/overlay_info.h"
 #include "media/base/video_types.h"
@@ -240,7 +242,9 @@
   // to software decoding. See https://crbug.com/webrtc/9304.
   if (video_codec_type_ == webrtc::kVideoCodecVP9 &&
       input_image.SpatialIndex().value_or(0) > 0) {
-    return WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
+    if (!base::FeatureList::IsEnabled(media::kVp9kSVCHWDecoding)) {
+      return WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
+    }
   }
 
   if (missing_frames || !input_image._completeFrame) {
@@ -261,10 +265,29 @@
     // ok, we got key frame and can continue decoding
     key_frame_required_ = false;
   }
+
+  std::vector<uint32_t> spatial_layer_frame_size;
+  for (int i = 0;; i++) {
+    auto frame_size = input_image.SpatialLayerFrameSize(i);
+    if (!frame_size)
+      break;
+    spatial_layer_frame_size.push_back(*frame_size);
+  }
+
   // Convert to media::DecoderBuffer.
   // TODO(sandersd): What is |render_time_ms|?
-  scoped_refptr<media::DecoderBuffer> buffer =
-      media::DecoderBuffer::CopyFrom(input_image.data(), input_image.size());
+  scoped_refptr<media::DecoderBuffer> buffer;
+  if (spatial_layer_frame_size.size() > 1) {
+    const uint8_t* side_data =
+        reinterpret_cast<const uint8_t*>(spatial_layer_frame_size.data());
+    size_t side_data_size =
+        spatial_layer_frame_size.size() * sizeof(uint32_t) / sizeof(uint8_t);
+    buffer = media::DecoderBuffer::CopyFrom(
+        input_image.data(), input_image.size(), side_data, side_data_size);
+  } else {
+    buffer =
+        media::DecoderBuffer::CopyFrom(input_image.data(), input_image.size());
+  }
   buffer->set_timestamp(
       base::TimeDelta::FromMicroseconds(input_image.Timestamp()));
 
@@ -282,6 +305,7 @@
     base::AutoLock auto_lock(lock_);
     if (has_error_)
       return WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
+
     if (pending_buffers_.size() >= kMaxPendingBuffers) {
       // We are severely behind. Drop pending buffers and request a keyframe to
       // catch up as quickly as possible.
diff --git a/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_unittest.cc b/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_unittest.cc
index 24bdea16..3a444f5 100644
--- a/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_unittest.cc
+++ b/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_unittest.cc
@@ -13,7 +13,6 @@
 #include "base/synchronization/waitable_event.h"
 #include "base/test/scoped_task_environment.h"
 #include "content/child/child_process.h"
-#include "content/renderer/media/stream/mock_media_stream_video_sink.h"
 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/modules/mediastream/media_stream_audio_source.h"
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index e2d0776..84e06fc 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -3448,6 +3448,7 @@
   // Sanity check that the browser always sends us new loader factories on
   // cross-document navigations with the Network Service enabled.
   DCHECK(common_params.url.SchemeIs(url::kJavaScriptScheme) ||
+         common_params.url == GURL(url::kAboutSrcdocURL) ||
          !base::FeatureList::IsEnabled(network::features::kNetworkService) ||
          subresource_loader_factories);
 
@@ -3588,9 +3589,34 @@
     blink::WebRuntimeFeatures::EnableHTMLImports(true);
   }
 
-  SetupLoaderFactoryBundle(std::move(subresource_loader_factories),
-                           std::move(subresource_overrides),
-                           std::move(prefetch_loader_factory));
+  // Here, creator means either the parent frame or the window opener.
+  bool inherit_loaders_from_creator =
+      // Iframe with the about:srcdoc URL inherits subresource loaders from
+      // its parent. If its parent is able to use the FileUrlLoader, then its
+      // about:srcdoc iframe can use it too.
+      // TODO(arthursonzogni): Ideally, this decision should be made by the
+      // browser process. However, giving an iframe the FileUrlLoader mistakenly
+      // could have terrible consequences (e.g. give access to user's file from
+      // an unknown website). Inheriting from the parent in the renderer process
+      // is more conservative and feels more cautious for now.
+      // TODO(arthursonzogni): Something similar needs to be done for
+      // about:blank.
+      common_params.url == url::kAboutSrcdocURL;
+
+  if (inherit_loaders_from_creator) {
+    // The browser process didn't provide any way to fetch subresources, it
+    // expects this document to inherit loaders from its parent.
+    DCHECK(!subresource_loader_factories);
+    DCHECK(!subresource_overrides);
+    DCHECK(!prefetch_loader_factory);
+
+    loader_factories_ = nullptr;  // Will be lazily initialized in
+                                  // GetLoaderFactoryBundle().
+  } else {
+    SetupLoaderFactoryBundle(std::move(subresource_loader_factories),
+                             std::move(subresource_overrides),
+                             std::move(prefetch_loader_factory));
+  }
 
   // If the navigation is for "view source", the WebLocalFrame needs to be put
   // in a special mode.
@@ -4368,7 +4394,8 @@
 std::pair<blink::WebRemoteFrame*, base::UnguessableToken>
 RenderFrameImpl::CreatePortal(
     mojo::ScopedInterfaceEndpointHandle portal_endpoint,
-    mojo::ScopedInterfaceEndpointHandle client_endpoint) {
+    mojo::ScopedInterfaceEndpointHandle client_endpoint,
+    const blink::WebElement& portal_element) {
   int proxy_routing_id = MSG_ROUTING_NONE;
   base::UnguessableToken portal_token;
   base::UnguessableToken devtools_frame_token;
@@ -4379,18 +4406,21 @@
           std::move(client_endpoint), blink::mojom::PortalClient::Version_),
       &proxy_routing_id, &portal_token, &devtools_frame_token);
   RenderFrameProxy* proxy = RenderFrameProxy::CreateProxyForPortal(
-      this, proxy_routing_id, devtools_frame_token);
+      this, proxy_routing_id, devtools_frame_token, portal_element);
   return std::make_pair(proxy->web_frame(), portal_token);
 }
 
 blink::WebRemoteFrame* RenderFrameImpl::AdoptPortal(
-    const base::UnguessableToken& portal_token) {
+    const base::UnguessableToken& portal_token,
+    const blink::WebElement& portal_element) {
   int proxy_routing_id = MSG_ROUTING_NONE;
   base::UnguessableToken devtools_frame_token;
+  FrameReplicationState replicated_state;
   GetFrameHost()->AdoptPortal(portal_token, &proxy_routing_id,
-                              &devtools_frame_token);
+                              &replicated_state, &devtools_frame_token);
   RenderFrameProxy* proxy = RenderFrameProxy::CreateProxyForPortal(
-      this, proxy_routing_id, devtools_frame_token);
+      this, proxy_routing_id, devtools_frame_token, portal_element);
+  proxy->SetReplicatedState(replicated_state);
   return proxy->web_frame();
 }
 
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 635b09e..3f45bcc 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -699,9 +699,11 @@
       blink::FrameOwnerElementType frame_owner_element_type) override;
   std::pair<blink::WebRemoteFrame*, base::UnguessableToken> CreatePortal(
       mojo::ScopedInterfaceEndpointHandle portal_endpoint,
-      mojo::ScopedInterfaceEndpointHandle client_endpoint) override;
+      mojo::ScopedInterfaceEndpointHandle client_endpoint,
+      const blink::WebElement& portal_element) override;
   blink::WebRemoteFrame* AdoptPortal(
-      const base::UnguessableToken& portal_token) override;
+      const base::UnguessableToken& portal_token,
+      const blink::WebElement& portal_element) override;
   blink::WebFrame* FindFrame(const blink::WebString& name) override;
   void DidChangeOpener(blink::WebFrame* frame) override;
   void FrameDetached(DetachType type) override;
diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc
index fb0791715..1bb5810 100644
--- a/content/renderer/render_frame_impl_browsertest.cc
+++ b/content/renderer/render_frame_impl_browsertest.cc
@@ -39,6 +39,7 @@
 #include "content/test/frame_host_test_interface.mojom.h"
 #include "content/test/test_document_interface_broker.h"
 #include "content/test/test_render_frame.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
 #include "services/service_manager/public/mojom/interface_provider.mojom.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -752,15 +753,15 @@
     binder_callback_.Run(std::move(request));
   }
   void GetAudioContextManager(
-      blink::mojom::AudioContextManagerRequest) override {}
+      mojo::PendingReceiver<blink::mojom::AudioContextManager>) override {}
   void GetCredentialManager(
-      blink::mojom::CredentialManagerRequest request) override {}
+      mojo::PendingReceiver<blink::mojom::CredentialManager>) override {}
   void GetAuthenticator(blink::mojom::AuthenticatorRequest request) override {}
   void GetPushMessaging(
       mojo::PendingReceiver<blink::mojom::PushMessaging> receiver) override {}
   void GetVirtualAuthenticatorManager(
-      blink::test::mojom::VirtualAuthenticatorManagerRequest request) override {
-  }
+      mojo::PendingReceiver<blink::test::mojom::VirtualAuthenticatorManager>
+          receiver) override {}
   void RegisterAppCacheHost(blink::mojom::AppCacheHostRequest host_request,
                             blink::mojom::AppCacheFrontendPtr frontend,
                             const base::UnguessableToken& id) override {}
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index 33fb2c1b..d3a8ccf0 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -172,12 +172,13 @@
 RenderFrameProxy* RenderFrameProxy::CreateProxyForPortal(
     RenderFrameImpl* parent,
     int proxy_routing_id,
-    const base::UnguessableToken& devtools_frame_token) {
+    const base::UnguessableToken& devtools_frame_token,
+    const blink::WebElement& portal_element) {
   std::unique_ptr<RenderFrameProxy> proxy(
       new RenderFrameProxy(proxy_routing_id));
   proxy->devtools_frame_token_ = devtools_frame_token;
-  blink::WebRemoteFrame* web_frame = blink::WebRemoteFrame::Create(
-      blink::WebTreeScopeType::kDocument, proxy.get());
+  blink::WebRemoteFrame* web_frame = blink::WebRemoteFrame::CreateForPortal(
+      blink::WebTreeScopeType::kDocument, proxy.get(), portal_element);
   proxy->Init(web_frame, parent->render_view(),
               parent->GetLocalRootRenderWidget(), true);
   return proxy.release();
diff --git a/content/renderer/render_frame_proxy.h b/content/renderer/render_frame_proxy.h
index 52202a29..fc7ed32 100644
--- a/content/renderer/render_frame_proxy.h
+++ b/content/renderer/render_frame_proxy.h
@@ -106,7 +106,8 @@
   static RenderFrameProxy* CreateProxyForPortal(
       RenderFrameImpl* parent,
       int proxy_routing_id,
-      const base::UnguessableToken& devtools_frame_token);
+      const base::UnguessableToken& devtools_frame_token,
+      const blink::WebElement& portal_element);
 
   // Returns the RenderFrameProxy for the given routing ID.
   static RenderFrameProxy* FromRoutingID(int routing_id);
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index b37f47d..ea00545 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -23,6 +23,7 @@
 #include "base/metrics/field_trial.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/metrics/histogram_macros_local.h"
 #include "base/path_service.h"
 #include "base/process/process_metrics.h"
 #include "base/run_loop.h"
@@ -2102,7 +2103,7 @@
     base::TimeDelta http_rtt,
     base::TimeDelta transport_rtt,
     double downlink_throughput_kbps) {
-  UMA_HISTOGRAM_BOOLEAN("NQE.RenderThreadNotified", true);
+  LOCAL_HISTOGRAM_BOOLEAN("NQE.RenderThreadNotified", true);
   WebNetworkStateNotifier::SetNetworkQuality(
       EffectiveConnectionTypeToWebEffectiveConnectionType(type), http_rtt,
       transport_rtt, downlink_throughput_kbps);
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index c1dea93..7ff43ed9 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -3664,9 +3664,9 @@
 }
 
 void RenderWidget::SetupWidgetInputHandler(
-    mojom::WidgetInputHandlerRequest request,
-    mojom::WidgetInputHandlerHostPtr host) {
-  widget_input_handler_manager_->AddInterface(std::move(request),
+    mojo::PendingReceiver<mojom::WidgetInputHandler> receiver,
+    mojo::PendingRemote<mojom::WidgetInputHandlerHost> host) {
+  widget_input_handler_manager_->AddInterface(std::move(receiver),
                                               std::move(host));
 }
 
diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h
index 9be865f..f230403 100644
--- a/content/renderer/render_widget.h
+++ b/content/renderer/render_widget.h
@@ -595,8 +595,9 @@
                                          gfx::PointF* local_point);
 
   // Widget mojom overrides.
-  void SetupWidgetInputHandler(mojom::WidgetInputHandlerRequest request,
-                               mojom::WidgetInputHandlerHostPtr host) override;
+  void SetupWidgetInputHandler(
+      mojo::PendingReceiver<mojom::WidgetInputHandler> receiver,
+      mojo::PendingRemote<mojom::WidgetInputHandlerHost> host) override;
 
   scoped_refptr<MainThreadEventQueue> GetInputEventQueue();
 
diff --git a/content/renderer/render_widget_unittest.cc b/content/renderer/render_widget_unittest.cc
index 005fcf29..c687bbb 100644
--- a/content/renderer/render_widget_unittest.cc
+++ b/content/renderer/render_widget_unittest.cc
@@ -89,9 +89,7 @@
 
 class MockWidgetInputHandlerHost : public mojom::WidgetInputHandlerHost {
  public:
-  MockWidgetInputHandlerHost(
-      mojo::InterfaceRequest<mojom::WidgetInputHandlerHost> request)
-      : binding_(this, std::move(request)) {}
+  MockWidgetInputHandlerHost() {}
 #if defined(OS_ANDROID)
   MOCK_METHOD4(FallbackCursorModeLockCursor, void(bool, bool, bool, bool));
 
@@ -116,8 +114,13 @@
 
   MOCK_METHOD1(SetMouseCapture, void(bool));
 
+  mojo::PendingRemote<mojom::WidgetInputHandlerHost>
+  BindNewPipeAndPassRemote() {
+    return receiver_.BindNewPipeAndPassRemote();
+  }
+
  private:
-  mojo::Binding<mojom::WidgetInputHandlerHost> binding_;
+  mojo::Receiver<mojom::WidgetInputHandlerHost> receiver_{this};
 
   DISALLOW_COPY_AND_ASSIGN(MockWidgetInputHandlerHost);
 };
@@ -191,12 +194,11 @@
         always_overscroll_(false) {
     InitForPopup(base::NullCallback(), &mock_page_popup_);
 
-    mojom::WidgetInputHandlerHostPtr widget_input_handler;
-    mock_input_handler_host_ = std::make_unique<MockWidgetInputHandlerHost>(
-        mojo::MakeRequest(&widget_input_handler));
+    mock_input_handler_host_ = std::make_unique<MockWidgetInputHandlerHost>();
 
     widget_input_handler_manager_->AddInterface(
-        nullptr, std::move(widget_input_handler));
+        mojo::PendingReceiver<mojom::WidgetInputHandler>(),
+        mock_input_handler_host_->BindNewPipeAndPassRemote());
   }
 
   void SendInputEvent(const blink::WebInputEvent& event,
diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn
index bb3b556..b0c5696 100644
--- a/content/shell/BUILD.gn
+++ b/content/shell/BUILD.gn
@@ -304,6 +304,7 @@
     "//content/shell/test_runner:test_runner",
     "//content/test:content_test_mojo_bindings",
     "//content/test:mojo_web_test_bindings",
+    "//content/test:mojo_web_test_old_names_bindings",
     "//content/test:test_support",
     "//content/test:web_test_support",
     "//device/bluetooth",
diff --git a/content/shell/test_runner/mock_content_settings_client.cc b/content/shell/test_runner/mock_content_settings_client.cc
index 1fd0d98..c45ecbb 100644
--- a/content/shell/test_runner/mock_content_settings_client.cc
+++ b/content/shell/test_runner/mock_content_settings_client.cc
@@ -4,6 +4,7 @@
 
 #include "content/shell/test_runner/mock_content_settings_client.h"
 
+#include "content/public/common/origin_util.h"
 #include "content/shell/test_runner/test_common.h"
 #include "content/shell/test_runner/web_test_delegate.h"
 #include "content/shell/test_runner/web_test_runtime_flags.h"
@@ -65,4 +66,36 @@
   delegate_ = delegate;
 }
 
+void MockContentSettingsClient::PersistClientHints(
+    const blink::WebEnabledClientHints& enabled_client_hints,
+    base::TimeDelta duration,
+    const blink::WebURL& url) {
+  const url::Origin origin = url::Origin::Create(url);
+  if (!content::IsOriginSecure(url))
+    return;
+  if (duration <= base::TimeDelta())
+    return;
+  ClientHintsPersistencyData data;
+  data.expiration = base::Time::Now() + duration;
+  data.client_hints = enabled_client_hints;
+  client_hints_map_[origin] = data;
+}
+
+void MockContentSettingsClient::GetAllowedClientHintsFromSource(
+    const blink::WebURL& url,
+    blink::WebEnabledClientHints* client_hints) const {
+  const url::Origin origin = url::Origin::Create(url);
+  const auto& it = client_hints_map_.find(origin);
+
+  DCHECK(client_hints);
+  if (it != client_hints_map_.end() &&
+      it->second.expiration >= base::Time::Now()) {
+    *client_hints = it->second.client_hints;
+  }
+}
+
+void MockContentSettingsClient::ResetClientHintsPersistencyData() {
+  client_hints_map_.clear();
+}
+
 }  // namespace test_runner
diff --git a/content/shell/test_runner/mock_content_settings_client.h b/content/shell/test_runner/mock_content_settings_client.h
index 0f8e3e17..ccd2200 100644
--- a/content/shell/test_runner/mock_content_settings_client.h
+++ b/content/shell/test_runner/mock_content_settings_client.h
@@ -5,8 +5,13 @@
 #ifndef CONTENT_SHELL_TEST_RUNNER_MOCK_CONTENT_SETTINGS_CLIENT_H_
 #define CONTENT_SHELL_TEST_RUNNER_MOCK_CONTENT_SETTINGS_CLIENT_H_
 
+#include <map>
+
 #include "base/macros.h"
+#include "base/time/time.h"
+#include "third_party/blink/public/platform/web_client_hints_type.h"
 #include "third_party/blink/public/platform/web_content_settings_client.h"
+#include "url/origin.h"
 
 namespace test_runner {
 
@@ -32,14 +37,30 @@
                                    const blink::WebSecurityOrigin& context,
                                    const blink::WebURL& url) override;
   bool AllowAutoplay(bool default_value) override;
+  void PersistClientHints(
+      const blink::WebEnabledClientHints& enabled_client_hints,
+      base::TimeDelta duration,
+      const blink::WebURL& url) override;
+  void GetAllowedClientHintsFromSource(
+      const blink::WebURL& url,
+      blink::WebEnabledClientHints* client_hints) const override;
 
   void SetDelegate(WebTestDelegate* delegate);
 
+  void ResetClientHintsPersistencyData();
+
  private:
   WebTestDelegate* delegate_;
 
   WebTestRuntimeFlags* flags_;
 
+  struct ClientHintsPersistencyData {
+    blink::WebEnabledClientHints client_hints;
+    base::Time expiration;
+  };
+
+  std::map<const url::Origin, ClientHintsPersistencyData> client_hints_map_;
+
   DISALLOW_COPY_AND_ASSIGN(MockContentSettingsClient);
 };
 
diff --git a/content/shell/test_runner/test_runner.cc b/content/shell/test_runner/test_runner.cc
index 773544d..de91134f 100644
--- a/content/shell/test_runner/test_runner.cc
+++ b/content/shell/test_runner/test_runner.cc
@@ -1528,6 +1528,7 @@
   loading_frames_.clear();
   web_test_runtime_flags_.Reset();
   mock_screen_orientation_client_->ResetData();
+  mock_content_settings_client_->ResetClientHintsPersistencyData();
   drag_image_.reset();
 
   blink::WebSecurityPolicy::ClearOriginAccessList();
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index a1df61d..226f93b 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -640,11 +640,43 @@
   ]
 }
 
+mojom("mojo_web_test_helper_test") {
+  testonly = true
+  sources = [
+    "data/mojo_web_test_helper_test.mojom",
+  ]
+
+  # This mojom interface is exposed publicly to web tests which use
+  # prepackaged redistributable JS bindings. It is therefore not desirable to
+  # scramble these messages.
+  scramble_message_ids = false
+}
+
 mojom("mojo_web_test_bindings") {
   testonly = true
   sources = [
     "data/lite_js_test.mojom",
-    "data/mojo_web_test_helper_test.mojom",
+  ]
+
+  public_deps = [
+    ":mojo_web_test_helper_test",
+  ]
+
+  # This mojom interface is exposed publicly to web tests which use
+  # prepackaged redistributable JS bindings. It is therefore not desirable to
+  # scramble these messages.
+  scramble_message_ids = false
+  use_old_js_lite_bindings_names = false
+}
+
+mojom("mojo_web_test_old_names_bindings") {
+  testonly = true
+  sources = [
+    "data/lite_js_old_names_test.mojom",
+  ]
+
+  public_deps = [
+    ":mojo_web_test_helper_test",
   ]
 
   # This mojom interface is exposed publicly to web tests which use
@@ -1874,10 +1906,6 @@
     "../renderer/media/stream/media_stream_audio_processor_unittest.cc",
     "../renderer/media/stream/media_stream_constraints_util_audio_unittest.cc",
     "../renderer/media/stream/media_stream_device_observer_unittest.cc",
-    "../renderer/media/stream/media_stream_video_source_unittest.cc",
-    "../renderer/media/stream/media_stream_video_track_unittest.cc",
-    "../renderer/media/stream/mock_media_stream_video_sink.cc",
-    "../renderer/media/stream/mock_media_stream_video_sink.h",
     "../renderer/media/stream/processed_local_audio_source_unittest.cc",
     "../renderer/media/stream/user_media_client_impl_unittest.cc",
     "../renderer/media/stream/webmediaplayer_ms_unittest.cc",
diff --git a/content/test/data/accessibility/aria/hidden-described-by-expected-blink.txt b/content/test/data/accessibility/aria/hidden-described-by-expected-blink.txt
deleted file mode 100644
index 035d2fd5..0000000
--- a/content/test/data/accessibility/aria/hidden-described-by-expected-blink.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-rootWebArea
-++genericContainer ignored
-++++genericContainer ignored
-++++++genericContainer ignored name='span-A1'
-++++++++staticText ignored
-++++++++genericContainer ignored name='span-A2'
-++++++++staticText ignored
-++++++++genericContainer description='span-A4' name='span-A3' descriptionFrom=relatedElement describedbyIds=genericContainer
-++++++++++genericContainer ignored name='span-A4'
-++++++++staticText ignored
-++++++genericContainer description='span-A2' name='span-B' descriptionFrom=relatedElement describedbyIds=genericContainer
-++++++genericContainer name='span-C'
diff --git a/content/test/data/accessibility/aria/hidden-described-by-expected-uia-win.txt b/content/test/data/accessibility/aria/hidden-described-by-expected-uia-win.txt
deleted file mode 100644
index 9d3a6a6..0000000
--- a/content/test/data/accessibility/aria/hidden-described-by-expected-uia-win.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-document
-++group Name='span-A3' DescribedBy='span-A4'
-++group Name='span-B' DescribedBy='span-A2'
-++group Name='span-C'
diff --git a/content/test/data/accessibility/aria/hidden-described-by-expected-win.txt b/content/test/data/accessibility/aria/hidden-described-by-expected-win.txt
deleted file mode 100644
index 6e77a04..0000000
--- a/content/test/data/accessibility/aria/hidden-described-by-expected-win.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
-++IA2_ROLE_SECTION name='span-A3' description='span-A4'
-++IA2_ROLE_SECTION name='span-B' description='span-A2'
-++IA2_ROLE_SECTION name='span-C'
diff --git a/content/test/data/accessibility/aria/hidden-described-by.html b/content/test/data/accessibility/aria/hidden-described-by.html
deleted file mode 100644
index 9fd3f8b..0000000
--- a/content/test/data/accessibility/aria/hidden-described-by.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-@UIA-WIN-ALLOW:Descr*
-@BLINK-ALLOW:descr*
-@WIN-ALLOW:descr*
--->
-<!DOCTYPE html>
-<html>
-<style>
-  .hide {
-    visibility: hidden;
-  }
-  .visible {
-    visibility: visible;
-  }
-</style>
-<body>
-  <div>
-    <span class="hide" aria-label="span-A1">
-      <span aria-label="span-A2" id="a2"></span>
-      <span class="visible" aria-label="span-A3" aria-describedby="a4">
-        <span class="hide" aria-label="span-A4" id="a4"></span>
-      </span>
-    </span>
-
-    <span aria-label="span-B" aria-describedby="a2"></span>
-    <span aria-label="span-C"></span>
-  </div>
-</body>
-</html>
diff --git a/content/test/data/accessibility/aria/hidden-expected-blink.txt b/content/test/data/accessibility/aria/hidden-expected-blink.txt
deleted file mode 100644
index 20e0cec1..0000000
--- a/content/test/data/accessibility/aria/hidden-expected-blink.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-rootWebArea
-++genericContainer ignored
-++++genericContainer ignored
-++++++genericContainer ignored name='a1'
-++++++++staticText ignored
-++++++++genericContainer ignored name='a2'
-++++++++staticText ignored
-++++++genericContainer name='b'
-++++++genericContainer name='c'
diff --git a/content/test/data/accessibility/aria/hidden-expected-uia-win.txt b/content/test/data/accessibility/aria/hidden-expected-uia-win.txt
deleted file mode 100644
index ef2fe77..0000000
--- a/content/test/data/accessibility/aria/hidden-expected-uia-win.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-document
-++group Name='b'
-++group Name='c'
diff --git a/content/test/data/accessibility/aria/hidden-expected-win.txt b/content/test/data/accessibility/aria/hidden-expected-win.txt
deleted file mode 100644
index 1d262c97..0000000
--- a/content/test/data/accessibility/aria/hidden-expected-win.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
-++IA2_ROLE_SECTION name='b'
-++IA2_ROLE_SECTION name='c'
diff --git a/content/test/data/accessibility/aria/hidden-labelled-by-expected-blink.txt b/content/test/data/accessibility/aria/hidden-labelled-by-expected-blink.txt
deleted file mode 100644
index 3164933d..0000000
--- a/content/test/data/accessibility/aria/hidden-labelled-by-expected-blink.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-rootWebArea
-++genericContainer ignored
-++++genericContainer ignored
-++++++genericContainer ignored name='span-A1'
-++++++genericContainer name='span-A2'
-++++++genericContainer name='span-A4' labelledbyIds=genericContainer
-++++++++genericContainer ignored name='span-A4'
-++++++genericContainer name='span-A2' labelledbyIds=genericContainer
-++++++genericContainer name='span-C'
diff --git a/content/test/data/accessibility/aria/hidden-labelled-by-expected-uia-win.txt b/content/test/data/accessibility/aria/hidden-labelled-by-expected-uia-win.txt
deleted file mode 100644
index f21bba3..0000000
--- a/content/test/data/accessibility/aria/hidden-labelled-by-expected-uia-win.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-document
-++group Name='span-A2'
-++group Name='span-A4' LabeledBy='span-A4'
-++group Name='span-A2' LabeledBy='span-A2'
-++group Name='span-C'
diff --git a/content/test/data/accessibility/aria/hidden-labelled-by-expected-win.txt b/content/test/data/accessibility/aria/hidden-labelled-by-expected-win.txt
deleted file mode 100644
index 54cba32..0000000
--- a/content/test/data/accessibility/aria/hidden-labelled-by-expected-win.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
-++IA2_ROLE_SECTION name='span-A2'
-++IA2_ROLE_SECTION name='span-A4'
-++IA2_ROLE_SECTION name='span-A2'
-++IA2_ROLE_SECTION name='span-C'
diff --git a/content/test/data/accessibility/aria/hidden-labelled-by.html b/content/test/data/accessibility/aria/hidden-labelled-by.html
deleted file mode 100644
index 15b6380..0000000
--- a/content/test/data/accessibility/aria/hidden-labelled-by.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-@UIA-WIN-ALLOW:Label*
-@BLINK-ALLOW:label*
-@WIN-ALLOW:label*
--->
-<!DOCTYPE html>
-<html>
-<style>
-  .hide {
-    visibility: hidden;
-  }
-  .visible {
-    visibility: visible;
-  }
-</style>
-<body>
-  <div>
-    <span class="hide" aria-label="span-A1"></span>
-      <span aria-label="span-A2" id="a2"></span>
-      <span class="visible" aria-label="span-A3" aria-labelledby="a4">
-        <span class="hide" aria-label="span-A4" id="a4"></span>
-      </span>
-    </span>
-
-    <span aria-label="span-B" aria-labeledby="a2"></span>
-    <span aria-label="span-C"></span>
-  </div>
-</body>
-</html>
diff --git a/content/test/data/accessibility/aria/hidden.html b/content/test/data/accessibility/aria/hidden.html
deleted file mode 100644
index 4d8f972..0000000
--- a/content/test/data/accessibility/aria/hidden.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<html>
-<style>
-  .hide {
-    visibility: hidden;
-  }
-</style>
-<body>
-  <div>
-    <span class="hide" aria-label="a1">
-      <span aria-label="a2"></span>
-    </span>
-
-    <span aria-label="b"></span>
-    <span aria-label="c"></span>
-  </div>
-</body>
-</html>
diff --git a/content/test/data/accessibility/event/aria-combo-box-delay-add-list-expected-uia-win.txt b/content/test/data/accessibility/event/aria-combo-box-delay-add-list-expected-uia-win.txt
index f0904f5..d056dfb3 100644
--- a/content/test/data/accessibility/event/aria-combo-box-delay-add-list-expected-uia-win.txt
+++ b/content/test/data/accessibility/event/aria-combo-box-delay-add-list-expected-uia-win.txt
@@ -1 +1,3 @@
 AutomationFocusChanged on role=option, name=Apple
+ControllerFor changed on role=combobox
+Text_TextChanged on role=document
diff --git a/content/test/data/accessibility/event/css-visibility-expected-win.txt b/content/test/data/accessibility/event/css-visibility-expected-win.txt
index d04c621..a267f80 100644
--- a/content/test/data/accessibility/event/css-visibility-expected-win.txt
+++ b/content/test/data/accessibility/event/css-visibility-expected-win.txt
@@ -1,4 +1,4 @@
-EVENT_OBJECT_HIDE on <div.a> role=DIV name="Heading" level=2
+EVENT_OBJECT_HIDE on <div.a> role=DIV level=2
 EVENT_OBJECT_REORDER on <div> role=ROLE_SYSTEM_TOOLBAR IA2_STATE_HORIZONTAL
 EVENT_OBJECT_SHOW on <div.b> role=ROLE_SYSTEM_GROUPING name="Banner"
 IA2_EVENT_TEXT_INSERTED on <div> role=ROLE_SYSTEM_TOOLBAR IA2_STATE_HORIZONTAL new_text={'<obj>' start=0 end=1}
diff --git a/content/test/data/accessibility/hit_testing/hit_testing_a.html b/content/test/data/accessibility/hit_testing/hit_testing_a.html
new file mode 100644
index 0000000..f984d7b
--- /dev/null
+++ b/content/test/data/accessibility/hit_testing/hit_testing_a.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+body {
+  overflow: hidden;
+}
+iframe {
+  border: 0;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+div {
+  width: 300px;
+  height: 150px;
+}
+</style>
+</head>
+<body style="margin: 0; padding: 0;">
+
+<div>
+  <button style="margin: 25px; border: 0; width: 250px; height: 50px">
+    Button A
+  </button>
+</div>
+
+<div style="width: 300px; height: 400px">
+  <iframe id="frame_a" style="width: 300px; height: 400px;"
+          scrolling="no"></iframe>
+</div>
+
+</body>
+</html>
diff --git a/content/test/data/accessibility/hit_testing/hit_testing_b.html b/content/test/data/accessibility/hit_testing/hit_testing_b.html
new file mode 100644
index 0000000..09324836
--- /dev/null
+++ b/content/test/data/accessibility/hit_testing/hit_testing_b.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+body {
+  overflow: hidden;
+}
+iframe {
+  border: 0;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+div {
+  width: 300px;
+  height: 150px;
+}
+</style>
+</head>
+<body style="margin: 0; padding: 0;">
+
+<div>
+  <button style="margin: 25px; border: 0; width: 250px; height: 50px">
+    Button B
+  </button>
+</div>
+
+<div>
+  <iframe id="frame_b" style="width: 300px; height: 300px;"
+          scrolling="no"></iframe>
+</div>
+
+</body>
+</html>
diff --git a/content/test/data/accessibility/hit_testing/hit_testing_b_tall.html b/content/test/data/accessibility/hit_testing/hit_testing_b_tall.html
new file mode 100644
index 0000000..9e2d39e
--- /dev/null
+++ b/content/test/data/accessibility/hit_testing/hit_testing_b_tall.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+body {
+  overflow: hidden;
+}
+iframe {
+  border: 0;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+div {
+  width: 300px;
+  height: 150px;
+}
+div.placeholder {
+  height: 300px;
+  color: Red;
+}
+</style>
+</head>
+<body style="margin: 0; padding: 0;" bgcolor=Green>
+
+<div class="placeholder">Placeholder 1</div>
+
+<div>
+  <button style="margin: 25px; border: 0; width: 250px; height: 50px">
+    Button B
+  </button>
+</div>
+
+<div class="placeholder">Placeholder 2</div>
+
+<div>
+  <iframe id="frame_b" style="width: 300px; height: 300px;"
+          scrolling="no"></iframe>
+</div>
+
+</body>
+</html>
diff --git a/content/test/data/accessibility/hit_testing/hit_testing_c.html b/content/test/data/accessibility/hit_testing/hit_testing_c.html
new file mode 100644
index 0000000..ccef1845
--- /dev/null
+++ b/content/test/data/accessibility/hit_testing/hit_testing_c.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+body {
+  overflow: hidden;
+}
+iframe {
+  border: 0;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+div {
+  width: 300px;
+  height: 150px;
+}
+</style>
+</head>
+<body style="margin: 0; padding: 0;">
+
+<div>
+  <button style="margin: 25px; border: 0; width: 250px; height: 50px">
+    Button C
+  </button>
+</div>
+
+</body>
+</html>
diff --git a/content/test/data/lite_js_old_names_test.mojom b/content/test/data/lite_js_old_names_test.mojom
new file mode 100644
index 0000000..b1df7ae
--- /dev/null
+++ b/content/test/data/lite_js_old_names_test.mojom
@@ -0,0 +1,47 @@
+// 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.
+
+module lite_js_old_names_test.mojom;
+
+// Copy of lite_js_test.mojom that can be used in a separate target with a
+// different value for "use_old_js_lite_bindings_names".
+
+struct TestStruct {
+  int32 x;
+  const bool isValid = false;
+};
+
+union TestUnion {
+  int32 x;
+  TestStruct s;
+};
+
+// An interface whose definition covers various types of message signatures in
+// order to exercise the lite JS mojom bindings.
+interface TestMessageTarget {
+  // Zero arguments, no reply.
+  Poke();
+
+  // Zero-argument request, zero-argument reply.
+  Ping() => ();
+
+  // Request and reply both with arguments.
+  Repeat(string? message, array<int32>? numbers)
+      => (string? message, array<int32>? numbers);
+
+  Flatten(array<TestStruct> values) => (array<int32> values);
+  FlattenUnions(array<TestUnion> unions) => (array<int32> x, array<int32> s);
+
+  RequestSubinterface(Subinterface& request, SubinterfaceClient client);
+};
+
+interface Subinterface {
+  Push(int32 value);
+  Flush();
+};
+
+interface SubinterfaceClient {
+  DidFlush(array<int32> values);
+};
+
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
index dadd5b8..05e0228 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
@@ -453,12 +453,12 @@
 crbug.com/352645 [ android android-webview-instrumentation no-angle ] conformance/textures/misc/texture-npot-video.html [ Skip ]
 
 # These video tests appear to be flaky.
-crbug.com/907512 [ android release no-angle ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ RetryOnFailure ]
-crbug.com/733599 [ android no-angle ] conformance/textures/video/tex-2d-alpha-alpha-unsigned_byte.html [ RetryOnFailure ]
+crbug.com/907512 [ android release ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ RetryOnFailure ]
+crbug.com/733599 [ android ] conformance/textures/video/tex-2d-alpha-alpha-unsigned_byte.html [ RetryOnFailure ]
 crbug.com/733599 [ android no-angle ] conformance/textures/video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ RetryOnFailure ]
 crbug.com/733599 [ android no-angle ] conformance/textures/video/tex-2d-luminance-luminance-unsigned_byte.html [ RetryOnFailure ]
-crbug.com/834933 [ android android-chromium no-angle ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html [ RetryOnFailure ]
-crbug.com/834933 [ android android-chromium no-angle ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html [ RetryOnFailure ]
+crbug.com/834933 [ android android-chromium ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html [ RetryOnFailure ]
+crbug.com/834933 [ android android-chromium ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html [ RetryOnFailure ]
 
 # This crashes in Android WebView on the Nexus 6, preventing the
 # suite from running further. Rather than add multiple
@@ -514,11 +514,12 @@
 crbug.com/793050 [ android qualcomm-adreno-(tm)-418 ] conformance/ogles/GL/cos/cos_001_to_006.html [ RetryOnFailure ]
 crbug.com/818041 [ android qualcomm-adreno-(tm)-418 ] conformance/ogles/GL/dot/dot_001_to_006.html [ RetryOnFailure ]
 crbug.com/793050 [ android qualcomm-adreno-(tm)-418 ] conformance/ogles/GL/swizzlers/swizzlers_041_to_048.html [ RetryOnFailure ]
-crbug.com/818041 [ android qualcomm-adreno-(tm)-418 no-angle ] conformance/textures/image_bitmap_from_video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ RetryOnFailure ]
-crbug.com/793050 [ android qualcomm-adreno-(tm)-418 no-angle ] conformance/textures/image_bitmap_from_video/tex-2d-luminance-luminance-unsigned_byte.html [ RetryOnFailure ]
-crbug.com/716496 [ android qualcomm-adreno-(tm)-418 no-angle ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html [ RetryOnFailure ]
-crbug.com/965387 [ android qualcomm-adreno-(tm)-418 no-angle ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ RetryOnFailure ]
-crbug.com/934545 [ android android-chromium qualcomm-adreno-(tm)-418 no-angle ] conformance/textures/misc/texture-npot-video.html [ RetryOnFailure ]
+crbug.com/818041 [ android qualcomm-adreno-(tm)-418 ] conformance/textures/image_bitmap_from_video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ RetryOnFailure ]
+crbug.com/793050 [ android qualcomm-adreno-(tm)-418 ] conformance/textures/image_bitmap_from_video/tex-2d-luminance-luminance-unsigned_byte.html [ RetryOnFailure ]
+crbug.com/716496 [ android qualcomm-adreno-(tm)-418 ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html [ RetryOnFailure ]
+crbug.com/965387 [ android qualcomm-adreno-(tm)-418 ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ RetryOnFailure ]
+crbug.com/891456 [ android qualcomm-adreno-(tm)-418 ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_byte.html [ RetryOnFailure ]
+crbug.com/934545 [ android android-chromium qualcomm-adreno-(tm)-418 ] conformance/textures/misc/texture-npot-video.html [ RetryOnFailure ]
 crbug.com/610951 [ android qualcomm-adreno-(tm)-418 ] conformance/uniforms/uniform-samplers-test.html [ Skip ]
 crbug.com/610951 [ android qualcomm-adreno-(tm)-418 ] WebglExtension_EXT_sRGB [ Failure ]
 crbug.com/914631 [ android qualcomm-adreno-(tm)-418 passthrough ] conformance/limits/gl-max-texture-dimensions.html [ RetryOnFailure ]
@@ -578,13 +579,8 @@
 crbug.com/845438 [ android ] conformance/glsl/bugs/sketchfab-lighting-shader-crash.html [ RetryOnFailure ]
 
 # Android ANGLE GLES
-# Video tests time out
-crbug.com/906724 [ android opengles ] conformance/textures/image_bitmap_from_video/* [ Skip ]
-crbug.com/906724 [ android opengles ] conformance/textures/misc/tex-video-using-tex-unit-non-zero.html [ Skip ]
-crbug.com/906724 [ android opengles ] conformance/textures/misc/texture-corner-case-videos.html [ Skip ]
-crbug.com/906724 [ android opengles ] conformance/textures/misc/texture-npot-video.html [ Skip ]
-crbug.com/906724 [ android opengles ] conformance/textures/misc/texture-upload-size.html [ Skip ]
-crbug.com/906724 [ android opengles ] conformance/textures/video/* [ Skip ]
+crbug.com/906724 [ android opengles ] conformance/textures/video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ Failure ]
+crbug.com/906724 [ android opengles ] conformance/textures/video/tex-2d-luminance-luminance-unsigned_byte.html [ Failure ]
 crbug.com/908866 [ android opengles ] conformance/extensions/oes-texture-float-with-image.html [ Failure ]
 crbug.com/908866 [ android opengles ] conformance/extensions/oes-texture-half-float-with-image.html [ Failure ]
 crbug.com/908866 [ android opengles ] conformance/textures/image/tex-2d-luminance-luminance-unsigned_byte.html [ Failure ]
diff --git a/content/test/mock_widget_impl.cc b/content/test/mock_widget_impl.cc
index 8fb9fa98..99d7411 100644
--- a/content/test/mock_widget_impl.cc
+++ b/content/test/mock_widget_impl.cc
@@ -6,15 +6,15 @@
 
 namespace content {
 
-MockWidgetImpl::MockWidgetImpl(mojo::InterfaceRequest<mojom::Widget> request)
-    : binding_(this, std::move(request)) {}
+MockWidgetImpl::MockWidgetImpl(mojo::PendingReceiver<mojom::Widget> request)
+    : receiver_(this, std::move(request)) {}
 
 MockWidgetImpl::~MockWidgetImpl() {}
 
 void MockWidgetImpl::SetupWidgetInputHandler(
-    mojom::WidgetInputHandlerRequest request,
-    mojom::WidgetInputHandlerHostPtr host) {
-  input_handler_ = std::make_unique<MockWidgetInputHandler>(std::move(request),
+    mojo::PendingReceiver<mojom::WidgetInputHandler> receiver,
+    mojo::PendingRemote<mojom::WidgetInputHandlerHost> host) {
+  input_handler_ = std::make_unique<MockWidgetInputHandler>(std::move(receiver),
                                                             std::move(host));
 }
 
diff --git a/content/test/mock_widget_impl.h b/content/test/mock_widget_impl.h
index a476378..94c19df 100644
--- a/content/test/mock_widget_impl.h
+++ b/content/test/mock_widget_impl.h
@@ -7,23 +7,24 @@
 
 #include "content/common/widget.mojom.h"
 #include "content/test/mock_widget_input_handler.h"
-#include "mojo/public/cpp/bindings/binding.h"
-#include "mojo/public/cpp/bindings/interface_request.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 
 namespace content {
 
 class MockWidgetImpl : public mojom::Widget {
  public:
-  explicit MockWidgetImpl(mojo::InterfaceRequest<mojom::Widget> request);
+  explicit MockWidgetImpl(mojo::PendingReceiver<mojom::Widget> receiver);
   ~MockWidgetImpl() override;
 
-  void SetupWidgetInputHandler(mojom::WidgetInputHandlerRequest request,
-                               mojom::WidgetInputHandlerHostPtr host) override;
+  void SetupWidgetInputHandler(
+      mojo::PendingReceiver<mojom::WidgetInputHandler> receiver,
+      mojo::PendingRemote<mojom::WidgetInputHandlerHost> host) override;
 
   MockWidgetInputHandler* input_handler() { return input_handler_.get(); }
 
  private:
-  mojo::Binding<mojom::Widget> binding_;
+  mojo::Receiver<mojom::Widget> receiver_;
   std::unique_ptr<MockWidgetInputHandler> input_handler_;
 
   DISALLOW_COPY_AND_ASSIGN(MockWidgetImpl);
diff --git a/content/test/mock_widget_input_handler.cc b/content/test/mock_widget_input_handler.cc
index d93d862..5a7d949d 100644
--- a/content/test/mock_widget_input_handler.cc
+++ b/content/test/mock_widget_input_handler.cc
@@ -17,18 +17,18 @@
 
 namespace content {
 
-MockWidgetInputHandler::MockWidgetInputHandler() : binding_(this) {}
+MockWidgetInputHandler::MockWidgetInputHandler() = default;
 
 MockWidgetInputHandler::MockWidgetInputHandler(
-    mojom::WidgetInputHandlerRequest request,
-    mojom::WidgetInputHandlerHostPtr host)
-    : binding_(this, std::move(request)), host_(std::move(host)) {}
+    mojo::PendingReceiver<mojom::WidgetInputHandler> receiver,
+    mojo::PendingRemote<mojom::WidgetInputHandlerHost> host)
+    : receiver_(this, std::move(receiver)), host_(std::move(host)) {}
 
 MockWidgetInputHandler::~MockWidgetInputHandler() {
   // We explicitly close the binding before the tearing down the vector of
   // messages, as some of them may spin a RunLoop on destruction and we don't
   // want to accept more messages beyond this point.
-  binding_.Close();
+  receiver_.reset();
 }
 
 void MockWidgetInputHandler::SetFocus(bool focused) {
@@ -122,9 +122,10 @@
 }
 
 void MockWidgetInputHandler::AttachSynchronousCompositor(
-    mojom::SynchronousCompositorControlHostPtr control_host,
-    mojom::SynchronousCompositorHostAssociatedPtrInfo host,
-    mojom::SynchronousCompositorAssociatedRequest compositor_request) {}
+    mojo::PendingRemote<mojom::SynchronousCompositorControlHost> control_host,
+    mojo::PendingAssociatedRemote<mojom::SynchronousCompositorHost> host,
+    mojo::PendingAssociatedReceiver<mojom::SynchronousCompositor>
+        compositor_request) {}
 
 MockWidgetInputHandler::DispatchedMessage::DispatchedMessage(
     const std::string& name)
diff --git a/content/test/mock_widget_input_handler.h b/content/test/mock_widget_input_handler.h
index 509484b..30fae49 100644
--- a/content/test/mock_widget_input_handler.h
+++ b/content/test/mock_widget_input_handler.h
@@ -11,15 +11,17 @@
 #include <utility>
 
 #include "content/common/input/input_handler.mojom.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
 
 namespace content {
 
 class MockWidgetInputHandler : public mojom::WidgetInputHandler {
  public:
   MockWidgetInputHandler();
-  MockWidgetInputHandler(mojom::WidgetInputHandlerRequest request,
-                         mojom::WidgetInputHandlerHostPtr host);
+  MockWidgetInputHandler(
+      mojo::PendingReceiver<mojom::WidgetInputHandler> receiver,
+      mojo::PendingRemote<mojom::WidgetInputHandlerHost> host);
 
   ~MockWidgetInputHandler() override;
 
@@ -219,17 +221,17 @@
       std::unique_ptr<content::InputEvent> event) override;
   void WaitForInputProcessed(WaitForInputProcessedCallback callback) override;
   void AttachSynchronousCompositor(
-      mojom::SynchronousCompositorControlHostPtr control_host,
-      mojom::SynchronousCompositorHostAssociatedPtrInfo host,
-      mojom::SynchronousCompositorAssociatedRequest compositor_request)
-      override;
+      mojo::PendingRemote<mojom::SynchronousCompositorControlHost> control_host,
+      mojo::PendingAssociatedRemote<mojom::SynchronousCompositorHost> host,
+      mojo::PendingAssociatedReceiver<mojom::SynchronousCompositor>
+          compositor_request) override;
 
   using MessageVector = std::vector<std::unique_ptr<DispatchedMessage>>;
   MessageVector GetAndResetDispatchedMessages();
 
  private:
-  mojo::Binding<mojom::WidgetInputHandler> binding_;
-  mojom::WidgetInputHandlerHostPtr host_ = nullptr;
+  mojo::Receiver<mojom::WidgetInputHandler> receiver_{this};
+  mojo::Remote<mojom::WidgetInputHandlerHost> host_;
   MessageVector dispatched_messages_;
 
   DISALLOW_COPY_AND_ASSIGN(MockWidgetInputHandler);
diff --git a/content/test/test_render_frame.cc b/content/test/test_render_frame.cc
index fd06dac..47e3e3d5 100644
--- a/content/test/test_render_frame.cc
+++ b/content/test/test_render_frame.cc
@@ -121,7 +121,8 @@
 
   void AdoptPortal(const base::UnguessableToken&,
                    AdoptPortalCallback callback) override {
-    std::move(callback).Run(MSG_ROUTING_NONE, base::UnguessableToken());
+    std::move(callback).Run(MSG_ROUTING_NONE, FrameReplicationState(),
+                            base::UnguessableToken());
   }
 
   void IssueKeepAliveHandle(mojom::KeepAliveHandleRequest request) override {}
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc
index e421f20..61df511b 100644
--- a/content/test/test_render_frame_host.cc
+++ b/content/test/test_render_frame_host.cc
@@ -52,16 +52,17 @@
   last_created_frame_ = render_frame_host;
 }
 
-TestRenderFrameHost::TestRenderFrameHost(SiteInstance* site_instance,
-                                         RenderViewHostImpl* render_view_host,
-                                         RenderFrameHostDelegate* delegate,
-                                         FrameTree* frame_tree,
-                                         FrameTreeNode* frame_tree_node,
-                                         int32_t routing_id,
-                                         int32_t widget_routing_id,
-                                         int flags)
+TestRenderFrameHost::TestRenderFrameHost(
+    SiteInstance* site_instance,
+    scoped_refptr<RenderViewHostImpl> render_view_host,
+    RenderFrameHostDelegate* delegate,
+    FrameTree* frame_tree,
+    FrameTreeNode* frame_tree_node,
+    int32_t routing_id,
+    int32_t widget_routing_id,
+    int flags)
     : RenderFrameHostImpl(site_instance,
-                          render_view_host,
+                          std::move(render_view_host),
                           delegate,
                           frame_tree,
                           frame_tree_node,
diff --git a/content/test/test_render_frame_host.h b/content/test/test_render_frame_host.h
index 60102b45..9fa6995 100644
--- a/content/test/test_render_frame_host.h
+++ b/content/test/test_render_frame_host.h
@@ -47,7 +47,7 @@
                             public RenderFrameHostTester {
  public:
   TestRenderFrameHost(SiteInstance* site_instance,
-                      RenderViewHostImpl* render_view_host,
+                      scoped_refptr<RenderViewHostImpl> render_view_host,
                       RenderFrameHostDelegate* delegate,
                       FrameTree* frame_tree,
                       FrameTreeNode* frame_tree_node,
diff --git a/content/test/test_render_frame_host_factory.cc b/content/test/test_render_frame_host_factory.cc
index 9d4b8c9..c79d386 100644
--- a/content/test/test_render_frame_host_factory.cc
+++ b/content/test/test_render_frame_host_factory.cc
@@ -21,7 +21,7 @@
 std::unique_ptr<RenderFrameHostImpl>
 TestRenderFrameHostFactory::CreateRenderFrameHost(
     SiteInstance* site_instance,
-    RenderViewHostImpl* render_view_host,
+    scoped_refptr<RenderViewHostImpl> render_view_host,
     RenderFrameHostDelegate* delegate,
     FrameTree* frame_tree,
     FrameTreeNode* frame_tree_node,
@@ -30,8 +30,8 @@
     bool hidden,
     bool renderer_initiated_creation) {
   return std::make_unique<TestRenderFrameHost>(
-      site_instance, render_view_host, delegate, frame_tree, frame_tree_node,
-      routing_id, widget_routing_id, hidden);
+      site_instance, std::move(render_view_host), delegate, frame_tree,
+      frame_tree_node, routing_id, widget_routing_id, hidden);
 }
 
 }  // namespace content
diff --git a/content/test/test_render_frame_host_factory.h b/content/test/test_render_frame_host_factory.h
index 62a1527..ee29dfd 100644
--- a/content/test/test_render_frame_host_factory.h
+++ b/content/test/test_render_frame_host_factory.h
@@ -29,7 +29,7 @@
   // RenderFrameHostFactory implementation.
   std::unique_ptr<RenderFrameHostImpl> CreateRenderFrameHost(
       SiteInstance* site_instance,
-      RenderViewHostImpl* render_view_host,
+      scoped_refptr<RenderViewHostImpl> render_view_host,
       RenderFrameHostDelegate* delegate,
       FrameTree* frame_tree,
       FrameTreeNode* frame_tree_node,
diff --git a/content/test/test_render_view_host.h b/content/test/test_render_view_host.h
index 3c944d49..8c3788e 100644
--- a/content/test/test_render_view_host.h
+++ b/content/test/test_render_view_host.h
@@ -208,8 +208,6 @@
                      int32_t routing_id,
                      int32_t main_frame_routing_id,
                      bool swapped_out);
-  ~TestRenderViewHost() override;
-
   // RenderViewHostTester implementation.  Note that CreateRenderView
   // is not specified since it is synonymous with the one from
   // RenderViewHostImpl, see below.
@@ -257,6 +255,8 @@
  private:
   FRIEND_TEST_ALL_PREFIXES(RenderViewHostTest, FilterNavigate);
 
+  ~TestRenderViewHost() override;
+
   void SendNavigateWithTransitionAndResponseCode(const GURL& url,
                                                  ui::PageTransition transition,
                                                  int response_code);
diff --git a/extensions/browser/api/cast_channel/cast_message_util.cc b/extensions/browser/api/cast_channel/cast_message_util.cc
index d35c4ec4..8b24cc57 100644
--- a/extensions/browser/api/cast_channel/cast_message_util.cc
+++ b/extensions/browser/api/cast_channel/cast_message_util.cc
@@ -27,16 +27,17 @@
   message_proto->set_namespace_(message.namespace_);
   // Determine the type of the base::Value and set the message payload
   // appropriately.
-  std::string data;
   switch (message.data->type()) {
     // JS string
-    case base::Value::Type::STRING:
+    case base::Value::Type::STRING: {
+      std::string data;
       if (message.data->GetAsString(&data)) {
         message_proto->set_payload_type(
             ::cast_channel::CastMessage_PayloadType_STRING);
-        message_proto->set_payload_utf8(data);
+        message_proto->set_payload_utf8(std::move(data));
       }
       break;
+    }
     // JS ArrayBuffer
     case base::Value::Type::BINARY:
       message_proto->set_payload_type(
diff --git a/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc b/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
index 012548b..dac7336e 100644
--- a/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
+++ b/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
@@ -331,7 +331,7 @@
     return;
   }
 
-  Respond(OneArgument(std::make_unique<base::Value>(base64_result)));
+  Respond(OneArgument(std::make_unique<base::Value>(std::move(base64_result))));
 }
 
 void WebViewInternalCaptureVisibleRegionFunction::OnCaptureFailure(
diff --git a/extensions/browser/api/runtime/runtime_api.cc b/extensions/browser/api/runtime/runtime_api.cc
index c88b8dd5..1389f6e2 100644
--- a/extensions/browser/api/runtime/runtime_api.cc
+++ b/extensions/browser/api/runtime/runtime_api.cc
@@ -145,13 +145,6 @@
       ->DispatchEventToExtension(extension_id, std::move(event));
 }
 
-void SetUninstallURL(ExtensionPrefs* prefs,
-                     const std::string& extension_id,
-                     const std::string& url_string) {
-  prefs->UpdateExtensionPref(extension_id, kUninstallUrl,
-                             std::make_unique<base::Value>(url_string));
-}
-
 std::string GetUninstallURL(ExtensionPrefs* prefs,
                             const std::string& extension_id) {
   std::string url_string;
@@ -628,14 +621,16 @@
 }
 
 ExtensionFunction::ResponseAction RuntimeSetUninstallURLFunction::Run() {
-  std::string url_string;
-  EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url_string));
+  std::unique_ptr<api::runtime::SetUninstallURL::Params> params(
+      api::runtime::SetUninstallURL::Params::Create(*args_));
+  EXTENSION_FUNCTION_VALIDATE(params);
+  if (!params->url.empty() && !GURL(params->url).SchemeIsHTTPOrHTTPS())
+    return RespondNow(Error(kInvalidUrlError, params->url));
 
-  if (!url_string.empty() && !GURL(url_string).SchemeIsHTTPOrHTTPS()) {
-    return RespondNow(Error(kInvalidUrlError, url_string));
-  }
-  SetUninstallURL(
-      ExtensionPrefs::Get(browser_context()), extension_id(), url_string);
+  ExtensionPrefs::Get(browser_context())
+      ->UpdateExtensionPref(
+          extension_id(), kUninstallUrl,
+          std::make_unique<base::Value>(std::move(params->url)));
   return RespondNow(NoArguments());
 }
 
diff --git a/extensions/browser/api/storage/settings_test_util.cc b/extensions/browser/api/storage/settings_test_util.cc
index c9920478..afcf9b2 100644
--- a/extensions/browser/api/storage/settings_test_util.cc
+++ b/extensions/browser/api/storage/settings_test_util.cc
@@ -23,11 +23,9 @@
 
 // Creates a kilobyte of data.
 std::unique_ptr<base::Value> CreateKilobyte() {
-  std::string kilobyte_string;
-  for (int i = 0; i < 1024; ++i) {
-    kilobyte_string += "a";
-  }
-  return std::unique_ptr<base::Value>(new base::Value(kilobyte_string));
+  std::string kilobyte_string(1024u, 'a');
+  return std::unique_ptr<base::Value>(
+      new base::Value(std::move(kilobyte_string)));
 }
 
 // Creates a megabyte of data.
diff --git a/extensions/browser/extension_protocols.cc b/extensions/browser/extension_protocols.cc
index a51e6b4a..01c94f01 100644
--- a/extensions/browser/extension_protocols.cc
+++ b/extensions/browser/extension_protocols.cc
@@ -130,12 +130,7 @@
   // tolerates blocking operations.
   *file_path = resource.GetFilePath();
   *last_modified_time = GetFileLastModifiedTime(*file_path);
-  // While we're here, log the delta between extension directory
-  // creation time and the resource's last modification time.
-  base::ElapsedTimer query_timer;
   base::Time dir_creation_time = GetFileCreationTime(directory);
-  UMA_HISTOGRAM_TIMES("Extensions.ResourceDirectoryTimestampQueryLatency",
-                      query_timer.Elapsed());
   int64_t delta_seconds = (*last_modified_time - dir_creation_time).InSeconds();
   if (delta_seconds >= 0) {
     UMA_HISTOGRAM_CUSTOM_COUNTS("Extensions.ResourceLastModifiedDelta",
diff --git a/extensions/renderer/BUILD.gn b/extensions/renderer/BUILD.gn
index 9a8521d6..0ad509a 100644
--- a/extensions/renderer/BUILD.gn
+++ b/extensions/renderer/BUILD.gn
@@ -70,6 +70,7 @@
     "bindings/event_emitter.h",
     "bindings/exception_handler.cc",
     "bindings/exception_handler.h",
+    "bindings/interaction_provider.h",
     "bindings/js_runner.cc",
     "bindings/js_runner.h",
     "bindings/listener_tracker.cc",
@@ -102,8 +103,8 @@
     "extension_frame_helper.h",
     "extension_injection_host.cc",
     "extension_injection_host.h",
-    "extension_interaction.cc",
-    "extension_interaction.h",
+    "extension_interaction_provider.cc",
+    "extension_interaction_provider.h",
     "extension_js_runner.cc",
     "extension_js_runner.h",
     "extension_throttle_entry.cc",
@@ -317,6 +318,8 @@
     "bindings/api_binding_test.h",
     "bindings/api_binding_test_util.cc",
     "bindings/api_binding_test_util.h",
+    "bindings/test_interaction_provider.cc",
+    "bindings/test_interaction_provider.h",
     "bindings/test_js_runner.cc",
     "bindings/test_js_runner.h",
     "native_extension_bindings_system_test_base.cc",
diff --git a/extensions/renderer/api/automation/automation_ax_tree_wrapper.cc b/extensions/renderer/api/automation/automation_ax_tree_wrapper.cc
index 4164da91..5d9b581 100644
--- a/extensions/renderer/api/automation/automation_ax_tree_wrapper.cc
+++ b/extensions/renderer/api/automation/automation_ax_tree_wrapper.cc
@@ -5,7 +5,7 @@
 #include "base/no_destructor.h"
 #include "extensions/common/extension_messages.h"
 #include "extensions/renderer/api/automation/automation_internal_custom_bindings.h"
-#include "ui/accessibility/ax_language_info.h"
+#include "ui/accessibility/ax_language_detection.h"
 #include "ui/accessibility/ax_node.h"
 
 namespace extensions {
@@ -319,10 +319,8 @@
   for (const auto& targeted_event : event_generator_) {
     if (targeted_event.event_params.event ==
         ui::AXEventGenerator::Event::LOAD_COMPLETE) {
-      DetectLanguageForSubtree(tree_.root(), &tree_);
-      if (!LabelLanguageForSubtree(tree_.root(), &tree_))
-        LOG(FATAL) << "Language detection failed at step: Label";
-
+      tree_.language_detection_manager->DetectLanguageForSubtree(tree_.root());
+      tree_.language_detection_manager->LabelLanguageForSubtree(tree_.root());
       break;
     }
   }
diff --git a/extensions/renderer/api/automation/automation_internal_custom_bindings.cc b/extensions/renderer/api/automation/automation_internal_custom_bindings.cc
index ae98ae1..a21fe17 100644
--- a/extensions/renderer/api/automation/automation_internal_custom_bindings.cc
+++ b/extensions/renderer/api/automation/automation_internal_custom_bindings.cc
@@ -38,7 +38,7 @@
 #include "ui/accessibility/ax_enum_util.h"
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/accessibility/ax_event.h"
-#include "ui/accessibility/ax_language_info.h"
+#include "ui/accessibility/ax_language_detection.h"
 #include "ui/accessibility/ax_node.h"
 #include "ui/accessibility/ax_role_properties.h"
 #include "ui/accessibility/ax_text_utils.h"
@@ -1127,8 +1127,8 @@
           return;
         }
         std::vector<ui::AXLanguageSpan> language_annotation =
-            tree->language_info_stats->GetLanguageAnnotationForStringAttribute(
-                *node, attr);
+            tree->language_detection_manager
+                ->GetLanguageAnnotationForStringAttribute(*node, attr);
         const std::string& attribute_value = node->GetStringAttribute(attr);
         // Build array.
         v8::Local<v8::Context> context = isolate->GetCurrentContext();
diff --git a/extensions/renderer/bindings/api_binding_test_util.cc b/extensions/renderer/bindings/api_binding_test_util.cc
index 5e53c2a..073e572 100644
--- a/extensions/renderer/bindings/api_binding_test_util.cc
+++ b/extensions/renderer/bindings/api_binding_test_util.cc
@@ -45,8 +45,6 @@
   return true;
 }
 
-bool g_mock_user_activation_v2_state_ = false;
-
 }  // namespace
 
 std::string ReplaceSingleQuotes(base::StringPiece str) {
@@ -208,17 +206,4 @@
   return V8ToString(GetPropertyFromObject(object, context, key), context);
 }
 
-ScopedTestUserActivation::ScopedTestUserActivation() {
-  DCHECK(!g_mock_user_activation_v2_state_);  // Nested scopes are not allowed.
-  g_mock_user_activation_v2_state_ = true;
-}
-
-ScopedTestUserActivation::~ScopedTestUserActivation() {
-  g_mock_user_activation_v2_state_ = false;
-}
-
-bool GetTestUserActivationState(v8::Local<v8::Context>) {
-  return g_mock_user_activation_v2_state_;
-}
-
 }  // namespace extensions
diff --git a/extensions/renderer/bindings/api_binding_test_util.h b/extensions/renderer/bindings/api_binding_test_util.h
index 151b6b6..e0a7ada 100644
--- a/extensions/renderer/bindings/api_binding_test_util.h
+++ b/extensions/renderer/bindings/api_binding_test_util.h
@@ -125,17 +125,6 @@
                                         v8::Local<v8::Context> context,
                                         base::StringPiece key);
 
-// User activation mock for test: sets transient activation state on
-// construction, resets on destruction.
-class ScopedTestUserActivation {
- public:
-  ScopedTestUserActivation();
-  ~ScopedTestUserActivation();
-};
-
-// Returns current transient activation mock state.
-bool GetTestUserActivationState(v8::Local<v8::Context>);
-
 }  // extensions
 
 #endif  // EXTENSIONS_RENDERER_BINDINGS_API_BINDING_TEST_UTIL_H_
diff --git a/extensions/renderer/bindings/api_binding_unittest.cc b/extensions/renderer/bindings/api_binding_unittest.cc
index 305a5774..933bc68 100644
--- a/extensions/renderer/bindings/api_binding_unittest.cc
+++ b/extensions/renderer/bindings/api_binding_unittest.cc
@@ -21,6 +21,7 @@
 #include "extensions/renderer/bindings/api_signature.h"
 #include "extensions/renderer/bindings/api_type_reference_map.h"
 #include "extensions/renderer/bindings/binding_access_checker.h"
+#include "extensions/renderer/bindings/test_interaction_provider.h"
 #include "extensions/renderer/bindings/test_js_runner.h"
 #include "gin/arguments.h"
 #include "gin/converter.h"
@@ -125,16 +126,18 @@
       : type_refs_(APITypeReferenceMap::InitializeTypeCallback()) {}
   void SetUp() override {
     APIBindingTest::SetUp();
+    interaction_provider_ = std::make_unique<TestInteractionProvider>();
     request_handler_ = std::make_unique<APIRequestHandler>(
         base::BindRepeating(&APIBindingUnittest::OnFunctionCall,
                             base::Unretained(this)),
         APILastError(APILastError::GetParent(), binding::AddConsoleError()),
-        nullptr, base::BindRepeating(&GetTestUserActivationState));
+        nullptr, interaction_provider_.get());
   }
 
   void TearDown() override {
     DisposeAllContexts();
     access_checker_.reset();
+    interaction_provider_.reset();
     request_handler_.reset();
     event_handler_.reset();
     binding_.reset();
@@ -269,6 +272,7 @@
   std::unique_ptr<APIRequestHandler::Request> last_request_;
   std::unique_ptr<APIBinding> binding_;
   std::unique_ptr<APIEventHandler> event_handler_;
+  std::unique_ptr<TestInteractionProvider> interaction_provider_;
   std::unique_ptr<APIRequestHandler> request_handler_;
   std::unique_ptr<BindingAccessChecker> access_checker_;
   APITypeReferenceMap type_refs_;
diff --git a/extensions/renderer/bindings/api_bindings_system.cc b/extensions/renderer/bindings/api_bindings_system.cc
index 64061ff..304b969 100644
--- a/extensions/renderer/bindings/api_bindings_system.cc
+++ b/extensions/renderer/bindings/api_bindings_system.cc
@@ -9,6 +9,7 @@
 #include "extensions/renderer/bindings/api_binding_hooks.h"
 #include "extensions/renderer/bindings/api_binding_util.h"
 #include "extensions/renderer/bindings/api_response_validator.h"
+#include "extensions/renderer/bindings/interaction_provider.h"
 
 namespace extensions {
 
@@ -16,8 +17,7 @@
     GetAPISchemaMethod get_api_schema,
     BindingAccessChecker::AvailabilityCallback is_available,
     APIRequestHandler::SendRequestMethod send_request,
-    APIRequestHandler::GetUserActivationState
-        get_user_activation_state_callback,
+    std::unique_ptr<InteractionProvider> interaction_provider,
     APIEventListeners::ListenersUpdated event_listeners_changed,
     APIEventHandler::ContextOwnerIdGetter context_owner_getter,
     APIBinding::OnSilentRequest on_silent_request,
@@ -27,10 +27,11 @@
           base::BindRepeating(&APIBindingsSystem::InitializeType,
                               base::Unretained(this))),
       exception_handler_(std::move(add_console_error)),
+      interaction_provider_(std::move(interaction_provider)),
       request_handler_(std::move(send_request),
                        std::move(last_error),
                        &exception_handler_,
-                       std::move(get_user_activation_state_callback)),
+                       interaction_provider_.get()),
       event_handler_(std::move(event_listeners_changed),
                      std::move(context_owner_getter),
                      &exception_handler_),
diff --git a/extensions/renderer/bindings/api_bindings_system.h b/extensions/renderer/bindings/api_bindings_system.h
index 833f1a5b..947faa27 100644
--- a/extensions/renderer/bindings/api_bindings_system.h
+++ b/extensions/renderer/bindings/api_bindings_system.h
@@ -27,6 +27,7 @@
 
 namespace extensions {
 class APIBindingHooks;
+class InteractionProvider;
 
 // A class encompassing the necessary pieces to construct the JS entry points
 // for Extension APIs. Designed to be used on a single thread, but safe between
@@ -47,8 +48,7 @@
   APIBindingsSystem(GetAPISchemaMethod get_api_schema,
                     BindingAccessChecker::AvailabilityCallback is_available,
                     APIRequestHandler::SendRequestMethod send_request,
-                    APIRequestHandler::GetUserActivationState
-                        get_user_activation_state_callback,
+                    std::unique_ptr<InteractionProvider> interaction_provider,
                     APIEventListeners::ListenersUpdated event_listeners_changed,
                     APIEventHandler::ContextOwnerIdGetter context_owner_getter,
                     APIBinding::OnSilentRequest on_silent_request,
@@ -93,6 +93,9 @@
   // Handles any cleanup necessary before releasing the given |context|.
   void WillReleaseContext(v8::Local<v8::Context> context);
 
+  InteractionProvider* interaction_provider() {
+    return interaction_provider_.get();
+  }
   APIRequestHandler* request_handler() { return &request_handler_; }
   APIEventHandler* event_handler() { return &event_handler_; }
   APITypeReferenceMap* type_reference_map() { return &type_reference_map_; }
@@ -119,6 +122,9 @@
   // The exception handler for the system.
   ExceptionHandler exception_handler_;
 
+  // The interaction provider for the system.
+  std::unique_ptr<InteractionProvider> interaction_provider_;
+
   // The request handler associated with the system.
   APIRequestHandler request_handler_;
 
diff --git a/extensions/renderer/bindings/api_bindings_system_unittest.cc b/extensions/renderer/bindings/api_bindings_system_unittest.cc
index fc8b5ea..1d7dc23 100644
--- a/extensions/renderer/bindings/api_bindings_system_unittest.cc
+++ b/extensions/renderer/bindings/api_bindings_system_unittest.cc
@@ -17,6 +17,7 @@
 #include "extensions/renderer/bindings/api_binding_types.h"
 #include "extensions/renderer/bindings/api_bindings_system_unittest.h"
 #include "extensions/renderer/bindings/api_invocation_errors.h"
+#include "extensions/renderer/bindings/test_interaction_provider.h"
 #include "gin/arguments.h"
 #include "gin/converter.h"
 #include "gin/try_catch.h"
@@ -120,7 +121,7 @@
       base::BindRepeating(&AllowAllAPIs),
       base::BindRepeating(&APIBindingsSystemTest::OnAPIRequest,
                           base::Unretained(this)),
-      base::BindRepeating(&GetTestUserActivationState),
+      std::make_unique<TestInteractionProvider>(),
       base::BindRepeating(&APIBindingsSystemTest::OnEventListenersChanged,
                           base::Unretained(this)),
       base::BindRepeating(get_context_owner), base::DoNothing(),
diff --git a/extensions/renderer/bindings/api_request_handler.cc b/extensions/renderer/bindings/api_request_handler.cc
index eaf470a..6fd5a3de 100644
--- a/extensions/renderer/bindings/api_request_handler.cc
+++ b/extensions/renderer/bindings/api_request_handler.cc
@@ -5,10 +5,8 @@
 #include "extensions/renderer/bindings/api_request_handler.h"
 
 #include "base/bind.h"
-#include "base/feature_list.h"
 #include "base/guid.h"
 #include "base/values.h"
-#include "content/public/common/content_features.h"
 #include "content/public/renderer/v8_value_converter.h"
 #include "extensions/renderer/bindings/api_binding_util.h"
 #include "extensions/renderer/bindings/api_response_validator.h"
@@ -16,8 +14,6 @@
 #include "extensions/renderer/bindings/js_runner.h"
 #include "gin/converter.h"
 #include "gin/data_object_builder.h"
-#include "third_party/blink/public/web/web_scoped_user_gesture.h"
-#include "third_party/blink/public/web/web_user_gesture_indicator.h"
 
 namespace extensions {
 
@@ -78,11 +74,11 @@
     v8::Local<v8::Function> request_callback,
     const base::Optional<std::vector<v8::Local<v8::Value>>>&
         local_callback_args,
-    const base::Optional<blink::WebUserGestureToken>& gesture_token)
+    std::unique_ptr<InteractionProvider::Token> gesture_token)
     : isolate(isolate), context(isolate, context), method_name(method_name) {
   if (!request_callback.IsEmpty()) {
     callback.emplace(isolate, request_callback);
-    user_gesture_token = gesture_token;
+    user_gesture_token = std::move(gesture_token);
 
     if (local_callback_args) {
       callback_arguments = std::vector<v8::Global<v8::Value>>();
@@ -93,7 +89,7 @@
   } else {
     DCHECK(!local_callback_args.has_value())
         << "Cannot specify callback arguments without a callback.";
-    DCHECK(!user_gesture_token.has_value())
+    DCHECK(!user_gesture_token)
         << "Cannot specify a user gesture token without a callback.";
   }
 }
@@ -107,12 +103,11 @@
     SendRequestMethod send_request,
     APILastError last_error,
     ExceptionHandler* exception_handler,
-    GetUserActivationState get_user_activation_state_callback)
+    const InteractionProvider* interaction_provider)
     : send_request_(std::move(send_request)),
       last_error_(std::move(last_error)),
       exception_handler_(exception_handler),
-      get_user_activation_state_callback_(
-          std::move(get_user_activation_state_callback)) {}
+      interaction_provider_(interaction_provider) {}
 
 APIRequestHandler::~APIRequestHandler() {}
 
@@ -139,7 +134,7 @@
 
   base::Optional<std::vector<v8::Local<v8::Value>>> callback_args;
   v8::Isolate* isolate = context->GetIsolate();
-  base::Optional<blink::WebUserGestureToken> user_gesture_token;
+  std::unique_ptr<InteractionProvider::Token> user_gesture_token;
   if (!custom_callback.IsEmpty() || !callback.IsEmpty()) {
     // In the JS bindings, custom callbacks are called with the arguments of
     // name, the full request object (see below), the original callback, and
@@ -162,15 +157,15 @@
       callback = custom_callback;
     }
 
-    user_gesture_token =
-        blink::WebUserGestureIndicator::CurrentUserGestureToken();
+    user_gesture_token = interaction_provider_->GetCurrentToken(context);
     request->has_callback = true;
   }
-  pending_requests_.emplace(request_id,
-                            PendingRequest(isolate, context, method, callback,
-                                           callback_args, user_gesture_token));
+  pending_requests_.emplace(
+      request_id, PendingRequest(isolate, context, method, callback,
+                                 callback_args, std::move(user_gesture_token)));
 
-  request->has_user_gesture = get_user_activation_state_callback_.Run(context);
+  request->has_user_gesture =
+      interaction_provider_->HasActiveInteraction(context);
   request->arguments = std::move(arguments);
   request->method_name = method;
   request->thread = thread;
@@ -202,11 +197,11 @@
   // handle any user gesture behavior. This prevents an issue where messaging
   // handling would create an extra scoped user gesture, causing issues. See
   // https://crbug.com/921141.
-  base::Optional<blink::WebUserGestureToken> null_user_gesture_token;
+  std::unique_ptr<InteractionProvider::Token> null_user_gesture_token;
   pending_requests_.emplace(
       request_id,
       PendingRequest(context->GetIsolate(), context, std::string(), callback,
-                     base::nullopt, null_user_gesture_token));
+                     base::nullopt, std::move(null_user_gesture_token)));
   return request_id;
 }
 
@@ -275,13 +270,10 @@
   }
   full_args.insert(full_args.end(), response_args.begin(), response_args.end());
 
-  std::unique_ptr<blink::WebScopedUserGesture> user_gesture;
-  // UserActivationV2 replaces the concept of (scoped) tokens with a frame-wide
-  // state, hence skips token forwarding.
-  if (!base::FeatureList::IsEnabled(features::kUserActivationV2) &&
-      pending_request.user_gesture_token) {
-    user_gesture = std::make_unique<blink::WebScopedUserGesture>(
-        *pending_request.user_gesture_token);
+  std::unique_ptr<InteractionProvider::Scope> user_gesture;
+  if (pending_request.user_gesture_token) {
+    user_gesture = interaction_provider_->CreateScopedInteraction(
+        context, std::move(pending_request.user_gesture_token));
   }
 
   if (!error.empty())
diff --git a/extensions/renderer/bindings/api_request_handler.h b/extensions/renderer/bindings/api_request_handler.h
index 482ad34..76d2dc1af 100644
--- a/extensions/renderer/bindings/api_request_handler.h
+++ b/extensions/renderer/bindings/api_request_handler.h
@@ -14,7 +14,7 @@
 #include "base/optional.h"
 #include "extensions/renderer/bindings/api_binding_types.h"
 #include "extensions/renderer/bindings/api_last_error.h"
-#include "third_party/blink/public/web/web_user_gesture_token.h"
+#include "extensions/renderer/bindings/interaction_provider.h"
 #include "v8/include/v8.h"
 
 namespace base {
@@ -51,13 +51,10 @@
       base::RepeatingCallback<void(std::unique_ptr<Request>,
                                    v8::Local<v8::Context>)>;
 
-  using GetUserActivationState =
-      base::RepeatingCallback<bool(v8::Local<v8::Context>)>;
-
   APIRequestHandler(SendRequestMethod send_request,
                     APILastError last_error,
                     ExceptionHandler* exception_handler,
-                    GetUserActivationState get_user_activation_state_callback);
+                    const InteractionProvider* interaction_provider);
   ~APIRequestHandler();
 
   // Begins the process of processing the request. Returns the identifier of the
@@ -113,7 +110,7 @@
         const std::string& method_name,
         v8::Local<v8::Function> callback,
         const base::Optional<std::vector<v8::Local<v8::Value>>>& callback_args,
-        const base::Optional<blink::WebUserGestureToken>& user_gesture_token);
+        std::unique_ptr<InteractionProvider::Token> user_gesture_token);
     ~PendingRequest();
     PendingRequest(PendingRequest&&);
     PendingRequest& operator=(PendingRequest&&);
@@ -125,7 +122,8 @@
     // The following are only populated for requests with a callback.
     base::Optional<v8::Global<v8::Function>> callback;
     base::Optional<std::vector<v8::Global<v8::Value>>> callback_arguments;
-    base::Optional<blink::WebUserGestureToken> user_gesture_token;
+    // Note: We can't use base::Optional here for derived Token instances.
+    std::unique_ptr<InteractionProvider::Token> user_gesture_token;
   };
 
   void CompleteRequestImpl(int request_id,
@@ -155,8 +153,8 @@
   // Null if response validation is disabled.
   std::unique_ptr<APIResponseValidator> response_validator_;
 
-  // The callback to determine transient user activation state of the context.
-  GetUserActivationState get_user_activation_state_callback_;
+  // Outlives |this|.
+  const InteractionProvider* const interaction_provider_;
 
   DISALLOW_COPY_AND_ASSIGN(APIRequestHandler);
 };
diff --git a/extensions/renderer/bindings/api_request_handler_unittest.cc b/extensions/renderer/bindings/api_request_handler_unittest.cc
index 645bc741..4870fe1cd 100644
--- a/extensions/renderer/bindings/api_request_handler_unittest.cc
+++ b/extensions/renderer/bindings/api_request_handler_unittest.cc
@@ -12,6 +12,7 @@
 #include "extensions/renderer/bindings/api_binding_test.h"
 #include "extensions/renderer/bindings/api_binding_test_util.h"
 #include "extensions/renderer/bindings/exception_handler.h"
+#include "extensions/renderer/bindings/test_interaction_provider.h"
 #include "extensions/renderer/bindings/test_js_runner.h"
 #include "gin/converter.h"
 #include "gin/function_template.h"
@@ -41,11 +42,13 @@
     return std::make_unique<APIRequestHandler>(
         base::DoNothing(),
         APILastError(APILastError::GetParent(), binding::AddConsoleError()),
-        nullptr, base::BindRepeating(&GetTestUserActivationState));
+        nullptr, interaction_provider());
   }
 
-  void SaveUserActivationState(base::Optional<bool>* ran_with_user_gesture) {
-    *ran_with_user_gesture = GetTestUserActivationState(MainContext());
+  void SaveUserActivationState(v8::Local<v8::Context> context,
+                               base::Optional<bool>* ran_with_user_gesture) {
+    *ran_with_user_gesture =
+        interaction_provider()->HasActiveInteraction(context);
   }
 
  protected:
@@ -58,12 +61,19 @@
             &APIRequestHandlerTest::SetDidRunJS, base::Unretained(this))));
   }
 
+  InteractionProvider* interaction_provider() {
+    if (!interaction_provider_)
+      interaction_provider_ = std::make_unique<TestInteractionProvider>();
+    return interaction_provider_.get();
+  }
+
   bool did_run_js() const { return did_run_js_; }
 
  private:
   void SetDidRunJS() { did_run_js_ = true; }
 
   bool did_run_js_ = false;
+  std::unique_ptr<TestInteractionProvider> interaction_provider_;
 
   DISALLOW_COPY_AND_ASSIGN(APIRequestHandlerTest);
 };
@@ -287,7 +297,8 @@
       gin::CreateFunctionTemplate(
           isolate(),
           base::BindRepeating(&APIRequestHandlerTest::SaveUserActivationState,
-                              base::Unretained(this), &ran_with_user_gesture));
+                              base::Unretained(this), context,
+                              &ran_with_user_gesture));
   v8::Local<v8::Function> v8_callback =
       function_template->GetFunction(context).ToLocalChecked();
 
@@ -310,7 +321,7 @@
   // activate a new user gesture on the stack, and v2 should rely on the gesture
   // being persisted (or generated from the browser). We should clean this up.
 
-  EXPECT_TRUE(GetTestUserActivationState(MainContext()));
+  EXPECT_TRUE(interaction_provider()->HasActiveInteraction(context));
 
   request_id = request_handler->StartRequest(
       context, kMethod, std::make_unique<base::ListValue>(), v8_callback,
@@ -321,7 +332,7 @@
   EXPECT_TRUE(*ran_with_user_gesture);
 
   // Sanity check: the callback doesn't change the state
-  EXPECT_TRUE(GetTestUserActivationState(MainContext()));
+  EXPECT_TRUE(interaction_provider()->HasActiveInteraction(context));
 }
 
 TEST_F(APIRequestHandlerTest, RequestThread) {
@@ -338,7 +349,7 @@
   APIRequestHandler request_handler(
       base::BindRepeating(on_request, &thread),
       APILastError(APILastError::GetParent(), binding::AddConsoleError()),
-      nullptr, base::BindRepeating(&GetTestUserActivationState));
+      nullptr, interaction_provider());
 
   request_handler.StartRequest(
       context, kMethod, std::make_unique<base::ListValue>(),
@@ -375,7 +386,7 @@
       base::DoNothing(),
       APILastError(base::BindRepeating(get_parent),
                    base::BindRepeating(log_error, &logged_error)),
-      nullptr, base::BindRepeating(&GetTestUserActivationState));
+      nullptr, interaction_provider());
 
   const char kReportExposedLastError[] =
       "(function() {\n"
@@ -477,7 +488,7 @@
   APIRequestHandler request_handler(
       base::BindRepeating(handle_request, &dispatched_request),
       APILastError(APILastError::GetParent(), binding::AddConsoleError()),
-      nullptr, base::BindRepeating(&GetTestUserActivationState));
+      nullptr, interaction_provider());
 
   EXPECT_TRUE(request_handler.GetPendingRequestIdsForTesting().empty());
   v8::Local<v8::Function> function = FunctionFromString(context, kEchoArgs);
@@ -520,7 +531,7 @@
   APIRequestHandler request_handler(
       base::DoNothing(),
       APILastError(APILastError::GetParent(), binding::AddConsoleError()),
-      &exception_handler, base::BindRepeating(&GetTestUserActivationState));
+      &exception_handler, interaction_provider());
 
   v8::TryCatch outer_try_catch(isolate());
   v8::Local<v8::Function> callback_throwing_error =
diff --git a/extensions/renderer/bindings/argument_spec.cc b/extensions/renderer/bindings/argument_spec.cc
index 8a4a14b..9637be5 100644
--- a/extensions/renderer/bindings/argument_spec.cc
+++ b/extensions/renderer/bindings/argument_spec.cc
@@ -449,11 +449,8 @@
           return false;
         }
 
-        if (out_value) {
-          // TODO(devlin): If base::Value ever takes a std::string&&, we
-          // could use std::move to construct.
-          *out_value = std::make_unique<base::Value>(str);
-        }
+        if (out_value)
+          *out_value = std::make_unique<base::Value>(std::move(str));
       }
 
       if (v8_out_value)
diff --git a/extensions/renderer/bindings/declarative_event_unittest.cc b/extensions/renderer/bindings/declarative_event_unittest.cc
index 48920a11..edd159c 100644
--- a/extensions/renderer/bindings/declarative_event_unittest.cc
+++ b/extensions/renderer/bindings/declarative_event_unittest.cc
@@ -20,6 +20,7 @@
 #include "extensions/renderer/bindings/api_request_handler.h"
 #include "extensions/renderer/bindings/api_type_reference_map.h"
 #include "extensions/renderer/bindings/argument_spec.h"
+#include "extensions/renderer/bindings/test_interaction_provider.h"
 #include "gin/handle.h"
 
 namespace extensions {
@@ -92,19 +93,22 @@
       type_refs_.AddSpec("condition", std::move(condition));
     }
 
+    interaction_provider_ = std::make_unique<TestInteractionProvider>();
     request_handler_ = std::make_unique<APIRequestHandler>(
         base::BindRepeating(&DeclarativeEventTest::OnRequest,
                             base::Unretained(this)),
         APILastError(APILastError::GetParent(), binding::AddConsoleError()),
-        nullptr, base::BindRepeating(&GetTestUserActivationState));
+        nullptr, interaction_provider_.get());
   }
 
   void TearDown() override {
     request_handler_.reset();
+    interaction_provider_.reset();
     APIBindingTest::TearDown();
   }
 
   APITypeReferenceMap type_refs_;
+  std::unique_ptr<TestInteractionProvider> interaction_provider_;
   std::unique_ptr<APIRequestHandler> request_handler_;
   std::unique_ptr<APIRequestHandler::Request> last_request_;
 
diff --git a/extensions/renderer/bindings/interaction_provider.h b/extensions/renderer/bindings/interaction_provider.h
new file mode 100644
index 0000000..f93e2869
--- /dev/null
+++ b/extensions/renderer/bindings/interaction_provider.h
@@ -0,0 +1,49 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef EXTENSIONS_RENDERER_BINDINGS_INTERACTION_PROVIDER_H_
+#define EXTENSIONS_RENDERER_BINDINGS_INTERACTION_PROVIDER_H_
+
+#include <memory>
+
+#include "v8/include/v8.h"
+
+namespace extensions {
+
+// Provides user interaction related utilities.
+class InteractionProvider {
+ public:
+  // A token for an interaction. This can be used for deferred creation of an
+  // interaction.
+  class Token {
+   public:
+    virtual ~Token() {}
+  };
+  // The scope for an interaction.
+  // A context is assumed to have active interaction while this is present.
+  class Scope {
+   public:
+    virtual ~Scope() {}
+  };
+
+  virtual ~InteractionProvider() {}
+
+  // Returns a token representing the current state of interaction,
+  // possibly for use in later point in time to create a |Scope|.
+  virtual std::unique_ptr<Token> GetCurrentToken(
+      v8::Local<v8::Context> v8_context) const = 0;
+
+  // Creates a scoped interaction from a |token|, possibly retrieved earlier.
+  virtual std::unique_ptr<Scope> CreateScopedInteraction(
+      v8::Local<v8::Context> v8_context,
+      std::unique_ptr<Token> token) const = 0;
+
+  // Returns true if |v8_context| has an active interaction.
+  virtual bool HasActiveInteraction(
+      v8::Local<v8::Context> v8_context) const = 0;
+};
+
+}  // namespace extensions
+
+#endif  // EXTENSIONS_RENDERER_BINDINGS_INTERACTION_PROVIDER_H_
diff --git a/extensions/renderer/bindings/test_interaction_provider.cc b/extensions/renderer/bindings/test_interaction_provider.cc
new file mode 100644
index 0000000..f2d09c6b
--- /dev/null
+++ b/extensions/renderer/bindings/test_interaction_provider.cc
@@ -0,0 +1,46 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "extensions/renderer/bindings/test_interaction_provider.h"
+
+namespace extensions {
+
+namespace {
+bool g_mock_user_activation_v2_state_ = false;
+}
+
+TestInteractionProvider::TestInteractionProvider() = default;
+
+TestInteractionProvider::~TestInteractionProvider() = default;
+
+std::unique_ptr<InteractionProvider::Token>
+TestInteractionProvider::GetCurrentToken(
+    v8::Local<v8::Context> v8_context) const {
+  // Note: Not necessary for tests.
+  return nullptr;
+}
+
+std::unique_ptr<InteractionProvider::Scope>
+TestInteractionProvider::CreateScopedInteraction(
+    v8::Local<v8::Context> v8_context,
+    std::unique_ptr<InteractionProvider::Token> token) const {
+  // Note: Not necessary for tests.
+  return nullptr;
+}
+
+bool TestInteractionProvider::HasActiveInteraction(
+    v8::Local<v8::Context> v8_context) const {
+  return g_mock_user_activation_v2_state_;
+}
+
+ScopedTestUserActivation::ScopedTestUserActivation() {
+  DCHECK(!g_mock_user_activation_v2_state_);  // Nested scopes are not allowed.
+  g_mock_user_activation_v2_state_ = true;
+}
+
+ScopedTestUserActivation::~ScopedTestUserActivation() {
+  g_mock_user_activation_v2_state_ = false;
+}
+
+}  // namespace extensions
diff --git a/extensions/renderer/bindings/test_interaction_provider.h b/extensions/renderer/bindings/test_interaction_provider.h
new file mode 100644
index 0000000..9fc794e
--- /dev/null
+++ b/extensions/renderer/bindings/test_interaction_provider.h
@@ -0,0 +1,42 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef EXTENSIONS_RENDERER_BINDINGS_TEST_INTERACTION_PROVIDER_H_
+#define EXTENSIONS_RENDERER_BINDINGS_TEST_INTERACTION_PROVIDER_H_
+
+#include "extensions/renderer/bindings/interaction_provider.h"
+
+#include "base/logging.h"
+#include "base/macros.h"
+#include "v8/include/v8.h"
+
+namespace extensions {
+class TestInteractionProvider : public InteractionProvider {
+ public:
+  TestInteractionProvider();
+  ~TestInteractionProvider() override;
+
+  // InteractionProvider:
+  std::unique_ptr<InteractionProvider::Token> GetCurrentToken(
+      v8::Local<v8::Context> v8_context) const override;
+  std::unique_ptr<InteractionProvider::Scope> CreateScopedInteraction(
+      v8::Local<v8::Context> v8_context,
+      std::unique_ptr<InteractionProvider::Token> token) const override;
+  bool HasActiveInteraction(v8::Local<v8::Context> v8_context) const override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(TestInteractionProvider);
+};
+
+// User activation mock for test: sets transient activation state on
+// construction, resets on destruction.
+class ScopedTestUserActivation {
+ public:
+  ScopedTestUserActivation();
+  ~ScopedTestUserActivation();
+};
+
+}  // namespace extensions
+
+#endif  // EXTENSIONS_RENDERER_BINDINGS_TEST_INTERACTION_PROVIDER_H_
diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc
index ae5c7d7..2d9b502 100644
--- a/extensions/renderer/dispatcher.cc
+++ b/extensions/renderer/dispatcher.cc
@@ -63,7 +63,7 @@
 #include "extensions/renderer/display_source_custom_bindings.h"
 #include "extensions/renderer/dom_activity_logger.h"
 #include "extensions/renderer/extension_frame_helper.h"
-#include "extensions/renderer/extension_interaction.h"
+#include "extensions/renderer/extension_interaction_provider.h"
 #include "extensions/renderer/extensions_renderer_client.h"
 #include "extensions/renderer/file_system_natives.h"
 #include "extensions/renderer/guest_view/guest_view_internal_custom_bindings.h"
@@ -185,6 +185,19 @@
   }
 };
 
+class HandleScopeHelper {
+ public:
+  HandleScopeHelper(ScriptContext* script_context)
+      : handle_scope_(script_context->isolate()),
+        context_scope_(script_context->v8_context()) {}
+
+ private:
+  v8::HandleScope handle_scope_;
+  v8::Context::Scope context_scope_;
+
+  DISALLOW_COPY_AND_ASSIGN(HandleScopeHelper);
+};
+
 base::LazyInstance<WorkerScriptContextSet>::DestructorAtExit
     g_worker_script_context_set = LAZY_INSTANCE_INITIALIZER;
 
@@ -408,8 +421,9 @@
         IPCMessageSender::CreateWorkerThreadIPCMessageSender(
             worker_dispatcher, service_worker_version_id);
     worker_dispatcher->AddWorkerData(
-        service_worker_version_id, context_proxy, context,
+        service_worker_version_id, context,
         CreateBindingsSystem(std::move(ipc_sender)));
+    worker_thread_util::SetWorkerContextProxy(context_proxy);
 
     // TODO(lazyboy): Make sure accessing |source_map_| in worker thread is
     // safe.
@@ -536,6 +550,7 @@
     // the associated bindings system.
     g_worker_script_context_set.Get().Remove(v8_context, script_url);
     WorkerThreadDispatcher::Get()->RemoveWorkerData(service_worker_version_id);
+    worker_thread_util::SetWorkerContextProxy(nullptr);
   }
 }
 
@@ -970,7 +985,10 @@
   content::RenderFrame* background_frame =
       ExtensionFrameHelper::GetBackgroundPageFrame(params.extension_id);
 
-  std::unique_ptr<ExtensionInteraction> web_user_gesture;
+  // Required for |web_user_gesture|.
+  std::unique_ptr<HandleScopeHelper> v8_handle_scope;
+
+  std::unique_ptr<InteractionProvider::Scope> web_user_gesture;
   // Synthesize a user gesture if this was in response to user action; this is
   // necessary if the gesture was e.g. by clicking on the extension toolbar
   // icon, context menu entry, etc.
@@ -985,7 +1003,8 @@
         ScriptContextSet::GetMainWorldContextForFrame(background_frame);
     if (background_context && bindings_system_->HasEventListenerInContext(
                                   params.event_name, background_context)) {
-      web_user_gesture = ExtensionInteraction::CreateScopeForMainThread(
+      v8_handle_scope = std::make_unique<HandleScopeHelper>(background_context);
+      web_user_gesture = ExtensionInteractionProvider::Scope::ForFrame(
           background_frame->GetWebFrame());
     }
   }
diff --git a/extensions/renderer/extension_interaction.cc b/extensions/renderer/extension_interaction.cc
deleted file mode 100644
index c8a7a9b..0000000
--- a/extensions/renderer/extension_interaction.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "extensions/renderer/extension_interaction.h"
-
-#include <utility>
-
-#include "base/memory/ptr_util.h"
-#include "extensions/renderer/script_context.h"
-#include "extensions/renderer/service_worker_data.h"
-#include "extensions/renderer/worker_thread_dispatcher.h"
-#include "extensions/renderer/worker_thread_util.h"
-#include "third_party/blink/public/web/web_local_frame.h"
-#include "third_party/blink/public/web/web_scoped_user_gesture.h"
-#include "third_party/blink/public/web/web_user_gesture_indicator.h"
-
-namespace extensions {
-
-// static
-std::unique_ptr<ExtensionInteraction>
-ExtensionInteraction::CreateScopeForWorker() {
-  // Note: ExtensionInteraction ctor is private.
-  return base::WrapUnique(new ExtensionInteraction(nullptr));
-}
-
-// static
-std::unique_ptr<ExtensionInteraction>
-ExtensionInteraction::CreateScopeForMainThread(
-    blink::WebLocalFrame* web_frame) {
-  // Note: ExtensionInteraction ctor is private.
-  return base::WrapUnique(new ExtensionInteraction(web_frame));
-}
-
-// static
-bool ExtensionInteraction::HasActiveInteraction(ScriptContext* context) {
-  if (worker_thread_util::IsWorkerThread()) {
-    DCHECK(!context->web_frame());
-    ServiceWorkerData* worker_data =
-        WorkerThreadDispatcher::GetServiceWorkerData();
-    return worker_data->interaction_count() > 0 ||
-           worker_data->is_service_worker_window_interaction_allowed();
-  }
-  return blink::WebUserGestureIndicator::IsProcessingUserGesture(
-      context->web_frame());
-}
-
-ExtensionInteraction::ExtensionInteraction(blink::WebLocalFrame* context)
-    : is_worker_thread_(worker_thread_util::IsWorkerThread()) {
-  if (is_worker_thread_) {
-    DCHECK(!context);
-    WorkerThreadDispatcher::GetServiceWorkerData()->IncrementInteraction();
-  } else {
-    main_thread_gesture_ =
-        std::make_unique<blink::WebScopedUserGesture>(context);
-  }
-}
-
-ExtensionInteraction::~ExtensionInteraction() {
-  if (is_worker_thread_)
-    WorkerThreadDispatcher::GetServiceWorkerData()->DecrementInteraction();
-}
-
-}  // namespace extensions
diff --git a/extensions/renderer/extension_interaction.h b/extensions/renderer/extension_interaction.h
deleted file mode 100644
index 0d4f656..0000000
--- a/extensions/renderer/extension_interaction.h
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef EXTENSIONS_RENDERER_EXTENSION_INTERACTION_H_
-#define EXTENSIONS_RENDERER_EXTENSION_INTERACTION_H_
-
-#include <memory>
-
-#include "base/macros.h"
-
-namespace blink {
-class WebLocalFrame;
-class WebScopedUserGesture;
-}  // namespace blink
-
-namespace extensions {
-
-class ScriptContext;
-
-// Provides user interaction related utilities for extensions, works for
-// both RenderFrame based and Service Worker based extensions.
-// Provides scoped interaction creation for a context and provides current
-// interaction state retrieval method.
-class ExtensionInteraction {
- public:
-  ~ExtensionInteraction();
-
-  // Creates a scoped interaction for a RenderFrame based extension.
-  static std::unique_ptr<ExtensionInteraction> CreateScopeForMainThread(
-      blink::WebLocalFrame* web_frame);
-  // Creates a scoped interaction for a Service Worker based extension.
-  static std::unique_ptr<ExtensionInteraction> CreateScopeForWorker();
-
-  // Returns true if |context| has an active user interaction.
-  static bool HasActiveInteraction(ScriptContext* context);
-
- private:
-  explicit ExtensionInteraction(blink::WebLocalFrame* context);
-
-  bool is_worker_thread_ = false;
-  std::unique_ptr<blink::WebScopedUserGesture> main_thread_gesture_;
-
-  DISALLOW_COPY_AND_ASSIGN(ExtensionInteraction);
-};
-
-}  // namespace extensions
-
-#endif  // EXTENSIONS_RENDERER_EXTENSION_INTERACTION_H_
diff --git a/extensions/renderer/extension_interaction_provider.cc b/extensions/renderer/extension_interaction_provider.cc
new file mode 100644
index 0000000..aa8badd
--- /dev/null
+++ b/extensions/renderer/extension_interaction_provider.cc
@@ -0,0 +1,182 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "extensions/renderer/extension_interaction_provider.h"
+
+#include "base/feature_list.h"
+#include "base/memory/ptr_util.h"
+#include "content/public/common/content_features.h"
+#include "extensions/renderer/bindings/get_per_context_data.h"
+#include "extensions/renderer/get_script_context.h"
+#include "extensions/renderer/script_context.h"
+#include "extensions/renderer/worker_thread_util.h"
+#include "third_party/blink/public/web/web_local_frame.h"
+#include "third_party/blink/public/web/web_scoped_user_gesture.h"
+#include "third_party/blink/public/web/web_user_gesture_indicator.h"
+#include "third_party/blink/public/web/web_user_gesture_token.h"
+
+namespace extensions {
+
+namespace {
+struct ExtensionInteractionData : public base::SupportsUserData::Data {
+  static constexpr char kPerContextDataKey[] = "extension_interaction";
+  int interaction_count = 0;
+  int token_interaction_count = 0;
+};
+constexpr char ExtensionInteractionData::kPerContextDataKey[];
+
+}  // namespace
+
+// ExtensionInteractionProvider::Token -----------------------------------------
+ExtensionInteractionProvider::Token::Token(bool for_worker)
+    : is_for_service_worker_(for_worker) {
+  if (!is_for_service_worker_)
+    frame_token_ = blink::WebUserGestureIndicator::CurrentUserGestureToken();
+}
+ExtensionInteractionProvider::Token::~Token() {}
+
+// ExtensionInteractionProvider::Scope -----------------------------------------
+
+ExtensionInteractionProvider::Scope::Scope() {}
+ExtensionInteractionProvider::Scope::~Scope() {}
+
+// static.
+std::unique_ptr<ExtensionInteractionProvider::Scope>
+ExtensionInteractionProvider::Scope::ForWorker(
+    v8::Local<v8::Context> v8_context) {
+  DCHECK(worker_thread_util::IsWorkerThread());
+  auto scope = base::WrapUnique(new Scope());
+  scope->worker_thread_interaction_ =
+      std::make_unique<ScopedWorkerInteraction>(v8_context, false);
+  return scope;
+}
+
+// static.
+std::unique_ptr<ExtensionInteractionProvider::Scope>
+ExtensionInteractionProvider::Scope::ForFrame(blink::WebLocalFrame* web_frame) {
+  auto scope = base::WrapUnique(new Scope());
+  scope->main_thread_gesture_ =
+      std::make_unique<blink::WebScopedUserGesture>(web_frame);
+  return scope;
+}
+
+// static.
+std::unique_ptr<ExtensionInteractionProvider::Scope>
+ExtensionInteractionProvider::Scope::ForToken(
+    v8::Local<v8::Context> v8_context,
+    std::unique_ptr<InteractionProvider::Token> token) {
+  Token* token_impl = static_cast<Token*>(token.get());
+  if (!token_impl->is_for_service_worker() &&
+      base::FeatureList::IsEnabled(features::kUserActivationV2)) {
+    // UserActivationV2 replaces the concept of (scoped) tokens with a
+    // frame-wide state, hence skips token forwarding.
+    return nullptr;
+  }
+
+  auto scope = base::WrapUnique(new Scope());
+  if (token_impl->is_for_service_worker()) {
+    scope->worker_thread_interaction_ =
+        std::make_unique<ScopedWorkerInteraction>(v8_context, true);
+  } else {
+    scope->main_thread_gesture_ = std::make_unique<blink::WebScopedUserGesture>(
+        token_impl->web_frame_token());
+  }
+  return scope;
+}
+
+ExtensionInteractionProvider::Scope::ScopedWorkerInteraction::
+    ScopedWorkerInteraction(v8::Local<v8::Context> v8_context,
+                            bool created_from_token)
+    : v8_context_(v8_context), created_from_token_(created_from_token) {
+  ExtensionInteractionData* per_context_data =
+      GetPerContextData<ExtensionInteractionData>(v8_context, kCreateIfMissing);
+  DCHECK(per_context_data);
+  if (created_from_token_)
+    per_context_data->token_interaction_count++;
+  else
+    per_context_data->interaction_count++;
+}
+ExtensionInteractionProvider::Scope::ScopedWorkerInteraction::
+    ~ScopedWorkerInteraction() {
+  ExtensionInteractionData* per_context_data =
+      GetPerContextData<ExtensionInteractionData>(v8_context_,
+                                                  kDontCreateIfMissing);
+  // If |v8_context_| was invalidated (e.g. because of JS running), bail out.
+  if (!per_context_data)
+    return;
+
+  if (created_from_token_) {
+    DCHECK_GT(per_context_data->token_interaction_count, 0);
+    per_context_data->token_interaction_count--;
+  } else {
+    DCHECK_GT(per_context_data->interaction_count, 0);
+    per_context_data->interaction_count--;
+  }
+}
+
+// ExtensionInteractionProvider ------------------------------------------------
+
+ExtensionInteractionProvider::ExtensionInteractionProvider() = default;
+
+ExtensionInteractionProvider::~ExtensionInteractionProvider() = default;
+
+// static
+bool ExtensionInteractionProvider::HasActiveExtensionInteraction(
+    v8::Local<v8::Context> v8_context) {
+  // Service Worker based context:
+  if (worker_thread_util::IsWorkerThread()) {
+    ExtensionInteractionData* per_context_data =
+        GetPerContextData<ExtensionInteractionData>(v8_context,
+                                                    kDontCreateIfMissing);
+    if (per_context_data && (per_context_data->interaction_count > 0 ||
+                             per_context_data->token_interaction_count > 0)) {
+      return true;
+    }
+    return worker_thread_util::HasWorkerContextProxyInteraction();
+  }
+
+  // RenderFrame based context:
+  ScriptContext* script_context =
+      GetScriptContextFromV8ContextChecked(v8_context);
+  return blink::WebUserGestureIndicator::IsProcessingUserGesture(
+      script_context->web_frame());
+}
+
+std::unique_ptr<InteractionProvider::Token>
+ExtensionInteractionProvider::GetCurrentToken(
+    v8::Local<v8::Context> v8_context) const {
+  if (worker_thread_util::IsWorkerThread()) {
+    ExtensionInteractionData* per_context_data =
+        GetPerContextData<ExtensionInteractionData>(v8_context,
+                                                    kDontCreateIfMissing);
+    const bool has_extension_api_interaction =
+        per_context_data && per_context_data->interaction_count > 0;
+    // Only create token for Service Workers when we have an interaction taking
+    // place that wasn't created through another token (i.e. do not look at
+    // worker_data->token_interaction_count).
+    if (!has_extension_api_interaction &&
+        !worker_thread_util::HasWorkerContextProxyInteraction()) {
+      return nullptr;
+    }
+    return base::WrapUnique(new Token(true));
+  }
+
+  // Render frame based token.
+  return base::WrapUnique(new Token(false));
+}
+
+std::unique_ptr<InteractionProvider::Scope>
+ExtensionInteractionProvider::CreateScopedInteraction(
+    v8::Local<v8::Context> v8_context,
+    std::unique_ptr<InteractionProvider::Token> token) const {
+  return Scope::ForToken(v8_context, std::move(token));
+}
+
+bool ExtensionInteractionProvider::HasActiveInteraction(
+    v8::Local<v8::Context> v8_context) const {
+  return ExtensionInteractionProvider::HasActiveExtensionInteraction(
+      v8_context);
+}
+
+}  // namespace extensions
diff --git a/extensions/renderer/extension_interaction_provider.h b/extensions/renderer/extension_interaction_provider.h
new file mode 100644
index 0000000..b2ce4d8
--- /dev/null
+++ b/extensions/renderer/extension_interaction_provider.h
@@ -0,0 +1,110 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef EXTENSIONS_RENDERER_EXTENSION_INTERACTION_PROVIDER_H_
+#define EXTENSIONS_RENDERER_EXTENSION_INTERACTION_PROVIDER_H_
+
+#include "extensions/renderer/bindings/interaction_provider.h"
+
+#include "base/optional.h"
+#include "third_party/blink/public/web/web_user_gesture_token.h"
+#include "v8/include/v8.h"
+
+namespace blink {
+class WebLocalFrame;
+class WebScopedUserGesture;
+}  // namespace blink
+
+namespace extensions {
+
+// Provides user interaction related utilities specific to extensions system,
+// works for both RenderFrame based and Service Worker based extensions.
+class ExtensionInteractionProvider : public InteractionProvider {
+ public:
+  // Extension system specific implementation of token.
+  // Can refer to a RenderFrame based extension token or Service Worker based
+  // extension token.
+  class Token : public InteractionProvider::Token {
+   public:
+    ~Token() override;
+
+    // Only valid for WebFrame based tokens.
+    blink::WebUserGestureToken web_frame_token() const { return *frame_token_; }
+
+    bool is_for_service_worker() const { return is_for_service_worker_; }
+
+   private:
+    friend class ExtensionInteractionProvider;
+    friend class TestInteractionProvider;
+
+    Token(bool is_for_service_worker);
+
+    bool is_for_service_worker_ = false;
+
+    // Used when this token is for main thread, i.e. when is_for_service_worker_
+    // is false.
+    base::Optional<blink::WebUserGestureToken> frame_token_;
+
+    DISALLOW_COPY_AND_ASSIGN(Token);
+  };
+
+  // Extension system specific implementation of scope.
+  class Scope : public InteractionProvider::Scope {
+   public:
+    ~Scope() override;
+
+    // Creates a Scope for a Service Worker context, without token.
+    static std::unique_ptr<Scope> ForWorker(v8::Local<v8::Context> v8_context);
+    // Creates a scope for a RenderFrame, without token.
+    static std::unique_ptr<Scope> ForFrame(blink::WebLocalFrame* web_frame);
+
+    // Creates a scope from a |token|.
+    static std::unique_ptr<Scope> ForToken(
+        v8::Local<v8::Context> v8_context,
+        std::unique_ptr<InteractionProvider::Token> token);
+
+   private:
+    Scope();
+
+    // Increments and decrements Service Worker specific interaction counts.
+    class ScopedWorkerInteraction {
+     public:
+      ScopedWorkerInteraction(v8::Local<v8::Context> v8_context,
+                              bool created_from_token);
+      ~ScopedWorkerInteraction();
+
+     private:
+      v8::Local<v8::Context> v8_context_;
+      bool created_from_token_ = false;
+    };
+
+    // Used for Service Worker based extension Contexts.
+    std::unique_ptr<ScopedWorkerInteraction> worker_thread_interaction_;
+    // Used for RenderFrame based extension Contexts.
+    std::unique_ptr<blink::WebScopedUserGesture> main_thread_gesture_;
+
+    DISALLOW_COPY_AND_ASSIGN(Scope);
+  };
+
+  ExtensionInteractionProvider();
+  ~ExtensionInteractionProvider() override;
+
+  // Returns true if |v8_context| has an active interaction.
+  static bool HasActiveExtensionInteraction(v8::Local<v8::Context> v8_context);
+
+  // InteractionProvider:
+  std::unique_ptr<InteractionProvider::Token> GetCurrentToken(
+      v8::Local<v8::Context> v8_context) const override;
+  std::unique_ptr<InteractionProvider::Scope> CreateScopedInteraction(
+      v8::Local<v8::Context> v8_context,
+      std::unique_ptr<InteractionProvider::Token> token) const override;
+  bool HasActiveInteraction(v8::Local<v8::Context> v8_context) const override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ExtensionInteractionProvider);
+};
+
+}  // namespace extensions
+
+#endif  // EXTENSIONS_RENDERER_EXTENSION_INTERACTION_PROVIDER_H_
diff --git a/extensions/renderer/native_extension_bindings_system.cc b/extensions/renderer/native_extension_bindings_system.cc
index 94a57e1b..0d802ac 100644
--- a/extensions/renderer/native_extension_bindings_system.cc
+++ b/extensions/renderer/native_extension_bindings_system.cc
@@ -28,7 +28,7 @@
 #include "extensions/renderer/content_setting.h"
 #include "extensions/renderer/declarative_content_hooks_delegate.h"
 #include "extensions/renderer/extension_frame_helper.h"
-#include "extensions/renderer/extension_interaction.h"
+#include "extensions/renderer/extension_interaction_provider.h"
 #include "extensions/renderer/extension_js_runner.h"
 #include "extensions/renderer/get_script_context.h"
 #include "extensions/renderer/i18n_hooks_delegate.h"
@@ -440,9 +440,7 @@
           base::BindRepeating(&IsAPIFeatureAvailable),
           base::BindRepeating(&NativeExtensionBindingsSystem::SendRequest,
                               base::Unretained(this)),
-          base::BindRepeating(
-              &NativeExtensionBindingsSystem::GetUserActivationState,
-              base::Unretained(this)),
+          std::make_unique<ExtensionInteractionProvider>(),
           base::BindRepeating(
               &NativeExtensionBindingsSystem::OnEventListenerChanged,
               base::Unretained(this)),
@@ -849,12 +847,6 @@
                                       request->thread);
 }
 
-bool NativeExtensionBindingsSystem::GetUserActivationState(
-    v8::Local<v8::Context> context) {
-  ScriptContext* script_context = GetScriptContextFromV8ContextChecked(context);
-  return ExtensionInteraction::HasActiveInteraction(script_context);
-}
-
 void NativeExtensionBindingsSystem::OnEventListenerChanged(
     const std::string& event_name,
     binding::EventListenersChanged change,
diff --git a/extensions/renderer/service_worker_data.cc b/extensions/renderer/service_worker_data.cc
index 0fc377b..3c96f09 100644
--- a/extensions/renderer/service_worker_data.cc
+++ b/extensions/renderer/service_worker_data.cc
@@ -10,24 +10,13 @@
 
 ServiceWorkerData::ServiceWorkerData(
     int64_t service_worker_version_id,
-    blink::WebServiceWorkerContextProxy* context_proxy,
     ScriptContext* context,
     std::unique_ptr<NativeExtensionBindingsSystem> bindings_system)
     : service_worker_version_id_(service_worker_version_id),
-      context_proxy_(context_proxy),
       context_(context),
       v8_schema_registry_(new V8SchemaRegistry),
       bindings_system_(std::move(bindings_system)) {}
 
 ServiceWorkerData::~ServiceWorkerData() {}
 
-void ServiceWorkerData::IncrementInteraction() {
-  ++interaction_count_;
-}
-
-void ServiceWorkerData::DecrementInteraction() {
-  DCHECK_GT(interaction_count_, 0);
-  --interaction_count_;
-}
-
 }  // namespace extensions
diff --git a/extensions/renderer/service_worker_data.h b/extensions/renderer/service_worker_data.h
index 854865f..1ee28d1 100644
--- a/extensions/renderer/service_worker_data.h
+++ b/extensions/renderer/service_worker_data.h
@@ -9,7 +9,6 @@
 
 #include "base/macros.h"
 #include "extensions/renderer/v8_schema_registry.h"
-#include "third_party/blink/public/web/modules/service_worker/web_service_worker_context_proxy.h"
 
 namespace extensions {
 class NativeExtensionBindingsSystem;
@@ -21,7 +20,6 @@
  public:
   ServiceWorkerData(
       int64_t service_worker_version_id,
-      blink::WebServiceWorkerContextProxy* context_proxy,
       ScriptContext* context,
       std::unique_ptr<NativeExtensionBindingsSystem> bindings_system);
   ~ServiceWorkerData();
@@ -35,28 +33,10 @@
   }
   ScriptContext* context() const { return context_; }
 
-  // Returns the number of active interactions for this worker.
-  int interaction_count() const { return interaction_count_; }
-
-  // Returns true if this worker is within a user interaction.
-  // The interaction originates from Service Worker notificationclick.
-  bool is_service_worker_window_interaction_allowed() const {
-    return context_proxy_->IsWindowInteractionAllowed();
-  }
-
-  // Marks the beginning of an interaction within this worker.
-  void IncrementInteraction();
-  // Marks the end of an interaction within this worker.
-  void DecrementInteraction();
-
  private:
   const int64_t service_worker_version_id_;
-  // Valid for the lifetime of |this|.
-  blink::WebServiceWorkerContextProxy* const context_proxy_ = nullptr;
   ScriptContext* const context_ = nullptr;
 
-  int interaction_count_ = 0;
-
   std::unique_ptr<V8SchemaRegistry> v8_schema_registry_;
   std::unique_ptr<NativeExtensionBindingsSystem> bindings_system_;
 
diff --git a/extensions/renderer/user_gestures_native_handler.cc b/extensions/renderer/user_gestures_native_handler.cc
index ba796067..9fd3fd4 100644
--- a/extensions/renderer/user_gestures_native_handler.cc
+++ b/extensions/renderer/user_gestures_native_handler.cc
@@ -5,7 +5,7 @@
 #include "extensions/renderer/user_gestures_native_handler.h"
 
 #include "base/bind.h"
-#include "extensions/renderer/extension_interaction.h"
+#include "extensions/renderer/extension_interaction_provider.h"
 #include "extensions/renderer/script_context.h"
 #include "third_party/blink/public/web/web_scoped_user_gesture.h"
 
@@ -27,9 +27,10 @@
 
 void UserGesturesNativeHandler::IsProcessingUserGesture(
     const v8::FunctionCallbackInfo<v8::Value>& args) {
-  args.GetReturnValue().Set(
-      v8::Boolean::New(args.GetIsolate(),
-                       ExtensionInteraction::HasActiveInteraction(context())));
+  args.GetReturnValue().Set(v8::Boolean::New(
+      args.GetIsolate(),
+      ExtensionInteractionProvider::HasActiveExtensionInteraction(
+          context()->v8_context())));
 }
 
 void UserGesturesNativeHandler::RunWithUserGesture(
diff --git a/extensions/renderer/worker_thread_dispatcher.cc b/extensions/renderer/worker_thread_dispatcher.cc
index 98e79c4..6c237a5e 100644
--- a/extensions/renderer/worker_thread_dispatcher.cc
+++ b/extensions/renderer/worker_thread_dispatcher.cc
@@ -18,13 +18,12 @@
 #include "extensions/common/extension_features.h"
 #include "extensions/common/extension_messages.h"
 #include "extensions/renderer/dispatcher.h"
-#include "extensions/renderer/extension_interaction.h"
+#include "extensions/renderer/extension_interaction_provider.h"
 #include "extensions/renderer/extensions_renderer_client.h"
 #include "extensions/renderer/native_extension_bindings_system.h"
 #include "extensions/renderer/native_renderer_messaging_service.h"
 #include "extensions/renderer/service_worker_data.h"
 #include "extensions/renderer/worker_script_context_set.h"
-#include "third_party/blink/public/web/modules/service_worker/web_service_worker_context_proxy.h"
 
 namespace extensions {
 
@@ -160,9 +159,17 @@
     const base::ListValue& event_args) {
   ServiceWorkerData* data = g_data_tls.Pointer()->Get();
   DCHECK(data);
-  std::unique_ptr<ExtensionInteraction> scoped_extension_interaction;
-  if (params.is_user_gesture)
-    scoped_extension_interaction = ExtensionInteraction::CreateScopeForWorker();
+
+  ScriptContext* script_context = data->context();
+  // Note |scoped_extension_interaction| requires a HandleScope.
+  v8::Isolate* isolate = script_context->isolate();
+  v8::HandleScope handle_scope(isolate);
+  std::unique_ptr<InteractionProvider::Scope> scoped_extension_interaction;
+  if (params.is_user_gesture) {
+    scoped_extension_interaction =
+        ExtensionInteractionProvider::Scope::ForWorker(
+            script_context->v8_context());
+  }
   data->bindings_system()->DispatchEventInContext(
       params.event_name, &event_args, &params.filtering_info, data->context());
   Send(new ExtensionHostMsg_EventAckWorker(data->service_worker_version_id(),
@@ -219,14 +226,12 @@
 
 void WorkerThreadDispatcher::AddWorkerData(
     int64_t service_worker_version_id,
-    blink::WebServiceWorkerContextProxy* context_proxy,
     ScriptContext* script_context,
     std::unique_ptr<NativeExtensionBindingsSystem> bindings_system) {
   ServiceWorkerData* data = g_data_tls.Pointer()->Get();
   if (!data) {
-    ServiceWorkerData* new_data =
-        new ServiceWorkerData(service_worker_version_id, context_proxy,
-                              script_context, std::move(bindings_system));
+    ServiceWorkerData* new_data = new ServiceWorkerData(
+        service_worker_version_id, script_context, std::move(bindings_system));
     g_data_tls.Pointer()->Set(new_data);
   }
 
diff --git a/extensions/renderer/worker_thread_dispatcher.h b/extensions/renderer/worker_thread_dispatcher.h
index 419b2f6..dba2ea5 100644
--- a/extensions/renderer/worker_thread_dispatcher.h
+++ b/extensions/renderer/worker_thread_dispatcher.h
@@ -19,10 +19,6 @@
 class ListValue;
 }
 
-namespace blink {
-class WebServiceWorkerContextProxy;
-}
-
 namespace content {
 class RenderThread;
 }
@@ -66,7 +62,6 @@
 
   void AddWorkerData(
       int64_t service_worker_version_id,
-      blink::WebServiceWorkerContextProxy* context_proxy,
       ScriptContext* script_context,
       std::unique_ptr<NativeExtensionBindingsSystem> bindings_system);
   void RemoveWorkerData(int64_t service_worker_version_id);
diff --git a/extensions/renderer/worker_thread_util.cc b/extensions/renderer/worker_thread_util.cc
index 3c8f2bf4..eeb62071 100644
--- a/extensions/renderer/worker_thread_util.cc
+++ b/extensions/renderer/worker_thread_util.cc
@@ -4,15 +4,34 @@
 
 #include "extensions/renderer/worker_thread_util.h"
 
+#include "base/lazy_instance.h"
 #include "content/public/renderer/worker_thread.h"
 #include "extensions/common/constants.h"
+#include "third_party/blink/public/web/modules/service_worker/web_service_worker_context_proxy.h"
 
 namespace extensions {
 namespace worker_thread_util {
 
+namespace {
+base::LazyInstance<
+    base::ThreadLocalPointer<blink::WebServiceWorkerContextProxy>>::Leaky
+    g_worker_context_proxy_tls = LAZY_INSTANCE_INITIALIZER;
+}
+
 bool IsWorkerThread() {
   return content::WorkerThread::GetCurrentId() != kMainThreadId;
 }
 
+void SetWorkerContextProxy(blink::WebServiceWorkerContextProxy* context_proxy) {
+  g_worker_context_proxy_tls.Pointer()->Set(context_proxy);
+}
+
+bool HasWorkerContextProxyInteraction() {
+  DCHECK(IsWorkerThread());
+  blink::WebServiceWorkerContextProxy* proxy =
+      g_worker_context_proxy_tls.Pointer()->Get();
+  return proxy && proxy->IsWindowInteractionAllowed();
+}
+
 }  // namespace worker_thread_util
 }  // namespace extensions
diff --git a/extensions/renderer/worker_thread_util.h b/extensions/renderer/worker_thread_util.h
index be3167b3..4c0319ce 100644
--- a/extensions/renderer/worker_thread_util.h
+++ b/extensions/renderer/worker_thread_util.h
@@ -5,12 +5,27 @@
 #ifndef EXTENSIONS_RENDERER_WORKER_THREAD_UTIL_H_
 #define EXTENSIONS_RENDERER_WORKER_THREAD_UTIL_H_
 
+namespace blink {
+class WebServiceWorkerContextProxy;
+}
+
 namespace extensions {
 namespace worker_thread_util {
 
 // Returns true if the current thread is a worker thread.
 bool IsWorkerThread();
 
+// Stores the proxy of Service Worker's global scope for current worker thread.
+//
+// Valid only on worker thread.
+void SetWorkerContextProxy(blink::WebServiceWorkerContextProxy* proxy);
+
+// Returns true if the current Service Worker global scope has an active
+// interaction.
+//
+// Valid only on worker thread.
+bool HasWorkerContextProxyInteraction();
+
 }  // namespace worker_thread_util
 }  // namespace extensions
 
diff --git a/fuchsia/engine/BUILD.gn b/fuchsia/engine/BUILD.gn
index 165a179f..816722a 100644
--- a/fuchsia/engine/BUILD.gn
+++ b/fuchsia/engine/BUILD.gn
@@ -165,7 +165,7 @@
 fuchsia_package("web_engine") {
   binary = ":web_engine_exe"
   package_name_override = "chromium"
-  sandbox_policy = "sandbox_policy"
+  manifest = "web_engine.cmx"
   excluded_files = [
     "lib/libswiftshader_libEGL.so",
     "lib/libswiftshader_libGLESv2.so",
@@ -241,7 +241,7 @@
 }
 
 test("web_engine_integration_tests") {
-  sandbox_policy = "integration_tests_sandbox_policy"
+  manifest = "web_engine_integration_tests.cmx"
   sources = [
     "test_debug_listener.cc",
     "test_debug_listener.h",
diff --git a/fuchsia/engine/sandbox_policy b/fuchsia/engine/sandbox_policy
deleted file mode 100644
index d653fe703..0000000
--- a/fuchsia/engine/sandbox_policy
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "features": [ "root-ssl-certificates", "vulkan" ],
-  "services": [
-    "fuchsia.logger.LogSink",
-    "fuchsia.process.Launcher"
-  ]
-}
diff --git a/fuchsia/engine/web_engine.cmx b/fuchsia/engine/web_engine.cmx
new file mode 100644
index 0000000..ca5e1c7
--- /dev/null
+++ b/fuchsia/engine/web_engine.cmx
@@ -0,0 +1,12 @@
+{
+  "sandbox": {
+    "features": [
+      "root-ssl-certificates",
+      "vulkan"
+    ],
+    "services": [
+      "fuchsia.logger.LogSink",
+      "fuchsia.process.Launcher"
+    ]
+  }
+}
diff --git a/fuchsia/engine/integration_tests_sandbox_policy b/fuchsia/engine/web_engine_integration_tests.cmx
similarity index 82%
rename from fuchsia/engine/integration_tests_sandbox_policy
rename to fuchsia/engine/web_engine_integration_tests.cmx
index cb658dc..b29ec1cc 100644
--- a/fuchsia/engine/integration_tests_sandbox_policy
+++ b/fuchsia/engine/web_engine_integration_tests.cmx
@@ -1,9 +1,11 @@
 {
-  "features": [
+  "sandbox": {
+    "features": [
       "isolated-persistent-storage",
       "deprecated-shell",
-      "system-temp" ],
-  "services": [
+      "system-temp"
+    ],
+    "services": [
       "fuchsia.device.NameProvider",
       "fuchsia.fonts.Provider",
       "fuchsia.logger.LogSink",
@@ -14,5 +16,6 @@
       "fuchsia.process.Launcher",
       "fuchsia.sysmem.Allocator",
       "fuchsia.web.ContextProvider"
-  ]
+    ]
+  }
 }
diff --git a/fuchsia/http/BUILD.gn b/fuchsia/http/BUILD.gn
index 67b7a87..624ff0ad 100644
--- a/fuchsia/http/BUILD.gn
+++ b/fuchsia/http/BUILD.gn
@@ -40,7 +40,7 @@
 fuchsia_package("http_pkg") {
   binary = ":http_exe"
   package_name_override = "http"
-  sandbox_policy = "sandbox_policy"
+  manifest = "http.cmx"
 }
 
 fuchsia_package_runner("http_pkg_runner") {
diff --git a/fuchsia/http/sandbox_policy b/fuchsia/http/http.cmx
similarity index 68%
rename from fuchsia/http/sandbox_policy
rename to fuchsia/http/http.cmx
index 8193c33..c969eb8 100644
--- a/fuchsia/http/sandbox_policy
+++ b/fuchsia/http/http.cmx
@@ -1,11 +1,15 @@
 {
-  "features": [ "root-ssl-certificates" ],
-  "services": [
+  "sandbox": {
+    "features": [
+      "root-ssl-certificates"
+    ],
+    "services": [
       "fuchsia.device.NameProvider",
       "fuchsia.logger.LogSink",
       "fuchsia.net.NameLookup",
       "fuchsia.net.SocketProvider",
       "fuchsia.netstack.Netstack",
       "fuchsia.posix.socket.Provider"
-  ]
+    ]
+  }
 }
diff --git a/fuchsia/runners/BUILD.gn b/fuchsia/runners/BUILD.gn
index e0607d0..e8916ee 100644
--- a/fuchsia/runners/BUILD.gn
+++ b/fuchsia/runners/BUILD.gn
@@ -95,7 +95,7 @@
 fuchsia_package("cast_runner_pkg") {
   binary = ":cast_runner_exe"
   package_name_override = "cast_runner"
-  sandbox_policy = "cast/sandbox_policy"
+  manifest = "cast/cast_runner.cmx"
 }
 
 fuchsia_package_runner("cast_runner") {
@@ -189,7 +189,7 @@
 fuchsia_package("web_runner_pkg") {
   binary = ":web_runner_exe"
   package_name_override = "web_runner"
-  sandbox_policy = "web/sandbox_policy"
+  manifest = "web/web_runner.cmx"
 }
 
 fuchsia_package_runner("web_runner") {
diff --git a/fuchsia/runners/cast/sandbox_policy b/fuchsia/runners/cast/cast_runner.cmx
similarity index 90%
rename from fuchsia/runners/cast/sandbox_policy
rename to fuchsia/runners/cast/cast_runner.cmx
index fca3925b..5ae12e21 100644
--- a/fuchsia/runners/cast/sandbox_policy
+++ b/fuchsia/runners/cast/cast_runner.cmx
@@ -1,6 +1,7 @@
 {
-  "features": [],
-  "services": [
+  "sandbox": {
+    "features": [],
+    "services": [
       "chromium.cast.ApplicationConfigManager",
       "fuchsia.device.NameProvider",
       "fuchsia.fonts.Provider",
@@ -18,5 +19,6 @@
       "fuchsia.ui.input.ImeVisibilityService",
       "fuchsia.ui.scenic.Scenic",
       "fuchsia.web.ContextProvider"
-  ]
+    ]
+  }
 }
diff --git a/fuchsia/runners/web/sandbox_policy b/fuchsia/runners/web/web_runner.cmx
similarity index 84%
rename from fuchsia/runners/web/sandbox_policy
rename to fuchsia/runners/web/web_runner.cmx
index 95de89a..4505633 100644
--- a/fuchsia/runners/web/sandbox_policy
+++ b/fuchsia/runners/web/web_runner.cmx
@@ -1,8 +1,9 @@
 {
-  "features": [
-    "isolated-persistent-storage"
-  ],
-  "services": [
+  "sandbox": {
+    "features": [
+      "isolated-persistent-storage"
+    ],
+    "services": [
       "fuchsia.device.NameProvider",
       "fuchsia.fonts.Provider",
       "fuchsia.logger.LogSink",
@@ -19,5 +20,6 @@
       "fuchsia.ui.input.ImeVisibilityService",
       "fuchsia.ui.scenic.Scenic",
       "fuchsia.web.ContextProvider"
-  ]
+    ]
+  }
 }
diff --git a/gpu/command_buffer/service/abstract_texture_impl_shared_context_state.cc b/gpu/command_buffer/service/abstract_texture_impl_shared_context_state.cc
index 9b6f131..aed8ac6d 100644
--- a/gpu/command_buffer/service/abstract_texture_impl_shared_context_state.cc
+++ b/gpu/command_buffer/service/abstract_texture_impl_shared_context_state.cc
@@ -120,5 +120,86 @@
   shared_context_state_.reset();
 }
 
+AbstractTextureImplOnSharedContextPassthrough::
+    AbstractTextureImplOnSharedContextPassthrough(
+        GLenum target,
+        scoped_refptr<gpu::SharedContextState> shared_context_state)
+    : shared_context_state_(std::move(shared_context_state)) {
+  DCHECK(shared_context_state_);
+
+  // The calling code which wants to create this abstract texture should have
+  // already made the shared context current.
+  DCHECK(shared_context_state_->IsCurrent(nullptr));
+
+  // Create a gles2 Texture.
+  GLuint service_id = 0;
+  auto* api = gl::g_current_gl_context;
+  api->glGenTexturesFn(1, &service_id);
+
+  GLint prev_texture = 0;
+  api->glGetIntegervFn(GetTextureBindingQuery(target), &prev_texture);
+
+  api->glBindTextureFn(target, service_id);
+  api->glTexParameteriFn(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+  api->glTexParameteriFn(target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+  api->glTexParameteriFn(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+  api->glTexParameteriFn(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+  glBindTexture(target, prev_texture);
+
+  texture_ = new TexturePassthrough(service_id, target);
+  shared_context_state_->AddContextLostObserver(this);
+}
+
+AbstractTextureImplOnSharedContextPassthrough::
+    ~AbstractTextureImplOnSharedContextPassthrough() {
+  if (cleanup_cb_)
+    std::move(cleanup_cb_).Run(this);
+}
+
+TextureBase* AbstractTextureImplOnSharedContextPassthrough::GetTextureBase()
+    const {
+  return texture_.get();
+}
+
+void AbstractTextureImplOnSharedContextPassthrough::SetParameteri(GLenum pname,
+                                                                  GLint param) {
+  NOTIMPLEMENTED();
+}
+
+void AbstractTextureImplOnSharedContextPassthrough::BindStreamTextureImage(
+    GLStreamTextureImage* image,
+    GLuint service_id) {
+  NOTIMPLEMENTED();
+}
+
+void AbstractTextureImplOnSharedContextPassthrough::BindImage(
+    gl::GLImage* image,
+    bool client_managed) {
+  NOTIMPLEMENTED();
+}
+
+gl::GLImage* AbstractTextureImplOnSharedContextPassthrough::GetImage() const {
+  NOTIMPLEMENTED();
+  return nullptr;
+}
+
+void AbstractTextureImplOnSharedContextPassthrough::SetCleared() {
+  NOTIMPLEMENTED();
+}
+
+void AbstractTextureImplOnSharedContextPassthrough::SetCleanupCallback(
+    CleanupCallback cb) {
+  cleanup_cb_ = std::move(cb);
+}
+
+void AbstractTextureImplOnSharedContextPassthrough::OnContextLost() {
+  if (cleanup_cb_)
+    std::move(cleanup_cb_).Run(this);
+  texture_->MarkContextLost();
+  shared_context_state_->RemoveContextLostObserver(this);
+  shared_context_state_ = nullptr;
+}
+
 }  // namespace gles2
 }  // namespace gpu
diff --git a/gpu/command_buffer/service/abstract_texture_impl_shared_context_state.h b/gpu/command_buffer/service/abstract_texture_impl_shared_context_state.h
index f9b8757..8630e7bf 100644
--- a/gpu/command_buffer/service/abstract_texture_impl_shared_context_state.h
+++ b/gpu/command_buffer/service/abstract_texture_impl_shared_context_state.h
@@ -15,6 +15,7 @@
 
 namespace gles2 {
 class Texture;
+class TexturePassthrough;
 
 // Implementation of AbstractTexture which will be used to create
 // AbstractTextures on ShareContextState.
@@ -53,6 +54,36 @@
   CleanupCallback cleanup_cb_;
 };
 
+// Implementation of AbstractTexture which will be used to create
+// AbstractTextures on SharedContextState for the passthrough command decoder.
+class GPU_GLES2_EXPORT AbstractTextureImplOnSharedContextPassthrough
+    : public AbstractTexture,
+      public SharedContextState::ContextLostObserver {
+ public:
+  AbstractTextureImplOnSharedContextPassthrough(
+      GLenum target,
+      scoped_refptr<gpu::SharedContextState> shared_context_state);
+  ~AbstractTextureImplOnSharedContextPassthrough() override;
+
+  // AbstractTexture implementation.
+  TextureBase* GetTextureBase() const override;
+  void SetParameteri(GLenum pname, GLint param) override;
+  void BindStreamTextureImage(GLStreamTextureImage* image,
+                              GLuint service_id) override;
+  void BindImage(gl::GLImage* image, bool client_managed) override;
+  gl::GLImage* GetImage() const override;
+  void SetCleared() override;
+  void SetCleanupCallback(CleanupCallback cb) override;
+
+  // SharedContextState::ContextLostObserver implementation.
+  void OnContextLost() override;
+
+ private:
+  scoped_refptr<TexturePassthrough> texture_;
+  scoped_refptr<SharedContextState> shared_context_state_;
+  CleanupCallback cleanup_cb_;
+};
+
 }  // namespace gles2
 }  // namespace gpu
 
diff --git a/gpu/command_buffer/service/feature_info.h b/gpu/command_buffer/service/feature_info.h
index 4078067..7c1d2d2 100644
--- a/gpu/command_buffer/service/feature_info.h
+++ b/gpu/command_buffer/service/feature_info.h
@@ -225,6 +225,10 @@
     return oes_texture_half_float_linear_available_;
   }
 
+  bool is_passthrough_cmd_decoder() const {
+    return is_passthrough_cmd_decoder_;
+  }
+
  private:
   friend class base::RefCounted<FeatureInfo>;
   friend class BufferManagerClientSideArraysTest;
diff --git a/gpu/command_buffer/service/gl_utils.cc b/gpu/command_buffer/service/gl_utils.cc
index d0a037182..193e9e93 100644
--- a/gpu/command_buffer/service/gl_utils.cc
+++ b/gpu/command_buffer/service/gl_utils.cc
@@ -1042,5 +1042,29 @@
   return true;
 }
 
+GLenum GetTextureBindingQuery(GLenum texture_type) {
+  switch (texture_type) {
+    case GL_TEXTURE_2D:
+      return GL_TEXTURE_BINDING_2D;
+    case GL_TEXTURE_2D_ARRAY:
+      return GL_TEXTURE_BINDING_2D_ARRAY;
+    case GL_TEXTURE_2D_MULTISAMPLE:
+      return GL_TEXTURE_BINDING_2D_MULTISAMPLE;
+    case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
+      return GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY;
+    case GL_TEXTURE_3D:
+      return GL_TEXTURE_BINDING_3D;
+    case GL_TEXTURE_EXTERNAL_OES:
+      return GL_TEXTURE_BINDING_EXTERNAL_OES;
+    case GL_TEXTURE_RECTANGLE:
+      return GL_TEXTURE_BINDING_RECTANGLE;
+    case GL_TEXTURE_CUBE_MAP:
+      return GL_TEXTURE_BINDING_CUBE_MAP;
+    default:
+      NOTREACHED();
+      return 0;
+  }
+}
+
 }  // namespace gles2
 }  // namespace gpu
diff --git a/gpu/command_buffer/service/gl_utils.h b/gpu/command_buffer/service/gl_utils.h
index 8cf798c7..204f606 100644
--- a/gpu/command_buffer/service/gl_utils.h
+++ b/gpu/command_buffer/service/gl_utils.h
@@ -150,6 +150,8 @@
                                                 GLenum source_internal_format,
                                                 GLenum dest_internal_format,
                                                 std::string* output_error_msg);
+
+GLenum GetTextureBindingQuery(GLenum texture_type);
 }  // namespace gles2
 }  // namespace gpu
 
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
index e276178..cfea2e56 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
@@ -736,9 +736,17 @@
         gl::GetRequestableGLExtensionsFromCurrentContext());
 
     static constexpr const char* kRequiredFunctionalityExtensions[] = {
-        "GL_ANGLE_memory_size",   "GL_CHROMIUM_bind_uniform_location",
-        "GL_CHROMIUM_sync_query", "GL_EXT_debug_marker",
-        "GL_KHR_debug",           "GL_NV_fence",
+        "GL_ANGLE_memory_size",
+        "GL_ANGLE_native_id",
+        "GL_ANGLE_texture_storage_external",
+        "GL_CHROMIUM_bind_uniform_location",
+        "GL_CHROMIUM_sync_query",
+        "GL_EXT_debug_marker",
+        "GL_KHR_debug",
+        "GL_NV_fence",
+        "GL_OES_EGL_image",
+        "GL_OES_EGL_image_external",
+        "GL_OES_EGL_image_external_essl3",
     };
     RequestExtensions(api(), requestable_extensions,
                       kRequiredFunctionalityExtensions,
@@ -779,9 +787,6 @@
           "GL_NV_pack_subimage",
           "GL_OES_compressed_ETC1_RGB8_texture",
           "GL_OES_depth32",
-          "GL_OES_EGL_image",
-          "GL_OES_EGL_image_external",
-          "GL_OES_EGL_image_external_essl3",
           "GL_OES_packed_depth_stencil",
           "GL_OES_rgb8_rgba8",
           "GL_OES_vertex_array_object",
@@ -1577,7 +1582,8 @@
   GLuint service_id = 0;
   api()->glGenTexturesFn(1, &service_id);
   scoped_refptr<TexturePassthrough> texture(
-      new TexturePassthrough(service_id, target));
+      new TexturePassthrough(service_id, target, internal_format, width, height,
+                             depth, border, format, type));
 
   // Unretained is safe, because of the destruction cb.
   std::unique_ptr<PassthroughAbstractTextureImpl> abstract_texture =
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
index 5e8cc73..1a30331 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
@@ -2428,7 +2428,7 @@
   context_creation_attribs_.stencil_size = 8;
   context_creation_attribs_.bind_generates_resource = true;
 
-  gl::init::InitializeGLOneOffImplementation(gl::kGLImplementationEGLGLES2,
+  gl::init::InitializeGLOneOffImplementation(gl::kGLImplementationEGLANGLE,
                                              false, false, false, true);
 
   scoped_refptr<gles2::FeatureInfo> feature_info = new gles2::FeatureInfo();
diff --git a/gpu/command_buffer/service/gpu_switches.cc b/gpu/command_buffer/service/gpu_switches.cc
index e7798d4..c515c94 100644
--- a/gpu/command_buffer/service/gpu_switches.cc
+++ b/gpu/command_buffer/service/gpu_switches.cc
@@ -6,13 +6,6 @@
 
 #include "base/macros.h"
 
-namespace gpu {
-
-const char kCmdDecoderValidatingName[] = "validating";
-const char kCmdDecoderPassthroughName[] = "passthrough";
-
-}  // namespace gpu
-
 namespace switches {
 
 // Always return success when compiling a shader. Linking will still fail.
@@ -69,10 +62,6 @@
 // round intermediate values in ANGLE.
 const char kEmulateShaderPrecision[] = "emulate-shader-precision";
 
-// Use the Pass-through command decoder, skipping all validation and state
-// tracking.
-const char kUseCmdDecoder[] = "use-cmd-decoder";
-
 // Enable Vulkan support and select Vulkan implementation, must also have
 // ENABLE_VULKAN defined.
 const char kUseVulkan[] = "use-vulkan";
diff --git a/gpu/command_buffer/service/gpu_switches.h b/gpu/command_buffer/service/gpu_switches.h
index aa6dfbeb..9c71810 100644
--- a/gpu/command_buffer/service/gpu_switches.h
+++ b/gpu/command_buffer/service/gpu_switches.h
@@ -10,13 +10,6 @@
 #include "gpu/config/gpu_switches.h"
 #include "gpu/gpu_export.h"
 
-namespace gpu {
-
-// The command decoder names that can be passed to --use-cmd-decoder.
-GPU_EXPORT extern const char kCmdDecoderValidatingName[];
-GPU_EXPORT extern const char kCmdDecoderPassthroughName[];
-}  // namespace gpu
-
 namespace switches {
 
 GPU_EXPORT extern const char kCompileShaderAlwaysSucceeds[];
@@ -35,7 +28,6 @@
 GPU_EXPORT extern const char kEnableThreadedTextureMailboxes[];
 GPU_EXPORT extern const char kGLShaderIntermOutput[];
 GPU_EXPORT extern const char kEmulateShaderPrecision[];
-GPU_EXPORT extern const char kUseCmdDecoder[];
 GPU_EXPORT extern const char kUseVulkan[];
 GPU_EXPORT extern const char kVulkanImplementationNameNative[];
 GPU_EXPORT extern const char kVulkanImplementationNameSwiftshader[];
diff --git a/gpu/command_buffer/service/service_utils.cc b/gpu/command_buffer/service/service_utils.cc
index a97c10e..a1ed819 100644
--- a/gpu/command_buffer/service/service_utils.cc
+++ b/gpu/command_buffer/service/service_utils.cc
@@ -11,8 +11,8 @@
 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
 #include "gpu/command_buffer/service/context_group.h"
 #include "gpu/command_buffer/service/gpu_switches.h"
-#include "gpu/config/gpu_finch_features.h"
 #include "ui/gl/gl_switches.h"
+#include "ui/gl/gl_utils.h"
 
 #if defined(USE_EGL)
 #include "ui/gl/gl_surface_egl.h"
@@ -86,20 +86,7 @@
 }
 
 bool UsePassthroughCommandDecoder(const base::CommandLine* command_line) {
-  std::string switch_value;
-  if (command_line->HasSwitch(switches::kUseCmdDecoder)) {
-    switch_value = command_line->GetSwitchValueASCII(switches::kUseCmdDecoder);
-  }
-
-  if (switch_value == kCmdDecoderPassthroughName) {
-    return true;
-  } else if (switch_value == kCmdDecoderValidatingName) {
-    return false;
-  } else {
-    // Unrecognized or missing switch, use the default.
-    return base::FeatureList::IsEnabled(
-        features::kDefaultPassthroughCommandDecoder);
-  }
+  return gl::UsePassthroughCommandDecoder(command_line);
 }
 
 bool PassthroughCommandDecoderSupported() {
diff --git a/gpu/command_buffer/service/texture_definition.cc b/gpu/command_buffer/service/texture_definition.cc
index f3cd14c..0ecb375 100644
--- a/gpu/command_buffer/service/texture_definition.cc
+++ b/gpu/command_buffer/service/texture_definition.cc
@@ -270,6 +270,7 @@
   switch (gl::GetGLImplementation()) {
 #if !defined(OS_MACOSX)
     case gl::kGLImplementationEGLGLES2:
+    case gl::kGLImplementationEGLANGLE:
       return NativeImageBufferEGL::Create(texture_id);
 #endif
     case gl::kGLImplementationMockGL:
diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc
index 7c4753a8..f9ad68e 100644
--- a/gpu/command_buffer/service/texture_manager.cc
+++ b/gpu/command_buffer/service/texture_manager.cc
@@ -516,6 +516,27 @@
   TextureBase::SetTarget(target);
 }
 
+TexturePassthrough::TexturePassthrough(GLuint service_id,
+                                       GLenum target,
+                                       GLenum internal_format,
+                                       GLsizei width,
+                                       GLsizei height,
+                                       GLsizei depth,
+                                       GLint border,
+                                       GLenum format,
+                                       GLenum type)
+    : TexturePassthrough(service_id, target) {
+  DCHECK(target != GL_TEXTURE_CUBE_MAP);
+  LevelInfo* level_info = GetLevelInfo(target, 0);
+  level_info->internal_format = internal_format;
+  level_info->width = width;
+  level_info->height = height;
+  level_info->depth = depth;
+  level_info->border = border;
+  level_info->format = format;
+  level_info->type = type;
+}
+
 TexturePassthrough::~TexturePassthrough() {
   DeleteFromMailboxManager();
   if (have_context_) {
@@ -608,6 +629,32 @@
     gl::GLImage* image,
     GLStreamTextureImage* stream_texture_image,
     GLuint service_id) {
+  LevelInfo* level_info = GetLevelInfo(target, level);
+  level_info->image = image;
+  level_info->stream_texture_image = stream_texture_image;
+
+  if (service_id != 0 && service_id != service_id_) {
+    service_id_ = service_id;
+  }
+
+  if (stream_texture_image &&
+      gl::g_current_gl_driver->ext.b_GL_ANGLE_texture_external_update) {
+    // Notify the texture that its size has changed
+    GLint prev_texture = 0;
+    glGetIntegerv(GetTextureBindingQuery(target_), &prev_texture);
+    glBindTexture(target_, service_id_);
+
+    glTexImage2DExternalANGLE(target_, level, level_info->internal_format,
+                              level_info->width, level_info->height,
+                              level_info->border, level_info->format,
+                              level_info->type);
+
+    glBindTexture(target_, prev_texture);
+  }
+}
+
+TexturePassthrough::LevelInfo* TexturePassthrough::GetLevelInfo(GLenum target,
+                                                                GLint level) {
   size_t face_idx = GLES2Util::GLTargetToFaceIndex(target);
   DCHECK(face_idx < level_images_.size());
   DCHECK(level >= 0);
@@ -617,12 +664,7 @@
     level_images_[face_idx].resize(level + 1);
   }
 
-  level_images_[face_idx][level].image = image;
-  level_images_[face_idx][level].stream_texture_image = stream_texture_image;
-
-  if (service_id != 0 && service_id != service_id_) {
-    service_id_ = service_id;
-  }
+  return &level_images_[face_idx][level];
 }
 
 Texture::Texture(GLuint service_id)
diff --git a/gpu/command_buffer/service/texture_manager.h b/gpu/command_buffer/service/texture_manager.h
index c85a2b9c..3db2189 100644
--- a/gpu/command_buffer/service/texture_manager.h
+++ b/gpu/command_buffer/service/texture_manager.h
@@ -73,6 +73,15 @@
       public base::SupportsWeakPtr<TexturePassthrough> {
  public:
   TexturePassthrough(GLuint service_id, GLenum target);
+  TexturePassthrough(GLuint service_id,
+                     GLenum target,
+                     GLenum internal_format,
+                     GLsizei width,
+                     GLsizei height,
+                     GLsizei depth,
+                     GLint border,
+                     GLenum format,
+                     GLenum type);
 
   // TextureBase implementation:
   TextureBase::Type GetType() const override;
@@ -129,10 +138,20 @@
     LevelInfo(const LevelInfo& rhs);
     ~LevelInfo();
 
+    GLenum internal_format = 0;
+    GLsizei width = 0;
+    GLsizei height = 0;
+    GLsizei depth = 0;
+    GLint border = 0;
+    GLenum format = 0;
+    GLenum type = 0;
+
     scoped_refptr<gl::GLImage> image;
     scoped_refptr<GLStreamTextureImage> stream_texture_image;
   };
 
+  LevelInfo* GetLevelInfo(GLenum target, GLint level);
+
   std::vector<std::vector<LevelInfo>> level_images_;
 
   DISALLOW_COPY_AND_ASSIGN(TexturePassthrough);
diff --git a/gpu/command_buffer/tests/fuzzer_main.cc b/gpu/command_buffer/tests/fuzzer_main.cc
index b3d8018..f2f66e5 100644
--- a/gpu/command_buffer/tests/fuzzer_main.cc
+++ b/gpu/command_buffer/tests/fuzzer_main.cc
@@ -319,7 +319,7 @@
     command_line->AppendSwitchASCII(switches::kUseANGLE,
                                     gl::kANGLEImplementationNullName);
     CHECK(gl::init::InitializeGLOneOffImplementation(
-        gl::kGLImplementationEGLGLES2, false, false, false, true));
+        gl::kGLImplementationEGLANGLE, false, false, false, true));
 #elif defined(GPU_FUZZER_USE_SWIFTSHADER)
     command_line->AppendSwitchASCII(switches::kUseGL,
                                     gl::kGLImplementationSwiftShaderName);
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
index 66675ae1..ae69fcb 100644
--- a/gpu/config/gpu_finch_features.cc
+++ b/gpu/config/gpu_finch_features.cc
@@ -63,17 +63,18 @@
     "DefaultEnableOopRasterization", base::FEATURE_DISABLED_BY_DEFAULT};
 #endif
 
-// Use the passthrough command decoder by default.  This can be overridden with
-// the --use-cmd-decoder=passthrough or --use-cmd-decoder=validating flags.
-const base::Feature kDefaultPassthroughCommandDecoder{
-    "DefaultPassthroughCommandDecoder", base::FEATURE_DISABLED_BY_DEFAULT};
-
 // Allow putting a video swapchain underneath the main swapchain, so overlays
 // can be used even if there are controls on top of the video. It can be
 // enabled only when overlay is supported.
 const base::Feature kDirectCompositionUnderlays{
     "DirectCompositionUnderlays", base::FEATURE_ENABLED_BY_DEFAULT};
 
+#if defined(OS_WIN)
+// Use a high priority for GPU process on Windows.
+const base::Feature kGpuProcessHighPriorityWin{
+    "GpuProcessHighPriorityWin", base::FEATURE_DISABLED_BY_DEFAULT};
+#endif
+
 // Use ThreadPriority::DISPLAY for GPU main, viz compositor and IO threads.
 #if defined(OS_ANDROID) || defined(OS_CHROMEOS)
 const base::Feature kGpuUseDisplayThreadPriority{
diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h
index c222413..4fbec10 100644
--- a/gpu/config/gpu_finch_features.h
+++ b/gpu/config/gpu_finch_features.h
@@ -25,10 +25,12 @@
 
 GPU_EXPORT extern const base::Feature kDefaultEnableOopRasterization;
 
-GPU_EXPORT extern const base::Feature kDefaultPassthroughCommandDecoder;
-
 GPU_EXPORT extern const base::Feature kDirectCompositionUnderlays;
 
+#if defined(OS_WIN)
+GPU_EXPORT extern const base::Feature kGpuProcessHighPriorityWin;
+#endif
+
 GPU_EXPORT extern const base::Feature kGpuUseDisplayThreadPriority;
 
 GPU_EXPORT extern const base::Feature
diff --git a/gpu/ipc/common/gpu_memory_buffer_impl_shared_memory.cc b/gpu/ipc/common/gpu_memory_buffer_impl_shared_memory.cc
index a5916b2..c83c120 100644
--- a/gpu/ipc/common/gpu_memory_buffer_impl_shared_memory.cc
+++ b/gpu/ipc/common/gpu_memory_buffer_impl_shared_memory.cc
@@ -105,6 +105,46 @@
     DestructionCallback callback) {
   DCHECK(handle.region.IsValid());
 
+  size_t minimum_stride = 0;
+  if (!gfx::RowSizeForBufferFormatChecked(size.width(), format, 0,
+                                          &minimum_stride)) {
+    return nullptr;
+  }
+
+  size_t min_buffer_size = 0;
+
+  if (gfx::NumberOfPlanesForBufferFormat(format) == 1) {
+    if (static_cast<size_t>(handle.stride) < minimum_stride)
+      return nullptr;
+
+    base::CheckedNumeric<size_t> checked_min_buffer_size =
+        base::MakeCheckedNum(handle.stride) *
+            (base::MakeCheckedNum(size.height()) - 1) +
+        minimum_stride;
+    if (!checked_min_buffer_size.AssignIfValid(&min_buffer_size))
+      return nullptr;
+  } else {
+    // Custom layout (i.e. non-standard stride) is not allowed for multi-plane
+    // formats.
+    if (static_cast<size_t>(handle.stride) != minimum_stride)
+      return nullptr;
+
+    if (!gfx::BufferSizeForBufferFormatChecked(size, format,
+                                               &min_buffer_size)) {
+      return nullptr;
+    }
+  }
+
+  size_t min_buffer_size_with_offset = 0;
+  if (!base::CheckAdd(handle.offset, min_buffer_size)
+           .AssignIfValid(&min_buffer_size_with_offset)) {
+    return nullptr;
+  }
+
+  if (min_buffer_size_with_offset > handle.region.GetSize()) {
+    return nullptr;
+  }
+
   return base::WrapUnique(new GpuMemoryBufferImplSharedMemory(
       handle.id, size, format, usage, std::move(callback),
       std::move(handle.region), base::WritableSharedMemoryMapping(),
diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
index a945e81..d396eff 100644
--- a/gpu/ipc/service/gpu_init.cc
+++ b/gpu/ipc/service/gpu_init.cc
@@ -85,12 +85,12 @@
 
 void InitializePlatformOverlaySettings(GPUInfo* gpu_info) {
 #if defined(OS_WIN)
-// This has to be called after a context is created, active GPU is identified,
-// and GPU driver bug workarounds are computed again. Otherwise the workaround
-// |disable_direct_composition| may not be correctly applied.
-// Also, this has to be called after falling back to SwiftShader decision is
-// finalized because this function depends on GL is ANGLE's GLES or not.
-  if (gl::GetGLImplementation() == gl::kGLImplementationEGLGLES2) {
+  // This has to be called after a context is created, active GPU is identified,
+  // and GPU driver bug workarounds are computed again. Otherwise the workaround
+  // |disable_direct_composition| may not be correctly applied.
+  // Also, this has to be called after falling back to SwiftShader decision is
+  // finalized because this function depends on GL is ANGLE's GLES or not.
+  if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE) {
     DCHECK(gpu_info);
     gpu_info->direct_composition =
         gl::DirectCompositionSurfaceWin::IsDirectCompositionSupported();
diff --git a/gpu/ipc/service/gpu_watchdog_thread.cc b/gpu/ipc/service/gpu_watchdog_thread.cc
index 273fb3e..1ad9243e 100644
--- a/gpu/ipc/service/gpu_watchdog_thread.cc
+++ b/gpu/ipc/service/gpu_watchdog_thread.cc
@@ -134,6 +134,10 @@
   UMA_HISTOGRAM_ENUMERATION("GPU.WatchdogThread.Event", thread_event);
 }
 
+bool GpuWatchdogThreadImplV1::IsGpuHangDetected() {
+  return false;
+}
+
 void GpuWatchdogThreadImplV1::Init() {
   // Schedule the first check.
   OnCheck(false);
diff --git a/gpu/ipc/service/gpu_watchdog_thread.h b/gpu/ipc/service/gpu_watchdog_thread.h
index fe05fc2..20dc9955 100644
--- a/gpu/ipc/service/gpu_watchdog_thread.h
+++ b/gpu/ipc/service/gpu_watchdog_thread.h
@@ -60,6 +60,9 @@
 
   virtual void GpuWatchdogHistogram(GpuWatchdogThreadEvent thread_event) = 0;
 
+  // Return status for the watchdog tests
+  virtual bool IsGpuHangDetected() = 0;
+
  protected:
   GpuWatchdogThread();
 
@@ -81,6 +84,7 @@
   void OnForegrounded() override;
   void OnInitComplete() override {}
   void GpuWatchdogHistogram(GpuWatchdogThreadEvent thread_event) override;
+  bool IsGpuHangDetected() override;
 
   // gl::ProgressReporter implementation:
   void ReportProgress() override;
diff --git a/gpu/ipc/service/gpu_watchdog_thread_v2.cc b/gpu/ipc/service/gpu_watchdog_thread_v2.cc
index f9c0e365..3524d26 100644
--- a/gpu/ipc/service/gpu_watchdog_thread_v2.cc
+++ b/gpu/ipc/service/gpu_watchdog_thread_v2.cc
@@ -18,23 +18,23 @@
 
 namespace {
 #if defined(CYGPROFILE_INSTRUMENTATION)
-const int kGpuTimeoutInSec = 30;
+constexpr int64_t kGpuTimeoutInSeconds = 30;
 #elif defined(OS_WIN) || defined(OS_MACOSX)
-const int kGpuTimeoutInSec = 15;
+constexpr int64_t kGpuTimeoutInSeconds = 15;
 #else
-const int kGpuTimeoutInSec = 10;
+constexpr int64_t kGpuTimeoutInSeconds = 10;
 #endif
 }  // namespace
 
-GpuWatchdogThreadImplV2::GpuWatchdogThreadImplV2()
-    : watchdog_timeout_(base::TimeDelta::FromSeconds(kGpuTimeoutInSec)),
+GpuWatchdogThreadImplV2::GpuWatchdogThreadImplV2(base::TimeDelta timeout,
+                                                 bool is_test_mode)
+    : watchdog_timeout_(timeout),
+      is_test_mode_(is_test_mode),
       watched_task_runner_(base::ThreadTaskRunnerHandle::Get()),
       weak_factory_(this) {
   base::MessageLoopCurrent::Get()->AddTaskObserver(this);
   weak_ptr_ = weak_factory_.GetWeakPtr();
-  GpuWatchdogHistogram(GpuWatchdogThreadEvent::kGpuWatchdogStart);
   Arm();
-  watchdog_start_time_ = base::TimeTicks::Now();
 }
 
 GpuWatchdogThreadImplV2::~GpuWatchdogThreadImplV2() {
@@ -48,8 +48,11 @@
 
 // static
 std::unique_ptr<GpuWatchdogThreadImplV2> GpuWatchdogThreadImplV2::Create(
-    bool start_backgrounded) {
-  auto watchdog_thread = base::WrapUnique(new GpuWatchdogThreadImplV2);
+    bool start_backgrounded,
+    base::TimeDelta timeout,
+    bool is_test_mode) {
+  auto watchdog_thread =
+      base::WrapUnique(new GpuWatchdogThreadImplV2(timeout, is_test_mode));
   base::Thread::Options options;
   options.timer_slack = base::TIMER_SLACK_MAXIMUM;
   watchdog_thread->StartWithOptions(options);
@@ -58,11 +61,18 @@
   return watchdog_thread;
 }
 
+// static
+std::unique_ptr<GpuWatchdogThreadImplV2> GpuWatchdogThreadImplV2::Create(
+    bool start_backgrounded) {
+  return Create(start_backgrounded,
+                base::TimeDelta::FromSeconds(kGpuTimeoutInSeconds), false);
+}
+
 // Do not add power observer during watchdog init, PowerMonitor might not be up
 // running yet.
 void GpuWatchdogThreadImplV2::AddPowerObserver() {
   // Forward it to the watchdog thread. Call PowerMonitor::AddObserver on the
-  // watchdog thread so that  OnSuspend and OnResume will be called on watchdog
+  // watchdog thread so that OnSuspend and OnResume will be called on watchdog
   // thread.
   task_runner()->PostTask(
       FROM_HERE, base::BindOnce(&GpuWatchdogThreadImplV2::OnAddPowerObserver,
@@ -91,10 +101,13 @@
 }
 
 void GpuWatchdogThreadImplV2::Init() {
+  last_arm_disarm_counter_ = base::subtle::NoBarrier_Load(&arm_disarm_counter_);
   task_runner()->PostDelayedTask(
       FROM_HERE,
       base::BindOnce(&GpuWatchdogThreadImplV2::OnWatchdogTimeout, weak_ptr_),
       watchdog_timeout_);
+  watchdog_start_time_ = base::TimeTicks::Now();
+  GpuWatchdogHistogram(GpuWatchdogThreadEvent::kGpuWatchdogStart);
 }
 
 void GpuWatchdogThreadImplV2::CleanUp() {
@@ -176,7 +189,7 @@
 }
 
 void GpuWatchdogThreadImplV2::InProgress() {
-  // This is equivalent to Disarm() + Arm().
+  // Increment by 2. This is equivalent to Disarm() + Arm().
   base::subtle::NoBarrier_AtomicIncrement(&arm_disarm_counter_, 2);
 
   // Now it's an odd number.
@@ -208,6 +221,12 @@
 }
 
 void GpuWatchdogThreadImplV2::DeliberatelyTerminateToRecoverFromHang() {
+  // If this is for gpu testing, do not terminate the gpu process.
+  if (is_test_mode_) {
+    test_result_timeout_and_gpu_hang_.Set();
+    return;
+  }
+
 #if defined(OS_WIN)
   if (IsDebuggerPresent())
     return;
@@ -237,4 +256,10 @@
   UMA_HISTOGRAM_ENUMERATION("GPU.WatchdogThread.Event", thread_event);
 }
 
+// For gpu testing only. Return whether a GPU hang was detected or not.
+bool GpuWatchdogThreadImplV2::IsGpuHangDetected() {
+  DCHECK(is_test_mode_);
+  return test_result_timeout_and_gpu_hang_.IsSet();
+}
+
 }  // namespace gpu
diff --git a/gpu/ipc/service/gpu_watchdog_thread_v2.h b/gpu/ipc/service/gpu_watchdog_thread_v2.h
index cf8021ab..b049c0c2 100644
--- a/gpu/ipc/service/gpu_watchdog_thread_v2.h
+++ b/gpu/ipc/service/gpu_watchdog_thread_v2.h
@@ -15,6 +15,10 @@
  public:
   static std::unique_ptr<GpuWatchdogThreadImplV2> Create(
       bool start_backgrounded);
+
+  static std::unique_ptr<GpuWatchdogThreadImplV2>
+  Create(bool start_backgrounded, base::TimeDelta timeout, bool test_mode);
+
   ~GpuWatchdogThreadImplV2() override;
 
   // Implements GpuWatchdogThread.
@@ -23,6 +27,7 @@
   void OnForegrounded() override;
   void OnInitComplete() override;
   void GpuWatchdogHistogram(GpuWatchdogThreadEvent thread_event) override;
+  bool IsGpuHangDetected() override;
 
   // Implements base::Thread.
   void Init() override;
@@ -40,7 +45,7 @@
   void OnResume() override;
 
  private:
-  GpuWatchdogThreadImplV2();
+  GpuWatchdogThreadImplV2(base::TimeDelta timeout, bool test_mode);
   void OnAddPowerObserver();
   void OnWatchdogBackgrounded();
   void OnWatchdogForegrounded();
@@ -81,6 +86,11 @@
   // or stalled.
   bool is_backgrounded_ = false;
 
+  // For gpu testing only.
+  const bool is_test_mode_;
+  // Set by the watchdog thread and Read by the test thread.
+  base::AtomicFlag test_result_timeout_and_gpu_hang_;
+
   scoped_refptr<base::SingleThreadTaskRunner> watched_task_runner_;
 
   base::WeakPtr<GpuWatchdogThreadImplV2> weak_ptr_;
diff --git a/gpu/ipc/service/image_transport_surface_win.cc b/gpu/ipc/service/image_transport_surface_win.cc
index 0b1526c8..a365852 100644
--- a/gpu/ipc/service/image_transport_surface_win.cc
+++ b/gpu/ipc/service/image_transport_surface_win.cc
@@ -31,7 +31,7 @@
   scoped_refptr<gl::GLSurface> surface;
   bool override_vsync_for_multi_window_swap = false;
 
-  if (gl::GetGLImplementation() == gl::kGLImplementationEGLGLES2) {
+  if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE) {
     auto vsync_provider =
         std::make_unique<gl::VSyncProviderWin>(surface_handle);
 
diff --git a/headless/BUILD.gn b/headless/BUILD.gn
index 4e903b7..6f2bd95c 100644
--- a/headless/BUILD.gn
+++ b/headless/BUILD.gn
@@ -942,7 +942,7 @@
   fuchsia_package("headless_shell_pkg") {
     binary = ":headless_shell"
     package_name_override = "headless_shell"
-    sandbox_policy = "//build/config/fuchsia/testing_sandbox_policy"
+    manifest = "//build/config/fuchsia/tests.cmx"
   }
 
   fuchsia_package_runner("headless_shell_fuchsia") {
diff --git a/infra/config/cr-buildbucket.cfg b/infra/config/cr-buildbucket.cfg
index 6f859277..59d07158 100644
--- a/infra/config/cr-buildbucket.cfg
+++ b/infra/config/cr-buildbucket.cfg
@@ -2800,12 +2800,6 @@
       mixins: "builderless"
     }
     builders {
-      name: "linux-tcmalloc-rel"
-      dimensions: "os:Ubuntu-14.04"
-      dimensions: "cores:32"
-      mixins: "fyi-ci"
-    }
-    builders {
       name: "Mac deterministic (dbg)"
       dimensions: "os:Mac-10.13"
       dimensions: "cores:"
diff --git a/infra/config/luci-milo.cfg b/infra/config/luci-milo.cfg
index f469948b..3e0d6c3f 100644
--- a/infra/config/luci-milo.cfg
+++ b/infra/config/luci-milo.cfg
@@ -2258,10 +2258,6 @@
     category: "linux"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/linux-tcmalloc-rel"
-    category: "linux"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/linux-fieldtrial-rel"
     category: "linux"
   }
diff --git a/infra/config/luci-scheduler.cfg b/infra/config/luci-scheduler.cfg
index d1684b7..d7bd536 100644
--- a/infra/config/luci-scheduler.cfg
+++ b/infra/config/luci-scheduler.cfg
@@ -356,7 +356,6 @@
   triggers: "linux-ozone-rel"
   triggers: "linux-archive-rel"
   triggers: "linux-fieldtrial-rel"
-  triggers: "linux-tcmalloc-rel"
   triggers: "linux-trusty-rel"
   triggers: "linux-win_cross-rel"
   triggers: "mac-code-coverage-generation"
@@ -4098,16 +4097,6 @@
 }
 
 job {
-  id: "linux-tcmalloc-rel"
-  acl_sets: "default"
-  buildbucket: {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "luci.chromium.ci"
-    builder: "linux-tcmalloc-rel"
-  }
-}
-
-job {
   id: "WebKit Linux ASAN"
   acl_sets: "default"
   buildbucket: {
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
index 779a0149..446f7b5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -477,7 +477,7 @@
 <translation id="7961015016161918242">Jamais</translation>
 <translation id="7971521879845308059">Bloquer les pop-ups</translation>
 <translation id="7982789257301363584">Réseau</translation>
-<translation id="8007420562015504427">Recherche en mode incognito</translation>
+<translation id="8007420562015504427">Recherche en mode Navigation privée</translation>
 <translation id="8019783059653722575">Cela vous permet d'enregistrer et d'importer des photos.</translation>
 <translation id="802154636333426148">Échec du téléchargement</translation>
 <translation id="8023878949384262191">Développe la section.</translation>
diff --git a/ios/chrome/browser/autofill/automation/automation_action.mm b/ios/chrome/browser/autofill/automation/automation_action.mm
index 0a92f03..2366cf8 100644
--- a/ios/chrome/browser/autofill/automation/automation_action.mm
+++ b/ios/chrome/browser/autofill/automation/automation_action.mm
@@ -19,13 +19,10 @@
 #import "ios/chrome/browser/ui/infobars/infobar_constants.h"
 #import "ios/chrome/test/app/chrome_test_util.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
-#import "ios/testing/nserror_util.h"
-#include "ios/web/public/js_messaging/web_frame_util.h"
 #import "ios/web/public/js_messaging/web_frames_manager.h"
 #import "ios/web/public/test/earl_grey/web_view_actions.h"
 #import "ios/web/public/test/earl_grey/web_view_matchers.h"
 #include "ios/web/public/test/element_selector.h"
-#import "ios/web/public/test/js_test_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -262,28 +259,20 @@
 // selector passed in. The target element is passed in to the JS function
 // by the name "target", so example JS code is like:
 // return target.value
-- (id)executeJavascript:(std::string)function
+- (id)executeJavaScript:(std::string)function
                onTarget:(ElementSelector*)selector {
-  NSError* error;
+  NSString* javaScript = [NSString
+      stringWithFormat:@"    (function() {"
+                        "      try {"
+                        "        return function(target){%@}(%@);"
+                        "      } catch (ex) {return 'Exception encountered "
+                        "' + ex.message;}"
+                        "     "
+                        "    })();",
+                       base::SysUTF8ToNSString(function),
+                       selector.selectorScript];
 
-  id result = chrome_test_util::ExecuteJavaScript(
-      [NSString
-          stringWithFormat:@"    (function() {"
-                            "      try {"
-                            "        return function(target){%@}(%@);"
-                            "      } catch (ex) {return 'Exception encountered "
-                            "' + ex.message;}"
-                            "     "
-                            "    })();",
-                           base::SysUTF8ToNSString(function),
-                           selector.selectorScript],
-      &error);
-
-  if (error) {
-    GREYAssert(NO, @"Javascript execution error: %@", result);
-    return nil;
-  }
-  return result;
+  return [ChromeEarlGrey executeJavaScript:javaScript];
 }
 
 @end
@@ -323,36 +312,39 @@
     state_assertions.push_back(assertionString);
   }
 
-  GREYAssert(base::test::ios::WaitUntilConditionOrTimeout(
-                 base::test::ios::kWaitForActionTimeout,
-                 ^{
-                   return [self CheckForJsAssertionFailures:state_assertions] ==
-                          nil;
-                 }),
-             @"waitFor State change hasn't completed within timeout.");
+  NSString* conditionDescription =
+      @"waitFor State change hasn't completed within timeout.";
+  GREYCondition* waitForElement = [GREYCondition
+      conditionWithName:conditionDescription
+                  block:^{
+                    return
+                        [self checkForJsAssertionFailures:state_assertions] ==
+                        nil;
+                  }];
+  bool waitForCompleted =
+      [waitForElement waitWithTimeout:base::test::ios::kWaitForActionTimeout];
+  GREYAssertTrue(waitForCompleted, conditionDescription);
 }
 
 // Executes a vector of Javascript assertions on the webpage, returning the
 // first assertion that fails to be true, or nil if all assertions are true.
-- (NSString*)CheckForJsAssertionFailures:
+- (NSString*)checkForJsAssertionFailures:
     (const std::vector<std::string>&)assertions {
   for (std::string const& assertion : assertions) {
-    NSError* error;
     NSString* assertionString = base::SysUTF8ToNSString(assertion);
+    NSString* javascript = [NSString stringWithFormat:@""
+                                                       "    (function() {"
+                                                       "      try {"
+                                                       "        %@"
+                                                       "      } catch (ex) {}"
+                                                       "      return false;"
+                                                       "    })();",
+                                                      assertionString];
 
-    NSNumber* result =
-        base::mac::ObjCCastStrict<NSNumber>(chrome_test_util::ExecuteJavaScript(
-            [NSString stringWithFormat:@""
-                                        "    (function() {"
-                                        "      try {"
-                                        "        %@"
-                                        "      } catch (ex) {}"
-                                        "      return false;"
-                                        "    })();",
-                                       assertionString],
-            &error));
+    NSNumber* result = base::mac::ObjCCastStrict<NSNumber>(
+        [ChromeEarlGrey executeJavaScript:javascript]);
 
-    if (![result boolValue] || error) {
+    if (![result boolValue]) {
       return assertionString;
     }
   }
@@ -393,11 +385,11 @@
       [self getStringFromDictionaryWithKey:"expectedValue"]);
 
   NSString* predictionType = base::mac::ObjCCastStrict<NSString>([self
-      executeJavascript:"return target.placeholder;"
+      executeJavaScript:"return target.placeholder;"
                onTarget:[self selectorForTarget]]);
 
   NSString* autofilledValue = base::mac::ObjCCastStrict<NSString>(
-      [self executeJavascript:"return target.value;" onTarget:selector]);
+      [self executeJavaScript:"return target.value;" onTarget:selector]);
 
   GREYAssertEqualObjects(predictionType, expectedType,
                          @"Expected prediction type %@ but got %@",
@@ -418,7 +410,7 @@
   [ChromeEarlGrey waitForWebStateContainingElement:selector];
 
   int selectedIndex = [self getIntFromDictionaryWithKey:"index"];
-  [self executeJavascript:
+  [self executeJavaScript:
             base::SysNSStringToUTF8([NSString
                 stringWithFormat:@"target.options.selectedIndex = %d; "
                                  @"triggerOnChangeEventOnElement(target);",
@@ -445,7 +437,7 @@
 - (void)execute {
   ElementSelector* selector = [self selectorForTarget];
   std::string value = [self getStringFromDictionaryWithKey:"value"];
-  [self executeJavascript:
+  [self executeJavaScript:
             base::SysNSStringToUTF8([NSString
                 stringWithFormat:
                     @"__gCrWeb.fill.setInputElementValue(\"%s\", target);",
diff --git a/ios/chrome/browser/autofill/manual_fill/BUILD.gn b/ios/chrome/browser/autofill/manual_fill/BUILD.gn
index a15c0c7..537d9ddb 100644
--- a/ios/chrome/browser/autofill/manual_fill/BUILD.gn
+++ b/ios/chrome/browser/autofill/manual_fill/BUILD.gn
@@ -11,11 +11,12 @@
   ]
   deps = [
     "//base",
-    "//components/autofill/core/common:common",
-    "//components/keyed_service/core:core",
-    "//components/password_manager/core/browser:browser",
+    "//components/autofill/core/common",
+    "//components/keyed_service/core",
+    "//components/password_manager/core/browser",
+    "//components/password_manager/core/browser:affiliation",
     "//ios/chrome/browser/browser_state:browser_state",
-    "//ios/chrome/browser/passwords:passwords",
+    "//ios/chrome/browser/passwords",
   ]
   libs = [ "UIKit.framework" ]
   configs += [ "//build/config/compiler:enable_arc" ]
@@ -30,11 +31,11 @@
   deps = [
     ":manual_fill",
     "//base/test:test_support",
-    "//components/autofill/core/common:common",
-    "//components/keyed_service/core:core",
+    "//components/autofill/core/common",
+    "//components/keyed_service/core",
     "//components/password_manager/core/browser:test_support",
     "//ios/chrome/browser/browser_state:test_support",
-    "//ios/chrome/browser/passwords:passwords",
-    "//testing/gtest:gtest",
+    "//ios/chrome/browser/passwords",
+    "//testing/gtest",
   ]
 }
diff --git a/ios/chrome/browser/google/google_url_tracker_factory.cc b/ios/chrome/browser/google/google_url_tracker_factory.cc
index fd9c1dd0..10705a79 100644
--- a/ios/chrome/browser/google/google_url_tracker_factory.cc
+++ b/ios/chrome/browser/google/google_url_tracker_factory.cc
@@ -51,7 +51,7 @@
 
   return std::make_unique<GoogleURLTracker>(
       base::WrapUnique(new GoogleURLTrackerClientImpl(browser_state)),
-      GoogleURLTracker::NORMAL_MODE,
+      GoogleURLTracker::ALWAYS_DOT_COM_MODE,
       GetApplicationContext()->GetNetworkConnectionTracker());
 }
 
diff --git a/ios/chrome/browser/passwords/BUILD.gn b/ios/chrome/browser/passwords/BUILD.gn
index d7b9cc0..e77cdd1 100644
--- a/ios/chrome/browser/passwords/BUILD.gn
+++ b/ios/chrome/browser/passwords/BUILD.gn
@@ -53,6 +53,7 @@
     "//components/keyed_service/core",
     "//components/keyed_service/ios",
     "//components/password_manager/core/browser",
+    "//components/password_manager/core/browser:affiliation",
     "//components/password_manager/core/browser/form_parsing",
     "//components/password_manager/core/common",
     "//components/password_manager/ios",
diff --git a/ios/chrome/browser/ui/alert_view_controller/BUILD.gn b/ios/chrome/browser/ui/alert_view_controller/BUILD.gn
index 257e5b7..531ec33 100644
--- a/ios/chrome/browser/ui/alert_view_controller/BUILD.gn
+++ b/ios/chrome/browser/ui/alert_view_controller/BUILD.gn
@@ -15,6 +15,7 @@
     "//ios/chrome/browser/ui/elements",
     "//ios/chrome/browser/ui/presenters",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/common/colors",
     "//ios/chrome/common/ui_util",
   ]
   libs = [ "UIKit.framework" ]
diff --git a/ios/chrome/browser/ui/alert_view_controller/alert_view_controller.mm b/ios/chrome/browser/ui/alert_view_controller/alert_view_controller.mm
index dea6873..85be464 100644
--- a/ios/chrome/browser/ui/alert_view_controller/alert_view_controller.mm
+++ b/ios/chrome/browser/ui/alert_view_controller/alert_view_controller.mm
@@ -9,6 +9,8 @@
 #import "ios/chrome/browser/ui/elements/gray_highlight_button.h"
 #import "ios/chrome/browser/ui/elements/text_field_configuration.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
+#import "ios/chrome/common/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui_util/constraints_ui_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
@@ -60,9 +62,7 @@
 constexpr CGFloat kTextfieldInset = 8;
 
 // Colors for the action buttons.
-constexpr int kButtonTextDefaultColor = 0x0579ff;
 constexpr int kButtonTextDestructiveColor = 0xdf322f;
-constexpr int kTextfieldBackgroundColor = 0xf7f7f7;
 
 // This is how many bits UIViewAnimationCurve needs to be shifted to be in
 // UIViewAnimationOptions format. Must match the one in UIView.h.
@@ -106,12 +106,34 @@
 // will end up calling |resignFirstResponder| on this.
 @property(nonatomic, weak) UITextField* lastFocusedTextField;
 
+// This holds the text field stack view. A reference is needed because its
+// layer.borderColor is manually set. As that is a CGColor, it must be updated
+// when the trait collection changes from light to dark mode.
+@property(nonatomic, weak) UIView* textFieldStackHolder;
+
 @end
 
 @implementation AlertViewController
 
 #pragma mark - Public
 
+- (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection {
+  [super traitCollectionDidChange:previousTraitCollection];
+
+#if defined(__IPHONE_13_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0)
+  if (@available(iOS 13, *)) {
+    if ([self.traitCollection
+            hasDifferentColorAppearanceComparedToTraitCollection:
+                previousTraitCollection]) {
+      [self.traitCollection performAsCurrentTraitCollection:^{
+        self.textFieldStackHolder.layer.borderColor =
+            UIColor.cr_separatorColor.CGColor;
+      }];
+    }
+  }
+#endif
+}
+
 - (void)loadView {
   [super loadView];
   self.view.backgroundColor =
@@ -127,7 +149,7 @@
 
   self.contentView = [[UIView alloc] init];
   self.contentView.clipsToBounds = YES;
-  self.contentView.backgroundColor = [UIColor whiteColor];
+  self.contentView.backgroundColor = UIColor.cr_systemBackgroundColor;
   self.contentView.layer.cornerRadius = kCornerRadius;
   self.contentView.layer.shadowOffset =
       CGSizeMake(kShadowOffsetX, kShadowOffsetY);
@@ -266,11 +288,20 @@
     // fields.
     UIView* stackHolder = [[UIView alloc] init];
     stackHolder.layer.cornerRadius = kTextFieldCornerRadius;
-    stackHolder.layer.borderColor = [UIColor lightGrayColor].CGColor;
+    if (@available(iOS 13, *)) {
+#if defined(__IPHONE_13_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0)
+      [self.traitCollection performAsCurrentTraitCollection:^{
+        stackHolder.layer.borderColor = UIColor.cr_separatorColor.CGColor;
+      }];
+#endif
+    } else {
+      stackHolder.layer.borderColor = UIColor.cr_separatorColor.CGColor;
+    }
     stackHolder.layer.borderWidth = 1.0 / [UIScreen mainScreen].scale;
     stackHolder.clipsToBounds = YES;
-    stackHolder.backgroundColor = UIColorFromRGB(kTextfieldBackgroundColor);
+    stackHolder.backgroundColor = UIColor.cr_secondarySystemBackgroundColor;
     stackHolder.translatesAutoresizingMaskIntoConstraints = NO;
+    self.textFieldStackHolder = stackHolder;
 
     // Updates the custom space before the text fields to account for their
     // inset.
@@ -312,7 +343,7 @@
       if (textFieldConfiguration !=
           [self.textFieldConfigurations firstObject]) {
         UIView* hairline = [[UIView alloc] init];
-        hairline.backgroundColor = [UIColor lightGrayColor];
+        hairline.backgroundColor = UIColor.cr_separatorColor;
         hairline.translatesAutoresizingMaskIntoConstraints = NO;
         [fieldStack addArrangedSubview:hairline];
         CGFloat pixelHeight = 1.0 / [UIScreen mainScreen].scale;
@@ -353,7 +384,7 @@
   self.buttonAlertActionsDictionary = [[NSMutableDictionary alloc] init];
   for (AlertAction* action in self.actions) {
     UIView* hairline = [[UIView alloc] init];
-    hairline.backgroundColor = [UIColor lightGrayColor];
+    hairline.backgroundColor = UIColor.cr_separatorColor;
     hairline.translatesAutoresizingMaskIntoConstraints = NO;
     [stackView addArrangedSubview:hairline];
 
@@ -362,10 +393,10 @@
     UIColor* textColor = nil;
     if (action.style == UIAlertActionStyleDefault) {
       font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
-      textColor = UIColorFromRGB(kButtonTextDefaultColor);
+      textColor = [UIColor colorNamed:kTintColor];
     } else if (action.style == UIAlertActionStyleCancel) {
       font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
-      textColor = UIColorFromRGB(kButtonTextDefaultColor);
+      textColor = [UIColor colorNamed:kTintColor];
     } else {  // Style is UIAlertActionStyleDestructive
       font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
       textColor = UIColorFromRGB(kButtonTextDestructiveColor);
diff --git a/ios/chrome/browser/ui/badges/BUILD.gn b/ios/chrome/browser/ui/badges/BUILD.gn
index 18e1d67..7a12b716 100644
--- a/ios/chrome/browser/ui/badges/BUILD.gn
+++ b/ios/chrome/browser/ui/badges/BUILD.gn
@@ -9,3 +9,23 @@
     "badge_type.h",
   ]
 }
+
+source_set("badges") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "badge_consumer.h",
+    "badge_coordinator.h",
+    "badge_coordinator.mm",
+    "badge_mediator.h",
+    "badge_mediator.mm",
+  ]
+  deps = [
+    ":public",
+    "//ios/chrome/browser/infobars:badge",
+    "//ios/chrome/browser/infobars:public",
+    "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
+    "//ios/chrome/browser/ui/infobars:feature_flags",
+    "//ios/chrome/browser/web",
+    "//ios/chrome/browser/web_state_list",
+  ]
+}
diff --git a/ios/chrome/browser/ui/badges/badge_consumer.h b/ios/chrome/browser/ui/badges/badge_consumer.h
new file mode 100644
index 0000000..cc3466f
--- /dev/null
+++ b/ios/chrome/browser/ui/badges/badge_consumer.h
@@ -0,0 +1,25 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_BADGES_BADGE_CONSUMER_H_
+#define IOS_CHROME_BROWSER_UI_BADGES_BADGE_CONSUMER_H_
+
+@protocol BadgeItem;
+
+// Consumer for the BadgeMediator
+@protocol BadgeConsumer <NSObject>
+// Notifies the consumer to reset with |badges|.
+- (void)setupWithBadges:(NSArray*)badges;
+// Notifies the consumer to add a badge with configurations matching
+// |badgeItem|.
+- (void)addBadge:(id<BadgeItem>)badgeItem;
+// Notifies the consumer to remove |badgeItem|.
+- (void)removeBadge:(id<BadgeItem>)badgeItem;
+// Notifies the consumer to update a badge with new configurations in
+// |badgeItem|. If |badgeItem| does not exist, then consumer does nothing.
+- (void)updateBadge:(id<BadgeItem>)badgeItem;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_BADGES_BADGE_CONSUMER_H_
diff --git a/ios/chrome/browser/ui/badges/badge_coordinator.h b/ios/chrome/browser/ui/badges/badge_coordinator.h
new file mode 100644
index 0000000..0ff3606c
--- /dev/null
+++ b/ios/chrome/browser/ui/badges/badge_coordinator.h
@@ -0,0 +1,26 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_BADGES_BADGE_COORDINATOR_H_
+#define IOS_CHROME_BROWSER_UI_BADGES_BADGE_COORDINATOR_H_
+
+#import "ios/chrome/browser/ui/coordinators/chrome_coordinator.h"
+
+@protocol BadgeConsumer;
+class WebStateList;
+
+// Coordinator that presents badges.
+@interface BadgeCoordinator : ChromeCoordinator
+
+// The ViewController that the Coordinator is managing.
+// TODO(crbug.com/981925): Replace this property with a getter once
+// BadgeCoordinator manages its own view controller.
+@property(nonatomic, weak) UIViewController<BadgeConsumer>* viewController;
+
+// The WebStateList for this Coordinator.
+@property(nonatomic, assign) WebStateList* webStateList;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_BADGES_BADGE_COORDINATOR_H_
diff --git a/ios/chrome/browser/ui/badges/badge_coordinator.mm b/ios/chrome/browser/ui/badges/badge_coordinator.mm
new file mode 100644
index 0000000..005925b
--- /dev/null
+++ b/ios/chrome/browser/ui/badges/badge_coordinator.mm
@@ -0,0 +1,32 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/ui/badges/badge_coordinator.h"
+
+#import "ios/chrome/browser/ui/badges/badge_mediator.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+@interface BadgeCoordinator ()
+
+// The coordinator's mediator.
+@property(nonatomic, strong) BadgeMediator* mediator;
+
+@end
+
+@implementation BadgeCoordinator
+
+- (void)start {
+  self.mediator = [[BadgeMediator alloc] initWithConsumer:self.viewController
+                                             webStateList:self.webStateList];
+}
+
+- (void)stop {
+  [self.mediator disconnect];
+  self.mediator = nil;
+}
+
+@end
diff --git a/ios/chrome/browser/ui/badges/badge_mediator.h b/ios/chrome/browser/ui/badges/badge_mediator.h
new file mode 100644
index 0000000..31739f3
--- /dev/null
+++ b/ios/chrome/browser/ui/badges/badge_mediator.h
@@ -0,0 +1,26 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_BADGES_BADGE_MEDIATOR_H_
+#define IOS_CHROME_BROWSER_UI_BADGES_BADGE_MEDIATOR_H_
+
+#import <UIKit/UIKit.h>
+
+@protocol BadgeConsumer;
+class WebStateList;
+
+// A mediator object that updates the consumer when the state of badges changes.
+@interface BadgeMediator : NSObject
+
+- (instancetype)initWithConsumer:(id<BadgeConsumer>)consumer
+                    webStateList:(WebStateList*)webStateList
+    NS_DESIGNATED_INITIALIZER;
+- (instancetype)init NS_UNAVAILABLE;
+
+// Stops observing all objects.
+- (void)disconnect;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_BADGES_BADGE_MEDIATOR_H_
diff --git a/ios/chrome/browser/ui/badges/badge_mediator.mm b/ios/chrome/browser/ui/badges/badge_mediator.mm
new file mode 100644
index 0000000..968d717
--- /dev/null
+++ b/ios/chrome/browser/ui/badges/badge_mediator.mm
@@ -0,0 +1,95 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/ui/badges/badge_mediator.h"
+
+#include "ios/chrome/browser/infobars/infobar_badge_tab_helper.h"
+#include "ios/chrome/browser/infobars/infobar_badge_tab_helper_delegate.h"
+#import "ios/chrome/browser/infobars/infobar_type.h"
+#import "ios/chrome/browser/ui/badges/badge_consumer.h"
+#import "ios/chrome/browser/ui/badges/badge_item.h"
+#import "ios/chrome/browser/ui/infobars/infobar_feature.h"
+#import "ios/chrome/browser/web_state_list/web_state_list.h"
+#import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+@interface BadgeMediator () <InfobarBadgeTabHelperDelegate,
+                             WebStateListObserving> {
+  std::unique_ptr<WebStateListObserverBridge> _webStateListObserver;
+}
+
+// The WebStateList that this mediator listens for any changes on the active web
+// state.
+@property(nonatomic, assign) WebStateList* webStateList;
+
+// The consumer of the mediator.
+@property(nonatomic, weak) id<BadgeConsumer> consumer;
+
+@end
+
+@implementation BadgeMediator
+@synthesize webStateList = _webStateList;
+
+- (instancetype)initWithConsumer:(id<BadgeConsumer>)consumer
+                    webStateList:(WebStateList*)webStateList {
+  self = [super init];
+  if (self) {
+    _consumer = consumer;
+    _webStateList = webStateList;
+    _webStateListObserver = std::make_unique<WebStateListObserverBridge>(self);
+    _webStateList->AddObserver(_webStateListObserver.get());
+  }
+  return self;
+}
+
+- (void)dealloc {
+  [self disconnect];
+}
+
+- (void)disconnect {
+  if (_webStateList) {
+    _webStateList->RemoveObserver(_webStateListObserver.get());
+    _webStateListObserver.reset();
+    _webStateList = nullptr;
+  }
+}
+
+#pragma mark - InfobarBadgeTabHelperDelegate
+
+- (void)updateInfobarBadge:(id<BadgeItem>)badgeItem {
+  [self.consumer updateBadge:badgeItem];
+}
+- (void)addInfobarBadge:(id<BadgeItem>)badgeItem {
+  [self.consumer addBadge:badgeItem];
+}
+- (void)removeInfobarBadge:(id<BadgeItem>)badgeItem {
+  [self.consumer removeBadge:badgeItem];
+}
+
+#pragma mark - WebStateListObserver
+
+- (void)webStateList:(WebStateList*)webStateList
+    didChangeActiveWebState:(web::WebState*)newWebState
+                oldWebState:(web::WebState*)oldWebState
+                    atIndex:(int)atIndex
+                     reason:(int)reason {
+  DCHECK_EQ(_webStateList, webStateList);
+  web::WebState* webState = webStateList->GetActiveWebState();
+  InfobarBadgeTabHelper* infobarBadgeTabHelper =
+      InfobarBadgeTabHelper::FromWebState(webState);
+  DCHECK(infobarBadgeTabHelper);
+  infobarBadgeTabHelper->SetDelegate(self);
+  // Whenever the WebState changes ask the corresponding
+  // InfobarBadgeTabHelper for all the badges for that WebState.
+  std::vector<id<BadgeItem>> infobar_badges =
+      infobarBadgeTabHelper->GetInfobarBadgeItems();
+  NSArray* infobar_badges_array =
+      [NSArray arrayWithObjects:&infobar_badges[0] count:infobar_badges.size()];
+  [self.consumer setupWithBadges:infobar_badges_array];
+}
+
+@end
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm
index 5b01223..8814da3 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm
@@ -257,7 +257,7 @@
                            target:nil
                            action:nil];
 
-  deleteButton.tintColor = [UIColor redColor];
+  deleteButton.tintColor = UIColor.redColor;
   // Setting the image to nil will cause the default shadowImage to be used,
   // we need to create a new one.
   [self.navigationController.toolbar setShadowImage:[UIImage new]
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_empty_background.mm b/ios/chrome/browser/ui/bookmarks/bookmark_empty_background.mm
index d11528ec..e93b821d 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_empty_background.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_empty_background.mm
@@ -42,7 +42,7 @@
 
     // The explanatory text label.
     self.textLabel = [[UILabel alloc] init];
-    self.textLabel.backgroundColor = [UIColor clearColor];
+    self.textLabel.backgroundColor = UIColor.clearColor;
     self.textLabel.accessibilityIdentifier =
         kBookmarkEmptyStateExplanatoryLabelIdentifier;
     self.textLabel.textAlignment = NSTextAlignmentCenter;
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm
index 5c351159..20f10703 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm
@@ -472,7 +472,7 @@
       initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                            target:nil
                            action:nil];
-  deleteButton.tintColor = [UIColor redColor];
+  deleteButton.tintColor = UIColor.redColor;
   [self.navigationController.toolbar setShadowImage:[UIImage new]
                                  forToolbarPosition:UIBarPositionAny];
   [self setToolbarItems:@[ spaceButton, deleteButton, spaceButton ]
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm
index 3aca5deb..d83b229 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_view_controller.mm
@@ -18,6 +18,7 @@
 #import "ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.h"
 #import "ios/chrome/browser/ui/icons/chrome_icon.h"
 #import "ios/chrome/browser/ui/material_components/utils.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
 #include "ios/chrome/grit/ios_strings.h"
 #include "ui/base/l10n/l10n_util_mac.h"
 
@@ -225,7 +226,7 @@
     UIView* separator = [[UIView alloc] initWithFrame:separatorFrame];
     separator.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin |
                                  UIViewAutoresizingFlexibleWidth;
-    separator.backgroundColor = bookmark_utils_ios::separatorColor();
+    separator.backgroundColor = UIColor.cr_opaqueSeparatorColor;
     [headerView addSubview:separator];
   }
   return headerView;
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_mediator.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_mediator.mm
index 3088b7f..de671eb2 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_home_mediator.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_mediator.mm
@@ -22,6 +22,7 @@
 #import "ios/chrome/browser/ui/signin_interaction/public/signin_presenter.h"
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h"
 #import "ios/chrome/browser/ui/table_view/table_view_model.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -210,7 +211,7 @@
     TableViewTextItem* item =
         [[TableViewTextItem alloc] initWithType:BookmarkHomeItemTypeMessage];
     item.textAlignment = NSTextAlignmentLeft;
-    item.textColor = [UIColor darkGrayColor];
+    item.textColor = UIColor.cr_labelColor;
     item.text = noResults;
     [self.sharedState.tableViewModel
                         addItem:item
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
index 333e403..8adb5fa7 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
@@ -318,7 +318,7 @@
   self.searchController.searchBar.userInteractionEnabled = NO;
   self.searchController.delegate = self;
   self.searchController.searchResultsUpdater = self;
-  self.searchController.searchBar.backgroundColor = [UIColor clearColor];
+  self.searchController.searchBar.backgroundColor = UIColor.clearColor;
   self.searchController.searchBar.accessibilityIdentifier =
       kBookmarkHomeSearchBarIdentifier;
 
@@ -1306,7 +1306,7 @@
   if (!self.spinnerView) {
     self.spinnerView = [[BookmarkHomeWaitingView alloc]
           initWithFrame:self.sharedState.tableView.bounds
-        backgroundColor:[UIColor clearColor]];
+        backgroundColor:UIColor.clearColor];
     [self.spinnerView startWaiting];
   }
   self.tableView.backgroundView = self.spinnerView;
@@ -1510,7 +1510,7 @@
                                        style:UIBarButtonItemStylePlain
                                       target:self
                                       action:@selector(leadingButtonClicked)];
-  self.deleteButton.tintColor = [UIColor redColor];
+  self.deleteButton.tintColor = UIColor.redColor;
   self.deleteButton.enabled = NO;
   self.deleteButton.accessibilityIdentifier =
       kBookmarkHomeLeadingButtonIdentifier;
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.mm
index b192692..82476bad 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.mm
@@ -25,11 +25,6 @@
 @synthesize activityIndicator = _activityIndicator;
 @synthesize animateOutCompletionBlock = _animateOutCompletionBlock;
 
-- (instancetype)initWithFrame:(CGRect)frame {
-  return [self initWithFrame:frame
-             backgroundColor:bookmark_utils_ios::mainBackgroundColor()];
-}
-
 - (instancetype)initWithFrame:(CGRect)frame backgroundColor:(UIColor*)color {
   self = [super initWithFrame:frame];
   if (self) {
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.mm
index 9384ea13..9fae187 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.mm
@@ -5,6 +5,7 @@
 #import "ios/chrome/browser/ui/bookmarks/bookmark_navigation_controller.h"
 
 #import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -14,7 +15,7 @@
 
 - (void)viewDidLoad {
   [super viewDidLoad];
-  self.view.backgroundColor = [UIColor whiteColor];
+  self.view.backgroundColor = UIColor.cr_systemBackgroundColor;
 }
 
 - (BOOL)disablesAutomaticKeyboardDismissal {
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
index e8b737f..39e5916 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
@@ -38,33 +38,9 @@
 // to display a slighly different wording for the default folders.
 NSString* TitleForBookmarkNode(const bookmarks::BookmarkNode* node);
 
-// Returns the default color for |url| when no image is available.
-UIColor* DefaultColor(const GURL& url);
-
 // Returns the subtitle relevant to the bookmark navigation ui.
 NSString* subtitleForBookmarkNode(const bookmarks::BookmarkNode* node);
 
-// On iPad, background color can be transparent. Wrapper for the light grey
-// background color.
-UIColor* mainBackgroundColor();
-// Returns the menu's background color. White when the menu is in a slide over
-// panel, transparent otherwise.
-UIColor* menuBackgroundColor();
-// Primary title labels use this color.
-UIColor* darkTextColor();
-// Secondary title labels use this color.
-UIColor* lightTextColor();
-// The color to use if the text needs to change color when highlighted.
-UIColor* highlightedDarkTextColor();
-// The color used for the editing bar.
-UIColor* blueColor();
-// The color used for the navigation bar.
-UIColor* GrayColor();
-// The gray color for line separators.
-UIColor* separatorColor();
-// The black color for the folder labels.
-UIColor* FolderLabelColor();
-
 // Returns the current status bar height.
 CGFloat StatusBarHeight();
 
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
index 1f09198..bd11af8f 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
@@ -23,6 +23,7 @@
 #include "ios/chrome/browser/ui/bookmarks/undo_manager_wrapper.h"
 #include "ios/chrome/browser/ui/util/ui_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
 #include "ios/chrome/grit/ios_strings.h"
 #import "ios/third_party/material_components_ios/src/components/Snackbar/src/MaterialSnackbar.h"
 #include "third_party/skia/include/core/SkColor.h"
@@ -39,17 +40,6 @@
 namespace bookmark_utils_ios {
 
 namespace {
-const SkColor colors[] = {
-    0xE64A19, 0xF09300, 0xAFB42B, 0x689F38,
-    0x0B8043, 0x0097A7, 0x7B1FA2, 0xC2185B,
-};
-
-UIColor* ColorFromSkColor(SkColor color) {
-  return [UIColor colorWithRed:SkColorGetR(color) / 255.0f
-                         green:SkColorGetG(color) / 255.0f
-                          blue:SkColorGetB(color) / 255.0f
-                         alpha:1.0];
-}
 
 }  // namespace
 
@@ -86,12 +76,6 @@
   return title;
 }
 
-UIColor* DefaultColor(const GURL& url) {
-  uint32_t hash = base::Hash(url.possibly_invalid_spec());
-  SkColor color = colors[hash % base::size(colors)];
-  return ColorFromSkColor(color);
-}
-
 NSString* subtitleForBookmarkNode(const BookmarkNode* node) {
   if (node->is_url())
     return base::SysUTF8ToNSString(node->url().host());
@@ -111,53 +95,6 @@
   return subtitle;
 }
 
-UIColor* mainBackgroundColor() {
-  if (IsIPadIdiom()) {
-    return [UIColor whiteColor];
-  } else {
-    return [UIColor colorWithWhite:242 / 255.0 alpha:1.0];
-  }
-}
-
-UIColor* menuBackgroundColor() {
-  if (bookmarkMenuIsInSlideInPanel()) {
-    return [UIColor whiteColor];
-  } else {
-    return [UIColor clearColor];
-  }
-}
-
-UIColor* darkTextColor() {
-  return [UIColor colorWithWhite:33 / 255.0 alpha:1.0];
-}
-
-UIColor* lightTextColor() {
-  return [UIColor colorWithWhite:118 / 255.0 alpha:1.0];
-}
-
-UIColor* highlightedDarkTextColor() {
-  return [UIColor colorWithWhite:102 / 255.0 alpha:1.0];
-}
-
-UIColor* blueColor() {
-  return [UIColor colorWithRed:66 / 255.0
-                         green:129 / 255.0
-                          blue:244 / 255.0
-                         alpha:1];
-}
-
-UIColor* GrayColor() {
-  return [UIColor colorWithWhite:242 / 255.0 alpha:1.0];
-}
-
-UIColor* separatorColor() {
-  return [UIColor colorWithWhite:214 / 255.0 alpha:1.0];
-}
-
-UIColor* FolderLabelColor() {
-  return [UIColor colorWithWhite:38 / 255.0 alpha:0.8];
-}
-
 CGFloat StatusBarHeight() {
   CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
   CGRect statusBarWindowRect =
diff --git a/ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.h b/ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.h
index 84894f2..d28a385 100644
--- a/ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.h
+++ b/ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.h
@@ -59,15 +59,4 @@
     TableViewBookmarkFolderAccessoryType bookmarkAccessoryType;
 @end
 
-// TableViewCell that displays BookmarkFolderItem data.
-@interface LegacyTableViewBookmarkFolderCell : UITableViewCell
-
-// Whether the cell is displaying a checkmark.
-@property(nonatomic, assign, getter=isChecked) BOOL checked;
-
-// Whether the cell is enabled for interaction.
-@property(nonatomic, assign, getter=isEnabled) BOOL enabled;
-
-@end
-
 #endif  // IOS_CHROME_BROWSER_UI_BOOKMARKS_CELLS_BOOKMARK_FOLDER_ITEM_H_
diff --git a/ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.mm b/ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.mm
index 83cca1d..06231c2c 100644
--- a/ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.mm
+++ b/ios/chrome/browser/ui/bookmarks/cells/bookmark_folder_item.mm
@@ -19,10 +19,6 @@
 #endif
 
 namespace {
-// The amount in points by which to offset horizontally the text label.
-const CGFloat kTitleLabelLeadingOffset = 18.0;
-// The amount in points by which to offset horizontally the image view.
-const CGFloat kImageViewLeadingOffset = 1.0;
 // Width by which to indent folder cell's content. This is multiplied by the
 // |indentationLevel| of the cell.
 const CGFloat kFolderCellIndentationWidth = 32.0;
@@ -252,67 +248,3 @@
 }
 
 @end
-
-#pragma mark - LegacyTableViewBookmarkFolderCell
-
-@implementation LegacyTableViewBookmarkFolderCell
-@synthesize checked = _checked;
-@synthesize enabled = _enabled;
-
-- (instancetype)initWithStyle:(UITableViewCellStyle)style
-              reuseIdentifier:(NSString*)reuseIdentifier {
-  self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
-  if (self) {
-    self.textLabel.font = [MDCTypography subheadFont];
-    self.textLabel.textColor = bookmark_utils_ios::darkTextColor();
-    self.selectionStyle = UITableViewCellSelectionStyleGray;
-    self.accessibilityTraits |= UIAccessibilityTraitButton;
-    _enabled = YES;
-  }
-  return self;
-}
-
-- (void)setChecked:(BOOL)checked {
-  if (checked != _checked) {
-    _checked = checked;
-    UIImageView* checkImageView =
-        checked ? [[UIImageView alloc]
-                      initWithImage:[UIImage imageNamed:@"bookmark_blue_check"]]
-                : nil;
-    self.accessoryView = checkImageView;
-  }
-}
-
-- (void)setEnabled:(BOOL)enabled {
-  if (enabled != _enabled) {
-    _enabled = enabled;
-    self.userInteractionEnabled = enabled;
-    self.textLabel.enabled = enabled;
-  }
-}
-
-- (void)layoutSubviews {
-  [super layoutSubviews];
-
-  // Move the text label as required by the design.
-  UIEdgeInsets insets =
-      UIEdgeInsetsMakeDirected(0, kTitleLabelLeadingOffset, 0, 0);
-  self.textLabel.frame = UIEdgeInsetsInsetRect(self.textLabel.frame, insets);
-
-  // Indent the image. An offset is required in the design.
-  LayoutRect layout = LayoutRectForRectInBoundingRect(self.imageView.frame,
-                                                      self.contentView.bounds);
-  layout.position.leading +=
-      self.indentationWidth * self.indentationLevel + kImageViewLeadingOffset;
-  self.imageView.frame = LayoutRectGetRect(layout);
-}
-
-- (void)prepareForReuse {
-  [super prepareForReuse];
-  self.checked = NO;
-  self.enabled = YES;
-  self.indentationWidth = 0;
-  self.imageView.image = nil;
-}
-
-@end
diff --git a/ios/chrome/browser/ui/bookmarks/cells/bookmark_parent_folder_item.mm b/ios/chrome/browser/ui/bookmarks/cells/bookmark_parent_folder_item.mm
index 1a211e0..3340913 100644
--- a/ios/chrome/browser/ui/bookmarks/cells/bookmark_parent_folder_item.mm
+++ b/ios/chrome/browser/ui/bookmarks/cells/bookmark_parent_folder_item.mm
@@ -10,6 +10,7 @@
 #import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h"
 #import "ios/chrome/browser/ui/icons/chrome_icon.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
 #import "ios/chrome/common/ui_util/constraints_ui_util.h"
 #include "ios/chrome/grit/ios_strings.h"
 #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
@@ -87,7 +88,7 @@
   self.parentFolderNameLabel.font =
       [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
   self.parentFolderNameLabel.adjustsFontForContentSizeCategory = YES;
-  self.parentFolderNameLabel.textColor = [UIColor lightGrayColor];
+  self.parentFolderNameLabel.textColor = UIColor.cr_secondaryLabelColor;
   self.parentFolderNameLabel.textAlignment = NSTextAlignmentRight;
   [self.parentFolderNameLabel
       setContentHuggingPriority:UILayoutPriorityDefaultLow
diff --git a/ios/chrome/browser/ui/bookmarks/cells/bookmark_text_field_item.mm b/ios/chrome/browser/ui/bookmarks/cells/bookmark_text_field_item.mm
index d90fce9..cf9729b 100644
--- a/ios/chrome/browser/ui/bookmarks/cells/bookmark_text_field_item.mm
+++ b/ios/chrome/browser/ui/bookmarks/cells/bookmark_text_field_item.mm
@@ -9,6 +9,7 @@
 #import "ios/chrome/browser/ui/bookmarks/bookmark_ui_constants.h"
 #import "ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
 #import "ios/chrome/common/ui_util/constraints_ui_util.h"
 #include "ios/chrome/grit/ios_strings.h"
 #import "ios/public/provider/chrome/browser/chrome_browser_provider.h"
@@ -159,7 +160,7 @@
 }
 
 + (UIColor*)textColorForEditing:(BOOL)editing {
-  return editing ? [UIColor blackColor] : [UIColor lightGrayColor];
+  return editing ? UIColor.cr_labelColor : UIColor.cr_secondaryLabelColor;
 }
 
 - (void)prepareForReuse {
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
index be7e60a..a371d00 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
@@ -497,6 +497,7 @@
   for (const ntp_tiles::NTPTile& tile : mostVisited) {
     ContentSuggestionsMostVisitedItem* item =
         ConvertNTPTile(tile, self.mostVisitedSectionInfo);
+    item.commandHandler = self.commandHandler;
     [self.faviconMediator fetchFaviconForMostVisited:item];
     [self.freshMostVisitedItems addObject:item];
   }
diff --git a/ios/chrome/browser/ui/first_run/BUILD.gn b/ios/chrome/browser/ui/first_run/BUILD.gn
index deee874..f9edfd6 100644
--- a/ios/chrome/browser/ui/first_run/BUILD.gn
+++ b/ios/chrome/browser/ui/first_run/BUILD.gn
@@ -49,6 +49,7 @@
     "//ios/chrome/browser/ui/util:terms_util",
     "//ios/chrome/browser/web_state_list",
     "//ios/chrome/common",
+    "//ios/chrome/common/colors",
     "//ios/public/provider/chrome/browser",
     "//ios/public/provider/chrome/browser/signin",
     "//ios/third_party/material_components_ios",
diff --git a/ios/chrome/browser/ui/first_run/static_file_view_controller.mm b/ios/chrome/browser/ui/first_run/static_file_view_controller.mm
index b8761d9..dacf75b 100644
--- a/ios/chrome/browser/ui/first_run/static_file_view_controller.mm
+++ b/ios/chrome/browser/ui/first_run/static_file_view_controller.mm
@@ -11,6 +11,7 @@
 #import "ios/chrome/browser/ui/icons/chrome_icon.h"
 #import "ios/chrome/browser/ui/material_components/utils.h"
 #include "ios/chrome/browser/ui/util/rtl_geometry.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
 #import "ios/third_party/material_components_ios/src/components/AppBar/src/MDCAppBarViewController.h"
 #import "ios/third_party/material_components_ios/src/components/FlexibleHeader/src/MaterialFlexibleHeader.h"
 #import "ios/third_party/material_components_ios/src/components/Palettes/src/MaterialPalettes.h"
@@ -73,7 +74,7 @@
                             cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                         timeoutInterval:60.0];
   [_webView loadRequest:request];
-  [_webView setBackgroundColor:[UIColor whiteColor]];
+  [_webView setBackgroundColor:UIColor.cr_systemBackgroundColor];
   _webView.navigationDelegate = self;
   [self.view addSubview:_webView];
 
diff --git a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view.mm b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view.mm
index 0bb0a94..83eeec3 100644
--- a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view.mm
+++ b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view.mm
@@ -14,6 +14,8 @@
 #import "ios/chrome/browser/ui/util/label_observer.h"
 #include "ios/chrome/browser/ui/util/ui_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
+#import "ios/chrome/common/colors/semantic_color_names.h"
 #include "ios/chrome/common/string_util.h"
 #include "ios/chrome/grit/ios_chromium_strings.h"
 #include "ios/chrome/grit/ios_strings.h"
@@ -51,9 +53,6 @@
 NSString* const kUMAMetricsButtonAccessibilityIdentifier =
     @"UMAMetricsButtonAccessibilityIdentifier";
 
-// Color of "Terms of Service" link text.
-const int kLinkColorRGB = 0x5D9AFF;
-
 // The width of the container view for a REGULAR width size class.
 const CGFloat kContainerViewRegularWidth = 510.0;
 
@@ -166,7 +165,7 @@
 - (instancetype)initWithFrame:(CGRect)frame {
   self = [super initWithFrame:frame];
   if (self) {
-    self.backgroundColor = [UIColor whiteColor];
+    self.backgroundColor = UIColor.cr_systemBackgroundColor;
     self.autoresizingMask =
         UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
   }
@@ -225,7 +224,7 @@
 - (UIView*)containerView {
   if (!_containerView) {
     _containerView = [[UIView alloc] initWithFrame:CGRectZero];
-    [_containerView setBackgroundColor:[UIColor whiteColor]];
+    [_containerView setBackgroundColor:UIColor.cr_systemBackgroundColor];
   }
   return _containerView;
 }
@@ -233,7 +232,7 @@
 - (UILabel*)titleLabel {
   if (!_titleLabel) {
     _titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
-    [_titleLabel setBackgroundColor:[UIColor whiteColor]];
+    [_titleLabel setBackgroundColor:UIColor.cr_systemBackgroundColor];
     [_titleLabel setNumberOfLines:0];
     [_titleLabel setLineBreakMode:NSLineBreakByWordWrapping];
     [_titleLabel setBaselineAdjustment:UIBaselineAdjustmentAlignBaselines];
@@ -247,7 +246,7 @@
   if (!_imageView) {
     UIImage* image = [UIImage imageNamed:kAppLogoImageName];
     _imageView = [[UIImageView alloc] initWithImage:image];
-    [_imageView setBackgroundColor:[UIColor whiteColor]];
+    [_imageView setBackgroundColor:UIColor.cr_systemBackgroundColor];
   }
   return _imageView;
 }
@@ -440,7 +439,7 @@
                                         url:GURL(kTermsOfServiceUrl)];
   [_TOSLabelLinkController addLinkWithRange:privacyLinkTextRange
                                         url:GURL(kPrivacyNoticeUrl)];
-  [_TOSLabelLinkController setLinkColor:UIColorFromRGB(kLinkColorRGB)];
+  [_TOSLabelLinkController setLinkColor:[UIColor colorNamed:kTintColor]];
 
   CGSize TOSLabelSize = [self.TOSLabel sizeThatFits:containerSize];
   CGFloat TOSLabelTopPadding = kTOSLabelTopPadding[[self heightSizeClassIdiom]];
diff --git a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm
index c0ee239..e33a93e 100644
--- a/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm
+++ b/ios/chrome/browser/ui/first_run/welcome_to_chrome_view_controller.mm
@@ -26,7 +26,6 @@
 #import "ios/chrome/browser/ui/first_run/welcome_to_chrome_view.h"
 #include "ios/chrome/browser/ui/util/terms_util.h"
 #include "ios/chrome/browser/ui/util/ui_util.h"
-#import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #include "ios/chrome/common/string_util.h"
 #include "ios/chrome/grit/ios_chromium_strings.h"
 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
diff --git a/ios/chrome/browser/ui/infobars/coordinators/infobar_confirm_coordinator.mm b/ios/chrome/browser/ui/infobars/coordinators/infobar_confirm_coordinator.mm
index b27465f..20554b2e 100644
--- a/ios/chrome/browser/ui/infobars/coordinators/infobar_confirm_coordinator.mm
+++ b/ios/chrome/browser/ui/infobars/coordinators/infobar_confirm_coordinator.mm
@@ -102,7 +102,7 @@
   self.modalViewController = nil;
 }
 
-- (CGFloat)infobarModalHeight {
+- (CGFloat)infobarModalHeightForWidth:(CGFloat)width {
   // TODO(crbug.com/911864): Implement, this is a temporary value. If
   // InfobarConfirmCoordinator ends up having no Modal this should DCHECK or
   // NOTREACHED.
diff --git a/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator.mm b/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator.mm
index 8856f80..604521e 100644
--- a/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator.mm
+++ b/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator.mm
@@ -321,8 +321,8 @@
 
 #pragma mark InfobarModalPositioner
 
-- (CGFloat)modalHeight {
-  return [self infobarModalHeight];
+- (CGFloat)modalHeightForWidth:(CGFloat)width {
+  return [self infobarModalHeightForWidth:width];
 }
 
 #pragma mark InfobarCoordinatorImplementation
@@ -351,7 +351,7 @@
   NOTREACHED() << "Subclass must implement.";
 }
 
-- (CGFloat)infobarModalHeight {
+- (CGFloat)infobarModalHeightForWidth:(CGFloat)width {
   NOTREACHED() << "Subclass must implement.";
   return 0;
 }
diff --git a/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator_implementation.h b/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator_implementation.h
index 6ee33e0..df8031f 100644
--- a/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator_implementation.h
+++ b/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator_implementation.h
@@ -35,7 +35,7 @@
 
 // The infobar modal height. Used to calculate its presentation container
 // height.
-- (CGFloat)infobarModalHeight;
+- (CGFloat)infobarModalHeightForWidth:(CGFloat)width;
 
 @end
 
diff --git a/ios/chrome/browser/ui/infobars/coordinators/infobar_password_coordinator.mm b/ios/chrome/browser/ui/infobars/coordinators/infobar_password_coordinator.mm
index 672c2040..98cf2bc 100644
--- a/ios/chrome/browser/ui/infobars/coordinators/infobar_password_coordinator.mm
+++ b/ios/chrome/browser/ui/infobars/coordinators/infobar_password_coordinator.mm
@@ -173,8 +173,10 @@
     self.passwordInfoBarDelegate->InfobarDismissed();
 }
 
-- (CGFloat)infobarModalHeight {
+- (CGFloat)infobarModalHeightForWidth:(CGFloat)width {
   UITableView* tableView = self.modalViewController.tableView;
+  // Update the tableView frame to then layout its content for |width|.
+  tableView.frame = CGRectMake(0, 0, width, tableView.frame.size.height);
   [tableView setNeedsLayout];
   [tableView layoutIfNeeded];
 
diff --git a/ios/chrome/browser/ui/infobars/modals/infobar_password_table_view_controller.mm b/ios/chrome/browser/ui/infobars/modals/infobar_password_table_view_controller.mm
index b86f08a..f3e68ea 100644
--- a/ios/chrome/browser/ui/infobars/modals/infobar_password_table_view_controller.mm
+++ b/ios/chrome/browser/ui/infobars/modals/infobar_password_table_view_controller.mm
@@ -271,6 +271,13 @@
   return cell;
 }
 
+#pragma mark - UITableViewDelegate
+
+- (CGFloat)tableView:(UITableView*)tableView
+    heightForFooterInSection:(NSInteger)section {
+  return 0;
+}
+
 #pragma mark - UITextFieldDelegate
 
 - (BOOL)textFieldShouldReturn:(UITextField*)textField {
diff --git a/ios/chrome/browser/ui/infobars/presentation/infobar_modal_positioner.h b/ios/chrome/browser/ui/infobars/presentation/infobar_modal_positioner.h
index 15ca362..fb095e31 100644
--- a/ios/chrome/browser/ui/infobars/presentation/infobar_modal_positioner.h
+++ b/ios/chrome/browser/ui/infobars/presentation/infobar_modal_positioner.h
@@ -10,8 +10,8 @@
 // InfobarBannerPositioner contains methods used to position the InfobarBanner.
 @protocol InfobarModalPositioner
 
-// The target height for the modal view to be presented.
-- (CGFloat)modalHeight;
+// The target height for the modal view to be presented based on |width|.
+- (CGFloat)modalHeightForWidth:(CGFloat)width;
 
 @end
 
diff --git a/ios/chrome/browser/ui/infobars/presentation/infobar_modal_presentation_controller.mm b/ios/chrome/browser/ui/infobars/presentation/infobar_modal_presentation_controller.mm
index 822e8a85..67c9174b3 100644
--- a/ios/chrome/browser/ui/infobars/presentation/infobar_modal_presentation_controller.mm
+++ b/ios/chrome/browser/ui/infobars/presentation/infobar_modal_presentation_controller.mm
@@ -13,7 +13,7 @@
 #endif
 
 namespace {
-// The presented view outer horizontal margins.
+// The presented view outer margins.
 const CGFloat kPresentedViewMargin = 10.0;
 // The presented view maximum width.
 const CGFloat kPresentedViewMaxWidth = 394.0;
@@ -48,20 +48,24 @@
 
 - (CGRect)frameForPresentedView {
   DCHECK(self.modalPositioner);
-  CGFloat containerWidth = CGRectGetWidth(self.containerView.bounds);
-  CGFloat containerHeight = CGRectGetHeight(self.containerView.bounds);
+  CGRect safeAreaBounds = self.containerView.safeAreaLayoutGuide.layoutFrame;
+  CGFloat safeAreaWidth = CGRectGetWidth(safeAreaBounds);
+  CGFloat safeAreaHeight = CGRectGetHeight(safeAreaBounds);
 
   // Calculate the frame width.
-  CGFloat maxAvailableWidth = containerWidth - 2 * kPresentedViewMargin;
+  CGFloat maxAvailableWidth = safeAreaWidth - 2 * kPresentedViewMargin;
   CGFloat frameWidth = fmin(maxAvailableWidth, kPresentedViewMaxWidth);
 
   // Calculate the frame height needed to fit the content.
-  CGFloat modalTargetHeight = [self.modalPositioner modalHeight];
-  CGFloat maxAvailableHeight = containerHeight - 2 * kPresentedViewMargin;
+  CGFloat modalTargetHeight =
+      [self.modalPositioner modalHeightForWidth:frameWidth];
+  CGFloat maxAvailableHeight = safeAreaHeight - 2 * kPresentedViewMargin;
   CGFloat frameHeight = fmin(maxAvailableHeight, modalTargetHeight);
 
   // Based on the container width calculate the values in order to center the
   // frame in the X and Y axis.
+  CGFloat containerWidth = CGRectGetWidth(self.containerView.bounds);
+  CGFloat containerHeight = CGRectGetHeight(self.containerView.bounds);
   CGFloat modalXPosition = (containerWidth / 2) - (frameWidth / 2);
   CGFloat modalYPosition = (containerHeight / 2) - (frameHeight / 2);
 
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.h b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.h
index d433ced..1b91b1e 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.h
+++ b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.h
@@ -31,14 +31,15 @@
 - (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
 - (instancetype)initWithCoder:(NSCoder*)aDecoder NS_UNAVAILABLE;
 
-- (void)setColorScheme:(LocationBarSteadyViewColorScheme*)colorScheme;
-
 // Sets the location image. If |locationImage| is nil, hides the image view.
 - (void)setLocationImage:(UIImage*)locationImage;
 
 // Sets the location label's text.
 - (void)setLocationLabelText:(NSString*)string;
 
+// Sets the location label's text and styles it as if it were placeholder text.
+- (void)setLocationLabelPlaceholderText:(NSString*)string;
+
 // Displays the location InfobarBadgeButton if |display| is YES, hides it if
 // |display| is NO. Will animate change if |animated| is YES.
 - (void)displayBadge:(BOOL)display animated:(BOOL)animated;
@@ -57,6 +58,8 @@
 @property(nonatomic, strong) UIButton* trailingButton;
 // The string that describes the current security level. Used for a11y.
 @property(nonatomic, copy) NSString* securityLevelAccessibilityString;
+// Current in-use color scheme.
+@property(nonatomic, strong) LocationBarSteadyViewColorScheme* colorScheme;
 
 @end
 
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm
index 12958963..acc0ebc 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm
+++ b/ios/chrome/browser/ui/location_bar/location_bar_steady_view.mm
@@ -60,9 +60,6 @@
 #pragma mark - LocationBarSteadyViewColorScheme
 
 @implementation LocationBarSteadyViewColorScheme
-@synthesize fontColor = _fontColor;
-@synthesize placeholderColor = _placeholderColor;
-@synthesize trailingButtonColor = _trailingButtonColor;
 
 + (instancetype)standardScheme {
   LocationBarSteadyViewColorScheme* scheme =
@@ -123,16 +120,6 @@
 #pragma mark - LocationBarSteadyView
 
 @implementation LocationBarSteadyView
-@synthesize locationButton = _locationButton;
-@synthesize locationLabel = _locationLabel;
-@synthesize locationIconImageView = _locationIconImageView;
-@synthesize trailingButton = _trailingButton;
-@synthesize hideLocationImageConstraints = _hideLocationImageConstraints;
-@synthesize showLocationImageConstraints = _showLocationImageConstraints;
-@synthesize locationContainerView = _locationContainerView;
-@synthesize securityLevelAccessibilityString =
-    _securityLevelAccessibilityString;
-@synthesize accessibleElements = _accessibleElements;
 
 - (instancetype)init {
   self = [super initWithFrame:CGRectZero];
@@ -276,9 +263,13 @@
 }
 
 - (void)setColorScheme:(LocationBarSteadyViewColorScheme*)colorScheme {
-  self.trailingButton.tintColor = colorScheme.trailingButtonColor;
-  self.locationLabel.textColor = colorScheme.fontColor;
-  self.locationIconImageView.tintColor = colorScheme.fontColor;
+  _colorScheme = colorScheme;
+  self.trailingButton.tintColor = self.colorScheme.trailingButtonColor;
+  // The text color is set in -setLocationLabelText: and
+  // -setLocationLabelPlaceholderText: because the two text styles have
+  // different colors. The icon should be the same color as the text, but it
+  // only appears with the regular label, so its color can be set here.
+  self.locationIconImageView.tintColor = self.colorScheme.fontColor;
 }
 
 - (void)setLocationImage:(UIImage*)locationImage {
@@ -306,10 +297,16 @@
   if ([self.locationLabel.text isEqualToString:string]) {
     return;
   }
+  self.locationLabel.textColor = self.colorScheme.fontColor;
   self.locationLabel.text = string;
   [self updateAccessibility];
 }
 
+- (void)setLocationLabelPlaceholderText:(NSString*)string {
+  self.locationLabel.textColor = self.colorScheme.placeholderColor;
+  self.locationLabel.text = string;
+}
+
 - (void)setSecurityLevelAccessibilityString:(NSString*)string {
   if ([_securityLevelAccessibilityString isEqualToString:string]) {
     return;
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_view_controller.mm b/ios/chrome/browser/ui/location_bar/location_bar_view_controller.mm
index 2c95e045..9637f78 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_view_controller.mm
+++ b/ios/chrome/browser/ui/location_bar/location_bar_view_controller.mm
@@ -126,10 +126,9 @@
 
 - (void)setIncognito:(BOOL)incognito {
   _incognito = incognito;
-  [self.locationBarSteadyView
-      setColorScheme:incognito
-                         ? [LocationBarSteadyViewColorScheme incognitoScheme]
-                         : [LocationBarSteadyViewColorScheme standardScheme]];
+  self.locationBarSteadyView.colorScheme =
+      incognito ? [LocationBarSteadyViewColorScheme incognitoScheme]
+                : [LocationBarSteadyViewColorScheme standardScheme];
 }
 
 - (void)setDispatcher:(id<ActivityServiceCommands,
@@ -238,19 +237,16 @@
   self.locationBarSteadyView.securityLevelAccessibilityString = statusText;
 }
 
+// Updates display on the NTP. Note that this is only meaningful on iPad, where
+// the location bar is visible after scrolling the fakebox off the page. On
+// iPhone, the location bar is not shown on the NTP at all.
 - (void)updateForNTP:(BOOL)isNTP {
   if (isNTP) {
     // Display a fake "placeholder".
     NSString* placeholderString =
         l10n_util::GetNSString(IDS_OMNIBOX_EMPTY_HINT);
-    LocationBarSteadyViewColorScheme* scheme =
-        self.incognito ? [LocationBarSteadyViewColorScheme incognitoScheme]
-                       : [LocationBarSteadyViewColorScheme standardScheme];
-    UIColor* placeholderColor = scheme.placeholderColor;
-    self.locationBarSteadyView.locationLabel.attributedText = [
-        [NSAttributedString alloc]
-        initWithString:placeholderString
-            attributes:@{NSForegroundColorAttributeName : placeholderColor}];
+    [self.locationBarSteadyView
+        setLocationLabelPlaceholderText:placeholderString];
   }
   self.hideShareButtonWhileOnIncognitoNTP = isNTP;
 }
diff --git a/ios/chrome/browser/ui/material_components/BUILD.gn b/ios/chrome/browser/ui/material_components/BUILD.gn
index 1c2163b..39579086 100644
--- a/ios/chrome/browser/ui/material_components/BUILD.gn
+++ b/ios/chrome/browser/ui/material_components/BUILD.gn
@@ -16,6 +16,7 @@
   deps = [
     "//base",
     "//ios/chrome/browser/ui/colors",
+    "//ios/chrome/common/colors",
     "//ios/third_party/material_components_ios",
   ]
   libs = [ "UIKit.framework" ]
diff --git a/ios/chrome/browser/ui/material_components/utils.mm b/ios/chrome/browser/ui/material_components/utils.mm
index 33fd717..6033711 100644
--- a/ios/chrome/browser/ui/material_components/utils.mm
+++ b/ios/chrome/browser/ui/material_components/utils.mm
@@ -7,6 +7,7 @@
 #import <UIKit/UIKit.h>
 
 #include "base/mac/foundation_util.h"
+#import "ios/chrome/common/colors/UIColor+cr_semantic_colors.h"
 #import "ios/third_party/material_components_ios/src/components/AppBar/src/MDCAppBarContainerViewController.h"
 #import "ios/third_party/material_components_ios/src/components/AppBar/src/MaterialAppBar.h"
 #import "ios/third_party/material_components_ios/src/components/FlexibleHeader/src/MaterialFlexibleHeader.h"
@@ -42,8 +43,8 @@
   viewController.headerView.shiftBehavior =
       MDCFlexibleHeaderShiftBehaviorDisabled;
   viewController.headerView.backgroundColor =
-      [[MDCPalette greyPalette] tint200];
-  viewController.navigationBar.tintColor = [[MDCPalette greyPalette] tint900];
+      UIColor.cr_secondarySystemBackgroundColor;
+  viewController.navigationBar.tintColor = UIColor.cr_labelColor;
   viewController.navigationBar.titleAlignment =
       MDCNavigationBarTitleAlignmentLeading;
 
diff --git a/ios/chrome/browser/ui/table_view/table_view_navigation_controller_constants.mm b/ios/chrome/browser/ui/table_view/table_view_navigation_controller_constants.mm
index 64fac97a..dcdbc984 100644
--- a/ios/chrome/browser/ui/table_view/table_view_navigation_controller_constants.mm
+++ b/ios/chrome/browser/ui/table_view/table_view_navigation_controller_constants.mm
@@ -10,7 +10,7 @@
 
 const float kTableViewNavigationVerticalOffsetForSearchHeader = 6.0f;
 const float kTableViewNavigationAlphaForDisabledSearchBar = 0.5f;
-const float kTableViewNavigationWhiteAlphaForSearchScrim = 0.2f;
+const float kTableViewNavigationWhiteAlphaForSearchScrim = 0.4f;
 const NSTimeInterval kTableViewNavigationScrimFadeDuration = 0.2;
 
 NSString* const kTableViewNavigationDismissButtonId =
diff --git a/ios/chrome/common/colors/UIColor+cr_semantic_colors.h b/ios/chrome/common/colors/UIColor+cr_semantic_colors.h
index 9ceee5f..d1276a0 100644
--- a/ios/chrome/common/colors/UIColor+cr_semantic_colors.h
+++ b/ios/chrome/common/colors/UIColor+cr_semantic_colors.h
@@ -28,6 +28,7 @@
 @property(class, nonatomic, readonly) UIColor* cr_secondaryLabelColor;
 
 // Separator Colors
+@property(class, nonatomic, readonly) UIColor* cr_separatorColor;
 @property(class, nonatomic, readonly) UIColor* cr_opaqueSeparatorColor;
 
 @end
diff --git a/ios/chrome/common/colors/UIColor+cr_semantic_colors.mm b/ios/chrome/common/colors/UIColor+cr_semantic_colors.mm
index 2b8abcf..876f9cb 100644
--- a/ios/chrome/common/colors/UIColor+cr_semantic_colors.mm
+++ b/ios/chrome/common/colors/UIColor+cr_semantic_colors.mm
@@ -76,6 +76,19 @@
 
 #pragma mark - Separator Colors
 
++ (UIColor*)cr_separatorColor {
+#if defined(__IPHONE_13_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0)
+  if (@available(iOS 13, *)) {
+    return UIColor.separatorColor;
+  }
+#endif
+  // This is the value for separatorColor in light mode.
+  return [UIColor colorWithRed:0x3C / (CGFloat)0xFF
+                         green:0x3C / (CGFloat)0xFF
+                          blue:0x43 / (CGFloat)0xFF
+                         alpha:0.6];
+}
+
 + (UIColor*)cr_opaqueSeparatorColor {
 #if defined(__IPHONE_13_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0)
   if (@available(iOS 13, *)) {
diff --git a/ios/chrome/test/wpt/BUILD.gn b/ios/chrome/test/wpt/BUILD.gn
index ae9cfc0..a544c20e 100644
--- a/ios/chrome/test/wpt/BUILD.gn
+++ b/ios/chrome/test/wpt/BUILD.gn
@@ -55,6 +55,7 @@
     "//ios/testing:nserror_support",
     "//ios/testing/earl_grey:eg_app_support+eg2",
     "//ios/third_party/earl_grey2:app_framework+link",
+    "//ios/web/public/test",
   ]
 
   public_deps = [
diff --git a/ios/chrome/test/wpt/cwt_request_handler.h b/ios/chrome/test/wpt/cwt_request_handler.h
index d9837bf9..99850a45 100644
--- a/ios/chrome/test/wpt/cwt_request_handler.h
+++ b/ios/chrome/test/wpt/cwt_request_handler.h
@@ -46,34 +46,35 @@
 
  private:
   // Creates a new session, if no session has already been created. Otherwise,
-  // return an error.
+  // return an error. Sets the target tab to the current tab.
   base::Value InitializeSession();
 
   // Terminates the current session.
   base::Value CloseSession();
 
-  // Navigates the current tab to the given URL, and wait for the page load to
+  // Navigates the target tab to the given URL, and waits for the page load to
   // complete.
   base::Value NavigateToUrl(const base::Value* url);
 
   // Sets timeouts used when performing browser operations.
   base::Value SetTimeouts(const base::Value& timeouts);
 
-  // Gets the id of the current tab. Returns an error value if no tab is open.
-  base::Value GetCurrentTabId();
+  // Gets the id of the target tab. Returns an error if the target tab has been
+  // closed.
+  base::Value GetTargetTabId();
 
   // Gets the ids of all open tabs.
   base::Value GetAllTabIds();
 
-  // Switches to the tab with the given id. Returns an error value if no such
-  // tab exists.
-  base::Value SwitchToTabWithId(const base::Value* id);
+  // Switches to the tab with the given id and makes this the target tab.
+  // Returns an error value if no such tab exists.
+  base::Value SwitchToTabWithId(const base::Value* tab_id);
 
-  // Closes the current tab. Returns an error value if no tab is open.
+  // Closes the target tab. Returns an error value if no tab is open.
   // Otherwise, returns the ids of the remaining tabs.
-  base::Value CloseCurrentTab();
+  base::Value CloseTargetTab();
 
-  // Executes the given script in the current tab. Returns an error if script
+  // Executes the given script in the target tab. Returns an error if script
   // execution times out. Otherwise, returns the result of script execution.
   // When |is_async_function| is true, the given script must be the body of a
   // function that uses its last argument (that is, the argument at
@@ -105,6 +106,9 @@
   // A randomly-generated identifier created by InitializeSession().
   std::string session_id_;
 
+  // The tab that's the target of WebDriver actions.
+  std::string target_tab_id_;
+
   // Timeouts used when performing browser operations.
   NSTimeInterval script_timeout_;
   NSTimeInterval page_load_timeout_;
diff --git a/ios/chrome/test/wpt/cwt_request_handler.mm b/ios/chrome/test/wpt/cwt_request_handler.mm
index ced322d..33ea204 100644
--- a/ios/chrome/test/wpt/cwt_request_handler.mm
+++ b/ios/chrome/test/wpt/cwt_request_handler.mm
@@ -55,7 +55,7 @@
 const char kWebDriverUnknownCommandMessage[] = "No such command";
 const char kWebDriverInvalidTimeoutMessage[] =
     "Timeouts must be non-negative integers";
-const char kWebDriverNoOpenWindowMessage[] = "No currently open window";
+const char kWebDriverNoTargetWindowMessage[] = "Target window has been closed";
 const char kWebDriverMissingWindowHandleMessage[] = "No handle argument";
 const char kWebDriverNoMatchingWindowMessage[] =
     "No window with the given handle";
@@ -130,7 +130,7 @@
     }
 
     if (command == kWebDriverWindowCommand)
-      return GetCurrentTabId();
+      return GetTargetTabId();
 
     if (command == kWebDriverWindowHandlesCommand)
       return GetAllTabIds();
@@ -188,7 +188,7 @@
       return CloseSession();
 
     if (command == kWebDriverWindowCommand)
-      return CloseCurrentTab();
+      return CloseTargetTab();
 
     return base::nullopt;
   }
@@ -231,6 +231,8 @@
   }
 
   [CWTWebDriverAppInterface enablePopups];
+  target_tab_id_ =
+      base::SysNSStringToUTF8([CWTWebDriverAppInterface getCurrentTabID]);
 
   base::Value result(base::Value::Type::DICTIONARY);
   session_id_ = base::GenerateGUID();
@@ -272,6 +274,7 @@
 
   NSError* error = [CWTWebDriverAppInterface
                loadURL:base::SysUTF8ToNSString(url->GetString())
+                 inTab:base::SysUTF8ToNSString(target_tab_id_)
       timeoutInSeconds:page_load_timeout_];
   if (!error)
     return base::Value(base::Value::Type::NONE);
@@ -301,14 +304,15 @@
   return base::Value(base::Value::Type::NONE);
 }
 
-base::Value CWTRequestHandler::GetCurrentTabId() {
-  NSString* tab_id = [CWTWebDriverAppInterface getCurrentTabID];
-  if (!tab_id) {
+base::Value CWTRequestHandler::GetTargetTabId() {
+  NSArray* tab_ids = [CWTWebDriverAppInterface getTabIDs];
+  if ([tab_ids indexOfObject:base::SysUTF8ToNSString(target_tab_id_)] ==
+      NSNotFound) {
     return CreateErrorValue(kWebDriverNoSuchWindowError,
-                            kWebDriverNoOpenWindowMessage);
+                            kWebDriverNoTargetWindowMessage);
   }
 
-  return base::Value(base::SysNSStringToUTF8(tab_id));
+  return base::Value(target_tab_id_);
 }
 
 base::Value CWTRequestHandler::GetAllTabIds() {
@@ -320,28 +324,32 @@
   return id_list;
 }
 
-base::Value CWTRequestHandler::SwitchToTabWithId(const base::Value* id) {
-  if (!id || !id->is_string()) {
+base::Value CWTRequestHandler::SwitchToTabWithId(const base::Value* tab_id) {
+  if (!tab_id || !tab_id->is_string()) {
     return CreateErrorValue(kWebDriverInvalidArgumentError,
                             kWebDriverMissingWindowHandleMessage);
   }
 
   NSError* error = [CWTWebDriverAppInterface
-      switchToTabWithID:base::SysUTF8ToNSString(id->GetString())];
+      switchToTabWithID:base::SysUTF8ToNSString(tab_id->GetString())];
 
-  if (!error)
+  if (!error) {
+    target_tab_id_ = tab_id->GetString();
     return base::Value(base::Value::Type::NONE);
+  }
 
   return CreateErrorValue(kWebDriverNoSuchWindowError,
                           kWebDriverNoMatchingWindowMessage);
 }
 
-base::Value CWTRequestHandler::CloseCurrentTab() {
-  NSError* error = [CWTWebDriverAppInterface closeCurrentTab];
+base::Value CWTRequestHandler::CloseTargetTab() {
+  NSError* error = [CWTWebDriverAppInterface
+      closeTabWithID:base::SysUTF8ToNSString(target_tab_id_)];
+  target_tab_id_.clear();
 
   if (error) {
     return CreateErrorValue(kWebDriverNoSuchWindowError,
-                            kWebDriverNoOpenWindowMessage);
+                            kWebDriverNoTargetWindowMessage);
   }
 
   return GetAllTabIds();
@@ -375,6 +383,7 @@
 
   NSString* result_as_json = [CWTWebDriverAppInterface
       executeAsyncJavaScriptFunction:function_to_execute
+                               inTab:base::SysUTF8ToNSString(target_tab_id_)
                     timeoutInSeconds:script_timeout_];
 
   if (!result_as_json) {
diff --git a/ios/chrome/test/wpt/cwt_webdriver_app_interface.h b/ios/chrome/test/wpt/cwt_webdriver_app_interface.h
index 8d9d7b8e8..7c7c68e 100644
--- a/ios/chrome/test/wpt/cwt_webdriver_app_interface.h
+++ b/ios/chrome/test/wpt/cwt_webdriver_app_interface.h
@@ -13,9 +13,11 @@
 // avoid deadlock while waiting for actions to complete on the main thread.
 @interface CWTWebDriverAppInterface : NSObject
 
-// Loads the given URL in the current tab. Returns an error if the page fails
-// to load within |timeout| seconds.
-+ (NSError*)loadURL:(NSString*)URL timeoutInSeconds:(NSTimeInterval)timeout;
+// Loads the given URL in the tab identified by |tabID|. Returns an error if the
+// page fails to load within |timeout| seconds or if no such tab exists.
++ (NSError*)loadURL:(NSString*)URL
+               inTab:(NSString*)tabID
+    timeoutInSeconds:(NSTimeInterval)timeout;
 
 // Returns the id of the current tab. If no tabs are open, returns nil.
 + (NSString*)getCurrentTabID;
@@ -23,18 +25,21 @@
 // Returns an array containing the ids of all open tabs.
 + (NSArray*)getTabIDs;
 
-// Closes the current tab. Returns an error if there is no open tab.
-+ (NSError*)closeCurrentTab;
+// Closes the tab identified by |tabID|. Returns an error if there is no such
+// tab.
++ (NSError*)closeTabWithID:(NSString*)ID;
 
 // Makes the tab identified by |ID| the current tab. Returns an error if there
 // is no such tab.
 + (NSError*)switchToTabWithID:(NSString*)ID;
 
-// Executes the given JavaScript function in the current tab. This must be a
-// function that takes a single argument, and uses this argument as a
+// Executes the given JavaScript function in the tab identified by |tabID|. This
+// must be a function that takes a single argument, and uses this argument as a
 // completion handler. Returns the value passed to the completion handler. If
-// script execution does not complete within |timeout| seconds, returns nil.
+// no such tab exists, or if script execution does not complete within |timeout|
+// seconds, returns nil.
 + (NSString*)executeAsyncJavaScriptFunction:(NSString*)function
+                                      inTab:(NSString*)tabID
                            timeoutInSeconds:(NSTimeInterval)timeout;
 
 // Allows script to open tabs using "window.open" JavaScript calls.
diff --git a/ios/chrome/test/wpt/cwt_webdriver_app_interface.mm b/ios/chrome/test/wpt/cwt_webdriver_app_interface.mm
index e2a7994..a358c2a 100644
--- a/ios/chrome/test/wpt/cwt_webdriver_app_interface.mm
+++ b/ios/chrome/test/wpt/cwt_webdriver_app_interface.mm
@@ -15,11 +15,11 @@
 #import "ios/chrome/browser/web/tab_id_tab_helper.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/test/app/chrome_test_util.h"
-#import "ios/chrome/test/app/navigation_test_util.h"
 #import "ios/chrome/test/app/settings_test_util.h"
 #import "ios/chrome/test/app/tab_test_util.h"
 #import "ios/testing/earl_grey/earl_grey_app.h"
 #import "ios/testing/nserror_util.h"
+#import "ios/web/public/test/navigation_test_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -39,19 +39,44 @@
       .interfaceProvider.currentInterface.tabModel.webStateList;
 }
 
+web::WebState* GetWebStateWithId(NSString* tab_id) {
+  WebStateList* web_state_list = GetCurrentWebStateList();
+  for (int i = 0; i < web_state_list->count(); ++i) {
+    web::WebState* web_state = web_state_list->GetWebStateAt(i);
+    if ([tab_id isEqualToString:GetIdForWebState(web_state)])
+      return web_state;
+  }
+  return nil;
+}
+
+// Returns the index of the WebState with the given tab_id, or
+// WebStateList::kInvalidIndex if no such WebState is found.
+int GetIndexOfWebStateWithId(NSString* tab_id) {
+  WebStateList* web_state_list = GetCurrentWebStateList();
+  return web_state_list->GetIndexOfWebState(GetWebStateWithId(tab_id));
+}
+
 }  // namespace
 
 @implementation CWTWebDriverAppInterface
 
-+ (NSError*)loadURL:(NSString*)URL timeoutInSeconds:(NSTimeInterval)timeout {
++ (NSError*)loadURL:(NSString*)URL
+               inTab:(NSString*)tabID
+    timeoutInSeconds:(NSTimeInterval)timeout {
+  __block web::WebState* webState = nullptr;
   grey_dispatch_sync_on_main_thread(^{
-    chrome_test_util::LoadUrl(GURL(base::SysNSStringToUTF8(URL)));
+    webState = GetWebStateWithId(tabID);
+    if (webState)
+      web::test::LoadUrl(webState, GURL(base::SysNSStringToUTF8(URL)));
   });
 
+  if (!webState)
+    return testing::NSErrorWithLocalizedDescription(@"No matching tab");
+
   bool success = WaitUntilConditionOrTimeout(timeout, ^bool {
     __block BOOL isLoading = NO;
     grey_dispatch_sync_on_main_thread(^{
-      isLoading = chrome_test_util::GetCurrentWebState()->IsLoading();
+      isLoading = webState->IsLoading();
     });
     return !isLoading;
   });
@@ -89,16 +114,16 @@
   return tabIDs;
 }
 
-+ (NSError*)closeCurrentTab {
++ (NSError*)closeTabWithID:(NSString*)ID {
   __block NSError* error = nil;
   grey_dispatch_sync_on_main_thread(^{
-    web::WebState* webState = chrome_test_util::GetCurrentWebState();
-    if (webState) {
+    int webStateIndex = GetIndexOfWebStateWithId(ID);
+    if (webStateIndex != WebStateList::kInvalidIndex) {
       WebStateList* webStateList = GetCurrentWebStateList();
-      webStateList->CloseWebStateAt(webStateList->GetIndexOfWebState(webState),
+      webStateList->CloseWebStateAt(webStateIndex,
                                     WebStateList::CLOSE_USER_ACTION);
     } else {
-      error = testing::NSErrorWithLocalizedDescription(@"No current tab");
+      error = testing::NSErrorWithLocalizedDescription(@"No matching tab");
     }
   });
 
@@ -109,22 +134,20 @@
   __block NSError* error = nil;
   grey_dispatch_sync_on_main_thread(^{
     DCHECK(!chrome_test_util::IsIncognitoMode());
-    WebStateList* webStateList = GetCurrentWebStateList();
-
-    for (int i = 0; i < webStateList->count(); ++i) {
-      web::WebState* webState = webStateList->GetWebStateAt(i);
-      if ([ID isEqualToString:GetIdForWebState(webState)]) {
-        webStateList->ActivateWebStateAt(i);
-        return;
-      }
+    int webStateIndex = GetIndexOfWebStateWithId(ID);
+    if (webStateIndex != WebStateList::kInvalidIndex) {
+      WebStateList* webStateList = GetCurrentWebStateList();
+      webStateList->ActivateWebStateAt(webStateIndex);
+    } else {
+      error = testing::NSErrorWithLocalizedDescription(@"No matching tab");
     }
-    error = testing::NSErrorWithLocalizedDescription(@"No matching tab");
   });
 
   return error;
 }
 
 + (NSString*)executeAsyncJavaScriptFunction:(NSString*)function
+                                      inTab:(NSString*)tabID
                            timeoutInSeconds:(NSTimeInterval)timeout {
   const std::string kMessageResultKey("result");
 
@@ -148,10 +171,6 @@
       "(%s).call(null, %s)", base::SysNSStringToUTF8(function).c_str(),
       scriptCompletionHandler.c_str());
 
-  // Remember the ID of the WebState we inject into since script execution can
-  // change the current WebState (e.g., by opening or closing tabs).
-  __block NSString* currentWebStateID = nil;
-
   __block base::Optional<base::Value> messageValue;
   const web::WebState::ScriptCommandCallback callback =
       base::BindRepeating(^bool(const base::DictionaryValue& value, const GURL&,
@@ -170,17 +189,18 @@
         return true;
       });
 
+  __block BOOL webStateFound = NO;
   grey_dispatch_sync_on_main_thread(^{
-    web::WebState* webState = chrome_test_util::GetCurrentWebState();
+    web::WebState* webState = GetWebStateWithId(tabID);
     if (!webState)
       return;
-    currentWebStateID = GetIdForWebState(webState);
+    webStateFound = YES;
     webState->AddScriptCommandCallback(callback, command);
     webState->ExecuteJavaScript(
         base::UTF8ToUTF16(scriptFunctionWithCompletionHandler));
   });
 
-  if (!currentWebStateID)
+  if (!webStateFound)
     return nil;
 
   bool success = WaitUntilConditionOrTimeout(timeout, ^bool {
@@ -192,15 +212,9 @@
   });
 
   grey_dispatch_sync_on_main_thread(^{
-    WebStateList* webStateList = GetCurrentWebStateList();
-
-    for (int i = 0; i < webStateList->count(); ++i) {
-      web::WebState* webState = webStateList->GetWebStateAt(i);
-      if ([currentWebStateID isEqualToString:GetIdForWebState(webState)]) {
-        webState->RemoveScriptCommandCallback(command);
-        return;
-      }
-    }
+    web::WebState* webState = GetWebStateWithId(tabID);
+    if (webState)
+      webState->RemoveScriptCommandCallback(command);
   });
 
   if (!success)
diff --git a/ios/showcase/infobars/sc_infobar_banner_coordinator.mm b/ios/showcase/infobars/sc_infobar_banner_coordinator.mm
index 9bd773ad..5ec8280 100644
--- a/ios/showcase/infobars/sc_infobar_banner_coordinator.mm
+++ b/ios/showcase/infobars/sc_infobar_banner_coordinator.mm
@@ -57,7 +57,7 @@
 
 #pragma mark InfobarBannerPositioner
 
-- (CGFloat)modalHeight {
+- (CGFloat)modalHeightForWidth:(CGFloat)width {
   return 200;
 }
 
diff --git a/ios/web_view/BUILD.gn b/ios/web_view/BUILD.gn
index 2ce30f89..d6d28c4 100644
--- a/ios/web_view/BUILD.gn
+++ b/ios/web_view/BUILD.gn
@@ -277,6 +277,7 @@
   "//components/leveldb_proto",
   "//services/network:network_service",
   "//components/password_manager/core/browser",
+  "//components/password_manager/core/browser:affiliation",
   "//components/password_manager/core/common",
   "//components/password_manager/ios",
   "//components/pref_registry",
diff --git a/ios/web_view/public/cwv_ui_delegate.h b/ios/web_view/public/cwv_ui_delegate.h
index 758ef51..8037844 100644
--- a/ios/web_view/public/cwv_ui_delegate.h
+++ b/ios/web_view/public/cwv_ui_delegate.h
@@ -26,9 +26,10 @@
 
 @optional
 // Instructs the delegate to create a new browsing window (f.e. in response to
-// window.open JavaScript call). Page will not open a window if this method
-// returns nil or is not implemented. This method can not return |webView|.
-- (CWVWebView*)webView:(CWVWebView*)webView
+// window.open JavaScript call). Page will not open a window and report a
+// failure (f.e. return null from window.open) if this method returns nil or is
+// not implemented. This method can not return |webView|.
+- (nullable CWVWebView*)webView:(CWVWebView*)webView
     createWebViewWithConfiguration:(CWVWebViewConfiguration*)configuration
                forNavigationAction:(CWVNavigationAction*)action;
 
diff --git a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
index fe320a26..66a22fa 100644
--- a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
+++ b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
@@ -434,17 +434,12 @@
         return array;
     }
 
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @CalledByNative
     private int getNativeOutputSampleRate() {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            String sampleRateString = mAudioManager.getProperty(
-                    AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);
-            return sampleRateString == null
-                    ? DEFAULT_SAMPLING_RATE : Integer.parseInt(sampleRateString);
-        } else {
-            return DEFAULT_SAMPLING_RATE;
-        }
+        String sampleRateString =
+                mAudioManager.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);
+        return sampleRateString == null ? DEFAULT_SAMPLING_RATE
+                                        : Integer.parseInt(sampleRateString);
     }
 
   /**
@@ -493,12 +488,8 @@
                 PackageManager.FEATURE_AUDIO_LOW_LATENCY);
     }
 
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     @CalledByNative
     private int getAudioLowLatencyOutputFrameSize() {
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            return DEFAULT_FRAME_PER_BUFFER;
-        }
         String framesPerBuffer =
                 mAudioManager.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER);
         return framesPerBuffer == null
@@ -609,31 +600,16 @@
      * android.bluetooth.BluetoothAdapter.getProfileConnectionState() requires
      * the BLUETOOTH permission.
      */
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
     private boolean hasBluetoothHeadset() {
         if (!mHasBluetoothPermission) {
             Log.w(TAG, "hasBluetoothHeadset() requires BLUETOOTH permission");
             return false;
         }
 
-        // To get a BluetoothAdapter representing the local Bluetooth adapter,
-        // when running on JELLY_BEAN_MR1 (4.2) and below, call the static
-        // getDefaultAdapter() method; when running on JELLY_BEAN_MR2 (4.3) and
-        // higher, retrieve it through getSystemService(String) with
-        // BLUETOOTH_SERVICE.
-        BluetoothAdapter btAdapter = null;
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-            // Use BluetoothManager to get the BluetoothAdapter for
-            // Android 4.3 and above.
-            BluetoothManager btManager =
-                    (BluetoothManager) ContextUtils.getApplicationContext().getSystemService(
-                            Context.BLUETOOTH_SERVICE);
-            btAdapter = btManager.getAdapter();
-        } else {
-            // Use static method for Android 4.2 and below to get the
-            // BluetoothAdapter.
-            btAdapter = BluetoothAdapter.getDefaultAdapter();
-        }
+        BluetoothManager btManager =
+                (BluetoothManager) ContextUtils.getApplicationContext().getSystemService(
+                        Context.BLUETOOTH_SERVICE);
+        BluetoothAdapter btAdapter = btManager.getAdapter();
 
         if (btAdapter == null) {
             // Bluetooth not supported on this platform.
@@ -657,6 +633,7 @@
      * peripheral and automatically routes audio playback and capture appropriately on Android5.0
      * and higher in the order of wired headset first, then USB audio device and earpiece at last.
      */
+    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
     private boolean hasUsbAudio() {
         // Android 5.0 (API level 21) and above supports USB audio class 1 (UAC1) features for
         // audio functions, capture and playback, in host mode.
diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
index 9136542..4a8050d 100644
--- a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
@@ -334,10 +334,7 @@
             }
         }
         try {
-            String codecName = "unknown";
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-                codecName = mMediaCodec.getName();
-            }
+            String codecName = mMediaCodec.getName();
             // This logging is to help us identify hung MediaCodecs in crash reports.
             Log.w(TAG, "Releasing: " + codecName);
             mMediaCodec.release();
diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java b/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java
index 1e158b7..075a0413 100644
--- a/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java
@@ -295,13 +295,6 @@
 
         assert result.mediaCodec == null;
 
-        // Creation of ".secure" codecs sometimes crash instead of throwing exceptions
-        // on pre-JBMR2 devices.
-        if (codecType == CodecType.SECURE
-                && Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) {
-            return result;
-        }
-
         // Do not create codec for blacklisted devices.
         if (!isDecoderSupportedForDevice(mime)) {
             Log.e(TAG, "Decoder for type %s is not supported on this device", mime);
@@ -367,12 +360,6 @@
         // *** DO NOT ADD ANY NEW CODECS WITHOUT UPDATING MIME_UTIL. ***
         // *************************************************************
         if (mime.equals("video/x-vnd.on2.vp8")) {
-            // Only support VP8 on Android versions where we don't have to synchronously
-            // tear down the MediaCodec on surface destruction because VP8 requires us to
-            // completely drain the decoder before releasing it, which is difficult and
-            // time consuming to do while the surface is being destroyed.
-            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) return false;
-
             if (Build.MANUFACTURER.toLowerCase(Locale.getDefault()).equals("samsung")) {
                 // Some Samsung devices cannot render VP8 video directly to the surface.
 
diff --git a/media/base/android/media_codec_bridge_impl.cc b/media/base/android/media_codec_bridge_impl.cc
index 12f87ba..b08adb6b 100644
--- a/media/base/android/media_codec_bridge_impl.cc
+++ b/media/base/android/media_codec_bridge_impl.cc
@@ -587,9 +587,6 @@
 }
 
 std::string MediaCodecBridgeImpl::GetName() {
-  if (base::android::BuildInfo::GetInstance()->sdk_int() <
-      base::android::SDK_VERSION_JELLY_BEAN_MR2)
-    return "";
   JNIEnv* env = AttachCurrentThread();
   ScopedJavaLocalRef<jstring> j_name =
       Java_MediaCodecBridge_getName(env, j_bridge_);
diff --git a/media/base/android/media_codec_loop.cc b/media/base/android/media_codec_loop.cc
index 94f49f0..1505cc43 100644
--- a/media/base/android/media_codec_loop.cc
+++ b/media/base/android/media_codec_loop.cc
@@ -81,9 +81,6 @@
   if (state_ == STATE_ERROR || state_ == STATE_DRAINED)
     return false;
 
-  if (CodecNeedsFlushWorkaround())
-    return false;
-
   // Actually try to flush!
   io_timer_.Stop();
 
@@ -354,15 +351,6 @@
   return media_codec_.get();
 }
 
-bool MediaCodecLoop::CodecNeedsFlushWorkaround() const {
-  // Return true if and only if Flush() isn't supported / doesn't work.
-  // Prior to JellyBean-MR2, flush() had several bugs (b/8125974, b/8347958) so
-  // we have to completely destroy and recreate the codec there.
-  // TODO(liberato): MediaCodecUtil implements the same function.  We should
-  // call that one, except that it doesn't compile outside of android right now.
-  return sdk_int_ < base::android::SDK_VERSION_JELLY_BEAN_MR2;
-}
-
 // static
 const char* MediaCodecLoop::AsString(State state) {
 #define RETURN_STRING(x) \
diff --git a/media/base/android/media_codec_loop.h b/media/base/android/media_codec_loop.h
index eded6bb..cc400c8 100644
--- a/media/base/android/media_codec_loop.h
+++ b/media/base/android/media_codec_loop.h
@@ -294,9 +294,6 @@
   // Helper method to change the state.
   void SetState(State new_state);
 
-  // Helper method to tell us if MediaCodecBridge::Flush() doesn't work.
-  bool CodecNeedsFlushWorkaround() const;
-
   // A helper function for logging.
   static const char* AsString(State state);
 
diff --git a/media/base/android/media_codec_loop_unittest.cc b/media/base/android/media_codec_loop_unittest.cc
index 7e9a579e..6784015c 100644
--- a/media/base/android/media_codec_loop_unittest.cc
+++ b/media/base/android/media_codec_loop_unittest.cc
@@ -411,28 +411,6 @@
   codec_loop_->ExpectWork();
 }
 
-TEST_F(MediaCodecLoopTest, TestTryFlushOnJellyBeanMR2) {
-  // On JB MR2+ MCL should be willing to use MediaCodecBridge::Flush.
-  ConstructCodecLoop(base::android::SDK_VERSION_JELLY_BEAN_MR2);
-  EXPECT_CALL(Codec(), Flush()).Times(1).WillOnce(Return(MEDIA_CODEC_OK));
-  ASSERT_TRUE(codec_loop_->TryFlush());
-}
-
-TEST_F(MediaCodecLoopTest, TestTryFlushAfterJellyBeanMR2Fails) {
-  // On JB MR2+, MCL should be willing to use MediaCodecBridge::Flush.  Try
-  // that, but make Flush fail.
-  ConstructCodecLoop(base::android::SDK_VERSION_JELLY_BEAN_MR2);
-  EXPECT_CALL(Codec(), Flush()).Times(1).WillOnce(Return(MEDIA_CODEC_ERROR));
-  EXPECT_CALL(*client_, OnCodecLoopError()).Times(1);
-  ASSERT_FALSE(codec_loop_->TryFlush());
-}
-
-TEST_F(MediaCodecLoopTest, TestTryFlushOnJellyBeanMR1) {
-  // In JB MR1, MCL should not be willing to use MediaCodecBridge::Flush.
-  ConstructCodecLoop(base::android::SDK_VERSION_JELLY_BEAN_MR1);
-  ASSERT_FALSE(codec_loop_->TryFlush());
-}
-
 TEST_F(MediaCodecLoopTest, TestOnKeyAdded) {
   ConstructCodecLoop();
 
diff --git a/media/base/android/media_codec_util.cc b/media/base/android/media_codec_util.cc
index 0f5ac88..404a79b 100644
--- a/media/base/android/media_codec_util.cc
+++ b/media/base/android/media_codec_util.cc
@@ -28,7 +28,6 @@
 using base::android::JavaIntArrayToIntVector;
 using base::android::JavaRef;
 using base::android::ScopedJavaLocalRef;
-using base::android::SDK_VERSION_JELLY_BEAN_MR2;
 using base::android::SDK_VERSION_KITKAT;
 using base::android::SDK_VERSION_LOLLIPOP;
 using base::android::SDK_VERSION_LOLLIPOP_MR1;
@@ -178,21 +177,6 @@
       {"GT-S7262", SDK_VERSION_KITKAT},
       {"GT-S5282", SDK_VERSION_KITKAT},
       {"GT-I8552", SDK_VERSION_KITKAT},
-
-      // crbug.com/365494, crbug.com/615872
-      {"GT-P3113", SDK_VERSION_JELLY_BEAN_MR2},
-      {"GT-P5110", SDK_VERSION_JELLY_BEAN_MR2},
-      {"GT-P5100", SDK_VERSION_JELLY_BEAN_MR2},
-      {"GT-P5113", SDK_VERSION_JELLY_BEAN_MR2},
-      {"GT-P3110", SDK_VERSION_JELLY_BEAN_MR2},
-      {"GT-N5110", SDK_VERSION_JELLY_BEAN_MR2},
-      {"e-tab4", SDK_VERSION_JELLY_BEAN_MR2},
-      {"GT-I8200Q", SDK_VERSION_JELLY_BEAN_MR2},
-
-      // crbug.com/693216
-      {"GT-I8552B", SDK_VERSION_JELLY_BEAN_MR2},
-      {"GT-I8262", SDK_VERSION_JELLY_BEAN_MR2},
-      {"GT-I8262B", SDK_VERSION_JELLY_BEAN_MR2},
   };
 
   const BlacklistEntry* iter = std::find(
@@ -390,17 +374,13 @@
 
 // static
 bool MediaCodecUtil::CodecNeedsFlushWorkaround(MediaCodecBridge* codec) {
-  int sdk_int = base::android::BuildInfo::GetInstance()->sdk_int();
-  std::string codec_name = codec->GetName();
-  return sdk_int < SDK_VERSION_JELLY_BEAN_MR2 ||
-         (sdk_int == SDK_VERSION_JELLY_BEAN_MR2 &&
-          ("OMX.SEC.avc.dec" == codec_name ||
-           "OMX.SEC.avc.dec.secure" == codec_name)) ||
-         (sdk_int == SDK_VERSION_KITKAT &&
-          base::StartsWith(base::android::BuildInfo::GetInstance()->model(),
-                           "SM-G800", base::CompareCase::INSENSITIVE_ASCII) &&
-          ("OMX.Exynos.avc.dec" == codec_name ||
-           "OMX.Exynos.avc.dec.secure" == codec_name));
+  const auto& codec_name = codec->GetName();
+  return base::android::BuildInfo::GetInstance()->sdk_int() ==
+             SDK_VERSION_KITKAT &&
+         base::StartsWith(base::android::BuildInfo::GetInstance()->model(),
+                          "SM-G800", base::CompareCase::INSENSITIVE_ASCII) &&
+         ("OMX.Exynos.avc.dec" == codec_name ||
+          "OMX.Exynos.avc.dec.secure" == codec_name);
 }
 
 }  // namespace media
diff --git a/media/base/android/media_codec_util_unittest.cc b/media/base/android/media_codec_util_unittest.cc
index 7c935e91..14324612 100644
--- a/media/base/android/media_codec_util_unittest.cc
+++ b/media/base/android/media_codec_util_unittest.cc
@@ -10,9 +10,6 @@
 namespace media {
 
 // These will come from mockable BuildInfo, once it exists.
-using base::android::SDK_VERSION_JELLY_BEAN;
-using base::android::SDK_VERSION_JELLY_BEAN_MR1;
-using base::android::SDK_VERSION_JELLY_BEAN_MR2;
 using base::android::SDK_VERSION_KITKAT;
 using base::android::SDK_VERSION_LOLLIPOP;
 using base::android::SDK_VERSION_LOLLIPOP_MR1;
@@ -49,19 +46,10 @@
                  {"GT-S5282", SDK_VERSION_KITKAT},
                  {"GT-I8552", SDK_VERSION_KITKAT},
 
-                 {"GT-P3113", SDK_VERSION_JELLY_BEAN_MR2},
-                 {"GT-P5110", SDK_VERSION_JELLY_BEAN_MR2},
-                 {"GT-P5100", SDK_VERSION_JELLY_BEAN_MR2},
-                 {"GT-P5113", SDK_VERSION_JELLY_BEAN_MR2},
-                 {"GT-P3110", SDK_VERSION_JELLY_BEAN_MR2},
-                 {"GT-N5110", SDK_VERSION_JELLY_BEAN_MR2},
-                 {"e-tab4", SDK_VERSION_JELLY_BEAN_MR2},
-                 {"GT-I8200Q", SDK_VERSION_JELLY_BEAN_MR2},
-
                  {"always_works", 0},  // Some codec that works everywhere.
                  {nullptr, 0}};
 
-  for (int sdk = SDK_VERSION_JELLY_BEAN; sdk <= SDK_VERSION_NOUGAT; sdk++) {
+  for (int sdk = SDK_VERSION_KITKAT; sdk <= SDK_VERSION_NOUGAT; sdk++) {
     for (int i = 0; devices[i].model; i++) {
       bool supported =
           MediaCodecUtil::IsMediaCodecAvailableFor(sdk, devices[i].model);
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
index fa3efa5..d915762 100644
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -297,6 +297,10 @@
 const base::Feature kUseSurfaceLayerForVideo{"UseSurfaceLayerForVideo",
                                              base::FEATURE_ENABLED_BY_DEFAULT};
 
+// Enable VA-API hardware encode acceleration for H264 on AMD.
+const base::Feature kVaapiH264AMDEncoder{"VaapiH264AMDEncoder",
+                                         base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Enable VA-API hardware low power encoder for all codecs.
 const base::Feature kVaapiLowPowerEncoder{"VaapiLowPowerEncoder",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
@@ -309,6 +313,10 @@
 const base::Feature kVaapiVP9Encoder{"VaapiVP9Encoder",
                                      base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Enable VP9 k-SVC decoding with HW decoder for webrtc use case on ChromeOS.
+const base::Feature kVp9kSVCHWDecoding{"Vp9kSVCHWDecoding",
+                                       base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Inform video blitter of video color space.
 const base::Feature kVideoBlitColorAccuracy{"video-blit-color-accuracy",
                                             base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
index 754d633..becf635 100644
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -133,9 +133,11 @@
 MEDIA_EXPORT extern const base::Feature kUseNewMediaCache;
 MEDIA_EXPORT extern const base::Feature kUseR16Texture;
 MEDIA_EXPORT extern const base::Feature kUseSurfaceLayerForVideo;
+MEDIA_EXPORT extern const base::Feature kVaapiH264AMDEncoder;
 MEDIA_EXPORT extern const base::Feature kVaapiLowPowerEncoder;
 MEDIA_EXPORT extern const base::Feature kVaapiVP8Encoder;
 MEDIA_EXPORT extern const base::Feature kVaapiVP9Encoder;
+MEDIA_EXPORT extern const base::Feature kVp9kSVCHWDecoding;
 MEDIA_EXPORT extern const base::Feature kVideoBlitColorAccuracy;
 MEDIA_EXPORT extern const base::Feature kWidevineAv1;
 
diff --git a/media/blink/cdm_result_promise.h b/media/blink/cdm_result_promise.h
index 1210f4b..06d50035 100644
--- a/media/blink/cdm_result_promise.h
+++ b/media/blink/cdm_result_promise.h
@@ -65,7 +65,7 @@
 template <>
 inline void CdmResultPromise<>::resolve() {
   MarkPromiseSettled();
-  ReportCdmResultUMA(uma_name_, SUCCESS);
+  ReportCdmResultUMA(uma_name_, 0, SUCCESS);
   web_cdm_result_.Complete();
 }
 
@@ -73,7 +73,7 @@
 inline void CdmResultPromise<CdmKeyInformation::KeyStatus>::resolve(
     const CdmKeyInformation::KeyStatus& key_status) {
   MarkPromiseSettled();
-  ReportCdmResultUMA(uma_name_, SUCCESS);
+  ReportCdmResultUMA(uma_name_, 0, SUCCESS);
   web_cdm_result_.CompleteWithKeyStatus(ConvertCdmKeyStatus(key_status));
 }
 
@@ -82,7 +82,7 @@
                                     uint32_t system_code,
                                     const std::string& error_message) {
   MarkPromiseSettled();
-  ReportCdmResultUMA(uma_name_,
+  ReportCdmResultUMA(uma_name_, system_code,
                      ConvertCdmExceptionToResultForUMA(exception_code));
   web_cdm_result_.CompleteWithError(ConvertCdmException(exception_code),
                                     system_code,
diff --git a/media/blink/cdm_result_promise_helper.cc b/media/blink/cdm_result_promise_helper.cc
index 93dd4da7..a799978 100644
--- a/media/blink/cdm_result_promise_helper.cc
+++ b/media/blink/cdm_result_promise_helper.cc
@@ -65,10 +65,16 @@
   return blink::WebEncryptedMediaKeyInformation::KeyStatus::kInternalError;
 }
 
-void ReportCdmResultUMA(const std::string& uma_name, CdmResultForUMA result) {
+void ReportCdmResultUMA(const std::string& uma_name,
+                        uint32_t system_code,
+                        CdmResultForUMA result) {
   if (uma_name.empty())
     return;
 
+  // Only report system code on promise rejection.
+  if (result != CdmResultForUMA::SUCCESS)
+    base::UmaHistogramSparse(uma_name + ".SystemCode", system_code);
+
   base::UmaHistogramEnumeration(uma_name, result, NUM_RESULT_CODES);
 }
 
diff --git a/media/blink/cdm_result_promise_helper.h b/media/blink/cdm_result_promise_helper.h
index 32cfb8e..a2a0fd79 100644
--- a/media/blink/cdm_result_promise_helper.h
+++ b/media/blink/cdm_result_promise_helper.h
@@ -43,6 +43,7 @@
 ConvertCdmKeyStatus(media::CdmKeyInformation::KeyStatus key_status);
 
 MEDIA_BLINK_EXPORT void ReportCdmResultUMA(const std::string& uma_name,
+                                           uint32_t system_code,
                                            CdmResultForUMA result);
 
 }  // namespace media
diff --git a/media/blink/new_session_cdm_result_promise.cc b/media/blink/new_session_cdm_result_promise.cc
index 5a4441c..a8984c4 100644
--- a/media/blink/new_session_cdm_result_promise.cc
+++ b/media/blink/new_session_cdm_result_promise.cc
@@ -82,7 +82,7 @@
   }
 
   MarkPromiseSettled();
-  ReportCdmResultUMA(key_system_uma_prefix_ + uma_name_,
+  ReportCdmResultUMA(key_system_uma_prefix_ + uma_name_, 0,
                      ConvertStatusToUMAResult(status));
 
   // Only report time for promise resolution (not rejection).
@@ -99,7 +99,7 @@
            << ", error_message = " << error_message;
 
   MarkPromiseSettled();
-  ReportCdmResultUMA(uma_name_,
+  ReportCdmResultUMA(uma_name_, system_code,
                      ConvertCdmExceptionToResultForUMA(exception_code));
   web_cdm_result_.CompleteWithError(ConvertCdmException(exception_code),
                                     system_code,
diff --git a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java
index 0e72521..d541593d 100644
--- a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java
+++ b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java
@@ -59,7 +59,7 @@
         COLOR_TEMPERATURES_MAP.append(7000, android.hardware.Camera.Parameters.WHITE_BALANCE_SHADE);
     };
 
-    // Some devices don't support YV12 format correctly, even with JELLY_BEAN or
+    // Some devices don't support YV12 format correctly, even with KITKAT or
     // newer OS. To work around the issues on those devices, we have to request
     // NV21. This is supposed to be a temporary hack.
     private static class BuggyDeviceHack {
diff --git a/media/capture/video/chromeos/request_manager.cc b/media/capture/video/chromeos/request_manager.cc
index 91e4f22..63ab8ed 100644
--- a/media/capture/video/chromeos/request_manager.cc
+++ b/media/capture/video/chromeos/request_manager.cc
@@ -149,6 +149,71 @@
   take_photo_settings_queue_.push(std::move(settings));
 }
 
+base::WeakPtr<RequestManager> RequestManager::GetWeakPtr() {
+  return weak_ptr_factory_.GetWeakPtr();
+}
+
+void RequestManager::AddResultMetadataObserver(
+    ResultMetadataObserver* observer) {
+  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
+  DCHECK(!result_metadata_observers_.count(observer));
+
+  result_metadata_observers_.insert(observer);
+}
+
+void RequestManager::RemoveResultMetadataObserver(
+    ResultMetadataObserver* observer) {
+  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
+  DCHECK(result_metadata_observers_.count(observer));
+
+  result_metadata_observers_.erase(observer);
+}
+
+void RequestManager::SetCaptureMetadata(cros::mojom::CameraMetadataTag tag,
+                                        cros::mojom::EntryType type,
+                                        size_t count,
+                                        std::vector<uint8_t> value) {
+  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
+
+  cros::mojom::CameraMetadataEntryPtr setting =
+      cros::mojom::CameraMetadataEntry::New();
+
+  setting->tag = tag;
+  setting->type = type;
+  setting->count = count;
+  setting->data = std::move(value);
+
+  capture_settings_override_.push_back(std::move(setting));
+}
+
+void RequestManager::SetRepeatingCaptureMetadata(
+    cros::mojom::CameraMetadataTag tag,
+    cros::mojom::EntryType type,
+    size_t count,
+    std::vector<uint8_t> value) {
+  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
+  cros::mojom::CameraMetadataEntryPtr setting =
+      cros::mojom::CameraMetadataEntry::New();
+
+  setting->tag = tag;
+  setting->type = type;
+  setting->count = count;
+  setting->data = std::move(value);
+
+  capture_settings_repeating_override_[tag] = std::move(setting);
+}
+
+void RequestManager::UnsetRepeatingCaptureMetadata(
+    cros::mojom::CameraMetadataTag tag) {
+  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
+  auto it = capture_settings_repeating_override_.find(tag);
+  if (it == capture_settings_repeating_override_.end()) {
+    LOG(ERROR) << "Unset a non-existent metadata: " << tag;
+    return;
+  }
+  capture_settings_repeating_override_.erase(it);
+}
+
 void RequestManager::SetJpegOrientation(
     cros::mojom::CameraMetadataPtr* settings) {
   std::vector<uint8_t> frame_orientation(sizeof(int32_t));
@@ -752,71 +817,6 @@
   PrepareCaptureRequest();
 }
 
-base::WeakPtr<RequestManager> RequestManager::GetWeakPtr() {
-  return weak_ptr_factory_.GetWeakPtr();
-}
-
-void RequestManager::AddResultMetadataObserver(
-    ResultMetadataObserver* observer) {
-  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
-  DCHECK(!result_metadata_observers_.count(observer));
-
-  result_metadata_observers_.insert(observer);
-}
-
-void RequestManager::RemoveResultMetadataObserver(
-    ResultMetadataObserver* observer) {
-  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
-  DCHECK(result_metadata_observers_.count(observer));
-
-  result_metadata_observers_.erase(observer);
-}
-
-void RequestManager::SetCaptureMetadata(cros::mojom::CameraMetadataTag tag,
-                                        cros::mojom::EntryType type,
-                                        size_t count,
-                                        std::vector<uint8_t> value) {
-  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
-
-  cros::mojom::CameraMetadataEntryPtr setting =
-      cros::mojom::CameraMetadataEntry::New();
-
-  setting->tag = tag;
-  setting->type = type;
-  setting->count = count;
-  setting->data = std::move(value);
-
-  capture_settings_override_.push_back(std::move(setting));
-}
-
-void RequestManager::SetRepeatingCaptureMetadata(
-    cros::mojom::CameraMetadataTag tag,
-    cros::mojom::EntryType type,
-    size_t count,
-    std::vector<uint8_t> value) {
-  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
-  cros::mojom::CameraMetadataEntryPtr setting =
-      cros::mojom::CameraMetadataEntry::New();
-
-  setting->tag = tag;
-  setting->type = type;
-  setting->count = count;
-  setting->data = std::move(value);
-
-  capture_settings_repeating_override_[tag] = std::move(setting);
-}
-
-void RequestManager::UnsetRepeatingCaptureMetadata(
-    cros::mojom::CameraMetadataTag tag) {
-  DCHECK(ipc_task_runner_->BelongsToCurrentThread());
-  auto it = capture_settings_repeating_override_.find(tag);
-  if (it == capture_settings_repeating_override_.end()) {
-    LOG(ERROR) << "Unset a non-existent metadata: " << tag;
-    return;
-  }
-  capture_settings_repeating_override_.erase(it);
-}
-
 void RequestManager::UpdateCaptureSettings(
     cros::mojom::CameraMetadataPtr* capture_settings) {
   DCHECK(ipc_task_runner_->BelongsToCurrentThread());
diff --git a/media/capture/video/chromeos/request_manager.h b/media/capture/video/chromeos/request_manager.h
index c9277f9a..b9db835 100644
--- a/media/capture/video/chromeos/request_manager.h
+++ b/media/capture/video/chromeos/request_manager.h
@@ -236,10 +236,6 @@
   // Callback for ProcessCaptureRequest().
   void OnProcessedCaptureRequest(int32_t result);
 
-  // If there are some metadata set by SetCaptureMetadata() or
-  // SetRepeatingCaptureMetadata(), update them onto |capture_settings|.
-  void UpdateCaptureSettings(cros::mojom::CameraMetadataPtr* capture_settings);
-
   // ProcessCaptureResult receives the result metadata as well as the filled
   // buffer from camera HAL.  The result metadata may be divided and delivered
   // in several stages.  Before all the result metadata is received the
@@ -247,6 +243,10 @@
   void ProcessCaptureResult(
       cros::mojom::Camera3CaptureResultPtr result) override;
 
+  // Checks if the pending buffers are ready to submit. Trigger
+  // SubmitCaptureResult() if the buffers are ready to submit.
+  void TrySubmitPendingBuffers(uint32_t frame_number);
+
   // Notify receives the shutter time of capture requests and various errors
   // from camera HAL.  The shutter time is used as the timestamp in the video
   // frame delivered to Chrome.
@@ -264,9 +264,9 @@
                            StreamType stream_type,
                            cros::mojom::Camera3StreamBufferPtr stream_buffer);
 
-  // Checks if the pending buffers are ready to submit. Trigger
-  // SubmitCaptureResult() if the buffers are ready to submit.
-  void TrySubmitPendingBuffers(uint32_t frame_number);
+  // If there are some metadata set by SetCaptureMetadata() or
+  // SetRepeatingCaptureMetadata(), update them onto |capture_settings|.
+  void UpdateCaptureSettings(cros::mojom::CameraMetadataPtr* capture_settings);
 
   mojo::Binding<cros::mojom::Camera3CallbackOps> callback_ops_;
 
diff --git a/media/capture/video/chromeos/stream_buffer_manager.cc b/media/capture/video/chromeos/stream_buffer_manager.cc
index 95efff1..1788804 100644
--- a/media/capture/video/chromeos/stream_buffer_manager.cc
+++ b/media/capture/video/chromeos/stream_buffer_manager.cc
@@ -47,20 +47,6 @@
   return stream_context_[stream_type]->capture_format;
 }
 
-void StreamBufferManager::DestroyCurrentStreamsAndBuffers() {
-  for (const auto& iter : stream_context_) {
-    if (iter.second) {
-      for (const auto& buf : iter.second->buffers) {
-        if (buf) {
-          buf->Unmap();
-        }
-      }
-      iter.second->buffers.clear();
-    }
-  }
-  stream_context_.clear();
-}
-
 bool StreamBufferManager::HasFreeBuffers(
     const std::set<StreamType>& stream_types) {
   for (auto stream_type : stream_types) {
@@ -254,6 +240,20 @@
   return buffer_id & 0xFFFFFFFF;
 }
 
+void StreamBufferManager::DestroyCurrentStreamsAndBuffers() {
+  for (const auto& iter : stream_context_) {
+    if (iter.second) {
+      for (const auto& buf : iter.second->buffers) {
+        if (buf) {
+          buf->Unmap();
+        }
+      }
+      iter.second->buffers.clear();
+    }
+  }
+  stream_context_.clear();
+}
+
 StreamBufferManager::StreamContext::StreamContext() = default;
 
 StreamBufferManager::StreamContext::~StreamContext() = default;
diff --git a/media/gpu/accelerated_video_decoder.h b/media/gpu/accelerated_video_decoder.h
index 11c4ad9..71e8ecd 100644
--- a/media/gpu/accelerated_video_decoder.h
+++ b/media/gpu/accelerated_video_decoder.h
@@ -9,7 +9,7 @@
 #include <stdint.h>
 
 #include "base/macros.h"
-#include "media/base/decrypt_config.h"
+#include "media/base/decoder_buffer.h"
 #include "media/gpu/media_gpu_export.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/size.h"
@@ -25,15 +25,12 @@
   AcceleratedVideoDecoder() {}
   virtual ~AcceleratedVideoDecoder() {}
 
-  // Set the buffer at |ptr| of |size| bytes as the current source of encoded
-  // stream data. Pictures produced as a result of this call should be assigned
-  // the passed stream |id|. |decrypt_config| may specify the decryption
-  // configuration of the specified buffer, and in that case, Decode() may
-  // return kNoKey.
-  virtual void SetStream(int32_t id,
-                         const uint8_t* ptr,
-                         size_t size,
-                         const DecryptConfig* decrypt_config = nullptr) = 0;
+  // Set the buffer owned by |decoder_buffer| as the current source of encoded
+  // stream data. AcceleratedVideoDecoder doesn't have an ownership of the
+  // buffer. |decoder_buffer| must be kept alive until Decode() returns
+  // kRanOutOfStreamData. Pictures produced as a result of this call should be
+  // assigned the passed stream |id|.
+  virtual void SetStream(int32_t id, const DecoderBuffer& decoder_buffer) = 0;
 
   // Have the decoder flush its state and trigger output of all previously
   // decoded surfaces. Return false on failure.
diff --git a/media/gpu/android/texture_owner.cc b/media/gpu/android/texture_owner.cc
index 8e6ed6d4c..da02e54 100644
--- a/media/gpu/android/texture_owner.cc
+++ b/media/gpu/android/texture_owner.cc
@@ -12,6 +12,7 @@
 #include "gpu/command_buffer/service/abstract_texture.h"
 #include "gpu/command_buffer/service/abstract_texture_impl_shared_context_state.h"
 #include "gpu/command_buffer/service/decoder_context.h"
+#include "gpu/command_buffer/service/feature_info.h"
 #include "gpu/command_buffer/service/texture_base.h"
 #include "media/gpu/android/image_reader_gl_owner.h"
 #include "media/gpu/android/surface_texture_gl_owner.h"
@@ -60,10 +61,13 @@
     scoped_refptr<gpu::SharedContextState> context_state) {
   DCHECK(context_state);
 
-  // This assumes a non-passthrough (validating) command decoder, which is safe
-  // on Android for now. TODO(vikassoni): Make this independent of cmd decoder
-  // type in future to support passthrough decoder.
-  // Note that the size isn't really used.  We just care about the service id.
+  gpu::gles2::FeatureInfo* feature_info = context_state->feature_info();
+  if (feature_info && feature_info->is_passthrough_cmd_decoder()) {
+    return std::make_unique<
+        gpu::gles2::AbstractTextureImplOnSharedContextPassthrough>(
+        GL_TEXTURE_EXTERNAL_OES, std::move(context_state));
+  }
+
   return std::make_unique<gpu::gles2::AbstractTextureImplOnSharedContext>(
       GL_TEXTURE_EXTERNAL_OES, GL_RGBA,
       0,  // width
diff --git a/media/gpu/chromeos/chromeos_video_decoder_factory.cc b/media/gpu/chromeos/chromeos_video_decoder_factory.cc
index 0b68d5a..4e67182 100644
--- a/media/gpu/chromeos/chromeos_video_decoder_factory.cc
+++ b/media/gpu/chromeos/chromeos_video_decoder_factory.cc
@@ -22,33 +22,6 @@
 
 namespace media {
 
-namespace {
-
-std::unique_ptr<VideoDecoder> CreateChromeosVideoDecoder(
-    scoped_refptr<base::SequencedTaskRunner> client_task_runner,
-    std::unique_ptr<DmabufVideoFramePool> frame_pool,
-    std::unique_ptr<VideoFrameConverter> frame_converter) {
-  if (!client_task_runner || !frame_pool || !frame_converter)
-    return nullptr;
-
-    // TODO(dstaessens@): We first try VAAPI as USE_V4L2_CODEC might also be
-    // set, even though initialization of V4L2SliceVideoDecoder would fail. We
-    // need to implement a better way to select the correct decoder.
-#if BUILDFLAG(USE_VAAPI)
-  return VaapiVideoDecoder::Create(std::move(client_task_runner),
-                                   std::move(frame_pool),
-                                   std::move(frame_converter));
-#elif BUILDFLAG(USE_V4L2_CODEC)
-  return V4L2SliceVideoDecoder::Create(std::move(client_task_runner),
-                                       std::move(frame_pool),
-                                       std::move(frame_converter));
-#endif
-
-  return nullptr;
-}
-
-}  // namespace
-
 // static
 SupportedVideoDecoderConfigs
 ChromeosVideoDecoderFactory::GetSupportedConfigs() {
@@ -73,29 +46,25 @@
 // static
 std::unique_ptr<VideoDecoder> ChromeosVideoDecoderFactory::Create(
     scoped_refptr<base::SequencedTaskRunner> client_task_runner,
-    scoped_refptr<base::SingleThreadTaskRunner> gpu_task_runner,
-    GetCommandBufferStubCB get_stub_cb) {
-  std::unique_ptr<DmabufVideoFramePool> frame_pool =
-      std::make_unique<PlatformVideoFramePool>();
-  std::unique_ptr<VideoFrameConverter> frame_converter =
-      std::make_unique<MailboxVideoFrameConverter>(
-          base::BindRepeating(&DmabufVideoFramePool::UnwrapFrame,
-                              base::Unretained(frame_pool.get())),
-          std::move(gpu_task_runner), std::move(get_stub_cb));
+    std::unique_ptr<DmabufVideoFramePool> frame_pool,
+    std::unique_ptr<VideoFrameConverter> frame_converter) {
+  if (!client_task_runner || !frame_pool || !frame_converter)
+    return nullptr;
 
-  return CreateChromeosVideoDecoder(std::move(client_task_runner),
-                                    std::move(frame_pool),
-                                    std::move(frame_converter));
-}
+  // TODO(dstaessens@): We first try VAAPI as USE_V4L2_CODEC might also be
+  // set, even though initialization of V4L2SliceVideoDecoder would fail. We
+  // need to implement a better way to select the correct decoder.
+#if BUILDFLAG(USE_VAAPI)
+  return VaapiVideoDecoder::Create(std::move(client_task_runner),
+                                   std::move(frame_pool),
+                                   std::move(frame_converter));
+#elif BUILDFLAG(USE_V4L2_CODEC)
+  return V4L2SliceVideoDecoder::Create(std::move(client_task_runner),
+                                       std::move(frame_pool),
+                                       std::move(frame_converter));
+#endif
 
-// static
-std::unique_ptr<VideoDecoder> ChromeosVideoDecoderFactory::CreateForTesting(
-    scoped_refptr<base::SequencedTaskRunner> client_task_runner) {
-  // Use VideoFrameConverter because we don't convert the frame to
-  // Mailbox-backed.
-  return CreateChromeosVideoDecoder(std::move(client_task_runner),
-                                    std::make_unique<PlatformVideoFramePool>(),
-                                    std::make_unique<VideoFrameConverter>());
+  return nullptr;
 }
 
 }  // namespace media
diff --git a/media/gpu/chromeos/chromeos_video_decoder_factory.h b/media/gpu/chromeos/chromeos_video_decoder_factory.h
index 0a5ec39..7f35904 100644
--- a/media/gpu/chromeos/chromeos_video_decoder_factory.h
+++ b/media/gpu/chromeos/chromeos_video_decoder_factory.h
@@ -22,27 +22,20 @@
 
 namespace media {
 
+class DmabufVideoFramePool;
 class VideoDecoder;
+class VideoFrameConverter;
 
 class MEDIA_GPU_EXPORT ChromeosVideoDecoderFactory {
  public:
-  using GetCommandBufferStubCB = base::OnceCallback<gpu::CommandBufferStub*()>;
-
   static SupportedVideoDecoderConfigs GetSupportedConfigs();
 
-  // Create VideoDecoder instance that does convert the output VideoFrame
-  // to mailbox-backed VideoFrame by CommandBufferHelper.
-  // We convert the frame by MailboxVideoFrameConverter. See the description for
-  // |get_stub_cb| at MailboxVideoFrameConverter class.
+  // Create VideoDecoder instance that allocates VideoFrame from |frame_pool|
+  // and converts the output VideoFrame |frame_converter|.
   static std::unique_ptr<VideoDecoder> Create(
       scoped_refptr<base::SequencedTaskRunner> client_task_runner,
-      scoped_refptr<base::SingleThreadTaskRunner> gpu_task_runner,
-      GetCommandBufferStubCB get_stub_cb);
-
-  // Create VideoDecoder instance for tesing. The created VideoDecoder does not
-  // convert the output VideoFrame to mailbox-backed VideoFrame.
-  static std::unique_ptr<VideoDecoder> CreateForTesting(
-      scoped_refptr<base::SequencedTaskRunner> client_task_runner);
+      std::unique_ptr<DmabufVideoFramePool> frame_pool,
+      std::unique_ptr<VideoFrameConverter> frame_converter);
 };
 
 }  // namespace media
diff --git a/media/gpu/chromeos/platform_video_frame_pool.cc b/media/gpu/chromeos/platform_video_frame_pool.cc
index 9adc12e0..fa51cb4 100644
--- a/media/gpu/chromeos/platform_video_frame_pool.cc
+++ b/media/gpu/chromeos/platform_video_frame_pool.cc
@@ -35,6 +35,12 @@
                                   gfx::BufferUsage::SCANOUT_VDA_WRITE);
 }
 
+// Get the identifier of |frame|. Calling this method with the frames backed
+// by the same Dmabuf should return the same result.
+PlatformVideoFramePool::DmabufId GetDmabufId(const VideoFrame& frame) {
+  return &(frame.DmabufFds());
+}
+
 }  // namespace
 
 struct PlatformVideoFramePool::FrameEntry {
@@ -91,8 +97,12 @@
     if (GetTotalNumFrames_Locked() >= max_num_frames_)
       return nullptr;
 
-    scoped_refptr<VideoFrame> new_frame = create_frame_cb_.Run(
-        format_, coded_size_, visible_rect_, natural_size_, base::TimeDelta());
+    // VideoFrame::WrapVideoFrame() will check whether the updated visible_rect
+    // is sub rect of the original visible_rect. Therefore we set visible_rect
+    // as large as coded_size to guarantee this condition.
+    scoped_refptr<VideoFrame> new_frame =
+        create_frame_cb_.Run(format_, coded_size_, gfx::Rect(coded_size_),
+                             coded_size_, base::TimeDelta());
     if (!new_frame)
       return nullptr;
 
@@ -102,15 +112,17 @@
   DCHECK(!free_frames_.empty());
   scoped_refptr<VideoFrame> origin_frame = std::move(free_frames_.back().frame);
   free_frames_.pop_back();
+  DCHECK_EQ(origin_frame->format(), format_);
+  DCHECK_EQ(origin_frame->coded_size(), coded_size_);
+
   scoped_refptr<VideoFrame> wrapped_frame = VideoFrame::WrapVideoFrame(
-      *origin_frame, origin_frame->format(), origin_frame->visible_rect(),
-      origin_frame->natural_size());
-  frames_in_use_.insert(
-      std::make_pair(wrapped_frame->unique_id(), origin_frame.get()));
+      *origin_frame, format_, visible_rect_, natural_size_);
+  DCHECK(wrapped_frame);
+  frames_in_use_.emplace(GetDmabufId(*wrapped_frame), origin_frame.get());
   wrapped_frame->AddDestructionObserver(
       base::BindOnce(&PlatformVideoFramePool::OnFrameReleasedThunk, weak_this_,
-                     parent_task_runner_, wrapped_frame->unique_id(),
-                     std::move(origin_frame)));
+                     parent_task_runner_, std::move(origin_frame)));
+
   // Clear all metadata before returning to client, in case origin frame has any
   // unrelated metadata.
   wrapped_frame->metadata()->Clear();
@@ -161,16 +173,21 @@
   DVLOGF(4);
   base::AutoLock auto_lock(lock_);
 
-  if (!IsSameFormat_Locked(layout.format(), layout.coded_size(), visible_rect,
-                           natural_size)) {
+  // If the frame layout changed we need to allocate new frames so we will clear
+  // the pool here. If only the visible or natural size changed we don't need to
+  // allocate new frames, but will just update the properties of wrapped frames
+  // returned by GetFrame().
+  if (!IsSameLayout_Locked(layout.format(), layout.coded_size())) {
     DVLOGF(4) << "The video frame format is changed. Clearing the pool.";
     free_frames_.clear();
-
-    format_ = layout.format();
-    coded_size_ = layout.coded_size();
-    visible_rect_ = visible_rect;
-    natural_size_ = natural_size;
   }
+
+  format_ = layout.format();
+  coded_size_ = layout.coded_size();
+  visible_rect_ = visible_rect;
+  natural_size_ = natural_size;
+  DCHECK_LE(visible_rect_.right(), coded_size_.width());
+  DCHECK_LE(visible_rect_.bottom(), coded_size_.height());
 }
 
 bool PlatformVideoFramePool::IsExhausted() {
@@ -192,7 +209,7 @@
   DVLOGF(4);
   base::AutoLock auto_lock(lock_);
 
-  auto it = frames_in_use_.find(wrapped_frame.unique_id());
+  auto it = frames_in_use_.find(GetDmabufId(wrapped_frame));
   return (it == frames_in_use_.end()) ? nullptr : it->second;
 }
 
@@ -212,30 +229,27 @@
 void PlatformVideoFramePool::OnFrameReleasedThunk(
     base::Optional<base::WeakPtr<PlatformVideoFramePool>> pool,
     scoped_refptr<base::SequencedTaskRunner> task_runner,
-    int wrapped_frame_id,
     scoped_refptr<VideoFrame> origin_frame) {
   DCHECK(pool);
   DVLOGF(4);
 
   task_runner->PostTask(
       FROM_HERE, base::BindOnce(&PlatformVideoFramePool::OnFrameReleased, *pool,
-                                wrapped_frame_id, std::move(origin_frame)));
+                                std::move(origin_frame)));
 }
 
 void PlatformVideoFramePool::OnFrameReleased(
-    int wrapped_frame_id,
     scoped_refptr<VideoFrame> origin_frame) {
   DCHECK(parent_task_runner_->RunsTasksInCurrentSequence());
   DVLOGF(4);
   base::AutoLock auto_lock(lock_);
 
-  auto it = frames_in_use_.find(wrapped_frame_id);
+  DmabufId frame_id = GetDmabufId(*origin_frame);
+  auto it = frames_in_use_.find(frame_id);
   DCHECK(it != frames_in_use_.end());
   frames_in_use_.erase(it);
 
-  if (IsSameFormat_Locked(origin_frame->format(), origin_frame->coded_size(),
-                          origin_frame->visible_rect(),
-                          origin_frame->natural_size())) {
+  if (IsSameLayout_Locked(origin_frame->format(), origin_frame->coded_size())) {
     InsertFreeFrame_Locked(std::move(origin_frame));
   }
 
@@ -260,15 +274,12 @@
   return free_frames_.size() + frames_in_use_.size();
 }
 
-bool PlatformVideoFramePool::IsSameFormat_Locked(VideoPixelFormat format,
-                                                 gfx::Size coded_size,
-                                                 gfx::Rect visible_rect,
-                                                 gfx::Size natural_size) const {
+bool PlatformVideoFramePool::IsSameLayout_Locked(VideoPixelFormat format,
+                                                 gfx::Size coded_size) const {
   DVLOGF(4);
   lock_.AssertAcquired();
 
-  return format_ == format && coded_size_ == coded_size &&
-         visible_rect_ == visible_rect && natural_size_ == natural_size;
+  return format_ == format && coded_size_ == coded_size;
 }
 
 size_t PlatformVideoFramePool::GetPoolSizeForTesting() {
diff --git a/media/gpu/chromeos/platform_video_frame_pool.h b/media/gpu/chromeos/platform_video_frame_pool.h
index 0a6c6e9..f31e3f3 100644
--- a/media/gpu/chromeos/platform_video_frame_pool.h
+++ b/media/gpu/chromeos/platform_video_frame_pool.h
@@ -6,9 +6,11 @@
 #define MEDIA_GPU_CHROMEOS_PLATFORM_VIDEO_FRAME_POOL_H_
 
 #include <stddef.h>
+#include <vector>
 
 #include "base/bind.h"
 #include "base/containers/circular_deque.h"
+#include "base/files/scoped_file.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/sequenced_task_runner.h"
@@ -36,6 +38,8 @@
 // will be purged.
 class MEDIA_GPU_EXPORT PlatformVideoFramePool : public DmabufVideoFramePool {
  public:
+  using DmabufId = const std::vector<base::ScopedFD>*;
+
   PlatformVideoFramePool();
   ~PlatformVideoFramePool() override;
 
@@ -53,6 +57,7 @@
 
  private:
   friend class PlatformVideoFramePoolTest;
+
   using CreateFrameCB = base::RepeatingCallback<scoped_refptr<VideoFrame>(
       VideoPixelFormat format,
       const gfx::Size& coded_size,
@@ -77,24 +82,17 @@
   static void OnFrameReleasedThunk(
       base::Optional<base::WeakPtr<PlatformVideoFramePool>> pool,
       scoped_refptr<base::SequencedTaskRunner> task_runner,
-      int wrapped_frame_id,
       scoped_refptr<VideoFrame> origin_frame);
-  // Called when a wrapped frame gets destroyed. |wrapped_frame_id| is unique_id
-  // of the wrapped frame. The actual frame is placed in |free_frames_| by
-  // this function so it can be reused.
+  // Called when a wrapped frame gets destroyed.
   // When returning a frame to the pool, the pool might have already been
   // destroyed. In this case, the WeakPtr of the pool will have been invalidated
   // at |parent_task_runner_|, and OnFrameReleased() will not get executed.
-  void OnFrameReleased(int wrapped_frame_id,
-                       scoped_refptr<VideoFrame> origin_frame);
+  void OnFrameReleased(scoped_refptr<VideoFrame> origin_frame);
 
   void InsertFreeFrame_Locked(scoped_refptr<VideoFrame> frame)
       EXCLUSIVE_LOCKS_REQUIRED(lock_);
   size_t GetTotalNumFrames_Locked() const EXCLUSIVE_LOCKS_REQUIRED(lock_);
-  bool IsSameFormat_Locked(VideoPixelFormat format,
-                           gfx::Size coded_size,
-                           gfx::Rect visible_rect,
-                           gfx::Size natural_size) const
+  bool IsSameLayout_Locked(VideoPixelFormat format, gfx::Size coded_size) const
       EXCLUSIVE_LOCKS_REQUIRED(lock_);
   bool IsExhausted_Locked() EXCLUSIVE_LOCKS_REQUIRED(lock_);
 
@@ -112,18 +110,19 @@
   // Every public method and OnFrameReleased() should acquire this lock.
   base::Lock lock_;
 
-  // The arguments of current frame.
+  // The arguments of current frame. We allocate new frames only with |format_|
+  // and |coded_size_|. When calling GetFrame(), we update |visible_rect_| and
+  // |natural_size_| of wrapped frames.
   VideoPixelFormat format_ GUARDED_BY(lock_);
   gfx::Size coded_size_ GUARDED_BY(lock_);
   gfx::Rect visible_rect_ GUARDED_BY(lock_);
   gfx::Size natural_size_ GUARDED_BY(lock_);
 
-  // The pool of free frames. The arguments of all the frames in |free_frames_|
-  // should be the same as |format_|, |coded_size_|, |visible_rect_|, and
-  // |natural_size_|.
+  // The pool of free frames. The layout of all the frames in |free_frames_|
+  // should be the same as |format_| and |coded_size_|.
   base::circular_deque<FrameEntry> free_frames_ GUARDED_BY(lock_);
   // Mapping from the unique_id of the wrapped frame to the original frame.
-  std::map<int, VideoFrame*> frames_in_use_ GUARDED_BY(lock_);
+  std::map<DmabufId, VideoFrame*> frames_in_use_ GUARDED_BY(lock_);
 
   // The maximum number of frames created by the pool.
   size_t max_num_frames_ GUARDED_BY(lock_);
diff --git a/media/gpu/chromeos/platform_video_frame_pool_unittest.cc b/media/gpu/chromeos/platform_video_frame_pool_unittest.cc
index 7aef3ba..f43596c 100644
--- a/media/gpu/chromeos/platform_video_frame_pool_unittest.cc
+++ b/media/gpu/chromeos/platform_video_frame_pool_unittest.cc
@@ -5,7 +5,12 @@
 #include <stddef.h>
 #include <stdint.h>
 #include <memory>
+#include <vector>
 
+#include "base/files/file.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/files/scoped_file.h"
 #include "base/test/scoped_task_environment.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -14,15 +19,45 @@
 
 namespace media {
 
+namespace {
+
+base::ScopedFD CreateTmpHandle() {
+  base::FilePath path;
+  DCHECK(CreateTemporaryFile(&path));
+  base::File file(path, base::File::FLAG_OPEN | base::File::FLAG_READ);
+  DCHECK(file.IsValid());
+  return base::ScopedFD(file.TakePlatformFile());
+}
+
+scoped_refptr<VideoFrame> CreateDmabufVideoFrame(VideoPixelFormat format,
+                                                 const gfx::Size& coded_size,
+                                                 const gfx::Rect& visible_rect,
+                                                 const gfx::Size& natural_size,
+                                                 base::TimeDelta timestamp) {
+  base::Optional<VideoFrameLayout> layout =
+      VideoFrameLayout::Create(format, coded_size);
+  DCHECK(layout);
+
+  std::vector<base::ScopedFD> dmabuf_fds;
+  for (size_t i = 0; i < VideoFrame::NumPlanes(format); ++i)
+    dmabuf_fds.push_back(CreateTmpHandle());
+
+  return VideoFrame::WrapExternalDmabufs(*layout, visible_rect, natural_size,
+                                         std::move(dmabuf_fds), timestamp);
+}
+
+}  // namespace
+
 class PlatformVideoFramePoolTest
     : public ::testing::TestWithParam<VideoPixelFormat> {
  public:
+  using DmabufId = PlatformVideoFramePool::DmabufId;
+
   PlatformVideoFramePoolTest()
       : scoped_task_environment_(
             base::test::ScopedTaskEnvironment::MainThreadType::MOCK_TIME) {
     pool_.reset(new PlatformVideoFramePool(
-        base::BindRepeating(&VideoFrame::CreateZeroInitializedFrame),
-        &test_clock_));
+        base::BindRepeating(&CreateDmabufVideoFrame), &test_clock_));
     pool_->set_parent_task_runner(base::ThreadTaskRunnerHandle::Get());
   }
 
@@ -33,15 +68,15 @@
     layout_ = VideoFrameLayout::Create(format, coded_size);
     DCHECK(layout_);
 
-    pool_->SetFrameFormat(layout_.value(), visible_rect_, natural_size_);
+    pool_->SetFrameFormat(*layout_, visible_rect_, natural_size_);
   }
 
   scoped_refptr<VideoFrame> GetFrame(int timestamp_ms) {
     scoped_refptr<VideoFrame> frame = pool_->GetFrame();
     frame->set_timestamp(base::TimeDelta::FromMilliseconds(timestamp_ms));
 
-    EXPECT_EQ(layout_.value().format(), frame->format());
-    EXPECT_EQ(layout_.value().coded_size(), frame->coded_size());
+    EXPECT_EQ(layout_->format(), frame->format());
+    EXPECT_EQ(layout_->coded_size(), frame->coded_size());
     EXPECT_EQ(visible_rect_, frame->visible_rect());
     EXPECT_EQ(natural_size_, frame->natural_size());
 
@@ -52,6 +87,8 @@
     EXPECT_EQ(size, pool_->GetPoolSizeForTesting());
   }
 
+  DmabufId GetDmabufId(const VideoFrame& frame) { return &(frame.DmabufFds()); }
+
  protected:
   base::test::ScopedTaskEnvironment scoped_task_environment_;
   base::SimpleTestTickClock test_clock_;
@@ -64,15 +101,6 @@
   gfx::Size natural_size_;
 };
 
-TEST_P(PlatformVideoFramePoolTest, FrameInitializedAndZeroed) {
-  SetFrameFormat(GetParam());
-  scoped_refptr<VideoFrame> frame = GetFrame(10);
-
-  // Verify that frame is initialized with zeros.
-  for (size_t i = 0; i < VideoFrame::NumPlanes(frame->format()); ++i)
-    EXPECT_EQ(0, frame->data(i)[0]);
-}
-
 INSTANTIATE_TEST_SUITE_P(,
                          PlatformVideoFramePoolTest,
                          testing::Values(PIXEL_FORMAT_I420,
@@ -82,7 +110,7 @@
 TEST_F(PlatformVideoFramePoolTest, SingleFrameReuse) {
   SetFrameFormat(PIXEL_FORMAT_I420);
   scoped_refptr<VideoFrame> frame = GetFrame(10);
-  const uint8_t* old_y_data = frame->data(VideoFrame::kYPlane);
+  DmabufId id = GetDmabufId(*frame);
 
   // Clear frame reference to return the frame to the pool.
   frame = nullptr;
@@ -90,25 +118,25 @@
 
   // Verify that the next frame from the pool uses the same memory.
   scoped_refptr<VideoFrame> new_frame = GetFrame(20);
-  EXPECT_EQ(old_y_data, new_frame->data(VideoFrame::kYPlane));
+  EXPECT_EQ(id, GetDmabufId(*new_frame));
 }
 
 TEST_F(PlatformVideoFramePoolTest, MultipleFrameReuse) {
   SetFrameFormat(PIXEL_FORMAT_I420);
   scoped_refptr<VideoFrame> frame1 = GetFrame(10);
   scoped_refptr<VideoFrame> frame2 = GetFrame(20);
-  const uint8_t* old_y_data1 = frame1->data(VideoFrame::kYPlane);
-  const uint8_t* old_y_data2 = frame2->data(VideoFrame::kYPlane);
+  DmabufId id1 = GetDmabufId(*frame1);
+  DmabufId id2 = GetDmabufId(*frame2);
 
   frame1 = nullptr;
   scoped_task_environment_.RunUntilIdle();
   frame1 = GetFrame(30);
-  EXPECT_EQ(old_y_data1, frame1->data(VideoFrame::kYPlane));
+  EXPECT_EQ(id1, GetDmabufId(*frame1));
 
   frame2 = nullptr;
   scoped_task_environment_.RunUntilIdle();
   frame2 = GetFrame(40);
-  EXPECT_EQ(old_y_data2, frame2->data(VideoFrame::kYPlane));
+  EXPECT_EQ(id2, GetDmabufId(*frame2));
 
   frame1 = nullptr;
   frame2 = nullptr;
@@ -136,19 +164,6 @@
   CheckPoolSize(0u);
 }
 
-TEST_F(PlatformVideoFramePoolTest, FrameValidAfterPoolDestruction) {
-  SetFrameFormat(PIXEL_FORMAT_I420);
-  scoped_refptr<VideoFrame> frame = GetFrame(10);
-
-  // Destroy the pool.
-  pool_.reset();
-
-  // Write to the Y plane. The memory tools should detect a
-  // use-after-free if the storage was actually removed by pool destruction.
-  memset(frame->data(VideoFrame::kYPlane), 0xff,
-         frame->rows(VideoFrame::kYPlane) * frame->stride(VideoFrame::kYPlane));
-}
-
 TEST_F(PlatformVideoFramePoolTest, StaleFramesAreExpired) {
   SetFrameFormat(PIXEL_FORMAT_I420);
   scoped_refptr<VideoFrame> frame_1 = GetFrame(10);
@@ -171,4 +186,18 @@
   CheckPoolSize(1u);
 }
 
+TEST_F(PlatformVideoFramePoolTest, UnwrapVideoFrame) {
+  SetFrameFormat(PIXEL_FORMAT_I420);
+  scoped_refptr<VideoFrame> frame_1 = GetFrame(10);
+  scoped_refptr<VideoFrame> frame_2 = VideoFrame::WrapVideoFrame(
+      *frame_1, frame_1->format(), frame_1->visible_rect(),
+      frame_1->natural_size());
+  EXPECT_EQ(pool_->UnwrapFrame(*frame_1), pool_->UnwrapFrame(*frame_2));
+  EXPECT_TRUE(frame_1->IsSameDmaBufsAs(*frame_2));
+
+  scoped_refptr<VideoFrame> frame_3 = GetFrame(20);
+  EXPECT_NE(pool_->UnwrapFrame(*frame_1), pool_->UnwrapFrame(*frame_3));
+  EXPECT_FALSE(frame_1->IsSameDmaBufsAs(*frame_3));
+}
+
 }  // namespace media
diff --git a/media/gpu/gles2_decoder_helper.cc b/media/gpu/gles2_decoder_helper.cc
index 4946314..b1b06d5 100644
--- a/media/gpu/gles2_decoder_helper.cc
+++ b/media/gpu/gles2_decoder_helper.cc
@@ -16,6 +16,7 @@
 #include "gpu/command_buffer/service/mailbox_manager.h"
 #include "gpu/command_buffer/service/texture_manager.h"
 #include "ui/gl/gl_context.h"
+#include "ui/gl/scoped_binders.h"
 
 using gpu::gles2::AbstractTexture;
 
@@ -61,7 +62,7 @@
 
     // TODO(sandersd): Do we always want to allocate for GL_TEXTURE_2D?
     if (target == GL_TEXTURE_2D) {
-      glBindTexture(target, texture->service_id());
+      gl::ScopedTextureBinder scoped_binder(target, texture->service_id());
       glTexImage2D(target,           // target
                    0,                // level
                    internal_format,  // internal_format
@@ -71,7 +72,6 @@
                    format,           // format
                    type,             // type
                    nullptr);         // data
-      decoder_->RestoreActiveTextureUnitBinding(target);
     }
 
     return texture;
diff --git a/media/gpu/h264_decoder.cc b/media/gpu/h264_decoder.cc
index f621695..f668b1d2 100644
--- a/media/gpu/h264_decoder.cc
+++ b/media/gpu/h264_decoder.cc
@@ -1223,13 +1223,13 @@
     }                                              \
   } while (0)
 
-void H264Decoder::SetStream(int32_t id,
-                            const uint8_t* ptr,
-                            size_t size,
-                            const DecryptConfig* decrypt_config) {
+void H264Decoder::SetStream(int32_t id, const DecoderBuffer& decoder_buffer) {
+  const uint8_t* ptr = decoder_buffer.data();
+  const size_t size = decoder_buffer.data_size();
+  const DecryptConfig* decrypt_config = decoder_buffer.decrypt_config();
+
   DCHECK(ptr);
   DCHECK(size);
-
   DVLOG(4) << "New input stream id: " << id << " at: " << (void*)ptr
            << " size: " << size;
   stream_id_ = id;
diff --git a/media/gpu/h264_decoder.h b/media/gpu/h264_decoder.h
index 0c8250f..3c63df6 100644
--- a/media/gpu/h264_decoder.h
+++ b/media/gpu/h264_decoder.h
@@ -151,10 +151,7 @@
   ~H264Decoder() override;
 
   // AcceleratedVideoDecoder implementation.
-  void SetStream(int32_t id,
-                 const uint8_t* ptr,
-                 size_t size,
-                 const DecryptConfig* decrypt_config = nullptr) override;
+  void SetStream(int32_t id, const DecoderBuffer& decoder) override;
   bool Flush() override WARN_UNUSED_RESULT;
   void Reset() override;
   DecodeResult Decode() override WARN_UNUSED_RESULT;
diff --git a/media/gpu/h264_decoder_unittest.cc b/media/gpu/h264_decoder_unittest.cc
index d4d94a2..86f26e30 100644
--- a/media/gpu/h264_decoder_unittest.cc
+++ b/media/gpu/h264_decoder_unittest.cc
@@ -156,6 +156,7 @@
  private:
   base::queue<std::string> input_frame_files_;
   std::string bitstream_;
+  scoped_refptr<DecoderBuffer> decoder_buffer_;
 };
 
 void H264DecoderTest::SetUp() {
@@ -196,9 +197,10 @@
     auto input_file = GetTestDataFilePath(input_frame_files_.front());
     input_frame_files_.pop();
     CHECK(base::ReadFileToString(input_file, &bitstream_));
-    decoder_->SetStream(bitstream_id++,
-                        reinterpret_cast<const uint8_t*>(bitstream_.data()),
-                        bitstream_.size());
+    decoder_buffer_ = DecoderBuffer::CopyFrom(
+        reinterpret_cast<const uint8_t*>(bitstream_.data()), bitstream_.size());
+    EXPECT_NE(decoder_buffer_.get(), nullptr);
+    decoder_->SetStream(bitstream_id++, *decoder_buffer_);
   }
 }
 
@@ -445,8 +447,11 @@
               SubmitDecode(DecryptConfigMatches(decrypt_config.get())))
       .WillOnce(Return(H264Decoder::H264Accelerator::Status::kOk));
 
-  decoder_->SetStream(0, reinterpret_cast<const uint8_t*>(bitstream.data()),
-                      bitstream.size(), decrypt_config.get());
+  auto buffer = DecoderBuffer::CopyFrom(
+      reinterpret_cast<const uint8_t*>(bitstream.data()), bitstream.size());
+  ASSERT_NE(buffer.get(), nullptr);
+  buffer->set_decrypt_config(std::move(decrypt_config));
+  decoder_->SetStream(0, *buffer);
   EXPECT_EQ(AcceleratedVideoDecoder::kAllocateNewSurfaces, decoder_->Decode());
   EXPECT_EQ(AcceleratedVideoDecoder::kRanOutOfStreamData, decoder_->Decode());
   EXPECT_TRUE(decoder_->Flush());
diff --git a/media/gpu/test/rendering_helper.cc b/media/gpu/test/rendering_helper.cc
index ecfe1a0..e53d1417 100644
--- a/media/gpu/test/rendering_helper.cc
+++ b/media/gpu/test/rendering_helper.cc
@@ -63,7 +63,11 @@
 // static
 void RenderingHelper::InitializeOneOff(bool use_gl, base::WaitableEvent* done) {
   base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
+#if defined(OS_WIN)
+  cmd_line->AppendSwitchASCII(switches::kUseGL, gl::kGLImplementationANGLEName);
+#else
   cmd_line->AppendSwitchASCII(switches::kUseGL, gl::kGLImplementationEGLName);
+#endif
 
   use_gl_ = use_gl;
 
diff --git a/media/gpu/test/video_player/frame_renderer_thumbnail.cc b/media/gpu/test/video_player/frame_renderer_thumbnail.cc
index 5588e0a..100be1fc 100644
--- a/media/gpu/test/video_player/frame_renderer_thumbnail.cc
+++ b/media/gpu/test/video_player/frame_renderer_thumbnail.cc
@@ -237,6 +237,8 @@
   std::string md5_string = base::MD5String(
       base::StringPiece(reinterpret_cast<char*>(&rgb[0]), rgb.size()));
   bool is_valid_thumbnail = base::Contains(thumbnail_checksums_, md5_string);
+  if (!is_valid_thumbnail)
+    SaveThumbnail();
 
   return is_valid_thumbnail;
 }
@@ -244,7 +246,6 @@
 void FrameRendererThumbnail::SaveThumbnail() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(client_sequence_checker_);
 
-  base::AutoLock auto_lock(renderer_lock_);
   const std::vector<uint8_t> rgba = ConvertThumbnailToRGBA();
 
   // Convert raw RGBA into PNG for export.
diff --git a/media/gpu/test/video_player/frame_renderer_thumbnail.h b/media/gpu/test/video_player/frame_renderer_thumbnail.h
index e08813a..fc70f9ea 100644
--- a/media/gpu/test/video_player/frame_renderer_thumbnail.h
+++ b/media/gpu/test/video_player/frame_renderer_thumbnail.h
@@ -64,8 +64,6 @@
 
   // Validate the thumbnail image by comparing it against known golden values.
   bool ValidateThumbnail();
-  // Save the thumbnail image to disk.
-  void SaveThumbnail();
 
  private:
   explicit FrameRendererThumbnail(
@@ -84,6 +82,8 @@
   // Convert the thumbnail image to RGBA.
   const std::vector<uint8_t> ConvertThumbnailToRGBA()
       EXCLUSIVE_LOCKS_REQUIRED(renderer_lock_);
+  // Save the thumbnail image to disk.
+  void SaveThumbnail() EXCLUSIVE_LOCKS_REQUIRED(renderer_lock_);
 
   // Destroy the texture associated with the |mailbox| on the renderer thread.
   void DeleteTexture(const gpu::Mailbox& mailbox, const gpu::SyncToken&);
diff --git a/media/gpu/test/video_player/video_decoder_client.cc b/media/gpu/test/video_player/video_decoder_client.cc
index 3bdea89e..7d38450 100644
--- a/media/gpu/test/video_player/video_decoder_client.cc
+++ b/media/gpu/test/video_player/video_decoder_client.cc
@@ -179,8 +179,10 @@
 
   if (decoder_client_config_.use_vd) {
 #if defined(OS_CHROMEOS)
-    decoder_ = ChromeosVideoDecoderFactory::CreateForTesting(
-        base::ThreadTaskRunnerHandle::Get());
+    decoder_ = ChromeosVideoDecoderFactory::Create(
+        base::ThreadTaskRunnerHandle::Get(),
+        std::make_unique<PlatformVideoFramePool>(),
+        std::make_unique<VideoFrameConverter>());
 #endif  // defined(OS_CHROMEOS)
     LOG_ASSERT(decoder_) << "Failed to create decoder.";
   } else {
diff --git a/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.cc b/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.cc
index 2fdc917..a7eb6b1 100644
--- a/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.cc
+++ b/media/gpu/v4l2/v4l2_slice_video_decode_accelerator.cc
@@ -1104,12 +1104,8 @@
     return false;
   }
 
-  const uint8_t* const data = decoder_current_bitstream_buffer_->buffer->data();
-  const size_t data_size =
-      decoder_current_bitstream_buffer_->buffer->data_size();
-  decoder_->SetStream(decoder_current_bitstream_buffer_->input_id, data,
-                      data_size);
-
+  decoder_->SetStream(decoder_current_bitstream_buffer_->input_id,
+                      *decoder_current_bitstream_buffer_->buffer);
   return true;
 }
 
diff --git a/media/gpu/v4l2/v4l2_slice_video_decoder.cc b/media/gpu/v4l2/v4l2_slice_video_decoder.cc
index a8037ed6..b984c70 100644
--- a/media/gpu/v4l2/v4l2_slice_video_decoder.cc
+++ b/media/gpu/v4l2/v4l2_slice_video_decoder.cc
@@ -548,7 +548,9 @@
   DCHECK(state_ == State::kDecoding || state_ == State::kPause);
 
   decode_request_queue_.push(std::move(request));
-  PumpDecodeTask();
+  // If we are already decoding, then we don't need to pump again.
+  if (!current_decode_request_)
+    PumpDecodeTask();
 }
 
 void V4L2SliceVideoDecoder::PumpDecodeTask() {
@@ -605,8 +607,7 @@
         }
 
         avd_->SetStream(current_decode_request_->bitstream_id,
-                        current_decode_request_->buffer->data(),
-                        current_decode_request_->buffer->data_size());
+                        *current_decode_request_->buffer);
         break;
 
       case AcceleratedVideoDecoder::kRanOutOfSurfaces:
diff --git a/media/gpu/vaapi/vaapi_jpeg_decoder.h b/media/gpu/vaapi/vaapi_jpeg_decoder.h
index 28c894d..b15e794 100644
--- a/media/gpu/vaapi/vaapi_jpeg_decoder.h
+++ b/media/gpu/vaapi/vaapi_jpeg_decoder.h
@@ -19,8 +19,6 @@
 struct JpegFrameHeader;
 class ScopedVAImage;
 
-constexpr unsigned int kInvalidVaRtFormat = 0u;
-
 // Returns the internal format required for a JPEG image given its parsed
 // |frame_header|. If the image's subsampling format is not one of 4:2:0, 4:2:2,
 // or 4:4:4, returns kInvalidVaRtFormat.
diff --git a/media/gpu/vaapi/vaapi_utils.cc b/media/gpu/vaapi/vaapi_utils.cc
index 7f401db..bb843d0 100644
--- a/media/gpu/vaapi/vaapi_utils.cc
+++ b/media/gpu/vaapi/vaapi_utils.cc
@@ -10,11 +10,11 @@
 
 #include "base/logging.h"
 #include "base/numerics/ranges.h"
+#include "base/synchronization/lock.h"
 #include "media/gpu/vaapi/vaapi_common.h"
 #include "media/gpu/vaapi/vaapi_wrapper.h"
 #include "media/gpu/vp8_picture.h"
 #include "media/gpu/vp8_reference_frame_vector.h"
-#include "ui/gfx/geometry/size.h"
 
 namespace media {
 
@@ -107,6 +107,34 @@
   }
 }
 
+ScopedVASurface::ScopedVASurface(base::Lock* va_lock,
+                                 VADisplay va_display,
+                                 VASurfaceID va_surface_id,
+                                 const gfx::Size& size,
+                                 unsigned int va_rt_format)
+    : va_lock_(va_lock),
+      va_display_(va_display),
+      va_surface_id_(va_surface_id),
+      size_(size),
+      va_rt_format_(va_rt_format) {}
+
+ScopedVASurface::~ScopedVASurface() {
+  if (VA_INVALID_ID == va_surface_id_)
+    return;
+
+  base::AutoLock auto_lock(*va_lock_);
+  VASurfaceID va_surface_to_destroy = va_surface_id_;
+  const VAStatus va_res =
+      vaDestroySurfaces(va_display_, &va_surface_to_destroy, 1);
+  if (VA_STATUS_SUCCESS != va_res)
+    LOG(ERROR) << "vaDestroySurfaces failed: " << vaErrorStr(va_res);
+}
+
+bool ScopedVASurface::IsValid() const {
+  return va_surface_id_ != VA_INVALID_ID && !size_.IsEmpty() &&
+         va_rt_format_ != kInvalidVaRtFormat;
+}
+
 bool FillVP8DataStructures(const scoped_refptr<VaapiWrapper>& vaapi_wrapper,
                            VASurfaceID va_surface_id,
                            const Vp8FrameHeader& frame_header,
diff --git a/media/gpu/vaapi/vaapi_utils.h b/media/gpu/vaapi/vaapi_utils.h
index 0933ba17..5d1c7f5 100644
--- a/media/gpu/vaapi/vaapi_utils.h
+++ b/media/gpu/vaapi/vaapi_utils.h
@@ -8,6 +8,8 @@
 #include "base/bind_helpers.h"
 #include "base/callback_forward.h"
 #include "base/macros.h"
+#include "base/thread_annotations.h"
+#include "ui/gfx/geometry/size.h"
 
 // Forward declarations taken verbatim from <va/va.h>
 typedef unsigned int VABufferID;
@@ -21,10 +23,6 @@
 class Lock;
 }
 
-namespace gfx {
-class Size;
-}
-
 namespace media {
 class VaapiWrapper;
 class Vp8ReferenceFrameVector;
@@ -91,6 +89,34 @@
   DISALLOW_COPY_AND_ASSIGN(ScopedVAImage);
 };
 
+// A VA-API-specific surface used by video/image codec accelerators to work on.
+// As the name suggests, this class is self-cleaning. It calls
+// vaDestroySurfaces() on the underlying VA surface upon destruction. Thus
+// |va_lock| is acquired for destruction purposes.
+class ScopedVASurface {
+ public:
+  ScopedVASurface(base::Lock* va_lock,
+                  VADisplay va_display,
+                  VASurfaceID va_surface_id,
+                  const gfx::Size& size,
+                  unsigned int va_rt_format);
+  ~ScopedVASurface();
+
+  bool IsValid() const;
+  VASurfaceID id() const { return va_surface_id_; }
+  const gfx::Size& size() const { return size_; }
+  unsigned int format() const { return va_rt_format_; }
+
+ private:
+  base::Lock* const va_lock_;
+  const VADisplay va_display_ GUARDED_BY(va_lock_);
+  const VASurfaceID va_surface_id_;
+  const gfx::Size size_;
+  const unsigned int va_rt_format_;
+
+  DISALLOW_COPY_AND_ASSIGN(ScopedVASurface);
+};
+
 // Adapts |frame_header| to the Vaapi data types, prepping it for consumption by
 // |vaapi_wrapper|
 bool FillVP8DataStructures(const scoped_refptr<VaapiWrapper>& vaapi_wrapper,
diff --git a/media/gpu/vaapi/vaapi_utils_unittest.cc b/media/gpu/vaapi/vaapi_utils_unittest.cc
index d3016e86..59b900c4 100644
--- a/media/gpu/vaapi/vaapi_utils_unittest.cc
+++ b/media/gpu/vaapi/vaapi_utils_unittest.cc
@@ -15,6 +15,7 @@
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
+#include "base/numerics/safe_conversions.h"
 #include "base/synchronization/lock.h"
 #include "base/test/gtest_util.h"
 #include "media/gpu/vaapi/vaapi_utils.h"
@@ -120,4 +121,27 @@
   EXPECT_FALSE(scoped_buffer->IsValid());
 }
 
+// This test exercises the creation of a valid ScopedVASurface.
+TEST_F(VaapiUtilsTest, ScopedVASurface) {
+  const gfx::Size coded_size(64, 64);
+  vaapi_wrapper_->CreateContext(VA_RT_FORMAT_YUV420, coded_size);
+  auto scoped_va_surface =
+      vaapi_wrapper_->CreateScopedVASurface(VA_RT_FORMAT_YUV420, coded_size);
+
+  ASSERT_TRUE(scoped_va_surface);
+  EXPECT_TRUE(scoped_va_surface->IsValid());
+  EXPECT_EQ(VA_RT_FORMAT_YUV420,
+            base::checked_cast<int>(scoped_va_surface->format()));
+  EXPECT_EQ(coded_size, scoped_va_surface->size());
+}
+
+// This test exercises the creation of a bad ScopedVASurface with an invalid
+// size.
+TEST_F(VaapiUtilsTest, BadScopedVASurface) {
+  const gfx::Size invalid_size(0, 0);
+  vaapi_wrapper_->CreateContext(VA_RT_FORMAT_YUV420, invalid_size);
+  EXPECT_FALSE(
+      vaapi_wrapper_->CreateScopedVASurface(VA_RT_FORMAT_YUV420, invalid_size));
+}
+
 }  // namespace media
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
index 69859ee..f1231e3 100644
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
@@ -389,10 +389,7 @@
 
   DVLOGF(4) << "New |curr_input_buffer_|, id: " << curr_input_buffer_->id()
             << " size: " << curr_input_buffer_->buffer()->data_size() << "B";
-  decoder_->SetStream(curr_input_buffer_->id(),
-                      curr_input_buffer_->buffer()->data(),
-                      curr_input_buffer_->buffer()->data_size());
-
+  decoder_->SetStream(curr_input_buffer_->id(), *curr_input_buffer_->buffer());
   return true;
 }
 
@@ -512,7 +509,6 @@
 
   requested_pic_size_ = size;
   requested_visible_rect_ = visible_rect;
-
   if (buffer_allocation_mode_ == BufferAllocationMode::kSuperReduced) {
     // Add one to the reference frames for the one being currently egressed.
     requested_num_reference_frames_ = num_reference_frames + 1;
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
index 728a94d8..8dc6f4bf 100644
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
@@ -46,6 +46,9 @@
 constexpr size_t kNewNumPictures = 3;
 const gfx::Size kNewPictureSize(64, 48);
 
+MATCHER_P2(IsExpectedDecoderBuffer, data_size, decrypt_config, "") {
+  return arg.data_size() == data_size && arg.decrypt_config() == decrypt_config;
+}
 }  // namespace
 
 class MockAcceleratedVideoDecoder : public AcceleratedVideoDecoder {
@@ -53,9 +56,7 @@
   MockAcceleratedVideoDecoder() = default;
   ~MockAcceleratedVideoDecoder() override = default;
 
-  MOCK_METHOD4(
-      SetStream,
-      void(int32_t id, const uint8_t* ptr, size_t size, const DecryptConfig*));
+  MOCK_METHOD2(SetStream, void(int32_t id, const DecoderBuffer&));
   MOCK_METHOD0(Flush, bool());
   MOCK_METHOD0(Reset, void());
   MOCK_METHOD0(Decode, DecodeResult());
@@ -219,7 +220,9 @@
     ::testing::InSequence s;
     base::RunLoop run_loop;
     base::Closure quit_closure = run_loop.QuitClosure();
-    EXPECT_CALL(*mock_decoder_, SetStream(_, _, kInputSize, nullptr));
+    EXPECT_CALL(*mock_decoder_,
+                SetStream(_, IsExpectedDecoderBuffer(kInputSize, nullptr)))
+        .WillOnce(Return());
     EXPECT_CALL(*mock_decoder_, Decode())
         .WillOnce(Return(AcceleratedVideoDecoder::kAllocateNewSurfaces));
 
@@ -330,7 +333,9 @@
   void DecodeOneFrameFast(int32_t bitstream_id) {
     base::RunLoop run_loop;
     base::Closure quit_closure = run_loop.QuitClosure();
-    EXPECT_CALL(*mock_decoder_, SetStream(_, _, kInputSize, nullptr));
+    EXPECT_CALL(*mock_decoder_,
+                SetStream(_, IsExpectedDecoderBuffer(kInputSize, nullptr)))
+        .WillOnce(Return());
     EXPECT_CALL(*mock_decoder_, Decode())
         .WillOnce(Return(AcceleratedVideoDecoder::kRanOutOfStreamData));
     EXPECT_CALL(*this, NotifyEndOfBitstreamBuffer(bitstream_id))
@@ -414,7 +419,9 @@
 
   base::RunLoop run_loop;
   base::Closure quit_closure = run_loop.QuitClosure();
-  EXPECT_CALL(*mock_decoder_, SetStream(_, _, kInputSize, nullptr));
+  EXPECT_CALL(*mock_decoder_,
+              SetStream(_, IsExpectedDecoderBuffer(kInputSize, nullptr)))
+      .WillOnce(Return());
   EXPECT_CALL(*mock_decoder_, Decode())
       .WillOnce(Return(AcceleratedVideoDecoder::kDecodeError));
   EXPECT_CALL(*this, NotifyError(VaapiVideoDecodeAccelerator::PLATFORM_FAILURE))
diff --git a/media/gpu/vaapi/vaapi_video_decoder.cc b/media/gpu/vaapi/vaapi_video_decoder.cc
index cbf279e..e5ad316 100644
--- a/media/gpu/vaapi/vaapi_video_decoder.cc
+++ b/media/gpu/vaapi/vaapi_video_decoder.cc
@@ -320,8 +320,7 @@
   decode_task_queue_.pop();
   if (!current_decode_task_->buffer_->end_of_stream()) {
     decoder_->SetStream(current_decode_task_->buffer_id_,
-                        current_decode_task_->buffer_->data(),
-                        current_decode_task_->buffer_->data_size());
+                        *current_decode_task_->buffer_);
   }
 
   decoder_thread_task_runner_->PostTask(
diff --git a/media/gpu/vaapi/vaapi_vp9_accelerator.cc b/media/gpu/vaapi/vaapi_vp9_accelerator.cc
index 8ab85af..9896fb23 100644
--- a/media/gpu/vaapi/vaapi_vp9_accelerator.cc
+++ b/media/gpu/vaapi/vaapi_vp9_accelerator.cc
@@ -57,7 +57,6 @@
   pic_param.frame_width = base::checked_cast<uint16_t>(frame_hdr->frame_width);
   pic_param.frame_height =
       base::checked_cast<uint16_t>(frame_hdr->frame_height);
-
   CHECK_EQ(kVp9NumRefFrames, base::size(pic_param.reference_frames));
   for (size_t i = 0; i < base::size(pic_param.reference_frames); ++i) {
     auto ref_pic = ref_frames.GetFrame(i);
diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
index f47c240..745089d 100644
--- a/media/gpu/vaapi/vaapi_wrapper.cc
+++ b/media/gpu/vaapi/vaapi_wrapper.cc
@@ -140,21 +140,6 @@
 constexpr const char* kMesaGalliumDriverPrefix = "Mesa Gallium driver";
 constexpr const char* kIntelI965DriverPrefix = "Intel i965 driver";
 
-static const struct {
-  std::string va_driver;
-  std::string cpu_family;
-  VaapiWrapper::CodecMode mode;
-  std::vector<VAProfile> va_profiles;
-} kBlackListMap[]{
-    // TODO(hiroh): Remove once Chrome supports unpacked header.
-    // https://crbug.com/828482.
-    {kMesaGalliumDriverPrefix,
-     "AMD STONEY",
-     VaapiWrapper::CodecMode::kEncode,
-     {VAProfileH264Baseline, VAProfileH264Main, VAProfileH264High,
-      VAProfileH264ConstrainedBaseline}},
-};
-
 // Converts the given |va_profile| to the corresponding string.
 // See: http://go/gh/intel/libva/blob/master/va/va.h#L359
 std::string VAProfileToString(VAProfile va_profile) {
@@ -236,27 +221,31 @@
 bool IsBlackListedDriver(const std::string& va_vendor_string,
                          VaapiWrapper::CodecMode mode,
                          VAProfile va_profile) {
-  for (const auto& info : kBlackListMap) {
-    if (info.mode == mode &&
-        base::StartsWith(va_vendor_string, info.va_driver,
-                         base::CompareCase::SENSITIVE) &&
-        va_vendor_string.find(info.cpu_family) != std::string::npos &&
-        base::Contains(info.va_profiles, va_profile)) {
+  if (mode != VaapiWrapper::CodecMode::kEncode)
+    return false;
+
+  // TODO(crbug.com/828482): Remove once H264 encoder on AMD is enabled by
+  // default.
+  if (base::StartsWith(va_vendor_string, kMesaGalliumDriverPrefix,
+                       base::CompareCase::SENSITIVE) &&
+      va_vendor_string.find("AMD STONEY") != std::string::npos &&
+      !base::FeatureList::IsEnabled(kVaapiH264AMDEncoder)) {
+    constexpr VAProfile kH264Profiles[] = {VAProfileH264Baseline,
+                                           VAProfileH264Main, VAProfileH264High,
+                                           VAProfileH264ConstrainedBaseline};
+    if (base::Contains(kH264Profiles, va_profile))
       return true;
-    }
   }
 
   // TODO(posciak): Remove once VP8 encoding is to be enabled by default.
-  if (mode == VaapiWrapper::CodecMode::kEncode &&
-      va_profile == VAProfileVP8Version0_3 &&
+  if (va_profile == VAProfileVP8Version0_3 &&
       !base::FeatureList::IsEnabled(kVaapiVP8Encoder)) {
     return true;
   }
 
   // TODO(crbug.com/811912): Remove once VP9 encoding is to be enabled by
   // default.
-  if (mode == VaapiWrapper::CodecMode::kEncode &&
-      va_profile == VAProfileVP9Profile0 &&
+  if (va_profile == VAProfileVP9Profile0 &&
       !base::FeatureList::IsEnabled(kVaapiVP9Encoder)) {
     return true;
   }
@@ -1379,9 +1368,10 @@
   VASurfaceID va_surface_id = VA_INVALID_ID;
   {
     base::AutoLock auto_lock(*va_lock_);
-    VAStatus va_res =
-        vaCreateSurfaces(va_display_, va_format, size.width(), size.height(),
-                         &va_surface_id, 1, &va_attribs[0], va_attribs.size());
+    VAStatus va_res = vaCreateSurfaces(
+        va_display_, va_format, base::checked_cast<unsigned int>(size.width()),
+        base::checked_cast<unsigned int>(size.height()), &va_surface_id, 1,
+        &va_attribs[0], va_attribs.size());
     VA_SUCCESS_OR_RETURN(va_res, "Failed to create unowned VASurface", nullptr);
   }
 
@@ -1887,21 +1877,54 @@
                                   std::vector<VASurfaceID>* va_surfaces) {
   DVLOG(2) << "Creating " << num_surfaces << " " << size.ToString()
            << " surfaces ";
-  DCHECK_NE(va_format, 0u);
+  DCHECK_NE(va_format, kInvalidVaRtFormat);
   DCHECK(va_surfaces->empty());
 
   va_surfaces->resize(num_surfaces);
   VAStatus va_res;
   {
     base::AutoLock auto_lock(*va_lock_);
-    va_res =
-        vaCreateSurfaces(va_display_, va_format, size.width(), size.height(),
-                         va_surfaces->data(), num_surfaces, NULL, 0);
+    va_res = vaCreateSurfaces(va_display_, va_format,
+                              base::checked_cast<unsigned int>(size.width()),
+                              base::checked_cast<unsigned int>(size.height()),
+                              va_surfaces->data(), num_surfaces, NULL, 0);
   }
   VA_LOG_ON_ERROR(va_res, "vaCreateSurfaces failed");
   return va_res == VA_STATUS_SUCCESS;
 }
 
+std::unique_ptr<ScopedVASurface> VaapiWrapper::CreateScopedVASurface(
+    unsigned int va_rt_format,
+    const gfx::Size& size) {
+  if (kInvalidVaRtFormat == va_rt_format) {
+    LOG(ERROR) << "Invalid VA RT format to CreateScopedVASurface";
+    return nullptr;
+  }
+
+  if (size.IsEmpty()) {
+    LOG(ERROR) << "Invalid visible size input to CreateScopedVASurface";
+    return nullptr;
+  }
+
+  base::AutoLock auto_lock(*va_lock_);
+  VASurfaceID va_surface_id = VA_INVALID_ID;
+  VAStatus va_res = vaCreateSurfaces(
+      va_display_, va_rt_format, base::checked_cast<unsigned int>(size.width()),
+      base::checked_cast<unsigned int>(size.height()), &va_surface_id, 1u, NULL,
+      0);
+  VA_SUCCESS_OR_RETURN(va_res, "vaCreateSurfaces failed", nullptr);
+
+  DCHECK_NE(VA_INVALID_ID, va_surface_id)
+      << "Invalid VA surface id after vaCreateSurfaces";
+
+  auto scoped_va_surface = std::make_unique<ScopedVASurface>(
+      va_lock_, va_display_, va_surface_id, size, va_rt_format);
+
+  DCHECK(scoped_va_surface);
+  DCHECK(scoped_va_surface->IsValid());
+  return scoped_va_surface;
+}
+
 void VaapiWrapper::DestroySurfaces(std::vector<VASurfaceID> va_surfaces) {
   DVLOG(2) << "Destroying " << va_surfaces.size() << " surfaces";
 
diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
index 8465e03b..77363bc 100644
--- a/media/gpu/vaapi/vaapi_wrapper.h
+++ b/media/gpu/vaapi/vaapi_wrapper.h
@@ -40,8 +40,10 @@
 }
 
 namespace media {
+constexpr unsigned int kInvalidVaRtFormat = 0u;
 
 class ScopedVAImage;
+class ScopedVASurface;
 class VideoFrame;
 
 // This class handles VA-API calls and ensures proper locking of VA-API calls
@@ -160,10 +162,18 @@
   // Creates a VA Context of |va_format| and |size|, and sets |va_context_id_|.
   // The client is responsible for releasing it via DestroyContext() or
   // DestroyContextAndSurfaces(), or it will be released on dtor.
+  // TODO(crbug.com/981080): |va_format| is not used within the function
+  // definition and should be removed.
   virtual bool CreateContext(unsigned int va_format, const gfx::Size& size);
   // Destroys the context identified by |va_context_id_|.
   void DestroyContext();
 
+  // Tries to allocate a VA surface of size |size| and |va_rt_format|.
+  // Returns a self-cleaning ScopedVASurface or nullptr if creation failed.
+  std::unique_ptr<ScopedVASurface> CreateScopedVASurface(
+      unsigned int va_rt_format,
+      const gfx::Size& size);
+
   // Creates a self-releasing VASurface from |pixmap|. The ownership of the
   // surface is transferred to the caller.
   scoped_refptr<VASurface> CreateVASurfaceForPixmap(
diff --git a/media/gpu/video_encode_accelerator_unittest.cc b/media/gpu/video_encode_accelerator_unittest.cc
index e34fe80..b956acc 100644
--- a/media/gpu/video_encode_accelerator_unittest.cc
+++ b/media/gpu/video_encode_accelerator_unittest.cc
@@ -3128,6 +3128,9 @@
     base::test::ScopedFeatureList scoped_feature_list;
     // TODO(crbug.com/811912): remove once enabled by default.
     scoped_feature_list.InitAndEnableFeature(media::kVaapiVP9Encoder);
+    // TODO(crbug.com/828482): Remove once H264 encoder on AMD is enabled by
+    // default.
+    scoped_feature_list.InitAndEnableFeature(media::kVaapiH264AMDEncoder);
     media::VaapiWrapper::PreSandboxInitialization();
 #elif defined(OS_WIN)
     media::MediaFoundationVideoEncodeAccelerator::PreSandboxInitialization();
diff --git a/media/gpu/vp8_decoder.cc b/media/gpu/vp8_decoder.cc
index 840b5fa..f5caa31 100644
--- a/media/gpu/vp8_decoder.cc
+++ b/media/gpu/vp8_decoder.cc
@@ -31,10 +31,11 @@
   return true;
 }
 
-void VP8Decoder::SetStream(int32_t id,
-                           const uint8_t* ptr,
-                           size_t size,
-                           const DecryptConfig* decrypt_config) {
+void VP8Decoder::SetStream(int32_t id, const DecoderBuffer& decoder_buffer) {
+  const uint8_t* ptr = decoder_buffer.data();
+  const size_t size = decoder_buffer.data_size();
+  const DecryptConfig* decrypt_config = decoder_buffer.decrypt_config();
+
   DCHECK(ptr);
   DCHECK(size);
   if (decrypt_config) {
diff --git a/media/gpu/vp8_decoder.h b/media/gpu/vp8_decoder.h
index ecc77310..61a0031 100644
--- a/media/gpu/vp8_decoder.h
+++ b/media/gpu/vp8_decoder.h
@@ -63,10 +63,7 @@
   ~VP8Decoder() override;
 
   // AcceleratedVideoDecoder implementation.
-  void SetStream(int32_t id,
-                 const uint8_t* ptr,
-                 size_t size,
-                 const DecryptConfig* decrypt_config = nullptr) override;
+  void SetStream(int32_t id, const DecoderBuffer& decoder_buffer) override;
   bool Flush() override WARN_UNUSED_RESULT;
   void Reset() override;
   DecodeResult Decode() override WARN_UNUSED_RESULT;
diff --git a/media/gpu/vp8_decoder_unittest.cc b/media/gpu/vp8_decoder_unittest.cc
index deee372..67d8c4b 100644
--- a/media/gpu/vp8_decoder_unittest.cc
+++ b/media/gpu/vp8_decoder_unittest.cc
@@ -100,15 +100,27 @@
 AcceleratedVideoDecoder::DecodeResult VP8DecoderTest::Decode(
     std::string input_frame_file) {
   std::string bitstream;
+  scoped_refptr<DecoderBuffer> buffer;
   if (!input_frame_file.empty()) {
     auto input_file = GetTestDataFilePath(input_frame_file);
     EXPECT_TRUE(base::ReadFileToString(input_file, &bitstream));
-    decoder_->SetStream(bitstream_id_++,
-                        reinterpret_cast<const uint8_t*>(bitstream.data()),
-                        bitstream.size());
+    buffer = DecoderBuffer::CopyFrom(
+        reinterpret_cast<const uint8_t*>(bitstream.data()), bitstream.size());
+    EXPECT_NE(buffer.get(), nullptr);
+    decoder_->SetStream(bitstream_id_++, *buffer);
   }
 
-  return decoder_->Decode();
+  AcceleratedVideoDecoder::DecodeResult result = decoder_->Decode();
+  if (input_frame_file.empty())
+    return result;
+  // Since |buffer| is destroyed in this function, Decode() must consume the
+  // buffer by this Decode(). That happens if the return value is
+  // kRanOutOfStreamData, kAllocateNewSurfaces , or kDecodeError (on failure).
+  EXPECT_TRUE(
+      result == AcceleratedVideoDecoder::DecodeResult::kRanOutOfStreamData ||
+      result == AcceleratedVideoDecoder::DecodeResult::kAllocateNewSurfaces ||
+      result == AcceleratedVideoDecoder::DecodeResult::kDecodeError);
+  return result;
 }
 
 // Test Cases
diff --git a/media/gpu/vp9_decoder.cc b/media/gpu/vp9_decoder.cc
index 6cb9071..4927308 100644
--- a/media/gpu/vp9_decoder.cc
+++ b/media/gpu/vp9_decoder.cc
@@ -27,10 +27,11 @@
 
 VP9Decoder::~VP9Decoder() = default;
 
-void VP9Decoder::SetStream(int32_t id,
-                           const uint8_t* ptr,
-                           size_t size,
-                           const DecryptConfig* decrypt_config) {
+void VP9Decoder::SetStream(int32_t id, const DecoderBuffer& decoder_buffer) {
+  const uint8_t* ptr = decoder_buffer.data();
+  const size_t size = decoder_buffer.data_size();
+  const DecryptConfig* decrypt_config = decoder_buffer.decrypt_config();
+
   DCHECK(ptr);
   DCHECK(size);
   DVLOG(4) << "New input stream id: " << id << " at: " << (void*)ptr
diff --git a/media/gpu/vp9_decoder.h b/media/gpu/vp9_decoder.h
index 0bc33f0..6a0c357d 100644
--- a/media/gpu/vp9_decoder.h
+++ b/media/gpu/vp9_decoder.h
@@ -18,6 +18,7 @@
 #include "media/gpu/accelerated_video_decoder.h"
 #include "media/gpu/vp9_picture.h"
 #include "media/gpu/vp9_reference_frame_vector.h"
+#include "ui/gfx/geometry/size.h"
 
 namespace media {
 
@@ -98,10 +99,7 @@
   ~VP9Decoder() override;
 
   // AcceleratedVideoDecoder implementation.
-  void SetStream(int32_t id,
-                 const uint8_t* ptr,
-                 size_t size,
-                 const DecryptConfig* decrypt_config = nullptr) override;
+  void SetStream(int32_t id, const DecoderBuffer& decoder_buffer) override;
   bool Flush() override WARN_UNUSED_RESULT;
   void Reset() override;
   DecodeResult Decode() override WARN_UNUSED_RESULT;
diff --git a/media/gpu/windows/d3d11_video_decoder.cc b/media/gpu/windows/d3d11_video_decoder.cc
index 9987c03..29cbc67 100644
--- a/media/gpu/windows/d3d11_video_decoder.cc
+++ b/media/gpu/windows/d3d11_video_decoder.cc
@@ -463,9 +463,7 @@
     // EOS buffer.
     current_timestamp_ = current_buffer_->timestamp();
 
-    accelerated_video_decoder_->SetStream(-1, current_buffer_->data(),
-                                          current_buffer_->data_size(),
-                                          current_buffer_->decrypt_config());
+    accelerated_video_decoder_->SetStream(-1, *current_buffer_);
   }
 
   while (true) {
diff --git a/media/midi/java/src/org/chromium/midi/UsbMidiDeviceAndroid.java b/media/midi/java/src/org/chromium/midi/UsbMidiDeviceAndroid.java
index 5745841..323b0da 100644
--- a/media/midi/java/src/org/chromium/midi/UsbMidiDeviceAndroid.java
+++ b/media/midi/java/src/org/chromium/midi/UsbMidiDeviceAndroid.java
@@ -4,7 +4,6 @@
 
 package org.chromium.midi;
 
-import android.annotation.TargetApi;
 import android.hardware.usb.UsbConstants;
 import android.hardware.usb.UsbDevice;
 import android.hardware.usb.UsbDeviceConnection;
@@ -12,7 +11,6 @@
 import android.hardware.usb.UsbInterface;
 import android.hardware.usb.UsbManager;
 import android.hardware.usb.UsbRequest;
-import android.os.Build;
 import android.os.Handler;
 import android.util.SparseArray;
 
@@ -215,7 +213,6 @@
      * @param endpointNumber The endpoint number of the destination endpoint.
      * @param bs The data to be sent.
      */
-    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
     @CalledByNative
     void send(int endpointNumber, byte[] bs) {
         if (mIsClosed) {
diff --git a/media/mojo/interfaces/cdm_proxy.mojom b/media/mojo/interfaces/cdm_proxy.mojom
index 841d312a..b9170bb4 100644
--- a/media/mojo/interfaces/cdm_proxy.mojom
+++ b/media/mojo/interfaces/cdm_proxy.mojom
@@ -33,7 +33,7 @@
                                                    int32 cdm_id);
 
   // Processes and updates the state of the proxy.
-  // |function| specifies what type of function to use.
+  // |func| specifies what type of function to use.
   // |crypto_session_id| is a value returned from Initialize() or
   // CreateMediaCryptoSessions().
   // |input_data| is the input data to be processed.
@@ -41,7 +41,7 @@
   // require this field in order to determine the size of the output, but some
   // may completely ignore it.
   // The output data is passed back in |output_data|.
-  Process(Function function,
+  Process(Function func,
           uint32 crypto_session_id,
           array<uint8> input_data,
           uint32 output_data_size) => (Status status,
diff --git a/media/mojo/services/gpu_mojo_media_client.cc b/media/mojo/services/gpu_mojo_media_client.cc
index 7ee5240b..4a24fb4 100644
--- a/media/mojo/services/gpu_mojo_media_client.cc
+++ b/media/mojo/services/gpu_mojo_media_client.cc
@@ -216,11 +216,16 @@
 #elif defined(OS_CHROMEOS)
       std::unique_ptr<VideoDecoder> cros_video_decoder;
       if (base::FeatureList::IsEnabled(kChromeosVideoDecoder)) {
-        cros_video_decoder = ChromeosVideoDecoderFactory::Create(
-            task_runner, gpu_task_runner_,
+        auto frame_pool = std::make_unique<PlatformVideoFramePool>();
+        auto frame_converter = std::make_unique<MailboxVideoFrameConverter>(
+            base::BindRepeating(&DmabufVideoFramePool::UnwrapFrame,
+                                base::Unretained(frame_pool.get())),
+            std::move(gpu_task_runner_),
             base::BindOnce(&GetCommandBufferStub, media_gpu_channel_manager_,
                            command_buffer_id->channel_token,
                            command_buffer_id->route_id));
+        cros_video_decoder = ChromeosVideoDecoderFactory::Create(
+            task_runner, std::move(frame_pool), std::move(frame_converter));
       }
 
       if (cros_video_decoder) {
diff --git a/mojo/public/cpp/bindings/binding_set.h b/mojo/public/cpp/bindings/binding_set.h
index 33872fa9..c31405d9 100644
--- a/mojo/public/cpp/bindings/binding_set.h
+++ b/mojo/public/cpp/bindings/binding_set.h
@@ -70,7 +70,7 @@
   using RequestType = typename Traits::RequestType;
   using ImplPointerType = typename Traits::ImplPointerType;
 
-  BindingSetBase() : weak_ptr_factory_(this) {}
+  BindingSetBase() {}
 
   void set_connection_error_handler(base::RepeatingClosure error_handler) {
     error_handler_ = std::move(error_handler);
@@ -309,7 +309,7 @@
   bool is_flushing_ = false;
   const Context* dispatch_context_ = nullptr;
   BindingId dispatch_binding_;
-  base::WeakPtrFactory<BindingSetBase> weak_ptr_factory_;
+  base::WeakPtrFactory<BindingSetBase> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(BindingSetBase);
 };
diff --git a/mojo/public/cpp/bindings/connector.h b/mojo/public/cpp/bindings/connector.h
index b05b747..72c753a 100644
--- a/mojo/public/cpp/bindings/connector.h
+++ b/mojo/public/cpp/bindings/connector.h
@@ -325,7 +325,7 @@
   // NOTE: This weak pointer is invalidated when the message pipe is closed or
   // transferred (i.e., when |connected_| is set to false).
   base::WeakPtr<Connector> weak_self_;
-  base::WeakPtrFactory<Connector> weak_factory_;
+  base::WeakPtrFactory<Connector> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(Connector);
 };
diff --git a/mojo/public/cpp/bindings/interface_endpoint_client.h b/mojo/public/cpp/bindings/interface_endpoint_client.h
index 48ba964..a8f095d 100644
--- a/mojo/public/cpp/bindings/interface_endpoint_client.h
+++ b/mojo/public/cpp/bindings/interface_endpoint_client.h
@@ -204,7 +204,7 @@
 
   SEQUENCE_CHECKER(sequence_checker_);
 
-  base::WeakPtrFactory<InterfaceEndpointClient> weak_ptr_factory_;
+  base::WeakPtrFactory<InterfaceEndpointClient> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(InterfaceEndpointClient);
 };
diff --git a/mojo/public/cpp/bindings/lib/binding_state.cc b/mojo/public/cpp/bindings/lib/binding_state.cc
index 87560a1..31d2775 100644
--- a/mojo/public/cpp/bindings/lib/binding_state.cc
+++ b/mojo/public/cpp/bindings/lib/binding_state.cc
@@ -13,7 +13,7 @@
 namespace mojo {
 namespace internal {
 
-BindingStateBase::BindingStateBase() : weak_ptr_factory_(this) {}
+BindingStateBase::BindingStateBase() = default;
 
 BindingStateBase::~BindingStateBase() = default;
 
diff --git a/mojo/public/cpp/bindings/lib/binding_state.h b/mojo/public/cpp/bindings/lib/binding_state.h
index cc2ac0c..8d730454 100644
--- a/mojo/public/cpp/bindings/lib/binding_state.h
+++ b/mojo/public/cpp/bindings/lib/binding_state.h
@@ -95,7 +95,7 @@
   scoped_refptr<internal::MultiplexRouter> router_;
   std::unique_ptr<InterfaceEndpointClient> endpoint_client_;
 
-  base::WeakPtrFactory<BindingStateBase> weak_ptr_factory_;
+  base::WeakPtrFactory<BindingStateBase> weak_ptr_factory_{this};
 };
 
 template <typename Interface, typename ImplRefTraits>
diff --git a/mojo/public/cpp/bindings/lib/connector.cc b/mojo/public/cpp/bindings/lib/connector.cc
index 01c5c3b2..28a32f2 100644
--- a/mojo/public/cpp/bindings/lib/connector.cc
+++ b/mojo/public/cpp/bindings/lib/connector.cc
@@ -145,8 +145,7 @@
       force_immediate_dispatch_(!EnableTaskPerMessage()),
       outgoing_serialization_mode_(g_default_outgoing_serialization_mode),
       incoming_serialization_mode_(g_default_incoming_serialization_mode),
-      nesting_observer_(RunLoopNestingObserver::GetForThread()),
-      weak_factory_(this) {
+      nesting_observer_(RunLoopNestingObserver::GetForThread()) {
   if (config == MULTI_THREADED_SEND)
     lock_.emplace();
 
diff --git a/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc b/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
index 80efe7a3..3f0cffd 100644
--- a/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
+++ b/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc
@@ -151,8 +151,7 @@
       task_runner_(std::move(runner)),
       control_message_proxy_(this),
       control_message_handler_(interface_version),
-      interface_name_(interface_name),
-      weak_ptr_factory_(this) {
+      interface_name_(interface_name) {
   DCHECK(handle_.is_valid());
 
   // TODO(yzshen): the way to use validator (or message filter in general)
diff --git a/mojo/public/cpp/bindings/lib/sequence_local_sync_event_watcher.cc b/mojo/public/cpp/bindings/lib/sequence_local_sync_event_watcher.cc
index 01baeec..c443c65c 100644
--- a/mojo/public/cpp/bindings/lib/sequence_local_sync_event_watcher.cc
+++ b/mojo/public/cpp/bindings/lib/sequence_local_sync_event_watcher.cc
@@ -61,8 +61,7 @@
                base::WaitableEvent::InitialState::NOT_SIGNALED),
         event_watcher_(&event_,
                        base::BindRepeating(&SequenceLocalState::OnEventSignaled,
-                                           base::Unretained(this))),
-        weak_ptr_factory_(this) {
+                                           base::Unretained(this))) {
     // We always allow this event handler to be awoken during any sync event on
     // the sequence. Individual watchers still must opt into having such
     // wake-ups propagated to them.
@@ -195,7 +194,7 @@
   base::Lock ready_watchers_lock_;
   base::flat_set<const SequenceLocalSyncEventWatcher*> ready_watchers_;
 
-  base::WeakPtrFactory<SequenceLocalState> weak_ptr_factory_;
+  base::WeakPtrFactory<SequenceLocalState> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(SequenceLocalState);
 };
diff --git a/mojo/public/cpp/bindings/receiver_set.h b/mojo/public/cpp/bindings/receiver_set.h
index 5244f6a..182ff91f 100644
--- a/mojo/public/cpp/bindings/receiver_set.h
+++ b/mojo/public/cpp/bindings/receiver_set.h
@@ -94,7 +94,7 @@
   using Context = typename ContextTraits::Type;
   using PreDispatchCallback = base::RepeatingCallback<void(const Context&)>;
 
-  ReceiverSetBase() : weak_ptr_factory_(this) {}
+  ReceiverSetBase() = default;
 
   // Sets a callback to be invoked any time a receiver in the set is
   // disconnected. The callback is invoked *after* the receiver in question
@@ -329,7 +329,7 @@
   std::map<ReceiverId, std::unique_ptr<Entry>> receivers_;
   const Context* current_context_ = nullptr;
   ReceiverId current_receiver_;
-  base::WeakPtrFactory<ReceiverSetBase> weak_ptr_factory_;
+  base::WeakPtrFactory<ReceiverSetBase> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ReceiverSetBase);
 };
diff --git a/mojo/public/cpp/bindings/remote_set.h b/mojo/public/cpp/bindings/remote_set.h
index 4a09721..60091498 100644
--- a/mojo/public/cpp/bindings/remote_set.h
+++ b/mojo/public/cpp/bindings/remote_set.h
@@ -118,12 +118,21 @@
     disconnect_handler_ = std::move(handler);
   }
 
+  void Clear() { storage_.clear(); }
+
   bool empty() const { return storage_.empty(); }
   Iterator begin() { return Iterator(storage_.begin()); }
   Iterator begin() const { return Iterator(storage_.begin()); }
   Iterator end() { return Iterator(storage_.end()); }
   Iterator end() const { return Iterator(storage_.end()); }
 
+  void FlushForTesting() {
+    for (auto& it : storage_) {
+      if (it.second)
+        it.second.FlushForTesting();
+    }
+  }
+
  private:
   RemoteSetElementId GenerateNextElementId() {
     return RemoteSetElementId::FromUnsafeValue(next_element_id_++);
diff --git a/mojo/public/cpp/bindings/strong_binding.h b/mojo/public/cpp/bindings/strong_binding.h
index 441ce9b..a0fe6214 100644
--- a/mojo/public/cpp/bindings/strong_binding.h
+++ b/mojo/public/cpp/bindings/strong_binding.h
@@ -104,8 +104,7 @@
                 InterfaceRequest<Interface> request,
                 scoped_refptr<base::SequencedTaskRunner> task_runner)
       : impl_(std::move(impl)),
-        binding_(impl_.get(), std::move(request), std::move(task_runner)),
-        weak_factory_(this) {
+        binding_(impl_.get(), std::move(request), std::move(task_runner)) {
     binding_.set_connection_error_with_reason_handler(
         base::Bind(&StrongBinding::OnConnectionError, base::Unretained(this)));
   }
@@ -127,7 +126,7 @@
   base::OnceClosure connection_error_handler_;
   ConnectionErrorWithReasonCallback connection_error_with_reason_handler_;
   Binding<Interface> binding_;
-  base::WeakPtrFactory<StrongBinding> weak_factory_;
+  base::WeakPtrFactory<StrongBinding> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(StrongBinding);
 };
diff --git a/mojo/public/cpp/system/data_pipe_drainer.cc b/mojo/public/cpp/system/data_pipe_drainer.cc
index 27b995a..8b8d823 100644
--- a/mojo/public/cpp/system/data_pipe_drainer.cc
+++ b/mojo/public/cpp/system/data_pipe_drainer.cc
@@ -18,8 +18,7 @@
       source_(std::move(source)),
       handle_watcher_(FROM_HERE,
                       SimpleWatcher::ArmingPolicy::AUTOMATIC,
-                      base::SequencedTaskRunnerHandle::Get()),
-      weak_factory_(this) {
+                      base::SequencedTaskRunnerHandle::Get()) {
   DCHECK(client_);
   handle_watcher_.Watch(
       source_.get(), MOJO_HANDLE_SIGNAL_READABLE,
diff --git a/mojo/public/cpp/system/data_pipe_drainer.h b/mojo/public/cpp/system/data_pipe_drainer.h
index 209d93d..949c9d1 100644
--- a/mojo/public/cpp/system/data_pipe_drainer.h
+++ b/mojo/public/cpp/system/data_pipe_drainer.h
@@ -37,7 +37,7 @@
   mojo::ScopedDataPipeConsumerHandle source_;
   mojo::SimpleWatcher handle_watcher_;
 
-  base::WeakPtrFactory<DataPipeDrainer> weak_factory_;
+  base::WeakPtrFactory<DataPipeDrainer> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(DataPipeDrainer);
 };
diff --git a/mojo/public/cpp/system/file_data_pipe_producer.cc b/mojo/public/cpp/system/file_data_pipe_producer.cc
index f207e0d..e299d856 100644
--- a/mojo/public/cpp/system/file_data_pipe_producer.cc
+++ b/mojo/public/cpp/system/file_data_pipe_producer.cc
@@ -236,9 +236,7 @@
 FileDataPipeProducer::FileDataPipeProducer(
     ScopedDataPipeProducerHandle producer,
     std::unique_ptr<Observer> observer)
-    : producer_(std::move(producer)),
-      observer_(std::move(observer)),
-      weak_factory_(this) {}
+    : producer_(std::move(producer)), observer_(std::move(observer)) {}
 
 FileDataPipeProducer::~FileDataPipeProducer() {
   if (file_sequence_state_)
diff --git a/mojo/public/cpp/system/file_data_pipe_producer.h b/mojo/public/cpp/system/file_data_pipe_producer.h
index c3479f7..061113e 100644
--- a/mojo/public/cpp/system/file_data_pipe_producer.h
+++ b/mojo/public/cpp/system/file_data_pipe_producer.h
@@ -104,7 +104,7 @@
   ScopedDataPipeProducerHandle producer_;
   scoped_refptr<FileSequenceState> file_sequence_state_;
   std::unique_ptr<Observer> observer_;
-  base::WeakPtrFactory<FileDataPipeProducer> weak_factory_;
+  base::WeakPtrFactory<FileDataPipeProducer> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(FileDataPipeProducer);
 };
diff --git a/mojo/public/cpp/system/simple_watcher.cc b/mojo/public/cpp/system/simple_watcher.cc
index 5905b02c..c2ed7efd3 100644
--- a/mojo/public/cpp/system/simple_watcher.cc
+++ b/mojo/public/cpp/system/simple_watcher.cc
@@ -142,8 +142,7 @@
       is_default_task_runner_(base::ThreadTaskRunnerHandle::IsSet() &&
                               task_runner_ ==
                                   base::ThreadTaskRunnerHandle::Get()),
-      heap_profiler_tag_(from_here.file_name()),
-      weak_factory_(this) {
+      heap_profiler_tag_(from_here.file_name()) {
   MojoResult rv = CreateTrap(&Context::CallNotify, &trap_handle_);
   DCHECK_EQ(MOJO_RESULT_OK, rv);
   DCHECK(task_runner_->RunsTasksInCurrentSequence());
diff --git a/mojo/public/cpp/system/simple_watcher.h b/mojo/public/cpp/system/simple_watcher.h
index cc916c8..e34d7dd 100644
--- a/mojo/public/cpp/system/simple_watcher.h
+++ b/mojo/public/cpp/system/simple_watcher.h
@@ -233,7 +233,7 @@
   // this watcher.
   const char* heap_profiler_tag_ = nullptr;
 
-  base::WeakPtrFactory<SimpleWatcher> weak_factory_;
+  base::WeakPtrFactory<SimpleWatcher> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(SimpleWatcher);
 };
diff --git a/mojo/public/cpp/system/string_data_pipe_producer.cc b/mojo/public/cpp/system/string_data_pipe_producer.cc
index 81f7e7d5..3fad5cf 100644
--- a/mojo/public/cpp/system/string_data_pipe_producer.cc
+++ b/mojo/public/cpp/system/string_data_pipe_producer.cc
@@ -60,8 +60,7 @@
     : producer_(std::move(producer)),
       watcher_(FROM_HERE,
                SimpleWatcher::ArmingPolicy::AUTOMATIC,
-               base::SequencedTaskRunnerHandle::Get()),
-      weak_factory_(this) {}
+               base::SequencedTaskRunnerHandle::Get()) {}
 
 StringDataPipeProducer::~StringDataPipeProducer() = default;
 
diff --git a/mojo/public/cpp/system/string_data_pipe_producer.h b/mojo/public/cpp/system/string_data_pipe_producer.h
index 0e66f2bc..14ceb476 100644
--- a/mojo/public/cpp/system/string_data_pipe_producer.h
+++ b/mojo/public/cpp/system/string_data_pipe_producer.h
@@ -80,7 +80,7 @@
   base::StringPiece data_view_;
   CompletionCallback callback_;
   SimpleWatcher watcher_;
-  base::WeakPtrFactory<StringDataPipeProducer> weak_factory_;
+  base::WeakPtrFactory<StringDataPipeProducer> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(StringDataPipeProducer);
 };
diff --git a/mojo/public/tools/bindings/generators/js_templates/lite/interface_definition.tmpl b/mojo/public/tools/bindings/generators/js_templates/lite/interface_definition.tmpl
index 4109319..389b57cd2 100644
--- a/mojo/public/tools/bindings/generators/js_templates/lite/interface_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/js_templates/lite/interface_definition.tmpl
@@ -18,15 +18,15 @@
 {% endmacro %}
 
 {%  if generate_closure_exports -%}
-goog.provide('{{module.namespace}}.{{interface.name}}');
+goog.provide('{{module.namespace}}.{{interface.name}}{{primitives_names.receiver}}');
 goog.provide('{{module.namespace}}.{{interface.name}}CallbackRouter');
 goog.provide('{{module.namespace}}.{{interface.name}}Interface');
-goog.provide('{{module.namespace}}.{{interface.name}}Proxy');
-goog.provide('{{module.namespace}}.{{interface.name}}Request');
+goog.provide('{{module.namespace}}.{{interface.name}}{{primitives_names.remote}}');
+goog.provide('{{module.namespace}}.{{interface.name}}{{primitives_names.pending_receiver}}');
 {% endif %}
 
 /** @export */
-{{module.namespace}}.{{interface.name}}Request = class {
+{{module.namespace}}.{{interface.name}}{{primitives_names.pending_receiver}} = class {
   /** @param {!MojoHandle} handle */
   constructor(handle) {
     /** @public {!MojoHandle} */
@@ -52,19 +52,19 @@
  * @export
  * @implements { {{module.namespace}}.{{interface.name}}Interface }
  */
-{{module.namespace}}.{{interface.name}}Proxy = class {
+{{module.namespace}}.{{interface.name}}{{primitives_names.remote}} = class {
   /** @param {MojoHandle=} opt_handle */
   constructor(opt_handle) {
     /**
-     * @private {!mojo.internal.interfaceSupport.InterfaceRemoteBase<!{{module.namespace}}.{{interface.name}}Request>}
+     * @private {!mojo.internal.interfaceSupport.InterfaceRemoteBase<!{{module.namespace}}.{{interface.name}}{{primitives_names.pending_receiver}}>}
      */
     this.proxy =
         new mojo.internal.interfaceSupport.InterfaceRemoteBase(
-          {{module.namespace}}.{{interface.name}}Request,
+          {{module.namespace}}.{{interface.name}}{{primitives_names.pending_receiver}},
           opt_handle);
 
     /**
-     * @public {!mojo.internal.interfaceSupport.InterfaceRemoteBaseWrapper<!{{module.namespace}}.{{interface.name}}Request>}
+     * @public {!mojo.internal.interfaceSupport.InterfaceRemoteBaseWrapper<!{{module.namespace}}.{{interface.name}}{{primitives_names.pending_receiver}}>}
      */
     this.$ = new mojo.internal.interfaceSupport.InterfaceRemoteBaseWrapper(this.proxy);
 
@@ -109,17 +109,17 @@
  *
  * @export
  */
-{{module.namespace}}.{{interface.name}} = class {
+{{module.namespace}}.{{interface.name}}{{primitives_names.receiver}} = class {
   /**
    * @param {!{{module.namespace}}.{{interface.name}}Interface } impl
    */
   constructor(impl) {
-    /** @private {!mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal<!{{module.namespace}}.{{interface.name}}Proxy>} */
+    /** @private {!mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal<!{{module.namespace}}.{{interface.name}}{{primitives_names.remote}}>} */
     this.helper_internal_ = new mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal(
-        {{module.namespace}}.{{interface.name}}Proxy);
+        {{module.namespace}}.{{interface.name}}{{primitives_names.remote}});
 
     /**
-     * @public {!mojo.internal.interfaceSupport.InterfaceReceiverHelper<!{{module.namespace}}.{{interface.name}}Proxy>}
+     * @public {!mojo.internal.interfaceSupport.InterfaceReceiverHelper<!{{module.namespace}}.{{interface.name}}{{primitives_names.remote}}>}
      */
     this.$ = new mojo.internal.interfaceSupport.InterfaceReceiverHelper(this.helper_internal_);
 
@@ -140,6 +140,7 @@
     this.onConnectionError = this.helper_internal_.getConnectionErrorEventRouter();
   }
 
+  {% if use_old_names -%}
   /**
    * Returns a proxy for this interface which sends messages to the browser.
    * The browser must have an interface request binder registered for this
@@ -154,6 +155,14 @@
                        proxy.$.bindNewPipeAndPassReceiver().handle);
     return proxy;
   }
+
+  /**
+   * @return {!string}
+   */
+  static get $interfaceName() {
+    return "{{mojom_namespace}}.{{interface.name}}";
+  }
+  {% endif %}
 };
 
 {#--- Enums #}
@@ -164,12 +173,36 @@
             enum) }}
 {%-  endfor %}
 
+{% if not use_old_names -%}
+
 /**
- * @const {string}
- * @export
+ *  @export
  */
-{{module.namespace}}.{{interface.name}}.$interfaceName =
-    '{{mojom_namespace}}.{{interface.name}}';
+{{module.namespace}}.{{interface.name}} = class {
+  /**
+   * @return {!string}
+   */
+  static get $interfaceName() {
+    return "{{mojom_namespace}}.{{interface.name}}";
+  }
+
+  /**
+   * Returns a remote for this interface which sends messages to the browser.
+   * The browser must have an interface request binder registered for this
+   * interface and accessible to the calling document's frame.
+   *
+   * @return {!{{module.namespace}}.{{interface.name}}Remote}
+   * @export
+   */
+  static getRemote() {
+    let remote = new {{module.namespace}}.{{interface.name}}Remote;
+    Mojo.bindInterface(this.$interfaceName,
+                       remote.$.bindNewPipeAndPassReceiver().handle);
+    return remote;
+  }
+};
+
+{% endif %}
 
 /**
  * An object which receives request messages for the {{interface.name}}
@@ -182,10 +215,10 @@
 {{module.namespace}}.{{interface.name}}CallbackRouter = class {
   constructor() {
     this.helper_internal_ = new mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal(
-      {{module.namespace}}.{{interface.name}}Proxy);
+      {{module.namespace}}.{{interface.name}}{{primitives_names.remote}});
 
     /**
-     * @public {!mojo.internal.interfaceSupport.InterfaceReceiverHelper<!{{module.namespace}}.{{interface.name}}Proxy>}
+     * @public {!mojo.internal.interfaceSupport.InterfaceReceiverHelper<!{{module.namespace}}.{{interface.name}}{{primitives_names.remote}}>}
      */
     this.$ = new mojo.internal.interfaceSupport.InterfaceReceiverHelper(this.helper_internal_);
 
diff --git a/mojo/public/tools/bindings/generators/mojom_js_generator.py b/mojo/public/tools/bindings/generators/mojom_js_generator.py
index 19a94f2..eb8d3b6 100644
--- a/mojo/public/tools/bindings/generators/mojom_js_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_js_generator.py
@@ -264,7 +264,9 @@
       "unions": self.module.unions,
       "generate_fuzzing": self.generate_fuzzing,
       "generate_closure_exports": for_compile,
-    }
+      "use_old_names": self.use_old_js_lite_bindings_names,
+      "primitives_names": self._GetPrimitivesNames(),
+   }
 
   @staticmethod
   def GetTemplatePrefix():
@@ -339,15 +341,15 @@
   def _GenerateExterns(self):
     return self._GetParameters()
 
-  @UseJinja("lite/mojom-lite.js.tmpl")
-  def _GenerateLiteBindings(self):
-    return self._GetParameters()
-
   @UseJinja("lite/mojom.html.tmpl")
   def _GenerateLiteHtml(self):
     return self._GetParameters()
 
   @UseJinja("lite/mojom-lite.js.tmpl")
+  def _GenerateLiteBindings(self):
+    return self._GetParameters()
+
+  @UseJinja("lite/mojom-lite.js.tmpl")
   def _GenerateLiteBindingsForCompile(self):
     return self._GetParameters(for_compile=True)
 
@@ -368,7 +370,7 @@
       self.Write(self._GenerateLiteHtml(), "%s.html" % self.module.path)
       self.Write(self._GenerateLiteBindings(), "%s-lite.js" % self.module.path)
       self.Write(self._GenerateLiteBindingsForCompile(),
-          "%s-lite-for-compile.js" % self.module.path)
+                 "%s-lite-for-compile.js" % self.module.path)
 
   def _SetUniqueNameForImports(self):
     used_names = set()
@@ -464,9 +466,9 @@
         mojom.IsEnumKind(kind)):
       return name
     if mojom.IsInterfaceKind(kind) or mojom.IsPendingRemoteKind(kind):
-      return name + "Proxy"
+      return name + self._GetPrimitivesNames()["remote"]
     if mojom.IsInterfaceRequestKind(kind) or mojom.IsPendingReceiverKind(kind):
-      return name + "Request"
+      return name + self._GetPrimitivesNames()["pending_receiver"]
     # TODO(calamity): Support associated interfaces properly.
     if (mojom.IsAssociatedInterfaceKind(kind) or
         mojom.IsPendingAssociatedRemoteKind(kind)):
@@ -561,17 +563,21 @@
         mojom.IsEnumKind(kind)):
       return "%sSpec.$" % name
     if mojom.IsInterfaceKind(kind) or mojom.IsPendingRemoteKind(kind):
-      return "mojo.internal.InterfaceProxy(%sProxy)" % name
+      remote_name = name + self._GetPrimitivesNames()["remote"]
+      return "mojo.internal.InterfaceProxy(%s)" % remote_name
     if mojom.IsInterfaceRequestKind(kind) or mojom.IsPendingReceiverKind(kind):
-      return "mojo.internal.InterfaceRequest(%sRequest)" % name
+      request_name = name + self._GetPrimitivesNames()["pending_receiver"]
+      return "mojo.internal.InterfaceRequest(%s)" % request_name
     if (mojom.IsAssociatedInterfaceKind(kind) or
         mojom.IsPendingAssociatedRemoteKind(kind)):
+      remote_name = name + self._GetPrimitivesNames()["remote"]
       # TODO(rockot): Implement associated interfaces.
-      return "mojo.internal.AssociatedInterfaceProxy(%sProxy)" % (
-          name)
+      return "mojo.internal.AssociatedInterfaceProxy(%s)" % (
+          remote_name)
     if (mojom.IsAssociatedInterfaceRequestKind(kind) or
         mojom.IsPendingAssociatedReceiverKind(kind)):
-      return "mojo.internal.AssociatedInterfaceRequest(%s)" % name
+      request_name = name + self._GetPrimitivesNames()["pending_receiver"]
+      return "mojo.internal.AssociatedInterfaceRequest(%s)" % request_name
 
     return name
 
@@ -810,6 +816,20 @@
 
     return self._ExpressionToText(token)
 
+  def _GetPrimitivesNames(self):
+    if self.use_old_js_lite_bindings_names:
+      return {
+          "remote": "Proxy",
+          "receiver": "",
+          "pending_receiver": "Request",
+      }
+    else:
+      return {
+          "remote": "Remote",
+          "receiver": "Receiver",
+          "pending_receiver": "PendingReceiver",
+      }
+
   def _GenerateHtmlImports(self):
     result = []
     for full_import in self.module.imports:
diff --git a/mojo/public/tools/bindings/mojom.gni b/mojo/public/tools/bindings/mojom.gni
index 8310a1bc..36b5c9b 100644
--- a/mojo/public/tools/bindings/mojom.gni
+++ b/mojo/public/tools/bindings/mojom.gni
@@ -282,6 +282,10 @@
 #       correct dependency order. Note that this only has an effect if
 #       the |enable_mojom_closure_compile| global arg is set to |true| as well.
 #
+#   use_old_js_lite_bindings_names (optional)
+#       Use old names i.e. FooProxy, Foo, getProxy(), etc. instead of the new
+#       names i.e. FooRemote, FooReceiver, getRemote(), etc.
+#
 # The following parameters are used to support the component build. They are
 # needed so that bindings which are linked with a component can use the same
 # export settings for classes. The first three are for the chromium variant, and
@@ -1267,6 +1271,11 @@
         if (generate_fuzzing) {
           args += [ "--generate_fuzzing" ]
         }
+
+        if (!defined(invoker.use_old_js_lite_bindings_names) ||
+            invoker.use_old_js_lite_bindings_names) {
+          args += [ "--use_old_js_lite_bindings_names" ]
+        }
       }
     }
 
diff --git a/mojo/public/tools/bindings/mojom_bindings_generator.py b/mojo/public/tools/bindings/mojom_bindings_generator.py
index 72f23d86..d8a2118e 100755
--- a/mojo/public/tools/bindings/mojom_bindings_generator.py
+++ b/mojo/public/tools/bindings/mojom_bindings_generator.py
@@ -214,6 +214,7 @@
             variant=args.variant, bytecode_path=args.bytecode_path,
             for_blink=args.for_blink,
             js_bindings_mode=args.js_bindings_mode,
+            use_old_js_lite_bindings_names=args.use_old_js_lite_bindings_names,
             export_attribute=args.export_attribute,
             export_header=args.export_header,
             generate_non_variant_code=args.generate_non_variant_code,
@@ -466,6 +467,11 @@
       "be \"new\" to generate new-style lite JS bindings in addition to the "
       "old, or \"old\" to only generate old bindings.")
   generate_parser.add_argument(
+      "--use_old_js_lite_bindings_names", action="store_true",
+      help="This option only affects the JavaScript bindings. Specifying this "
+      "argument causes the generated new-style lite JS bindings to use the old"
+      "names for primitives e.g. Foo, FooProxy, getProxy(), etc.")
+  generate_parser.add_argument(
       "--export_attribute", default="",
       help="Optional attribute to specify on class declaration to export it "
       "for the component build.")
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
index fe4fce2..6487635 100644
--- a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
+++ b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
@@ -165,7 +165,9 @@
   # files to stdout.
   def __init__(self, module, output_dir=None, typemap=None, variant=None,
                bytecode_path=None, for_blink=False,
-               js_bindings_mode="new", export_attribute=None,
+               js_bindings_mode="new",
+               use_old_js_lite_bindings_names=False,
+               export_attribute=None,
                export_header=None, generate_non_variant_code=False,
                support_lazy_serialization=False, disallow_native_types=False,
                disallow_interfaces=False, generate_message_ids=False,
@@ -177,6 +179,7 @@
     self.bytecode_path = bytecode_path
     self.for_blink = for_blink
     self.js_bindings_mode = js_bindings_mode
+    self.use_old_js_lite_bindings_names = use_old_js_lite_bindings_names
     self.export_attribute = export_attribute
     self.export_header = export_header
     self.generate_non_variant_code = generate_non_variant_code
diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc
index 1afff52..dacebd0 100644
--- a/net/cookies/canonical_cookie.cc
+++ b/net/cookies/canonical_cookie.cc
@@ -301,6 +301,11 @@
   if (!path.empty() && cookie_path != path)
     return nullptr;
 
+  if (!IsCookiePrefixValid(GetCookiePrefix(name), url, secure, domain,
+                           cookie_path)) {
+    return nullptr;
+  }
+
   if (!last_access_time.is_null() && creation_time.is_null())
     return nullptr;
 
@@ -329,7 +334,6 @@
 }
 
 bool CanonicalCookie::IsOnPath(const std::string& url_path) const {
-
   // A zero length would be unsafe for our trailing '/' checks, and
   // would also make no sense for our prefix match.  The code that
   // creates a CanonicalCookie should make sure the path is never zero length,
@@ -588,11 +592,23 @@
 bool CanonicalCookie::IsCookiePrefixValid(CanonicalCookie::CookiePrefix prefix,
                                           const GURL& url,
                                           const ParsedCookie& parsed_cookie) {
+  return CanonicalCookie::IsCookiePrefixValid(
+      prefix, url, parsed_cookie.IsSecure(),
+      parsed_cookie.HasDomain() ? parsed_cookie.Domain() : "",
+      parsed_cookie.HasPath() ? parsed_cookie.Path() : "");
+}
+
+bool CanonicalCookie::IsCookiePrefixValid(CanonicalCookie::CookiePrefix prefix,
+                                          const GURL& url,
+                                          bool secure,
+                                          const std::string& domain,
+                                          const std::string& path) {
   if (prefix == CanonicalCookie::COOKIE_PREFIX_SECURE)
-    return parsed_cookie.IsSecure() && url.SchemeIsCryptographic();
+    return secure && url.SchemeIsCryptographic();
   if (prefix == CanonicalCookie::COOKIE_PREFIX_HOST) {
-    return parsed_cookie.IsSecure() && url.SchemeIsCryptographic() &&
-           !parsed_cookie.HasDomain() && parsed_cookie.Path() == "/";
+    const bool domain_valid =
+        domain.empty() || (url.HostIsIPAddress() && url.host() == domain);
+    return secure && url.SchemeIsCryptographic() && domain_valid && path == "/";
   }
   return true;
 }
diff --git a/net/cookies/canonical_cookie.h b/net/cookies/canonical_cookie.h
index e38fa12..163efdd1 100644
--- a/net/cookies/canonical_cookie.h
+++ b/net/cookies/canonical_cookie.h
@@ -268,6 +268,11 @@
   static bool IsCookiePrefixValid(CookiePrefix prefix,
                                   const GURL& url,
                                   const ParsedCookie& parsed_cookie);
+  static bool IsCookiePrefixValid(CookiePrefix prefix,
+                                  const GURL& url,
+                                  bool secure,
+                                  const std::string& domain,
+                                  const std::string& path);
 
   // Returns the cookie's domain, with the leading dot removed, if present.
   std::string DomainWithoutDot() const;
diff --git a/net/cookies/canonical_cookie_unittest.cc b/net/cookies/canonical_cookie_unittest.cc
index 8dda561..9797077 100644
--- a/net/cookies/canonical_cookie_unittest.cc
+++ b/net/cookies/canonical_cookie_unittest.cc
@@ -861,6 +861,18 @@
   EXPECT_EQ(CanonicalCookie::CookieInclusionStatus::EXCLUDE_INVALID_PREFIX,
             status);
 
+  // A __Host- cookie may have a domain if it's an IP address that matches the
+  // URL.
+  EXPECT_TRUE(
+      CanonicalCookie::Create(GURL("https://127.0.0.1"),
+                              "__Host-A=B; Domain=127.0.0.1; Path=/; Secure;",
+                              creation_time, options, &status));
+  // A __Host- cookie with an IP address domain does not need the domain
+  // attribute specified explicitly (just like a normal domain).
+  EXPECT_TRUE(CanonicalCookie::Create(GURL("https://127.0.0.1"),
+                                      "__Host-A=B; Domain=; Path=/; Secure;",
+                                      creation_time, options, &status));
+
   // A __Host- cookie must have a Path of "/".
   EXPECT_FALSE(CanonicalCookie::Create(https_url,
                                        "__Host-A=B; Path=/foo; Secure;",
@@ -1483,6 +1495,78 @@
       COOKIE_PRIORITY_DEFAULT);
   ASSERT_TRUE(cc);
   EXPECT_EQ("/foo%7F", cc->Path());
+
+  // A __Secure- cookie must be Secure.
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "__Secure-A", "B", ".www.foo.com", "/",
+      two_hours_ago, one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+  EXPECT_FALSE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "__Secure-A", "B", ".www.foo.com", "/",
+      two_hours_ago, one_hour_from_now, one_hour_ago, false, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+
+  // A __Host- cookie must be Secure.
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "__Host-A", "B", std::string(), "/",
+      two_hours_ago, one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+  EXPECT_FALSE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "__Host-A", "B", std::string(), "/",
+      two_hours_ago, one_hour_from_now, one_hour_ago, false, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+
+  // A __Host- cookie must have path "/".
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "__Host-A", "B", std::string(), "/",
+      two_hours_ago, one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+  EXPECT_FALSE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "__Host-A", "B", std::string(), "/foo",
+      two_hours_ago, one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+
+  // A __Host- cookie must not specify a domain.
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "__Host-A", "B", std::string(), "/",
+      two_hours_ago, one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+  EXPECT_FALSE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "__Host-A", "B", ".www.foo.com", "/",
+      two_hours_ago, one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+  // Without __Host- prefix, this is a valid host cookie because it does not
+  // specify a domain.
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "A", "B", std::string(), "/", two_hours_ago,
+      one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+  // Without __Host- prefix, this is a valid domain (not host) cookie.
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://www.foo.com"), "A", "B", ".www.foo.com", "/", two_hours_ago,
+      one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+
+  // The __Host- prefix should not prevent otherwise-valid host cookies from
+  // being accepted.
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://127.0.0.1"), "A", "B", std::string(), "/", two_hours_ago,
+      one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://127.0.0.1"), "__Host-A", "B", std::string(), "/",
+      two_hours_ago, one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+  // Host cookies should not specify domain unless it is an IP address that
+  // matches the URL.
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://127.0.0.1"), "A", "B", "127.0.0.1", "/", two_hours_ago,
+      one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
+  EXPECT_TRUE(CanonicalCookie::CreateSanitizedCookie(
+      GURL("https://127.0.0.1"), "__Host-A", "B", "127.0.0.1", "/",
+      two_hours_ago, one_hour_from_now, one_hour_ago, true, false,
+      CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT));
 }
 
 TEST(CanonicalCookieTest, IsSetPermittedInContext) {
diff --git a/net/http/transport_security_state_static.json b/net/http/transport_security_state_static.json
index 4222ff28..b3f13b1 100644
--- a/net/http/transport_security_state_static.json
+++ b/net/http/transport_security_state_static.json
@@ -4356,7 +4356,6 @@
     { "name": "dmxledlights.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "docemeldoces.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doctorwho.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "domainstaff.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dopost.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dot.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dyrenesverden.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -5431,7 +5430,6 @@
     { "name": "realgarant-shop.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "remodela.com.ve", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "restchart.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "richmondsunlight.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rightcapital.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rolemaster.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "room208.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -5613,7 +5611,6 @@
     { "name": "basnieuwenhuizen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beanjuice.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beardydave.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "beframed.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beinad.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "believablebook.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bely-mishka.by", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -7945,7 +7942,6 @@
     { "name": "vinilosdecorativos.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vitta.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vivaldi.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vivatv.com.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vizeat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vorodevops.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vpn.ht", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8311,13 +8307,11 @@
     { "name": "antscript.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ao-dev.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apervita.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "api-geek.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apmg-certified.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apmg-cyber.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "app-arena.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "appdrinks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "appleoosa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "applic8.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "appointed.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "appraisal-comps.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "appreciationkards.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12442,7 +12436,6 @@
     { "name": "addtoany.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adfa-1.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adhoc.is", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "adonnante.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "advocatenalkmaar.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adxperience.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aerialmediapro.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -13184,7 +13177,6 @@
     { "name": "kncg.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "knthost.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "koethen-markt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "koldanews.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "komidoc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kommune42.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "konkurs.ba", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -14176,7 +14168,6 @@
     { "name": "borderlinegroup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "awaremi-tai.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bewerbungsfibel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "besnik.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bemsoft.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bluebill.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beyondalderaan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -14555,11 +14546,9 @@
     { "name": "endohaus.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fuvpn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ff-obersunzing-niedersunzing.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "film.photos", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fnzc.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "galardi.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "garden.trade", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "frdl.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fwei.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gdv.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ezhik-din.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -14891,7 +14880,6 @@
     { "name": "limiteddata.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lim-light.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lirion.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "legendary.camera", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leanplando.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lacicloud.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "librends.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15089,7 +15077,6 @@
     { "name": "notify.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nabu-bad-nauheim.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nitropur.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mustardking.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nossasenhoradaconceicao.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "montand.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oauth-dropins.appspot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15272,7 +15259,6 @@
     { "name": "radreisetraumtreibstoff.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "randomkoalafacts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rapidshit.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "radionicabg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "randomprecision.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "quantum-cloud.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pretzlaff.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16097,7 +16083,6 @@
     { "name": "elliotgluck.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ebiografia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dinmtb.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dianefriedli.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ebiografias.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dronexpertos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doyoulyft.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16636,7 +16621,6 @@
     { "name": "ofda.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "olanderflorist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "noclegi-online.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "monpc-pro.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "norrkemi.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oldoakflorist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "opic.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17783,7 +17767,6 @@
     { "name": "exhalespa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "estcequonmetenprodaujourdhui.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "facebook.ax", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecolesrec.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eganassociates.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "escapeplaza.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evafojtova.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17958,7 +17941,6 @@
     { "name": "hannah.link", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hac30.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hakugin.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "guideo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "getpublii.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hiltonhyland.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "habtium.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18280,7 +18262,6 @@
     { "name": "lifanov.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lemuslimpost.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lel.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "kids-at-home.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kuaza.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lijero.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lexicography.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18554,7 +18535,6 @@
     { "name": "nootropic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "neartothesky.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "normaculta.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nicolas-hoffmann.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mystown.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mutuelle-obligatoire-pme.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nexusconnectinternational.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19278,7 +19258,6 @@
     { "name": "ujob.com.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "whistleblower.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vjeff.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "unquote.li", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "voodoochile.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webcontentspinning.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vbazile.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19492,8 +19471,6 @@
     { "name": "akalashnikov.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "advokat-romanov.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "a-ix.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "2bcompany.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "abimelec.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alibip.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "akkadia.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aolabs.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19540,8 +19517,6 @@
     { "name": "aidhan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "appartement-andrea.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andruvision.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "alca31.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "alainbaechlerphotography.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ashleyfoley.photography", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "2krueger.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "247quickbooks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19566,7 +19541,6 @@
     { "name": "ares-trading.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "astraalivankila.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "archivesdelavieordinaire.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "antcas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "armleads.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arcusnova.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abeontech.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19574,7 +19548,6 @@
     { "name": "aristilabs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "araleeniken.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "azrazalea.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "apef.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "attilavandervelde.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ato4sound.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arthur.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19588,10 +19561,8 @@
     { "name": "backterris.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "awan.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amlvfs.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "arteshow.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "artstopinc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "azamra.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ans-ge.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ayahuascaadvisor.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asseenfromthesidecar.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bankstownapartments.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19630,7 +19601,6 @@
     { "name": "bashstreetband.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "2048-spiel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "avi9526.pp.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "automotivegroup-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bandito.re", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aquilalab.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "automobiles5.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19641,7 +19611,6 @@
     { "name": "agridir.site", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asepms.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ac-epmservices.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "arveron.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bbwteens.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "begabungsfoerderung.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "betseybuckheit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19663,7 +19632,6 @@
     { "name": "bebetrotteur.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biswas.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bitplay.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "artisans-libres.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bitbucket.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bey.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bitbucket.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19680,7 +19648,6 @@
     { "name": "belgien.guide", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bergland-seefeld.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bernat.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "aubonmanger.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blinking.link", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bina.az", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bodygearguide.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19696,7 +19663,6 @@
     { "name": "blockxit.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "berdu.id", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blechinger.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bauthier-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "battle-game.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "boldmediagroup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "betterscience.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19704,7 +19670,6 @@
     { "name": "bolwerk.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blacknetwork.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bazziergraphik.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bch7al.ma", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bienoubien.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brando753.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bruun.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19715,7 +19680,6 @@
     { "name": "bestfitnesswatchreview.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blogaid.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "burke.services", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "batlab.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "board-buy.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blumen-garage.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "benjakesjohnson.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19810,7 +19774,6 @@
     { "name": "chatxtutti.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chriswbarry.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ccl-sti.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cantatio.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chocolatesandhealth.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "canlidoviz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chatt-gratis.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19836,7 +19799,6 @@
     { "name": "bitcoinrealestate.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "charlotte-touati.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cloudservice.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chantalguggenbuhl.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cocinoyo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chytraauta.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "backintomotionphysiotherapy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19889,7 +19851,6 @@
     { "name": "commoncode.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "childrendeservebetter.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "citylights.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cinq-elements.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cpy.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crge.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crackslut.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19927,7 +19888,6 @@
     { "name": "cynoshair.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crecket.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "csgf.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cotwe-ge.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dearfcc.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conkret.mobi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "data.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19969,7 +19929,6 @@
     { "name": "dflcares.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "denimtoday.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "darkeststar.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "csp.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "diccionariodedudas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dieser.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "das-tyrol.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20022,7 +19981,6 @@
     { "name": "driverless.id", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dreamlighteyeserum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dtub.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "curieux.digital", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dochitaceahlau.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "diversityflags.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "domprojects.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20045,12 +20003,10 @@
     { "name": "duckbase.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doska.by", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "csgoshifter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "demarle.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dracisvet.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "educationevolving.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dprb.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doli.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "didche.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doclassworks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ebooki.eu.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eickhofcolumbaria.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20076,7 +20032,6 @@
     { "name": "elektro-pfeiffer.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elektro-hornetz.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "deadmann.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "diegogelin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "effdocs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ehazi.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ec-baran.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20109,7 +20064,6 @@
     { "name": "elektrokarges.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eichel.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eprofitacademy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dzeina.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "epickitty.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "emanga.su", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etk2000.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20117,7 +20071,6 @@
     { "name": "ellemental.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evades.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "envant.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "domainedemiolan.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "erudicia.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ejdv-anmeldung.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elektro-stock.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20158,14 +20111,12 @@
     { "name": "europeantransportmanagement.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fabianackle.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eurora.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecole-attalens.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ewanm89.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eupay.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "europapier.bg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eutram.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ewanm89.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evergladesrestoration.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "esafar.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "esquisse.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "euroscot.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fearghus.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20205,7 +20156,6 @@
     { "name": "firegoby.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "filme-online.eu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fliptable.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "eyes-berg.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "filebox.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fight215.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fight215.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20346,7 +20296,6 @@
     { "name": "grekland.guide", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hashidays.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grapholio.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ggl-luzern.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "guyot-tech.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "guge.gq", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gotoxy.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20404,7 +20353,6 @@
     { "name": "hosts.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "higilopocht.li", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hitter.family", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hec-espace-entreprise.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hotartup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "heello.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gers-authentique.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20450,10 +20398,8 @@
     { "name": "huirongis.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hoowhen.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ic-lighting.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hopconseils.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hosyaku.gr.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "idealmykonos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hopconseils.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hugi.is", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hotel-huberhof.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ih8sn0w.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20480,7 +20426,6 @@
     { "name": "hypothecairelening.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hyphenpda.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "illich.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "iceberg.academy", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "imaginarymakings.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ifsclist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "infosoph.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20534,7 +20479,6 @@
     { "name": "iplife.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jake.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iteke.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "infirmieredevie.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iteke.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "javascriptlab.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jeff.is", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20574,7 +20518,6 @@
     { "name": "idinby.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "how2fsbo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joshuajohnson.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ipura.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jomo.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jncie.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jonscaife.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20602,7 +20545,6 @@
     { "name": "keypersonins.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kaketalk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "frodriguez.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jlr-luxembourg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kayscs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "johncardell.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joseetesser.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20682,7 +20624,6 @@
     { "name": "koha.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jichi.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "laredsemanario.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "julienpaterne.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kuponydoher.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "learnedhacker.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kowalmik.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20745,7 +20686,6 @@
     { "name": "lowson.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lostwithdan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lilapmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "laclaque.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "isognattori.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lilyfarmfreshskincare.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lbarrios.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20763,10 +20703,8 @@
     { "name": "logitel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "londoncalling.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kingpincages.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lapparente-aise.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "linux-mint-czech.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lifeqa.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lghfinancialstrategy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "locksport.org.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "likemovies.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lovelyfriends.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20784,7 +20722,6 @@
     { "name": "mamadea.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "loyaltech.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "load-ev.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lesmamy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lyngvaer.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "koelbli.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lotos-ag.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20792,7 +20729,6 @@
     { "name": "magictable.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lotw.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maceinturecuir.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "luc-oberson.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "majahoidja.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "madoka.nu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "langkahteduh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20849,15 +20785,12 @@
     { "name": "mikusinec.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mensagensperfeitas.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mileme.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "margecommunication.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mikk.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mimobile.website", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mbeo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mdosch.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mendy.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mfedderke.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "menaraannonces.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "malysvet.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "memoryex.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meshotes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lifenexto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20868,7 +20801,6 @@
     { "name": "minnesotamathcorps.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meinezwangsversteigerung.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minnesotareadingcorps.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "maze.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "michalspacek.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meteosmit.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mitior.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20915,7 +20847,6 @@
     { "name": "morpheusx.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mannford.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mrd.ninja", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mind-box.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mygrotto.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mode-marine.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "macsandcheesedreams.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20948,7 +20879,6 @@
     { "name": "nbari.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "necessaryandproportionate.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "necessaryandproportionate.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "monsieursavon.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mikkelvej.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mycr.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mystic-welten.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20973,9 +20903,7 @@
     { "name": "monpermismoto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "navitime.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "myweb360.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mon22.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nalepky-na-zed.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "modemaille.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mytripcar.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nagios.by", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nesolabs.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21029,7 +20957,6 @@
     { "name": "ntzwrk.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "noexec.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nstd.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "newcityinfo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ngvf.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "netguide.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nitrokey.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21047,7 +20974,6 @@
     { "name": "mardelcupon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nu3tion.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oceanvisuals.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nezrouge-geneve.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "newcityinfo.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "olback.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "one-tab.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21062,7 +20988,6 @@
     { "name": "offgames.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "musehelix.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ohyooo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "newcitystudio.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nstremsdoerfer.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "optimalsetup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "openrealestate.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21082,7 +21007,6 @@
     { "name": "neyer-lorenz.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "openconcept.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "olightstore.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nova-dess.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nuiguru.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paigeglass.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nosbenevolesontdutalent.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21205,7 +21129,6 @@
     { "name": "planktonholland.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "premiership-predictors.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pikeitservices.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "philia-sa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "proxybay.eu.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "projectte.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pseudo.coffee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21225,7 +21148,6 @@
     { "name": "projectsecretidentity.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pkov.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pianetaottica.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pianetaottica.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pianetaottica.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pianetaottica.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "privasphere.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21233,10 +21155,8 @@
     { "name": "promocao.email", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pizzadoc.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qetic.co.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "physiovesenaz.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pianetaottica.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "r3nt3r.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pex.digital", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "profinetz.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prostohobby.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "radiomodem.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21290,7 +21210,6 @@
     { "name": "richonrails.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "respectmyprivacy.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "remonttitekniikka.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "polletmera.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "proteinnuts.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rechtsanwalt-koeppen-feucht.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qirinus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21343,7 +21262,6 @@
     { "name": "safe.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "romarin.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "reinaldudrasfamily.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "roseliere.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rugs.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rodevlaggen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "robert-flynn.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21351,10 +21269,8 @@
     { "name": "sanatorionosti.com.ar", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "roelsworld.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rozeapp.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rlds.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "restaurant-rosengarten.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rotex1840.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "roseliere.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rumtaste.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rumtaste.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "psicologoforensemadrid.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21429,7 +21345,6 @@
     { "name": "scriptenforcer.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shadowsocks.com.hk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schadevergoedingen.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "salmotierra-salvatierra.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "securita.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shootpooloklahoma.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "security.xn--q9jyb4c", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21447,7 +21362,6 @@
     { "name": "shipmile.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shitposts.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "saumondefrance.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "seeclop.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shirosaki.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "saumon-france.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "securitybrief.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21562,7 +21476,6 @@
     { "name": "studiograou.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "super-radiant-skin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "super-ripped-power.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sinergy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "super-slim-coffee.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stern.koeln", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "streklhof.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21574,7 +21487,6 @@
     { "name": "tallcraft.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sunfox.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stellarium-gornergrat.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "suggestim.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sweharris.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stampederadon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "superlandnetwork.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21633,7 +21545,6 @@
     { "name": "tech-director.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tempo.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thcpbees.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "systemeprod.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thamesfamilydentistry.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "testbirds.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thefutureharrills.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21715,7 +21626,6 @@
     { "name": "trinary.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tmtradingmorocco.ma", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "too.gy", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "therapysxm.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "trafficmanager.xxx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "top10mountainbikes.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thedailyupvote.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21815,7 +21725,6 @@
     { "name": "weils.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vinarstvimodryhrozen.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thesocialmediacentral.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "urbalex.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vsestiralnie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vasileruscior.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vitaminler.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21842,7 +21751,6 @@
     { "name": "we-run-linux.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webuni.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "we-use-linux.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "valoremtax.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "winbuzzer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "windholz.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "windwoodmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21854,7 +21762,6 @@
     { "name": "vrijstaandhuis-in-alphen-aan-den-rijn-kopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "treasuredinheritanceministry.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "whoneedstobeprimaried.today", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "valorem-tax.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "walkhighlandsandislands.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wifimapa.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ts-publishers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21866,7 +21773,6 @@
     { "name": "wisper.net.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tpolemis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wimbo.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "weidmannfibertechnology.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wilhelm-nathan.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "worldsgreatestazuredemo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wheatley.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21878,7 +21784,6 @@
     { "name": "visaop.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wonderbill.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xkcd.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitefm.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "willeminfo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wpblog.com.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wissl.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21891,7 +21796,6 @@
     { "name": "x69.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "winter-elektro.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wsyy.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "weemakers.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xgn.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wsb-immo.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xhadius.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21919,10 +21823,7 @@
     { "name": "xn--90accgba6bldkcbb7a.xn--p1acf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xninja.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "youdungoofd.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wheelwork.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--d1acj9c.xn--90ais", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "xn--roselire-60a.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "xn--roselire-60a.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yukonrefugees.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yubi.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zeds-official.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21952,7 +21853,6 @@
     { "name": "zrt.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yoimise.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yama.su", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whyopencomputing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zuzumba.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zigi.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yourgames.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21981,12 +21881,9 @@
     { "name": "xpenology-fr.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yin.roma.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xperiacodes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whyopencomputing.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wyssmuller.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zenwears.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "watermonitor.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yugege.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tirs4ne.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zenfusion.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "0c3.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "0x00ff00ff.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22002,7 +21899,6 @@
     { "name": "3ags.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "3chat.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "3dproteinimaging.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "762.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "9651678.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "a3workshop.swiss", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abdullah.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22045,7 +21941,6 @@
     { "name": "anthony-rouanet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "antipa.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "antoined.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "antoineschaller.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "antragsgruen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apartmanicg.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apila.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22215,9 +22110,7 @@
     { "name": "creativeink.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "creators-design.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "creerunsitepro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cretdupuy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cristarta.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "croixblanche-haguenau.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryoit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "csvalpha.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberdos.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22249,7 +22142,6 @@
     { "name": "destinationsofnewyorkstate.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "develop.fitness", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "devpgsv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dhconcept.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dicando.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "diegorbaquero.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "diemattels.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22274,7 +22166,6 @@
     { "name": "dragonsmoke.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dreiweiden.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "drheibel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "drone-it.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "drostschocolates.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dugunedavet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "duongpho.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22284,7 +22175,6 @@
     { "name": "earlyyearshub.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eattherich.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "edisonnissanparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "egami.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "einheft.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "einsatzstiefel.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ekedp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22305,7 +22195,6 @@
     { "name": "evtripping.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ewus.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "exousiakaidunamis.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "eyes-berg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ezgif.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faderweb.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faldoria.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22350,7 +22239,6 @@
     { "name": "fruchtikus.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fuckcf.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fullytrained.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fundeego.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fuorifuocogenova.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "futurope.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "g10e.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22365,7 +22253,6 @@
     { "name": "gearev.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "geekzone.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gelb-computer.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "georgiastuartyoga.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gfk-kunststoff-luebben.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ghislainphu.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gianlucapartengo.photography", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22373,7 +22260,6 @@
     { "name": "giochi-online.ws", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "girlan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "glamour4you.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "glloq.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "globalhorses.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "globalinsights.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gloucesterphotographer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22385,7 +22271,6 @@
     { "name": "gradsm-ci.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gratis-app.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grettogeek.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "groepjam-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grow-shop.lv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grusenmeyer.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gtcprojects.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22420,7 +22305,6 @@
     { "name": "hrabogados.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hs-arbeitsschutz.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hukkatavara.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hydroturbine.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hypothes.is", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ibcmed.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "icecars.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22434,7 +22318,6 @@
     { "name": "immobilien-badlippspringe.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "impactfestival.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inceptionradionetwork.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ineardisplay.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "infinitioflynnwoodparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "infopagina.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "informaticapremium.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22442,7 +22325,6 @@
     { "name": "inobun.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "internetaanbieders.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "intl-webs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "intmissioncenter.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iojo.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iostream.by", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ipfirebox.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22474,7 +22356,6 @@
     { "name": "johnroberts.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jongha.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joshua-kuepper.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "juls.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "justgalak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "justinellingwood.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jwatt.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22500,7 +22381,6 @@
     { "name": "kiesuwkerstkaart.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "killerit.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kipin.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "kitbag.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kmashworth.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kniga.market", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kolkataflowermall.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22511,12 +22391,10 @@
     { "name": "kusdaryanto.web.id", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "l0re.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lambauer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lancyvbc.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "land-links.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lanna.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lasrecetasdeguada.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lastrada-minden.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lausannedentiste.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "law-peters.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lawrence-institute.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leafandseed.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22528,9 +22406,7 @@
     { "name": "legiscontabilidade.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "legland.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lemon.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lepsos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "les-voitures-electriques.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lespagesweb.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "letteringinstitute.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "levensbron.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leveredge.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22610,7 +22486,6 @@
     { "name": "mistybox.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "miyako-kyoto.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mk89.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mkimage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mo.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mobilebay.top", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mobileritelushi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22640,7 +22515,6 @@
     { "name": "nadelholzkulturen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nagel-dentaltechnik.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nakama.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nakandya.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nanpuyue.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nasmocopati.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nasralmabrooka.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22653,7 +22527,6 @@
     { "name": "neonnuke.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nepovolenainternetovahazardnihra.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "net-navi.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "netto-service.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "newspsychology.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nfz.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "niagara.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22678,7 +22551,6 @@
     { "name": "nyored.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "o3.wf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "object.earth", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ocim.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oklahomamoversassociation.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onee3.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ontheten.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22872,11 +22744,8 @@
     { "name": "studport.rv.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stuka-art.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stuvel.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "suprem.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "suprem.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "svennd.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swd.agency", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "swissfreshaircan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swu.party", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "syleam.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "symphonos.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22890,7 +22759,6 @@
     { "name": "tdfbfoundation.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "teamcombat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "teammathics.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tec3000.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tech-blog.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "telefon.report", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "testbirds.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -22978,7 +22846,6 @@
     { "name": "vacuumpump.co.id", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vadodesign.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "valesdigital.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "valoremtax.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vandeput.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vaphone.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vawebsite.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23013,7 +22880,6 @@
     { "name": "wohnbegleitung.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wolfram.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wollekorb.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "women-only.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wpsharks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wstx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wxh.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23048,7 +22914,6 @@
     { "name": "yubikey.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yubikey.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yubiking.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "yveslegendre.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yyc.city", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zahyantechnologies.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zamos.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23112,7 +22977,6 @@
     { "name": "379700.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "393335.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "3circlefunding.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "3cs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "3dcart.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "3dprintsondemand.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "3haeuserprojekt.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23127,7 +22991,6 @@
     { "name": "4freepress.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "4hvac.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "4plebs.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "4u.services", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "5c1fd0f31022cbc40af9f785847baaf9.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "64616e.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "6541166.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23182,10 +23045,8 @@
     { "name": "absolutewaterproofingsolutions.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ac-admin.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "academytv.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "acbrussels-used.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "accentthailand.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "accesloges.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "accessauto-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "acecerts.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "acerislaw.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "achterhoekseveiligheidsbeurs.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23225,15 +23086,12 @@
     { "name": "aheng.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ahlaejaba.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aicial.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "aiden.link", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aikido-club-limburg.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aiponne.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "air-shots.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "airdur.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "airicy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "airplayradio.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "airpurifierproductsonline.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "aiutodomestico.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aixxe.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ajarope.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ajces.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23290,7 +23148,6 @@
     { "name": "amorim.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "analgesia.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ancientcraft.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ancolies-andre.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andrerose.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andrespaz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andreundnina.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23320,7 +23177,6 @@
     { "name": "anon-next.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anongoth.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anothermilan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ansermet.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ansgar-sonntag.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ansgarsonntag.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anti-bible.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23331,7 +23187,6 @@
     { "name": "anymetrix.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anyon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aozora.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ap-swiss.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apertis.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apila.care", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aplikaceproandroid.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23367,13 +23222,10 @@
     { "name": "ashleakunowski.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ashleyadum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asperti.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "assguidesporrentruy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "astenretail.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "astronomie-fulda.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "asvsa.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "at-one.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "at1.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "atgoetschel.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "athena-bartholdi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "atkdesign.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "atlantareroof.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23387,15 +23239,12 @@
     { "name": "auri.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aurora-terraria.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aurorarecordings.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ausec.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "austinmobilemechanics.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "authinfo-bestellen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "author24.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "autoecolebudget.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "auxquatrevents.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "averen.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "avonlearningcampus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "avpres.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "avtoforex.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "awei.pub", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "awningsaboveus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23404,7 +23253,6 @@
     { "name": "axtux.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ayothemes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ayuru.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ayurveda-mantry.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "azia.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "b-b-law.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "b-pi.duckdns.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23425,7 +23273,6 @@
     { "name": "banri.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "baptistboard.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bariller.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "baripedia.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "baropkamp.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "barracuda.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "barracuda.com.tr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23442,11 +23289,9 @@
     { "name": "bayerstefan.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bayherbalist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bazisszoftver.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bbgeschenke.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bbimarketing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bbkworldwide.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bbrinck.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bcbulle.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bcpc-ccgpfcheminots.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beadare.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beagreenbean.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23469,9 +23314,6 @@
     { "name": "benjaminjurke.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "benleemd.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "benscobie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bernardcontainers.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bersierservices.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bersotavocats.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bertholdsson.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bertoliniodontoiatria.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "best10websitebuilders.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23503,7 +23345,6 @@
     { "name": "biohappiness.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biomax-mep.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biometrics.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "biosafe.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bioshine.com.sg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "birbaumer.li", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "birkengarten.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23541,7 +23382,6 @@
     { "name": "bluteklab.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blutopia.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bnty.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bobazar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bobep.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "boboates.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bogdanepureanu.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23577,11 +23417,7 @@
     { "name": "brahmins.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "braiampeguero.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brain-force.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brainserve.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brainserve.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brainserve.swiss", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brainvoyagermusic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brandcodestyle.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brasal.ma", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brasserie-mino.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brasspipedreams.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23597,7 +23433,6 @@
     { "name": "britishmeat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brodowski.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brompton-cocktail.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brouillard.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bruna-cdn.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bs-network.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bsdracing.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23609,7 +23444,6 @@
     { "name": "buckypaper.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "buildingcostestimators.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bulkingtime.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bulledair-savons.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bullettags.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bullterrier.nu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bunadarbankinn.is", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23620,7 +23454,6 @@
     { "name": "burrowingsec.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "buryat-mongol.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bushbaby.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "buxum-communication.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "buyerdocs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "byronr.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bytes.fyi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23638,7 +23471,6 @@
     { "name": "campula.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "campuswire.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "campwabashi.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "canada-tourisme.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "canadiantouristboard.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "candidasa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "candygirl.shop", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23662,7 +23494,6 @@
     { "name": "casburggraaf.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cashless.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "casinolegal.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cassimo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "castlecms.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catalin.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catbold.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23677,15 +23508,12 @@
     { "name": "ce-pimkie.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cebz.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cecilwalker.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cedriccassimo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cedriccassimo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ceebee.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cefak.org.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "centerpoint.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "centruvechisv.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cerber.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cert.or.id", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cgbassurances.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cgsshelper.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chaisystems.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chalker.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23705,7 +23533,6 @@
     { "name": "charp.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chaseganey.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chateau-de-lisle.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chateaudestrainchamps.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chatint.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chatu.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chatu.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23740,7 +23567,6 @@
     { "name": "cira.email", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "circ-logic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "citymoobel.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "citysportapp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cityworksonline.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "civillines.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cjtkfan.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23770,7 +23596,6 @@
     { "name": "cnetw.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "co-driversphoto.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "co-factor.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "coaching-impulse.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coalitionministries.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cobrax.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "code-digsite.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23820,7 +23645,6 @@
     { "name": "complt.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "computerassistance.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "computertal.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "concept-web.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conception.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "congz.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conservatoriesincornwall.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23842,7 +23666,6 @@
     { "name": "corsa-b.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cosplayer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "costow.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "counstellor.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "countrybrewer.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "course.pp.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "courseworkbank.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23857,17 +23680,12 @@
     { "name": "craftination.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crandall.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crdmendoza.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "crea-etc.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "crea-shops.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "creadstudy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "createursdefilms.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "creations-edita.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "creativesurvey.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "creators.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "credex.bg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "creepycraft.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "crepa.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "creusalp.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crisissurvivalspecialists.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cristianhares.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crizin.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23893,7 +23711,6 @@
     { "name": "curveprotect.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "customwritings.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cutimbo.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cve-le-carrousel.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cvninja.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cwrcoding.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cyber-computer.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23929,7 +23746,6 @@
     { "name": "darinkotter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "darkengine.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dartsdon.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "datalysis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "datovyaudit.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dave-pearce.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "davecardwell.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23947,12 +23763,10 @@
     { "name": "dcaracing.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dccraft.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "deanosplace.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "debie-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "debtprotectionreporting.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "decidetreatment.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "decodeanddestroy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "decormiernissanparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "decrousaz-ceramique.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "deepvision.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "defrax.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "defrax.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23975,9 +23789,6 @@
     { "name": "desmo.gg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "despotika.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "det-te.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "detecte-fuite.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "detecte.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "detectefuite.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "detroit-english.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dev-aegon.azurewebsites.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "develop.cool", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24024,7 +23835,6 @@
     { "name": "docabo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doclot.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "docxtemplater.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dofuspvp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dolorism.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "domain-ermittlung.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "domenicocatelli.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24071,7 +23881,6 @@
     { "name": "dylanknoll.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dynamicyou.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dynastic.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dynn.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dynorphin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dynorphins.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dysthymia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24090,8 +23899,6 @@
     { "name": "ebayinc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ebooksgratuits.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecelembrou.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecoccinelles.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecoccinelles.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecodigital.social", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecolala.my", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "econativa.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24164,8 +23971,6 @@
     { "name": "esh.ink", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eskdale.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "espo.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "espritrait.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "essencesdeprana.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etenendrinken.nu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etherpad.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etys.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24210,10 +24015,8 @@
     { "name": "expressmarket.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eyecandy.gr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eyeglasses.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "f1classement.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "f42.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "f5nu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fabriceleroux.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fabriko.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "facciadastile.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "facealacrise.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24222,9 +24025,7 @@
     { "name": "falkhusemann.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "falkus.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fame-agency.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "familiaperez.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "familyreal.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fanfareunion.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fanflow.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fantasticgardenersmelbourne.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fantastichandymanmelbourne.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24251,7 +24052,6 @@
     { "name": "fhsseniormens.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ficklenote.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fickweiler.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fiduciaire-ratio.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fifichachnil.paris", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "figura.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "file-cloud.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24293,25 +24093,19 @@
     { "name": "flyingrub.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fmapplication.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fminsight.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fmodoux.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "foairbus.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "foairbussas.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "focusministries1.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fokan.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fol.tf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "foodattitude.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "forcamp.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "forces.army", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foregroundweb.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foreverssl.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "formation-assureur.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "formation-mac.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "formersessalaries.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "forrestheller.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "forsyththeatre.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fortress.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "forty8creates.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "forvisualdesign.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foryourhealthybody.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fosdem.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fossgruppen.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24339,23 +24133,17 @@
     { "name": "freifunk-in-solingen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freifunk-lindlar.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freifunk-remscheid.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "frequencebanane.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freshdesigns.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freshmaza.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "friedrich-foto-art.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "friedsamphotography.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "frigi.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "frinkiac.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "front-end.dog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "frontline6.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "frugalmechanic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "frumious.fyi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fsckd.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fsvt.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fudanshi.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fuite.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fuitedeau.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fuites.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fukuoka-cityliner.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fulilingyu.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fuliwang.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24377,7 +24165,6 @@
     { "name": "gagnerplusdargent.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gainesvillegoneaustin.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gajas18.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "galeries.photo", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "galileanhome.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gameconservation.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gameparagon.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24426,7 +24213,6 @@
     { "name": "gibraltar-firma.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gigantism.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gigawattz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gilnet.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gina-architektur.design", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "giraffes.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "girsa.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24469,7 +24255,6 @@
     { "name": "gpws.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "graeber.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grandcapital.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "grandchene.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grantmorrison.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grapeintentions.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "greditsoft.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24484,7 +24269,6 @@
     { "name": "grillteller42.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "groenewoud.run", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grow-shop.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "growy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gruenprint.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gsmsecurity.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gt-mp.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24498,8 +24282,6 @@
     { "name": "gulfcoast-sandbox.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gulshankumar.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "guusvandewal.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gvi-timing.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gvitiming.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gymhero.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gympap.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gzitech.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24532,7 +24314,6 @@
     { "name": "hangtenseo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hanksservice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "happycarb.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "happydoq.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hapsfordmill.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hardesec.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hardforum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24543,7 +24324,6 @@
     { "name": "hashcat.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hashish.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hauntedhouserecords.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hauteslatitudes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "havenmoon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "haz.cat", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hcbj.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24592,7 +24372,6 @@
     { "name": "hire-a-coder.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hirefitness.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hirokilog.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "histoire-cite.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hiwiki.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hjartasmarta.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hjf-immobilien.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24604,21 +24383,17 @@
     { "name": "hodamakade.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hodgephotography.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hoeft-autolackierung.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hoewler.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "holebedeljek.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hollermann.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "holymolycasinos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "holywhite.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "homeandyarddetailing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "homecarpetcleaning.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "homeogenium.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hommeatoutfaire.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hongyd.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hoppyx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hostgigz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hostmodern.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hostserv.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hot-spa.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hottaro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "houdremont-la-courneuve.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "house-sparrow.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24632,7 +24407,6 @@
     { "name": "hppub.site", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hrk.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hrtraining.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "htsure.ma", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "httpsecured.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huangguancq.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huduser.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24651,7 +24425,6 @@
     { "name": "hundter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huntingdonlifesciences.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huwcbjones.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hydrante.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hylians.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hyperalgesia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hypersomnia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24678,7 +24451,6 @@
     { "name": "ilamparas.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ilamparas.com.ve", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ilazycat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "illambias.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "illuminationis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ilya.pp.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "im-design.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24713,7 +24485,6 @@
     { "name": "inmusrv.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "innerfence.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "innsalzachsingles.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "inondation.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inscript.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inst.mobi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "instinctive.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24765,7 +24536,6 @@
     { "name": "isuzupartscenter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "isv.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "itactiq.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ital-gamma.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "itamservices.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "itchimes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iteecafe.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24773,7 +24543,6 @@
     { "name": "itnews-bg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "itproject.guru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "itshka.rv.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "itsnotquitethehilton.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "itsupport-luzern.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ivfausland.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ivvl.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24893,7 +24662,6 @@
     { "name": "kermadec.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kernelpanics.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ketamine.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ketty-voyance.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kevinhill.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kevinlocke.name", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kewego.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24905,7 +24673,6 @@
     { "name": "kibibit.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kibriscicek.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kickasscanadians.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "kidsneversleep.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kiekko.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kiel-kind.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kikbb.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24962,8 +24729,6 @@
     { "name": "kyonagashima.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kyoto-tomoshibi.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kyunyuki.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "la-baldosa.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "la-maison.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "labande-annonce.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lacarpesaintaubinoise.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lachlan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24986,11 +24751,8 @@
     { "name": "lavaux.lv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lawnuk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ldcraft.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "le-creux-du-van.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "le-palantir.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "le-traiteur-parisien.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "le23.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "leap-it.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lebourgeo.is", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lechaudrondupertuis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leebiblestudycenter.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25001,7 +24763,6 @@
     { "name": "leebiblestudycentre.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leetgamers.asia", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leflibustier.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lefonddeloeil.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "legit.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "legymnase.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leipzig.photo", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25014,7 +24775,6 @@
     { "name": "lesancheslibres.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lespecialiste-pradelexcellence.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lessets-graphiques.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lesyndicat.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lets-go-acoustic.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lets.nu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lettland-firma.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25055,7 +24815,6 @@
     { "name": "loandolphin.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lobivia.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "logic8.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "loichot.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "loli.world", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lolicon.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "londongynaecologist.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25065,7 +24824,6 @@
     { "name": "loss.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lostkeys.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lou.lt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "louange-reconvilier.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "louisvillecarguys.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "loveandloyalty.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lovelive-anime.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25084,7 +24842,6 @@
     { "name": "lucy.science", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lukeistschuld.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lumi.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lunar6.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lunartail.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "luolikong.vip", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lutoma.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25238,7 +24995,6 @@
     { "name": "meterhost.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "methamphetamine.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "methylone.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "metropop.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mevo.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mflodin.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mgknet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25260,7 +25016,6 @@
     { "name": "miki.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mikro-inwestycje.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mikropixel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mil-spec.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "milesapart.dating", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "militarycarlot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "milkingit.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25272,7 +25027,6 @@
     { "name": "minecraft-server.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minecraftforum.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minepod.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mingwah.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mingyueli.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minigolf-reisinger.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minikidz.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25280,7 +25034,6 @@
     { "name": "mintosherbs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minube.co.cr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mipymesenlinea.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mirshak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "missguidedus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "missionsgemeinde.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "misssex.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25315,12 +25068,10 @@
     { "name": "mon-a-lisa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "moneychangersoftware.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "montagne-tendance.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "montpreveyres.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "montsaintaignan.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "moodzshop.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mopsuite.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "morbotron.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "morchino.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mordrum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mosin.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mosos.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25332,7 +25083,6 @@
     { "name": "mozillians.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mpe.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mpg.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mplanetphl.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mpy.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mr-anderson.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mscenter.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25362,7 +25112,6 @@
     { "name": "mwohlfarth.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mxawei.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "my-floor.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "myconsulting.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mycreativeartsconsulting.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mycrypnet.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mydaywebapp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25371,7 +25120,6 @@
     { "name": "mydjsongbook.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mydriversedge.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "myfantasysportstalk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "myfirenet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mygeotrip.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mygreatjob.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mygymer.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25388,7 +25136,6 @@
     { "name": "myrig.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "myrsa.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mysocialporn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "myswissmailaddress.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mywebinar.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "n2servers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "n3twork.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25402,13 +25149,10 @@
     { "name": "nanubo.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "napolinissanctparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "narko.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "narmos.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "naroska.name", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nastoletni.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nataliedawnhanson.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "natatorium.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nathaliebaron.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nathaliebaroncoaching.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nationalmap.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "natur-udvar.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "naturesorganichaven.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25456,7 +25200,6 @@
     { "name": "niva.synology.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nmadda.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nmnd.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "no-xice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nodejs.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "noellabo.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "noisebridge.social", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25485,7 +25228,6 @@
     { "name": "nuclearcrimes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nuclearcrimes1.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nulltime.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "numero1.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "numerossanos.com.ar", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "numis.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nuriacamaras.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25500,28 +25242,22 @@
     { "name": "oberhof.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oberhofdrinks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oberhofjuice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "objectif-terre.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "objekt-textil.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "observatory.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "obyvateleceska.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ocelot.help", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ocsigroup.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "odzyskaniedomeny.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ofcampuslausanne.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ofcss.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "off-the-clock.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "offroadeq.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "offshore-unternehmen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "offshorefirma-gruenden.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "offtherails.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "oge.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ohai.su", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "okburrito.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oldnews.news", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "olegs.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "olgiati.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "olympic-research.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "omanko.porn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ometepeislandinfo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "omf.link", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "omi-news.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25584,7 +25320,6 @@
     { "name": "ourwedding.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ovuscloud.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ownc.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "oxelie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ozonitron.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ozonitron.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ozonitron.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25593,14 +25328,12 @@
     { "name": "ozonytron.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "p-pc.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "p3ter.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pacifictilkin-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "packetapp.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "packetcrash.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pactf-flag-4boxdpa21ogonzkcrs9p.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pactocore.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paleosquawk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "palletflow.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "palli.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pammbook.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pan.tips", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panascais.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25608,7 +25341,6 @@
     { "name": "panpsychist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panzer72.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "papakatsu-life.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "parachute70.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paradise-engineer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paradise-engineers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paragon.edu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25625,13 +25357,10 @@
     { "name": "partsestore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "passpilot.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "passwd.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "patsyforyou.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "patsytoforyou.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paulbramhall.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paulbunyanmls.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paulus-foto.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pautadiaria.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pavando.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pawsr.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pback.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pbcknd.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25642,8 +25371,6 @@
     { "name": "peep.gq", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "peerless.ae", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "peippo.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pelopogrund.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pelopoplot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pepwaterproofing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pernatie.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "perniciousgames.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25658,20 +25385,15 @@
     { "name": "phasme-2016.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "phdsupply.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "philippa.cool", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "philipperoose.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "phillipgoldfarb.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "philonas.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "philosoftware.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "philux.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "photographe-reims.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "photomodelcasting.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "photon.sh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "phpliteadmin.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "picture.team", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pidatacenters.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pidjipi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pierrefv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pimpmyperf.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pinemountainnursery.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pinemountbaptistchurch.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pinimg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25680,7 +25402,6 @@
     { "name": "pizzafest.ddns.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pjbet.mg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pkschat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pl-cours.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "plan-immobilier.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "planetbeauty.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "planeteroliste.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25710,12 +25431,9 @@
     { "name": "poinsot.beer", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pokemondb.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pol-expo.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pole-emotion.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "polyfill.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "polytechecosystem.vc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pommedepain.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pompiers-martigny.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "poneypourtous.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ponychan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ponyfoo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "poopjournal.rocks", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25752,7 +25470,6 @@
     { "name": "prefix.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "preludes.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prepare-job-hunting.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "prestige-car-location.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pretachique.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prettygrouse.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prifo.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25845,7 +25562,6 @@
     { "name": "ranegroup.hosting", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ranking-deli.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ranos.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "raphaelcasazza.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rapidstone.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rareative.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rastreie.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25901,8 +25617,6 @@
     { "name": "resl20.servehttp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ressl.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "restaurantesimonetti.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "reto.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "retokromer.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "retro.sx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "revelaciones.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "review.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25918,7 +25632,6 @@
     { "name": "richardlugten.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "riddims.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rievo.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "righini.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rijnmondeg.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rile5.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rimcountrymuseum.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25972,11 +25685,9 @@
     { "name": "rteone.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rubyquincunx.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rudelune.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ruedirrenggli.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ruk.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rulu.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "run-forrest.run", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "runagain.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rushpoppershop.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rusi-ns.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rutiger.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26035,10 +25746,8 @@
     { "name": "schmelzle.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schmitt.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schmitt.ws", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "schnegg.name", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schnyder-werbung.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schsrch.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "schull.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schwarzwald-flirt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scintilla.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scintillating.stream", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26073,7 +25782,6 @@
     { "name": "seiler-bad.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seiryokuzai-ch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sektor.team", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "selected-properties.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "selfdefenserx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "selfishness.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "selfloath.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26103,7 +25811,6 @@
     { "name": "shadowsocks.wiki", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shadowsocksvpn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shadowsoks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "shakan.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shamka.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sharanyamunsi.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sharejoy.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26119,8 +25826,6 @@
     { "name": "shockercityservices.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shoemuse.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shoestringeventing.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "shred.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "shredoptics.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sidelka-tver.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sigmalux.sarl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sigsegv.run", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26183,7 +25888,6 @@
     { "name": "sklepsamsung.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sklotechnik.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sktan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "skynet233.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skyris.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "slash64.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "slash64.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26196,7 +25900,6 @@
     { "name": "slowgames.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "slvh.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "slwilde.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "slytech.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "smime.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "smksultanismail2.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "snapserv.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26210,8 +25913,6 @@
     { "name": "sociopathy.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sockscap64.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "softprayog.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "solacyre.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "solfegiator.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "solidwebnetworks.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "solvemethod.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "somali-derp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26230,13 +25931,11 @@
     { "name": "specialedesigns.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "speciesism.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spedition-transport-umzug.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "speechndraw.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spellcheck24.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spha.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sphinx.network", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spidermail.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spiders.org.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "spiga.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spinspin.wtf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spoketwist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spokonline.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26259,7 +25958,6 @@
     { "name": "starfeeling.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stastka.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "static-692b8c32.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "stationa.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "std-home-test.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "steef389.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "steelbea.ms", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26297,7 +25995,6 @@
     { "name": "supa.sexy", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "supercalorias.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "superklima.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "supern0va.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "support4server.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "supportericking.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "surasak.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26312,17 +26009,11 @@
     { "name": "swarlys-server.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swfloshatraining.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swipetv.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "swissfreshaircan.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "swisstranslate.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "swisstranslate.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swissxperts.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "syllogi.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sylve.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "system.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "system12.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "systemd.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "szyndler.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tac-volley.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tacoma-games.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tagesmutter-in-bilm.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tahosalodge.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26331,7 +26022,6 @@
     { "name": "takemoto-ped.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "talkitup.mx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "talkitup.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tango-ouest.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tangyue.date", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tarasecurity.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tarasecurity.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26341,8 +26031,6 @@
     { "name": "targimieszkaniowe.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tateesq.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tatsidou.gr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "taysonvodao.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tc-st-leonard.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tchoukball.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tdsb.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tdsb.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26375,12 +26063,10 @@
     { "name": "tengu.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tenthousandcoffees.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "teranacreative.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "teranga.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "terminalvelocity.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "terralimno.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "terralimno.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "terraluna.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "terresmagiques.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "teschenhausen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tessai.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "testgeomed.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26418,12 +26104,10 @@
     { "name": "thepiabo.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "theprivacysolution.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thequillmagazine.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thermique.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "theroyalmarinescharity.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thesearchnerds.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thethirdroad.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "theyearinpictures.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thiry-automobiles.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thiscloudiscrap.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thiswasalreadymyusername.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thm.vn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26453,7 +26137,6 @@
     { "name": "tinyhousefinance.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tipaki.gr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tiste.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "titusetcompagnies.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tjandpals.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tkacz.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tkts.cl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26485,7 +26168,6 @@
     { "name": "tostu.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "totalhomecareinc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "totalsystemcare.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tournevis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tourtransferitaly.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "touslesdrivers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tousproducteurs.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26541,12 +26223,10 @@
     { "name": "tunca.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tuner.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tupa-germania.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tupeuxpastest.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "turncircles.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tuto-craft.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tutoragency.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tutorio.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tuttimundi.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tuxpeliculas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tuxtimo.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tvc.red", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26573,12 +26253,8 @@
     { "name": "ukrnet.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ultimateanu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "unblocked.cam", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "unefuite.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "unga.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "unhu.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "unique-pathways.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "unique-pathways.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "uniquepathways.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "unite-ka.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "unitedpsychological.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "universal-happiness.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26604,13 +26280,10 @@
     { "name": "valenhub.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "valenhub.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "valenscaelum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "valentinritz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "validatis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vanajahosting.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vandenbroeck-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vanderkrieken.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vanessabalibridal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vanhoudt-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vapor.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "varta.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vaskulitis-info.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26627,17 +26300,14 @@
     { "name": "venoom.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "verliebt-in-bw.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "verliebt-in-niedersachsen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "verrerie-mousseline.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "versagercloud.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vertebrates.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vfn-nrw.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vhummel.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vidbooster.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "videorullen.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "videoueberwachung-set.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vider.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "viekelis.lt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "viemontante.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vierpluseins.wtf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vieux.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vigenebio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26645,7 +26315,6 @@
     { "name": "villainsclothing.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vilog.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vinolli.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vinsetchampagne.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vintagecaskandbarrel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vintagejeeps.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "viral8.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26663,7 +26332,6 @@
     { "name": "voice-of-design.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "void-zero.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "volcanconcretos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vonauw.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vonniehudson.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vorderklier.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vorkbaard.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26689,7 +26357,6 @@
     { "name": "walksedona.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wallabag.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wallabies.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "walnutis.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "walruses.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wanashi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wangjiatun.com.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26774,7 +26441,6 @@
     { "name": "writereditor.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wsdcap.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wssv.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wstudio.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wug.news", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wwgc2011.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "www-507.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26821,7 +26487,6 @@
     { "name": "ycm2.wtf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yeesker.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yemekbaz.az", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "yep-pro.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yepbitcoin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yfengs.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yffengshi.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26873,7 +26538,6 @@
     { "name": "zinniamay.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zinoui.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zip.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "zivmergers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zixo.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zoners.si", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zooish.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26991,7 +26655,6 @@
     { "name": "adzuna.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adamwallington.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "af-internet.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "2stv.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "acpinformatique.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aebian.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abrakidabra.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27012,7 +26675,6 @@
     { "name": "8azino777.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adentalsolution.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alaxyjewellers.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "acperu.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "agreor.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "afavre.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "allscammers.exposed", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27026,8 +26688,6 @@
     { "name": "aip-marine.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "akul.co.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alexander-beck.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "achalay.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "acoustique-tardy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "allplayer.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aintevenmad.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "akoch.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27035,11 +26695,9 @@
     { "name": "alfaponny.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "3dmusiclab.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andrewdavidwong.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "agalliasis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alpha.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "americanmediainstitute.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alex97000.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "alainmargot.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anime1video.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anime1.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andschwa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27050,7 +26708,6 @@
     { "name": "anedot.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "allangirvan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alexandre-blond.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "agamsecurity.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "angusmak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amiciidogrescue.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alleskomtgoed.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27073,10 +26730,8 @@
     { "name": "apiary.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apiary.supplies", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "annedaniels.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "amicalecanyon.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apiary.supply", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apis.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ambholding-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "altstipendiaten.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amicsdelbus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "angeloroberto.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27090,10 +26745,8 @@
     { "name": "apartmentkroatien.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "archsec.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "antoinemary.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "alize-theatre.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alpinepubliclibrary.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "albanien.guide", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "agsb.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andreasanti.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ankwanoma.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amoozesh98.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27123,8 +26776,6 @@
     { "name": "arresttracker.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ajnasz.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anipassion.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "api-connect.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "animationsmusicales.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "antama.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "armyofbane.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apm.com.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27148,17 +26799,13 @@
     { "name": "asuka.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "artansoft.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "au2pb.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ar-informatique.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "appel-aide.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asialeonding.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "atzenchefin.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "airportlimototoronto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "anons.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arnaudminable.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aussieservicedown.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "aquadonis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "astaninki.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "aquabio.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asanger.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "armil.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "assumptionpj.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27175,12 +26822,9 @@
     { "name": "awsmdev.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aspatrimoine.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "australianfreebets.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "arnoldkontz-occasions.lu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "avspot.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "art-et-culture.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andrea-m.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "audiolibri.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ataton.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "auvernet.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "autos-retro-plaisir.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "360live.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27190,7 +26834,6 @@
     { "name": "avnet.ws", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "assistance-personnes-agees.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "azu-l.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "atelier-coiffure.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "babeleo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "autoxy.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bandarifamily.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27204,12 +26847,10 @@
     { "name": "atracaosexshop.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "avtogara-isperih.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alter-news.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "artdeco-photo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "babycamapp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "austromorph.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aveapps.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "avedesk.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "atds.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ateliernihongo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bangdream.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "autostop-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27217,8 +26858,6 @@
     { "name": "babai.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "antoinemary.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ax25.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "b-services.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "avvcorda.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "barnrats.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bananensap.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "b-ticket.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27226,8 +26865,6 @@
     { "name": "balcaonet.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "b4z.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "avid.blue", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "atraverscugy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "autoterminus-used.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "awen.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "barlotta.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "audiorental.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27235,13 +26872,8 @@
     { "name": "answers-online.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "baumannfabrice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "battleboxx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "autotechschool.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "baby-digne.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bearingworks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bdenzer.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "backsideverbier.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "baladecommune.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "balade-commune.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beekeeper.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beekeeper.clothing", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beekeeper.supplies", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27258,10 +26890,8 @@
     { "name": "aurora-multimedia.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "balidesignshop.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "around-the-blog.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bariseau-mottrie.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "banned-bitches.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "averam.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "baciu.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beautyevent.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aqua-fotowelt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bc-diffusion.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27274,7 +26904,6 @@
     { "name": "bernhard-seidenspinner.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bedandbreakfast.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bedandbreakfasteuropa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bda-boulevarddesairs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "belewpictures.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bichonfrise.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bghost.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27284,17 +26913,14 @@
     { "name": "berlin-flirt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "berthelier.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "better.fyi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "beaute-eternelle.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bentphotos.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biaggeo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "arfad.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beraru.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "birdbrowser.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bestwarezone.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biletua.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bedouille.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biletru.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "belien-tweedehandswagens.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bikkelbroeders.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "binaryappdev.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bikkelbroeders.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27303,16 +26929,12 @@
     { "name": "bibliotekarien.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beacinsight.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bestbyte.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "becs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bernhardkau.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "belastingdienst-in-beeld.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bison.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "batipresta.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blenderrecipereviews.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biblioblog.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "belloy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bladesmith.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "belloy.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bestschools.top", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blizhost.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bijoux.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27324,7 +26946,6 @@
     { "name": "bitpoll.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blackhillsinfosec.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bakersafari.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "b-cyclesshop.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bilalkilic.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bitsync.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "baugemeinschaftbernstein.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27337,7 +26958,6 @@
     { "name": "bookingready.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bookmakersfreebets.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bitwrought.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "beexfit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bnin.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bohyn.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bodyconshop.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27347,9 +26967,6 @@
     { "name": "batolis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bradypatterson.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blumenwiese.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bioligo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "biogecho.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "biogecho.swiss", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "booox.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "boschee.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bornfiber.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27365,13 +26982,10 @@
     { "name": "blakecoin.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bondarenko.dn.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brettelliff.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bonnant-associes.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aprpullmanportermuseum.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brianfoshee.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "braeunlich-gmbh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bress.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bouckaert-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "boscoyacht.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bls-fiduciaire.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bsidesf.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biologis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27382,11 +26996,9 @@
     { "name": "brightonchilli.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "botserver.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "boutiquedecanetas.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bonnant-partners.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brrd.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bubhub.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brainfpv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "boimmobilier.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brewsouth.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "btserv.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "broerweb.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27411,8 +27023,6 @@
     { "name": "byji.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "buyessays.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "byatte.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bretzner.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brainball.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "c2o-library.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "burckardtnet.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bronetb2b.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27420,7 +27030,6 @@
     { "name": "by1898.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "boyan.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "buttercupstraining.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bm-immo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "butarque.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ca5.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "caliderumba.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27436,8 +27045,6 @@
     { "name": "caferagazzi.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bytecode.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bodyworkbymichael.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "businesscentermarin.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cadetsge.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "calleveryday.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "camelservers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "caerostris.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27447,8 +27054,6 @@
     { "name": "cardelmar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "buronwater.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cashmaxtexas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brave-foods.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brave-foods.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catchersgear.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cata.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "carre-lutz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27474,7 +27079,6 @@
     { "name": "cafefresco.pe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cfneia.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "celigo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cdda.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ccv-deutschland.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cc-brantomois.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catburton.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27496,24 +27100,17 @@
     { "name": "cheapessay.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catalogoreina.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cheah.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "celiendev.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chordso.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "charitylog.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "celuliteonline.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "centreoeil.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "c3-compose.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chaletpierrot.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chazalet.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chronic101.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "casbia.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "churchlinkpro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catharisme.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catharisme.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chemicalguys-ruhrpott.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chinwag.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "catharisme.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cheapestgamecards.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chevymotor-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chrispstreet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chesspoint.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cityoftitans.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27566,30 +27163,23 @@
     { "name": "coincealed.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chocolat-suisse.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cloudfren.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cie-theatre-montfaucon.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cncbazar365.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conservados.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chsh.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cielbleu.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comparesoft.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cloppenburg-automobil.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "clubscannan.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cloppenburg-autmobil.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conmedapps.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "colasjourdain.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chiropratique-neuchatel.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coolbutbroken.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "collard.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chirosphere.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cocquyt-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cloud2go.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "capachitos.cl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chiro-neuchatel.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "continuation.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comyuno.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cloud.bugatti", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coastline.net.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chiropraticien-neuchatel.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "copycrafter.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coorpacademy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "computernetwerkwestland.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27606,29 +27196,23 @@
     { "name": "controleer-maar-een-ander.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cosmofunnel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cptoon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "clindoeilmontagne.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cestunmetier.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chaifeng.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conceptatelier.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "corlinde.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "claudia-urio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comunidadmontepinar.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cpcheats.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cometonovascotia.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "consejosdenutricion.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conkret.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cncrans.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "condroz-motors.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comefollowme2016.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "connectmy.car", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ctj.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coptic-treasures.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "compagniemartin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crossfunctional.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "curiouscat.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cosmiatria.pe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conkret.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "colson-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conkret.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "colarelli.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "conformist.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27639,7 +27223,6 @@
     { "name": "creeks-coworking.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "costa-rica-reisen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crunchy.rocks", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "congobunkering.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cuongthach.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "currynissanmaparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "customwritingservice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27655,11 +27238,9 @@
     { "name": "curvesandwords.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coroasdefloresonline.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crox.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cqn.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptofan.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "d3njjcbhbojbot.cloudfront.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cypressinheritancesaga.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "counter-team.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cruikshank.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ctnguyen.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ctnguyen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27679,16 +27260,13 @@
     { "name": "cryptography.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "create-ls.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptology.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "csinterstargeneve.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "daisuki.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "davetempleton.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "d1ves.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cotonmusic.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "danwin1210.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberspace.today", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "darookee.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crawl.report", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cordeydesign.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "daktarisys.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cspeti.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "datacubed.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27699,9 +27277,7 @@
     { "name": "darkanzali.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "darylcumbo.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cutner.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cospol.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cyumus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "darioackermann.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dallaslu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cs2016.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "defender-pro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27717,7 +27293,6 @@
     { "name": "cutelariafiveladeouro.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dcw.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dctxf.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "daoro.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "danotage.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dbyz.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "deniszczuk.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27726,9 +27301,7 @@
     { "name": "dawnbringer.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "demo-server.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dermot.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dchatelain.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "d-academia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "davo-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "deepsouthsounds.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "d-parts24.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dennisvandenbos.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27736,12 +27309,10 @@
     { "name": "danskringsporta.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "defxing.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "depaddestoeltjes.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "decock-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "diamondpkg.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dental-misaki.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dhaynes.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "demotivatorbi.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "delbecqvo.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "diabolic.chat", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "decofire.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "depone.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27749,14 +27320,11 @@
     { "name": "destileria.net.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dalmatiersheusden.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "devalps.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "depotter-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "deliandiver.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "desktopfx.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dc-occasies.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "developersclub.website", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "depth-co.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "diccionarioabierto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "coteries.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "digitaldatacenter.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dicionariopopular.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "datumou-osusume.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27764,14 +27332,10 @@
     { "name": "diwei.vip", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "digitaldeli.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dissertationhelp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "designskin.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "degata.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "demeyere-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dhl-smart.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "devillers-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "digitalewelten.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "digitaltechnologies.ltd.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dermatologie-morges.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "diskbit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "discha.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dieselanimals.lt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27811,13 +27375,11 @@
     { "name": "domythesis.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "djangogolf.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dewapress.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "disrupters.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dm4productions.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "drdipilla.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doujin.nagoya", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "disinisharing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dog-blum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dessinemoilademocratie.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "disadattamentolavorativo.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doomoo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doop.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27863,7 +27425,6 @@
     { "name": "dsancomics.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dormebebe.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doveholesband.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "do-prod.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dullapp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "droidwave.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ebertek.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27887,7 +27448,6 @@
     { "name": "digitalcraftmarketing.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dtdsh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eeetrust.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "duriaux-dentiste.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elite-box.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elhamadimi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "divvyradio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27922,7 +27482,6 @@
     { "name": "elliff.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dovenzorgmalawi.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "efa-football.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dvnatura.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "emil.click", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elektro-roth.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eolme.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27935,7 +27494,6 @@
     { "name": "eickhof.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "envoyglobal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eickhof.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecoledusabbat.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "epiphyte.network", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eigenbubi.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elternverein-utzenstorf.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27963,11 +27521,7 @@
     { "name": "elodieclerc.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "essenceofvitalitydetox.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "essayforsale.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "emivauthey.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eltern-verein.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "economies.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "emond-usedcars.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ellevit.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dynts.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etaoinwu.win", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "enemiesoflight.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27985,22 +27539,18 @@
     { "name": "eworksmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "exeintel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evolutionpets.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "energie-sante.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "example.wf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evilarmy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "epistas.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etienne.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "epossystems.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "echoworld.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ethiobaba.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ethicsburg.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evertonarentwe.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "esquirou-trieves.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evrica.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "expowerhps.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eron.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "essentiel-physique.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "entrecieletpierres.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ergovitanet.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "esteticanorte.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etangs-magazine.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28011,11 +27561,8 @@
     { "name": "exmoe.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "exploravacations.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "exembit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "etoile-usedcars.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "etre-soi.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eth-faucet.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "falconwiz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "essteebee.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faberusa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "extradesktops.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evodation.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28029,7 +27576,6 @@
     { "name": "ezwritingservice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faithmissionaries.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "efag.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "etudesbibliques.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "exceed.global", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fantasticcleaners.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecococon.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28043,10 +27589,8 @@
     { "name": "euroalter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fads-center.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faxite.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "etudesbibliques.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fabienne-roux.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faluninfo.ba", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "etudesbibliques.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "felixbarta.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fermanacuratampaparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fireboxfood.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28078,7 +27622,6 @@
     { "name": "filoitoupediou.gr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "finvantage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "followback.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "florianschmitt.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faraslot8.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fassi-sport.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faraslot8.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28096,7 +27639,6 @@
     { "name": "fougner.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eswap.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "filo.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fini-de-jouer.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "flagshop.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fonseguin.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fidelis-it.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28135,13 +27677,10 @@
     { "name": "franklinhua.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "friller.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fs-fitness.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "feuetgloire.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "format-paysage.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freergform.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fussell.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gafunds.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "futrou.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "forge-goerger.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gadabit.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "funniestclip.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fsck.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28154,7 +27693,6 @@
     { "name": "frino.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gdb-tutorial.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "friezy.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "francoislepage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "funnybikini.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fukakukeiba.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fid-elite.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28165,11 +27703,9 @@
     { "name": "fokan.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fsck.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foerster-kunststoff.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "francois-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ftgho.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fwest98.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "geh.li", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fuelingyourdreams.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "espigol.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "g-i-s.vn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freifamily.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28178,12 +27714,9 @@
     { "name": "fusa-miyamoto.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gdgrzeszow.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fussball-xxl.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "forward-fly-fishing.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fit-4u.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gemsoftheworld.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "geekles.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "geass.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "g3dev.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gamenerd.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "genesismachina.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gginin.today", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28191,9 +27724,7 @@
     { "name": "gethow.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gestormensajeria.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "erf-neuilly.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "frtrains.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "getyourphix.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gachter.name", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gentoo-blog.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "georgebrighton.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "george-brighton.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28204,9 +27735,7 @@
     { "name": "geldimblick.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "getmerch.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gamblersgaming.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gegeco.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "getfilterlive.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fumerolles.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "globalelite.black", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gleanview.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "getyeflask.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28229,11 +27758,9 @@
     { "name": "gmx.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "geektopia.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gmx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "geoscope.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gmx.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ginniemae.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gelis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gapfa.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gottfridsberg.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fysiovdberg.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "glutenfreelife.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28243,15 +27770,12 @@
     { "name": "grande.coffee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gigin.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grayhatter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gentianes.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "festival.house", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "galak.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gfxbench.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "goldfelt.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "givastar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gpalabs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gendundrupa.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ginionusedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "goup.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "grayson.sh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "global.hr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28259,14 +27783,10 @@
     { "name": "gmanukyan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gronau-it-cloud-computing.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "goup.com.tr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gillesmorelle.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gagygnole.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freesourcestl.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gmat.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gioielleriamolena.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "global-office.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gregoryrealestategroup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "geneve-naturisme.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gilmoreid.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "govtjobs.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gmx.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28321,7 +27841,6 @@
     { "name": "guichet-entreprises.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "globalnewsdaily.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hdguru.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gregoirow.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "healthlabs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "haschrebellen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "harmfarm.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28335,7 +27854,6 @@
     { "name": "gvpt.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hanashi.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hexapt.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "groupghistelinck-cars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "heroicpixel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "helenaknowledge.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "heinzelmann.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28410,7 +27928,6 @@
     { "name": "hydrodipcenter.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "home-cloud.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "i1place.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hugolynx.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "horodance.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hvdbox.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "i-geld.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28464,16 +27981,13 @@
     { "name": "immobiza.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "innovativebuildingsolutions.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "holidayincotswolds.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "igimusic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "icsadviseurs.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ingalabs.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "internetbugbounty.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "indecipherable.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ingjobs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "indogermantrade.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "idc-business.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "industrybazar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "huguesditciles.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "investigazionimoretti.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ifan.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ibrom.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28488,14 +28002,11 @@
     { "name": "instagramtweet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "int-ext-design.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "innolabfribourg.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "imagerive.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ifosep.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inventtheworld.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "irugs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ingresscode.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inlink.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "invinsec.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hockeymotion.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "istheservicedown.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "istheservicedowncanada.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "istheservicedown.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28529,7 +28040,6 @@
     { "name": "insolent.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jaberg-rutschi.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "innwan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "inventaire.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iteha.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "its-future.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jhaveri.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28541,8 +28051,6 @@
     { "name": "janking.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "javilacat.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jamesforman.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jaguarlandrover-asse.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jaguarlandrover-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jakobkrigovsky.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "itpro-mg.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jimenacocina.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28556,7 +28064,6 @@
     { "name": "jmarciniak.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "johnrockefeller.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "impacter.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "investir.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jasonmili.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jardinderline.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jardin-exotique-rennes.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28565,7 +28072,6 @@
     { "name": "joelmunch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "josefottosson.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jmbelloteau.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jbs-jardins.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jobsuchmaschine.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jobs4sales.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jelena-adeli.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28587,13 +28093,11 @@
     { "name": "jumpinchat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jordikroon.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jsbentertainment.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "izuba.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jongcs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jasonradin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jvn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jungleducks.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "julianickel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "joi-dhl.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "juliawebber.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jornalalerta.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joyjohnston.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28601,12 +28105,10 @@
     { "name": "johnfulgenzi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "just-pools.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jskoelliken.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jasongerber.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kakolightingmuseum.or.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kasnoffskinclinic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jyggen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kaydan.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "je-vends.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "keb.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "k1cp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jonathanmassacand.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28639,7 +28141,6 @@
     { "name": "kazuhirohigashi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "karlic.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kanscooking.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "k-pture.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jsjyhzy.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jouetspetitechanson.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "keishiando.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28654,7 +28155,6 @@
     { "name": "kiehls.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kelm.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "keezin.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "julianskitchen.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kolin.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kanuvu.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "knegten-agilis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28707,7 +28207,6 @@
     { "name": "kteen.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "la-serendipite.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lafayette-rushford.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "kode.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ladylucks.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kuko-crews.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "krag.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28744,10 +28243,8 @@
     { "name": "lenyip.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "launchpad-app2.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lernerspersonalinjury.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lapassiondutrading.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "labella-umbrella.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lenyip.works", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "laled.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "latabledebry.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kiwiplace.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "klaim.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28773,22 +28270,18 @@
     { "name": "lesquatredauphins.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "limeburst.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lilygreen.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "legendesdechine.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "linky.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lichess4545.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lichess4545.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "likenosis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lingeriesilhouette.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lightning-ashe.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lapotagere.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "le-page.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lidl-holidays.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leponton-lorient.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "laemen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "librairie-asie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jordanstrustcompany.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "locker3.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "latitudesign.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lidl-shop.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "locker.email", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lithianissaneugeneparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28797,9 +28290,6 @@
     { "name": "laforetenchantee.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lezard-com.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lexxyn.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lacledor.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "laclefdor.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "les-ateliers-de-melineo.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leavesofchangeweekly.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jwolt-lx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "libdeer.so", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28816,7 +28306,6 @@
     { "name": "limules.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kotausaha.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "linuxiuvat.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lesberger.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "linearaudio.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lostarq.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lissabon.guide", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28849,7 +28338,6 @@
     { "name": "luk.earth", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lovetravel360.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "loyaleco.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lausannelovers.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lodgesdureynou.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lordofthebrick.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lucid-light.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28885,15 +28373,12 @@
     { "name": "mailflank.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maartenprovo.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "makeshiftco.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mac-i-tea.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "malasuk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maedchenflohmarkt.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "littlepincha.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "manipulatedtme.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "le-blog.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "m-orthodontic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maedchenflohmarkt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "loveysa.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marcianoandtopazio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marakovits.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maliar.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28902,15 +28387,11 @@
     { "name": "massagecupping.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marshmallow.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "madbin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "macnetwork.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mastichor.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lune-indigo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "macnetwork.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "markus-ullmann.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mainston.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maroc-bivouac.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "markllego.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "macnetwork.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marqueswines.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "main-unit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mckinleytk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28918,11 +28399,9 @@
     { "name": "maleexcel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marcelparra.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "massage-vitalite.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lyonelkaufmann.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mattisam.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marykshoup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "magazinedabeleza.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lovesmagical.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mannheimbloggt.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "makenaiyo-fx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mckenry.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28932,12 +28411,10 @@
     { "name": "ma-plancha.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "me-dc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "me-center.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "marin-business-center.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "martingansler.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "me-groups.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mazda626.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "melnessgroup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "marinbusinesscenter.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maxims-travel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "manipil.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mathers.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28958,8 +28435,6 @@
     { "name": "mbdrogenbos-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mbwemmel-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mgsisk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mbcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "maxipcalls.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "metin2sepeti.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mercanix.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mhatlaw.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28982,7 +28457,6 @@
     { "name": "microblading.pe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mikegarnett.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "medifab.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "marin-tullet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minebier.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mgiay.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mfrsgb45.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29037,10 +28511,8 @@
     { "name": "moppeleinhorn.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mojefilmy.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mrca-sharp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "moncoach.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mosaique-lachenaie.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "migueldominguez.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mobilisation-generale.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "modcasts.video", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "multipleservers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "moritztremmel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29048,7 +28520,6 @@
     { "name": "mizipack.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mindbodytherapymn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mrbmafrica.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mieuxgrandir.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mstd.tokyo", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mindercasso.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mrstat.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29088,7 +28559,6 @@
     { "name": "mycamda.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "music-is-my-life.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "myrent.quebec", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mycofairtrade.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "munirajiwa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "myoptumhealthcomplexmedical.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mariage-photo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29097,7 +28567,6 @@
     { "name": "muenchberger.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mystorymonster.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mtfgnettoyage.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mullens-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nahura.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "moderatorenpool.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "my-ebook.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29118,7 +28587,6 @@
     { "name": "myrig.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mzorn.photography", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nbtparse.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "moha-swiss.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "moudicat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "netki.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "napcae.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29128,7 +28596,6 @@
     { "name": "nedwave.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "newbownerton.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mysteryblog.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "monbudget.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nacin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "newsquantified.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nalukfitness.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29138,7 +28605,6 @@
     { "name": "nehoupat.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "netde.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nesolabs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nailattitude.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "musikverein-elten.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ndcpolipak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "neostralis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29147,7 +28613,6 @@
     { "name": "nbur.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "newaccess.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nicolasiung.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mysterymind.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "night2stay.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nebulae.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nexgeneration-solutions.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29179,7 +28644,6 @@
     { "name": "nexus-vienna.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "myspicer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nodeselect.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mitaines.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nirvanashop.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nipe-systems.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nihon-no-sake.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29202,15 +28666,12 @@
     { "name": "nsfw-story.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nopaste.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "notboring.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nativs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "needstyle.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "menanwc.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "northernhamsterclub.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nordinfo.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nowcost.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "newguidance.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "munch.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nanarose.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "noudjalink.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "niceguyit.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nofrillsdns.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29219,7 +28680,6 @@
     { "name": "nystudio107.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nothing.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "officemovepro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "niesstar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nucleuscore.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "newsmotor.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nodesturut.cl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29227,7 +28687,6 @@
     { "name": "nullpointer.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nuel.cl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nsbfalconacademy.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nikimix.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oklahomanotepro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "netbows.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nlrb.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29266,20 +28725,16 @@
     { "name": "omertabeyond.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "netbows.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "natuterra.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "numerik-games.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "overstockpromote.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "olivlabs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "opengateway.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "osakeannit.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nxinfo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oficinadocelular.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "openstem.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "novelinglife.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "orians.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oswalds.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "owennelson.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paizinhovirgula.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "oftamedic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "owapi.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "p3.marketing", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paavolastudio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29295,14 +28750,12 @@
     { "name": "ofo2.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pasadenasandwichcompany.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "padrepio.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "oneclic.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "papersmart.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paperwritinghelp.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onnee.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panascais.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "papayame.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panascais.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "olasouris.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "passwordscon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panascais.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panascais.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29336,7 +28789,6 @@
     { "name": "pdfconvert.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "noc.wang", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "party-kneipe-bar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "paf-events.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pawelnazaruk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paranoidpenguin.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "peterjohnson.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29366,7 +28818,6 @@
     { "name": "peraparker.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paulomonteiro.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pinterest.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "olizeite.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "piccirello.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pinterest.engineering", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "peterandjoelle.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29387,7 +28838,6 @@
     { "name": "pinterest.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pivotanimation.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pinkapple.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "parentheseardenne.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pirateproxy.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pikmy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "phoenicis.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29440,16 +28890,13 @@
     { "name": "plus-u.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "plasvilledescartaveis.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "plumpie.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pharmacieplusfm.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "proctorio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pornomens.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "potatopro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pbosquet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pardnoy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "plutopia.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "poeg.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "poseidonwaterproofing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pleine-conscience.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prac.to", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "post.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "plumnet.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29465,7 +28912,6 @@
     { "name": "projectunity.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "phcimages.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pornohub.su", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ploofer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pmconference.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "proovn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "project.supply", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29474,7 +28920,6 @@
     { "name": "procharter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "primaconsulting.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "proxyportal.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "plantastique.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "power-fit.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "profitablewebprojects.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "programsupport300procent.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29483,11 +28928,8 @@
     { "name": "privacyscore.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "propepper.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prodinger.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "plantastique.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "poleacademie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "proactive.run", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "productpeo.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "planetbreath.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qbnt.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "puentes.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "py-amf.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29495,14 +28937,10 @@
     { "name": "prestigerepairs.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "premiumwebdesign.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ptrl.ws", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "prevenir.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "presses.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "protonvpn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "psychic-healer-mariya-i-petrova-boyankinska-b-borovan-bg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prepaid-cards.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "polizeiwallis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pythonic.training", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "procert.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "queensrdapartments.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pieterbos.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "quickandroid.tools", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29524,13 +28962,11 @@
     { "name": "pulsedursley.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prestigesigns.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "puzzlepoint.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "psyao.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rabota-x.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "reath.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qiannews.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "redeemingbeautyminerals.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "raghavdua.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "puissancemac.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rcraigmurphy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "realraghavgupta.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rakugokai.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29552,7 +28988,6 @@
     { "name": "propagandablog.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "realworldholidays.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rdyrda.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "query-massage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qrcontagion.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "redshiftlabs.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rebelz.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29607,7 +29042,6 @@
     { "name": "revapost.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rigabeerbike.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "prague-swim.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rgcomportement.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "richardson.systems", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "reimann.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "retetenoi.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29660,16 +29094,13 @@
     { "name": "said.my.id", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "s3n.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "runklesecurity.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rrg-partner.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "robertrijnders.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "samaritan.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sagarhandicraft.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rogersaam.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rtvi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ruurdboomsma.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rogersremovals.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rage-overload.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "roulinfo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pragueswim.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "richardson.software", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sanskritiyoga.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29681,8 +29112,6 @@
     { "name": "s4tips.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rummel-platz.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "savingbytes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rvnoel.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rrdesignsuisse.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "salonestella.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sbobetfun.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sanatrans.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29692,10 +29121,8 @@
     { "name": "sandraindenfotografie.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "regily.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sayura.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "risaphuketproperty.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rychlikoderi.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rnt.cl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "salensmotors-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rucnerobene.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "savisasolutions.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sanatorii-sverdlovskoy-oblasti.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29704,7 +29131,6 @@
     { "name": "sanitairwinkel.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "redperegrine.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schippendale.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "santenatureetcie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schmaeh-coaching.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schraugerrun.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sanitairwinkel.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29735,7 +29161,6 @@
     { "name": "redcomet.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sentinelproject.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scm-2017.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sapprendre.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sebastian-kraus.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schnell-abnehmen.tips", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seo.tl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29754,7 +29179,6 @@
     { "name": "serbien.guide", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "semacode.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "servpanel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sdvigpress.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "serviceboss.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "securocloud.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seoprovider.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29781,16 +29205,13 @@
     { "name": "shopsouthafrican.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sfhobbies.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "securityarena.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sgtt.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "santorinibbs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sharezen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sha2017.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "santevie.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shaharyaranjum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seo-portal.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shieldofachilles.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shichibukai.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "schwarzhenri.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sexshopnet.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sheying.tm", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shining.gifts", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29823,13 +29244,11 @@
     { "name": "sirena.co.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "singles-berlin.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skinpwrd.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sfo-fog.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "slik.ai", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "single-in-stuttgart.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sjdaws.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shoshin-aikido.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "silvergoldbull.mw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sigismonda.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skylgenet.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "smartwritingservice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skatingchina.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29842,7 +29261,6 @@
     { "name": "sl0.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scistarter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "silvergoldbull.cm", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "smutek.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "snap.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "securoswiss.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "silvergoldbull.ws", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29874,13 +29292,11 @@
     { "name": "songsmp3.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "smit.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sgtsnookums.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "smartandcom.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "southcoastswords.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seanstrout.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "softclean.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "silvergoldbull.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sodafilm.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "skyloisirs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sluplift.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "some.rip", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sm2016.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29960,10 +29376,8 @@
     { "name": "sportscollection.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stratmann-b.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spisoggrin.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "souris.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "strozik.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "syneart.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sterchi-fromages.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "strila.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sportovnidum.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sukrie.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29978,7 +29392,6 @@
     { "name": "supercreepsvideo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stylewish.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sja-se-training.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "stadm.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "survivebox.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stlukesbrandon.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sylvaindurand.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29989,14 +29402,12 @@
     { "name": "systoolbox.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tam7t.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tattvaayoga.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "studiovaud.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tdsbhack.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "szybkiebieganie.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sysadm.guru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tapestries.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tbonejs.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tastystakes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "soinvett.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "talon.rip", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "svenskaservern.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tankfreunde.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30004,7 +29415,6 @@
     { "name": "tadtadya.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tdsbhack.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "student-eshop.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "stringvox.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "student-eshop.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tdsbhack.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tajper.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30022,10 +29432,8 @@
     { "name": "teamupturn.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tabithawebb.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tabino.top", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "symbiose-immobilier.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "snafarms.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "teddybradford.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "swisselement365.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "taartenfeesies.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "suzi3d.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tatiloley.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30046,7 +29454,6 @@
     { "name": "spillersfamily.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tantei100.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tenerife-villas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "taxicollectif.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "talkreal.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "taniku-succulent.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "textpedia.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30054,23 +29461,16 @@
     { "name": "tenberg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tandblekningidag.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tele-online.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "taxiscollectifs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "taxi-collectif.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "taxi-chamonix.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "taxis-collectifs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thebasementguys.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "symbiose-com.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tenseapp.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thailandpharmacy.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "takeitoffline.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "telecharger-open-office.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "telecharger-winrar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "the-zenti.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "symb.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thebrightons.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "theebookkeepers.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thajskyraj.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "symbiosecom.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thefbstalker.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tf2calculator.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thepathsofdiscovery.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30097,7 +29497,6 @@
     { "name": "sundanceusa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thecsw.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thunderkeys.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thalmann.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ticketsource.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ticketsource.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tillberg.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30111,7 +29510,6 @@
     { "name": "thunderfield-boat.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ti-js.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "therumfordcitizen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thierry-daellenbach.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tiew.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thomas-ferney.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thgros.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30120,14 +29518,11 @@
     { "name": "todaciencia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thinkswap.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tibovanheule.site", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thecherryship.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tele-alarme.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tommounsey.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tilient.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "todosrv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "telealarme.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thuthuatios.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thomasstevensmusic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "totoro.pub", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thisistheserver.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "teleallarme.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30138,7 +29533,6 @@
     { "name": "tircentrale.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tpansino.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "toka.sg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thierrybasset.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tokumei.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tinf15b4.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tobyx.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30150,7 +29544,6 @@
     { "name": "themacoaching.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tkjg.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "startup.melbourne", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tjp.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tobischo.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "trangcongnghe.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "top-obaly.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30198,7 +29591,6 @@
     { "name": "twem.ddns.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "twenty71.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ttll.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thaiforest.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tsukuba.style", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tuts4you.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "twincitynissantxparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30250,7 +29642,6 @@
     { "name": "upwork.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "twohuo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thebeginningisnye.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "trustfield.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vccmurah.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "umaimise.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vasports.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30265,7 +29656,6 @@
     { "name": "vernonchan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "u-tokyo.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "usebean.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "totalforcegym.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "unleash.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vicyu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "united-schools.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30287,10 +29677,8 @@
     { "name": "vionicbeach.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "urgences-valais.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "torbay.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "teoleonie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vandermeer.frl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vegepa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "univercite.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "visistruct.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "victornet.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vermuetje.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30302,18 +29690,15 @@
     { "name": "verzick.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "veverusak.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vaud-fleurs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "univitale.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "viptamin.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vallutaja.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vitalyzhukphoto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vlvvl.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "visaexpert.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vrlaid.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vaperolles.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "voidshift.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vladislavstoyanov.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "uniformecomgas.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "verstraetenusedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "versfin.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vagabondgal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "virtualvaults.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30323,8 +29708,6 @@
     { "name": "ventzke.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vivianmaier.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "viceversa.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ucch.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vima.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vpn.pics", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vancouvercosmeticsurgery.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vamoaeturismo.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30347,16 +29730,11 @@
     { "name": "wafni.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webproshosting.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wadsworth.gallery", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "voicu.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vlsm.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webfox.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wearesouthafricans.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "viabemestar.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "viralpop.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "viteoscrm.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "waaw.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vriesdonkow.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "visapourailleurs.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "websharks.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wellopp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "we.serveftp.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30391,10 +29769,8 @@
     { "name": "web2ldap.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wellbeing360.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wildboaratvparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "votresiteweb.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "waytt.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "weedypedia.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "webrentcars.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wjm2038.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "werehub.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webliberty.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30417,7 +29793,6 @@
     { "name": "vocalviews.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wprevs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webcookies.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wiliquet.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vos-fleurs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vos-fleurs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "willkommen-fuerstenberg.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30460,9 +29835,7 @@
     { "name": "wrongware.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vpnservice.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wieobensounten.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whatsupoutdoor.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wubify.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "xferion.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xkblog.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "woodev.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wrapitup.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30470,7 +29843,6 @@
     { "name": "www.re", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xmedius.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--gmq92k.nagoya", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wikipeter.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--l8j9d2b.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--baron-bonzenbru-elb.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "woheni.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30510,7 +29882,6 @@
     { "name": "yelp.com.tr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xubo666.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitealps.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xyzulu.hosting", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30524,16 +29895,12 @@
     { "name": "yelp.com.ar", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.cl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.com.sg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitealps.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.com.ph", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "www-1116.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.com.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--uist1idrju3i.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitealps.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitealps.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitealps.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yemalu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30548,7 +29915,6 @@
     { "name": "yelp.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "whitealps.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yiyuanzhong.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yelp.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30592,12 +29958,10 @@
     { "name": "yumeconcert.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yggdar.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zeilles.nu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "yanngraf.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yourforex.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zeilenmethans.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yue2.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zlima12.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "yanngraf.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zrniecka-pre-sny.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zepect.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zfree.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30632,7 +29996,6 @@
     { "name": "xn--e--ig4a4c3f6bvc5et632i.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--pck4e3a2ex597b4ml.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--e--0g4aiy1b8rmfg3o.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "zug-anwalt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--vck8crcu789ajtaj92eura.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--t8j4aa4nkg1h9bwcvud.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wpunpacked.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30691,7 +30054,6 @@
     { "name": "4bike.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "5francs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "afbeelding.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "actionmadagascar.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aabanet.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alerts.sg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alextaffe.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30737,7 +30099,6 @@
     { "name": "arlenarmageddon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alistairstowing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arachina.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "alphafiduciaryservices.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "areyouever.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "antimatiere.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "afmtevents.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30761,7 +30122,6 @@
     { "name": "alroniks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anttitenhunen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aevpn.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "alliances-globalsolutions.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "b8a.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aqua-fitness-nacht.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asmdz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30771,7 +30131,6 @@
     { "name": "amoozesh98.ir", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arox.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "azlo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "allo-credit.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arxell.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "astral.gq", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "acendealuz.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30794,7 +30153,6 @@
     { "name": "artartefatos.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "balslev.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bargainmovingcompany.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "atelierdefrancais.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bedrocklinux.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bar-harcourt.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apparels24.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30813,7 +30171,6 @@
     { "name": "bernhardluginbuehl.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "benediktdichgans.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bagspecialist.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "audiophile.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beyondthecode.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bernhardluginbuehl.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "billrobinson.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30834,7 +30191,6 @@
     { "name": "billy.pictures", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "24hrs.shopping", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "astutikhonda.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "base-autonome-durable.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bilder-designs.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bigerbio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bgtgames.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30894,8 +30250,6 @@
     { "name": "brandcodeconsulting.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "birchbarkfurniture.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "birchbarkfurniture.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brickheroes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brickvortex.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "briefhansa.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "birchbarkfurniture.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cabaladada.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30965,7 +30319,6 @@
     { "name": "cd-sport.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chefgalles.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "christophebarbezat.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cftcarouge.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "citimarinestore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ckostecki.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cjdpenterprises.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30993,7 +30346,6 @@
     { "name": "commitsandrebases.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "connorsmith.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coda.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cambiowatch.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "codefordus.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coincolors.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "confidential.network", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31007,7 +30359,6 @@
     { "name": "clubedalutashop.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coigach-assynt.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comprehensiveihc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "client.coach", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "countingto.one", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cove.sh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "countyjailinmatesearch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31030,7 +30381,6 @@
     { "name": "cookingcrusade.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "csharpmarc.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cosirex.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "coachezmoi.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "controlarlaansiedad.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "csinfo.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cultofperf.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31068,7 +30418,6 @@
     { "name": "daemwool.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cosmeticosnet.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "corpoatletico.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "club103.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "darbi.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "deborahmarinelli.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "daniel-stahl.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31082,8 +30431,6 @@
     { "name": "deped.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dataformers.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "criadorespet.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cvl.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "decalquai.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dcautomacao.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "daren.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "defme.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31108,7 +30455,6 @@
     { "name": "devops.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dicoding.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "discord-chan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dborcard.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "designgraphic.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dev-talk.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "do13.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31204,15 +30550,12 @@
     { "name": "enixgaming.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "en4rab.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "emergenzalavoro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "economiefidu.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecohostingservices.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecosound.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecole-iaf.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elpoderdelespiritu.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "erverydown.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eightyfour.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "esipublications.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "edition-bambou.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elxsi.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "enduranceday.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eldertons.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31221,7 +30564,6 @@
     { "name": "doriginal.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evidence-based.review", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eventosenmendoza.com.ar", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "enigma.swiss", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "esports-network.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etalent.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "drew.beer", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31238,14 +30580,12 @@
     { "name": "ebolsas.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecfnorte.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elementalict.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "effe.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eatfitoutlet.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evaartinger.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eyesoccer-didikh.rhcloud.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "erotpo.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fantasiapainter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evony.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "encretplomb.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "esb112.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ewsfeed.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eonhive.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31257,7 +30597,6 @@
     { "name": "editoraacademiacrista.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "factorypartsdirect.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ezdog.press", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "diligo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fatedata.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "expandeco.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "escueladewordpress.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31267,7 +30606,6 @@
     { "name": "fashionunited.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "exside.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "expresswins.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "escontact.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eyes-of-universe.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "expert.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fanzlive.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31296,11 +30634,9 @@
     { "name": "emporiopatanegra.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "figan.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "emporiovinareal.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "findingkorea.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "facanabota.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fotohome.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "filewall.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "film.photography", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faixaazul.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "florinlungu.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fontawesome.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31338,7 +30674,6 @@
     { "name": "ferreteriaxerez.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "finnclass.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ftng.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fhconseil.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fullhub.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fyodorpi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "frickelmeister.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31367,7 +30702,6 @@
     { "name": "geyduschek.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "girlsgenerationgoods.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fortricks.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "garagevanhulle-used.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "genfaerd.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fullautomotivo.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gochu.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31406,7 +30740,6 @@
     { "name": "hackmeplz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hamking.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "flyspace.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "grupomakben.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gruenderlehrstuhl.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gzom.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "health-match.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31475,7 +30808,6 @@
     { "name": "illuxat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hostarea51.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "increasetestosteronelevels.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hothbricks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "infotainworld.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "img.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "igi.codes", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31489,7 +30821,6 @@
     { "name": "ilamparas.com.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hoshimaquinas.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inorder.website", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "illusionephemere.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ilmataat.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "imperialmiami.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inkhor.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31507,7 +30838,6 @@
     { "name": "indilens.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "instava.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "irvinepa.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "imi-rhapsody.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "infoweb.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "into.technology", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "irisjieun.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31549,7 +30879,6 @@
     { "name": "imperialonlinestore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jameshemmings.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "intertime.services", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "itecor.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jeffmcneill.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ispsoft.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joaosampaio.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31582,7 +30911,6 @@
     { "name": "jez.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "juanxt.ddns.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kandec.co.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jeanneret-combustibles.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "josoansi.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "k82.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kambodja.guide", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31602,7 +30930,6 @@
     { "name": "kakoo.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kd.net.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kakoomedia.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jpdeharenne.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "judc-ge.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jundimax.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "judosaintdenis.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31613,9 +30940,7 @@
     { "name": "khs1994.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kalifornien-tourismus.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kloia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "kelgtermans-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "katoju.co.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jimmyroura.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kostya.ws", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "klimchuk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kleberstoff.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31706,7 +31031,6 @@
     { "name": "lineauniformes.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lgpecasoriginais.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "locvis.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "kreativelabs.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "loadwallet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "linuxchick.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lepiquillo.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31732,7 +31056,6 @@
     { "name": "lojavirtualfct.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "la-petite-entreprise.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lisowski-photography.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lirlandais.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "localdecor.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lojafilipaper.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lojashowdecozinha.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31740,7 +31063,6 @@
     { "name": "mac-world.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mailbox.mg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kitchenaccessories.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "kohsandra.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lz.sb", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lojafazendoarte.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lojavisamed.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31780,21 +31102,18 @@
     { "name": "martin-arend.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mentalhealthmn.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meu-smartphone.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "masta.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "markrobin.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mallonline.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mariacristinadoces.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maisalto.ind.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "masterofbytes.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "matjaz.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "marche-contre-monsanto.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marcaudefroy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marketizare.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "materiaischiquinho.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mgoessel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "madcatdesign.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ltechnologygroup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "margo-co.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "megamarkey.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meehle.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mikehamburg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31805,7 +31124,6 @@
     { "name": "mi-so-ji.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "matlabjo.ir", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minnit.chat", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mdf-bis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "metacoda.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mestr.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "marvinkeller.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31868,7 +31186,6 @@
     { "name": "mr-labo.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "manager-efficacement.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "museumstreak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "monachatdeco.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "milhoazul.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mystudycart.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nba-2k.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31979,8 +31296,6 @@
     { "name": "notablog.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nyphox.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "numwave.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nohkan.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "noorsolidarity.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "octosys.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "octosys.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mrksk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32014,7 +31329,6 @@
     { "name": "novfishing.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "passrhcsa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "parksubaruoemparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "onlfait.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nuovamoda.al", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "passrhce.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "palavatv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32106,9 +31420,7 @@
     { "name": "powersergusercontent.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "premiumweb.co.id", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "personnedisparue.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "parts4phone.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "postdeck.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "perroquet-passion.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "plantarum.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "planetasuboficial.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pc-tweak.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32165,7 +31477,6 @@
     { "name": "replaceits.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "redgatesoftware.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "regulations.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "planify.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "regnix.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rebirthia.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "raykitchenware.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32213,7 +31524,6 @@
     { "name": "rocketgnomes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "runschrauger.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "saikou.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "resoplus.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rejushiiplotter.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rehabthailand.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "saimoe.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32250,7 +31560,6 @@
     { "name": "santmark.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "priorite-education.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schraebanowicz.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pzgreni.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "saxol-group.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "samuirehabcenter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "santmark.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32265,7 +31574,6 @@
     { "name": "secureheaders.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "searchbrothers.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "santafemacas.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "salle-quali.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "searchbrothers.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "searchdatalogy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "searchbrothers.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32393,7 +31701,6 @@
     { "name": "staxflax.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stephsolis.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "steinbergmedia.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "soldout-app.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sqroot.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stephensolis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stephensolis.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32427,7 +31734,6 @@
     { "name": "svj-stochovska.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "taoburee.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "street-smart-home.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sudmotor-occasions.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "taidu.news", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spdepartamentos.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "stayme.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32459,7 +31765,6 @@
     { "name": "texhnolyze.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tetedelacourse.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "t2i.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "swissdojo.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shopcoupons.my", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tgexport.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tenispopular.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32500,7 +31805,6 @@
     { "name": "tomticket.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "timbishopartist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thuisverpleging-meerdael.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tissot-mayenfisch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "the.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "transcriptionwave.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tomwassenberg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32631,8 +31935,6 @@
     { "name": "trush.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "weareincognito.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "valentineapparel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "usipvd.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "unerosesurlalune.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wearewithyou.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vonborstelboerner.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tutiendarosa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32664,8 +31966,6 @@
     { "name": "webfronten.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "victorenxovais.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "windowwellexperts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vsl-defi.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vm-co.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "viniferawineclub.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wedding-m.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vyshivanochka.in.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32702,10 +32002,8 @@
     { "name": "wir-bewegen.sh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wmaccess.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "workplaces.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "weemake.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webwolf.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vapesense.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "welcome26.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "x-lan.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wikibulz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "windowwellcovers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32744,7 +32042,6 @@
     { "name": "yubico.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yubico.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yubico.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "voyagesaufildespages.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yubico.mobi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yosheenetwork.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yubico.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32788,7 +32085,6 @@
     { "name": "yandere.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--6x6a.life", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xiaoyu.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "welcome-tahiti.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "westcentenaryscouts.org.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aiforsocialmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "digitalrights.center", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33251,7 +32547,6 @@
     { "name": "rockuse.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rohanbassett.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rpine.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rtsr.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rubymartin.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "salishseawhalewatching.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "samsungxoa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33354,7 +32649,6 @@
     { "name": "7delights.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "7delights.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "8tuffbeers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "aalstmotors-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ac0g.dyndns.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "actu-film.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adelightfulglow.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33377,19 +32671,12 @@
     { "name": "andrewpeng.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "antirepressionbayarea.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anyfood.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "appartement-evolene.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apponic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "apps4inter.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "araro.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "areaclienti.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arenns.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arislight.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arminc.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "artmaxi.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asge-handel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "astroscopy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "astural.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "atelierssud.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "atelierssud.swiss", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "august.black", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "autozane.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33406,9 +32693,6 @@
     { "name": "beehive.govt.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ben2.co.il", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bengalurugifts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "benjaminpiquet.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bergevoet-fa.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bernadetteanderes.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "besthotsales.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bet-99.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beyondtodaymediagroup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33432,20 +32716,16 @@
     { "name": "bouchonville-knifemaker.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bourqu.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bowlsheet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bqr.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brasilien.guide", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "breathedreamgo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bretcarmichael.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bricolajeux.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bs.sb", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "btku.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "businessmodeler.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "butikvip.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bynder.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "capitainebaggy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "casa-mea-inteligenta.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catchief.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cdbf.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cenatorium.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "centurialeonina.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "certmonitor.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33462,7 +32742,6 @@
     { "name": "clayandcottonkirkwood.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "codejunkie.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "codespromo.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "compliance-management.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "compuplast.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "convexset.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coonelnel.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33478,23 +32757,18 @@
     { "name": "darlastudio66.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dasgeestig.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "datakick.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "datascience.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "datenschutzgrundverordnung.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "datingticino.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ddel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "de-mail.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "deeparamaraj.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "denis-martinez.photos", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "digicert-support.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dingcc.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "disanteimpianti.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "discoverwellness.center", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dismail.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "divenwa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "donmaldeamores.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "doriangirod.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dotnetsandbox.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "doyoutax.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "doze-cloud.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dreamhack.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "drivewithstatetransit.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33506,7 +32780,6 @@
     { "name": "easy-factures.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "echodio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ecovision.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecrandouble.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "electricgatemotorgermiston.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elinevanhaaften.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elixir.bzh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33515,7 +32788,6 @@
     { "name": "entaurus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eoitek.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "equinox.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "erath.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "esb111.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "espacio-cultural.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evelienzorgt.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33554,7 +32826,6 @@
     { "name": "gisgov.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gitep.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "glavsudexpertiza.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "globalventil.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gosciencegirls.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gourmetfestival.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gozadentro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33569,9 +32840,6 @@
     { "name": "grothoff.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "guides-peche64.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gustaff.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gymnaserenens.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gyre.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gyrenens.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "haloobaloo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "harald-pfeiffer.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "haven-staging.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33584,7 +32852,6 @@
     { "name": "hhidr.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hialatv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hidedd.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "highlatitudestravel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hill.selfip.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hippo.ge", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hoast.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33604,12 +32871,10 @@
     { "name": "hybridiyhdistys.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hybridklubben.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ibrainmedicine.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "icmhd.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "idatha.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ifort.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ima-tourcoing.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "imgul.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "immo-passion.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "independencerecovery.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inexlog.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ingo-schlueter.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33617,7 +32882,6 @@
     { "name": "inter-corporate.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "intraobes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ioslo.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ip3office.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iplantom.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ipo-times.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "islandpumpandtank.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33626,7 +32890,6 @@
     { "name": "ivanpolchenko.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "izumi.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jakewalker.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "james-parker.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "janada.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jeremy-chen.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jevisite.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33691,7 +32954,6 @@
     { "name": "matthewtester.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "maxhorvath.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mayoristassexshop.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mazda-thermote.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mcuexchange.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meincoach.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "melonstudios.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33712,9 +32974,6 @@
     { "name": "mubiflex.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "multimail.work", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "multivpn.com.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "my-contract.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "my-contract.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "my-contract.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "my-host.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mybb.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "myday.eu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33722,12 +32981,9 @@
     { "name": "myspa.asia", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nataldigital.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nathumarket.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "natives-team.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nawroth.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "neavision.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nerot.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "neuch.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nezrouge-est-vaudois.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ngiemboon.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nico.st", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "niess.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33738,11 +32994,9 @@
     { "name": "nosyu.pe.kr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nova-wd.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "noyocenter.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "nrev.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nuamooreaindonesia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "obamalibrary.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "obrienlab.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "oc-sa.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "octohedralpvp.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "officium.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ogis.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33786,19 +33040,14 @@
     { "name": "primordialsnooze.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "principalstest.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "probiv.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "prof.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "projectx.top", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "projest.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "promolover.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "proplan.co.il", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "provence-appartements.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pscleaningsolutions.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "purrfect-box.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pwi.agency", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "qhse-professionals.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "qualite-ecole-et-formation.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "quality-life.gr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "quanterra.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "quantor.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "r-ay.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ragnaroktop.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33809,13 +33058,11 @@
     { "name": "recantoshop.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "redair.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "renascentia.asia", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "renaultclubticino.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "report-incident.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "restoruns.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rivercruiseadvisor.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "robinflikkema.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "roeldevries.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rootsbar.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rosesciences.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "roussos.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rove3d.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33833,11 +33080,9 @@
     { "name": "santmark.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "saxojoe.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sb-tuning.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "scswam.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seatshare.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "secutrans.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seraph.tokyo", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "serrano-chris.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "serw.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "setuid0.kr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "severine-trousselard.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33849,7 +33094,6 @@
     { "name": "shoprsc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shrinidhiclinic.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "silashes.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "simmis.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "simon-mueller.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "simpbx.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sinkip.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33903,8 +33147,6 @@
     { "name": "thehivedesign.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thepaulagcompany.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thepromisemusic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thesharedbrain.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "thesharedbrain.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thestrategyagency.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thewebflash.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thiepcuoidep.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33943,11 +33185,9 @@
     { "name": "variablyconstant.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "varimedoma.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vbcdn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "verbierfestival.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vidiproject.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vierdaagsehotel.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "viltsu.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vinticom.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "virtusaero.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "visual-cockpit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vivirenelmundo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -33961,12 +33201,6 @@
     { "name": "watchfreeonline.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wbci.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wbx.support", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "webneuch.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "webneuch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "webneuch.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "webneuch.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "webneuch.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "webneuch.swiss", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "weyland-yutani.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "widegab.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wintermeyer-consulting.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34005,8 +33239,6 @@
     { "name": "899699.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "98laba.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "98laba.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "abvlbasketviganello.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "academie-de-police.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "allesisonline.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alphabetsigns.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andrewdaws.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34115,7 +33347,6 @@
     { "name": "risiinfo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "royalcitytaxi.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sahb.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "samaritainsmeyrin.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sat7a-riyadh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sbanken.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schlueter-software.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34174,7 +33405,6 @@
     { "name": "a1scubastore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abaapplianceservice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abcdentalcare.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "abeilles-idapi.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "academy4.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "achtzehnterachter.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "actionlabs.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34206,7 +33436,6 @@
     { "name": "ais.fashion", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ajibot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alaboard.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "alchimic.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alexeykopytko.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alexmol.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "algoentremanos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34235,11 +33464,9 @@
     { "name": "anthedesign.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "antoinebetas.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aomberg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "appt.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "araxis.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "area3.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arethsu.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "arganaderm.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ariba.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arizonaautomobileclub.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arjanvaartjes.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34258,7 +33485,6 @@
     { "name": "astutr.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asustreiber.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "atmocdn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "aubergegilly.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "augrandinquisiteur.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "auroraassociationofrealtors.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "auslandsjahr-usa.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34295,9 +33521,7 @@
     { "name": "baychimo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bazaarcompass.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bb37roma.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bblsa.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bclogandtimberbuilders.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "beatrizaebischer.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bebes.uno", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bedfordnissanparts.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beermedlar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34319,7 +33543,6 @@
     { "name": "bewerbungsfoto-deinfoto.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bewertet.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bezemkast.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bft-media.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bhost.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biaoqingfuhao.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biaoqingfuhao.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34356,7 +33579,6 @@
     { "name": "brecknell.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brecknell.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "briangarcia.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "brianwesaala.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bridgingdirectory.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brilliantproductions.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "brinkmann.one", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34393,7 +33615,6 @@
     { "name": "carrierplatform.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "carthedral.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "casamariposaspi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cashlogic.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "caspicards.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catbull.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "catdecor.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34401,11 +33622,9 @@
     { "name": "cavevinsdefrance.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ccgx.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "centralcountiesservices.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "centredaccueil.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "certmonitor.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cfno.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cgsmart.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chambion.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "charakato.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "charlimarie.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chatsworthelectrical.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34418,7 +33637,6 @@
     { "name": "chessreporter.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "childrenandmedia.org.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chinatrademarkoffice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "chocolatier-tristan.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chowii.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "christian-liebel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "christianfaq.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34450,7 +33668,6 @@
     { "name": "colorectalcompounding.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comicrelief.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comicwiki.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "commechezvous.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "community-cupboard.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comopuededejardefumar.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "compostatebien.com.ar", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34478,7 +33695,6 @@
     { "name": "cross-link.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crypalert.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "csilies.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cstb.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cuanhua3s.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "customgear.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cuxpool.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34579,8 +33795,6 @@
     { "name": "e2feed.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "e64.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "easycoding.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "eauxdespleiades.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecolemathurincordier.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "edenvalerubbleremovals.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "edhesive.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "edstep.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34609,7 +33823,6 @@
     { "name": "enrollapp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "enterprivacy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "epave.paris", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "epi.one", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "epilis.gr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eposkent.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eposleeds.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34621,12 +33834,10 @@
     { "name": "esball.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eshepperd.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "esp.community", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "espace-caen.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "esslm.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "estespr.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etccooperative.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "etincelle.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "etre-vivant.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evailoil.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "everydaywot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "everytruckjob.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34694,7 +33905,6 @@
     { "name": "formkiq.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "forourselves.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fortran.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "foxphotography.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "frantorregrosa.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "frauenarzt-zinke.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fredliang.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34727,12 +33937,10 @@
     { "name": "gamesplanet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gameswitchers.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "garage-door.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "garage-leone.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gautham.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gauthier.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gazette.govt.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gbit.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gboys.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gdhzcgs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "geekbaba.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gehrke.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34837,7 +34045,6 @@
     { "name": "hulet.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "humanexperiments.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hyckenberg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "i-proswiss.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iacono.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iberiaversicherungen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ibiz.mk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34856,7 +34063,6 @@
     { "name": "ilhan.name", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "iligang.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "imlinan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "impactpub.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inchcape-fleet-autobid.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "indianaantlersupply.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "indieethos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34981,7 +34187,6 @@
     { "name": "kyle.place", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "la-tourmaline.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "laatikko.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "labiblioafronebrulepas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "labobooks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ladybugjam.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ladylikeit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34993,7 +34198,6 @@
     { "name": "lakehavasuhouserentals.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lakehavasuhouses.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lakehavasuwebsites.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lalyre-corcelles.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lanetix.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lanturtle.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "larraz.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35009,9 +34213,6 @@
     { "name": "leinfelder.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lennyfaces.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leon.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "leretour.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lesplatanes.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lesterrassesdusoleil.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lexpartsofac.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lianwen.kim", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "libmpq.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35037,8 +34238,6 @@
     { "name": "lstma.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lubar.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "luganskservers.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lunidea.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "lunidea.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "luso-livros.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "luvare.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "luxcraft.eng.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35064,7 +34263,6 @@
     { "name": "mamospienas.lt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mandm.servebeer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "manfredgruber.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mankans.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "manneguiden.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "manualscollection.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "manuel-schefczyk.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35091,12 +34289,9 @@
     { "name": "mbits.solutions", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "media-pi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mediadandy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mediagenic.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mediationculturelleclp.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "medstreaming.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "medtankers.management", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meetingfriends.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "meeusen-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mehmetakif.edu.tr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mehr-schulferien.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meierhofer.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35114,14 +34309,12 @@
     { "name": "merimatka.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "merlet.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "messagescelestes.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "metalu.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meteo-parc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "metrix.design", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meupedido.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mfgod.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mhi.web.id", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "micaiahparker.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "micalodeal.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "michael-schefczyk.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "michael-schilling.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "michaelasawyer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35161,7 +34354,6 @@
     { "name": "mszavodumiru.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mullen.net.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "multi-vpn.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "multirep.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "multivpn.cn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "multivpn.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "multivpn.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35240,7 +34432,6 @@
     { "name": "on-te.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "on-tech.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onestepfootcare.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "oniria.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onlinebillingform.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onlinecasino.vlaanderen", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onlinerollout.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35263,14 +34454,11 @@
     { "name": "oskrba.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "otakurumi.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "outdoorimagingportal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "overdrive-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "owl-stat.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "owlishmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paazmaya.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "painlessproperty.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paktolos.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pantallasled.com.mx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pantographe.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "parisescortgirls.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "parleamonluc.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "partycentrumdebinnenhof.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35292,7 +34480,6 @@
     { "name": "photodeal.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "piedfeed.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "piercing-store.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "pilani.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "piratepay.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "piratepay.ir", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pitot-rs.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35316,7 +34503,6 @@
     { "name": "pokomichi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "polandb2b.directory", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "polish.directory", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "poly-fast.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ponga.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ponteus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pop-corn.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35352,7 +34538,6 @@
     { "name": "probely.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "processesinmotion.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "proft.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "progiscad.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "project-stats.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "projectherogames.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "promoterms.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35407,7 +34592,6 @@
     { "name": "ricknox.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rienasemettre.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "risada.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "rivierasaints.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rmcbs.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "robinvdmarkt.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "robpol86.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35463,7 +34647,6 @@
     { "name": "scis.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scorp13.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scripo-bay.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "scuolaguidalame.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "scw.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "se7ensins.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "search-job-in.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35479,7 +34662,6 @@
     { "name": "selkiemckatrick.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sellguard.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sentinel.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "septfinance.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sergos.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "serve-a.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "servea.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35506,7 +34688,6 @@
     { "name": "silviamacallister.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "simpleinout.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "simplewire.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sin.swiss", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "singerwang.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sistel.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skei.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35570,7 +34751,6 @@
     { "name": "suuria.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "suvidhaapay.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sw33tp34.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sweepay.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "swiftconf.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "switch.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "switzerland-family-office.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35603,7 +34783,6 @@
     { "name": "thedrunkencabbage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "theeducationchannel.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "theevergreen.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "theferrarista.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thefrk.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thehookup.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thestoritplace.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35670,7 +34849,6 @@
     { "name": "uploadbro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ursae.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "urukproject.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ussuka.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ut-addicted.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "uuit.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "uzaymedya.com.tr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35681,8 +34859,6 @@
     { "name": "valika.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "valkor.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vanderkroon.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vareillefoundation.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vareillefoundation.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "variable.agency", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vcdn.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vcsjones.codes", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35694,7 +34870,6 @@
     { "name": "venturum.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "venturum.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "venturum.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "vernaeve-usedcars.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vernonhouseofhope.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vernonsecureselfstorage.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "verteilergetriebe.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35727,7 +34902,6 @@
     { "name": "webaeon.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webapky.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webappky.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "webclimbers.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webkeks.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "webnoob.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "websites4business.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35810,7 +34984,6 @@
     { "name": "yuxuan.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zach.codes", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zaoext.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "zavec.com.ec", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zebbra.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zeguigui.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zestylemon.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -35827,7 +35000,6 @@
     { "name": "zuppy.pm", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zuralski.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zutsu-raku.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "zwy.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zyciedlazwierzat.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "188522.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "arai21.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -39824,7 +38996,6 @@
     { "name": "00660066.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "00770077.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "00880088.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "00990099.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "110110110.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "112112112.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "113113113.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -45261,7 +44432,6 @@
     { "name": "dsteiner.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dubaosheng.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dumont.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dung-massage.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "duonganhtuan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dwbtoftshit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dwellstudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46190,7 +45360,6 @@
     { "name": "midgawash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mightymillionslottery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mikumaycry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "milanstephan.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mirepublic.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "misanci.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mizuho-trade.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46887,7 +46056,6 @@
     { "name": "f13cybertech.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fastforwardsociety.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ffsociety.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fojing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freakyawesome.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freakyawesome.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freakyawesome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46902,7 +46070,6 @@
     { "name": "giuem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glykofridis.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "golfpark-bostalsee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "guoke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gut8er.com.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hackreone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hahay.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46981,7 +46148,6 @@
     { "name": "office-discount.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onionplay.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onyxgen.duckdns.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "opticaltest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "orbu.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oryva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "overwall.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48286,7 +47452,6 @@
     { "name": "massive.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "material-ui.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "matratzentester.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "matthiasheil.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "matway.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "max-mad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maya-ro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48365,7 +47530,6 @@
     { "name": "pacatlantic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "packair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pahnid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "paranormalweirdo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parksland.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parry.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paste.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48493,7 +47657,6 @@
     { "name": "theosblog.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thereaper.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thestationatwillowgrove.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thestonegroup.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thewinstonatlyndhurst.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thiagohersan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thienteakee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -49069,7 +48232,6 @@
     { "name": "lapix.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lauxzahnheilkunde.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "legalinmotion.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "legendarycamera.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lehti-tarjous.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lethbridgecoffee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leviscop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -49245,7 +48407,6 @@
     { "name": "photographersdaydream.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phpinfo.in.th", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "physiotherapie-seiwald.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pianyigou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pikimusic.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pildat.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pineapplesapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50125,7 +49286,6 @@
     { "name": "piscine.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pj881988.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plantes.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "plantezcheznous.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plzz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "poncho-bedrucken.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "porchdaydreamer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50647,7 +49807,6 @@
     { "name": "qqrss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qqvrsmart.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "r-t-b.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rendre-service.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rnbjunk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "robtatemusic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "romanticfirstdance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51999,7 +51158,6 @@
     { "name": "adwokatzdunek.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "affordableblindsexpress.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ag8-game.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "agendatelefonica.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agostinhoenascimento.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agscinemas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agscinemasapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52692,7 +51850,6 @@
     { "name": "mrprintables.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mrtunnel.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mu3on.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "muitadica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "murray.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "my-best-wishes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myamihealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -56834,7 +55991,6 @@
     { "name": "coffeetime.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cognicom-gaming.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "communitymanagertorrejon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "computerbas.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "conpath.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "conradsautotransmissionrepair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "consultoriadeseguranca.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -58600,7 +57756,6 @@
     { "name": "callantonia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "camara360grados.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "canariculturacolor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "candelec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "capebretonpiper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "career.support", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carlinmack.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59823,7 +58978,6 @@
     { "name": "toddmath.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tofliving.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tombroker.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "toni-dis.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tonifarres.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tonnygaric.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "toolbox-bodensee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60613,7 +59767,6 @@
     { "name": "dophys.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dox-box.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dragon.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "drainagedirect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "draintechnorthwest.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "driftingruby.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "droidandy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -61948,7 +61101,6 @@
     { "name": "legionminecraft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "legnami24.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lehrermarktplatz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lequateur.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lesummeira.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "letson.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "level6.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62201,7 +61353,6 @@
     { "name": "pawspuppy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paxchecker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pbren.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pcs.org.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pearlsonly.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pearlsonly.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pearlsonly.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62717,7 +61868,6 @@
     { "name": "d-imitacion.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "d2qa61rbluifiq.cloudfront.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "danielfeau.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "danskoya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dax.guide", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daxpatterns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "degroupage.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -63272,7 +62422,6 @@
     { "name": "stlouisinsuranceco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stonegateapartmentsstl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "strengthinyoufitness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "swey.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "syskit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tacticalavocado.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "telegra.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -67531,10 +66680,6 @@
     { "name": "koreaninhd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "korem011-tniad.mil.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "krikorianconstruction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0718.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0768.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0877.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0996.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks5000.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks5660.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks88.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -68451,7 +67596,6 @@
     { "name": "noxx.solutions", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olitham.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oneearthapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "onevpn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "opcare.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ortho-europe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ourfavorite-kakamigahara.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -70526,9 +69670,6 @@
     { "name": "kouponboket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kpopsource.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "krasnodar-pravoved.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks080.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks191.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks381.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks628.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kulturmel.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kuwichitagastro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71245,54 +70386,37 @@
     { "name": "6729zz.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6729zz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957a.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957aa.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957aa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957apk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957b.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957bb.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957bb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957c.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957cc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957d.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957dd.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957dd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957dh.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957ee.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957ee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957f.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957f.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957ff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957g.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957gg.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957gg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957h.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957hh.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957hh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957i.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957i.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957ii.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957ii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957ipa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957j.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957jj.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957jj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957k.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957kk.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957kk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957l.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957l.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957ll.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957ll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957m.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957mm.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71301,27 +70425,17 @@
     { "name": "6957nn.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957nn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957o.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957o.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957oo.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957oo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957p.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957p.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957qq.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957r.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957r.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957rr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957s.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957ss.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957ss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957t.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957tt.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957tt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957u.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957u.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957uu.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957uu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957v.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957vv.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71329,18 +70443,14 @@
     { "name": "6957w.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957w.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957ww.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957ww.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957x.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957xx.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957xx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957y.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957yy.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957yy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957z.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957z.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "6957zz.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "6957zz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "7ka.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "86btt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "876666365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71432,7 +70542,6 @@
     { "name": "aa6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aa6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aa6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aa6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aaron-russell.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aboutpublishers.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ac-cosmetics.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71465,7 +70574,6 @@
     { "name": "barankababra.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bb6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bb6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bb6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bc-reloaded.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beachmarketing.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beproduct.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71528,7 +70636,6 @@
     { "name": "cc6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cc6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cc6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cc6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cendata.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "center-elite.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "centralconvergence.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71555,7 +70662,6 @@
     { "name": "datisstom.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dd6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dd6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dd6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "decal-times.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "declarationlocationmeublee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "delphia.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71590,7 +70696,6 @@
     { "name": "eastwind.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecuatask.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ee6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ee6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elevationtech.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elitebike.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elpaseadordeperros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71622,7 +70727,6 @@
     { "name": "fe-data.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ff6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ff6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ff6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "filecloud.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "files.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fizjoterapia.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71641,7 +70745,6 @@
     { "name": "gg6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gg6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gg6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gg6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "globecollege.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goehler-baumpflege.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "goprimal.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71659,7 +70762,6 @@
     { "name": "hh6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hh6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hh6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hh6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hidroshoping.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoofdredacteuren.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "horochx.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71701,7 +70803,6 @@
     { "name": "jj6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jj6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jj6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "jj6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jobalicious.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jobsindemedia.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johnkraal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71720,11 +70821,9 @@
     { "name": "kk6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kk6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kk6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kk6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kli.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks0618.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks0776.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks681.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kupiewszystkieauta.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "l6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "l6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71742,7 +70841,6 @@
     { "name": "ll6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ll6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ll6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ll6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lock.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lockme.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lockme.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71775,7 +70873,6 @@
     { "name": "mm6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mm6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mm6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mm6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mneti.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "modelemax.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "monospazzole.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71800,7 +70897,6 @@
     { "name": "nn6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nn6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nn6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nn6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nophelet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nousyukum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nullxsec.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71815,7 +70911,6 @@
     { "name": "oo6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oo6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oo6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oo6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oo918.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "orologeria.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "p1979.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71835,7 +70930,6 @@
     { "name": "poopthereitisla.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "potsdam.directory", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pp6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pp6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "praleria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "prepagosyescortforyou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "primos-tech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71850,7 +70944,6 @@
     { "name": "qq6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qq6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qq6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "qq6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quic.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "r6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "r6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71909,7 +71002,6 @@
     { "name": "sqdll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ss6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ss6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ss6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sspanel.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stariders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "starvizyon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71950,7 +71042,6 @@
     { "name": "tt6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tt6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tt6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tt6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tt918.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tyree.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "u6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71961,7 +71052,6 @@
     { "name": "uu6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uu6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uu6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "uu6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ux-designers.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uxdesignerjobs.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "v6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -71992,7 +71082,6 @@
     { "name": "ww6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ww6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ww6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ww6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "x6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xinbo190.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xinbo269.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72032,7 +71121,6 @@
     { "name": "xx6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xx6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xx6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "xx6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xy6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xy6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "y6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72060,7 +71148,6 @@
     { "name": "zhenggangzhao.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zz6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zz6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "zz6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "0--1.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "14159.gb.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "200201.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72632,7 +71719,6 @@
     { "name": "856kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "869kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "8801ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "8839ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "8859ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "885kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "886k8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72667,7 +71753,6 @@
     { "name": "activephoto.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "adrian2023.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "advancedpestspecialists.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ag18ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ag600.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ag800.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ag88086.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72934,18 +72019,8 @@
     { "name": "ks0550.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks0577.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks0588.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks059.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks0599.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks063.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks065.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0766.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0770.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0778.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0855.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks0858.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0878.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0886.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0977.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks098.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks15.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks16.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -72955,7 +72030,6 @@
     { "name": "ks18.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks200.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks2000.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks262.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks28.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks28.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks308.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -73001,7 +72075,6 @@
     { "name": "ks68.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks6808.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks6860.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks698.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks81.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks86.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks86.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -73449,8 +72522,6 @@
     { "name": "ks0788.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks081.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks086.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks0990.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks516.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks6658.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks6665.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks680.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -73903,10 +72974,7 @@
     { "name": "konfekcjonowanie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "koreanrandom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks3636.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks509.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks531.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ks5808.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ks629.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kusadasiforum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "labworks.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lamujerquesoy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -74499,7 +73567,6 @@
     { "name": "sampleappservice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sduconnect.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sellmymobile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "semiotical.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sender.services", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "simplycateringequipment.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sindarina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -75866,6 +74933,1443 @@
     { "name": "zunlong0.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zunlong918.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glassrom.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "0016d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "0017d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "0019d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "003zl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "006d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "008d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "009d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "009zl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "010203.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "010ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "011zl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "012zl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "013zl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "015zl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "017zl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "018zl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "019zl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "020ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "020ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "022ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "025ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "029kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "029ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "03637.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "05d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "0799ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "08kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1020302.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365001.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365002.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365003.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365005.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365006.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365007.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365008.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365009.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "103656666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "103658888.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365f.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "10365h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1120320.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1120323.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1120325.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1120334.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "113ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "116ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "116vip.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "118vip.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1220315.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1220324.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1220327.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1220346.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "122kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "130ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "133ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "135ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "147ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1520328.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1520330.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1520333.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1520344.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "154kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "155kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "156ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "158ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "159ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1620349.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1666ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "16agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "170ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "171ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1720313.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1720320.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1720321.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1720328.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1720332.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "173ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "180ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "181ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1820303.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1820327.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1820331.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1820347.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1820348.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1820349.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "183ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "183zlong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "185ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "186kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "186ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "188kb.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "18agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1941-45.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "198ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "199ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1blazing.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1onehouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "200ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "217778.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "23ks.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "285551.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "288kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "288kb.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "288ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "28agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "28ks.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "299ks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "2blazing.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "301ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "33kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "355ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506000.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506011.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506022.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506033.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506055.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506066.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506077.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506088.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506099.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506111.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506222.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506333.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506555.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506777.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "36506999.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "3666ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "399ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "3elife.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "404ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "428northampton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "456666365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "4761.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "4762.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "499ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "51club8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "52dashboard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "58agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "58ks.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "599ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "5agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "66.tn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "668ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "66agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "68agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "698ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "69agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "69ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "6agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "6wbz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "7214.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "7214.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8001d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8013d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8057d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8061d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8069d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8083d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8092d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8093d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8109d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8111d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8115d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8130d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8133d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8133d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8135d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8139d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8150d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8151d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8158d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8171d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8176d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8178d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8181d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8182d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8183d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8190d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8191d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8192d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8193d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8193d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8195d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8196d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8197d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8198d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8199d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8207d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8209d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8210d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8211d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8215d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8216d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8217d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8218d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8219d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8219d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8220d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8221d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8223d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8225d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8227d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8228d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8232d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8236d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "82kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "83kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "85kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8666ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "866ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "86kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "87kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8805d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8806d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8809d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8815d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8815ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8816d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8816d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8816ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8817d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8822d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8826d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8826d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8827d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8828d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8828ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8829d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8829d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8831ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8832ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8835ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8838ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8850d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8850d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8850ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8851d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8852d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8852ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8855d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8856d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8856d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8856ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8857d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8857d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8858d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8859d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8860d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8860d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8860ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8861ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8862ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8866d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8869ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8880ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8881ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8882ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8887ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8889ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8891ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8895ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8896ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8898ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "889999vip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "88agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "88zl.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8918d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8925d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8926d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8927d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8927d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8928d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8929d88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "898ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "89kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "8agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d01.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d02.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d03.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d11.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d15.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d16.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d17.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d18.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d19.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d20.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d21.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d23.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d26.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d27.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d31.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d32.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d33.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d35.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d36.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d37.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d38.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d39.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d50.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d51.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d52.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d53.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d55.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d56.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d57.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d59.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d60.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d61.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d62.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d63.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d65.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d66.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d67.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d68.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d69.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d70.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d71.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d72.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d73.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d77.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d80.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d83.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d85.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d86.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d87.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d90.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d93.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d95.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d96.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d97.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d98.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "91d99.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "92kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "93kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "95kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9666ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "96kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "98agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "98kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "98ks.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "99agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "99kb88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9agks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k223.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k225.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k226.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k227.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k229.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k232.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k235.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k237.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k238.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k252.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k253.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k255.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k256.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k257.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k258.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k262.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k266.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k267.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k268.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k269.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k273.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k275.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k276.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k277.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k278.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k279.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k283.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k285.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k289.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k292.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k296.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k299.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k322.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k323.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k325.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k327.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k329.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k332.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k335.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k336.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k337.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k338.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k339.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k362.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k363.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k366.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k368.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k372.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k373.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k375.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k376.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k378.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k379.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k383.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k386.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k387.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k389.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k392.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k393.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k398.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k562.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k563.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k568.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k569.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k572.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k573.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k575.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k577.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k579.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k582.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k583.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k585.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k592.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k622.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k623.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k625.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k626.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k627.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k629.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k633.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k635.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k636.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k637.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k639.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k652.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k653.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k657.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k658.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k659.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k662.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k663.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k665.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k667.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k668.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k669.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k672.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k673.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k675.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k677.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k679.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k682.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k683.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k686.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k689.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k692.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k693.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k696.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k698.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k699.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k822.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k823.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k825.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k826.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k828.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k829.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k833.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k836.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k838.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k839.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k855.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k857.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k858.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k859.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k862.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k865.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k866.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k867.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k868.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k869.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k872.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k873.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k875.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k877.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k879.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k882.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k883.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k885.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k889.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k892.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k893.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k896.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k898.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "9k899.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aaex.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "acacia-gardens.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aceitedelcampo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ad4msan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ad4msan.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "adonai.eti.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "advens.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ag518518.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ag58ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ag68ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ag818818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ag818818.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ag88ks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks0.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks006.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks007.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks009.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks06.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks09.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks10.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks111.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks112.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks113.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks114.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks115.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks12.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks131.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks132.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks134.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks136.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks137.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks138.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks15.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks150.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks18.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks188.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks4.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks6.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks66.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks68.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks7.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks89.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks95.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks96.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks988.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agks99.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "airanyumi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "allthings.how", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "americorps.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "amtcd88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "andesnevadotours.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "angelinaangulo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anhqv.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "apartmanidano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aracusbienestar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "archivosmercury.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "arcogb.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "areis.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "arsenal-charodeya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "artlabdentistry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "as395.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "as397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ashtonbromleyceramics.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "assosfi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "athomedeco.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "atlanticyellowpages.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "auditready.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "babyboutique.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "baka.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "barashek.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "barnettville.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "battleguard.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "baudlink.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bbbff.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bdtopshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "beijesweb.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bellebakes.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bestmattressforbackpain.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "betheredge.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "biogiardinaggio.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "birkenwasser.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bitking-trading.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bizlatinhub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bk622.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bk725.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "blockchainmagazine.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bryanfalchuk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "btshenqi.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "btsou.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "btt9797.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "budgetinsurance.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buhex.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "burbankdental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buzzpop.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "calbertsen.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "californialemonlaw.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "canavilage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "capillary.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cargoguard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "carmatworld.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cartes-voyance.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cashbot.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cathy.lgbt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ccriderlosangeles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "celebalita.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "centrederessourcement.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chifumi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "clubapk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "coachapp-ipass.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "coachsystem.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "combigo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "complex-news.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "consultorioespecializado.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "copyrightcoins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cranberry-tee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crowter.li", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "csust.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cuanticasocialmedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cubanross.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cuentamecomopaso.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "curexengine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cybernetivdigital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d868.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d881.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88118.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d8867.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d887.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d8875.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88806.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88811.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88828.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88869.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88871.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88873.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88881.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88883.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88885.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88887.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88889.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88dc02.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88dc06.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88dc10.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88dc16.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88dc27.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88md10.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88md16.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88md28.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d88siteintro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "david-merkel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "daysinnaustin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dd206d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dd213d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dd99d.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "deedyinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "delvickokolo.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dizzie.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dizzieforums.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "djdeepstate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dmerkel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "doceo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "docmed360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dogboarding.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dogeboy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "draemar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon00.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon02.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon30.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon53.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon57.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon61.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon63.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon67.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon70.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon75.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon80.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon81.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon85.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dragon87.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "drcp.tokyo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dressingmaternity.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "droidchart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "drthalhammer.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ds915.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dumb-laws.net.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dwilawyer.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "e7180.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eichinger-stelzl.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eismaschine-vergleich.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "electrolivefest.spb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "elementarewatson.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "elitedangerous.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "emergesydney.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "encd.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ep-cortex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "epilepsiyle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "es-tools.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "es-tools.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "es-tools.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "es-trade.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "escortaccess.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "esmart.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "essayshark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "evohomecare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "exxvip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fabrika.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fabrikafilmes.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "facedack.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "farmtoys.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fertigasi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fgsv-kongress.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "filmarchiv-sachsen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fimfiction.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "firegeisha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "foodsoul.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "forcelink.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "forthvalleykeswick.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "foxhillshotel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fps73.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "freefilesync.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fridarestaurantemexicano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gaestehaus-leipzig.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ganpris.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gemstonz.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "get-quick-bits-fast-2018.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gielectrical.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goeikan.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug0.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug10.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug11.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug16.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug18.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug4.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug5.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug68.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug78.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug89.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goug99.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gpfitness.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gqyyingshi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gqyyy.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "greentea.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "guaranteedloans.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "havedicewillsave.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hebbet.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heijmans.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hellocyber.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "herbaldiyeti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hes.com.cy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hgmaranatha.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hikarinime.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hiltonsydney.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hiveopolis.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "holidaypackage.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "holunderbluetentee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "homeable.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hosteleriauno.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hostingsrv.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "huabantxt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "huabanxs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "huimiquan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "humanlocation.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hy88win.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "idlewildflowers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "igondola.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "incrementation.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "indemnityinsurance.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "indianjewellery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "infivalle.gov.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "infixegypt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "infotelecharge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ingestion.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "injurylawyer.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "innotab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "innovacoachgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "inoio.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "insanelyelegant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "iryodatumoguide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ishimen.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "j3349.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jackingsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jarv.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "javiscoffee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jerome.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jewelers.expert", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jiangzhuyun.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jiji.co.ke", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jijistatic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jiu99shipin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "joorshin.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jppcadvertising.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "juweliervanwillegen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "k81.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaanhaa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi002.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi003.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi005.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi009.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi02.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi05.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi07.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi08.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi11.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi22.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi222.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi55.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi555.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi777.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaishi999.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "karodos.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kashsports.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kathy.lgbt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kawaii.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kayit.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb0101.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb0202.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb03.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb0404.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb05.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb0505.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb059.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb0606.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb0707.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb0909.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb091.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb096.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb1313.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb2121.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb2323.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb2626.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb3030.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb3232.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb367.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb372.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb3737.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb3838.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb4040.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb415.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb4545.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb458.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb4646.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb4783.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb481.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb4949.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb5050.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb514.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb5151.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb545.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb5454.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb5648.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb5757.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb5959.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb6060.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb6161.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb6363.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb6464.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb6565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb659.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb6767.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb709.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb7171.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb750.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb756.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb7575.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb7979.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8181.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8282.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8383.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb840.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8484.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8585.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8802.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8803.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8805.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8806.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8809.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb881.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8810.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8813.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8817.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8819.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8822.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88222.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8826.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8831.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8832.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8833.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88333.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8838.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8841.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8846.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb885.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8851.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8853.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8855.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8860.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb886119.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8871.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8872.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8880.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb888508.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8889.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8892.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88999.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc02.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc06.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc07.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc08.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc09.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc15.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc16.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc25.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc28.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88dc30.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md01.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md02.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md05.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md06.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md08.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md09.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md10.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md11.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md14.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md15.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md16.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md20.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md21.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md22.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md23.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md24.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md25.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md26.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md28.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb88md29.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb8989.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb9090.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb9191.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb9494.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb952.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kb9595.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kbjri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kidonng.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kieskundig.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kimkhisaigon.com.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kinderopvangthuis.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kinfolkcoffee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kitchenwarestore.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kniga-goda.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kokosnusswasser.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kreditkoll.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "krumpf.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ks168158.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ks181.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ks208.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ksvip07.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kubabrussel.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kyotokitsune.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lacuerba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lai.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lapacho-tee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lawfirm.tips", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "learntohack.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lifeonplanetjapan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lignesante.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "limit.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "limnt.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "limstash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lmvsci.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lohvinau.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lolcloud.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lolio.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long-6.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long0310.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long0316.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long0317.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long0318.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long186.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long8021.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long8026.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long8040.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long8076.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long8078.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "long88.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lotc.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lts-tec.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lulua.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lyness.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "m271809.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "magebrawl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "majormedicalinsurance.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "malond.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "malpracticeattorney.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mamabatataya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "marcberndtgen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mariasilverbutterfly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mariendistel-tee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "markstevenkirk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "marvnet.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mastermindbusinesspro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "masternautconnect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mb-demo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mealinsider.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "medbreaker.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mediavamp.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "megaron.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meliowebweer.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meloniecharm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "metallibrarian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "metz-metropolitain.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mgmd.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "miku.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "milieuland.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "miniclip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mojleksikon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "moosikapp.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "moraffpritchard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mundosuiri.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mygg32235.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mynaturalmood.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mysteriesandmargaritasblogspot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nachrichten-heute.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "naide.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nanaimoneighbourhoods.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "natur-care.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "natureshive.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "necord.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "netcials.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "netexpatcommunity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "new-jersey-online-casinos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nick-slowinski.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nuoha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nuovavetro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "officina.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ogkw.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oreadstudios.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "orifonline.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oriontravel.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "outwesthunts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "passau-webdesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "paymyphysician.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "peers.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "personalnames.net.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pharmacistinfo.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "philomathiclife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "piedrasblancas.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pikio.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "plagiarismcheck.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "plaintextpledge.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "plaintextpledge.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "plaintextpledge.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "plaintextpledge.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pmi.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "premrev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "productliabilityinsurance.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "proeski.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "proseo4u.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prosony.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prosperus.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "providential.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "puteulanus.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "raqoo.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ratedever.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "re-crawl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "reindersfoodfashion.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "richieheijmans.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rixcloud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "robertnankervis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rottamazioni.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "roughtime.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sacadura.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "saifonvillas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sard.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "scale.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sccimo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "schachtelhalm-tee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "schafgarbe-tee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "schat.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "scislowcy.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "scom.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sellingsherpa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "seyhanlar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shanefagan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shejutu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shoulderpainrelief.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shtaiman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shtaiman.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shtaiman.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shteiman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shteiman.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "simonholst.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sin-el-fil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sinmik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sitempro.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smalldogbreeds.dog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smictecniservi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smslodging.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "soora.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "speedboost.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "speedwp.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spiegels-op-maat.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sprachenlernen24.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ssmpuc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stanmed24.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "starbaese.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.ltd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.services", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.website", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stemcellclinic.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "studay.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sulytics-tool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "suste.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "szs.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tazarelax.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "teeautomat-teemaschine.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tempatwisatakeren.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "the1.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thecontentcloud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thecraftingstrider.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thekiddz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "theswimdoctors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thutucxuatnhapkhau.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tipsdebellezaysalud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tobimi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tomstew.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tracknerd.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "trainingswiese.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "travelexbiz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "travelexinternational.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "travelround.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "trigraph.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "troiaconsultoria.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tunsbergwhiskyfestival.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tutu.green", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tzyingshi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "uat-mypfp.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "uwe-arzt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "v139.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vazovia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "verbzilla.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "viflores.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "visionofcolour.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vivaldi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vvs.spb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "w-surgeryhospital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wagenmanswonen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "waiwaisw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "webmail.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "weissdorntee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wermuttee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wf336.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "whojoo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "willi-roth-holzbau.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "williejackson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wism.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "workersshop.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "workthings.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wtprecife.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wxxcxd88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xinetwork.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xlyingyuan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn---35-6cdk1dnenygj.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--babassul-t4a.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--bachblten-tee-1ob.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--brombeerblttertee-zqb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--bucheckernl-0fb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--chrysanthemenbltentee-nic.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--cisowcy-pjb5t.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--eebao6b.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--gstehaus-leipzig-vnb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--heidebltentee-2ob.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--hibiskusbltentee-szb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--lavendelblten-tee-c3b.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--maracujal-77a.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--nide-loa.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--rosenbltentee-2ob.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--schwarzkmmeloel-6vb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--weidenrschen-tee-swb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yourkrabivilla.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yporti.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yuzu-tee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z66.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8017.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8023.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8031.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8038.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8056.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8059.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8060.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8067.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8070.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8075.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8078.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8083.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8087.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8089.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8093.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8095.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8097.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8099.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8101.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8102.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8105.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8106.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8109.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8113.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8116.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8120.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8121.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8122.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8125.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8130.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8132.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8133.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8137.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8138.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8151.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8155.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8162.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8170.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8182.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8195.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8196.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8199.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8200.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8207.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8208.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8209.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8210.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8212.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8215.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8217.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8225.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8226.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8233.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8821.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8829.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8851.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8856.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8860.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8865.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8905.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8906.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8922.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8925.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "z8929.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zaffke.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zakonu.net.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd0505.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd0606.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd0808.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd1515.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd1616.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd1717.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd202.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd203.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd205.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd206.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd207.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd208.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd209.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd232.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd235.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd236.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd237.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd239.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd252.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd253.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd257.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd258.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd259.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd262.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd265.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd267.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd270.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd2727.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd273.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd275.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd276.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd279.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd280.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd282.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd283.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd286.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd287.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd289.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd290.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd293.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd295.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd297.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd302.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd303.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd305.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd306.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd307.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd3232.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd3535.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd3939.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd4747.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd4848.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd5050.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd5252.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6464.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6862.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6863.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6866.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6867.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6878.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6880.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6883.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6885.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6887.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6889.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6890.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd6893.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd7575.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8585.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8787.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8826.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8828.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8829.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8832.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8836.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8839.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8852.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8853.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8857.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8858.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8859.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8863.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8878.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8882.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd8898.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd9696.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zd9797.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zhis.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zhou28d88vip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zhuktrans.msk.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zigarn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zinniazorgverlening.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ziqijiang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zitronengras-tee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl-19.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl-29.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl-89.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl016.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl017.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl019.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl0202.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl026.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl031.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl036.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl0505.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl051.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl056.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl0606.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl071.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl072.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl073.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl076.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl090.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl0909.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl1010.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl1212.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl1616.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl2020.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl236.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl2424.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl2525.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl256.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl2727.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl2828.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl2929.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl335.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl3535.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl3737.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl3838.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl5050.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl5151.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl6161.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl6363.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl6475.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl6565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl6767.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl6868.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl7171.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl738.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl760.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl7979.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8181.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8282.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8484.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl850.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl861.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8686.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8787.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8824.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl883.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8853.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8861.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8862.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8870.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl8897.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl9090.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl9191.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl9292.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl969.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl9696.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl9797.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zl9898.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zlhgc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zlhuodong.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zltymacau.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     // END OF 1-YEAR BULK HSTS ENTRIES
 
     // Only eTLD+1 domains can be submitted automatically to hstspreload.org,
diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc
index d5b6730..5ac9dbc 100644
--- a/net/nqe/network_quality_estimator.cc
+++ b/net/nqe/network_quality_estimator.cc
@@ -865,6 +865,11 @@
   new_throughput_observations_since_last_ect_computation_ = 0;
 }
 
+base::Optional<net::EffectiveConnectionType>
+NetworkQualityEstimator::GetOverrideECT() const {
+  return base::nullopt;
+}
+
 void NetworkQualityEstimator::ClampKbpsBasedOnEct() {
   // No need to clamp when ECT is unknown or if the connection speed is fast.
   if (effective_connection_type_ == EFFECTIVE_CONNECTION_TYPE_UNKNOWN ||
@@ -988,6 +993,11 @@
 EffectiveConnectionType NetworkQualityEstimator::GetEffectiveConnectionType()
     const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  base::Optional<net::EffectiveConnectionType> override_ect = GetOverrideECT();
+  if (override_ect) {
+    return override_ect.value();
+  }
   return effective_connection_type_;
 }
 
@@ -1569,10 +1579,12 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK_NE(EFFECTIVE_CONNECTION_TYPE_LAST, effective_connection_type_);
 
+  base::Optional<net::EffectiveConnectionType> override_ect = GetOverrideECT();
+
   // TODO(tbansal): Add hysteresis in the notification.
   for (auto& observer : effective_connection_type_observer_list_)
-    observer.OnEffectiveConnectionTypeChanged(effective_connection_type_);
-
+    observer.OnEffectiveConnectionTypeChanged(
+        override_ect ? override_ect.value() : effective_connection_type_);
   // Add the estimates of the current network to the cache store.
   network_quality_store_->Add(current_network_id_,
                               nqe::internal::CachedNetworkQuality(
@@ -1597,6 +1609,12 @@
 
   if (!effective_connection_type_observer_list_.HasObserver(observer))
     return;
+
+  base::Optional<net::EffectiveConnectionType> override_ect = GetOverrideECT();
+  if (override_ect) {
+    observer->OnEffectiveConnectionTypeChanged(override_ect.value());
+    return;
+  }
   if (effective_connection_type_ == EFFECTIVE_CONNECTION_TYPE_UNKNOWN)
     return;
   observer->OnEffectiveConnectionTypeChanged(effective_connection_type_);
diff --git a/net/nqe/network_quality_estimator.h b/net/nqe/network_quality_estimator.h
index 32977a9..1eab4cd6 100644
--- a/net/nqe/network_quality_estimator.h
+++ b/net/nqe/network_quality_estimator.h
@@ -403,6 +403,10 @@
   // if there is a change in its value.
   void ComputeEffectiveConnectionType();
 
+  // Returns a non-null value if the value of the effective connection type has
+  // been overridden for testing.
+  virtual base::Optional<net::EffectiveConnectionType> GetOverrideECT() const;
+
   // Observer list for RTT or throughput estimates. Protected for testing.
   base::ObserverList<RTTAndThroughputEstimatesObserver>::Unchecked
       rtt_and_throughput_estimates_observer_list_;
@@ -421,6 +425,9 @@
   // Number of end to end RTT samples available when the ECT was last computed.
   size_t end_to_end_rtt_observation_count_at_last_ect_computation_;
 
+  // Current count of active peer to peer connections.
+  uint32_t p2p_connections_count_ = 0u;
+
  private:
   FRIEND_TEST_ALL_PREFIXES(NetworkQualityEstimatorTest,
                            AdaptiveRecomputationEffectiveConnectionType);
@@ -569,9 +576,6 @@
   // type.
   void ClampKbpsBasedOnEct();
 
-  // Current count of active peer to peer connections.
-  uint32_t p2p_connections_count_ = 0u;
-
   // Earliest timestamp since when there is at least one active peer to peer
   // connection count. Set to current timestamp when |p2p_connections_count_|
   // changes from 0 to 1. Reset to null when |p2p_connections_count_| becomes 0.
diff --git a/net/nqe/network_quality_estimator_test_util.cc b/net/nqe/network_quality_estimator_test_util.cc
index 4ee7b4fb..ef1b513 100644
--- a/net/nqe/network_quality_estimator_test_util.cc
+++ b/net/nqe/network_quality_estimator_test_util.cc
@@ -316,6 +316,18 @@
     observer.OnEffectiveConnectionTypeChanged(type);
 }
 
+base::Optional<net::EffectiveConnectionType>
+TestNetworkQualityEstimator::GetOverrideECT() const {
+  return effective_connection_type_;
+}
+
+void TestNetworkQualityEstimator::
+    SetAndNotifyObserversOfP2PActiveConnectionsCountChange(uint32_t count) {
+  p2p_connections_count_ = count;
+  for (auto& observer : peer_to_peer_type_observer_list_)
+    observer.OnPeerToPeerConnectionsCountChange(count);
+}
+
 void TestNetworkQualityEstimator::RecordSpdyPingLatency(
     const HostPortPair& host_port_pair,
     base::TimeDelta rtt) {
diff --git a/net/nqe/network_quality_estimator_test_util.h b/net/nqe/network_quality_estimator_test_util.h
index 5786f91..09568ba 100644
--- a/net/nqe/network_quality_estimator_test_util.h
+++ b/net/nqe/network_quality_estimator_test_util.h
@@ -209,6 +209,11 @@
   void SetAndNotifyObserversOfEffectiveConnectionType(
       EffectiveConnectionType type);
 
+  // Updates the count of active P2P connections to |count| and notifies the
+  // registered observers that the active P2P connection counts has changed to
+  // |count|.
+  void SetAndNotifyObserversOfP2PActiveConnectionsCountChange(uint32_t count);
+
   void SetTransportRTTAtastECTSampleCount(size_t count) {
     transport_rtt_observation_count_last_ect_computation_ = count;
   }
@@ -245,6 +250,8 @@
   nqe::internal::NetworkID GetCurrentNetworkID() const override;
   int32_t GetCurrentSignalStrength() const override;
 
+  base::Optional<net::EffectiveConnectionType> GetOverrideECT() const override;
+
   // Net log provided to network quality estimator.
   std::unique_ptr<net::BoundTestNetLog> net_log_;
 
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
index 0bc5715..1267d692 100644
--- a/pdf/pdfium/pdfium_engine.cc
+++ b/pdf/pdfium/pdfium_engine.cc
@@ -1371,7 +1371,7 @@
     return false;
 
   std::vector<pp::Rect> selection_rect_vector;
-  GetAllScreenRectsUnion(&selection_, GetVisibleRect().point(),
+  GetAllScreenRectsUnion(selection_, GetVisibleRect().point(),
                          &selection_rect_vector);
   for (const auto& rect : selection_rect_vector) {
     if (rect.Contains(point.x(), point.y()))
@@ -2047,10 +2047,11 @@
   find_factory_.CancelAll();
 }
 
-void PDFiumEngine::GetAllScreenRectsUnion(std::vector<PDFiumRange>* rect_range,
-                                          const pp::Point& offset_point,
-                                          std::vector<pp::Rect>* rect_vector) {
-  for (auto& range : *rect_range) {
+void PDFiumEngine::GetAllScreenRectsUnion(
+    const std::vector<PDFiumRange>& rect_range,
+    const pp::Point& offset_point,
+    std::vector<pp::Rect>* rect_vector) const {
+  for (const auto& range : rect_range) {
     pp::Rect result_rect;
     const std::vector<pp::Rect>& rects =
         range.GetScreenRects(offset_point, current_zoom_, current_rotation_);
@@ -2062,7 +2063,7 @@
 
 void PDFiumEngine::UpdateTickMarks() {
   std::vector<pp::Rect> tickmarks;
-  GetAllScreenRectsUnion(&find_results_, pp::Point(0, 0), &tickmarks);
+  GetAllScreenRectsUnion(find_results_, pp::Point(0, 0), &tickmarks);
   client_->UpdateTickMarks(tickmarks);
 }
 
@@ -2913,6 +2914,7 @@
   PaintPageShadow(progressive_index, image_data);
 
   DrawSelections(progressive_index, image_data);
+  form_highlights_.clear();
 
   FPDF_RenderPage_Close(pages_[page_index]->GetPage());
   progressive_paints_.erase(progressive_paints_.begin() + progressive_index);
@@ -3002,7 +3004,7 @@
 }
 
 void PDFiumEngine::DrawSelections(int progressive_index,
-                                  pp::ImageData* image_data) {
+                                  pp::ImageData* image_data) const {
   DCHECK_GE(progressive_index, 0);
   DCHECK_LT(static_cast<size_t>(progressive_index), progressive_paints_.size());
   DCHECK(image_data);
@@ -3017,7 +3019,7 @@
 
   std::vector<pp::Rect> highlighted_rects;
   pp::Rect visible_rect = GetVisibleRect();
-  for (auto& range : selection_) {
+  for (const auto& range : selection_) {
     if (range.page_index() != page_index)
       continue;
 
@@ -3045,7 +3047,6 @@
     Highlight(region, stride, visible_selection, kHighlightColorR,
               kHighlightColorG, kHighlightColorB, &highlighted_rects);
   }
-  form_highlights_.clear();
 }
 
 void PDFiumEngine::PaintUnavailablePage(int page_index,
@@ -3151,7 +3152,7 @@
                              int color_red,
                              int color_green,
                              int color_blue,
-                             std::vector<pp::Rect>* highlighted_rects) {
+                             std::vector<pp::Rect>* highlighted_rects) const {
   if (!buffer)
     return;
 
@@ -3242,7 +3243,7 @@
 PDFiumEngine::SelectionChangeInvalidator::GetVisibleSelections() const {
   std::vector<pp::Rect> rects;
   pp::Point visible_point = engine_->GetVisibleRect().point();
-  for (auto& range : engine_->selection_) {
+  for (const auto& range : engine_->selection_) {
     // Exclude selections on pages that's not currently visible.
     if (!engine_->IsPageVisible(range.page_index()))
       continue;
@@ -3413,7 +3414,7 @@
   pp::Rect left(std::numeric_limits<int32_t>::max(),
                 std::numeric_limits<int32_t>::max(), 0, 0);
   pp::Rect right;
-  for (auto& sel : selection_) {
+  for (const auto& sel : selection_) {
     const std::vector<pp::Rect>& screen_rects = sel.GetScreenRects(
         GetVisibleRect().point(), current_zoom_, current_rotation_);
     for (const auto& rect : screen_rects) {
diff --git a/pdf/pdfium/pdfium_engine.h b/pdf/pdfium/pdfium_engine.h
index c96dcc86..7d36979 100644
--- a/pdf/pdfium/pdfium_engine.h
+++ b/pdf/pdfium/pdfium_engine.h
@@ -264,9 +264,9 @@
   // PDFiumPage because we might not have that structure when we need this.
   pp::Size GetPageSize(int index);
 
-  void GetAllScreenRectsUnion(std::vector<PDFiumRange>* rect_range,
+  void GetAllScreenRectsUnion(const std::vector<PDFiumRange>& rect_range,
                               const pp::Point& offset_point,
-                              std::vector<pp::Rect>* rect_vector);
+                              std::vector<pp::Rect>* rect_vector) const;
 
   void UpdateTickMarks();
 
@@ -364,7 +364,7 @@
   void PaintPageShadow(int progressive_index, pp::ImageData* image_data);
 
   // Highlight visible find results and selections.
-  void DrawSelections(int progressive_index, pp::ImageData* image_data);
+  void DrawSelections(int progressive_index, pp::ImageData* image_data) const;
 
   // Paints an page that hasn't finished downloading.
   void PaintUnavailablePage(int page_index,
@@ -408,7 +408,7 @@
                  int color_red,
                  int color_green,
                  int color_blue,
-                 std::vector<pp::Rect>* highlighted_rects);
+                 std::vector<pp::Rect>* highlighted_rects) const;
 
   // Helper function to convert a device to page coordinates.  If the page is
   // not yet loaded, |page_x| and |page_y| will be set to 0.
diff --git a/pdf/pdfium/pdfium_range.cc b/pdf/pdfium/pdfium_range.cc
index a89c428..f36fc138 100644
--- a/pdf/pdfium/pdfium_range.cc
+++ b/pdf/pdfium/pdfium_range.cc
@@ -54,7 +54,7 @@
 const std::vector<pp::Rect>& PDFiumRange::GetScreenRects(
     const pp::Point& offset,
     double zoom,
-    int rotation) {
+    int rotation) const {
   if (offset == cached_screen_rects_offset_ &&
       zoom == cached_screen_rects_zoom_) {
     return cached_screen_rects_;
diff --git a/pdf/pdfium/pdfium_range.h b/pdf/pdfium/pdfium_range.h
index 80ab37e..8594ed6 100644
--- a/pdf/pdfium/pdfium_range.h
+++ b/pdf/pdfium/pdfium_range.h
@@ -40,7 +40,7 @@
   // Gets bounding rectangles of range in screen coordinates.
   const std::vector<pp::Rect>& GetScreenRects(const pp::Point& offset,
                                               double zoom,
-                                              int rotation);
+                                              int rotation) const;
 
   // Gets the string of characters in this range.
   base::string16 GetText() const;
@@ -53,9 +53,9 @@
   int char_count_;
 
   // Cache of ScreenRect, and the associated variables used when caching it.
-  std::vector<pp::Rect> cached_screen_rects_;
-  pp::Point cached_screen_rects_offset_;
-  double cached_screen_rects_zoom_ = 0;
+  mutable std::vector<pp::Rect> cached_screen_rects_;
+  mutable pp::Point cached_screen_rects_offset_;
+  mutable double cached_screen_rects_zoom_ = 0;
 };
 
 }  // namespace chrome_pdf
diff --git a/remoting/host/BUILD.gn b/remoting/host/BUILD.gn
index e8445db..745c0156 100644
--- a/remoting/host/BUILD.gn
+++ b/remoting/host/BUILD.gn
@@ -486,6 +486,7 @@
     "desktop_process_unittest.cc",
     "desktop_session_agent_unittest.cc",
     "ftl_host_change_notification_listener_unittest.cc",
+    "ftl_signaling_connector_unittest.cc",
     "gcd_rest_client_unittest.cc",
     "gcd_state_updater_unittest.cc",
     "heartbeat_sender_unittest.cc",
diff --git a/remoting/host/ftl_signaling_connector.cc b/remoting/host/ftl_signaling_connector.cc
index 0c4a8f9..35ede8b5 100644
--- a/remoting/host/ftl_signaling_connector.cc
+++ b/remoting/host/ftl_signaling_connector.cc
@@ -65,7 +65,7 @@
 }  // namespace
 
 FtlSignalingConnector::FtlSignalingConnector(
-    FtlSignalStrategy* signal_strategy,
+    SignalStrategy* signal_strategy,
     base::OnceClosure auth_failed_callback)
     : signal_strategy_(signal_strategy),
       auth_failed_callback_(std::move(auth_failed_callback)),
diff --git a/remoting/host/ftl_signaling_connector.h b/remoting/host/ftl_signaling_connector.h
index 3dbb1b2..f99b602 100644
--- a/remoting/host/ftl_signaling_connector.h
+++ b/remoting/host/ftl_signaling_connector.h
@@ -10,7 +10,7 @@
 #include "base/timer/timer.h"
 #include "net/base/backoff_entry.h"
 #include "net/base/network_change_notifier.h"
-#include "remoting/signaling/ftl_signal_strategy.h"
+#include "remoting/signaling/signal_strategy.h"
 
 namespace remoting {
 
@@ -28,7 +28,7 @@
   // The |auth_failed_callback| is called when authentication fails. The
   // singaling connector will no longer try to reconnect after this callback is
   // called.
-  FtlSignalingConnector(FtlSignalStrategy* signal_strategy,
+  FtlSignalingConnector(SignalStrategy* signal_strategy,
                         base::OnceClosure auth_failed_callback);
   ~FtlSignalingConnector() override;
 
@@ -44,10 +44,12 @@
       net::NetworkChangeNotifier::ConnectionType type) override;
 
  private:
+  friend class FtlSignalingConnectorTest;
+
   void TryReconnect(base::TimeDelta delay);
   void DoReconnect();
 
-  FtlSignalStrategy* signal_strategy_;
+  SignalStrategy* signal_strategy_;
   base::OnceClosure auth_failed_callback_;
 
   net::BackoffEntry backoff_;
diff --git a/remoting/host/ftl_signaling_connector_unittest.cc b/remoting/host/ftl_signaling_connector_unittest.cc
new file mode 100644
index 0000000..9664899
--- /dev/null
+++ b/remoting/host/ftl_signaling_connector_unittest.cc
@@ -0,0 +1,133 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/host/ftl_signaling_connector.h"
+
+#include <memory>
+
+#include "base/test/mock_callback.h"
+#include "base/test/scoped_task_environment.h"
+#include "remoting/signaling/fake_signal_strategy.h"
+#include "remoting/signaling/signaling_address.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace remoting {
+
+namespace {
+
+using testing::_;
+
+constexpr char kLocalFtlId[] = "local_user@domain.com/chromoting_ftl_abc123";
+
+}  // namespace
+
+class FtlSignalingConnectorTest : public testing::Test {
+ public:
+  FtlSignalingConnectorTest() {
+    signal_strategy_.SimulateTwoStageConnect();
+    signal_strategy_.Disconnect();
+    signaling_connector_ = std::make_unique<FtlSignalingConnector>(
+        &signal_strategy_, auth_failed_callback_.Get());
+  }
+
+  ~FtlSignalingConnectorTest() override {
+    scoped_task_environment_.FastForwardUntilNoTasksRemain();
+  }
+
+ protected:
+  const net::BackoffEntry& GetBackoff() {
+    return signaling_connector_->backoff_;
+  }
+
+  const base::OneShotTimer& GetBackoffResetTimer() {
+    return signaling_connector_->backoff_reset_timer_;
+  }
+
+  base::test::ScopedTaskEnvironment scoped_task_environment_{
+      base::test::ScopedTaskEnvironment::MainThreadType::MOCK_TIME,
+      base::test::ScopedTaskEnvironment::NowSource::MAIN_THREAD_MOCK_TIME};
+  FakeSignalStrategy signal_strategy_{SignalingAddress(kLocalFtlId)};
+  base::MockCallback<base::OnceClosure> auth_failed_callback_;
+  std::unique_ptr<FtlSignalingConnector> signaling_connector_;
+};
+
+TEST_F(FtlSignalingConnectorTest, StartAndSucceed) {
+  signaling_connector_->Start();
+  scoped_task_environment_.FastForwardUntilNoTasksRemain();
+  ASSERT_EQ(SignalStrategy::CONNECTING, signal_strategy_.GetState());
+  signal_strategy_.ProceedConnect();
+  ASSERT_EQ(SignalStrategy::CONNECTED, signal_strategy_.GetState());
+  ASSERT_TRUE(GetBackoffResetTimer().IsRunning());
+}
+
+TEST_F(FtlSignalingConnectorTest, StartAndAuthFailed) {
+  signaling_connector_->Start();
+  scoped_task_environment_.FastForwardUntilNoTasksRemain();
+  ASSERT_EQ(SignalStrategy::CONNECTING, signal_strategy_.GetState());
+
+  signal_strategy_.SetIsSignInError(true);
+  signal_strategy_.SetError(SignalStrategy::AUTHENTICATION_FAILED);
+
+  EXPECT_CALL(auth_failed_callback_, Run()).Times(1);
+  signal_strategy_.Disconnect();
+}
+
+TEST_F(FtlSignalingConnectorTest, StartAndFailedThenRetryAndSucceeded) {
+  ASSERT_EQ(0, GetBackoff().failure_count());
+  signaling_connector_->Start();
+  scoped_task_environment_.FastForwardUntilNoTasksRemain();
+  ASSERT_EQ(SignalStrategy::CONNECTING, signal_strategy_.GetState());
+
+  signal_strategy_.SetError(SignalStrategy::NETWORK_ERROR);
+  signal_strategy_.Disconnect();
+  ASSERT_EQ(1, GetBackoff().failure_count());
+
+  scoped_task_environment_.FastForwardBy(GetBackoff().GetTimeUntilRelease());
+  ASSERT_EQ(SignalStrategy::CONNECTING, signal_strategy_.GetState());
+  signal_strategy_.ProceedConnect();
+
+  // Failure count is not reset immediately.
+  ASSERT_EQ(1, GetBackoff().failure_count());
+
+  // Failure count is eventually reset to 0.
+  scoped_task_environment_.FastForwardUntilNoTasksRemain();
+  ASSERT_EQ(0, GetBackoff().failure_count());
+}
+
+TEST_F(FtlSignalingConnectorTest,
+       StartAndImmediatelyDisconnected_RetryWithBackoff) {
+  ASSERT_EQ(0, GetBackoff().failure_count());
+  signaling_connector_->Start();
+  scoped_task_environment_.FastForwardUntilNoTasksRemain();
+  ASSERT_EQ(SignalStrategy::CONNECTING, signal_strategy_.GetState());
+
+  signal_strategy_.ProceedConnect();
+  ASSERT_EQ(0, GetBackoff().failure_count());
+
+  signal_strategy_.Disconnect();
+  ASSERT_EQ(1, GetBackoff().failure_count());
+
+  scoped_task_environment_.FastForwardBy(GetBackoff().GetTimeUntilRelease());
+  ASSERT_EQ(SignalStrategy::CONNECTING, signal_strategy_.GetState());
+  signal_strategy_.ProceedConnect();
+
+  // Failure count is not reset immediately.
+  ASSERT_EQ(1, GetBackoff().failure_count());
+
+  // Failure count is eventually reset to 0.
+  scoped_task_environment_.FastForwardUntilNoTasksRemain();
+  ASSERT_EQ(0, GetBackoff().failure_count());
+}
+
+TEST_F(FtlSignalingConnectorTest, AutoConnectOnNetworkChange) {
+  signaling_connector_->OnNetworkChanged(
+      net::NetworkChangeNotifier::CONNECTION_ETHERNET);
+  // Reconnection starts with some delay.
+  ASSERT_EQ(SignalStrategy::DISCONNECTED, signal_strategy_.GetState());
+  scoped_task_environment_.FastForwardUntilNoTasksRemain();
+  ASSERT_EQ(SignalStrategy::CONNECTING, signal_strategy_.GetState());
+}
+
+}  // namespace remoting
diff --git a/remoting/signaling/fake_signal_strategy.cc b/remoting/signaling/fake_signal_strategy.cc
index afcd43dd..9de5485 100644
--- a/remoting/signaling/fake_signal_strategy.cc
+++ b/remoting/signaling/fake_signal_strategy.cc
@@ -40,6 +40,16 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 }
 
+void FakeSignalStrategy::SetError(Error error) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  error_ = error;
+}
+
+void FakeSignalStrategy::SetIsSignInError(bool is_sign_in_error) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  is_sign_in_error_ = is_sign_in_error;
+}
+
 void FakeSignalStrategy::SetState(State state) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (state == state_) {
@@ -78,6 +88,11 @@
   simulate_reorder_ = true;
 }
 
+void FakeSignalStrategy::SimulateTwoStageConnect() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  simulate_two_stage_connect_ = true;
+}
+
 void FakeSignalStrategy::OnIncomingMessage(
     std::unique_ptr<jingle_xmpp::XmlElement> stanza) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -98,11 +113,16 @@
   }
 }
 
-void FakeSignalStrategy::Connect() {
+void FakeSignalStrategy::ProceedConnect() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   SetState(CONNECTED);
 }
 
+void FakeSignalStrategy::Connect() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  SetState(simulate_two_stage_connect_ ? CONNECTING : CONNECTED);
+}
+
 void FakeSignalStrategy::Disconnect() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   SetState(DISCONNECTED);
@@ -113,7 +133,7 @@
 }
 
 SignalStrategy::Error FakeSignalStrategy::GetError() const {
-  return OK;
+  return error_;
 }
 
 const SignalingAddress& FakeSignalStrategy::GetLocalAddress() const {
@@ -154,6 +174,10 @@
   return base::NumberToString(last_id_);
 }
 
+bool FakeSignalStrategy::IsSignInError() const {
+  return is_sign_in_error_;
+}
+
 // static
 void FakeSignalStrategy::DeliverMessageOnThread(
     scoped_refptr<base::SingleThreadTaskRunner> thread,
diff --git a/remoting/signaling/fake_signal_strategy.h b/remoting/signaling/fake_signal_strategy.h
index f8b2c599..9717ce94 100644
--- a/remoting/signaling/fake_signal_strategy.h
+++ b/remoting/signaling/fake_signal_strategy.h
@@ -43,6 +43,8 @@
     send_delay_ = delay;
   }
 
+  void SetError(Error error);
+  void SetIsSignInError(bool is_sign_in_error);
   void SetState(State state);
   void SetPeerCallback(const PeerCallback& peer_callback);
 
@@ -55,9 +57,17 @@
   // next pair of messages.
   void SimulateMessageReordering();
 
+  // If this is enabled, calling Connect() will transition the signal strategy
+  // state to CONNECTING instead of CONNECTED, and caller needs to call
+  // ProceedConnect() to transition to CONNECTED, or Disconnect() to transition
+  // to DISCONNECTED.
+  void SimulateTwoStageConnect();
+
   // Called by the |peer_|. Takes ownership of |stanza|.
   void OnIncomingMessage(std::unique_ptr<jingle_xmpp::XmlElement> stanza);
 
+  void ProceedConnect();
+
   // SignalStrategy interface.
   void Connect() override;
   void Disconnect() override;
@@ -68,6 +78,7 @@
   void RemoveListener(Listener* listener) override;
   bool SendStanza(std::unique_ptr<jingle_xmpp::XmlElement> stanza) override;
   std::string GetNextId() override;
+  bool IsSignInError() const override;
 
  private:
   static void DeliverMessageOnThread(
@@ -79,6 +90,8 @@
 
   scoped_refptr<base::SingleThreadTaskRunner> main_thread_;
 
+  Error error_ = OK;
+  bool is_sign_in_error_ = false;
   State state_ = CONNECTED;
 
   SignalingAddress address_;
@@ -90,6 +103,7 @@
   base::TimeDelta send_delay_;
 
   bool simulate_reorder_ = false;
+  bool simulate_two_stage_connect_ = false;
   std::unique_ptr<jingle_xmpp::XmlElement> pending_stanza_;
 
   // All received messages, includes thouse still in |pending_messages_|.
diff --git a/remoting/signaling/ftl_signal_strategy.h b/remoting/signaling/ftl_signal_strategy.h
index 2b64fe25..664beef 100644
--- a/remoting/signaling/ftl_signal_strategy.h
+++ b/remoting/signaling/ftl_signal_strategy.h
@@ -38,10 +38,7 @@
   void RemoveListener(Listener* listener) override;
   bool SendStanza(std::unique_ptr<jingle_xmpp::XmlElement> stanza) override;
   std::string GetNextId() override;
-
-  // Returns true if the signal strategy gets into an error state when it tries
-  // to sign in. You can get back the actual error by calling GetError().
-  bool IsSignInError() const;
+  bool IsSignInError() const override;
 
  private:
   friend class FtlSignalStrategyTest;
diff --git a/remoting/signaling/signal_strategy.cc b/remoting/signaling/signal_strategy.cc
index 6f9c6d9f..dbe41912 100644
--- a/remoting/signaling/signal_strategy.cc
+++ b/remoting/signaling/signal_strategy.cc
@@ -13,4 +13,8 @@
   return false;
 }
 
+bool SignalStrategy::IsSignInError() const {
+  return false;
+}
+
 }  // namespace remoting
diff --git a/remoting/signaling/signal_strategy.h b/remoting/signaling/signal_strategy.h
index 08b8bc5..2c16f8d 100644
--- a/remoting/signaling/signal_strategy.h
+++ b/remoting/signaling/signal_strategy.h
@@ -116,6 +116,11 @@
   // request.
   virtual std::string GetNextId() = 0;
 
+  // Returns true if the signal strategy gets into an error state when it tries
+  // to sign in. You can get back the actual error by calling GetError().
+  // The default implementation always returns false.
+  virtual bool IsSignInError() const;
+
  private:
   DISALLOW_COPY_AND_ASSIGN(SignalStrategy);
 };
diff --git a/services/device/generic_sensor/platform_sensor.cc b/services/device/generic_sensor/platform_sensor.cc
index 0a749da0..15a1b4c 100644
--- a/services/device/generic_sensor/platform_sensor.cc
+++ b/services/device/generic_sensor/platform_sensor.cc
@@ -21,8 +21,7 @@
     : task_runner_(base::ThreadTaskRunnerHandle::Get()),
       reading_buffer_(reading_buffer),
       type_(type),
-      provider_(provider),
-      weak_factory_(this) {}
+      provider_(provider) {}
 
 PlatformSensor::~PlatformSensor() {
   if (provider_)
diff --git a/services/device/generic_sensor/platform_sensor.h b/services/device/generic_sensor/platform_sensor.h
index c45f6a5..b33a627 100644
--- a/services/device/generic_sensor/platform_sensor.h
+++ b/services/device/generic_sensor/platform_sensor.h
@@ -110,7 +110,7 @@
   ConfigMap config_map_;
   PlatformSensorProvider* provider_;
   bool is_active_ = false;
-  base::WeakPtrFactory<PlatformSensor> weak_factory_;
+  base::WeakPtrFactory<PlatformSensor> weak_factory_{this};
   DISALLOW_COPY_AND_ASSIGN(PlatformSensor);
 };
 
diff --git a/services/device/generic_sensor/platform_sensor_linux.cc b/services/device/generic_sensor/platform_sensor_linux.cc
index 9b0fc5d..b5798bd 100644
--- a/services/device/generic_sensor/platform_sensor_linux.cc
+++ b/services/device/generic_sensor/platform_sensor_linux.cc
@@ -31,8 +31,7 @@
     : PlatformSensor(type, reading_buffer, provider),
       default_configuration_(
           PlatformSensorConfiguration(sensor_device->device_frequency)),
-      reporting_mode_(sensor_device->reporting_mode),
-      weak_factory_(this) {
+      reporting_mode_(sensor_device->reporting_mode) {
   sensor_reader_ = SensorReader::Create(
       *sensor_device, weak_factory_.GetWeakPtr(), task_runner_);
 }
diff --git a/services/device/generic_sensor/platform_sensor_linux.h b/services/device/generic_sensor/platform_sensor_linux.h
index c50345a..2702f97 100644
--- a/services/device/generic_sensor/platform_sensor_linux.h
+++ b/services/device/generic_sensor/platform_sensor_linux.h
@@ -48,7 +48,7 @@
   // and IPC can be notified that updates are available.
   SensorReading old_values_;
 
-  base::WeakPtrFactory<PlatformSensorLinux> weak_factory_;
+  base::WeakPtrFactory<PlatformSensorLinux> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(PlatformSensorLinux);
 };
diff --git a/services/device/generic_sensor/platform_sensor_provider_linux.cc b/services/device/generic_sensor/platform_sensor_provider_linux.cc
index 1d447a3..a6f4bbf8 100644
--- a/services/device/generic_sensor/platform_sensor_provider_linux.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_linux.cc
@@ -56,8 +56,7 @@
       blocking_task_runner_(
           base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskRunnerTraits)),
       sensor_device_manager_(nullptr,
-                             base::OnTaskRunnerDeleter(blocking_task_runner_)),
-      weak_ptr_factory_(this) {
+                             base::OnTaskRunnerDeleter(blocking_task_runner_)) {
   sensor_device_manager_.reset(
       new SensorDeviceManager(weak_ptr_factory_.GetWeakPtr()));
 }
diff --git a/services/device/generic_sensor/platform_sensor_provider_linux.h b/services/device/generic_sensor/platform_sensor_provider_linux.h
index 57ccfa3..1373787 100644
--- a/services/device/generic_sensor/platform_sensor_provider_linux.h
+++ b/services/device/generic_sensor/platform_sensor_provider_linux.h
@@ -103,7 +103,7 @@
   std::unique_ptr<SensorDeviceManager, base::OnTaskRunnerDeleter>
       sensor_device_manager_;
 
-  base::WeakPtrFactory<PlatformSensorProviderLinux> weak_ptr_factory_;
+  base::WeakPtrFactory<PlatformSensorProviderLinux> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(PlatformSensorProviderLinux);
 };
diff --git a/services/device/generic_sensor/platform_sensor_reader_linux.cc b/services/device/generic_sensor/platform_sensor_reader_linux.cc
index 15b8662..f3242ee3 100644
--- a/services/device/generic_sensor/platform_sensor_reader_linux.cc
+++ b/services/device/generic_sensor/platform_sensor_reader_linux.cc
@@ -98,7 +98,7 @@
   std::unique_ptr<BlockingTaskRunnerHelper, base::OnTaskRunnerDeleter>
       blocking_task_helper_;
 
-  base::WeakPtrFactory<PollingSensorReader> weak_factory_;
+  base::WeakPtrFactory<PollingSensorReader> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(PollingSensorReader);
 };
@@ -182,8 +182,7 @@
     scoped_refptr<base::SingleThreadTaskRunner> task_runner)
     : SensorReader(sensor, std::move(task_runner)),
       blocking_task_helper_(nullptr,
-                            base::OnTaskRunnerDeleter(blocking_task_runner_)),
-      weak_factory_(this) {
+                            base::OnTaskRunnerDeleter(blocking_task_runner_)) {
   // We need to properly initialize |blocking_task_helper_| here because we need
   // |weak_factory_| to be created first.
   blocking_task_helper_.reset(
diff --git a/services/device/generic_sensor/sensor_provider_impl.cc b/services/device/generic_sensor/sensor_provider_impl.cc
index bb28b46..7851de5 100644
--- a/services/device/generic_sensor/sensor_provider_impl.cc
+++ b/services/device/generic_sensor/sensor_provider_impl.cc
@@ -48,7 +48,7 @@
 }
 
 SensorProviderImpl::SensorProviderImpl(PlatformSensorProvider* provider)
-    : provider_(provider), weak_ptr_factory_(this) {
+    : provider_(provider) {
   DCHECK(provider_);
 }
 
diff --git a/services/device/generic_sensor/sensor_provider_impl.h b/services/device/generic_sensor/sensor_provider_impl.h
index fa8f45a8..b177d84 100644
--- a/services/device/generic_sensor/sensor_provider_impl.h
+++ b/services/device/generic_sensor/sensor_provider_impl.h
@@ -38,7 +38,7 @@
                      scoped_refptr<PlatformSensor> sensor);
 
   PlatformSensorProvider* provider_;
-  base::WeakPtrFactory<SensorProviderImpl> weak_ptr_factory_;
+  base::WeakPtrFactory<SensorProviderImpl> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(SensorProviderImpl);
 };
diff --git a/services/device/geolocation/network_location_provider.cc b/services/device/geolocation/network_location_provider.cc
index d04b550..6d1656c 100644
--- a/services/device/geolocation/network_location_provider.cc
+++ b/services/device/geolocation/network_location_provider.cc
@@ -48,8 +48,7 @@
           std::move(url_loader_factory),
           api_key,
           base::Bind(&NetworkLocationProvider::OnLocationResponse,
-                     base::Unretained(this)))),
-      weak_factory_(this) {
+                     base::Unretained(this)))) {
   DCHECK(position_cache_);
 }
 
diff --git a/services/device/geolocation/network_location_provider.h b/services/device/geolocation/network_location_provider.h
index 5229664..9337ccd 100644
--- a/services/device/geolocation/network_location_provider.h
+++ b/services/device/geolocation/network_location_provider.h
@@ -82,7 +82,7 @@
 
   base::ThreadChecker thread_checker_;
 
-  base::WeakPtrFactory<NetworkLocationProvider> weak_factory_;
+  base::WeakPtrFactory<NetworkLocationProvider> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(NetworkLocationProvider);
 };
diff --git a/services/device/geolocation/public_ip_address_location_notifier.cc b/services/device/geolocation/public_ip_address_location_notifier.cc
index 52701dde..1e25f5b 100644
--- a/services/device/geolocation/public_ip_address_location_notifier.cc
+++ b/services/device/geolocation/public_ip_address_location_notifier.cc
@@ -26,8 +26,7 @@
       api_key_(api_key),
       url_loader_factory_(url_loader_factory),
       network_connection_tracker_(network_connection_tracker),
-      network_traffic_annotation_tag_(nullptr),
-      weak_ptr_factory_(this) {
+      network_traffic_annotation_tag_(nullptr) {
   // Subscribe to notifications of changes in network configuration.
   network_connection_tracker_->AddNetworkConnectionObserver(this);
 }
diff --git a/services/device/geolocation/public_ip_address_location_notifier.h b/services/device/geolocation/public_ip_address_location_notifier.h
index 74ad605..b0312fb 100644
--- a/services/device/geolocation/public_ip_address_location_notifier.h
+++ b/services/device/geolocation/public_ip_address_location_notifier.h
@@ -110,7 +110,7 @@
       network_traffic_annotation_tag_;
 
   // Weak references to |this| for posted tasks.
-  base::WeakPtrFactory<PublicIpAddressLocationNotifier> weak_ptr_factory_;
+  base::WeakPtrFactory<PublicIpAddressLocationNotifier> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(PublicIpAddressLocationNotifier);
 };
diff --git a/services/device/geolocation/wifi_data_provider_common.cc b/services/device/geolocation/wifi_data_provider_common.cc
index 255fe49d..3987d9e 100644
--- a/services/device/geolocation/wifi_data_provider_common.cc
+++ b/services/device/geolocation/wifi_data_provider_common.cc
@@ -21,7 +21,7 @@
       mac_as_int[3], mac_as_int[4], mac_as_int[5]));
 }
 
-WifiDataProviderCommon::WifiDataProviderCommon() : weak_factory_(this) {}
+WifiDataProviderCommon::WifiDataProviderCommon() {}
 
 WifiDataProviderCommon::~WifiDataProviderCommon() = default;
 
diff --git a/services/device/geolocation/wifi_data_provider_common.h b/services/device/geolocation/wifi_data_provider_common.h
index b0d8d14..19a168e 100644
--- a/services/device/geolocation/wifi_data_provider_common.h
+++ b/services/device/geolocation/wifi_data_provider_common.h
@@ -73,7 +73,7 @@
   std::unique_ptr<WlanApiInterface> wlan_api_;
 
   // Holder for delayed tasks; takes care of cleanup.
-  base::WeakPtrFactory<WifiDataProviderCommon> weak_factory_;
+  base::WeakPtrFactory<WifiDataProviderCommon> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(WifiDataProviderCommon);
 };
diff --git a/services/device/hid/hid_connection_impl.cc b/services/device/hid/hid_connection_impl.cc
index c3e7ed96..42b0fe8 100644
--- a/services/device/hid/hid_connection_impl.cc
+++ b/services/device/hid/hid_connection_impl.cc
@@ -12,7 +12,7 @@
 HidConnectionImpl::HidConnectionImpl(
     scoped_refptr<device::HidConnection> connection,
     mojom::HidConnectionClientPtr connection_client)
-    : hid_connection_(std::move(connection)), weak_factory_(this) {
+    : hid_connection_(std::move(connection)) {
   if (connection_client) {
     hid_connection_->SetClient(this);
     client_ = std::move(connection_client);
diff --git a/services/device/hid/hid_connection_impl.h b/services/device/hid/hid_connection_impl.h
index edb7ea2..ed1f454 100644
--- a/services/device/hid/hid_connection_impl.h
+++ b/services/device/hid/hid_connection_impl.h
@@ -52,7 +52,7 @@
   scoped_refptr<device::HidConnection> hid_connection_;
   mojo::InterfacePtr<mojom::HidConnectionClient> client_;
 
-  base::WeakPtrFactory<HidConnectionImpl> weak_factory_;
+  base::WeakPtrFactory<HidConnectionImpl> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(HidConnectionImpl);
 };
diff --git a/services/device/hid/hid_connection_linux.cc b/services/device/hid/hid_connection_linux.cc
index d5c61a6..208bdec 100644
--- a/services/device/hid/hid_connection_linux.cc
+++ b/services/device/hid/hid_connection_linux.cc
@@ -187,8 +187,7 @@
     scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
     : HidConnection(device_info),
       helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner)),
-      blocking_task_runner_(std::move(blocking_task_runner)),
-      weak_factory_(this) {
+      blocking_task_runner_(std::move(blocking_task_runner)) {
   helper_.reset(new BlockingTaskRunnerHelper(std::move(fd), device_info,
                                              weak_factory_.GetWeakPtr()));
   blocking_task_runner_->PostTask(
diff --git a/services/device/hid/hid_connection_linux.h b/services/device/hid/hid_connection_linux.h
index e0bef86c..ce5df85 100644
--- a/services/device/hid/hid_connection_linux.h
+++ b/services/device/hid/hid_connection_linux.h
@@ -49,7 +49,7 @@
 
   const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
 
-  base::WeakPtrFactory<HidConnectionLinux> weak_factory_;
+  base::WeakPtrFactory<HidConnectionLinux> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(HidConnectionLinux);
 };
diff --git a/services/device/hid/hid_manager_impl.cc b/services/device/hid/hid_manager_impl.cc
index 22b22f51..2a3f577 100644
--- a/services/device/hid/hid_manager_impl.cc
+++ b/services/device/hid/hid_manager_impl.cc
@@ -18,8 +18,7 @@
 base::LazyInstance<std::unique_ptr<HidService>>::Leaky g_hid_service =
     LAZY_INSTANCE_INITIALIZER;
 
-HidManagerImpl::HidManagerImpl()
-    : hid_service_observer_(this), weak_factory_(this) {
+HidManagerImpl::HidManagerImpl() : hid_service_observer_(this) {
   if (g_hid_service.Get())
     hid_service_ = std::move(g_hid_service.Get());
   else
diff --git a/services/device/hid/hid_manager_impl.h b/services/device/hid/hid_manager_impl.h
index d12f8eb..19f60a6 100644
--- a/services/device/hid/hid_manager_impl.h
+++ b/services/device/hid/hid_manager_impl.h
@@ -58,7 +58,7 @@
   mojo::AssociatedInterfacePtrSet<mojom::HidManagerClient> clients_;
   ScopedObserver<HidService, HidService::Observer> hid_service_observer_;
 
-  base::WeakPtrFactory<HidManagerImpl> weak_factory_;
+  base::WeakPtrFactory<HidManagerImpl> weak_factory_{this};
   DISALLOW_COPY_AND_ASSIGN(HidManagerImpl);
 };
 
diff --git a/services/device/hid/hid_service_linux.cc b/services/device/hid/hid_service_linux.cc
index 86a9992..926077f 100644
--- a/services/device/hid/hid_service_linux.cc
+++ b/services/device/hid/hid_service_linux.cc
@@ -195,8 +195,7 @@
 HidServiceLinux::HidServiceLinux()
     : blocking_task_runner_(
           base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)),
-      helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner_)),
-      weak_factory_(this) {
+      helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner_)) {
   // We need to properly initialize |blocking_task_helper_| here because we need
   // |weak_factory_| to be created first.
   helper_.reset(new BlockingTaskRunnerHelper(weak_factory_.GetWeakPtr()));
diff --git a/services/device/hid/hid_service_linux.h b/services/device/hid/hid_service_linux.h
index adb66f1..da82d6bf8b 100644
--- a/services/device/hid/hid_service_linux.h
+++ b/services/device/hid/hid_service_linux.h
@@ -53,7 +53,7 @@
   // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
   // a weak reference back to the service that owns it.
   std::unique_ptr<BlockingTaskRunnerHelper, base::OnTaskRunnerDeleter> helper_;
-  base::WeakPtrFactory<HidServiceLinux> weak_factory_;
+  base::WeakPtrFactory<HidServiceLinux> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(HidServiceLinux);
 };
diff --git a/services/device/hid/mock_hid_service.cc b/services/device/hid/mock_hid_service.cc
index 9ec098e..c0f0939c 100644
--- a/services/device/hid/mock_hid_service.cc
+++ b/services/device/hid/mock_hid_service.cc
@@ -10,7 +10,7 @@
 
 namespace device {
 
-MockHidService::MockHidService() : weak_factory_(this) {}
+MockHidService::MockHidService() {}
 
 MockHidService::~MockHidService() = default;
 
diff --git a/services/device/hid/mock_hid_service.h b/services/device/hid/mock_hid_service.h
index f26e041..99f0eab 100644
--- a/services/device/hid/mock_hid_service.h
+++ b/services/device/hid/mock_hid_service.h
@@ -26,7 +26,7 @@
  private:
   base::WeakPtr<HidService> GetWeakPtr() override;
 
-  base::WeakPtrFactory<MockHidService> weak_factory_;
+  base::WeakPtrFactory<MockHidService> weak_factory_{this};
 };
 
 }  // namespace device
diff --git a/services/device/public/cpp/test/fake_usb_device_manager.cc b/services/device/public/cpp/test/fake_usb_device_manager.cc
index ea9cb358..1edd3e1a 100644
--- a/services/device/public/cpp/test/fake_usb_device_manager.cc
+++ b/services/device/public/cpp/test/fake_usb_device_manager.cc
@@ -18,7 +18,7 @@
 
 namespace device {
 
-FakeUsbDeviceManager::FakeUsbDeviceManager() : weak_factory_(this) {}
+FakeUsbDeviceManager::FakeUsbDeviceManager() {}
 
 FakeUsbDeviceManager::~FakeUsbDeviceManager() {}
 
diff --git a/services/device/public/cpp/test/fake_usb_device_manager.h b/services/device/public/cpp/test/fake_usb_device_manager.h
index a7f58c6..b9563bd 100644
--- a/services/device/public/cpp/test/fake_usb_device_manager.h
+++ b/services/device/public/cpp/test/fake_usb_device_manager.h
@@ -92,7 +92,7 @@
 
   DeviceMap devices_;
 
-  base::WeakPtrFactory<FakeUsbDeviceManager> weak_factory_;
+  base::WeakPtrFactory<FakeUsbDeviceManager> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(FakeUsbDeviceManager);
 };
diff --git a/services/device/public/cpp/usb/usb_utils.cc b/services/device/public/cpp/usb/usb_utils.cc
index a03ce17b..d25b9d9 100644
--- a/services/device/public/cpp/usb/usb_utils.cc
+++ b/services/device/public/cpp/usb/usb_utils.cc
@@ -77,12 +77,16 @@
   return address & 0x0F;
 }
 
+uint8_t ConvertEndpointNumberToAddress(uint8_t endpoint_number,
+                                       mojom::UsbTransferDirection direction) {
+  return endpoint_number |
+         (direction == mojom::UsbTransferDirection::INBOUND ? 0x80 : 0x00);
+}
+
 uint8_t ConvertEndpointNumberToAddress(
     const mojom::UsbEndpointInfo& mojo_endpoint) {
-  return mojo_endpoint.endpoint_number |
-         (mojo_endpoint.direction == mojom::UsbTransferDirection::INBOUND
-              ? 0x80
-              : 0x00);
+  return ConvertEndpointNumberToAddress(mojo_endpoint.endpoint_number,
+                                        mojo_endpoint.direction);
 }
 
 }  // namespace device
diff --git a/services/device/public/cpp/usb/usb_utils.h b/services/device/public/cpp/usb/usb_utils.h
index 023f282..70cd629 100644
--- a/services/device/public/cpp/usb/usb_utils.h
+++ b/services/device/public/cpp/usb/usb_utils.h
@@ -25,6 +25,9 @@
 
 uint8_t ConvertEndpointAddressToNumber(uint8_t address);
 
+uint8_t ConvertEndpointNumberToAddress(uint8_t endpoint_number,
+                                       mojom::UsbTransferDirection direction);
+
 uint8_t ConvertEndpointNumberToAddress(
     const mojom::UsbEndpointInfo& mojo_endpoint);
 
diff --git a/services/device/serial/serial_port_impl.cc b/services/device/serial/serial_port_impl.cc
index e64bf50..febf68c7 100644
--- a/services/device/serial/serial_port_impl.cc
+++ b/services/device/serial/serial_port_impl.cc
@@ -36,8 +36,8 @@
       io_handler_(device::SerialIoHandler::Create(path, ui_task_runner)),
       watcher_(std::move(watcher)),
       in_stream_watcher_(FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::MANUAL),
-      out_stream_watcher_(FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::MANUAL),
-      weak_factory_(this) {
+      out_stream_watcher_(FROM_HERE,
+                          mojo::SimpleWatcher::ArmingPolicy::MANUAL) {
   binding_.set_connection_error_handler(base::BindOnce(
       [](SerialPortImpl* self) { delete self; }, base::Unretained(this)));
   if (watcher_.is_bound()) {
diff --git a/services/device/serial/serial_port_impl.h b/services/device/serial/serial_port_impl.h
index cf98f2e..66e082d 100644
--- a/services/device/serial/serial_port_impl.h
+++ b/services/device/serial/serial_port_impl.h
@@ -85,7 +85,7 @@
   mojo::ScopedDataPipeProducerHandle out_stream_;
   mojo::SimpleWatcher out_stream_watcher_;
 
-  base::WeakPtrFactory<SerialPortImpl> weak_factory_;
+  base::WeakPtrFactory<SerialPortImpl> weak_factory_{this};
   DISALLOW_COPY_AND_ASSIGN(SerialPortImpl);
 };
 
diff --git a/services/device/test/usb_test_gadget_impl.cc b/services/device/test/usb_test_gadget_impl.cc
index 5c043ce..7a3582f 100644
--- a/services/device/test/usb_test_gadget_impl.cc
+++ b/services/device/test/usb_test_gadget_impl.cc
@@ -205,7 +205,7 @@
  public:
   UsbGadgetFactory(UsbService* usb_service,
                    scoped_refptr<base::SingleThreadTaskRunner> io_task_runner)
-      : usb_service_(usb_service), observer_(this), weak_factory_(this) {
+      : usb_service_(usb_service), observer_(this) {
     // Gadget tests shouldn't be enabled without available |usb_service|.
     DCHECK(usb_service_);
 
@@ -403,7 +403,7 @@
   std::string version_;
   base::RunLoop run_loop_;
   ScopedObserver<UsbService, UsbService::Observer> observer_;
-  base::WeakPtrFactory<UsbGadgetFactory> weak_factory_;
+  base::WeakPtrFactory<UsbGadgetFactory> weak_factory_{this};
 };
 
 class DeviceAddListener : public UsbService::Observer {
@@ -414,8 +414,7 @@
       : usb_service_(usb_service),
         serial_number_(serial_number),
         product_id_(product_id),
-        observer_(this),
-        weak_factory_(this) {
+        observer_(this) {
     observer_.Add(usb_service_);
   }
   ~DeviceAddListener() override = default;
@@ -470,7 +469,7 @@
   base::RunLoop run_loop_;
   scoped_refptr<UsbDevice> device_;
   ScopedObserver<UsbService, UsbService::Observer> observer_;
-  base::WeakPtrFactory<DeviceAddListener> weak_factory_;
+  base::WeakPtrFactory<DeviceAddListener> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(DeviceAddListener);
 };
@@ -478,10 +477,7 @@
 class DeviceRemoveListener : public UsbService::Observer {
  public:
   DeviceRemoveListener(UsbService* usb_service, scoped_refptr<UsbDevice> device)
-      : usb_service_(usb_service),
-        device_(device),
-        observer_(this),
-        weak_factory_(this) {
+      : usb_service_(usb_service), device_(device), observer_(this) {
     observer_.Add(usb_service_);
   }
   ~DeviceRemoveListener() override = default;
@@ -517,7 +513,7 @@
   base::RunLoop run_loop_;
   scoped_refptr<UsbDevice> device_;
   ScopedObserver<UsbService, UsbService::Observer> observer_;
-  base::WeakPtrFactory<DeviceRemoveListener> weak_factory_;
+  base::WeakPtrFactory<DeviceRemoveListener> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(DeviceRemoveListener);
 };
diff --git a/services/device/usb/BUILD.gn b/services/device/usb/BUILD.gn
index 5a0f0e1..b2ba8073 100644
--- a/services/device/usb/BUILD.gn
+++ b/services/device/usb/BUILD.gn
@@ -56,6 +56,7 @@
     "//base/third_party/dynamic_annotations",
     "//components/device_event_log",
     "//device/base",
+    "//services/device/public/cpp/usb",
     "//services/device/public/mojom:usb",
   ]
 
@@ -74,8 +75,6 @@
 
   if (is_android) {
     deps += [ ":jni_headers" ]
-  } else {
-    deps += [ "//services/device/public/cpp/usb" ]
   }
 
   if (is_win || is_mac) {
diff --git a/services/device/usb/mock_usb_device.cc b/services/device/usb/mock_usb_device.cc
index 11412a65..8af900b 100644
--- a/services/device/usb/mock_usb_device.cc
+++ b/services/device/usb/mock_usb_device.cc
@@ -29,69 +29,6 @@
                 /*bus_number=*/0,
                 /*port_number=*/0) {}
 
-MockUsbDevice::MockUsbDevice(uint16_t vendor_id,
-                             uint16_t product_id,
-                             const std::string& manufacturer_string,
-                             const std::string& product_string,
-                             const std::string& serial_number,
-                             const GURL& webusb_landing_page)
-    : UsbDevice(0x0200,  // usb_version
-                0xff,    // device_class
-                0xff,    // device_subclass
-                0xff,    // device_protocol
-                vendor_id,
-                product_id,
-                0x0100,  // device_version
-                base::UTF8ToUTF16(manufacturer_string),
-                base::UTF8ToUTF16(product_string),
-                base::UTF8ToUTF16(serial_number),
-                /*bus_number=*/0,
-                /*port_number=*/0) {
-  webusb_landing_page_ = webusb_landing_page;
-}
-
-MockUsbDevice::MockUsbDevice(uint16_t vendor_id,
-                             uint16_t product_id,
-                             const UsbConfigDescriptor& configuration)
-    : MockUsbDevice(vendor_id, product_id) {
-  descriptor_.configurations.push_back(configuration);
-}
-
-MockUsbDevice::MockUsbDevice(
-    uint16_t vendor_id,
-    uint16_t product_id,
-    uint8_t device_class,
-    const std::vector<UsbConfigDescriptor>& configurations)
-    : UsbDevice(0x0200,  // usb_version
-                device_class,
-                0xff,  // device_subclass
-                0xff,  // device_protocol
-                vendor_id,
-                product_id,
-                0x0100,  // device_version
-                base::string16(),
-                base::string16(),
-                base::string16(),
-                /*bus_number=*/0,
-                /*port_number=*/0) {
-  descriptor_.configurations = configurations;
-}
-
-MockUsbDevice::MockUsbDevice(
-    uint16_t vendor_id,
-    uint16_t product_id,
-    const std::string& manufacturer_string,
-    const std::string& product_string,
-    const std::string& serial_number,
-    const std::vector<UsbConfigDescriptor>& configurations)
-    : MockUsbDevice(vendor_id,
-                    product_id,
-                    manufacturer_string,
-                    product_string,
-                    serial_number) {
-  descriptor_.configurations = configurations;
-}
-
 MockUsbDevice::~MockUsbDevice() = default;
 
 void MockUsbDevice::AddMockConfig(const UsbConfigDescriptor& config) {
diff --git a/services/device/usb/mock_usb_device.h b/services/device/usb/mock_usb_device.h
index ed91f43..75b1d45 100644
--- a/services/device/usb/mock_usb_device.h
+++ b/services/device/usb/mock_usb_device.h
@@ -24,25 +24,6 @@
                 const std::string& manufacturer_string,
                 const std::string& product_string,
                 const std::string& serial_number);
-  MockUsbDevice(uint16_t vendor_id,
-                uint16_t product_id,
-                const std::string& manufacturer_string,
-                const std::string& product_string,
-                const std::string& serial_number,
-                const GURL& webusb_landing_page);
-  MockUsbDevice(uint16_t vendor_id,
-                uint16_t product_id,
-                const UsbConfigDescriptor& configuration);
-  MockUsbDevice(uint16_t vendor_id,
-                uint16_t product_id,
-                uint8_t device_class,
-                const std::vector<UsbConfigDescriptor>& configurations);
-  MockUsbDevice(uint16_t vendor_id,
-                uint16_t product_id,
-                const std::string& manufacturer_string,
-                const std::string& product_string,
-                const std::string& serial_number,
-                const std::vector<UsbConfigDescriptor>& configurations);
 
   void Open(OpenCallback callback) override { OpenInternal(callback); }
   MOCK_METHOD1(OpenInternal, void(OpenCallback&));
diff --git a/services/device/usb/mojo/device_impl.cc b/services/device/usb/mojo/device_impl.cc
index d466128f..0320df3 100644
--- a/services/device/usb/mojo/device_impl.cc
+++ b/services/device/usb/mojo/device_impl.cc
@@ -103,10 +103,7 @@
 
 DeviceImpl::DeviceImpl(scoped_refptr<device::UsbDevice> device,
                        mojom::UsbDeviceClientPtr client)
-    : device_(std::move(device)),
-      observer_(this),
-      client_(std::move(client)),
-      weak_factory_(this) {
+    : device_(std::move(device)), observer_(this), client_(std::move(client)) {
   DCHECK(device_);
   observer_.Add(device_.get());
 
diff --git a/services/device/usb/mojo/device_impl.h b/services/device/usb/mojo/device_impl.h
index e9f65ac3..09d4869 100644
--- a/services/device/usb/mojo/device_impl.h
+++ b/services/device/usb/mojo/device_impl.h
@@ -106,7 +106,7 @@
 
   mojo::StrongBindingPtr<mojom::UsbDevice> binding_;
   device::mojom::UsbDeviceClientPtr client_;
-  base::WeakPtrFactory<DeviceImpl> weak_factory_;
+  base::WeakPtrFactory<DeviceImpl> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(DeviceImpl);
 };
diff --git a/services/device/usb/mojo/device_manager_impl.cc b/services/device/usb/mojo/device_manager_impl.cc
index fe912cf..0b54906 100644
--- a/services/device/usb/mojo/device_manager_impl.cc
+++ b/services/device/usb/mojo/device_manager_impl.cc
@@ -34,9 +34,7 @@
     : DeviceManagerImpl(UsbService::Create()) {}
 
 DeviceManagerImpl::DeviceManagerImpl(std::unique_ptr<UsbService> usb_service)
-    : usb_service_(std::move(usb_service)),
-      observer_(this),
-      weak_factory_(this) {
+    : usb_service_(std::move(usb_service)), observer_(this) {
   if (usb_service_)
     observer_.Add(usb_service_.get());
 }
diff --git a/services/device/usb/mojo/device_manager_impl.h b/services/device/usb/mojo/device_manager_impl.h
index b22c2b4..349296e 100644
--- a/services/device/usb/mojo/device_manager_impl.h
+++ b/services/device/usb/mojo/device_manager_impl.h
@@ -98,7 +98,7 @@
   mojo::BindingSet<mojom::UsbDeviceManager> bindings_;
   mojo::AssociatedInterfacePtrSet<mojom::UsbDeviceManagerClient> clients_;
 
-  base::WeakPtrFactory<DeviceManagerImpl> weak_factory_;
+  base::WeakPtrFactory<DeviceManagerImpl> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(DeviceManagerImpl);
 };
diff --git a/services/device/usb/mojo/type_converters.cc b/services/device/usb/mojo/type_converters.cc
index c9d047e..e8680e5 100644
--- a/services/device/usb/mojo/type_converters.cc
+++ b/services/device/usb/mojo/type_converters.cc
@@ -17,25 +17,6 @@
 namespace mojo {
 
 // static
-device::mojom::UsbEndpointInfoPtr TypeConverter<
-    device::mojom::UsbEndpointInfoPtr,
-    device::UsbEndpointDescriptor>::Convert(const device::UsbEndpointDescriptor&
-                                                endpoint) {
-  auto info = device::mojom::UsbEndpointInfo::New();
-  info->endpoint_number =
-      device::ConvertEndpointAddressToNumber(endpoint.address);
-  info->direction = endpoint.direction;
-  info->type = endpoint.transfer_type;
-  info->packet_size = static_cast<uint32_t>(endpoint.maximum_packet_size);
-  info->synchronization_type = endpoint.synchronization_type;
-  info->usage_type = endpoint.usage_type;
-  info->polling_interval = endpoint.polling_interval;
-  info->extra_data.assign(endpoint.extra_data.begin(),
-                          endpoint.extra_data.end());
-  return info;
-}
-
-// static
 device::mojom::UsbAlternateInterfaceInfoPtr
 TypeConverter<device::mojom::UsbAlternateInterfaceInfoPtr,
               device::UsbInterfaceDescriptor>::
@@ -51,8 +32,8 @@
   // Filter out control endpoints for the public interface.
   info->endpoints.reserve(interface.endpoints.size());
   for (const auto& endpoint : interface.endpoints) {
-    if (endpoint.transfer_type != device::UsbTransferType::CONTROL)
-      info->endpoints.push_back(device::mojom::UsbEndpointInfo::From(endpoint));
+    if (endpoint->type != device::UsbTransferType::CONTROL)
+      info->endpoints.push_back(endpoint->Clone());
   }
 
   return info;
diff --git a/services/device/usb/mojo/type_converters.h b/services/device/usb/mojo/type_converters.h
index 0fb1b1ad..0e32854 100644
--- a/services/device/usb/mojo/type_converters.h
+++ b/services/device/usb/mojo/type_converters.h
@@ -19,20 +19,12 @@
 namespace device {
 struct UsbConfigDescriptor;
 class UsbDevice;
-struct UsbEndpointDescriptor;
 struct UsbInterfaceDescriptor;
 }  // namespace device
 
 namespace mojo {
 
 template <>
-struct TypeConverter<device::mojom::UsbEndpointInfoPtr,
-                     device::UsbEndpointDescriptor> {
-  static device::mojom::UsbEndpointInfoPtr Convert(
-      const device::UsbEndpointDescriptor& endpoint);
-};
-
-template <>
 struct TypeConverter<device::mojom::UsbAlternateInterfaceInfoPtr,
                      device::UsbInterfaceDescriptor> {
   static device::mojom::UsbAlternateInterfaceInfoPtr Convert(
diff --git a/services/device/usb/usb_descriptors.cc b/services/device/usb/usb_descriptors.cc
index 950f365e..891c4695 100644
--- a/services/device/usb/usb_descriptors.cc
+++ b/services/device/usb/usb_descriptors.cc
@@ -15,6 +15,7 @@
 #include "base/barrier_closure.h"
 #include "base/bind.h"
 #include "base/memory/ref_counted_memory.h"
+#include "services/device/public/cpp/usb/usb_utils.h"
 #include "services/device/usb/usb_device_handle.h"
 
 namespace device {
@@ -234,87 +235,6 @@
 
 }  // namespace
 
-UsbEndpointDescriptor::UsbEndpointDescriptor(const uint8_t* data)
-    : UsbEndpointDescriptor(data[2] /* bEndpointAddress */,
-                            data[3] /* bmAttributes */,
-                            data[4] + (data[5] << 8) /* wMaxPacketSize */,
-                            data[6] /* bInterval */) {
-  DCHECK_GE(data[0], kEndpointDescriptorLength);
-  DCHECK_EQ(data[1], kEndpointDescriptorType);
-}
-
-UsbEndpointDescriptor::UsbEndpointDescriptor(uint8_t address,
-                                             uint8_t attributes,
-                                             uint16_t maximum_packet_size,
-                                             uint8_t polling_interval)
-    : address(address),
-      maximum_packet_size(maximum_packet_size),
-      polling_interval(polling_interval) {
-  // These fields are defined in Table 9-24 of the USB 3.1 Specification.
-  switch (address & 0x80) {
-    case 0x00:
-      direction = UsbTransferDirection::OUTBOUND;
-      break;
-    case 0x80:
-      direction = UsbTransferDirection::INBOUND;
-      break;
-  }
-  switch (attributes & 0x03) {
-    case 0x00:
-      transfer_type = UsbTransferType::CONTROL;
-      break;
-    case 0x01:
-      transfer_type = UsbTransferType::ISOCHRONOUS;
-      break;
-    case 0x02:
-      transfer_type = UsbTransferType::BULK;
-      break;
-    case 0x03:
-      transfer_type = UsbTransferType::INTERRUPT;
-      break;
-  }
-  switch (attributes & 0x0F) {
-    // Isochronous endpoints only.
-    case 0x05:
-      synchronization_type = UsbSynchronizationType::ASYNCHRONOUS;
-      break;
-    case 0x09:
-      synchronization_type = UsbSynchronizationType::ADAPTIVE;
-      break;
-    case 0x0D:
-      synchronization_type = UsbSynchronizationType::SYNCHRONOUS;
-      break;
-    default:
-      synchronization_type = UsbSynchronizationType::NONE;
-  }
-  switch (attributes & 0x33) {
-    // Isochronous endpoint usages.
-    case 0x01:
-      usage_type = UsbUsageType::DATA;
-      break;
-    case 0x11:
-      usage_type = UsbUsageType::FEEDBACK;
-      break;
-    case 0x21:
-      usage_type = UsbUsageType::EXPLICIT_FEEDBACK;
-      break;
-    // Interrupt endpoint usages.
-    case 0x03:
-      usage_type = UsbUsageType::PERIODIC;
-      break;
-    case 0x13:
-      usage_type = UsbUsageType::NOTIFICATION;
-      break;
-    default:
-      usage_type = UsbUsageType::RESERVED;
-  }
-}
-
-UsbEndpointDescriptor::UsbEndpointDescriptor(
-    const UsbEndpointDescriptor& other) = default;
-
-UsbEndpointDescriptor::~UsbEndpointDescriptor() = default;
-
 UsbInterfaceDescriptor::UsbInterfaceDescriptor(const uint8_t* data)
     : UsbInterfaceDescriptor(data[2] /* bInterfaceNumber */,
                              data[3] /* bAlternateSetting */,
@@ -337,8 +257,23 @@
       interface_protocol(interface_protocol),
       first_interface(interface_number) {}
 
+// Do a deep copy especially needed by |endpoints|.
 UsbInterfaceDescriptor::UsbInterfaceDescriptor(
-    const UsbInterfaceDescriptor& other) = default;
+    const UsbInterfaceDescriptor& other)
+    : interface_number(other.interface_number),
+      alternate_setting(other.alternate_setting),
+      interface_class(other.interface_class),
+      interface_subclass(other.interface_subclass),
+      interface_protocol(other.interface_protocol),
+      extra_data(other.extra_data),
+      first_interface(other.first_interface) {
+  for (auto& endpoint : other.endpoints) {
+    endpoints.push_back(endpoint.Clone());
+  }
+}
+
+UsbInterfaceDescriptor::UsbInterfaceDescriptor(UsbInterfaceDescriptor&& other) =
+    default;
 
 UsbInterfaceDescriptor::~UsbInterfaceDescriptor() = default;
 
@@ -363,6 +298,8 @@
 UsbConfigDescriptor::UsbConfigDescriptor(const UsbConfigDescriptor& other) =
     default;
 
+UsbConfigDescriptor::UsbConfigDescriptor(UsbConfigDescriptor&& other) = default;
+
 UsbConfigDescriptor::~UsbConfigDescriptor() = default;
 
 void UsbConfigDescriptor::AssignFirstInterfaceNumbers() {
@@ -370,8 +307,8 @@
   ParseInterfaceAssociationDescriptors(extra_data, &functions);
   for (const auto& interface : interfaces) {
     ParseInterfaceAssociationDescriptors(interface.extra_data, &functions);
-    for (const auto& endpoint : interface.endpoints)
-      ParseInterfaceAssociationDescriptors(endpoint.extra_data, &functions);
+    for (auto& endpoint : interface.endpoints)
+      ParseInterfaceAssociationDescriptors(endpoint->extra_data, &functions);
   }
 
   // libusb has collected interface association descriptors in the |extra_data|
@@ -416,12 +353,32 @@
 UsbDeviceDescriptor::UsbDeviceDescriptor(const UsbDeviceDescriptor& other) =
     default;
 
+UsbDeviceDescriptor::UsbDeviceDescriptor(UsbDeviceDescriptor&& other) = default;
+
+UsbDeviceDescriptor& UsbDeviceDescriptor::operator=(
+    UsbDeviceDescriptor&& other) {
+  usb_version = other.usb_version;
+  device_class = other.device_class;
+  device_subclass = other.device_subclass;
+  device_protocol = other.device_protocol;
+  vendor_id = other.vendor_id;
+  product_id = other.product_id;
+  device_version = other.device_version;
+  i_manufacturer = other.i_manufacturer;
+  i_product = other.i_product;
+  i_serial_number = other.i_serial_number;
+  num_configurations = other.num_configurations;
+  configurations.swap(other.configurations);
+
+  return *this;
+}
+
 UsbDeviceDescriptor::~UsbDeviceDescriptor() = default;
 
 bool UsbDeviceDescriptor::Parse(const std::vector<uint8_t>& buffer) {
   UsbConfigDescriptor* last_config = nullptr;
   UsbInterfaceDescriptor* last_interface = nullptr;
-  UsbEndpointDescriptor* last_endpoint = nullptr;
+  mojom::UsbEndpointInfo* last_endpoint = nullptr;
 
   for (auto it = buffer.begin(); it != buffer.end();
        /* incremented internally */) {
@@ -467,8 +424,8 @@
       case kEndpointDescriptorType:
         if (!last_interface || length < kEndpointDescriptorLength)
           return false;
-        last_interface->endpoints.emplace_back(data);
-        last_endpoint = &last_interface->endpoints.back();
+        last_interface->endpoints.push_back(BuildUsbEndpointInfoPtr(data));
+        last_endpoint = last_interface->endpoints.back().get();
         break;
       default:
         // Append unknown descriptor types to the |extra_data| field of the last
@@ -540,4 +497,88 @@
                      std::move(callback)));
 }
 
+UsbEndpointInfoPtr BuildUsbEndpointInfoPtr(const uint8_t* data) {
+  DCHECK_GE(data[0], kEndpointDescriptorLength);
+  DCHECK_EQ(data[1], kEndpointDescriptorType);
+
+  return BuildUsbEndpointInfoPtr(
+      data[2] /* bEndpointAddress */, data[3] /* bmAttributes */,
+      data[4] + (data[5] << 8) /* wMaxPacketSize */, data[6] /* bInterval */);
+}
+
+UsbEndpointInfoPtr BuildUsbEndpointInfoPtr(uint8_t address,
+                                           uint8_t attributes,
+                                           uint16_t maximum_packet_size,
+                                           uint8_t polling_interval) {
+  UsbEndpointInfoPtr endpoint = mojom::UsbEndpointInfo::New();
+  endpoint->endpoint_number = ConvertEndpointAddressToNumber(address);
+
+  // These fields are defined in Table 9-24 of the USB 3.1 Specification.
+  switch (address & 0x80) {
+    case 0x00:
+      endpoint->direction = UsbTransferDirection::OUTBOUND;
+      break;
+    case 0x80:
+      endpoint->direction = UsbTransferDirection::INBOUND;
+      break;
+  }
+
+  switch (attributes & 0x03) {
+    case 0x00:
+      endpoint->type = UsbTransferType::CONTROL;
+      break;
+    case 0x01:
+      endpoint->type = UsbTransferType::ISOCHRONOUS;
+      break;
+    case 0x02:
+      endpoint->type = UsbTransferType::BULK;
+      break;
+    case 0x03:
+      endpoint->type = UsbTransferType::INTERRUPT;
+      break;
+  }
+
+  switch (attributes & 0x0F) {
+    // Isochronous endpoints only.
+    case 0x05:
+      endpoint->synchronization_type = UsbSynchronizationType::ASYNCHRONOUS;
+      break;
+    case 0x09:
+      endpoint->synchronization_type = UsbSynchronizationType::ADAPTIVE;
+      break;
+    case 0x0D:
+      endpoint->synchronization_type = UsbSynchronizationType::SYNCHRONOUS;
+      break;
+    default:
+      endpoint->synchronization_type = UsbSynchronizationType::NONE;
+  }
+
+  switch (attributes & 0x33) {
+    // Isochronous endpoint usages.
+    case 0x01:
+      endpoint->usage_type = UsbUsageType::DATA;
+      break;
+    case 0x11:
+      endpoint->usage_type = UsbUsageType::FEEDBACK;
+      break;
+    case 0x21:
+      endpoint->usage_type = UsbUsageType::EXPLICIT_FEEDBACK;
+      break;
+    // Interrupt endpoint usages.
+    case 0x03:
+      endpoint->usage_type = UsbUsageType::PERIODIC;
+      break;
+    case 0x13:
+      endpoint->usage_type = UsbUsageType::NOTIFICATION;
+      break;
+    default:
+      endpoint->usage_type = UsbUsageType::RESERVED;
+  }
+
+  endpoint->packet_size = static_cast<uint32_t>(maximum_packet_size);
+  endpoint->polling_interval = polling_interval;
+
+  return endpoint;
+}
+
 }  // namespace device
diff --git a/services/device/usb/usb_descriptors.h b/services/device/usb/usb_descriptors.h
index ffd168ae1..ebe6b958 100644
--- a/services/device/usb/usb_descriptors.h
+++ b/services/device/usb/usb_descriptors.h
@@ -24,26 +24,7 @@
 using UsbTransferDirection = mojom::UsbTransferDirection;
 using UsbSynchronizationType = mojom::UsbSynchronizationType;
 using UsbUsageType = mojom::UsbUsageType;
-
-struct UsbEndpointDescriptor {
-  explicit UsbEndpointDescriptor(const uint8_t* data);
-  UsbEndpointDescriptor(uint8_t address,
-                        uint8_t attributes,
-                        uint16_t maximum_packet_size,
-                        uint8_t polling_interval);
-  UsbEndpointDescriptor() = delete;
-  UsbEndpointDescriptor(const UsbEndpointDescriptor& other);
-  ~UsbEndpointDescriptor();
-
-  uint8_t address;
-  UsbTransferDirection direction;
-  uint16_t maximum_packet_size;
-  UsbSynchronizationType synchronization_type;
-  UsbTransferType transfer_type;
-  UsbUsageType usage_type;
-  uint8_t polling_interval;
-  std::vector<uint8_t> extra_data;
-};
+using UsbEndpointInfoPtr = mojom::UsbEndpointInfoPtr;
 
 struct UsbInterfaceDescriptor {
   explicit UsbInterfaceDescriptor(const uint8_t* data);
@@ -54,6 +35,7 @@
                          uint8_t interface_protocol);
   UsbInterfaceDescriptor() = delete;
   UsbInterfaceDescriptor(const UsbInterfaceDescriptor& other);
+  UsbInterfaceDescriptor(UsbInterfaceDescriptor&& other);
   ~UsbInterfaceDescriptor();
 
   uint8_t interface_number;
@@ -61,7 +43,7 @@
   uint8_t interface_class;
   uint8_t interface_subclass;
   uint8_t interface_protocol;
-  std::vector<UsbEndpointDescriptor> endpoints;
+  std::vector<UsbEndpointInfoPtr> endpoints;
   std::vector<uint8_t> extra_data;
   // First interface of the function to which this interface belongs.
   uint8_t first_interface;
@@ -75,6 +57,7 @@
                       uint8_t maximum_power);
   UsbConfigDescriptor() = delete;
   UsbConfigDescriptor(const UsbConfigDescriptor& other);
+  UsbConfigDescriptor(UsbConfigDescriptor&& other);
   ~UsbConfigDescriptor();
 
   // Scans through |extra_data| for interface association descriptors and
@@ -92,8 +75,11 @@
 struct UsbDeviceDescriptor {
   UsbDeviceDescriptor();
   UsbDeviceDescriptor(const UsbDeviceDescriptor& other);
+  UsbDeviceDescriptor(UsbDeviceDescriptor&& other);
   ~UsbDeviceDescriptor();
 
+  UsbDeviceDescriptor& operator=(UsbDeviceDescriptor&& other);
+
   // Parses |buffer| for USB descriptors. Any configuration descriptors found
   // will be added to |configurations|. If a device descriptor is found it will
   // be used to populate this struct's fields. This function may be called more
@@ -128,6 +114,13 @@
     base::OnceCallback<void(std::unique_ptr<std::map<uint8_t, base::string16>>)>
         callback);
 
+UsbEndpointInfoPtr BuildUsbEndpointInfoPtr(const uint8_t* data);
+
+UsbEndpointInfoPtr BuildUsbEndpointInfoPtr(uint8_t address,
+                                           uint8_t attributes,
+                                           uint16_t maximum_packet_size,
+                                           uint8_t polling_interval);
+
 }  // namespace device
 
 #endif  // SERVICES_DEVICE_USB_USB_DESCRIPTORS_H_
diff --git a/services/device/usb/usb_descriptors_unittest.cc b/services/device/usb/usb_descriptors_unittest.cc
index be922f17..4ce9744 100644
--- a/services/device/usb/usb_descriptors_unittest.cc
+++ b/services/device/usb/usb_descriptors_unittest.cc
@@ -90,44 +90,43 @@
   EXPECT_EQ(0u, config.interfaces[0].extra_data.size());
   EXPECT_EQ(0, config.interfaces[0].first_interface);
   // Endpoint 1 IN
-  EXPECT_EQ(0x81, config.interfaces[0].endpoints[0].address);
+  EXPECT_EQ(0x01, config.interfaces[0].endpoints[0]->endpoint_number);
   EXPECT_EQ(UsbTransferDirection::INBOUND,
-            config.interfaces[0].endpoints[0].direction);
-  EXPECT_EQ(512, config.interfaces[0].endpoints[0].maximum_packet_size);
+            config.interfaces[0].endpoints[0]->direction);
+  EXPECT_EQ(512u, config.interfaces[0].endpoints[0]->packet_size);
   EXPECT_EQ(UsbSynchronizationType::NONE,
-            config.interfaces[0].endpoints[0].synchronization_type);
-  EXPECT_EQ(UsbTransferType::BULK,
-            config.interfaces[0].endpoints[0].transfer_type);
+            config.interfaces[0].endpoints[0]->synchronization_type);
+  EXPECT_EQ(UsbTransferType::BULK, config.interfaces[0].endpoints[0]->type);
   EXPECT_EQ(UsbUsageType::RESERVED,
-            config.interfaces[0].endpoints[0].usage_type);
-  EXPECT_EQ(0, config.interfaces[0].endpoints[0].polling_interval);
-  EXPECT_EQ(0u, config.interfaces[0].endpoints[0].extra_data.size());
+            config.interfaces[0].endpoints[0]->usage_type);
+  EXPECT_EQ(0, config.interfaces[0].endpoints[0]->polling_interval);
+  EXPECT_EQ(0u, config.interfaces[0].endpoints[0]->extra_data.size());
   // Endpoint 2 IN
-  EXPECT_EQ(0x82, config.interfaces[0].endpoints[1].address);
+  EXPECT_EQ(0x02, config.interfaces[0].endpoints[1]->endpoint_number);
   EXPECT_EQ(UsbTransferDirection::INBOUND,
-            config.interfaces[0].endpoints[1].direction);
-  EXPECT_EQ(512, config.interfaces[0].endpoints[1].maximum_packet_size);
+            config.interfaces[0].endpoints[1]->direction);
+  EXPECT_EQ(512u, config.interfaces[0].endpoints[1]->packet_size);
   EXPECT_EQ(UsbSynchronizationType::NONE,
-            config.interfaces[0].endpoints[1].synchronization_type);
+            config.interfaces[0].endpoints[1]->synchronization_type);
   EXPECT_EQ(UsbTransferType::INTERRUPT,
-            config.interfaces[0].endpoints[1].transfer_type);
+            config.interfaces[0].endpoints[1]->type);
   EXPECT_EQ(UsbUsageType::PERIODIC,
-            config.interfaces[0].endpoints[1].usage_type);
-  EXPECT_EQ(4, config.interfaces[0].endpoints[1].polling_interval);
-  EXPECT_EQ(0u, config.interfaces[0].endpoints[1].extra_data.size());
+            config.interfaces[0].endpoints[1]->usage_type);
+  EXPECT_EQ(4, config.interfaces[0].endpoints[1]->polling_interval);
+  EXPECT_EQ(0u, config.interfaces[0].endpoints[1]->extra_data.size());
   // Endpoint 3 OUT
-  EXPECT_EQ(0x03, config.interfaces[0].endpoints[2].address);
+  EXPECT_EQ(0x03, config.interfaces[0].endpoints[2]->endpoint_number);
   EXPECT_EQ(UsbTransferDirection::OUTBOUND,
-            config.interfaces[0].endpoints[2].direction);
-  EXPECT_EQ(512, config.interfaces[0].endpoints[2].maximum_packet_size);
+            config.interfaces[0].endpoints[2]->direction);
+  EXPECT_EQ(512u, config.interfaces[0].endpoints[2]->packet_size);
   EXPECT_EQ(UsbSynchronizationType::NONE,
-            config.interfaces[0].endpoints[2].synchronization_type);
+            config.interfaces[0].endpoints[2]->synchronization_type);
   EXPECT_EQ(UsbTransferType::INTERRUPT,
-            config.interfaces[0].endpoints[2].transfer_type);
+            config.interfaces[0].endpoints[2]->type);
   EXPECT_EQ(UsbUsageType::NOTIFICATION,
-            config.interfaces[0].endpoints[2].usage_type);
-  EXPECT_EQ(4, config.interfaces[0].endpoints[2].polling_interval);
-  EXPECT_EQ(0u, config.interfaces[0].endpoints[2].extra_data.size());
+            config.interfaces[0].endpoints[2]->usage_type);
+  EXPECT_EQ(4, config.interfaces[0].endpoints[2]->polling_interval);
+  EXPECT_EQ(0u, config.interfaces[0].endpoints[2]->extra_data.size());
   // Interface 1
   EXPECT_EQ(1, config.interfaces[1].interface_number);
   EXPECT_EQ(0, config.interfaces[1].alternate_setting);
@@ -166,30 +165,30 @@
   EXPECT_EQ(0u, config.interfaces[1].extra_data.size());
   EXPECT_EQ(0, config.interfaces[1].first_interface);
   // Endpoint 1 IN
-  EXPECT_EQ(0x81, config.interfaces[1].endpoints[0].address);
+  EXPECT_EQ(0x01, config.interfaces[1].endpoints[0]->endpoint_number);
   EXPECT_EQ(UsbTransferDirection::INBOUND,
-            config.interfaces[1].endpoints[0].direction);
-  EXPECT_EQ(1024, config.interfaces[1].endpoints[0].maximum_packet_size);
+            config.interfaces[1].endpoints[0]->direction);
+  EXPECT_EQ(1024u, config.interfaces[1].endpoints[0]->packet_size);
   EXPECT_EQ(UsbSynchronizationType::NONE,
-            config.interfaces[1].endpoints[0].synchronization_type);
+            config.interfaces[1].endpoints[0]->synchronization_type);
   EXPECT_EQ(UsbTransferType::ISOCHRONOUS,
-            config.interfaces[1].endpoints[0].transfer_type);
-  EXPECT_EQ(UsbUsageType::DATA, config.interfaces[1].endpoints[0].usage_type);
-  EXPECT_EQ(8, config.interfaces[1].endpoints[0].polling_interval);
-  EXPECT_EQ(0u, config.interfaces[1].endpoints[0].extra_data.size());
+            config.interfaces[1].endpoints[0]->type);
+  EXPECT_EQ(UsbUsageType::DATA, config.interfaces[1].endpoints[0]->usage_type);
+  EXPECT_EQ(8, config.interfaces[1].endpoints[0]->polling_interval);
+  EXPECT_EQ(0u, config.interfaces[1].endpoints[0]->extra_data.size());
   // Endpoint 2 OUT
-  EXPECT_EQ(0x02, config.interfaces[1].endpoints[1].address);
+  EXPECT_EQ(0x02, config.interfaces[1].endpoints[1]->endpoint_number);
   EXPECT_EQ(UsbTransferDirection::OUTBOUND,
-            config.interfaces[1].endpoints[1].direction);
-  EXPECT_EQ(1024, config.interfaces[1].endpoints[1].maximum_packet_size);
+            config.interfaces[1].endpoints[1]->direction);
+  EXPECT_EQ(1024u, config.interfaces[1].endpoints[1]->packet_size);
   EXPECT_EQ(UsbSynchronizationType::NONE,
-            config.interfaces[1].endpoints[1].synchronization_type);
+            config.interfaces[1].endpoints[1]->synchronization_type);
   EXPECT_EQ(UsbTransferType::ISOCHRONOUS,
-            config.interfaces[1].endpoints[1].transfer_type);
+            config.interfaces[1].endpoints[1]->type);
   EXPECT_EQ(UsbUsageType::FEEDBACK,
-            config.interfaces[1].endpoints[1].usage_type);
-  EXPECT_EQ(8, config.interfaces[1].endpoints[1].polling_interval);
-  EXPECT_EQ(0u, config.interfaces[1].endpoints[1].extra_data.size());
+            config.interfaces[1].endpoints[1]->usage_type);
+  EXPECT_EQ(8, config.interfaces[1].endpoints[1]->polling_interval);
+  EXPECT_EQ(0u, config.interfaces[1].endpoints[1]->extra_data.size());
 }
 
 void ExpectDeviceDescriptor(const UsbDeviceDescriptor& descriptor) {
diff --git a/services/device/usb/usb_device_android.cc b/services/device/usb/usb_device_android.cc
index 2ce6ae9..9a857ab 100644
--- a/services/device/usb/usb_device_android.cc
+++ b/services/device/usb/usb_device_android.cc
@@ -206,7 +206,7 @@
     return;
   }
 
-  descriptor_ = *descriptor;
+  descriptor_ = std::move(*descriptor);
 
   if (usb_version() >= 0x0210) {
     ReadWebUsbDescriptors(
diff --git a/services/device/usb/usb_device_handle_impl.cc b/services/device/usb/usb_device_handle_impl.cc
index d76d96f..d2fd569 100644
--- a/services/device/usb/usb_device_handle_impl.cc
+++ b/services/device/usb/usb_device_handle_impl.cc
@@ -22,6 +22,7 @@
 #include "base/threading/scoped_blocking_call.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "components/device_event_log/device_event_log.h"
+#include "services/device/public/cpp/usb/usb_utils.h"
 #include "services/device/usb/usb_context.h"
 #include "services/device/usb/usb_descriptors.h"
 #include "services/device/usb/usb_device_impl.h"
@@ -792,7 +793,7 @@
   }
 
   std::unique_ptr<Transfer> transfer;
-  UsbTransferType transfer_type = endpoint_it->second.endpoint->transfer_type;
+  UsbTransferType transfer_type = endpoint_it->second.endpoint->type;
   if (transfer_type == UsbTransferType::BULK) {
     transfer = Transfer::CreateBulkTransfer(this, endpoint_address, buffer,
                                             static_cast<int>(buffer->size()),
@@ -996,8 +997,9 @@
       for (const UsbInterfaceDescriptor& iface : config->interfaces) {
         if (iface.interface_number == interface_number &&
             iface.alternate_setting == claimed_iface->alternate_setting()) {
-          for (const UsbEndpointDescriptor& endpoint : iface.endpoints) {
-            endpoint_map_[endpoint.address] = {&iface, &endpoint};
+          for (const auto& endpoint : iface.endpoints) {
+            endpoint_map_[ConvertEndpointNumberToAddress(*endpoint)] = {
+                &iface, endpoint.get()};
           }
           break;
         }
diff --git a/services/device/usb/usb_device_handle_impl.h b/services/device/usb/usb_device_handle_impl.h
index 14db011..b1d1e64 100644
--- a/services/device/usb/usb_device_handle_impl.h
+++ b/services/device/usb/usb_device_handle_impl.h
@@ -17,6 +17,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/sequence_checker.h"
+#include "services/device/public/mojom/usb_device.mojom.h"
 #include "services/device/usb/scoped_libusb_device_handle.h"
 #include "services/device/usb/usb_device_handle.h"
 #include "third_party/libusb/src/libusb/libusb.h"
@@ -30,7 +31,7 @@
 
 struct EndpointMapValue {
   const UsbInterfaceDescriptor* interface;
-  const UsbEndpointDescriptor* endpoint;
+  const mojom::UsbEndpointInfo* endpoint;
 };
 
 class UsbDeviceImpl;
diff --git a/services/device/usb/usb_device_handle_usbfs.cc b/services/device/usb/usb_device_handle_usbfs.cc
index cc3d8e46..21f4333 100644
--- a/services/device/usb/usb_device_handle_usbfs.cc
+++ b/services/device/usb/usb_device_handle_usbfs.cc
@@ -22,6 +22,7 @@
 #include "base/threading/scoped_blocking_call.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "components/device_event_log/device_event_log.h"
+#include "services/device/public/cpp/usb/usb_utils.h"
 #include "services/device/usb/usb_device_linux.h"
 
 namespace device {
@@ -877,8 +878,9 @@
     DCHECK(interface_it != config->interfaces.end());
 
     for (const auto& endpoint : interface_it->endpoints) {
-      EndpointInfo& info = endpoints_[endpoint.address];
-      info.type = endpoint.transfer_type;
+      EndpointInfo& info =
+          endpoints_[ConvertEndpointNumberToAddress(*endpoint)];
+      info.type = endpoint->type;
       info.interface = &*interface_it;
     }
   }
diff --git a/services/device/usb/usb_device_handle_win.cc b/services/device/usb/usb_device_handle_win.cc
index 9dbd2c3d..5babe84e 100644
--- a/services/device/usb/usb_device_handle_win.cc
+++ b/services/device/usb/usb_device_handle_win.cc
@@ -28,6 +28,7 @@
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/win/object_watcher.h"
 #include "components/device_event_log/device_event_log.h"
+#include "services/device/public/cpp/usb/usb_utils.h"
 #include "services/device/usb/usb_context.h"
 #include "services/device/usb/usb_descriptors.h"
 #include "services/device/usb/usb_device_win.h"
@@ -424,9 +425,8 @@
     TransferCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  uint8_t endpoint_address = endpoint_number;
-  if (direction == UsbTransferDirection::INBOUND)
-    endpoint_address |= 0x80;
+  uint8_t endpoint_address =
+      ConvertEndpointNumberToAddress(endpoint_number, direction);
 
   auto endpoint_it = endpoints_.find(endpoint_address);
   if (endpoint_it == endpoints_.end()) {
@@ -558,16 +558,17 @@
 void UsbDeviceHandleWin::RegisterEndpoints(
     const UsbInterfaceDescriptor& interface) {
   for (const auto& endpoint : interface.endpoints) {
-    Endpoint& endpoint_info = endpoints_[endpoint.address];
+    Endpoint& endpoint_info =
+        endpoints_[ConvertEndpointNumberToAddress(*endpoint)];
     endpoint_info.interface = &interface;
-    endpoint_info.type = endpoint.transfer_type;
+    endpoint_info.type = endpoint->type;
   }
 }
 
 void UsbDeviceHandleWin::UnregisterEndpoints(
     const UsbInterfaceDescriptor& interface) {
   for (const auto& endpoint : interface.endpoints)
-    endpoints_.erase(endpoint.address);
+    endpoints_.erase(ConvertEndpointNumberToAddress(*endpoint));
 }
 
 WINUSB_INTERFACE_HANDLE UsbDeviceHandleWin::GetInterfaceForControlTransfer(
diff --git a/services/device/usb/usb_device_win.cc b/services/device/usb/usb_device_win.cc
index c8f5616..19a3d86 100644
--- a/services/device/usb/usb_device_win.cc
+++ b/services/device/usb/usb_device_win.cc
@@ -81,7 +81,7 @@
     return;
   }
 
-  descriptor_ = *descriptor;
+  descriptor_ = std::move(*descriptor);
 
   // WinUSB only supports the configuration 1.
   ActiveConfigurationChanged(1);
diff --git a/services/device/usb/usb_endpoint_android.cc b/services/device/usb/usb_endpoint_android.cc
index 34517ac..01b36f0 100644
--- a/services/device/usb/usb_endpoint_android.cc
+++ b/services/device/usb/usb_endpoint_android.cc
@@ -5,23 +5,22 @@
 #include "services/device/usb/usb_endpoint_android.h"
 
 #include "services/device/usb/jni_headers/ChromeUsbEndpoint_jni.h"
+#include "services/device/usb/usb_descriptors.h"
 
 namespace device {
 
 // static
-UsbEndpointDescriptor UsbEndpointAndroid::Convert(
+mojom::UsbEndpointInfoPtr UsbEndpointAndroid::Convert(
     JNIEnv* env,
     const base::android::JavaRef<jobject>& usb_endpoint) {
   base::android::ScopedJavaLocalRef<jobject> wrapper =
       Java_ChromeUsbEndpoint_create(env, usb_endpoint);
 
-  UsbEndpointDescriptor endpoint(
+  return BuildUsbEndpointInfoPtr(
       Java_ChromeUsbEndpoint_getAddress(env, wrapper),
       Java_ChromeUsbEndpoint_getAttributes(env, wrapper),
       Java_ChromeUsbEndpoint_getMaxPacketSize(env, wrapper),
       Java_ChromeUsbEndpoint_getInterval(env, wrapper));
-
-  return endpoint;
 }
 
 }  // namespace device
diff --git a/services/device/usb/usb_endpoint_android.h b/services/device/usb/usb_endpoint_android.h
index 44542f3..7852d7b 100644
--- a/services/device/usb/usb_endpoint_android.h
+++ b/services/device/usb/usb_endpoint_android.h
@@ -6,13 +6,13 @@
 #define SERVICES_DEVICE_USB_USB_ENDPOINT_ANDROID_H_
 
 #include "base/android/scoped_java_ref.h"
-#include "services/device/usb/usb_descriptors.h"
+#include "services/device/public/mojom/usb_device.mojom.h"
 
 namespace device {
 
 class UsbEndpointAndroid {
  public:
-  static UsbEndpointDescriptor Convert(
+  static mojom::UsbEndpointInfoPtr Convert(
       JNIEnv* env,
       const base::android::JavaRef<jobject>& usb_endpoint);
 };
diff --git a/services/device/usb/usb_service_linux.cc b/services/device/usb/usb_service_linux.cc
index d95e44e..7bc1a95 100644
--- a/services/device/usb/usb_service_linux.cc
+++ b/services/device/usb/usb_service_linux.cc
@@ -209,8 +209,7 @@
 UsbServiceLinux::UsbServiceLinux()
     : UsbService(),
       blocking_task_runner_(CreateBlockingTaskRunner()),
-      helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner_)),
-      weak_factory_(this) {
+      helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner_)) {
   helper_.reset(new BlockingTaskRunnerHelper(weak_factory_.GetWeakPtr()));
   blocking_task_runner_->PostTask(
       FROM_HERE, base::BindOnce(&BlockingTaskRunnerHelper::Start,
diff --git a/services/device/usb/usb_service_linux.h b/services/device/usb/usb_service_linux.h
index baf1d93..7cf1780 100644
--- a/services/device/usb/usb_service_linux.h
+++ b/services/device/usb/usb_service_linux.h
@@ -62,7 +62,7 @@
   std::unique_ptr<BlockingTaskRunnerHelper, base::OnTaskRunnerDeleter> helper_;
   DeviceMap devices_by_path_;
 
-  base::WeakPtrFactory<UsbServiceLinux> weak_factory_;
+  base::WeakPtrFactory<UsbServiceLinux> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(UsbServiceLinux);
 };
diff --git a/services/media_session/media_controller.cc b/services/media_session/media_controller.cc
index 5f267ba..2abadae3 100644
--- a/services/media_session/media_controller.cc
+++ b/services/media_session/media_controller.cc
@@ -258,8 +258,8 @@
   });
 
   // Add |this| as an observer for |session|.
-  mojom::MediaSessionObserverPtr observer;
-  session_binding_.Bind(mojo::MakeRequest(&observer));
+  mojo::PendingRemote<mojom::MediaSessionObserver> observer;
+  session_binding_.Bind(observer.InitWithNewPipeAndPassReceiver());
   session->ipc()->AddObserver(std::move(observer));
 }
 
diff --git a/services/media_session/public/cpp/test/mock_media_session.cc b/services/media_session/public/cpp/test/mock_media_session.cc
index 7d774d6a..f870e69 100644
--- a/services/media_session/public/cpp/test/mock_media_session.cc
+++ b/services/media_session/public/cpp/test/mock_media_session.cc
@@ -15,8 +15,8 @@
 MockMediaSessionMojoObserver::MockMediaSessionMojoObserver(
     mojom::MediaSession& media_session)
     : binding_(this) {
-  mojom::MediaSessionObserverPtr observer;
-  binding_.Bind(mojo::MakeRequest(&observer));
+  mojo::PendingRemote<mojom::MediaSessionObserver> observer;
+  binding_.Bind(observer.InitWithNewPipeAndPassReceiver());
   media_session.AddObserver(std::move(observer));
 }
 
@@ -184,17 +184,20 @@
   std::move(callback).Run(GetMediaSessionInfoSync());
 }
 
-void MockMediaSession::AddObserver(mojom::MediaSessionObserverPtr observer) {
+void MockMediaSession::AddObserver(
+    mojo::PendingRemote<mojom::MediaSessionObserver> observer) {
   ++add_observer_count_;
+  mojo::Remote<mojom::MediaSessionObserver> media_session_observer(
+      std::move(observer));
 
-  observer->MediaSessionInfoChanged(GetMediaSessionInfoSync());
+  media_session_observer->MediaSessionInfoChanged(GetMediaSessionInfoSync());
 
   std::vector<mojom::MediaSessionAction> actions(actions_.begin(),
                                                  actions_.end());
-  observer->MediaSessionActionsChanged(actions);
-  observer->MediaSessionImagesChanged(images_);
+  media_session_observer->MediaSessionActionsChanged(actions);
+  media_session_observer->MediaSessionImagesChanged(images_);
 
-  observers_.AddPtr(std::move(observer));
+  observers_.Add(std::move(media_session_observer));
 }
 
 void MockMediaSession::GetDebugInfo(GetDebugInfoCallback callback) {
@@ -326,26 +329,26 @@
 
 void MockMediaSession::SimulateMetadataChanged(
     const base::Optional<MediaMetadata>& metadata) {
-  observers_.ForAllPtrs([&metadata](mojom::MediaSessionObserver* observer) {
+  for (auto& observer : observers_) {
     observer->MediaSessionMetadataChanged(metadata);
-  });
+  }
 }
 
 void MockMediaSession::ClearAllImages() {
   images_.clear();
 
-  observers_.ForAllPtrs([this](mojom::MediaSessionObserver* observer) {
+  for (auto& observer : observers_) {
     observer->MediaSessionImagesChanged(this->images_);
-  });
+  }
 }
 
 void MockMediaSession::SetImagesOfType(mojom::MediaSessionImageType type,
                                        const std::vector<MediaImage>& images) {
   images_.insert_or_assign(type, images);
 
-  observers_.ForAllPtrs([this](mojom::MediaSessionObserver* observer) {
+  for (auto& observer : observers_) {
     observer->MediaSessionImagesChanged(this->images_);
-  });
+  }
 }
 
 void MockMediaSession::EnableAction(mojom::MediaSessionAction action) {
@@ -375,9 +378,9 @@
   if (afr_client_.is_bound())
     afr_client_->MediaSessionInfoChanged(session_info.Clone());
 
-  observers_.ForAllPtrs([&session_info](mojom::MediaSessionObserver* observer) {
+  for (auto& observer : observers_) {
     observer->MediaSessionInfoChanged(session_info.Clone());
-  });
+  }
 }
 
 mojom::MediaSessionInfoPtr MockMediaSession::GetMediaSessionInfoSync() const {
@@ -401,9 +404,9 @@
   std::vector<mojom::MediaSessionAction> actions(actions_.begin(),
                                                  actions_.end());
 
-  observers_.ForAllPtrs([&actions](mojom::MediaSessionObserver* observer) {
+  for (auto& observer : observers_) {
     observer->MediaSessionActionsChanged(actions);
-  });
+  }
 }
 
 void MockMediaSession::RequestAudioFocusFromClient(
diff --git a/services/media_session/public/cpp/test/mock_media_session.h b/services/media_session/public/cpp/test/mock_media_session.h
index e8a0b0b2..89cce53 100644
--- a/services/media_session/public/cpp/test/mock_media_session.h
+++ b/services/media_session/public/cpp/test/mock_media_session.h
@@ -16,6 +16,7 @@
 #include "mojo/public/cpp/bindings/binding.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
 #include "mojo/public/cpp/bindings/interface_ptr_set.h"
+#include "mojo/public/cpp/bindings/remote_set.h"
 #include "services/media_session/public/cpp/media_metadata.h"
 #include "services/media_session/public/mojom/audio_focus.mojom.h"
 #include "services/media_session/public/mojom/media_controller.mojom.h"
@@ -114,7 +115,8 @@
   void StartDucking() override;
   void StopDucking() override;
   void GetMediaSessionInfo(GetMediaSessionInfoCallback callback) override;
-  void AddObserver(mojom::MediaSessionObserverPtr observer) override;
+  void AddObserver(
+      mojo::PendingRemote<mojom::MediaSessionObserver> observer) override;
   void GetDebugInfo(GetDebugInfoCallback callback) override;
   void PreviousTrack() override;
   void NextTrack() override;
@@ -197,7 +199,7 @@
 
   mojo::BindingSet<mojom::MediaSession> bindings_;
 
-  mojo::InterfacePtrSet<mojom::MediaSessionObserver> observers_;
+  mojo::RemoteSet<mojom::MediaSessionObserver> observers_;
 
   DISALLOW_COPY_AND_ASSIGN(MockMediaSession);
 };
diff --git a/services/media_session/public/mojom/media_session.mojom b/services/media_session/public/mojom/media_session.mojom
index fb0c2d6..937963b 100644
--- a/services/media_session/public/mojom/media_session.mojom
+++ b/services/media_session/public/mojom/media_session.mojom
@@ -175,7 +175,7 @@
   // |type| represents the origin of the request.
   Resume@5(SuspendType suspend_type);
 
-  AddObserver@6(MediaSessionObserver observer);
+  AddObserver@6(pending_remote<MediaSessionObserver> observer);
 
   // Skip to the previous track. If there is no previous track then this will
   // be a no-op.
diff --git a/services/network/conditional_cache_deletion_helper.cc b/services/network/conditional_cache_deletion_helper.cc
index c460650..acdbd40f 100644
--- a/services/network/conditional_cache_deletion_helper.cc
+++ b/services/network/conditional_cache_deletion_helper.cc
@@ -55,8 +55,7 @@
     std::unique_ptr<disk_cache::Backend::Iterator> iterator)
     : condition_(condition),
       completion_callback_(std::move(completion_callback)),
-      iterator_(std::move(iterator)),
-      weak_factory_(this) {}
+      iterator_(std::move(iterator)) {}
 
 ConditionalCacheDeletionHelper::~ConditionalCacheDeletionHelper() = default;
 
diff --git a/services/network/conditional_cache_deletion_helper.h b/services/network/conditional_cache_deletion_helper.h
index eb63708..fadc541 100644
--- a/services/network/conditional_cache_deletion_helper.h
+++ b/services/network/conditional_cache_deletion_helper.h
@@ -54,7 +54,7 @@
   disk_cache::Entry* current_entry_ = nullptr;
   disk_cache::Entry* previous_entry_ = nullptr;
 
-  base::WeakPtrFactory<ConditionalCacheDeletionHelper> weak_factory_;
+  base::WeakPtrFactory<ConditionalCacheDeletionHelper> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ConditionalCacheDeletionHelper);
 };
diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc
index bb0f6ac..f8c92fae 100644
--- a/services/network/cors/cors_url_loader.cc
+++ b/services/network/cors/cors_url_loader.cc
@@ -101,8 +101,7 @@
       factory_bound_origin_(factory_bound_origin),
       origin_access_list_(origin_access_list),
       factory_bound_origin_access_list_(factory_bound_origin_access_list),
-      preflight_controller_(preflight_controller),
-      weak_factory_(this) {
+      preflight_controller_(preflight_controller) {
   binding_.set_connection_error_handler(base::BindOnce(
       &CorsURLLoader::OnConnectionError, base::Unretained(this)));
   DCHECK(network_loader_factory_);
diff --git a/services/network/cors/cors_url_loader.h b/services/network/cors/cors_url_loader.h
index c83c4e6..535b7fa3 100644
--- a/services/network/cors/cors_url_loader.h
+++ b/services/network/cors/cors_url_loader.h
@@ -175,7 +175,7 @@
   PreflightController* preflight_controller_;
 
   // Used to run asynchronous class instance bound callbacks safely.
-  base::WeakPtrFactory<CorsURLLoader> weak_factory_;
+  base::WeakPtrFactory<CorsURLLoader> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(CorsURLLoader);
 };
diff --git a/services/network/cors/cors_url_loader_unittest.cc b/services/network/cors/cors_url_loader_unittest.cc
index 64d5c7b..70712a1 100644
--- a/services/network/cors/cors_url_loader_unittest.cc
+++ b/services/network/cors/cors_url_loader_unittest.cc
@@ -55,7 +55,7 @@
 
 class TestURLLoaderFactory : public mojom::URLLoaderFactory {
  public:
-  TestURLLoaderFactory() : weak_factory_(this) {}
+  TestURLLoaderFactory() {}
   ~TestURLLoaderFactory() override = default;
 
   base::WeakPtr<TestURLLoaderFactory> GetWeakPtr() {
@@ -132,7 +132,7 @@
 
   base::RepeatingClosure on_create_loader_and_start_;
 
-  base::WeakPtrFactory<TestURLLoaderFactory> weak_factory_;
+  base::WeakPtrFactory<TestURLLoaderFactory> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(TestURLLoaderFactory);
 };
diff --git a/services/network/crl_set_distributor.cc b/services/network/crl_set_distributor.cc
index c3f171a..346ac954 100644
--- a/services/network/crl_set_distributor.cc
+++ b/services/network/crl_set_distributor.cc
@@ -27,7 +27,7 @@
 
 }  // namespace
 
-CRLSetDistributor::CRLSetDistributor() : weak_factory_(this) {}
+CRLSetDistributor::CRLSetDistributor() {}
 
 CRLSetDistributor::~CRLSetDistributor() = default;
 
diff --git a/services/network/crl_set_distributor.h b/services/network/crl_set_distributor.h
index 9e8f96a7..422d3a3 100644
--- a/services/network/crl_set_distributor.h
+++ b/services/network/crl_set_distributor.h
@@ -58,7 +58,7 @@
                      false /*allow_reentrancy*/>::Unchecked observers_;
   scoped_refptr<net::CRLSet> crl_set_;
 
-  base::WeakPtrFactory<CRLSetDistributor> weak_factory_;
+  base::WeakPtrFactory<CRLSetDistributor> weak_factory_{this};
 };
 
 }  // namespace network
diff --git a/services/network/data_pipe_element_reader.cc b/services/network/data_pipe_element_reader.cc
index e5a89c6d..f338f98 100644
--- a/services/network/data_pipe_element_reader.cc
+++ b/services/network/data_pipe_element_reader.cc
@@ -21,8 +21,7 @@
       data_pipe_getter_(std::move(data_pipe_getter)),
       handle_watcher_(FROM_HERE,
                       mojo::SimpleWatcher::ArmingPolicy::MANUAL,
-                      base::SequencedTaskRunnerHandle::Get()),
-      weak_factory_(this) {}
+                      base::SequencedTaskRunnerHandle::Get()) {}
 
 DataPipeElementReader::~DataPipeElementReader() {}
 
diff --git a/services/network/data_pipe_element_reader.h b/services/network/data_pipe_element_reader.h
index 7c1ff41..60f2a19 100644
--- a/services/network/data_pipe_element_reader.h
+++ b/services/network/data_pipe_element_reader.h
@@ -81,7 +81,7 @@
   net::CompletionOnceCallback init_callback_;
   net::CompletionOnceCallback read_callback_;
 
-  base::WeakPtrFactory<DataPipeElementReader> weak_factory_;
+  base::WeakPtrFactory<DataPipeElementReader> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(DataPipeElementReader);
 };
diff --git a/services/network/http_cache_data_counter.cc b/services/network/http_cache_data_counter.cc
index 42e40e0..967290d 100644
--- a/services/network/http_cache_data_counter.cc
+++ b/services/network/http_cache_data_counter.cc
@@ -59,8 +59,7 @@
     HttpCacheDataCounterCallback callback)
     : start_time_(start_time),
       end_time_(end_time),
-      callback_(std::move(callback)),
-      weak_factory_(this) {}
+      callback_(std::move(callback)) {}
 
 HttpCacheDataCounter::~HttpCacheDataCounter() {}
 
diff --git a/services/network/http_cache_data_counter.h b/services/network/http_cache_data_counter.h
index 96cd201d..ad3418d 100644
--- a/services/network/http_cache_data_counter.h
+++ b/services/network/http_cache_data_counter.h
@@ -67,7 +67,7 @@
   base::Time end_time_;
   HttpCacheDataCounterCallback callback_;
 
-  base::WeakPtrFactory<HttpCacheDataCounter> weak_factory_;
+  base::WeakPtrFactory<HttpCacheDataCounter> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(HttpCacheDataCounter);
 };
diff --git a/services/network/http_cache_data_remover.cc b/services/network/http_cache_data_remover.cc
index f7a2dbb..c94363cd 100644
--- a/services/network/http_cache_data_remover.cc
+++ b/services/network/http_cache_data_remover.cc
@@ -48,8 +48,7 @@
     : delete_begin_(delete_begin),
       delete_end_(delete_end),
       done_callback_(std::move(done_callback)),
-      backend_(nullptr),
-      weak_factory_(this) {
+      backend_(nullptr) {
   DCHECK(!done_callback_.is_null());
 
   if (!url_filter)
diff --git a/services/network/http_cache_data_remover.h b/services/network/http_cache_data_remover.h
index 09be3dc..4d288845 100644
--- a/services/network/http_cache_data_remover.h
+++ b/services/network/http_cache_data_remover.h
@@ -66,7 +66,7 @@
 
   std::unique_ptr<ConditionalCacheDeletionHelper> deletion_helper_;
 
-  base::WeakPtrFactory<HttpCacheDataRemover> weak_factory_;
+  base::WeakPtrFactory<HttpCacheDataRemover> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(HttpCacheDataRemover);
 };
diff --git a/services/network/mdns_responder.cc b/services/network/mdns_responder.cc
index a4e009bd..f0bb36e 100644
--- a/services/network/mdns_responder.cc
+++ b/services/network/mdns_responder.cc
@@ -288,8 +288,7 @@
         socket_(std::move(socket)),
         responder_manager_(responder_manager),
         io_buffer_(base::MakeRefCounted<net::IOBufferWithSize>(
-            net::dns_protocol::kMaxUDPSize + 1)),
-        weak_factory_(this) {}
+            net::dns_protocol::kMaxUDPSize + 1)) {}
   ~SocketHandler() = default;
 
   int Start() {
@@ -371,7 +370,7 @@
   net::IPEndPoint recv_addr_;
   net::IPEndPoint multicast_addr_;
 
-  base::WeakPtrFactory<SocketHandler> weak_factory_;
+  base::WeakPtrFactory<SocketHandler> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(SocketHandler);
 };
@@ -416,8 +415,7 @@
       : handler_(handler),
         tick_clock_(base::DefaultTickClock::GetInstance()),
         dispatch_timer_(std::make_unique<base::OneShotTimer>(tick_clock_)),
-        next_available_time_per_resp_sched_(tick_clock_->NowTicks()),
-        weak_factory_(this) {}
+        next_available_time_per_resp_sched_(tick_clock_->NowTicks()) {}
   ~ResponseScheduler() { dispatch_timer_->Stop(); }
 
   // Implements the rate limit scheme on the underlying interface managed by
@@ -509,7 +507,7 @@
   // Packets with earlier ready time have higher priorities.
   std::priority_queue<PendingPacket> send_queue_;
 
-  base::WeakPtrFactory<ResponseScheduler> weak_factory_;
+  base::WeakPtrFactory<ResponseScheduler> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ResponseScheduler);
 };
diff --git a/services/network/network_qualities_pref_delegate.cc b/services/network/network_qualities_pref_delegate.cc
index 7f87fb9..06e0658 100644
--- a/services/network/network_qualities_pref_delegate.cc
+++ b/services/network/network_qualities_pref_delegate.cc
@@ -70,8 +70,7 @@
     PrefService* pref_service,
     net::NetworkQualityEstimator* network_quality_estimator)
     : prefs_manager_(std::make_unique<PrefDelegateImpl>(pref_service)),
-      network_quality_estimator_(network_quality_estimator),
-      weak_ptr_factory_(this) {
+      network_quality_estimator_(network_quality_estimator) {
   DCHECK(pref_service);
   DCHECK(network_quality_estimator_);
 
diff --git a/services/network/network_qualities_pref_delegate.h b/services/network/network_qualities_pref_delegate.h
index 0f6273e3..56547b3 100644
--- a/services/network/network_qualities_pref_delegate.h
+++ b/services/network/network_qualities_pref_delegate.h
@@ -57,7 +57,7 @@
 
   SEQUENCE_CHECKER(sequence_checker_);
 
-  base::WeakPtrFactory<NetworkQualitiesPrefDelegate> weak_ptr_factory_;
+  base::WeakPtrFactory<NetworkQualitiesPrefDelegate> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(NetworkQualitiesPrefDelegate);
 };
diff --git a/services/network/network_service_network_delegate.cc b/services/network/network_service_network_delegate.cc
index 4841a1e7..b9fa102b 100644
--- a/services/network/network_service_network_delegate.cc
+++ b/services/network/network_service_network_delegate.cc
@@ -28,7 +28,7 @@
 
 NetworkServiceNetworkDelegate::NetworkServiceNetworkDelegate(
     NetworkContext* network_context)
-    : network_context_(network_context), weak_ptr_factory_(this) {}
+    : network_context_(network_context) {}
 
 NetworkServiceNetworkDelegate::~NetworkServiceNetworkDelegate() = default;
 
diff --git a/services/network/network_service_network_delegate.h b/services/network/network_service_network_delegate.h
index b4b1bbc0..d7eb0d13 100644
--- a/services/network/network_service_network_delegate.h
+++ b/services/network/network_service_network_delegate.h
@@ -68,7 +68,8 @@
 
   NetworkContext* network_context_;
 
-  mutable base::WeakPtrFactory<NetworkServiceNetworkDelegate> weak_ptr_factory_;
+  mutable base::WeakPtrFactory<NetworkServiceNetworkDelegate> weak_ptr_factory_{
+      this};
 
   DISALLOW_COPY_AND_ASSIGN(NetworkServiceNetworkDelegate);
 };
diff --git a/services/network/p2p/socket.cc b/services/network/p2p/socket.cc
index 79cbad1..965e350 100644
--- a/services/network/p2p/socket.cc
+++ b/services/network/p2p/socket.cc
@@ -70,8 +70,7 @@
     : delegate_(delegate),
       client_(std::move(client)),
       binding_(this, std::move(socket)),
-      protocol_type_(protocol_type),
-      weak_ptr_factory_(this) {
+      protocol_type_(protocol_type) {
   binding_.set_connection_error_handler(
       base::BindOnce(&P2PSocket::OnError, base::Unretained(this)));
 }
diff --git a/services/network/p2p/socket.h b/services/network/p2p/socket.h
index c6d52bc..535d4d6 100644
--- a/services/network/p2p/socket.h
+++ b/services/network/p2p/socket.h
@@ -164,7 +164,7 @@
   int32_t send_bytes_delayed_max_ = 0;
   int32_t send_bytes_delayed_cur_ = 0;
 
-  base::WeakPtrFactory<P2PSocket> weak_ptr_factory_;
+  base::WeakPtrFactory<P2PSocket> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(P2PSocket);
 };
diff --git a/services/network/p2p/socket_manager.cc b/services/network/p2p/socket_manager.cc
index 071c13e..bd627d8 100644
--- a/services/network/p2p/socket_manager.cc
+++ b/services/network/p2p/socket_manager.cc
@@ -157,8 +157,7 @@
       trusted_socket_manager_binding_(
           this,
           std::move(trusted_socket_manager_request)),
-      socket_manager_binding_(this, std::move(socket_manager_request)),
-      weak_factory_(this) {
+      socket_manager_binding_(this, std::move(socket_manager_request)) {
   trusted_socket_manager_binding_.set_connection_error_handler(
       base::Bind(&P2PSocketManager::OnConnectionError, base::Unretained(this)));
   socket_manager_binding_.set_connection_error_handler(
diff --git a/services/network/p2p/socket_manager.h b/services/network/p2p/socket_manager.h
index 4ba2788..d5311a6 100644
--- a/services/network/p2p/socket_manager.h
+++ b/services/network/p2p/socket_manager.h
@@ -139,7 +139,7 @@
 
   mojom::P2PNetworkNotificationClientPtr network_notification_client_;
 
-  base::WeakPtrFactory<P2PSocketManager> weak_factory_;
+  base::WeakPtrFactory<P2PSocketManager> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(P2PSocketManager);
 };
diff --git a/services/network/proxy_resolver_factory_mojo.cc b/services/network/proxy_resolver_factory_mojo.cc
index a62904a..04e9ecc 100644
--- a/services/network/proxy_resolver_factory_mojo.cc
+++ b/services/network/proxy_resolver_factory_mojo.cc
@@ -413,8 +413,7 @@
       mojo_proxy_factory_(std::move(mojo_proxy_factory)),
       host_resolver_(host_resolver),
       error_observer_factory_(error_observer_factory),
-      net_log_(net_log),
-      weak_ptr_factory_(this) {}
+      net_log_(net_log) {}
 
 ProxyResolverFactoryMojo::~ProxyResolverFactoryMojo() = default;
 
diff --git a/services/network/proxy_resolver_factory_mojo.h b/services/network/proxy_resolver_factory_mojo.h
index 1f6747c2..cd8d660 100644
--- a/services/network/proxy_resolver_factory_mojo.h
+++ b/services/network/proxy_resolver_factory_mojo.h
@@ -53,7 +53,7 @@
       error_observer_factory_;
   net::NetLog* const net_log_;
 
-  base::WeakPtrFactory<ProxyResolverFactoryMojo> weak_ptr_factory_;
+  base::WeakPtrFactory<ProxyResolverFactoryMojo> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ProxyResolverFactoryMojo);
 };
diff --git a/services/network/proxy_resolving_client_socket.cc b/services/network/proxy_resolving_client_socket.cc
index bd163c1..6972599 100644
--- a/services/network/proxy_resolving_client_socket.cc
+++ b/services/network/proxy_resolving_client_socket.cc
@@ -42,8 +42,7 @@
       use_tls_(use_tls),
       net_log_(net::NetLogWithSource::Make(network_session_->net_log(),
                                            net::NetLogSourceType::SOCKET)),
-      next_state_(STATE_NONE),
-      weak_factory_(this) {
+      next_state_(STATE_NONE) {
   // TODO(xunjieli): Handle invalid URLs more gracefully (at mojo API layer
   // or when the request is created).
   DCHECK(url_.is_valid());
diff --git a/services/network/proxy_resolving_client_socket.h b/services/network/proxy_resolving_client_socket.h
index b4fa519..10e545c 100644
--- a/services/network/proxy_resolving_client_socket.h
+++ b/services/network/proxy_resolving_client_socket.h
@@ -144,7 +144,7 @@
 
   State next_state_;
 
-  base::WeakPtrFactory<ProxyResolvingClientSocket> weak_factory_;
+  base::WeakPtrFactory<ProxyResolvingClientSocket> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ProxyResolvingClientSocket);
 };
diff --git a/services/network/public/cpp/server/http_server.cc b/services/network/public/cpp/server/http_server.cc
index 078b090..994347d 100644
--- a/services/network/public/cpp/server/http_server.cc
+++ b/services/network/public/cpp/server/http_server.cc
@@ -55,8 +55,7 @@
                        HttpServer::Delegate* delegate)
     : server_socket_(std::move(server_socket)),
       delegate_(delegate),
-      last_id_(0),
-      weak_ptr_factory_(this) {
+      last_id_(0) {
   DCHECK(server_socket_);
   // Start accepting connections in next run loop in case when delegate is not
   // ready to get callbacks.
diff --git a/services/network/public/cpp/server/http_server.h b/services/network/public/cpp/server/http_server.h
index a5162d29..bfea274 100644
--- a/services/network/public/cpp/server/http_server.h
+++ b/services/network/public/cpp/server/http_server.h
@@ -141,7 +141,7 @@
   int last_id_;
   std::map<int, std::unique_ptr<HttpConnection>> id_to_connection_;
 
-  base::WeakPtrFactory<HttpServer> weak_ptr_factory_;
+  base::WeakPtrFactory<HttpServer> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(HttpServer);
 };
diff --git a/services/network/public/cpp/simple_url_loader.cc b/services/network/public/cpp/simple_url_loader.cc
index 7a54f5f..b575b0b 100644
--- a/services/network/public/cpp/simple_url_loader.cc
+++ b/services/network/public/cpp/simple_url_loader.cc
@@ -371,7 +371,7 @@
 
   SEQUENCE_CHECKER(sequence_checker_);
 
-  base::WeakPtrFactory<SimpleURLLoaderImpl> weak_ptr_factory_;
+  base::WeakPtrFactory<SimpleURLLoaderImpl> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(SimpleURLLoaderImpl);
 };
@@ -410,9 +410,7 @@
   };
 
   BodyReader(Delegate* delegate, int64_t max_body_size)
-      : delegate_(delegate),
-        max_body_size_(max_body_size),
-        weak_ptr_factory_(this) {
+      : delegate_(delegate), max_body_size_(max_body_size) {
     DCHECK_GE(max_body_size_, 0);
   }
 
@@ -557,7 +555,7 @@
   // Delegate only after Resume() is called.
   net::Error pending_error_ = net::OK;
 
-  base::WeakPtrFactory<BodyReader> weak_ptr_factory_;
+  base::WeakPtrFactory<BodyReader> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(BodyReader);
 };
@@ -754,8 +752,7 @@
                         base::TaskPriority task_priority)
       : BodyHandler(simple_url_loader, want_download_progress),
         download_to_file_complete_callback_(
-            std::move(download_to_file_complete_callback)),
-        weak_ptr_factory_(this) {
+            std::move(download_to_file_complete_callback)) {
     DCHECK(create_temp_file || !path.empty());
 
     // Can only do this after initializing the WeakPtrFactory.
@@ -1058,7 +1055,7 @@
 
   SEQUENCE_CHECKER(sequence_checker_);
 
-  base::WeakPtrFactory<SaveToFileBodyHandler> weak_ptr_factory_;
+  base::WeakPtrFactory<SaveToFileBodyHandler> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(SaveToFileBodyHandler);
 };
@@ -1071,8 +1068,7 @@
                               bool want_download_progress,
                               SimpleURLLoaderStreamConsumer* stream_consumer)
       : BodyHandler(simple_url_loader, want_download_progress),
-        stream_consumer_(stream_consumer),
-        weak_ptr_factory_(this) {}
+        stream_consumer_(stream_consumer) {}
 
   ~DownloadAsStreamBodyHandler() override {}
 
@@ -1140,7 +1136,7 @@
 
   bool in_recursive_call_ = false;
 
-  base::WeakPtrFactory<DownloadAsStreamBodyHandler> weak_ptr_factory_;
+  base::WeakPtrFactory<DownloadAsStreamBodyHandler> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(DownloadAsStreamBodyHandler);
 };
@@ -1153,8 +1149,7 @@
       client_binding_(this),
       request_state_(std::make_unique<RequestState>()),
       final_url_(resource_request_->url),
-      timeout_timer_(timeout_tick_clock_),
-      weak_ptr_factory_(this) {
+      timeout_timer_(timeout_tick_clock_) {
   // Allow creation and use on different threads.
   DETACH_FROM_SEQUENCE(sequence_checker_);
 #if DCHECK_IS_ON()
diff --git a/services/network/public/cpp/simple_url_loader_unittest.cc b/services/network/public/cpp/simple_url_loader_unittest.cc
index d40faf6..bbb2dee 100644
--- a/services/network/public/cpp/simple_url_loader_unittest.cc
+++ b/services/network/public/cpp/simple_url_loader_unittest.cc
@@ -1709,8 +1709,7 @@
       : scoped_task_environment_(scoped_task_environment),
         binding_(this, std::move(url_loader_request)),
         client_(std::move(client)),
-        test_events_(std::move(test_events)),
-        weak_factory_for_data_pipe_callbacks_(this) {
+        test_events_(std::move(test_events)) {
     if (request_body && request_body->elements()->size() == 1 &&
         (*request_body->elements())[0].type() ==
             network::mojom::DataElementType::kDataPipe) {
@@ -1955,7 +1954,8 @@
 
   std::unique_ptr<base::RunLoop> read_run_loop_;
 
-  base::WeakPtrFactory<MockURLLoader> weak_factory_for_data_pipe_callbacks_;
+  base::WeakPtrFactory<MockURLLoader> weak_factory_for_data_pipe_callbacks_{
+      this};
 
   DISALLOW_COPY_AND_ASSIGN(MockURLLoader);
 };
diff --git a/services/network/resource_scheduler.cc b/services/network/resource_scheduler.cc
index a5d46c8..288e800 100644
--- a/services/network/resource_scheduler.cc
+++ b/services/network/resource_scheduler.cc
@@ -212,8 +212,7 @@
         priority_(priority),
         fifo_ordering_(0),
         peak_delayable_requests_in_flight_(0u),
-        host_port_pair_(net::HostPortPair::FromURL(request->url())),
-        weak_ptr_factory_(this) {
+        host_port_pair_(net::HostPortPair::FromURL(request->url())) {
     DCHECK(!request_->GetUserData(kUserDataKey));
     request_->SetUserData(kUserDataKey, std::make_unique<UnownedPointer>(this));
   }
@@ -328,7 +327,7 @@
   const net::HostPortPair host_port_pair_;
 
   base::WeakPtrFactory<ResourceScheduler::ScheduledResourceRequestImpl>
-      weak_ptr_factory_;
+      weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ScheduledResourceRequestImpl);
 };
@@ -373,8 +372,7 @@
         num_skipped_scans_due_to_scheduled_start_(0),
         network_quality_estimator_(network_quality_estimator),
         resource_scheduler_(resource_scheduler),
-        tick_clock_(tick_clock),
-        weak_ptr_factory_(this) {
+        tick_clock_(tick_clock) {
     DCHECK(tick_clock_);
 
     UpdateParamsForNetworkQuality();
@@ -1053,7 +1051,7 @@
 
   SEQUENCE_CHECKER(sequence_checker_);
 
-  base::WeakPtrFactory<ResourceScheduler::Client> weak_ptr_factory_;
+  base::WeakPtrFactory<ResourceScheduler::Client> weak_ptr_factory_{this};
 };
 
 ResourceScheduler::ResourceScheduler(bool enabled,
diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
index dfa63bc..1dcf773 100644
--- a/services/network/restricted_cookie_manager.cc
+++ b/services/network/restricted_cookie_manager.cc
@@ -118,8 +118,7 @@
       network_context_client_(network_context_client),
       is_service_worker_(is_service_worker),
       process_id_(process_id),
-      frame_id_(frame_id),
-      weak_ptr_factory_(this) {
+      frame_id_(frame_id) {
   DCHECK(cookie_store);
 }
 
diff --git a/services/network/restricted_cookie_manager.h b/services/network/restricted_cookie_manager.h
index 114aa21..9e28e6f0 100644
--- a/services/network/restricted_cookie_manager.h
+++ b/services/network/restricted_cookie_manager.h
@@ -120,7 +120,7 @@
 
   SEQUENCE_CHECKER(sequence_checker_);
 
-  base::WeakPtrFactory<RestrictedCookieManager> weak_ptr_factory_;
+  base::WeakPtrFactory<RestrictedCookieManager> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(RestrictedCookieManager);
 };
diff --git a/services/network/socket_data_pump.cc b/services/network/socket_data_pump.cc
index d880498..c9fc144 100644
--- a/services/network/socket_data_pump.cc
+++ b/services/network/socket_data_pump.cc
@@ -37,8 +37,7 @@
       send_stream_(std::move(send_pipe_handle)),
       send_stream_watcher_(FROM_HERE,
                            mojo::SimpleWatcher::ArmingPolicy::MANUAL),
-      traffic_annotation_(traffic_annotation),
-      weak_factory_(this) {
+      traffic_annotation_(traffic_annotation) {
   send_stream_watcher_.Watch(
       send_stream_.get(),
       MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED,
diff --git a/services/network/socket_data_pump.h b/services/network/socket_data_pump.h
index ca732c0..1760e9f 100644
--- a/services/network/socket_data_pump.h
+++ b/services/network/socket_data_pump.h
@@ -110,7 +110,7 @@
 
   const net::NetworkTrafficAnnotationTag traffic_annotation_;
 
-  base::WeakPtrFactory<SocketDataPump> weak_factory_;
+  base::WeakPtrFactory<SocketDataPump> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(SocketDataPump);
 };
diff --git a/services/network/tcp_bound_socket.cc b/services/network/tcp_bound_socket.cc
index 3741157..6458a154 100644
--- a/services/network/tcp_bound_socket.cc
+++ b/services/network/tcp_bound_socket.cc
@@ -30,8 +30,7 @@
           nullptr /*socket_performance_watcher*/,
           net_log,
           net::NetLogSource())),
-      traffic_annotation_(traffic_annotation),
-      weak_factory_(this) {}
+      traffic_annotation_(traffic_annotation) {}
 
 TCPBoundSocket::~TCPBoundSocket() = default;
 
diff --git a/services/network/tcp_bound_socket.h b/services/network/tcp_bound_socket.h
index eb2f7ec..8357aea 100644
--- a/services/network/tcp_bound_socket.h
+++ b/services/network/tcp_bound_socket.h
@@ -81,7 +81,7 @@
   // Takes ownership of |socket_| if Connect() is called.
   std::unique_ptr<TCPConnectedSocket> connecting_socket_;
 
-  base::WeakPtrFactory<TCPBoundSocket> weak_factory_;
+  base::WeakPtrFactory<TCPBoundSocket> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(TCPBoundSocket);
 };
diff --git a/services/network/tcp_server_socket.cc b/services/network/tcp_server_socket.cc
index 2854c54..cd6b016 100644
--- a/services/network/tcp_server_socket.cc
+++ b/services/network/tcp_server_socket.cc
@@ -37,8 +37,7 @@
     : delegate_(delegate),
       socket_(std::move(server_socket)),
       backlog_(backlog),
-      traffic_annotation_(traffic_annotation),
-      weak_factory_(this) {}
+      traffic_annotation_(traffic_annotation) {}
 
 TCPServerSocket::~TCPServerSocket() {}
 
diff --git a/services/network/tcp_server_socket.h b/services/network/tcp_server_socket.h
index 42e5f04..8ff6e62 100644
--- a/services/network/tcp_server_socket.h
+++ b/services/network/tcp_server_socket.h
@@ -87,7 +87,7 @@
   std::unique_ptr<net::StreamSocket> accepted_socket_;
   net::NetworkTrafficAnnotationTag traffic_annotation_;
 
-  base::WeakPtrFactory<TCPServerSocket> weak_factory_;
+  base::WeakPtrFactory<TCPServerSocket> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(TCPServerSocket);
 };
diff --git a/services/network/throttling/throttling_network_interceptor.cc b/services/network/throttling/throttling_network_interceptor.cc
index a5236b0..dbde0cc 100644
--- a/services/network/throttling/throttling_network_interceptor.cc
+++ b/services/network/throttling/throttling_network_interceptor.cc
@@ -42,8 +42,7 @@
 ThrottlingNetworkInterceptor::ThrottlingNetworkInterceptor()
     : conditions_(new NetworkConditions()),
       download_last_tick_(0),
-      upload_last_tick_(0),
-      weak_ptr_factory_(this) {}
+      upload_last_tick_(0) {}
 
 ThrottlingNetworkInterceptor::~ThrottlingNetworkInterceptor() {}
 
diff --git a/services/network/throttling/throttling_network_interceptor.h b/services/network/throttling/throttling_network_interceptor.h
index bfb3767..a2c4c46 100644
--- a/services/network/throttling/throttling_network_interceptor.h
+++ b/services/network/throttling/throttling_network_interceptor.h
@@ -100,7 +100,7 @@
   uint64_t download_last_tick_;
   uint64_t upload_last_tick_;
 
-  base::WeakPtrFactory<ThrottlingNetworkInterceptor> weak_ptr_factory_;
+  base::WeakPtrFactory<ThrottlingNetworkInterceptor> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ThrottlingNetworkInterceptor);
 };
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
index 7ccbdcf..97b75021 100644
--- a/services/network/url_loader.cc
+++ b/services/network/url_loader.cc
@@ -374,8 +374,7 @@
       custom_proxy_post_cache_headers_(request.custom_proxy_post_cache_headers),
       custom_proxy_use_alternate_proxy_list_(
           request.custom_proxy_use_alternate_proxy_list),
-      fetch_window_id_(request.fetch_window_id),
-      weak_ptr_factory_(this) {
+      fetch_window_id_(request.fetch_window_id) {
   DCHECK(delete_callback_);
   DCHECK(factory_params_);
   if (!base::FeatureList::IsEnabled(features::kNetworkService)) {
@@ -496,8 +495,7 @@
         url_loader_(url_loader),
         process_id_(process_id),
         network_service_client_(network_service_client),
-        set_up_upload_callback_(std::move(set_up_upload_callback)),
-        weak_ptr_factory_(this) {
+        set_up_upload_callback_(std::move(set_up_upload_callback)) {
     StartOpeningNextBatch();
   }
 
@@ -578,7 +576,7 @@
   // The files opened so far.
   std::vector<base::File> opened_files_;
 
-  base::WeakPtrFactory<FileOpenerForUpload> weak_ptr_factory_;
+  base::WeakPtrFactory<FileOpenerForUpload> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(FileOpenerForUpload);
 };
diff --git a/services/network/url_loader.h b/services/network/url_loader.h
index fdba1f3..5e9c7f4 100644
--- a/services/network/url_loader.h
+++ b/services/network/url_loader.h
@@ -353,7 +353,7 @@
 
   std::unique_ptr<FileOpenerForUpload> file_opener_for_upload_;
 
-  base::WeakPtrFactory<URLLoader> weak_ptr_factory_;
+  base::WeakPtrFactory<URLLoader> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(URLLoader);
 };
diff --git a/services/network/url_loader_unittest.cc b/services/network/url_loader_unittest.cc
index 6a31ff7..fdbcd0a 100644
--- a/services/network/url_loader_unittest.cc
+++ b/services/network/url_loader_unittest.cc
@@ -132,8 +132,7 @@
       : URLRequestJob(request, network_delegate),
         packets_(std::move(packets)),
         net_error_(net_error),
-        async_reads_(async_reads),
-        weak_factory_(this) {}
+        async_reads_(async_reads) {}
 
   // net::URLRequestJob implementation:
   void Start() override {
@@ -173,7 +172,7 @@
   net::Error net_error_;
   bool async_reads_;
 
-  base::WeakPtrFactory<URLRequestMultipleWritesJob> weak_factory_;
+  base::WeakPtrFactory<URLRequestMultipleWritesJob> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(URLRequestMultipleWritesJob);
 };
@@ -216,8 +215,7 @@
                                 net::NetworkDelegate* network_delegate,
                                 bool fill_entire_buffer)
       : URLRequestJob(request, network_delegate),
-        fill_entire_buffer_(fill_entire_buffer),
-        weak_factory_(this) {}
+        fill_entire_buffer_(fill_entire_buffer) {}
 
   // net::URLRequestJob implementation:
   void Start() override {
@@ -244,7 +242,7 @@
 
   const bool fill_entire_buffer_;
 
-  base::WeakPtrFactory<URLRequestEternalSyncReadsJob> weak_factory_;
+  base::WeakPtrFactory<URLRequestEternalSyncReadsJob> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(URLRequestEternalSyncReadsJob);
 };
@@ -291,8 +289,7 @@
       bool use_text_plain)
       : URLRequestJob(request, network_delegate),
         simulated_cache_dest_(simulated_cache_dest),
-        use_text_plain_(use_text_plain),
-        weak_factory_(this) {}
+        use_text_plain_(use_text_plain) {}
 
   // net::URLRequestJob implementation:
   void Start() override {
@@ -329,7 +326,7 @@
 
   scoped_refptr<net::IOBuffer>* simulated_cache_dest_;
   bool use_text_plain_;
-  base::WeakPtrFactory<URLRequestSimulatedCacheJob> weak_factory_;
+  base::WeakPtrFactory<URLRequestSimulatedCacheJob> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(URLRequestSimulatedCacheJob);
 };
diff --git a/services/network/websocket.cc b/services/network/websocket.cc
index b1544bbf..80ef1f1e 100644
--- a/services/network/websocket.cc
+++ b/services/network/websocket.cc
@@ -370,8 +370,7 @@
       child_id_(child_id),
       frame_id_(frame_id),
       origin_(std::move(origin)),
-      handshake_succeeded_(false),
-      weak_ptr_factory_(this) {
+      handshake_succeeded_(false) {
   DCHECK(handshake_client_);
   DCHECK(client_);
   if (auth_handler_) {
diff --git a/services/network/websocket.h b/services/network/websocket.h
index 3712763..f7560971 100644
--- a/services/network/websocket.h
+++ b/services/network/websocket.h
@@ -186,7 +186,7 @@
   // per-renderer WebSocket throttling.
   bool handshake_succeeded_;
 
-  base::WeakPtrFactory<WebSocket> weak_ptr_factory_;
+  base::WeakPtrFactory<WebSocket> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(WebSocket);
 };
diff --git a/services/network/websocket_factory.cc b/services/network/websocket_factory.cc
index 811cc7f..808a153 100644
--- a/services/network/websocket_factory.cc
+++ b/services/network/websocket_factory.cc
@@ -20,7 +20,7 @@
 class WebSocketFactory::Delegate final : public WebSocket::Delegate {
  public:
   Delegate(WebSocketFactory* factory, int32_t process_id)
-      : factory_(factory), process_id_(process_id), weak_factory_(this) {}
+      : factory_(factory), process_id_(process_id) {}
   ~Delegate() override {}
 
   net::URLRequestContext* GetURLRequestContext() override {
@@ -81,7 +81,7 @@
   const int process_id_;
   std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> callbacks_;
 
-  base::WeakPtrFactory<Delegate> weak_factory_;
+  base::WeakPtrFactory<Delegate> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(Delegate);
 };
diff --git a/services/network/websocket_throttler.cc b/services/network/websocket_throttler.cc
index 81c45658..d3809825 100644
--- a/services/network/websocket_throttler.cc
+++ b/services/network/websocket_throttler.cc
@@ -39,8 +39,7 @@
   throttler_ = nullptr;
 }
 
-WebSocketPerProcessThrottler::WebSocketPerProcessThrottler()
-    : weak_factory_(this) {}
+WebSocketPerProcessThrottler::WebSocketPerProcessThrottler() {}
 WebSocketPerProcessThrottler::~WebSocketPerProcessThrottler() {}
 
 base::TimeDelta WebSocketPerProcessThrottler::CalculateDelay() const {
diff --git a/services/network/websocket_throttler.h b/services/network/websocket_throttler.h
index 1d272073..510c057 100644
--- a/services/network/websocket_throttler.h
+++ b/services/network/websocket_throttler.h
@@ -96,7 +96,7 @@
 
   static constexpr int kMaxPendingWebSocketConnections = 255;
 
-  base::WeakPtrFactory<WebSocketPerProcessThrottler> weak_factory_;
+  base::WeakPtrFactory<WebSocketPerProcessThrottler> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(WebSocketPerProcessThrottler);
 };
diff --git a/services/service_manager/sandbox/win/sandbox_win.cc b/services/service_manager/sandbox/win/sandbox_win.cc
index 8af2c10..d4370c2 100644
--- a/services/service_manager/sandbox/win/sandbox_win.cc
+++ b/services/service_manager/sandbox/win/sandbox_win.cc
@@ -754,6 +754,8 @@
     service_manager::SandboxType sandbox_type,
     const std::string& appcontainer_id,
     sandbox::TargetPolicy* policy) {
+  if (base::win::GetVersion() < base::win::Version::WIN10_RS1)
+    return sandbox::SBOX_ALL_OK;
   base::string16 profile_name =
       GetAppContainerProfileName(appcontainer_id, sandbox_type);
   sandbox::ResultCode result =
diff --git a/services/tracing/perfetto/producer_host.cc b/services/tracing/perfetto/producer_host.cc
index 0958629..623f9b4 100644
--- a/services/tracing/perfetto/producer_host.cc
+++ b/services/tracing/perfetto/producer_host.cc
@@ -87,7 +87,8 @@
   mojo::ScopedSharedBufferHandle shm = shared_memory->Clone();
   DCHECK(shm.is_valid());
 
-  producer_client_->OnTracingStart(std::move(shm));
+  producer_client_->OnTracingStart(
+      std::move(shm), producer_endpoint_->shared_buffer_page_size_kb() * 1024);
 }
 
 void ProducerHost::SetupDataSource(perfetto::DataSourceInstanceID,
diff --git a/services/tracing/public/cpp/perfetto/producer_client.cc b/services/tracing/public/cpp/perfetto/producer_client.cc
index 51e00bb..e94a4c25 100644
--- a/services/tracing/public/cpp/perfetto/producer_client.cc
+++ b/services/tracing/public/cpp/perfetto/producer_client.cc
@@ -106,13 +106,11 @@
 }
 
 void ProducerClient::OnTracingStart(
-    mojo::ScopedSharedBufferHandle shared_memory) {
+    mojo::ScopedSharedBufferHandle shared_memory,
+    uint64_t shared_memory_buffer_page_size_bytes) {
   // If we're using in-process mode, we don't need to set up our
   // own SharedMemoryArbiter.
   DCHECK(!in_process_arbiter_);
-  // TODO(oysteine): In next CLs plumb this through the service.
-  const size_t kShmemBufferPageSize = 4096;
-
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(producer_host_);
   if (!shared_memory_) {
@@ -120,7 +118,7 @@
         std::make_unique<MojoSharedMemory>(std::move(shared_memory));
 
     shared_memory_arbiter_ = perfetto::SharedMemoryArbiter::CreateInstance(
-        shared_memory_.get(), kShmemBufferPageSize, this,
+        shared_memory_.get(), shared_memory_buffer_page_size_bytes, this,
         PerfettoTracedProcess::GetTaskRunner());
   } else {
     // TODO(oysteine): This is assuming the SMB is the same, currently. Swapping
diff --git a/services/tracing/public/cpp/perfetto/producer_client.h b/services/tracing/public/cpp/perfetto/producer_client.h
index cf4f56c3..70d5674 100644
--- a/services/tracing/public/cpp/perfetto/producer_client.h
+++ b/services/tracing/public/cpp/perfetto/producer_client.h
@@ -55,7 +55,8 @@
   // mojom::ProducerClient implementation.
   // Called through Mojo by the ProducerHost on the service-side to control
   // tracing and toggle specific DataSources.
-  void OnTracingStart(mojo::ScopedSharedBufferHandle shared_memory) override;
+  void OnTracingStart(mojo::ScopedSharedBufferHandle shared_memory,
+                      uint64_t shared_memory_buffer_page_size_bytes) override;
   void StartDataSource(uint64_t id,
                        const perfetto::DataSourceConfig& data_source_config,
                        StartDataSourceCallback callback) override;
diff --git a/services/tracing/public/mojom/perfetto_service.mojom b/services/tracing/public/mojom/perfetto_service.mojom
index f6cbddb..6bf79fc 100644
--- a/services/tracing/public/mojom/perfetto_service.mojom
+++ b/services/tracing/public/mojom/perfetto_service.mojom
@@ -120,7 +120,8 @@
 // this interface and use the PerfettoService interface within the tracing
 // service to register itself.
 interface ProducerClient {
-  OnTracingStart(handle<shared_buffer> shared_memory);
+  OnTracingStart(handle<shared_buffer> shared_memory,
+                  uint64 shared_memory_buffer_page_size_bytes);
 
   // Called by Perfetto (via ProducerHost) to request a data source to start
   // logging.
diff --git a/testing/buildbot/chrome.json b/testing/buildbot/chrome.json
index 0bf581d..00045b9a 100644
--- a/testing/buildbot/chrome.json
+++ b/testing/buildbot/chrome.json
@@ -136,7 +136,7 @@
             }
           ]
         },
-        "test": "cros_vm_sanity_test"
+        "test": "cros_browser_sanity_test"
       },
       {
         "merge": {
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 5a991d4..4007415 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -18846,7 +18846,7 @@
           "dimension_sets": [
             {
               "cpu": "x86",
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json
index 15de3bd..202b82a 100644
--- a/testing/buildbot/chromium.chromiumos.json
+++ b/testing/buildbot/chromium.chromiumos.json
@@ -141,7 +141,7 @@
             }
           ]
         },
-        "test": "cros_vm_sanity_test"
+        "test": "cros_browser_sanity_test"
       },
       {
         "merge": {
@@ -627,7 +627,7 @@
             }
           ]
         },
-        "test": "cros_vm_sanity_test",
+        "test": "cros_browser_sanity_test",
         "trigger_script": {
           "script": "//testing/trigger_scripts/chromeos_device_trigger.py"
         }
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index c4776cb23..c7b35e35 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -36433,7 +36433,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36448,7 +36448,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36463,7 +36463,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36478,7 +36478,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36493,7 +36493,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36508,7 +36508,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36523,7 +36523,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36538,7 +36538,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36553,7 +36553,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36568,7 +36568,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36584,7 +36584,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36599,7 +36599,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36614,7 +36614,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36629,7 +36629,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -36650,7 +36650,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36665,7 +36665,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36683,7 +36683,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36698,7 +36698,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36713,7 +36713,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36728,7 +36728,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36743,7 +36743,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36758,7 +36758,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36773,7 +36773,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36788,7 +36788,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36803,7 +36803,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -36824,7 +36824,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36844,7 +36844,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36859,7 +36859,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36874,7 +36874,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36889,7 +36889,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36904,7 +36904,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36919,7 +36919,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36934,7 +36934,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36949,7 +36949,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36964,7 +36964,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36979,7 +36979,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36994,7 +36994,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37009,7 +37009,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37024,7 +37024,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37039,7 +37039,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37054,7 +37054,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37069,7 +37069,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37084,7 +37084,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37099,7 +37099,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37114,7 +37114,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37129,7 +37129,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -37150,7 +37150,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37165,7 +37165,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37180,7 +37180,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37195,7 +37195,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37210,7 +37210,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37225,7 +37225,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37240,7 +37240,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37255,7 +37255,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37270,7 +37270,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37285,7 +37285,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37300,7 +37300,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37315,7 +37315,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37330,7 +37330,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37345,7 +37345,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37360,7 +37360,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37375,7 +37375,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37390,7 +37390,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37405,7 +37405,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37420,7 +37420,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37435,7 +37435,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37450,7 +37450,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37465,7 +37465,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37480,7 +37480,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37495,7 +37495,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37510,7 +37510,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37525,7 +37525,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37540,7 +37540,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37555,7 +37555,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37570,7 +37570,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37585,7 +37585,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37600,7 +37600,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37615,7 +37615,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37630,7 +37630,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37645,7 +37645,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37660,7 +37660,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37675,7 +37675,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37690,7 +37690,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37705,7 +37705,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37720,7 +37720,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37735,7 +37735,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37750,7 +37750,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37765,7 +37765,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -37781,7 +37781,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index 87e4f01..7adaf68 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -90,7 +90,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -105,7 +105,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -131,7 +131,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -151,7 +151,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 2
@@ -174,7 +174,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -189,7 +189,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -211,7 +211,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -226,7 +226,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -952,7 +952,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 15
@@ -972,7 +972,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 15
@@ -992,7 +992,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 15
@@ -1012,7 +1012,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1032,7 +1032,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 2
@@ -1052,7 +1052,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 2
@@ -1072,7 +1072,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1326,7 +1326,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6455,7 +6455,7 @@
           "hard_timeout": 3600,
           "io_timeout": 3600
         },
-        "test": "cros_vm_sanity_test"
+        "test": "cros_browser_sanity_test"
       },
       {
         "isolate_coverage_data": true,
@@ -11213,7 +11213,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11229,7 +11229,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11245,7 +11245,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11261,7 +11261,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11277,7 +11277,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11293,7 +11293,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11309,7 +11309,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11325,7 +11325,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11341,7 +11341,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11357,7 +11357,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11373,7 +11373,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11389,7 +11389,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11406,7 +11406,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11422,7 +11422,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11438,7 +11438,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11454,7 +11454,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 21
@@ -11475,7 +11475,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 20
@@ -11497,7 +11497,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11513,7 +11513,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11532,7 +11532,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11548,7 +11548,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11564,7 +11564,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11580,7 +11580,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11596,7 +11596,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11612,7 +11612,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11628,7 +11628,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11644,7 +11644,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11660,7 +11660,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11676,7 +11676,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11692,7 +11692,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -11714,7 +11714,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11734,7 +11734,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -11751,7 +11751,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11771,7 +11771,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11787,7 +11787,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11803,7 +11803,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11819,7 +11819,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11835,7 +11835,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11851,7 +11851,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11867,7 +11867,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11883,7 +11883,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11899,7 +11899,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11915,7 +11915,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11931,7 +11931,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11947,7 +11947,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11963,7 +11963,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11979,7 +11979,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -11995,7 +11995,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12011,7 +12011,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12027,7 +12027,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -12049,7 +12049,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12065,7 +12065,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12081,7 +12081,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12097,7 +12097,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12113,7 +12113,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12129,7 +12129,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12145,7 +12145,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12161,7 +12161,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12177,7 +12177,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12193,7 +12193,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12209,7 +12209,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12225,7 +12225,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12241,7 +12241,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12257,7 +12257,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12273,7 +12273,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12289,7 +12289,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12305,7 +12305,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12321,7 +12321,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12340,7 +12340,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12356,7 +12356,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12372,7 +12372,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12388,7 +12388,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12404,7 +12404,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12420,7 +12420,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12436,7 +12436,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12452,7 +12452,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12468,7 +12468,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12484,7 +12484,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12500,7 +12500,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12516,7 +12516,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12532,7 +12532,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12548,7 +12548,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12564,7 +12564,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12580,7 +12580,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12596,7 +12596,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12612,7 +12612,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12628,7 +12628,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12644,7 +12644,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12660,7 +12660,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12676,7 +12676,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12692,7 +12692,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12709,7 +12709,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12725,7 +12725,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12741,7 +12741,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12757,7 +12757,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12773,7 +12773,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12789,7 +12789,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12812,7 +12812,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12828,7 +12828,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12844,7 +12844,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12860,7 +12860,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12876,7 +12876,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12892,7 +12892,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12908,7 +12908,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12924,7 +12924,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12940,7 +12940,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12956,7 +12956,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12972,7 +12972,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -12988,7 +12988,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13005,7 +13005,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13021,7 +13021,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13037,7 +13037,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13053,7 +13053,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 21
@@ -13074,7 +13074,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 20
@@ -13096,7 +13096,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13112,7 +13112,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13131,7 +13131,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13147,7 +13147,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13163,7 +13163,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13179,7 +13179,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13195,7 +13195,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13211,7 +13211,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13227,7 +13227,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13243,7 +13243,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13259,7 +13259,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13275,7 +13275,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13291,7 +13291,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -13313,7 +13313,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13333,7 +13333,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -13350,7 +13350,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13370,7 +13370,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13386,7 +13386,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13402,7 +13402,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13418,7 +13418,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13434,7 +13434,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13450,7 +13450,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13466,7 +13466,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13482,7 +13482,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13498,7 +13498,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13514,7 +13514,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13530,7 +13530,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13546,7 +13546,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13562,7 +13562,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13578,7 +13578,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13594,7 +13594,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13610,7 +13610,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13626,7 +13626,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -13648,7 +13648,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13664,7 +13664,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13680,7 +13680,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13696,7 +13696,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13712,7 +13712,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13728,7 +13728,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13744,7 +13744,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13760,7 +13760,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13776,7 +13776,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13792,7 +13792,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13808,7 +13808,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13824,7 +13824,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13840,7 +13840,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13856,7 +13856,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13872,7 +13872,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13888,7 +13888,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13904,7 +13904,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13920,7 +13920,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13939,7 +13939,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13955,7 +13955,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13971,7 +13971,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13987,7 +13987,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14003,7 +14003,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14019,7 +14019,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14035,7 +14035,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14051,7 +14051,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14067,7 +14067,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14083,7 +14083,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14099,7 +14099,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14115,7 +14115,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14131,7 +14131,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14147,7 +14147,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14163,7 +14163,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14179,7 +14179,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14195,7 +14195,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14211,7 +14211,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14227,7 +14227,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14243,7 +14243,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14259,7 +14259,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14275,7 +14275,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14291,7 +14291,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14308,7 +14308,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14324,7 +14324,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14340,7 +14340,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14356,7 +14356,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14372,7 +14372,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14388,7 +14388,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14419,7 +14419,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14434,7 +14434,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14449,7 +14449,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14464,7 +14464,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14479,7 +14479,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14494,7 +14494,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14509,7 +14509,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14524,7 +14524,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14539,7 +14539,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14554,7 +14554,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14570,7 +14570,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14585,7 +14585,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14600,7 +14600,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14615,7 +14615,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -14636,7 +14636,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14651,7 +14651,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14669,7 +14669,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14684,7 +14684,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14699,7 +14699,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14714,7 +14714,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14729,7 +14729,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14744,7 +14744,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14759,7 +14759,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14774,7 +14774,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14789,7 +14789,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -14810,7 +14810,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14830,7 +14830,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14845,7 +14845,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14860,7 +14860,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14875,7 +14875,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14890,7 +14890,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14905,7 +14905,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14920,7 +14920,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14935,7 +14935,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14950,7 +14950,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14965,7 +14965,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14980,7 +14980,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -14995,7 +14995,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15010,7 +15010,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15025,7 +15025,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15040,7 +15040,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15055,7 +15055,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15070,7 +15070,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15085,7 +15085,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15100,7 +15100,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15115,7 +15115,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -15136,7 +15136,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15151,7 +15151,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15166,7 +15166,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15181,7 +15181,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15196,7 +15196,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15211,7 +15211,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15226,7 +15226,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15241,7 +15241,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15256,7 +15256,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15271,7 +15271,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15286,7 +15286,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15301,7 +15301,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15316,7 +15316,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15331,7 +15331,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15346,7 +15346,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15361,7 +15361,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15376,7 +15376,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15391,7 +15391,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15406,7 +15406,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15421,7 +15421,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15436,7 +15436,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15451,7 +15451,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15466,7 +15466,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15481,7 +15481,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15496,7 +15496,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15511,7 +15511,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15526,7 +15526,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15541,7 +15541,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15556,7 +15556,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15571,7 +15571,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15586,7 +15586,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15601,7 +15601,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15616,7 +15616,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15631,7 +15631,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15646,7 +15646,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15661,7 +15661,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15676,7 +15676,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15691,7 +15691,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15706,7 +15706,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15721,7 +15721,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15736,7 +15736,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15751,7 +15751,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15767,7 +15767,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -15786,7 +15786,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -15805,7 +15805,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -15821,7 +15821,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -15837,7 +15837,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -15853,7 +15853,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -15869,7 +15869,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -15885,7 +15885,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -15901,7 +15901,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -15917,7 +15917,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -15943,7 +15943,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -15960,7 +15960,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false
@@ -15981,7 +15981,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false,
@@ -16003,7 +16003,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false,
@@ -16026,7 +16026,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -16042,7 +16042,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -16064,7 +16064,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 12
@@ -16084,7 +16084,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16100,7 +16100,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16116,7 +16116,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16132,7 +16132,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16148,7 +16148,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16164,7 +16164,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16180,7 +16180,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16196,7 +16196,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16212,7 +16212,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16228,7 +16228,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16245,7 +16245,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16261,7 +16261,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16277,7 +16277,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16293,7 +16293,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -16315,7 +16315,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16331,7 +16331,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16350,7 +16350,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16366,7 +16366,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16382,7 +16382,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16398,7 +16398,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16414,7 +16414,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16430,7 +16430,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16446,7 +16446,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16462,7 +16462,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16478,7 +16478,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -16500,7 +16500,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16516,7 +16516,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16532,7 +16532,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16548,7 +16548,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16564,7 +16564,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16580,7 +16580,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16596,7 +16596,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16612,7 +16612,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16628,7 +16628,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16644,7 +16644,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16660,7 +16660,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16676,7 +16676,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16692,7 +16692,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16708,7 +16708,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16724,7 +16724,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16740,7 +16740,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16756,7 +16756,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16772,7 +16772,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16788,7 +16788,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16804,7 +16804,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -16826,7 +16826,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16842,7 +16842,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16858,7 +16858,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16874,7 +16874,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16890,7 +16890,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16906,7 +16906,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16922,7 +16922,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16938,7 +16938,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16954,7 +16954,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16970,7 +16970,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -16986,7 +16986,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17002,7 +17002,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17018,7 +17018,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17034,7 +17034,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17050,7 +17050,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17066,7 +17066,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17082,7 +17082,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17098,7 +17098,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17114,7 +17114,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17130,7 +17130,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17146,7 +17146,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17162,7 +17162,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17178,7 +17178,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17194,7 +17194,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17210,7 +17210,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17226,7 +17226,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17242,7 +17242,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17258,7 +17258,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17274,7 +17274,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17290,7 +17290,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17306,7 +17306,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17322,7 +17322,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17338,7 +17338,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17354,7 +17354,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17370,7 +17370,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17386,7 +17386,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17402,7 +17402,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17418,7 +17418,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17434,7 +17434,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17450,7 +17450,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17466,7 +17466,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -17482,7 +17482,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -21386,7 +21386,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 12
@@ -21652,1697 +21652,6 @@
       }
     ]
   },
-  "linux-tcmalloc-rel": {
-    "gtest_tests": [
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "accessibility_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "angle_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "app_shell_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "aura_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "base_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "base_util_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "blink_common_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "blink_fuzzer_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "blink_heap_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "blink_platform_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "webkit_unit_tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "blink_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "boringssl_crypto_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "boringssl_ssl_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "shards": 10
-        },
-        "test": "browser_tests"
-      },
-      {
-        "args": [
-          "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "webui_html_imports_polyfill_browser_tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "browser_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "cacheinvalidation_unittests"
-      },
-      {
-        "args": [
-          "--gtest_filter=-*UsingRealWebcam*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "capture_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "cast_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "cc_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "chrome_app_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "chromedriver_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "components_browsertests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "components_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "compositor_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "shards": 6
-        },
-        "test": "content_browsertests"
-      },
-      {
-        "args": [
-          "--disable-perfetto",
-          "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "nonperfetto_content_browsertests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "content_browsertests"
-      },
-      {
-        "args": [
-          "--enable-features=VizDisplayCompositor,UseSkiaRenderer",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/skia_renderer.content_browsertests.filter"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "skia_renderer_content_browsertests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "content_browsertests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "content_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "cronet_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "cronet_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "crypto_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "dbus_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "device_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "display_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "events_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "extensions_browsertests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "extensions_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "filesystem_service_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "gcm_unit_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "gfx_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "gin_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "google_apis_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "gpu_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "headless_browsertests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "headless_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "shards": 3
-        },
-        "test": "interactive_ui_tests"
-      },
-      {
-        "args": [
-          "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_interactive_ui_tests.filter"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "webui_html_imports_polyfill_interactive_ui_tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "interactive_ui_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "ipc_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "jingle_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "latency_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "leveldb_service_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "libjingle_xmpp_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "media_blink_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "media_service_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "media_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "message_center_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "midi_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "mojo_core_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "mojo_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "nacl_helper_nonsfi_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "nacl_loader_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "native_theme_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "net_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "pdf_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "perfetto_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "ppapi_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "printing_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "remoting_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "sandbox_linux_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "service_manager_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "services_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "shell_dialogs_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "skia_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "snapshot_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "sql_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "storage_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "sync_integration_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "traffic_annotation_auditor_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "ui_base_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "ui_touch_selection_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "unit_tests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "url_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "views_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "viz_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "vr_common_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "vr_pixeltests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "wm_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "wtf_unittests"
-      },
-      {
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_gtest_merge.py"
-        },
-        "name": "xr_browser_tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        },
-        "test": "xr_browser_tests"
-      }
-    ],
-    "isolated_scripts": [
-      {
-        "isolate_name": "blink_python_tests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "blink_python_tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "args": [
-          "--test-type=integration"
-        ],
-        "isolate_name": "chromedriver_py_tests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "chromedriver_py_tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "isolate_name": "chromedriver_replay_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "chromedriver_replay_unittests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "isolate_name": "content_shell_crash_test",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "content_shell_crash_test",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "isolate_name": "devtools_closure_compile",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "devtools_closure_compile",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "isolate_name": "devtools_eslint",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "devtools_eslint",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "isolate_name": "flatbuffers_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "flatbuffers_unittests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "isolate_name": "grit_python_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "grit_python_unittests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "isolate_name": "metrics_python_tests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "metrics_python_tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "args": [
-          "--additional-driver-flag",
-          "--disable-site-isolation-trials",
-          "--additional-expectations",
-          "src/third_party/blink/web_tests/FlagExpectations/disable-site-isolation-trials",
-          "--num-retries=3"
-        ],
-        "isolate_name": "blink_web_tests_exparchive",
-        "merge": {
-          "args": [
-            "--verbose"
-          ],
-          "script": "//third_party/blink/tools/merge_web_test_results.py"
-        },
-        "name": "not_site_per_process_webkit_layout_tests",
-        "results_handler": "layout tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "shards": 10
-        }
-      },
-      {
-        "isolate_name": "telemetry_gpu_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "telemetry_gpu_unittests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "idempotent": false
-        }
-      },
-      {
-        "args": [
-          "--xvfb",
-          "--jobs=1"
-        ],
-        "isolate_name": "telemetry_perf_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "telemetry_perf_unittests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "idempotent": false,
-          "shards": 12
-        }
-      },
-      {
-        "args": [
-          "--jobs=1",
-          "--extra-browser-args=--disable-gpu"
-        ],
-        "isolate_name": "telemetry_unittests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "telemetry_unittests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "idempotent": false,
-          "shards": 4
-        }
-      },
-      {
-        "args": [
-          "--gtest-benchmark-name=views_perftests"
-        ],
-        "isolate_name": "views_perftests",
-        "merge": {
-          "args": [
-            "--smoke-test-mode"
-          ],
-          "script": "//tools/perf/process_perf_results.py"
-        },
-        "name": "views_perftests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "isolate_name": "webdriver_wpt_tests",
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "webdriver_tests_suite",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ]
-        }
-      },
-      {
-        "args": [
-          "--num-retries=3"
-        ],
-        "isolate_name": "blink_web_tests_exparchive",
-        "merge": {
-          "args": [
-            "--verbose"
-          ],
-          "script": "//third_party/blink/tools/merge_web_test_results.py"
-        },
-        "name": "webkit_layout_tests",
-        "results_handler": "layout tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "os": "Ubuntu-14.04"
-            }
-          ],
-          "shards": 12
-        }
-      }
-    ],
-    "scripts": [
-      {
-        "name": "check_static_initializers",
-        "script": "check_static_initializers.py",
-        "swarming": {}
-      },
-      {
-        "name": "checkdeps",
-        "script": "checkdeps.py",
-        "swarming": {}
-      },
-      {
-        "name": "checkperms",
-        "script": "checkperms.py",
-        "swarming": {}
-      },
-      {
-        "name": "headless_python_unittests",
-        "script": "headless_python_unittests.py",
-        "swarming": {}
-      },
-      {
-        "name": "webkit_lint",
-        "script": "blink_lint_expectations.py",
-        "swarming": {}
-      }
-    ]
-  },
   "mac-hermetic-upgrade-rel": {
     "additional_compile_targets": [
       "all"
@@ -25163,9 +23472,7 @@
       {
         "args": [
           "--build-revision=${got_revision}",
-          "--enable-logging",
-          "--test-launcher-jobs=1",
-          "--test-launcher-print-test-stdio=always"
+          "--gtest_filter=SkiaGold*"
         ],
         "experiment_percentage": 100,
         "merge": {
diff --git a/testing/buildbot/chromium.goma.json b/testing/buildbot/chromium.goma.json
index 373422c2..5bbb2dd 100644
--- a/testing/buildbot/chromium.goma.json
+++ b/testing/buildbot/chromium.goma.json
@@ -21,7 +21,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -36,7 +36,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -58,7 +58,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -73,7 +73,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -95,7 +95,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -110,7 +110,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -132,7 +132,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -147,7 +147,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -169,7 +169,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -184,7 +184,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json
index 82b8bb7..11b51ba 100644
--- a/testing/buildbot/chromium.linux.json
+++ b/testing/buildbot/chromium.linux.json
@@ -16,7 +16,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -31,7 +31,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -46,7 +46,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -61,7 +61,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -76,7 +76,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -91,7 +91,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -107,7 +107,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -122,7 +122,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -137,7 +137,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -152,7 +152,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -170,7 +170,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -185,7 +185,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -200,7 +200,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -215,7 +215,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -230,7 +230,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -261,7 +261,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -276,7 +276,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -291,7 +291,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -306,7 +306,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -324,7 +324,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -345,7 +345,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -360,7 +360,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -375,7 +375,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -390,7 +390,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -405,7 +405,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -420,7 +420,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -435,7 +435,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -450,7 +450,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -465,7 +465,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -480,7 +480,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -495,7 +495,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -510,7 +510,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -525,7 +525,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -540,7 +540,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -555,7 +555,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -570,7 +570,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -585,7 +585,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -600,7 +600,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -615,7 +615,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -630,7 +630,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -645,7 +645,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -660,7 +660,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -675,7 +675,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -690,7 +690,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -705,7 +705,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -720,7 +720,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -735,7 +735,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -750,7 +750,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -765,7 +765,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -2115,7 +2115,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "expiration": 36000,
@@ -5479,7 +5479,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5495,7 +5495,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5511,7 +5511,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5527,7 +5527,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5543,7 +5543,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5559,7 +5559,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5575,7 +5575,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5591,7 +5591,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5607,7 +5607,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5623,7 +5623,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5640,7 +5640,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5656,7 +5656,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5672,7 +5672,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5688,7 +5688,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -5710,7 +5710,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5726,7 +5726,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5745,7 +5745,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5761,7 +5761,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5777,7 +5777,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5793,7 +5793,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5809,7 +5809,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5825,7 +5825,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5841,7 +5841,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5857,7 +5857,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5873,7 +5873,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -5895,7 +5895,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5916,7 +5916,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5932,7 +5932,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5948,7 +5948,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5964,7 +5964,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5980,7 +5980,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5996,7 +5996,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6012,7 +6012,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6028,7 +6028,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6044,7 +6044,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6060,7 +6060,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6076,7 +6076,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6092,7 +6092,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6108,7 +6108,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6124,7 +6124,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6140,7 +6140,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6156,7 +6156,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6172,7 +6172,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6188,7 +6188,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6204,7 +6204,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6220,7 +6220,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -6242,7 +6242,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6258,7 +6258,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6274,7 +6274,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6290,7 +6290,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6306,7 +6306,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6322,7 +6322,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6338,7 +6338,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6354,7 +6354,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6370,7 +6370,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6386,7 +6386,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6402,7 +6402,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6418,7 +6418,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6434,7 +6434,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6450,7 +6450,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6466,7 +6466,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6482,7 +6482,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6498,7 +6498,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6514,7 +6514,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6530,7 +6530,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6546,7 +6546,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6562,7 +6562,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6578,7 +6578,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6594,7 +6594,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6610,7 +6610,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6626,7 +6626,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6642,7 +6642,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6658,7 +6658,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6674,7 +6674,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6690,7 +6690,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6706,7 +6706,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6722,7 +6722,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6738,7 +6738,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6754,7 +6754,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6770,7 +6770,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6786,7 +6786,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6802,7 +6802,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6818,7 +6818,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6834,7 +6834,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6850,7 +6850,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6866,7 +6866,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6882,7 +6882,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6898,7 +6898,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6915,7 +6915,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6935,7 +6935,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -6955,7 +6955,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -6972,7 +6972,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -6989,7 +6989,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -7006,7 +7006,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -7023,7 +7023,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -7040,7 +7040,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -7057,7 +7057,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -7074,7 +7074,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -7102,7 +7102,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -7120,7 +7120,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false
@@ -7142,7 +7142,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false,
@@ -7165,7 +7165,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false,
@@ -7189,7 +7189,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -7213,7 +7213,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -7289,7 +7289,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7304,7 +7304,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json
index 033a41ac..534d7068 100644
--- a/testing/buildbot/chromium.memory.json
+++ b/testing/buildbot/chromium.memory.json
@@ -4735,7 +4735,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4750,7 +4750,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4765,7 +4765,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4780,7 +4780,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4795,7 +4795,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4810,7 +4810,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4825,7 +4825,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4840,7 +4840,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4855,7 +4855,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4870,7 +4870,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4886,7 +4886,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4901,7 +4901,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4916,7 +4916,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4931,7 +4931,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -4952,7 +4952,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4967,7 +4967,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -4985,7 +4985,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5000,7 +5000,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5015,7 +5015,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5030,7 +5030,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5045,7 +5045,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5060,7 +5060,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5075,7 +5075,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5090,7 +5090,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5105,7 +5105,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -5126,7 +5126,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5141,7 +5141,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5156,7 +5156,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5171,7 +5171,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5186,7 +5186,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5201,7 +5201,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5216,7 +5216,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5231,7 +5231,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5246,7 +5246,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5261,7 +5261,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5276,7 +5276,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5291,7 +5291,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5306,7 +5306,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5321,7 +5321,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5336,7 +5336,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5395,7 +5395,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5410,7 +5410,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5425,7 +5425,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5440,7 +5440,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5455,7 +5455,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -5476,7 +5476,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5491,7 +5491,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5506,7 +5506,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5521,7 +5521,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5536,7 +5536,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5551,7 +5551,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5566,7 +5566,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5581,7 +5581,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5596,7 +5596,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5611,7 +5611,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5626,7 +5626,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5641,7 +5641,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5656,7 +5656,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5671,7 +5671,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5686,7 +5686,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5701,7 +5701,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5716,7 +5716,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5731,7 +5731,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5746,7 +5746,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5761,7 +5761,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5776,7 +5776,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5791,7 +5791,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5806,7 +5806,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5821,7 +5821,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5836,7 +5836,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5851,7 +5851,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5866,7 +5866,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5881,7 +5881,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5896,7 +5896,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5911,7 +5911,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5926,7 +5926,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5941,7 +5941,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5956,7 +5956,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5971,7 +5971,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -5986,7 +5986,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6001,7 +6001,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6016,7 +6016,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6031,7 +6031,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6046,7 +6046,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6061,7 +6061,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6076,7 +6076,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6091,7 +6091,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6113,7 +6113,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6131,7 +6131,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6149,7 +6149,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6167,7 +6167,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6185,7 +6185,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6203,7 +6203,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6221,7 +6221,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6239,7 +6239,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6257,7 +6257,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6275,7 +6275,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6293,7 +6293,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6311,7 +6311,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6330,7 +6330,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6348,7 +6348,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6366,7 +6366,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6384,7 +6384,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 31
@@ -6405,7 +6405,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 30
@@ -6427,7 +6427,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6445,7 +6445,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6464,7 +6464,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6482,7 +6482,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6500,7 +6500,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6518,7 +6518,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6536,7 +6536,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6554,7 +6554,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6572,7 +6572,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6590,7 +6590,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6608,7 +6608,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 5
@@ -6627,7 +6627,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6645,7 +6645,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -6667,7 +6667,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6687,7 +6687,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 4
@@ -6706,7 +6706,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6726,7 +6726,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6744,7 +6744,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6762,7 +6762,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6780,7 +6780,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6798,7 +6798,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6816,7 +6816,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6834,7 +6834,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6852,7 +6852,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6870,7 +6870,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6888,7 +6888,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6906,7 +6906,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6924,7 +6924,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6942,7 +6942,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6960,7 +6960,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6978,7 +6978,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -6996,7 +6996,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -7018,7 +7018,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7036,7 +7036,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7054,7 +7054,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7072,7 +7072,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7090,7 +7090,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7108,7 +7108,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7126,7 +7126,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7144,7 +7144,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7162,7 +7162,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7180,7 +7180,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7198,7 +7198,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7216,7 +7216,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7234,7 +7234,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7252,7 +7252,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7270,7 +7270,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7288,7 +7288,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7306,7 +7306,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7324,7 +7324,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 8
@@ -7344,7 +7344,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7362,7 +7362,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7380,7 +7380,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7398,7 +7398,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7416,7 +7416,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7434,7 +7434,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7452,7 +7452,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7470,7 +7470,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7488,7 +7488,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7506,7 +7506,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7524,7 +7524,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7542,7 +7542,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7560,7 +7560,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7578,7 +7578,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7596,7 +7596,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7614,7 +7614,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7632,7 +7632,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7650,7 +7650,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7668,7 +7668,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7686,7 +7686,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7704,7 +7704,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7722,7 +7722,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 2
@@ -7741,7 +7741,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7760,7 +7760,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7778,7 +7778,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7796,7 +7796,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7814,7 +7814,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7832,7 +7832,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -7850,7 +7850,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -13996,7 +13996,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 20
@@ -14028,7 +14028,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
diff --git a/testing/buildbot/chromium.webkit.json b/testing/buildbot/chromium.webkit.json
index e22c7b8..0afe05f 100644
--- a/testing/buildbot/chromium.webkit.json
+++ b/testing/buildbot/chromium.webkit.json
@@ -25,7 +25,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 20
@@ -57,7 +57,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
diff --git a/testing/buildbot/chromium.webrtc.fyi.json b/testing/buildbot/chromium.webrtc.fyi.json
index 30a7203..14b8accda 100644
--- a/testing/buildbot/chromium.webrtc.fyi.json
+++ b/testing/buildbot/chromium.webrtc.fyi.json
@@ -146,7 +146,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -167,7 +167,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -186,7 +186,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -208,7 +208,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -227,7 +227,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -243,7 +243,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -262,7 +262,7 @@
           "dimension_sets": [
             {
               "cpu": "x86-64",
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
diff --git a/testing/buildbot/chromium.webrtc.json b/testing/buildbot/chromium.webrtc.json
index a27c8db..dd27644 100644
--- a/testing/buildbot/chromium.webrtc.json
+++ b/testing/buildbot/chromium.webrtc.json
@@ -107,7 +107,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -127,7 +127,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -161,7 +161,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -182,7 +182,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -203,7 +203,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -221,7 +221,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -236,7 +236,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -254,7 +254,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
diff --git a/testing/buildbot/client.v8.chromium.json b/testing/buildbot/client.v8.chromium.json
index 34e0b497..cf16614 100644
--- a/testing/buildbot/client.v8.chromium.json
+++ b/testing/buildbot/client.v8.chromium.json
@@ -12,7 +12,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -27,7 +27,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -43,7 +43,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -58,7 +58,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -73,7 +73,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -88,7 +88,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -103,7 +103,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -118,7 +118,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -133,7 +133,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -148,7 +148,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -163,7 +163,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -178,7 +178,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -193,7 +193,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -208,7 +208,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -223,7 +223,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -238,7 +238,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -253,7 +253,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -268,7 +268,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -283,7 +283,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -298,7 +298,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -313,7 +313,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -328,7 +328,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -343,7 +343,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -358,7 +358,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -373,7 +373,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -388,7 +388,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -403,7 +403,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -418,7 +418,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -433,7 +433,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -452,7 +452,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -468,7 +468,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -484,7 +484,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -500,7 +500,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false
@@ -520,7 +520,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false,
@@ -542,7 +542,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false,
@@ -562,7 +562,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -577,7 +577,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -593,7 +593,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -608,7 +608,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -623,7 +623,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -638,7 +638,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -653,7 +653,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -668,7 +668,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -683,7 +683,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -698,7 +698,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -713,7 +713,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -728,7 +728,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -743,7 +743,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -758,7 +758,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -773,7 +773,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -788,7 +788,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -803,7 +803,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -818,7 +818,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -833,7 +833,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -849,7 +849,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -864,7 +864,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -879,7 +879,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -894,7 +894,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -909,7 +909,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -924,7 +924,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -939,7 +939,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -954,7 +954,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -969,7 +969,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -984,7 +984,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1003,7 +1003,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -1019,7 +1019,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -1035,7 +1035,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         }
@@ -1051,7 +1051,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false
@@ -1072,7 +1072,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "idempotent": false,
diff --git a/testing/buildbot/filters/chromeos.browser_tests.filter b/testing/buildbot/filters/chromeos.browser_tests.filter
index 05ef689..0f11470 100644
--- a/testing/buildbot/filters/chromeos.browser_tests.filter
+++ b/testing/buildbot/filters/chromeos.browser_tests.filter
@@ -23,18 +23,11 @@
 # TODO(crbug.com/977744): Enable this.
 -ProcessMemoryMetricsEmitterTest.RendererBuildId
 
-# TODO(crbug.com/976807): Enable this.
--SiteIsolationFlagHandlingTest.FlagHandlingTest*
-
 # TODO(crbug.com/977170): Enable this.
 -StructSequence/OobeLocalizationTest.LocalizationTest/3
 -StructSequence/OobeLocalizationTest.LocalizationTest/4
 -StructSequence/OobeLocalizationTest.LocalizationTest/8
 
-# TODO(crbug.com/977745): Enable this.
--SupervisionTransitionScreenTest.SuccessfulTransition/0
--SupervisionTransitionScreenTest.TransitionTimeout/0
-
 # TODO(crbug.com/978051): Enable this.
 -TabManagerTestWithTwoTabs.TabProactiveDiscardAndFocusBeforeFreezeCompletes
 
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index 5310f68..d31a11d 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -869,11 +869,11 @@
     "label": "//components/cronet/ios:cronet_unittests_ios",
     "type": "raw",
   },
-  "cros_vm_sanity_test": {
+  "cros_browser_sanity_test": {
     "args": [
       "--vm-logs-dir=${ISOLATED_OUTDIR}",
     ],
-    "label": "//chromeos:cros_vm_sanity_test",
+    "label": "//chromeos:cros_browser_sanity_test",
     "type": "raw",
   },
   "crypto_unittests": {
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index 3944c441..cf8f0f0 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -516,7 +516,7 @@
             {
               'device_os': None,
               'device_type': None,
-              'os': 'Ubuntu-14.04',
+              'os': 'Ubuntu-16.04',
             },
           ],
         },
@@ -1424,13 +1424,6 @@
         },
         'experiment_percentage': 100,
       },
-      # luci.chromium.ci
-      'linux-tcmalloc-rel': {
-        'args': [
-          '--xvfb',
-          '--jobs=1',
-        ],
-      },
     },
     'remove_from': [
       # crbug.com/936540
@@ -1868,7 +1861,7 @@
         'swarming': {
           'dimension_sets': [
             {
-              'os': 'Ubuntu-14.04',
+              'os': 'Ubuntu-16.04',
             },
           ],
           'shards': 20,
@@ -1885,7 +1878,7 @@
         'swarming': {
           'dimension_sets': [
             {
-              'os': 'Ubuntu-14.04',
+              'os': 'Ubuntu-16.04',
             },
           ],
           'shards': 10,
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index 7e821d1..66e5a22 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -251,7 +251,7 @@
           'idempotent': False,  # https://crbug.com/923426#c27
         },
       },
-      'cros_vm_sanity_test': {},
+      'cros_browser_sanity_test': {},
       'crypto_unittests': {},
       'display_unittests': {},
       'google_apis_unittests': {},
@@ -343,7 +343,7 @@
           'idempotent': False,  # https://crbug.com/923426#c27
         },
       },
-      'cros_vm_sanity_test': {},
+      'cros_browser_sanity_test': {},
     },
 
     'chromeos_isolated_scripts': {
@@ -4432,9 +4432,7 @@
         'name': 'pixel_browser_tests',
         'args': [
           '--build-revision=${got_revision}',
-          '--enable-logging',
-          '--test-launcher-jobs=1',
-          '--test-launcher-print-test-stdio=always'
+          '--gtest_filter=SkiaGold*',
         ],
         'experiment_percentage': 100,
         'swarming': {
diff --git a/testing/buildbot/tryserver.chromium.linux.json b/testing/buildbot/tryserver.chromium.linux.json
index b7ee03b..da9a193 100644
--- a/testing/buildbot/tryserver.chromium.linux.json
+++ b/testing/buildbot/tryserver.chromium.linux.json
@@ -13,7 +13,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -29,7 +29,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -45,7 +45,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -61,7 +61,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -77,7 +77,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -93,7 +93,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -109,7 +109,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -125,7 +125,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -141,7 +141,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -157,7 +157,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -174,7 +174,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -190,7 +190,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -206,7 +206,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -222,7 +222,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 10
@@ -244,7 +244,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -260,7 +260,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -279,7 +279,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -295,7 +295,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -311,7 +311,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -327,7 +327,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -343,7 +343,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -359,7 +359,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -375,7 +375,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -391,7 +391,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -407,7 +407,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 6
@@ -429,7 +429,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -445,7 +445,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -461,7 +461,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -477,7 +477,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -493,7 +493,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -509,7 +509,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -525,7 +525,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -541,7 +541,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -557,7 +557,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -573,7 +573,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -589,7 +589,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -605,7 +605,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -621,7 +621,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -637,7 +637,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -653,7 +653,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -669,7 +669,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -685,7 +685,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -701,7 +701,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -717,7 +717,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -733,7 +733,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 3
@@ -755,7 +755,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -771,7 +771,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -787,7 +787,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -803,7 +803,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -819,7 +819,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -835,7 +835,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -851,7 +851,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -867,7 +867,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -883,7 +883,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -899,7 +899,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -915,7 +915,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -931,7 +931,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -947,7 +947,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -963,7 +963,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -979,7 +979,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -995,7 +995,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1011,7 +1011,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1027,7 +1027,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1043,7 +1043,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1059,7 +1059,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1075,7 +1075,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1091,7 +1091,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1107,7 +1107,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1123,7 +1123,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1139,7 +1139,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1155,7 +1155,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1171,7 +1171,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1187,7 +1187,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1203,7 +1203,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1219,7 +1219,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1235,7 +1235,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1251,7 +1251,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1267,7 +1267,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1283,7 +1283,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1299,7 +1299,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1315,7 +1315,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1331,7 +1331,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1347,7 +1347,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1363,7 +1363,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1379,7 +1379,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1395,7 +1395,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1411,7 +1411,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ]
         },
@@ -1439,7 +1439,7 @@
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
             {
-              "os": "Ubuntu-14.04"
+              "os": "Ubuntu-16.04"
             }
           ],
           "shards": 12
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index a5b5fba..2bf4a3b 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -44,6 +44,8 @@
         ],
         'mixins': [
           'chrome-swarming-pool',
+          # TODO(crbug.com/954450): Switch to xenial when chrome-swarming has
+          # xenial bots.
           'linux-trusty',
         ],
         'test_suites': {
@@ -110,7 +112,7 @@
       'linux-archive-rel': {
         'mixins': [
           'linux-archive-rel-args',
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -970,7 +972,7 @@
       },
       'UBSanVptr Linux': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           # no "_and_gl":gl_unittests doesn't pass yet,
@@ -1297,7 +1299,7 @@
       },
       'Linux Builder Goma Canary': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -1308,7 +1310,7 @@
       },
       'Linux Viz': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -1319,7 +1321,7 @@
       },
       'Linux x64 Goma Canary (clobber)': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -1330,7 +1332,7 @@
       },
       'Linux x64 Goma Canary LocalOutputCache': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -1407,7 +1409,7 @@
       },
       'Mojo Linux': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'mojo_linux_gtests',
@@ -1434,7 +1436,7 @@
       },
       'VR Linux': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'vr_common_perftests',
@@ -1767,7 +1769,7 @@
       'linux-chromeos-code-coverage': {
         'mixins': [
           'code-coverage',
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'gn_all',
@@ -1779,7 +1781,7 @@
       'linux-chromeos-oobe-code-coverage': {
         'mixins': [
           'code-coverage',
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'gn_all',
@@ -1790,7 +1792,7 @@
       },
       'linux-chromium-tests-staging-builder': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all'
@@ -1801,7 +1803,7 @@
       },
       'linux-chromium-tests-staging-tests': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'chromium_linux_gtests',
@@ -1811,7 +1813,7 @@
       'linux-code-coverage': {
         'mixins': [
           'code-coverage',
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'chromium_linux_coverage_gtests',
@@ -1826,16 +1828,6 @@
           'gtest_tests': 'fieldtrial_gtests',
         },
       },
-      'linux-tcmalloc-rel': {
-        'mixins': [
-          'linux-trusty',
-        ],
-        'test_suites': {
-          'gtest_tests': 'chromium_linux_gtests',
-          'isolated_scripts': 'chromium_linux_rel_isolated_scripts',
-          'scripts': 'chromium_linux_scripts',
-        },
-      },
       'mac-hermetic-upgrade-rel': {
         'additional_compile_targets': [
           'all'
@@ -1977,7 +1969,7 @@
       },
       'Chromium Linux Goma RBE Staging': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -1988,7 +1980,7 @@
       },
       'Chromium Linux Goma RBE Staging (clobber)': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -1999,7 +1991,7 @@
       },
       'Chromium Linux Goma RBE Staging (dbg)': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -2010,7 +2002,7 @@
       },
       'Chromium Linux Goma RBE Staging (dbg) (clobber)': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -2021,7 +2013,7 @@
       },
       'Chromium Linux Goma Staging': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all',
@@ -3270,7 +3262,7 @@
     'machines': {
       'Cast Audio Linux': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'cast_shell',
@@ -3318,7 +3310,7 @@
       },
       'Leak Detection Linux': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'isolated_scripts': 'leak_detection_isolated_scripts',
@@ -3326,7 +3318,7 @@
       },
       'Linux Builder': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'all'
@@ -3350,7 +3342,7 @@
       # linux-rel or ended up not being able to fold.
       'Linux Builder Code Coverage': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
           'code-coverage',
         ],
         'additional_compile_targets': [
@@ -3384,7 +3376,7 @@
       # linux-rel or ended up not being able to fold.
       'Linux Tests Code Coverage': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
           'code-coverage',
         ],
         'test_suites': {
@@ -3420,7 +3412,7 @@
       },
       'linux-ozone-rel': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'additional_compile_targets': [
           'chrome',
@@ -3670,7 +3662,7 @@
       },
       'Linux CFI': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'chromium_linux_and_gl_gtests',
@@ -3678,7 +3670,7 @@
       },
       'Linux Chromium OS ASan LSan Tests (1)': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'linux_chromeos_gtests',
@@ -3748,7 +3740,7 @@
       },
       'WebKit Linux MSAN': {
         'mixins': [
-          'linux-xenial',
+          'linux-trusty',
         ],
         'test_suites': {
           'isolated_scripts': 'chromium_webkit_isolated_scripts',
@@ -3837,7 +3829,7 @@
       # see crbug.com/790309, crbug.com/790294, crbug.com/790286.
       'WebKit Linux ASAN': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'isolated_scripts': 'chromium_webkit_isolated_scripts',
@@ -3845,7 +3837,7 @@
       },
       'WebKit Linux Leak': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'isolated_scripts': 'chromium_webkit_isolated_scripts',
@@ -3904,7 +3896,7 @@
       },
       'WebRTC Chromium Linux Tester': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'webrtc_chromium_tests_with_baremetal_tests',
@@ -4003,7 +3995,7 @@
       'WebRTC Chromium FYI Linux Tester': {
         'mixins': [
           'x86-64',
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'webrtc_chromium_gtests',
@@ -4166,7 +4158,7 @@
     'machines': {
       'Linux - Future': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'client_v8_chromium_gtests',
@@ -4175,7 +4167,7 @@
       },
       'Linux - Future (dbg)': {
         'mixins': [
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'client_v8_chromium_gtests',
@@ -4332,7 +4324,7 @@
       'linux-coverage-rel': {
         'mixins': [
           'code-coverage',
-          'linux-trusty',
+          'linux-xenial',
         ],
         'test_suites': {
           'gtest_tests': 'chromium_linux_coverage_gtests',
diff --git a/testing/merge_scripts/code_coverage/merge_lib.py b/testing/merge_scripts/code_coverage/merge_lib.py
index 52758101..3e62a5b 100644
--- a/testing/merge_scripts/code_coverage/merge_lib.py
+++ b/testing/merge_scripts/code_coverage/merge_lib.py
@@ -250,7 +250,7 @@
   for profile in bad_profiles:
     # E.g. /b/s/w/ir/tmp/t/tmpSvBRii/44b643576cf39f10/profraw/default-1.profraw
     _base_path, task_id, _profraw, _filename = os.path.normpath(profile).rsplit(
-        os.path.sep, maxsplit=3)
+        os.path.sep, 3)
     # Since we are getting a task_id from a file path, which is less than ideal,
     # do some checking to at least verify that the snippet looks like a valid
     # task id.
diff --git a/testing/merge_scripts/code_coverage/merge_results_test.py b/testing/merge_scripts/code_coverage/merge_results_test.py
index 38b35d2..ce982c2 100755
--- a/testing/merge_scripts/code_coverage/merge_results_test.py
+++ b/testing/merge_scripts/code_coverage/merge_results_test.py
@@ -225,6 +225,15 @@
     self.assertIn('missing_shards', written)
     self.assertEqual(written['missing_shards'], [0])
 
+  def test_get_shards_to_retry(self):
+    bad_profiles = [
+        '/b/s/w/ir/tmp/t/tmpSvBRii/44b643576cf39f10/profraw/default-1.profraw',
+        '/b/s/w/ir/tmp/t/tmpAbCDEf/44b1234567890123/profraw/default-1.profraw',
+        '/b/s/w/ir/tmp/t/tmpAbCDEf/44b1234567890123/profraw/default-2.profraw',
+    ]
+    self.assertEqual(set(['44b643576cf39f10', '44b1234567890123']),
+                     merger.get_shards_to_retry(bad_profiles))
+
   def test_merge_java_exec_files(self):
     mock_input_dir_walk = [
         ('/b/some/path', ['0', '1', '2', '3'], ['summary.json']),
diff --git a/testing/test.gni b/testing/test.gni
index 84796d21..5ad48c9e1 100644
--- a/testing/test.gni
+++ b/testing/test.gni
@@ -278,7 +278,7 @@
 
     fuchsia_package(_pkg_target) {
       testonly = true
-      forward_variables_from(invoker, [ "sandbox_policy" ])
+      forward_variables_from(invoker, [ "manifest" ])
       binary = ":$_exec_target"
       package_name_override = _output_name
     }
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 8fdd0b8..cff80e7 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -73,25 +73,6 @@
             ]
         }
     ],
-    "AdFramePriority": [
-        {
-            "platforms": [
-                "windows",
-                "mac",
-                "chromeos",
-                "linux",
-                "android"
-            ],
-            "experiments": [
-                {
-                    "name": "LowPriorityForAdFrame",
-                    "enable_features": [
-                        "BlinkSchedulerLowPriorityForAdFrame"
-                    ]
-                }
-            ]
-        }
-    ],
     "AdTagging": [
         {
             "platforms": [
@@ -2231,45 +2212,6 @@
             ]
         }
     ],
-    "FrameTypePriorityExperiment": [
-        {
-            "platforms": [
-                "windows",
-                "mac",
-                "chromeos",
-                "linux",
-                "android"
-            ],
-            "experiments": [
-                {
-                    "name": "LowPriorityForHiddenFrameDuringLoadingEnabled_V2",
-                    "enable_features": [
-                        "BlinkSchedulerFrameExperimentOnlyWhenLoading",
-                        "BlinkSchedulerLowPriorityForHiddenFrame"
-                    ]
-                }
-            ]
-        }
-    ],
-    "FrameTypePriorityExperiment2": [
-        {
-            "platforms": [
-                "windows",
-                "mac",
-                "chromeos",
-                "linux",
-                "android"
-            ],
-            "experiments": [
-                {
-                    "name": "LowPriorityForBackgroundPageEnabled_V2",
-                    "enable_features": [
-                        "BlinkSchedulerLowPriorityForBackgroundPages"
-                    ]
-                }
-            ]
-        }
-    ],
     "FreezeBackgroundTabOnNetworkIdle": [
         {
             "platforms": [
@@ -3539,25 +3481,6 @@
             ]
         }
     ],
-    "OriginTypePriorityExperiment": [
-        {
-            "platforms": [
-                "windows",
-                "mac",
-                "chromeos",
-                "linux",
-                "android"
-            ],
-            "experiments": [
-                {
-                    "name": "LowPriorityForCrossOriginFrame",
-                    "enable_features": [
-                        "BlinkSchedulerLowPriorityForCrossOrigin"
-                    ]
-                }
-            ]
-        }
-    ],
     "OutOfBlinkCors": [
         {
             "platforms": [
@@ -4356,33 +4279,6 @@
             ]
         }
     ],
-    "ResourceFetchPriorityExperiment": [
-        {
-            "platforms": [
-                "windows",
-                "mac",
-                "chromeos",
-                "linux",
-                "android"
-            ],
-            "experiments": [
-                {
-                    "name": "BlinkSchedulerUseResourceFetchPriority_Map3_V3",
-                    "params": {
-                        "HIGHEST": "HIGH",
-                        "IDLE": "LOW",
-                        "LOW": "LOW",
-                        "LOWEST": "LOW",
-                        "MEDIUM": "NORMAL",
-                        "THROTTLED": "LOW"
-                    },
-                    "enable_features": [
-                        "BlinkSchedulerResourceFetchPriority"
-                    ]
-                }
-            ]
-        }
-    ],
     "ResourceLoadingHints": [
         {
             "platforms": [
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index 9c35120..155c344 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -254,6 +254,12 @@
 const base::Feature kAlwaysAccelerateCanvas{"AlwaysAccelerateCanvas",
                                             base::FEATURE_ENABLED_BY_DEFAULT};
 
+// Enables usage of render frame observer as the receiver of the resource
+// loading hints in the render process.
+// https://crbug.com/891328.
+const base::Feature kSendPreviewsLoadingHintsBeforeCommit{
+    "SendPreviewsLoadingHintsBeforeCommit", base::FEATURE_ENABLED_BY_DEFAULT};
+
 // Enables cache-aware WebFonts loading. See https://crbug.com/570205.
 // The feature is disabled on Android for WebView API issue discussed at
 // https://crbug.com/942440.
@@ -315,5 +321,27 @@
 const base::Feature kStreamsNative{"StreamsNative",
                                    base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Blink garbage collection.
+// Enables compaction of backing stores on Blink's heap.
+const base::Feature kBlinkHeapCompaction{"BlinkHeapCompaction",
+                                         base::FEATURE_ENABLED_BY_DEFAULT};
+// Enables concurrently marking Blink's heap.
+const base::Feature kBlinkHeapConcurrentMarking{
+    "BlinkHeapConcurrentMarking", base::FEATURE_DISABLED_BY_DEFAULT};
+// Enables concurrently sweeping Blink's heap.
+const base::Feature kBlinkHeapConcurrentSweeping{
+    "BlinkHeapConcurrentSweeping", base::FEATURE_DISABLED_BY_DEFAULT};
+// Enables incrementally marking Blink's heap.
+const base::Feature kBlinkHeapIncrementalMarking{
+    "BlinkHeapIncrementalMarking", base::FEATURE_ENABLED_BY_DEFAULT};
+// Enables a marking stress mode that schedules more garbage collections and
+// also adds additional verification passes.
+const base::Feature kBlinkHeapIncrementalMarkingStress{
+    "BlinkHeapIncrementalMarkingStress", base::FEATURE_DISABLED_BY_DEFAULT};
+// Enables unified heap garbage collection scheduling where scheduling is
+// delegated to V8's heap controller.
+const base::Feature kBlinkHeapUnifiedGCScheduling{
+    "BlinkHeapUnifiedGCScheduling", base::FEATURE_ENABLED_BY_DEFAULT};
+
 }  // namespace features
 }  // namespace blink
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn
index 7b838b0d..138ae1fe 100644
--- a/third_party/blink/public/BUILD.gn
+++ b/third_party/blink/public/BUILD.gn
@@ -103,6 +103,7 @@
     # is done.
     "web/modules/mediastream/mock_constraint_factory.h",
     "web/modules/mediastream/mock_media_stream_registry.h",
+    "web/modules/mediastream/mock_media_stream_video_sink.h",
     "web/modules/mediastream/mock_media_stream_video_source.h",
   ]
   deps = [
@@ -259,6 +260,7 @@
     "platform/web_keyboard_event.h",
     "platform/web_layer_tree_view.h",
     "platform/web_loading_behavior_flag.h",
+    "platform/web_loading_hints_provider.h",
     "platform/web_localized_string.h",
     "platform/web_media_constraints.h",
     "platform/web_media_key_system_configuration.h",
@@ -378,6 +380,7 @@
     "web/modules/mediastream/media_stream_video_source.h",
     "web/modules/mediastream/media_stream_video_track.h",
     "web/modules/mediastream/remote_media_stream_track_adapter.h",
+    "web/modules/mediastream/track_audio_renderer.h",
     "web/modules/mediastream/video_track_adapter_settings.h",
     "web/modules/mediastream/web_media_stream_utils.h",
     "web/modules/mediastream/webaudio_media_stream_audio_sink.h",
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h
index 01704ac..38306d75 100644
--- a/third_party/blink/public/common/features.h
+++ b/third_party/blink/public/common/features.h
@@ -77,6 +77,9 @@
 BLINK_COMMON_EXPORT extern const base::Feature kAlwaysAccelerateCanvas;
 
 BLINK_COMMON_EXPORT extern const base::Feature
+    kSendPreviewsLoadingHintsBeforeCommit;
+
+BLINK_COMMON_EXPORT extern const base::Feature
     kWebFontsCacheAwareTimeoutAdaption;
 BLINK_COMMON_EXPORT extern const base::Feature
     kBlockingFocusWithoutUserActivation;
@@ -94,6 +97,15 @@
 
 BLINK_COMMON_EXPORT extern const base::Feature kStreamsNative;
 
+// Blink garbage collection.
+BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapCompaction;
+BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapConcurrentMarking;
+BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapConcurrentSweeping;
+BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapIncrementalMarking;
+BLINK_COMMON_EXPORT extern const base::Feature
+    kBlinkHeapIncrementalMarkingStress;
+BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapUnifiedGCScheduling;
+
 }  // namespace features
 }  // namespace blink
 
diff --git a/third_party/blink/public/mojom/frame/document_interface_broker.mojom b/third_party/blink/public/mojom/frame/document_interface_broker.mojom
index 6e12f17..77e5fcd 100644
--- a/third_party/blink/public/mojom/frame/document_interface_broker.mojom
+++ b/third_party/blink/public/mojom/frame/document_interface_broker.mojom
@@ -16,20 +16,20 @@
 // An interface through which the renderer may request document-scoped
 // interfaces from the browser.
 interface DocumentInterfaceBroker {
-  // Binds the blink.mojom.AudioContextManager interface request to its remote
+  // Binds the blink.mojom.AudioContextManager pending receiver to its remote
   // implementation in the browser process, to allow sending real-time
   // notifications originated from Blink's AudioContext.
-  GetAudioContextManager(blink.mojom.AudioContextManager& request);
+  GetAudioContextManager(pending_receiver<blink.mojom.AudioContextManager> receiver);
 
   // Binds the blink.mojom.Authenticator interface request to its remote
   // implementation in the browser process, to allow directing authenticators to
   // create or use a public key credential.
   GetAuthenticator(blink.mojom.Authenticator& request);
 
-  // Binds the blink.mojom.CredentialManager interface request to its remote
+  // Binds the blink.mojom.CredentialManager pending receiver to its remote
   // implementation in the browser process, to allow storing, retrieving and
   // handling credentials.
-  GetCredentialManager(blink.mojom.CredentialManager& request);
+  GetCredentialManager(pending_receiver<blink.mojom.CredentialManager> receiver);
 
   // Binds the blink.mojom.FrameHostTestInterface interface request to its
   // remote implementation in the browser process, to allow using this test
@@ -37,16 +37,16 @@
   // RenderFrameHost through the DocumentInterfaceBroker interface.
   GetFrameHostTestInterface(blink.mojom.FrameHostTestInterface& request);
 
-  // Binds the blink.mojom.PushMessaging pending receiver request to its remote
+  // Binds the blink.mojom.PushMessaging pending receiver to its remote
   // implementation in the browser process, to allow subscribing, unsubscribing
   // and retrieving subscriptions related to push notifications (see Push API).
   GetPushMessaging(pending_receiver<blink.mojom.PushMessaging> receiver);
 
-  // Binds the blink.test.mojom.VirtualAuthenticatorManager interface request to
+  // Binds the blink.test.mojom.VirtualAuthenticatorManager pending receiver to
   // its remote implementation in the browser process, to manage a virtual
   // environment that allows talking virtual authenticators via the WebAuth API.
   GetVirtualAuthenticatorManager(
-      blink.test.mojom.VirtualAuthenticatorManager& request);
+      pending_receiver<blink.test.mojom.VirtualAuthenticatorManager> receiver);
 
   // Binds the blink.mojom.AppCacheHost interface request to its remote
   // implementation in the browser process, to allow handling and interacting
diff --git a/third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom b/third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom
index 089b116..f7bb2fd 100644
--- a/third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom
+++ b/third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom
@@ -60,6 +60,6 @@
       gfx.mojom.Size natural_size,
       bool show_play_pause_button,
       bool show_mute_button,
-      PictureInPictureSessionObserver observer)
-          => (PictureInPictureSession? session, gfx.mojom.Size size);
+      pending_remote<PictureInPictureSessionObserver> observer)
+          => (pending_remote<PictureInPictureSession>? session, gfx.mojom.Size size);
 };
diff --git a/third_party/blink/public/mojom/web_feature/web_feature.mojom b/third_party/blink/public/mojom/web_feature/web_feature.mojom
index 8977eb0..1a9565bd 100644
--- a/third_party/blink/public/mojom/web_feature/web_feature.mojom
+++ b/third_party/blink/public/mojom/web_feature/web_feature.mojom
@@ -2340,6 +2340,7 @@
   kCredentialManagerGetSuccessWithUVM = 2951,
   kDiscardInputEventToMovingIframe = 2952,
   kSignedExchangeSubresourcePrefetch = 2953,
+  kBasicCardType = 2954,
 
   // Add new features immediately above this line. Don't change assigned
   // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/blink/public/platform/task_type.h b/third_party/blink/public/platform/task_type.h
index c258f61..db411929 100644
--- a/third_party/blink/public/platform/task_type.h
+++ b/third_party/blink/public/platform/task_type.h
@@ -149,6 +149,9 @@
   // https://w3c.github.io/ServiceWorker/#dfn-client-message-queue
   kServiceWorkerClientMessage = 60,
 
+  // https://wicg.github.io/web-locks/#web-locks-tasks-source
+  kWebLocks = 66,
+
   ///////////////////////////////////////
   // Not-speced tasks should use one of the following task types
   ///////////////////////////////////////
@@ -239,7 +242,7 @@
   kWorkerThreadTaskQueueV8 = 47,
   kWorkerThreadTaskQueueCompositor = 48,
 
-  kCount = 66,
+  kCount = 67,
 };
 
 }  // namespace blink
diff --git a/third_party/blink/public/platform/web_loading_hints_provider.h b/third_party/blink/public/platform/web_loading_hints_provider.h
new file mode 100644
index 0000000..042397a
--- /dev/null
+++ b/third_party/blink/public/platform/web_loading_hints_provider.h
@@ -0,0 +1,27 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_LOADING_HINTS_PROVIDER_H_
+#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_LOADING_HINTS_PROVIDER_H_
+
+#include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-shared.h"
+#include "third_party/blink/public/platform/web_string.h"
+#include "third_party/blink/public/platform/web_vector.h"
+
+namespace blink {
+
+struct WebLoadingHintsProvider {
+  WebLoadingHintsProvider(
+      int64_t ukm_source_id,
+      const blink::WebVector<blink::WebString>& subresource_patterns_to_block)
+      : ukm_source_id(ukm_source_id),
+        subresource_patterns_to_block(subresource_patterns_to_block) {}
+
+  const int64_t ukm_source_id;
+  const blink::WebVector<blink::WebString> subresource_patterns_to_block;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_LOADING_HINTS_PROVIDER_H_
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
index a4787f6..9bc4335b 100644
--- a/third_party/blink/public/platform/web_runtime_features.h
+++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -84,7 +84,6 @@
   BLINK_PLATFORM_EXPORT static void EnableAutomaticLazyFrameLoading(bool);
   BLINK_PLATFORM_EXPORT static void EnableAutomaticLazyImageLoading(bool);
   BLINK_PLATFORM_EXPORT static void EnableBackgroundFetch(bool);
-  BLINK_PLATFORM_EXPORT static void EnableBlinkHeapIncrementalMarking(bool);
   BLINK_PLATFORM_EXPORT static void EnableBlockingFocusWithoutUserActivation(
       bool);
   BLINK_PLATFORM_EXPORT static void EnableCacheInlineScriptCode(bool);
@@ -106,7 +105,6 @@
   BLINK_PLATFORM_EXPORT static void EnableFormControlsRefresh(bool);
   BLINK_PLATFORM_EXPORT static void EnableGenericSensor(bool);
   BLINK_PLATFORM_EXPORT static void EnableGenericSensorExtraClasses(bool);
-  BLINK_PLATFORM_EXPORT static void EnableHeapCompaction(bool);
   BLINK_PLATFORM_EXPORT static void EnableImplicitRootScroller(bool);
   BLINK_PLATFORM_EXPORT static void EnableInputMultipleFieldsUI(bool);
   BLINK_PLATFORM_EXPORT static void EnableJankTrackingSweepLine(bool);
diff --git a/third_party/blink/public/web/modules/mediastream/DEPS b/third_party/blink/public/web/modules/mediastream/DEPS
index b3b3fb6a..aa6e1ec 100644
--- a/third_party/blink/public/web/modules/mediastream/DEPS
+++ b/third_party/blink/public/web/modules/mediastream/DEPS
@@ -4,6 +4,7 @@
     "+base/gtest_prod_util.h",
     "+base/memory/weak_ptr.h",
     "+base/sequence_checker.h",
+    "+base/single_thread_task_runner.h",
     "+base/synchronization/lock.h",
     "+base/threading/thread_checker.h",
     "+media/base",
@@ -12,7 +13,7 @@
 ]
 
 specific_include_rules = {
-    "mock_media_stream_video_source.h" : [
+    "mock_media_stream_video_(source|sink).h" : [
         "+testing/gmock/include/gmock/gmock.h",
     ],
 }
diff --git a/third_party/blink/public/web/modules/mediastream/local_media_stream_audio_source.h b/third_party/blink/public/web/modules/mediastream/local_media_stream_audio_source.h
index 2b77bf8..e1c9761 100644
--- a/third_party/blink/public/web/modules/mediastream/local_media_stream_audio_source.h
+++ b/third_party/blink/public/web/modules/mediastream/local_media_stream_audio_source.h
@@ -14,6 +14,7 @@
 
 namespace blink {
 
+class MediaStreamInternalFrameWrapper;
 class WebLocalFrame;
 
 // Represents a local source of audio data generated by an AudioInputDevice.
@@ -60,8 +61,7 @@
   // The WebLocalFrame that will consume the audio data. Used when creating
   // AudioInputDevices via the AudioDeviceFactory (indirectly through
   // blink::Platform).
-  class InternalFrame;
-  std::unique_ptr<InternalFrame> internal_consumer_frame_;
+  std::unique_ptr<MediaStreamInternalFrameWrapper> internal_consumer_frame_;
 
   // The device created by the AudioDeviceFactory in EnsureSourceIsStarted().
   scoped_refptr<media::AudioCapturerSource> source_;
diff --git a/third_party/blink/public/web/modules/mediastream/mock_media_stream_video_sink.h b/third_party/blink/public/web/modules/mediastream/mock_media_stream_video_sink.h
new file mode 100644
index 0000000..75c42b7
--- /dev/null
+++ b/third_party/blink/public/web/modules/mediastream/mock_media_stream_video_sink.h
@@ -0,0 +1,65 @@
+// Copyright 2014 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 THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_MOCK_MEDIA_STREAM_VIDEO_SINK_H_
+#define THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_MOCK_MEDIA_STREAM_VIDEO_SINK_H_
+
+#include "third_party/blink/public/web/modules/mediastream/media_stream_video_sink.h"
+
+#include "base/memory/weak_ptr.h"
+#include "media/base/video_frame.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "third_party/blink/public/common/media/video_capture.h"
+
+namespace blink {
+
+class MockMediaStreamVideoSink : public MediaStreamVideoSink {
+ public:
+  MockMediaStreamVideoSink();
+  ~MockMediaStreamVideoSink() override;
+
+  void ConnectToTrack(const WebMediaStreamTrack& track) {
+    MediaStreamVideoSink::ConnectToTrack(track, GetDeliverFrameCB(), true);
+  }
+
+  void ConnectToTrackWithCallback(const WebMediaStreamTrack& track,
+                                  const VideoCaptureDeliverFrameCB& callback) {
+    MediaStreamVideoSink::ConnectToTrack(track, callback, true);
+  }
+
+  void DisconnectFromTrack() { MediaStreamVideoSink::DisconnectFromTrack(); }
+
+  void OnReadyStateChanged(WebMediaStreamSource::ReadyState state) override;
+  void OnEnabledChanged(bool enabled) override;
+
+  // Triggered when OnVideoFrame(scoped_refptr<media::VideoFrame> frame)
+  // is called.
+  MOCK_METHOD0(OnVideoFrame, void());
+
+  VideoCaptureDeliverFrameCB GetDeliverFrameCB();
+
+  int number_of_frames() const { return number_of_frames_; }
+  media::VideoPixelFormat format() const { return format_; }
+  gfx::Size frame_size() const { return frame_size_; }
+  scoped_refptr<media::VideoFrame> last_frame() const { return last_frame_; }
+
+  bool enabled() const { return enabled_; }
+  WebMediaStreamSource::ReadyState state() const { return state_; }
+
+ private:
+  void DeliverVideoFrame(scoped_refptr<media::VideoFrame> frame,
+                         base::TimeTicks estimated_capture_time);
+
+  int number_of_frames_;
+  bool enabled_;
+  media::VideoPixelFormat format_;
+  WebMediaStreamSource::ReadyState state_;
+  gfx::Size frame_size_;
+  scoped_refptr<media::VideoFrame> last_frame_;
+  base::WeakPtrFactory<MockMediaStreamVideoSink> weak_factory_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_MOCK_MEDIA_STREAM_VIDEO_SINK_H_
diff --git a/content/renderer/media/stream/track_audio_renderer.h b/third_party/blink/public/web/modules/mediastream/track_audio_renderer.h
similarity index 82%
rename from content/renderer/media/stream/track_audio_renderer.h
rename to third_party/blink/public/web/modules/mediastream/track_audio_renderer.h
index 000d508..42500c1 100644
--- a/content/renderer/media/stream/track_audio_renderer.h
+++ b/third_party/blink/public/web/modules/mediastream/track_audio_renderer.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CONTENT_RENDERER_MEDIA_STREAM_TRACK_AUDIO_RENDERER_H_
-#define CONTENT_RENDERER_MEDIA_STREAM_TRACK_AUDIO_RENDERER_H_
+#ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_TRACK_AUDIO_RENDERER_H_
+#define THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_TRACK_AUDIO_RENDERER_H_
 
 #include <stdint.h>
 
@@ -16,27 +16,29 @@
 #include "base/memory/ref_counted.h"
 #include "base/single_thread_task_runner.h"
 #include "base/synchronization/lock.h"
-#include "content/common/content_export.h"
 #include "media/base/audio_renderer_sink.h"
 #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_audio_renderer.h"
 #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_audio_sink.h"
+#include "third_party/blink/public/platform/web_common.h"
 #include "third_party/blink/public/platform/web_media_stream_track.h"
 
 namespace media {
 class AudioBus;
 class AudioShifter;
 class AudioParameters;
-}
+}  // namespace media
 
-namespace content {
+namespace blink {
 
-// TrackAudioRenderer is a blink::WebMediaStreamAudioRenderer for plumbing audio
+class WebLocalFrame;
+class MediaStreamInternalFrameWrapper;
+
+// TrackAudioRenderer is a WebMediaStreamAudioRenderer for plumbing audio
 // data generated from either local or remote (but not
 // PeerConnection/WebRTC-sourced) MediaStreamAudioTracks to an audio output
 // device, reconciling differences in the rates of production and consumption of
 // the audio data.  Note that remote PeerConnection-sourced tracks are NOT
-// rendered by this implementation (see
-// blink::WebMediaStreamRendererFactoryImpl).
+// rendered by this implementation (see WebMediaStreamRendererFactoryImpl).
 //
 // This class uses AudioDeviceFactory to create media::AudioRendererSink and
 // owns/manages their lifecycles.  Output devices are automatically re-created
@@ -50,9 +52,9 @@
 // it is being rendered-out.  media::AudioShifter is used to buffer, stretch
 // and skip audio to maintain time synchronization between the producer and
 // consumer.
-class CONTENT_EXPORT TrackAudioRenderer
-    : public blink::WebMediaStreamAudioRenderer,
-      public blink::WebMediaStreamAudioSink,
+class BLINK_MODULES_EXPORT TrackAudioRenderer
+    : public WebMediaStreamAudioRenderer,
+      public WebMediaStreamAudioSink,
       public media::AudioRendererSink::RenderCallback {
  public:
   // Creates a renderer for the given |audio_track|.  |playout_render_frame_id|
@@ -62,12 +64,12 @@
   // otherwise, audio is output to the default device for the system.
   //
   // Called on the main thread.
-  TrackAudioRenderer(const blink::WebMediaStreamTrack& audio_track,
-                     int playout_render_frame_id,
+  TrackAudioRenderer(const WebMediaStreamTrack& audio_track,
+                     WebLocalFrame* playout_web_frame,
                      int session_id,
                      const std::string& device_id);
 
-  // blink::WebMediaStreamAudioRenderer implementation.
+  // WebMediaStreamAudioRenderer implementation.
   // Called on the main thread.
   void Start() override;
   void Stop() override;
@@ -83,7 +85,7 @@
   ~TrackAudioRenderer() override;
 
  private:
-  // blink::WebMediaStreamAudioSink implementation.
+  // WebMediaStreamAudioSink implementation.
 
   // Called on the AudioInputDevice worker thread.
   void OnData(const media::AudioBus& audio_bus,
@@ -121,13 +123,13 @@
 
   // The audio track which provides access to the source data to render.
   //
-  // This class is calling blink::WebMediaStreamAudioSink::AddToAudioTrack() and
-  // blink::WebMediaStreamAudioSink::RemoveFromAudioTrack() to connect and
+  // This class is calling WebMediaStreamAudioSink::AddToAudioTrack() and
+  // WebMediaStreamAudioSink::RemoveFromAudioTrack() to connect and
   // disconnect with the audio track.
-  blink::WebMediaStreamTrack audio_track_;
+  WebMediaStreamTrack audio_track_;
 
-  // The RenderFrame in which the audio is rendered into |sink_|.
-  const int playout_render_frame_id_;
+  // The WebLocalFrame in which the audio is rendered into |sink_|.
+  std::unique_ptr<MediaStreamInternalFrameWrapper> internal_playout_frame_;
   const int session_id_;
 
   // MessageLoop associated with the single thread that performs all control
@@ -172,6 +174,6 @@
   DISALLOW_COPY_AND_ASSIGN(TrackAudioRenderer);
 };
 
-}  // namespace content
+}  // namespace blink
 
-#endif  // CONTENT_RENDERER_MEDIA_STREAM_TRACK_AUDIO_RENDERER_H_
+#endif  // THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_TRACK_AUDIO_RENDERER_H_
diff --git a/third_party/blink/public/web/web_ax_object.h b/third_party/blink/public/web/web_ax_object.h
index 68df073..fe0b872 100644
--- a/third_party/blink/public/web/web_ax_object.h
+++ b/third_party/blink/public/web/web_ax_object.h
@@ -181,6 +181,8 @@
   BLINK_EXPORT int HeadingLevel() const;
   BLINK_EXPORT int HierarchicalLevel() const;
   BLINK_EXPORT WebAXObject HitTest(const WebPoint&) const;
+  // Get the WebAXObject's bounds in frame-relative coordinates as a WebRect.
+  BLINK_EXPORT WebRect GetBoundsInFrameCoordinates() const;
   BLINK_EXPORT WebString KeyboardShortcut() const;
   BLINK_EXPORT WebString Language() const;
   BLINK_EXPORT WebAXObject InPageLinkTarget() const;
diff --git a/third_party/blink/public/web/web_context_menu_data.h b/third_party/blink/public/web/web_context_menu_data.h
index 0d3d133b..ec7cc3b 100644
--- a/third_party/blink/public/web/web_context_menu_data.h
+++ b/third_party/blink/public/web/web_context_menu_data.h
@@ -37,12 +37,9 @@
 #include "third_party/blink/public/platform/web_rect.h"
 #include "third_party/blink/public/platform/web_string.h"
 #include "third_party/blink/public/platform/web_url.h"
-#include "third_party/blink/public/platform/web_url_response.h"
 #include "third_party/blink/public/platform/web_vector.h"
 #include "third_party/blink/public/web/web_menu_item_info.h"
 
-#define WEBCONTEXT_MEDIATYPEFILE_DEFINED
-
 namespace blink {
 
 // This struct is passed to WebViewClient::ShowContextMenu.
@@ -82,13 +79,6 @@
   // Whether the image in context is a null.
   bool has_image_contents;
 
-  // Whether the image in context is a Client-side Lo-Fi placeholder image.
-  bool is_placeholder_image;
-
-  // If |media_type| is MediaTypeImage and |has_image_contents| is true, then
-  // this contains the image's WebURLResponse.
-  WebURLResponse image_response;
-
   // The absolute URL of the page in context.
   WebURL page_url;
 
diff --git a/third_party/blink/public/web/web_document_loader.h b/third_party/blink/public/web/web_document_loader.h
index 771af52c..b2c95ccc 100644
--- a/third_party/blink/public/web/web_document_loader.h
+++ b/third_party/blink/public/web/web_document_loader.h
@@ -44,6 +44,7 @@
 namespace blink {
 
 class WebDocumentSubresourceFilter;
+struct WebLoadingHintsProvider;
 class WebServiceWorkerNetworkProvider;
 class WebURL;
 class WebURLResponse;
@@ -126,6 +127,13 @@
   // datasource is destroyed or when a new filter is set.
   virtual void SetSubresourceFilter(WebDocumentSubresourceFilter*) = 0;
 
+  // Allows the embedder to inject a loading hints provider that will be
+  // consulted to determine which subresources to load. The passed-in
+  // object is deleted when the datasource is destroyed or when a new filter
+  // is set.
+  virtual void SetLoadingHintsProvider(
+      std::unique_ptr<blink::WebLoadingHintsProvider>) = 0;
+
   // Allows the embedder to set and return the service worker provider
   // associated with the data source. The provider may provide the service
   // worker that controls the resource loading from this data source.
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h
index f8be6f3..770be20ab3 100644
--- a/third_party/blink/public/web/web_local_frame_client.h
+++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -229,12 +229,17 @@
   // Request the creation of a new portal.
   virtual std::pair<WebRemoteFrame*, base::UnguessableToken> CreatePortal(
       mojo::ScopedInterfaceEndpointHandle portal_endpoint,
-      mojo::ScopedInterfaceEndpointHandle client_endpoint) {
+      mojo::ScopedInterfaceEndpointHandle client_endpoint,
+      const WebElement& protal_element) {
     return std::pair<WebRemoteFrame*, base::UnguessableToken>(
         nullptr, base::UnguessableToken());
   }
+
+  // Request the creation of a remote frame which corresponds to an existing
+  // portal.
   virtual blink::WebRemoteFrame* AdoptPortal(
-      const base::UnguessableToken& portal_token) {
+      const base::UnguessableToken& portal_token,
+      const WebElement& portal_element) {
     return nullptr;
   }
 
diff --git a/third_party/blink/public/web/web_remote_frame.h b/third_party/blink/public/web/web_remote_frame.h
index 344a5aa..910bba2 100644
--- a/third_party/blink/public/web/web_remote_frame.h
+++ b/third_party/blink/public/web/web_remote_frame.h
@@ -25,6 +25,7 @@
 
 enum class WebTreeScopeType;
 class InterfaceRegistry;
+class WebElement;
 class WebLocalFrameClient;
 class WebRemoteFrameClient;
 class WebString;
@@ -44,6 +45,13 @@
   BLINK_EXPORT static WebRemoteFrame*
   CreateMainFrame(WebView*, WebRemoteFrameClient*, WebFrame* opener = nullptr);
 
+  // Also performs core initialization to associate the created remote frame
+  // with the provided <portal> element.
+  BLINK_EXPORT static WebRemoteFrame* CreateForPortal(
+      WebTreeScopeType,
+      WebRemoteFrameClient*,
+      const WebElement& portal_element);
+
   // Specialized factory methods to allow the embedder to replicate the frame
   // tree between processes.
   // TODO(dcheng): The embedder currently does not replicate local frames in
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_embedder_graph_builder.cc b/third_party/blink/renderer/bindings/core/v8/v8_embedder_graph_builder.cc
index 7d03c58..c25dd97 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_embedder_graph_builder.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_embedder_graph_builder.cc
@@ -180,8 +180,7 @@
   void VisitRoot(void*, TraceDescriptor, const base::Location&) final;
   void Visit(const TraceWrapperV8Reference<v8::Value>&) final;
   void Visit(void*, TraceDescriptor) final;
-  void VisitBackingStoreStrongly(const char*,
-                                 void* object,
+  void VisitBackingStoreStrongly(void* object,
                                  void** object_slot,
                                  TraceDescriptor desc) final;
 
@@ -190,13 +189,12 @@
                  void** object_slot,
                  TraceDescriptor desc,
                  WeakCallback callback) final {}
-  void VisitBackingStoreWeakly(const char*,
-                               void*,
+  void VisitBackingStoreWeakly(void*,
                                void**,
                                TraceDescriptor,
                                WeakCallback,
                                void*) final {}
-  void VisitBackingStoreOnly(const char*, void*, void**) final {}
+  void VisitBackingStoreOnly(void*, void**) final {}
   void RegisterBackingStoreCallback(void**, MovingObjectCallback, void*) final {
   }
   void RegisterWeakCallback(void*, WeakCallback) final {}
@@ -616,8 +614,7 @@
   graph_->AddEdge(parent_node, current_node);
 }
 
-void V8EmbedderGraphBuilder::VisitBackingStoreStrongly(const char*,
-                                                       void* object,
+void V8EmbedderGraphBuilder::VisitBackingStoreStrongly(void* object,
                                                        void** object_slot,
                                                        TraceDescriptor desc) {
   if (!object)
diff --git a/third_party/blink/renderer/bindings/scripts/build_web_idl_database.py b/third_party/blink/renderer/bindings/scripts/build_web_idl_database.py
index 773130b..c116cad 100755
--- a/third_party/blink/renderer/bindings/scripts/build_web_idl_database.py
+++ b/third_party/blink/renderer/bindings/scripts/build_web_idl_database.py
@@ -11,19 +11,20 @@
 
 import optparse
 import utilities
-from web_idl.idl_compiler import IdlCompiler
-from web_idl import ir_builder
 from web_idl.identifier_ir_map import IdentifierIRMap
+from web_idl.idl_compiler import IdlCompiler
+from web_idl.idl_reference_proxy import RefByIdFactory
+from web_idl.ir_builder import load_and_register_idl_definitions
 
 
 def parse_options():
     parser = optparse.OptionParser()
     parser.add_option('--output', type='string',
-                      help='pickle file to write down')
+                      help='filepath of the resulting database')
     options, args = parser.parse_args()
 
     if options.output is None:
-        parser.error('Must specify a pickle file to output using --output.')
+        parser.error('Specify a filepath of the database with --output.')
 
     return options, args
 
@@ -31,7 +32,13 @@
 def main():
     options, filepaths = parse_options()
     ir_map = IdentifierIRMap()
-    ir_builder.load_and_register_idl_definitions(filepaths, ir_map)
+    ref_to_idl_type_factory = RefByIdFactory()
+    ref_to_idl_def_factory = RefByIdFactory()
+    load_and_register_idl_definitions(
+        filepaths,
+        ir_map.register,
+        ref_to_idl_type_factory.create,
+        ref_to_idl_def_factory.create)
     idl_compiler = IdlCompiler(ir_map)
     idl_database = idl_compiler.build_database()
     utilities.write_pickle_file(options.output, idl_database)
diff --git a/third_party/blink/renderer/bindings/scripts/scripts.gni b/third_party/blink/renderer/bindings/scripts/scripts.gni
index b9bf7b3..de96ea8a 100644
--- a/third_party/blink/renderer/bindings/scripts/scripts.gni
+++ b/third_party/blink/renderer/bindings/scripts/scripts.gni
@@ -64,7 +64,6 @@
                                   "web_idl/common.py",
                                   "web_idl/constant.py",
                                   "web_idl/dictionary.py",
-                                  "web_idl/ecma_script_types.py",
                                   "web_idl/enumeration.py",
                                   "web_idl/extended_attribute.py",
                                   "web_idl/identifier_ir_map.py",
@@ -74,7 +73,6 @@
                                   "web_idl/includes.py",
                                   "web_idl/interface.py",
                                   "web_idl/ir_builder.py",
-                                  "web_idl/literal_token.py",
                                   "web_idl/namespace.py",
                                   "web_idl/operation.py",
                                   "web_idl/typedef.py",
diff --git a/third_party/blink/renderer/bindings/scripts/web_idl/dictionary.py b/third_party/blink/renderer/bindings/scripts/web_idl/dictionary.py
index ee302433..ad35a13 100644
--- a/third_party/blink/renderer/bindings/scripts/web_idl/dictionary.py
+++ b/third_party/blink/renderer/bindings/scripts/web_idl/dictionary.py
@@ -7,9 +7,12 @@
 from .common import WithComponent
 from .common import WithDebugInfo
 from .common import WithExtendedAttributes
+from .common import WithIdentifier
 from .identifier_ir_map import IdentifierIRMap
 from .idl_member import IdlMember
+from .idl_types import IdlType
 from .user_defined_type import UserDefinedType
+from .values import DefaultValue
 
 
 class Dictionary(UserDefinedType, WithExtendedAttributes,
@@ -21,10 +24,16 @@
         def __init__(self,
                      identifier,
                      is_partial,
+                     own_members=None,
                      extended_attributes=None,
                      code_generator_info=None,
                      component=None,
                      debug_info=None):
+            assert isinstance(is_partial, bool)
+            assert isinstance(own_members, (list, tuple)) and all(
+                isinstance(member, DictionaryMember.IR)
+                for member in own_members)
+
             kind = (IdentifierIRMap.IR.Kind.PARTIAL_DICTIONARY
                     if is_partial else IdentifierIRMap.IR.Kind.DICTIONARY)
             IdentifierIRMap.IR.__init__(self, identifier=identifier, kind=kind)
@@ -33,6 +42,8 @@
             WithComponent.__init__(self, component)
             WithDebugInfo.__init__(self, debug_info)
 
+            self.own_members = own_members
+
     @property
     def inherited_dictionary(self):
         """
@@ -65,6 +76,32 @@
 
 
 class DictionaryMember(IdlMember):
+    class IR(WithIdentifier, WithExtendedAttributes, WithCodeGeneratorInfo,
+             WithComponent, WithDebugInfo):
+        def __init__(self,
+                     identifier,
+                     idl_type=None,
+                     is_required=False,
+                     default_value=None,
+                     extended_attributes=None,
+                     code_generator_info=None,
+                     component=None,
+                     debug_info=None):
+            assert isinstance(idl_type, IdlType)
+            assert isinstance(is_required, bool)
+            assert default_value is None or isinstance(default_value,
+                                                       DefaultValue)
+
+            WithIdentifier.__init__(self, identifier)
+            WithExtendedAttributes.__init__(self, extended_attributes)
+            WithCodeGeneratorInfo.__init__(self, code_generator_info)
+            WithComponent.__init__(self, component)
+            WithDebugInfo.__init__(self, debug_info)
+
+            self.idl_type = idl_type
+            self.is_required = is_required
+            self.default_value = default_value
+
     @property
     def idl_type(self):
         """
diff --git a/third_party/blink/renderer/bindings/scripts/web_idl/ecma_script_types.py b/third_party/blink/renderer/bindings/scripts/web_idl/ecma_script_types.py
deleted file mode 100644
index 8d2dd0c..0000000
--- a/third_party/blink/renderer/bindings/scripts/web_idl/ecma_script_types.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2017 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from .idl_types import TypeBase
-from .utilities import assert_no_extra_args
-
-
-class EcmaScriptType(TypeBase):
-    """
-    EcmascriptType represents an EcmaScript type, which appears in Chromium IDL files.
-    @param string type_name   : the identifier of a named definition to refer
-    @param bool   is_nullable : True if the type is nullable (optional)
-    """
-    _ALLOWED_TYPE_NAMES = frozenset(['Date'])
-
-    def __init__(self, **kwargs):
-        self._type_name = kwargs.pop('type_name')
-        self._is_nullable = kwargs.pop('is_nullable', False)
-        assert_no_extra_args(kwargs)
-
-        # Now we use only 'Date' type.
-        if self.type_name not in EcmaScriptType._ALLOWED_TYPE_NAMES:
-            raise ValueError('Unknown type name: %s' % self.type_name)
-
-    @property
-    def type_name(self):
-        return self._type_name
-
-    @property
-    def is_nullable(self):
-        return self._is_nullable
diff --git a/third_party/blink/renderer/bindings/scripts/web_idl/idl_types.py b/third_party/blink/renderer/bindings/scripts/web_idl/idl_types.py
index 9346479f..0a1cff9 100644
--- a/third_party/blink/renderer/bindings/scripts/web_idl/idl_types.py
+++ b/third_party/blink/renderer/bindings/scripts/web_idl/idl_types.py
@@ -5,7 +5,6 @@
 import exceptions
 from blinkbuild.name_style_converter import NameStyleConverter
 from .common import WithCodeGeneratorInfo
-from .common import WithComponent
 from .common import WithDebugInfo
 from .common import WithExtendedAttributes
 from .common import WithIdentifier
diff --git a/third_party/blink/renderer/bindings/scripts/web_idl/implements.py b/third_party/blink/renderer/bindings/scripts/web_idl/implements.py
deleted file mode 100644
index 4ac6b31..0000000
--- a/third_party/blink/renderer/bindings/scripts/web_idl/implements.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2017 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from .utilities import assert_no_extra_args
-
-
-# https://heycam.github.io/webidl/#idl-implements-statements
-class Implements(object):
-    """Implement class represents Implements statement in Web IDL spec."""
-
-    def __init__(self, **kwargs):
-        self._implementer_name = kwargs.pop('implementer_name')
-        self._implementee_name = kwargs.pop('implementee_name')
-        assert_no_extra_args(kwargs)
-
-        if self.implementer_name == self.implementee_name:
-            raise ValueError('Implements cannot refer same identifiers: %s' % self.implementer_name)
-
-    @property
-    def implementer_name(self):
-        return self._implementer_name
-
-    @property
-    def implementee_name(self):
-        return self._implementee_name
diff --git a/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py b/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py
index 1eab6fc..40beebc 100644
--- a/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py
+++ b/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py
@@ -2,132 +2,339 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+try:
+    import _pickle as pickle
+except ImportError:
+    try:
+        import cPickle as pickle
+    except ImportError:
+        import pickle
+
 import idl_parser
-import utilities
+from .callback_function import CallbackFunction
+from .callback_interface import CallbackInterface
 from .common import DebugInfo
+from .dictionary import Dictionary
+from .dictionary import DictionaryMember
+from .enumeration import Enumeration
+from .extended_attribute import ExtendedAttributes
+from .idl_types import AnnotatedType
+from .idl_types import FrozenArrayType
+from .idl_types import NullableType
+from .idl_types import PromiseType
+from .idl_types import RecordType
+from .idl_types import ReferenceType
+from .idl_types import SequenceType
+from .idl_types import SimpleType
+from .idl_types import UnionType
+from .includes import Includes
 from .interface import Interface
 from .namespace import Namespace
-from .dictionary import Dictionary
-from .callback_interface import CallbackInterface
-from .callback_function import CallbackFunction
-from .enumeration import Enumeration
 from .typedef import Typedef
-from .includes import Includes
+from .values import DefaultValue
 
 
-def load_and_register_idl_definitions(filepaths, ir_map):
+def load_and_register_idl_definitions(
+        filepaths, register_ir, create_ref_to_idl_type, create_ref_to_idl_def):
     """
-    Registers IDL definitions' IRs into a IDL compiler
+    Reads ASTs from |filepaths| and builds IRs from ASTs.
 
-    Load ASTs from files, create IRs, and registers them into |ir_map|.
+    Args:
+        filepaths: Paths to pickle files that store AST nodes.
+        register_ir: A callback function that registers the argument as an
+            IR.
+        create_ref_to_idl_type: A callback function that creates a reference
+            to an IdlType from the given identifier.
+        create_ref_to_idl_def: A callback function that creates a reference
+            to an IDL definition from the given identifier.
     """
-    asts_grouped_by_component = utilities.read_pickle_files(filepaths)
-    for asts_per_component in asts_grouped_by_component:
-        component = asts_per_component.component
-        for file_node in asts_per_component.asts:
-            assert isinstance(file_node, idl_parser.idl_node.IDLNode)
-            for definition_node in file_node.GetChildren():
-                idl_definition = _convert_ast(component, definition_node)
-                ir_map.register(idl_definition)
+    assert callable(register_ir)
+
+    for filepath in filepaths:
+        with open(filepath) as pickle_file:
+            asts_per_component = pickle.load(pickle_file)
+            component = asts_per_component.component
+            builder = _IRBuilder(component, create_ref_to_idl_type,
+                                 create_ref_to_idl_def)
+
+            for file_node in asts_per_component.asts:
+                assert isinstance(file_node, idl_parser.idl_node.IDLNode)
+                assert file_node.GetClass() == 'File'
+
+                for top_level_node in file_node.GetChildren():
+                    register_ir(builder.build_top_level_def(top_level_node))
 
 
-def _convert_ast(component, ast):
-    def build_interface(node):
+class _IRBuilder(object):
+    def __init__(self, component, create_ref_to_idl_type,
+                 create_ref_to_idl_def):
+        """
+        Args:
+            component: A Component to which the built IRs are associated.
+            create_ref_to_idl_type: A callback function that creates a reference
+                to an IdlType from the given identifier.
+            create_ref_to_idl_def: A callback function that creates a reference
+                to an IDL definition from the given identifier.
+        """
+        assert callable(create_ref_to_idl_type)
+        assert callable(create_ref_to_idl_def)
+
+        self.component = component
+        self.create_ref_to_idl_type = create_ref_to_idl_type
+        self.create_ref_to_idl_def = create_ref_to_idl_def
+
+    def build_top_level_def(self, node):
+        build_functions = {
+            'Callback': self._build_callback_function,
+            'Dictionary': self._build_dictionary,
+            'Enum': self._build_enumeration,
+            'Includes': self._build_includes,
+            'Interface': self._build_interface,
+            'Namespace': self._build_namespace,
+            'Typedef': self._build_typedef,
+        }
+        return build_functions[node.GetClass()](node)
+
+    # Builder functions for top-level definitions
+
+    def _build_interface(self, node):
         if node.GetProperty('CALLBACK'):
-            return build_callback_interface(node)
+            return self._build_callback_interface(node)
 
         interface = Interface.IR(
             identifier=node.GetName(),
             is_partial=bool(node.GetProperty('PARTIAL')),
             is_mixin=bool(node.GetProperty('MIXIN')),
-            component=component,
-            debug_info=_build_debug_info(node))
+            component=self.component,
+            debug_info=self._build_debug_info(node))
         # TODO(peria): Build members and register them in |interface|
         return interface
 
-    def build_namespace(node):
+    def _build_namespace(self, node):
         namespace = Namespace.IR(
             identifier=node.GetName(),
             is_partial=bool(node.GetProperty('PARTIAL')),
-            component=component,
-            debug_info=_build_debug_info(node))
+            component=self.component,
+            debug_info=self._build_debug_info(node))
         # TODO(peria): Build members and register them in |namespace|
         return namespace
 
-    def build_dictionary(node):
+    def _build_dictionary(self, node):
+        child_nodes = list(node.GetChildren())
+        extended_attributes = self._take_extended_attributes(child_nodes)
+        # TODO(yukishiino): Implement dictionary inheritance.
+        _ = self._take_inheritance(child_nodes)
+        own_members = [
+            self._build_dictionary_member(child) for child in child_nodes
+        ]
+
         dictionary = Dictionary.IR(
             identifier=node.GetName(),
             is_partial=bool(node.GetProperty('PARTIAL')),
-            component=component,
-            debug_info=_build_debug_info(node))
-        # TODO(peria): Build members and register them in |dictionary|
+            own_members=own_members,
+            extended_attributes=extended_attributes,
+            component=self.component,
+            debug_info=self._build_debug_info(node))
         return dictionary
 
-    def build_callback_interface(node):
+    def _build_dictionary_member(self, node):
+        assert node.GetClass() == 'Key'
+
+        child_nodes = list(node.GetChildren())
+        idl_type = self._take_type(child_nodes)
+        default_value = self._take_default_value(child_nodes)
+        extended_attributes = self._take_extended_attributes(child_nodes)
+        assert len(child_nodes) == 0
+
+        return DictionaryMember.IR(
+            identifier=node.GetName(),
+            idl_type=idl_type,
+            is_required=bool(node.GetProperty('REQUIRED')),
+            default_value=default_value,
+            extended_attributes=extended_attributes,
+            component=self.component,
+            debug_info=self._build_debug_info(node))
+
+    def _build_callback_interface(self, node):
         callback_interface = CallbackInterface.IR(
             identifier=node.GetName(),
-            component=component,
-            debug_info=_build_debug_info(node))
+            component=self.component,
+            debug_info=self._build_debug_info(node))
         # TODO(peria): Build members and register them in |callback_interface|
         return callback_interface
 
-    def build_callback_function(node):
+    def _build_callback_function(self, node):
         callback_function = CallbackFunction.IR(
             identifier=node.GetName(),
-            component=component,
-            debug_info=_build_debug_info(node))
+            component=self.component,
+            debug_info=self._build_debug_info(node))
         # TODO(peria): Build members and register them in |callback_function|
         return callback_function
 
-    def build_enumeration(node):
+    def _build_enumeration(self, node):
         enumeration = Enumeration.IR(
             identifier=node.GetName(),
             values=[child.GetName() for child in node.GetChildren()],
-            component=component,
-            debug_info=_build_debug_info(node))
+            component=self.component,
+            debug_info=self._build_debug_info(node))
         return enumeration
 
-    def build_typedef(node):
+    def _build_typedef(self, node):
+        child_nodes = list(node.GetChildren())
+        idl_type = self._take_type(child_nodes)
+        assert len(child_nodes) == 0
+
         typedef = Typedef.IR(
             identifier=node.GetName(),
-            idl_type=dispatch_to_build_function(node.GetChildren()[0]),
-            component=component,
-            debug_info=_build_debug_info(node))
+            idl_type=idl_type,
+            component=self.component,
+            debug_info=self._build_debug_info(node))
         return typedef
 
-    def build_includes(node):
+    def _build_includes(self, node):
         includes = Includes.IR(
             interface_identifier=node.GetName(),
             mixin_identifier=node.GetProperty('REFERENCE'),
-            component=component,
-            debug_info=_build_debug_info(node))
+            component=self.component,
+            debug_info=self._build_debug_info(node))
         return includes
 
-    def dispatch_to_build_function(node):
-        node_class = node.GetClass()
-        # TODO(peria): Drop this if branch returning None, when all the build
-        # functions get implemented.  It is only to avoid a build error in CQ.
-        if node_class not in build_functions:
-            return None
-        assert node_class in build_functions, '{} is unknown node class.'.format(
-            node_class)
-        return build_functions[node_class](node)
+    # Helper functions sorted alphabetically
 
-    build_functions = {
-        'Callback': build_callback_function,
-        'Dictionary': build_dictionary,
-        'Enum': build_enumeration,
-        'Includes': build_includes,
-        'Interface': build_interface,
-        'Namespace': build_namespace,
-        'Typedef': build_typedef,
-    }
-    return dispatch_to_build_function(ast)
+    def _build_debug_info(self, node):
+        return DebugInfo(
+            location=DebugInfo.Location(
+                filepath=node.GetProperty('FILENAME'),
+                line_number=node.GetProperty('LINENO'),
+                column_number=node.GetProperty('POSITION')))
 
+    def _build_default_value(self, node):
+        assert node.GetClass() == 'Default'
+        return DefaultValue()
 
-def _build_debug_info(node):
-    return DebugInfo(
-        location=DebugInfo.Location(
-            filepath=node.GetProperty('FILENAME'),
-            line_number=node.GetProperty('LINENO'),
-            column_number=node.GetProperty('POSITION')))
+    def _build_extended_attributes(self, node):
+        assert node.GetClass() == 'ExtAttributes'
+        return ExtendedAttributes()
+
+    def _build_inheritance(self, node):
+        assert node.GetClass() == 'Inherit'
+        return None
+
+    def _build_type(self, node):
+        def build_maybe_inner_type(node):
+            return self._build_type_internal(node.GetChildren()[0])
+
+        def build_maybe_nullable_type(node):
+            maybe_inner_type = build_maybe_inner_type(node)
+            if node.GetProperty('NULLABLE'):
+                return NullableType(maybe_inner_type)
+            return maybe_inner_type
+
+        def build_maybe_annotated_type(node):
+            type_nodes = list(node.GetChildren())
+            extended_attributes = self._take_extended_attributes(type_nodes)
+            assert len(type_nodes) == 1
+            maybe_inner_type = build_maybe_nullable_type(node)
+            if extended_attributes:
+                return AnnotatedType(
+                    inner_type=maybe_inner_type,
+                    extended_attributes=extended_attributes)
+            return maybe_inner_type
+
+        assert node.GetClass() == 'Type'
+        return build_maybe_annotated_type(node)
+
+    def _build_type_internal(self, node):
+        """
+        Args:
+            node: The body node of the type definition, which is supposed to be
+                the first child of a 'Type' node.
+        """
+
+        def build_frozen_array_type(node):
+            assert len(node.GetChildren()) == 1
+            return FrozenArrayType(
+                element_type=self._build_type(node.GetChildren()[0]),
+                debug_info=self._build_debug_info(node))
+
+        def build_promise_type(node):
+            assert len(node.GetChildren()) == 1
+            return PromiseType(
+                result_type=self._build_type(node.GetChildren()[0]),
+                debug_info=self._build_debug_info(node))
+
+        def build_union_type(node):
+            union_type = UnionType(
+                member_types=map(self._build_type, node.GetChildren()))
+            return union_type
+
+        def build_record_type(node):
+            key_node, value_node = node.GetChildren()
+            return RecordType(
+                # idl_parser doesn't produce a 'Type' node for the key type,
+                # hence we need to skip one level.
+                key_type=self._build_type_internal(key_node),
+                value_type=self._build_type(value_node),
+                debug_info=self._build_debug_info(node))
+
+        def build_reference_type(node):
+            identifier = node.GetName()
+            ref_type = ReferenceType(
+                ref_to_idl_type=self.create_ref_to_idl_type(identifier),
+                debug_info=self._build_debug_info(node))
+            return ref_type
+
+        def build_sequence_type(node):
+            return SequenceType(
+                element_type=self._build_type(node.GetChildren()[0]),
+                debug_info=self._build_debug_info(node))
+
+        def build_simple_type(node):
+            type_name = node.GetName()
+            if type_name is None:
+                assert node.GetClass() == 'Any'
+                type_name = node.GetClass().lower()
+            if node.GetProperty('UNRESTRICTED'):
+                type_name = 'unrestricted ' + type_name
+            return SimpleType(
+                name=type_name, debug_info=self._build_debug_info(node))
+
+        build_functions = {
+            'Any': build_simple_type,
+            'FrozenArray': build_frozen_array_type,
+            'PrimitiveType': build_simple_type,
+            'Promise': build_promise_type,
+            'Record': build_record_type,
+            'Sequence': build_sequence_type,
+            'StringType': build_simple_type,
+            'Typeref': build_reference_type,
+            'UnionType': build_union_type,
+        }
+        return build_functions[node.GetClass()](node)
+
+    def _take_and_build(self, node_class, build_func, node_list):
+        """
+        Takes a node of |node_class| from |node_list| if any, and then builds
+        and returns an IR.  The processed node is removed from |node_list|.
+        Returns None if not found.
+        """
+        for node in node_list:
+            if node.GetClass() == node_class:
+                node_list.remove(node)
+                return build_func(node)
+        return None
+
+    def _take_default_value(self, node_list):
+        return self._take_and_build('Default', self._build_default_value,
+                                    node_list)
+
+    def _take_extended_attributes(self, node_list):
+        return self._take_and_build('ExtAttributes',
+                                    self._build_extended_attributes, node_list)
+
+    def _take_inheritance(self, node_list):
+        return self._take_and_build('Inherit', self._build_inheritance,
+                                    node_list)
+
+    def _take_type(self, node_list):
+        return self._take_and_build('Type', self._build_type, node_list)
diff --git a/third_party/blink/renderer/bindings/scripts/web_idl/literal_token.py b/third_party/blink/renderer/bindings/scripts/web_idl/literal_token.py
deleted file mode 100644
index f395022..0000000
--- a/third_party/blink/renderer/bindings/scripts/web_idl/literal_token.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2017 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from .utilities import assert_no_extra_args
-
-
-class LiteralToken(object):
-    """Literal class represents literal tokens in Web IDL. It appears
-    - default values of dictionary members
-    - default values of arguments in operations
-    - constant values in interfaces (string and [] are not allowed)
-    - arguments of some extended attributes
-    """
-
-    def __init__(self, **kwargs):
-        self._type_name = kwargs.pop('type_name')
-        self._value = kwargs.pop('value')
-        assert_no_extra_args(kwargs)
-
-    @property
-    def type_name(self):
-        return self._type_name
-
-    @property
-    def value(self):
-        return self._value
-
-NULL_TOKEN = LiteralToken(type_name='NULL', value='null')
diff --git a/third_party/blink/renderer/controller/blink_initializer.cc b/third_party/blink/renderer/controller/blink_initializer.cc
index 11186ec..1d1e099 100644
--- a/third_party/blink/renderer/controller/blink_initializer.cc
+++ b/third_party/blink/renderer/controller/blink_initializer.cc
@@ -34,6 +34,7 @@
 
 #include "build/build_config.h"
 #include "third_party/blink/public/common/experiments/memory_ablation_experiment.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/platform/interface_registry.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/web/blink.h"
@@ -187,9 +188,12 @@
       &DevToolsFrontendImpl::BindMojoRequest, WrapWeakPersistent(&frame)));
   frame.GetInterfaceRegistry()->AddInterface(WTF::BindRepeating(
       &LocalFrame::PauseSubresourceLoading, WrapWeakPersistent(&frame)));
-  frame.GetInterfaceRegistry()->AddInterface(
-      WTF::BindRepeating(&LocalFrame::BindPreviewsResourceLoadingHintsRequest,
-                         WrapWeakPersistent(&frame)));
+  if (!base::FeatureList::IsEnabled(
+          blink::features::kSendPreviewsLoadingHintsBeforeCommit)) {
+    frame.GetInterfaceRegistry()->AddInterface(
+        WTF::BindRepeating(&LocalFrame::BindPreviewsResourceLoadingHintsRequest,
+                           WrapWeakPersistent(&frame)));
+  }
   ModulesInitializer::InitLocalFrame(frame);
 }
 
diff --git a/third_party/blink/renderer/core/animation/string_keyframe.cc b/third_party/blink/renderer/core/animation/string_keyframe.cc
index f43b0f77..3618415 100644
--- a/third_party/blink/renderer/core/animation/string_keyframe.cc
+++ b/third_party/blink/renderer/core/animation/string_keyframe.cc
@@ -8,6 +8,8 @@
 #include "third_party/blink/renderer/core/animation/animation_input_helpers.h"
 #include "third_party/blink/renderer/core/animation/css/css_animations.h"
 #include "third_party/blink/renderer/core/css/css_custom_property_declaration.h"
+#include "third_party/blink/renderer/core/css/css_keyframe_shorthand_value.h"
+#include "third_party/blink/renderer/core/css/parser/css_parser.h"
 #include "third_party/blink/renderer/core/css/resolver/style_resolver.h"
 #include "third_party/blink/renderer/core/style_property_shorthand.h"
 #include "third_party/blink/renderer/core/svg/svg_element.h"
@@ -15,8 +17,39 @@
 
 namespace blink {
 
+namespace {
+
+// Returns handle for the given CSSProperty.
+// |value| is required only for custom properties.
+PropertyHandle ToPropertyHandle(const CSSProperty& property,
+                                const CSSValue* value) {
+  if (property.IDEquals(CSSPropertyID::kVariable)) {
+    return PropertyHandle(To<CSSCustomPropertyDeclaration>(*value).GetName());
+  } else {
+    return PropertyHandle(property, false);
+  }
+}
+
+const CSSValue* GetOrCreateCSSValueFrom(
+    const CSSProperty& property,
+    const MutableCSSPropertyValueSet& property_value_set) {
+  DCHECK_NE(property.PropertyID(), CSSPropertyID::kInvalid);
+  DCHECK_NE(property.PropertyID(), CSSPropertyID::kVariable);
+  if (!property.IsShorthand())
+    return property_value_set.GetPropertyCSSValue(property.PropertyID());
+
+  // For shorthands create a special wrapper value, |CSSKeyframeShorthandValue|,
+  // which can be used to correctly serialize it given longhands that are
+  // present in this set.
+  return MakeGarbageCollected<CSSKeyframeShorthandValue>(
+      property_value_set.ImmutableCopyIfNeeded());
+}
+
+}  // namespace
+
 StringKeyframe::StringKeyframe(const StringKeyframe& copy_from)
     : Keyframe(copy_from.offset_, copy_from.composite_, copy_from.easing_),
+      input_properties_(copy_from.input_properties_),
       css_property_map_(copy_from.css_property_map_->MutableCopy()),
       presentation_attribute_map_(
           copy_from.presentation_attribute_map_->MutableCopy()),
@@ -29,30 +62,67 @@
     SecureContextMode secure_context_mode,
     StyleSheetContents* style_sheet_contents) {
   bool is_animation_tainted = true;
-  return css_property_map_->SetProperty(
+  MutableCSSPropertyValueSet::SetResult result = css_property_map_->SetProperty(
       property_name, registry, value, false, secure_context_mode,
       style_sheet_contents, is_animation_tainted);
+
+  const CSSValue* parsed_value =
+      css_property_map_->GetPropertyCSSValue(property_name);
+
+  if (result.did_parse && parsed_value) {
+    // Per specification we only keep properties around which are parsable.
+    input_properties_.Set(PropertyHandle(property_name), *parsed_value);
+  }
+
+  return result;
 }
 
 MutableCSSPropertyValueSet::SetResult StringKeyframe::SetCSSPropertyValue(
-    CSSPropertyID property,
+    CSSPropertyID property_id,
     const String& value,
     SecureContextMode secure_context_mode,
     StyleSheetContents* style_sheet_contents) {
-  DCHECK_NE(property, CSSPropertyID::kInvalid);
-  if (CSSAnimations::IsAnimationAffectingProperty(CSSProperty::Get(property))) {
+  DCHECK_NE(property_id, CSSPropertyID::kInvalid);
+  DCHECK_NE(property_id, CSSPropertyID::kVariable);
+  const CSSProperty& property = CSSProperty::Get(property_id);
+
+  if (CSSAnimations::IsAnimationAffectingProperty(property)) {
     bool did_parse = true;
     bool did_change = false;
     return MutableCSSPropertyValueSet::SetResult{did_parse, did_change};
   }
-  return css_property_map_->SetProperty(
-      property, value, false, secure_context_mode, style_sheet_contents);
+
+  // Use a temporary set for shorthands so that its longhands are stored
+  // separately and can later be used to construct a special shorthand value.
+  bool use_temporary_set = property.IsShorthand();
+
+  auto* property_value_set =
+      use_temporary_set ? MakeGarbageCollected<MutableCSSPropertyValueSet>(
+                              css_property_map_->CssParserMode())
+                        : css_property_map_.Get();
+
+  MutableCSSPropertyValueSet::SetResult result =
+      property_value_set->SetProperty(
+          property_id, value, false, secure_context_mode, style_sheet_contents);
+
+  const CSSValue* parsed_value =
+      GetOrCreateCSSValueFrom(property, *property_value_set);
+  if (result.did_parse && parsed_value) {
+    // Per specification we only keep properties around which are parsable.
+    input_properties_.Set(PropertyHandle(property), parsed_value);
+  }
+
+  if (use_temporary_set)
+    css_property_map_->MergeAndOverrideOnConflict(property_value_set);
+
+  return result;
 }
 
 void StringKeyframe::SetCSSPropertyValue(const CSSProperty& property,
                                          const CSSValue& value) {
   DCHECK_NE(property.PropertyID(), CSSPropertyID::kInvalid);
   DCHECK(!CSSAnimations::IsAnimationAffectingProperty(property));
+  input_properties_.Set(ToPropertyHandle(property, &value), value);
   css_property_map_->SetProperty(property.PropertyID(), value, false);
 }
 
@@ -85,13 +155,7 @@
     DCHECK(!property.IsShorthand())
         << "Web Animations: Encountered unexpanded shorthand CSS property ("
         << static_cast<int>(property.PropertyID()) << ").";
-    if (property.IDEquals(CSSPropertyID::kVariable)) {
-      properties.insert(PropertyHandle(
-          To<CSSCustomPropertyDeclaration>(property_reference.Value())
-              .GetName()));
-    } else {
-      properties.insert(PropertyHandle(property, false));
-    }
+    properties.insert(ToPropertyHandle(property, &property_reference.Value()));
   }
 
   for (unsigned i = 0; i < presentation_attribute_map_->PropertyCount(); ++i) {
@@ -117,25 +181,41 @@
 void StringKeyframe::AddKeyframePropertiesToV8Object(
     V8ObjectBuilder& object_builder) const {
   Keyframe::AddKeyframePropertiesToV8Object(object_builder);
+  for (const auto& entry : input_properties_) {
+    const PropertyHandle& property_handle = entry.key;
+    const CSSValue* property_value = entry.value;
+    String property_name =
+        AnimationInputHelpers::PropertyHandleToKeyframeAttribute(
+            property_handle);
+
+    object_builder.Add(property_name, property_value->CssText());
+  }
+
+  // Legacy code path for SVG and Presentation attributes.
+  //
+  // TODO(816956): Move these to input_properties_ and remove this. Note that
+  // this code path is not well tested given that removing it didn't cause any
+  // test failures.
   for (const PropertyHandle& property : Properties()) {
+    if (property.IsCSSProperty())
+      continue;
+
     String property_name =
         AnimationInputHelpers::PropertyHandleToKeyframeAttribute(property);
-    String value;
-    if (property.IsCSSProperty()) {
-      value = CssPropertyValue(property).CssText();
-    } else if (property.IsPresentationAttribute()) {
+    String property_value;
+    if (property.IsPresentationAttribute()) {
       const auto& attribute = property.PresentationAttribute();
-      value = PresentationAttributeValue(attribute).CssText();
+      property_value = PresentationAttributeValue(attribute).CssText();
     } else {
       DCHECK(property.IsSVGAttribute());
-      value = SvgPropertyValue(property.SvgAttribute());
+      property_value = SvgPropertyValue(property.SvgAttribute());
     }
-
-    object_builder.Add(property_name, value);
+    object_builder.Add(property_name, property_value);
   }
 }
 
 void StringKeyframe::Trace(Visitor* visitor) {
+  visitor->Trace(input_properties_);
   visitor->Trace(css_property_map_);
   visitor->Trace(presentation_attribute_map_);
   Keyframe::Trace(visitor);
diff --git a/third_party/blink/renderer/core/animation/string_keyframe.h b/third_party/blink/renderer/core/animation/string_keyframe.h
index f8748808..0699476 100644
--- a/third_party/blink/renderer/core/animation/string_keyframe.h
+++ b/third_party/blink/renderer/core/animation/string_keyframe.h
@@ -165,6 +165,28 @@
 
   bool IsStringKeyframe() const override { return true; }
 
+  // The unresolved property and their values. This is needed for correct
+  // implementation of KeyframeEffect.getKeyframes(). We use a single list for
+  // CSS, SVG properties. The only requirement for a property value to be
+  // in this list is that it parses correctly.
+  //
+  // See: https://drafts.csswg.org/web-animations/#keyframes-section
+  HeapHashMap<PropertyHandle, Member<const CSSValue>> input_properties_;
+
+  // The resolved properties are computed from unresolved ones applying these
+  // steps:
+  //  1. Resolve conflicts when multiple properties map to same underlying
+  //      one (e.g., margin, margin-top)
+  //  2. Expand shorthands to longhands
+  //  3. Expand logical properties to physical ones
+  //
+  // See:
+  // https://drafts.csswg.org/web-animations/#calculating-computed-keyframes
+  //
+  // TODO(816956): AFAICT we don't do (1) at the moment rather we parse and feed
+  // values into the MutableCSSPropertyValueSet which keeps replacing values as
+  // they come in. I am not sure if it leads to the same conflict resolution
+  // that web-animation expects. This needs more investigation.
   Member<MutableCSSPropertyValueSet> css_property_map_;
   Member<MutableCSSPropertyValueSet> presentation_attribute_map_;
   HashMap<const QualifiedName*, String> svg_attribute_map_;
diff --git a/third_party/blink/renderer/core/css/BUILD.gn b/third_party/blink/renderer/core/css/BUILD.gn
index 5443da6..09c9453 100644
--- a/third_party/blink/renderer/core/css/BUILD.gn
+++ b/third_party/blink/renderer/core/css/BUILD.gn
@@ -100,6 +100,8 @@
     "css_invalid_variable_value.h",
     "css_keyframe_rule.cc",
     "css_keyframe_rule.h",
+    "css_keyframe_shorthand_value.cc",
+    "css_keyframe_shorthand_value.h",
     "css_keyframes_rule.cc",
     "css_keyframes_rule.h",
     "css_layout_function_value.cc",
diff --git a/third_party/blink/renderer/core/css/css_keyframe_shorthand_value.cc b/third_party/blink/renderer/core/css/css_keyframe_shorthand_value.cc
new file mode 100644
index 0000000..a5d33566
--- /dev/null
+++ b/third_party/blink/renderer/core/css/css_keyframe_shorthand_value.cc
@@ -0,0 +1,32 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/core/css/css_keyframe_shorthand_value.h"
+
+namespace blink {
+
+CSSKeyframeShorthandValue::CSSKeyframeShorthandValue(
+    ImmutableCSSPropertyValueSet* properties)
+    : CSSValue(kKeyframeShorthandClass), properties_(properties) {}
+
+String CSSKeyframeShorthandValue::CustomCSSText() const {
+  // All property/value pairs belong to the same shorthand so we grab the id
+  // from the first one.
+  CSSPropertyID my_shorthand = properties_->PropertyAt(0).ShorthandID();
+#if DCHECK_IS_ON()
+  for (unsigned i = 0; i < properties_->PropertyCount(); i++) {
+    DCHECK_EQ(my_shorthand, properties_->PropertyAt(i).ShorthandID())
+        << "These are not the longhands you're looking for.";
+  }
+#endif
+
+  return properties_->GetPropertyValue(my_shorthand);
+}
+
+void CSSKeyframeShorthandValue::TraceAfterDispatch(blink::Visitor* visitor) {
+  visitor->Trace(properties_);
+  CSSValue::TraceAfterDispatch(visitor);
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/css/css_keyframe_shorthand_value.h b/third_party/blink/renderer/core/css/css_keyframe_shorthand_value.h
new file mode 100644
index 0000000..bcc149c4
--- /dev/null
+++ b/third_party/blink/renderer/core/css/css_keyframe_shorthand_value.h
@@ -0,0 +1,62 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSS_KEYFRAME_SHORTHAND_VALUE_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSS_KEYFRAME_SHORTHAND_VALUE_H_
+
+#include "third_party/blink/renderer/core/css/css_value.h"
+#include "third_party/blink/renderer/platform/wtf/casting.h"
+
+#include "third_party/blink/renderer/core/css/style_property_serializer.h"
+
+namespace blink {
+
+// The special value is used to keep around individual longhand css
+// property/values that resulted from parsing a shorthand value. This way we can
+// reconstruct the shorthand back from them.
+//
+// Context:
+//
+// Web Animation specs requires that we keep around and return a parsed
+// shorthand name/value pair if they are present in keyframes. However Blink css
+// parser does not keep around shorthands and instead produces longhands.
+// Instead of updating the css parser engine to preserve shorthands (which is a
+// large undertaking) we are taking a shortcut here that allows us to use
+// existing logic that enables serialization of a shorthand given its longhands
+// i.e., `StylePropertySerializer`. To this end, this class is be used to wrap
+// and store longhands produced by a single shorthand as part of animation
+// keyframe logic.
+//
+// For more information see:
+//  - `StringKeyframe::SetCSSPropertyValue()`
+//  - https://drafts.csswg.org/web-animations/#process-a-keyframes-argument
+
+class CSSKeyframeShorthandValue : public CSSValue {
+ public:
+  // Assumes that all property/value pairs that are present in the input set are
+  // longhands for the same shorthand property/value pair.
+  CSSKeyframeShorthandValue(ImmutableCSSPropertyValueSet*);
+
+  String CustomCSSText() const;
+
+  bool Equals(const CSSKeyframeShorthandValue& other) const {
+    return properties_ == other.properties_;
+  }
+
+  void TraceAfterDispatch(blink::Visitor*);
+
+ private:
+  Member<ImmutableCSSPropertyValueSet> properties_;
+};
+
+template <>
+struct DowncastTraits<CSSKeyframeShorthandValue> {
+  static bool AllowFrom(const CSSValue& value) {
+    return value.IsShorthandWrapperValue();
+  }
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CSS_KEYFRAME_SHORTHAND_VALUE_H_
diff --git a/third_party/blink/renderer/core/css/css_math_expression_node.cc b/third_party/blink/renderer/core/css/css_math_expression_node.cc
index 78af922..ff74c1a0 100644
--- a/third_party/blink/renderer/core/css/css_math_expression_node.cc
+++ b/third_party/blink/renderer/core/css/css_math_expression_node.cc
@@ -116,17 +116,9 @@
     case CSSPrimitiveValue::UnitType::kFraction:
     case CSSPrimitiveValue::UnitType::kInteger:
       return true;
-    case CSSPrimitiveValue::UnitType::kUnknown:
-    case CSSPrimitiveValue::UnitType::kCalc:
-    case CSSPrimitiveValue::UnitType::kCalcPercentageWithNumber:
-    case CSSPrimitiveValue::UnitType::kCalcPercentageWithLength:
-    case CSSPrimitiveValue::UnitType::kCalcLengthWithNumber:
-    case CSSPrimitiveValue::UnitType::kCalcPercentageWithLengthAndNumber:
-    case CSSPrimitiveValue::UnitType::kQuirkyEms:
+    default:
       return false;
-  };
-  NOTREACHED();
-  return false;
+  }
 }
 
 // ------ Start of CSSMathExpressionNumericLiteral member functions ------
diff --git a/third_party/blink/renderer/core/css/css_math_function_value.cc b/third_party/blink/renderer/core/css/css_math_function_value.cc
index 8a47eecf..8fac2b7 100644
--- a/third_party/blink/renderer/core/css/css_math_function_value.cc
+++ b/third_party/blink/renderer/core/css/css_math_function_value.cc
@@ -13,7 +13,6 @@
 
 struct SameSizeAsCSSMathFunctionValue : CSSPrimitiveValue {
   Member<void*> expression;
-  bool non_negative;
 };
 ASSERT_SIZE(CSSMathFunctionValue, SameSizeAsCSSMathFunctionValue);
 
@@ -24,9 +23,9 @@
 
 CSSMathFunctionValue::CSSMathFunctionValue(CSSMathExpressionNode* expression,
                                            ValueRange range)
-    : CSSPrimitiveValue(UnitType::kCalc, kMathFunctionClass),
-      expression_(expression),
-      non_negative_(range == kValueRangeNonNegative) {}
+    : CSSPrimitiveValue(kMathFunctionClass), expression_(expression) {
+  is_non_negative_math_function_ = range == kValueRangeNonNegative;
+}
 
 // static
 CSSMathFunctionValue* CSSMathFunctionValue::Create(
@@ -59,20 +58,11 @@
       return UnitType::kPercentage;
     case kCalcLength:
       return UnitType::kPixels;
-    case kCalcPercentNumber:
-      return UnitType::kCalcPercentageWithNumber;
-    case kCalcPercentLength:
-      return UnitType::kCalcPercentageWithLength;
-    case kCalcLengthNumber:
-      return UnitType::kCalcLengthWithNumber;
-    case kCalcPercentLengthNumber:
-      return UnitType::kCalcPercentageWithLengthAndNumber;
     case kCalcTime:
       return UnitType::kMilliseconds;
-    case kCalcOther:
+    default:
       return UnitType::kUnknown;
   }
-  return UnitType::kUnknown;
 }
 
 bool CSSMathFunctionValue::MayHaveRelativeUnit() const {
@@ -151,7 +141,13 @@
 }
 
 double CSSMathFunctionValue::ClampToPermittedRange(double value) const {
-  return non_negative_ && value < 0 ? 0 : value;
+  return IsNonNegative() && value < 0 ? 0 : value;
+}
+
+bool CSSMathFunctionValue::IsZero() const {
+  if (expression_->ResolvedUnitType() == UnitType::kUnknown)
+    return false;
+  return expression_->IsZero();
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/css_math_function_value.h b/third_party/blink/renderer/core/css/css_math_function_value.h
index acfb6e8..c4d8093 100644
--- a/third_party/blink/renderer/core/css/css_math_function_value.h
+++ b/third_party/blink/renderer/core/css/css_math_function_value.h
@@ -27,8 +27,7 @@
       const CSSToLengthConversionData& conversion_data) const {
     PixelsAndPercent value(0, 0);
     expression_->AccumulatePixelsAndPercent(conversion_data, value);
-    return CalculationValue::Create(
-        value, non_negative_ ? kValueRangeNonNegative : kValueRangeAll);
+    return CalculationValue::Create(value, PermittedValueRange());
   }
 
   UnitType TypeWithMathFunctionResolved() const;
@@ -37,10 +36,12 @@
   CalculationCategory Category() const { return expression_->Category(); }
   bool IsInt() const { return expression_->IsInteger(); }
   bool IsNegative() const { return expression_->DoubleValue() < 0; }
-  ValueRange PermittedValueRange() {
-    return non_negative_ ? kValueRangeNonNegative : kValueRangeAll;
+  ValueRange PermittedValueRange() const {
+    return IsNonNegative() ? kValueRangeNonNegative : kValueRangeAll;
   }
 
+  bool IsZero() const;
+
   // TODO(crbug.com/979895): Make sure these functions are called only when
   // the math expression resolves into a double value.
   double DoubleValue() const;
@@ -60,12 +61,11 @@
   void TraceAfterDispatch(blink::Visitor* visitor);
 
  private:
+  bool IsNonNegative() const { return is_non_negative_math_function_; }
+
   double ClampToPermittedRange(double) const;
 
   Member<CSSMathExpressionNode> expression_;
-
-  // TODO(crbug.com/979895): Move this flag to CSSValue for better packing.
-  bool non_negative_;
 };
 
 template <>
diff --git a/third_party/blink/renderer/core/css/css_numeric_literal_value.cc b/third_party/blink/renderer/core/css/css_numeric_literal_value.cc
index dee3667..24a06a03 100644
--- a/third_party/blink/renderer/core/css/css_numeric_literal_value.cc
+++ b/third_party/blink/renderer/core/css/css_numeric_literal_value.cc
@@ -22,8 +22,9 @@
 }
 
 CSSNumericLiteralValue::CSSNumericLiteralValue(double num, UnitType type)
-    : CSSPrimitiveValue(type, kNumericLiteralClass), num_(num) {
+    : CSSPrimitiveValue(kNumericLiteralClass), num_(num) {
   DCHECK(std::isfinite(num));
+  numeric_literal_unit_type_ = static_cast<unsigned>(type);
 }
 
 // static
diff --git a/third_party/blink/renderer/core/css/css_numeric_literal_value.h b/third_party/blink/renderer/core/css/css_numeric_literal_value.h
index 61b20d4..1988a91 100644
--- a/third_party/blink/renderer/core/css/css_numeric_literal_value.h
+++ b/third_party/blink/renderer/core/css/css_numeric_literal_value.h
@@ -18,6 +18,8 @@
 
   CSSNumericLiteralValue(double num, UnitType type);
 
+  bool IsZero() const { return !DoubleValue(); }
+
   double DoubleValue() const { return num_; }
   double ComputeSeconds() const;
   double ComputeDegrees() const;
diff --git a/third_party/blink/renderer/core/css/css_primitive_value.cc b/third_party/blink/renderer/core/css/css_primitive_value.cc
index 60dc472..f5ed6bf 100644
--- a/third_party/blink/renderer/core/css/css_primitive_value.cc
+++ b/third_party/blink/renderer/core/css/css_primitive_value.cc
@@ -94,16 +94,19 @@
 }
 
 CSSPrimitiveValue::UnitType CSSPrimitiveValue::TypeWithCalcResolved() const {
-  if (GetType() != UnitType::kCalc)
+  if (IsNumericLiteralValue())
     return GetType();
   return To<CSSMathFunctionValue>(this)->TypeWithMathFunctionResolved();
 }
 
-CSSPrimitiveValue::CSSPrimitiveValue(UnitType unit_type, ClassType class_type)
-    : CSSValue(class_type) {
-  primitive_unit_type_ = static_cast<unsigned>(unit_type);
+bool CSSPrimitiveValue::IsCalculatedPercentageWithLength() const {
+  return IsCalculated() &&
+         To<CSSMathFunctionValue>(this)->Category() == kCalcPercentLength;
 }
 
+CSSPrimitiveValue::CSSPrimitiveValue(ClassType class_type)
+    : CSSValue(class_type) {}
+
 // static
 CSSPrimitiveValue* CSSPrimitiveValue::CreateFromLength(const Length& length,
                                                        float zoom) {
@@ -298,6 +301,11 @@
                         : To<CSSNumericLiteralValue>(this)->DoubleValue();
 }
 
+bool CSSPrimitiveValue::IsZero() const {
+  return IsCalculated() ? To<CSSMathFunctionValue>(this)->IsZero()
+                        : To<CSSNumericLiteralValue>(this)->IsZero();
+}
+
 CSSPrimitiveValue::UnitType CSSPrimitiveValue::CanonicalUnitTypeForCategory(
     UnitCategory category) {
   // The canonical unit type is chosen according to the way
@@ -462,12 +470,7 @@
       return "vmin";
     case UnitType::kViewportMax:
       return "vmax";
-    case UnitType::kUnknown:
-    case UnitType::kCalc:
-    case UnitType::kCalcPercentageWithNumber:
-    case UnitType::kCalcPercentageWithLength:
-    case UnitType::kCalcLengthWithNumber:
-    case UnitType::kCalcPercentageWithLengthAndNumber:
+    default:
       break;
   }
   NOTREACHED();
diff --git a/third_party/blink/renderer/core/css/css_primitive_value.h b/third_party/blink/renderer/core/css/css_primitive_value.h
index e168b88..a9f6d1f 100644
--- a/third_party/blink/renderer/core/css/css_primitive_value.h
+++ b/third_party/blink/renderer/core/css/css_primitive_value.h
@@ -106,14 +106,6 @@
     kFraction,
     kInteger,
 
-    // TODO(crbug.com/979895): Remove |kCalc|, and move/remove the remaining
-    // calc flags to CSSMathFunctionValue.
-    kCalc,
-    kCalcPercentageWithNumber,
-    kCalcPercentageWithLength,
-    kCalcLengthWithNumber,
-    kCalcPercentageWithLengthAndNumber,
-
     // This value is used to handle quirky margins in reflow roots (body, td,
     // and th) like WinIE. The basic idea is that a stylesheet can use the value
     // __qem (for quirky em) instead of em. When the quirky value is used, if
@@ -205,13 +197,8 @@
   static bool IsFrequency(UnitType unit) {
     return unit == UnitType::kHertz || unit == UnitType::kKilohertz;
   }
-  bool IsCalculated() const { return GetType() == UnitType::kCalc; }
-  bool IsCalculatedPercentageWithNumber() const {
-    return TypeWithCalcResolved() == UnitType::kCalcPercentageWithNumber;
-  }
-  bool IsCalculatedPercentageWithLength() const {
-    return TypeWithCalcResolved() == UnitType::kCalcPercentageWithLength;
-  }
+  bool IsCalculated() const { return IsMathFunctionValue(); }
+  bool IsCalculatedPercentageWithLength() const;
   static bool IsResolution(UnitType type) {
     return type >= UnitType::kDotsPerPixel &&
            type <= UnitType::kDotsPerCentimeter;
@@ -241,6 +228,8 @@
   // Converts to a Length (Fixed, Percent or Calculated)
   Length ConvertToLength(const CSSToLengthConversionData&) const;
 
+  bool IsZero() const;
+
   // TODO(crbug.com/979895): Make sure this functions are called only when
   // applicable: on a numeric literal, or on a calc() that can be resolved into
   // a single value without extra context (e.g., CSSToLengthConversionData).
@@ -275,7 +264,7 @@
   static UnitType LengthUnitTypeToUnitType(LengthUnitType);
 
  protected:
-  CSSPrimitiveValue(UnitType unit_type, ClassType class_type);
+  explicit CSSPrimitiveValue(ClassType class_type);
 
   // Code generated by css_primitive_value_unit_trie.cc.tmpl
   static UnitType StringToUnitType(const LChar*, unsigned length);
@@ -283,8 +272,9 @@
 
   double ComputeLengthDouble(const CSSToLengthConversionData&) const;
 
+  // TODO(crbug.com/979895): This should be moved to CSSNumericLiteralValue
   inline UnitType GetType() const {
-    return static_cast<UnitType>(primitive_unit_type_);
+    return static_cast<UnitType>(numeric_literal_unit_type_);
   }
 };
 
diff --git a/third_party/blink/renderer/core/css/css_value.cc b/third_party/blink/renderer/core/css/css_value.cc
index 36dc4c6..ef164597 100644
--- a/third_party/blink/renderer/core/css/css_value.cc
+++ b/third_party/blink/renderer/core/css/css_value.cc
@@ -53,6 +53,7 @@
 #include "third_party/blink/renderer/core/css/css_inherited_value.h"
 #include "third_party/blink/renderer/core/css/css_initial_value.h"
 #include "third_party/blink/renderer/core/css/css_invalid_variable_value.h"
+#include "third_party/blink/renderer/core/css/css_keyframe_shorthand_value.h"
 #include "third_party/blink/renderer/core/css/css_layout_function_value.h"
 #include "third_party/blink/renderer/core/css/css_math_function_value.h"
 #include "third_party/blink/renderer/core/css/css_numeric_literal_value.h"
@@ -224,6 +225,8 @@
         return CompareCSSValues<CSSRayValue>(*this, other);
       case kIdentifierClass:
         return CompareCSSValues<CSSIdentifierValue>(*this, other);
+      case kKeyframeShorthandClass:
+        return CompareCSSValues<CSSKeyframeShorthandValue>(*this, other);
       case kQuadClass:
         return CompareCSSValues<CSSQuadValue>(*this, other);
       case kReflectClass:
@@ -336,6 +339,8 @@
       return To<CSSRayValue>(this)->CustomCSSText();
     case kIdentifierClass:
       return To<CSSIdentifierValue>(this)->CustomCSSText();
+    case kKeyframeShorthandClass:
+      return To<CSSKeyframeShorthandValue>(this)->CustomCSSText();
     case kQuadClass:
       return To<CSSQuadValue>(this)->CustomCSSText();
     case kReflectClass:
@@ -480,6 +485,9 @@
     case kIdentifierClass:
       To<CSSIdentifierValue>(this)->~CSSIdentifierValue();
       return;
+    case kKeyframeShorthandClass:
+      To<CSSKeyframeShorthandValue>(this)->~CSSKeyframeShorthandValue();
+      return;
     case kQuadClass:
       To<CSSQuadValue>(this)->~CSSQuadValue();
       return;
@@ -640,6 +648,9 @@
     case kIdentifierClass:
       To<CSSIdentifierValue>(this)->TraceAfterDispatch(visitor);
       return;
+    case kKeyframeShorthandClass:
+      To<CSSKeyframeShorthandValue>(this)->TraceAfterDispatch(visitor);
+      return;
     case kQuadClass:
       To<CSSQuadValue>(this)->TraceAfterDispatch(visitor);
       return;
diff --git a/third_party/blink/renderer/core/css/css_value.h b/third_party/blink/renderer/core/css/css_value.h
index bc02bde..8c5451c6 100644
--- a/third_party/blink/renderer/core/css/css_value.h
+++ b/third_party/blink/renderer/core/css/css_value.h
@@ -167,6 +167,9 @@
     return class_type_ == kInvalidVariableValueClass;
   }
   bool IsAxisValue() const { return class_type_ == kAxisClass; }
+  bool IsShorthandWrapperValue() const {
+    return class_type_ == kKeyframeShorthandClass;
+  }
 
   bool HasFailedOrCanceledSubresources() const;
   bool MayContainUrl() const;
@@ -246,6 +249,8 @@
 
     kCSSContentDistributionClass,
 
+    kKeyframeShorthandClass,
+
     // List class types must appear after ValueListClass.
     kValueListClass,
     kFunctionClass,
@@ -263,8 +268,9 @@
   ClassType GetClassType() const { return static_cast<ClassType>(class_type_); }
 
   explicit CSSValue(ClassType class_type)
-      : primitive_unit_type_(0),
+      : numeric_literal_unit_type_(0),
         value_list_separator_(kSpaceSeparator),
+        is_non_negative_math_function_(false),
         class_type_(class_type) {}
 
   // NOTE: This class is non-virtual for memory and performance reasons.
@@ -274,11 +280,14 @@
   // The bits in this section are only used by specific subclasses but kept here
   // to maximize struct packing.
 
-  // CSSPrimitiveValue bits:
-  unsigned primitive_unit_type_ : 7;  // CSSPrimitiveValue::UnitType
+  // CSSNumericLiteralValue bits:
+  unsigned numeric_literal_unit_type_ : 7;  // CSSPrimitiveValue::UnitType
 
   unsigned value_list_separator_ : kValueListSeparatorBits;
 
+  // CSSMathFunctionValue
+  unsigned is_non_negative_math_function_ : 1;
+
  private:
   unsigned class_type_ : kClassTypeBits;  // ClassType
 };
diff --git a/third_party/blink/renderer/core/css/parser/font_variant_numeric_parser.h b/third_party/blink/renderer/core/css/parser/font_variant_numeric_parser.h
index ec8545b1..519c321 100644
--- a/third_party/blink/renderer/core/css/parser/font_variant_numeric_parser.h
+++ b/third_party/blink/renderer/core/css/parser/font_variant_numeric_parser.h
@@ -15,13 +15,7 @@
   STACK_ALLOCATED();
 
  public:
-  FontVariantNumericParser()
-      : saw_numeric_figure_value_(false),
-        saw_numeric_spacing_value_(false),
-        saw_numeric_fraction_value_(false),
-        saw_ordinal_value_(false),
-        saw_slashed_zero_value_(false),
-        result_(CSSValueList::CreateSpaceSeparated()) {}
+  FontVariantNumericParser() {}
 
   enum class ParseResult { kConsumedValue, kDisallowedValue, kUnknownValue };
 
@@ -30,52 +24,60 @@
     switch (value_id) {
       case CSSValueID::kLiningNums:
       case CSSValueID::kOldstyleNums:
-        if (saw_numeric_figure_value_)
+        if (numeric_figure_)
           return ParseResult::kDisallowedValue;
-        saw_numeric_figure_value_ = true;
-        break;
+        numeric_figure_ = css_property_parser_helpers::ConsumeIdent(range);
+        return ParseResult::kConsumedValue;
       case CSSValueID::kProportionalNums:
       case CSSValueID::kTabularNums:
-        if (saw_numeric_spacing_value_)
+        if (numeric_spacing_)
           return ParseResult::kDisallowedValue;
-        saw_numeric_spacing_value_ = true;
-        break;
+        numeric_spacing_ = css_property_parser_helpers::ConsumeIdent(range);
+        return ParseResult::kConsumedValue;
       case CSSValueID::kDiagonalFractions:
       case CSSValueID::kStackedFractions:
-        if (saw_numeric_fraction_value_)
+        if (numeric_fraction_)
           return ParseResult::kDisallowedValue;
-        saw_numeric_fraction_value_ = true;
-        break;
+        numeric_fraction_ = css_property_parser_helpers::ConsumeIdent(range);
+        return ParseResult::kConsumedValue;
       case CSSValueID::kOrdinal:
-        if (saw_ordinal_value_)
+        if (ordinal_)
           return ParseResult::kDisallowedValue;
-        saw_ordinal_value_ = true;
-        break;
+        ordinal_ = css_property_parser_helpers::ConsumeIdent(range);
+        return ParseResult::kConsumedValue;
       case CSSValueID::kSlashedZero:
-        if (saw_slashed_zero_value_)
+        if (slashed_zero_)
           return ParseResult::kDisallowedValue;
-        saw_slashed_zero_value_ = true;
-        break;
+        slashed_zero_ = css_property_parser_helpers::ConsumeIdent(range);
+        return ParseResult::kConsumedValue;
       default:
         return ParseResult::kUnknownValue;
     }
-    result_->Append(*css_property_parser_helpers::ConsumeIdent(range));
-    return ParseResult::kConsumedValue;
   }
 
   CSSValue* FinalizeValue() {
-    if (!result_->length())
-      return CSSIdentifierValue::Create(CSSValueID::kNormal);
-    return result_.Release();
+    CSSValueList* result = CSSValueList::CreateSpaceSeparated();
+    if (numeric_figure_)
+      result->Append(*numeric_figure_);
+    if (numeric_spacing_)
+      result->Append(*numeric_spacing_);
+    if (numeric_fraction_)
+      result->Append(*numeric_fraction_);
+    if (ordinal_)
+      result->Append(*ordinal_);
+    if (slashed_zero_)
+      result->Append(*slashed_zero_);
+    if (result->length() > 0)
+      return result;
+    return CSSIdentifierValue::Create(CSSValueID::kNormal);
   }
 
  private:
-  bool saw_numeric_figure_value_;
-  bool saw_numeric_spacing_value_;
-  bool saw_numeric_fraction_value_;
-  bool saw_ordinal_value_;
-  bool saw_slashed_zero_value_;
-  Member<CSSValueList> result_;
+  Member<CSSIdentifierValue> numeric_figure_;
+  Member<CSSIdentifierValue> numeric_spacing_;
+  Member<CSSIdentifierValue> numeric_fraction_;
+  Member<CSSIdentifierValue> ordinal_;
+  Member<CSSIdentifierValue> slashed_zero_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc
index 3f1a8ec..ff41a58 100644
--- a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc
+++ b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc
@@ -6685,7 +6685,7 @@
   if (translate_y) {
     CSSValue* translate_z = css_property_parser_helpers::ConsumeLength(
         range, context.Mode(), kValueRangeAll);
-    if (translate_y->GetIntValue() == 0 && !translate_z)
+    if (translate_y->IsZero() && !translate_z)
       return list;
 
     list->Append(*translate_y);
diff --git a/third_party/blink/renderer/core/css/properties/shorthands/shorthands_custom.cc b/third_party/blink/renderer/core/css/properties/shorthands/shorthands_custom.cc
index af3c16b..f86bf8e5 100644
--- a/third_party/blink/renderer/core/css/properties/shorthands/shorthands_custom.cc
+++ b/third_party/blink/renderer/core/css/properties/shorthands/shorthands_custom.cc
@@ -1122,22 +1122,26 @@
                  const CSSParserContext& context,
                  HeapVector<CSSPropertyValue, 256>& properties) {
   // Optional font-style, font-variant, font-stretch and font-weight.
+  // Each may be normal.
   CSSValue* font_style = nullptr;
   CSSIdentifierValue* font_variant_caps = nullptr;
   CSSValue* font_weight = nullptr;
   CSSValue* font_stretch = nullptr;
-  while (!range.AtEnd()) {
+  const int kNumReorderableFontProperties = 4;
+  for (int i = 0; i < kNumReorderableFontProperties && !range.AtEnd(); ++i) {
     CSSValueID id = range.Peek().Id();
+    if (id == CSSValueID::kNormal) {
+      css_property_parser_helpers::ConsumeIdent(range);
+      continue;
+    }
     if (!font_style &&
-        (id == CSSValueID::kNormal || id == CSSValueID::kItalic ||
-         id == CSSValueID::kOblique)) {
+        (id == CSSValueID::kItalic || id == CSSValueID::kOblique)) {
       font_style = css_parsing_utils::ConsumeFontStyle(range, context.Mode());
       if (!font_style)
         return false;
       continue;
     }
-    if (!font_variant_caps &&
-        (id == CSSValueID::kNormal || id == CSSValueID::kSmallCaps)) {
+    if (!font_variant_caps && id == CSSValueID::kSmallCaps) {
       // Font variant in the shorthand is particular, it only accepts normal or
       // small-caps.
       // See https://drafts.csswg.org/css-fonts/#propdef-font
diff --git a/third_party/blink/renderer/core/editing/finder/find_task_controller.cc b/third_party/blink/renderer/core/editing/finder/find_task_controller.cc
index 49dddafc..343cb97 100644
--- a/third_party/blink/renderer/core/editing/finder/find_task_controller.cc
+++ b/third_party/blink/renderer/core/editing/finder/find_task_controller.cc
@@ -74,10 +74,6 @@
                                  PositionInFlatTree(), 0 /* match_count */);
     }
 
-    const base::TimeDelta time_available =
-        base::TimeDelta::FromMillisecondsD(deadline->timeRemaining());
-    const base::TimeTicks start_time = CurrentTimeTicks();
-
     Document& document = *controller_->GetLocalFrame()->GetDocument();
     PositionInFlatTree search_start =
         PositionInFlatTree::FirstPositionInNode(document);
@@ -148,10 +144,6 @@
         break;
     }
 
-    const base::TimeDelta time_spent = CurrentTimeTicks() - start_time;
-    UMA_HISTOGRAM_TIMES("WebCore.FindInPage.ScopingTime",
-                        time_spent - time_available);
-
     controller_->DidFinishTask(identifier_, search_text_, *options_,
                                full_range_searched, next_task_start_position,
                                match_count);
diff --git a/third_party/blink/renderer/core/exported/web_document_loader_impl.cc b/third_party/blink/renderer/core/exported/web_document_loader_impl.cc
index ce29235..4b1edef5 100644
--- a/third_party/blink/renderer/core/exported/web_document_loader_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_document_loader_impl.cc
@@ -34,9 +34,11 @@
 #include <utility>
 
 #include "base/memory/ptr_util.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/mojom/loader/mhtml_load_result.mojom-blink.h"
 #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_network_provider.h"
 #include "third_party/blink/public/platform/web_document_subresource_filter.h"
+#include "third_party/blink/public/platform/web_loading_hints_provider.h"
 #include "third_party/blink/public/platform/web_url.h"
 #include "third_party/blink/public/platform/web_url_error.h"
 #include "third_party/blink/public/platform/web_vector.h"
@@ -143,6 +145,18 @@
       *GetFrame()->GetDocument(), base::WrapUnique(subresource_filter)));
 }
 
+void WebDocumentLoaderImpl::SetLoadingHintsProvider(
+    std::unique_ptr<blink::WebLoadingHintsProvider> loading_hints_provider) {
+  if (!base::FeatureList::IsEnabled(
+          blink::features::kSendPreviewsLoadingHintsBeforeCommit)) {
+    return;
+  }
+
+  DocumentLoader::SetPreviewsResourceLoadingHints(
+      PreviewsResourceLoadingHints::CreateFromLoadingHintsProvider(
+          *GetFrame()->GetDocument(), std::move(loading_hints_provider)));
+}
+
 void WebDocumentLoaderImpl::SetServiceWorkerNetworkProvider(
     std::unique_ptr<WebServiceWorkerNetworkProvider> provider) {
   DocumentLoader::SetServiceWorkerNetworkProvider(std::move(provider));
diff --git a/third_party/blink/renderer/core/exported/web_document_loader_impl.h b/third_party/blink/renderer/core/exported/web_document_loader_impl.h
index 17a17c7a..ee485ff 100644
--- a/third_party/blink/renderer/core/exported/web_document_loader_impl.h
+++ b/third_party/blink/renderer/core/exported/web_document_loader_impl.h
@@ -75,6 +75,8 @@
   ExtraData* GetExtraData() const override;
   void SetExtraData(std::unique_ptr<ExtraData>) override;
   void SetSubresourceFilter(WebDocumentSubresourceFilter*) override;
+  void SetLoadingHintsProvider(
+      std::unique_ptr<blink::WebLoadingHintsProvider>) override;
   void SetServiceWorkerNetworkProvider(
       std::unique_ptr<WebServiceWorkerNetworkProvider>) override;
   WebServiceWorkerNetworkProvider* GetServiceWorkerNetworkProvider() override;
diff --git a/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc b/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
index f5b634e1..d973b15 100644
--- a/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
@@ -30,6 +30,8 @@
 #include "third_party/blink/renderer/core/fullscreen/fullscreen.h"
 #include "third_party/blink/renderer/core/fullscreen/fullscreen_options.h"
 #include "third_party/blink/renderer/core/html/html_frame_owner_element.h"
+#include "third_party/blink/renderer/core/html/portal/html_portal_element.h"
+#include "third_party/blink/renderer/core/html_names.h"
 #include "third_party/blink/renderer/core/layout/layout_object.h"
 #include "third_party/blink/renderer/core/layout/layout_view.h"
 #include "third_party/blink/renderer/core/page/chrome_client.h"
@@ -41,6 +43,7 @@
 #include "third_party/blink/renderer/platform/geometry/layout_rect.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
+#include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
 #include "v8/include/v8.h"
 
 namespace blink {
@@ -65,6 +68,13 @@
   return WebRemoteFrameImpl::CreateMainFrame(web_view, client, opener);
 }
 
+WebRemoteFrame* WebRemoteFrame::CreateForPortal(
+    WebTreeScopeType scope,
+    WebRemoteFrameClient* client,
+    const WebElement& portal_element) {
+  return WebRemoteFrameImpl::CreateForPortal(scope, client, portal_element);
+}
+
 WebRemoteFrameImpl* WebRemoteFrameImpl::Create(WebTreeScopeType scope,
                                                WebRemoteFrameClient* client) {
   WebRemoteFrameImpl* frame =
@@ -94,6 +104,24 @@
   return frame;
 }
 
+WebRemoteFrameImpl* WebRemoteFrameImpl::CreateForPortal(
+    WebTreeScopeType scope,
+    WebRemoteFrameClient* client,
+    const WebElement& portal_element) {
+  WebRemoteFrameImpl* frame =
+      MakeGarbageCollected<WebRemoteFrameImpl>(scope, client);
+
+  Element* element = portal_element;
+  DCHECK(element->HasTagName(html_names::kPortalTag));
+  DCHECK(RuntimeEnabledFeatures::PortalsEnabled(&element->GetDocument()));
+  HTMLPortalElement* portal = static_cast<HTMLPortalElement*>(element);
+  LocalFrame* host_frame = portal->GetDocument().GetFrame();
+  frame->InitializeCoreFrame(*host_frame->GetPage(), portal, g_null_atom,
+                             &host_frame->window_agent_factory());
+
+  return frame;
+}
+
 WebRemoteFrameImpl::~WebRemoteFrameImpl() = default;
 
 void WebRemoteFrameImpl::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/exported/web_remote_frame_impl.h b/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
index 2b59175..9b2bafdd 100644
--- a/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
+++ b/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
@@ -35,6 +35,9 @@
   static WebRemoteFrameImpl* CreateMainFrame(WebView*,
                                              WebRemoteFrameClient*,
                                              WebFrame* opener = nullptr);
+  static WebRemoteFrameImpl* CreateForPortal(WebTreeScopeType,
+                                             WebRemoteFrameClient*,
+                                             const WebElement& portal_element);
 
   WebRemoteFrameImpl(WebTreeScopeType, WebRemoteFrameClient*);
   ~WebRemoteFrameImpl() override;
diff --git a/third_party/blink/renderer/core/frame/dom_timer.cc b/third_party/blink/renderer/core/frame/dom_timer.cc
index 1018bc0..609a16f 100644
--- a/third_party/blink/renderer/core/frame/dom_timer.cc
+++ b/third_party/blink/renderer/core/frame/dom_timer.cc
@@ -95,12 +95,16 @@
       context, single_shot ? "setTimeout" : "setInterval", this);
 }
 
-DOMTimer::~DOMTimer() {
-  if (action_)
-    action_->Dispose();
+DOMTimer::~DOMTimer() = default;
+
+void DOMTimer::Dispose() {
+  Stop();
 }
 
 void DOMTimer::Stop() {
+  if (!action_)
+    return;
+
   const bool is_interval = !RepeatInterval().is_zero();
   probe::AsyncTaskCanceledBreakable(
       GetExecutionContext(), is_interval ? "clearInterval" : "clearTimeout",
diff --git a/third_party/blink/renderer/core/frame/dom_timer.h b/third_party/blink/renderer/core/frame/dom_timer.h
index 9c3d73f..19e9b5b 100644
--- a/third_party/blink/renderer/core/frame/dom_timer.h
+++ b/third_party/blink/renderer/core/frame/dom_timer.h
@@ -45,6 +45,7 @@
                                    public TimerBase,
                                    public NameClient {
   USING_GARBAGE_COLLECTED_MIXIN(DOMTimer);
+  USING_PRE_FINALIZER(DOMTimer, Dispose);
 
  public:
   // Creates a new timer owned by the ExecutionContext, starts it and returns
@@ -65,11 +66,12 @@
   // ContextLifecycleObserver
   void ContextDestroyed(ExecutionContext*) override;
 
-  // Eager finalization is needed to promptly stop this Timer object.
+  // Pre finalizer is needed to promptly stop this Timer object.
   // Otherwise timer events might fire at an object that's slated for
   // destruction (when lazily swept), but some of its members (m_action) may
   // already have been finalized & must not be accessed.
-  EAGERLY_FINALIZE();
+  void Dispose();
+  
   void Trace(blink::Visitor*) override;
   const char* NameInHeapSnapshot() const override { return "DOMTimer"; }
 
diff --git a/third_party/blink/renderer/core/frame/embedded_content_view.cc b/third_party/blink/renderer/core/frame/embedded_content_view.cc
index 7c33975..666909f6 100644
--- a/third_party/blink/renderer/core/frame/embedded_content_view.cc
+++ b/third_party/blink/renderer/core/frame/embedded_content_view.cc
@@ -29,7 +29,10 @@
     LayoutView* owner_layout_view = owner->View();
     DCHECK(owner_layout_view);
     if (owner_layout_view->HasOverflowClip()) {
-      IntSize scroll_offset(owner_layout_view->ScrolledContentOffset());
+      // Floored because the frame_rect in a content view is an IntRect. We may
+      // want to reevaluate that since scroll offsets/layout can be fractional.
+      IntSize scroll_offset(
+          FlooredIntSize(owner_layout_view->ScrolledContentOffset()));
       location.SaturatedMove(-scroll_offset.Width(), -scroll_offset.Height());
     }
   }
diff --git a/third_party/blink/renderer/core/frame/visual_viewport.cc b/third_party/blink/renderer/core/frame/visual_viewport.cc
index fb6fd0b7..6cd0184e 100644
--- a/third_party/blink/renderer/core/frame/visual_viewport.cc
+++ b/third_party/blink/renderer/core/frame/visual_viewport.cc
@@ -1207,4 +1207,25 @@
   return value;
 }
 
+void VisualViewport::PreFinalize() {
+  root_transform_layer_.reset();
+  inner_viewport_container_layer_.reset();
+  overscroll_elasticity_layer_.reset();
+  page_scale_layer_.reset();
+  inner_viewport_scroll_layer_.reset();
+  // scrollbar_layer_group_* are referenced from overlay_scrollbar_*, thus
+  // overlay_scrollbar_* must be destroyed before scrollbar_layer_group_*.
+  overlay_scrollbar_horizontal_.reset();
+  overlay_scrollbar_vertical_.reset();
+  scrollbar_layer_group_horizontal_.reset();
+  scrollbar_layer_group_vertical_.reset();
+  device_emulation_transform_node_.reset();
+  overscroll_elasticity_transform_node_.reset();
+  scale_transform_node_.reset();
+  translation_transform_node_.reset();
+  scroll_node_.reset();
+  horizontal_scrollbar_effect_node_.reset();
+  vertical_scrollbar_effect_node_.reset();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/frame/visual_viewport.h b/third_party/blink/renderer/core/frame/visual_viewport.h
index bd9269a4..5c99383 100644
--- a/third_party/blink/renderer/core/frame/visual_viewport.h
+++ b/third_party/blink/renderer/core/frame/visual_viewport.h
@@ -274,6 +274,8 @@
   void SetNeedsPaintPropertyUpdate() { needs_paint_property_update_ = true; }
   bool NeedsPaintPropertyUpdate() const { return needs_paint_property_update_; }
 
+  void PreFinalize() override;
+
  private:
   bool DidSetScaleOrLocation(float scale,
                              bool is_pinch_gesture_active,
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
index 0a2181f..d953864 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -1816,20 +1816,16 @@
     HTMLPortalElement* portal,
     mojo::PendingAssociatedReceiver<mojom::blink::Portal> portal_receiver,
     mojo::PendingAssociatedRemote<mojom::blink::PortalClient> portal_client) {
-  auto pair = client_->CreatePortal(portal_receiver.PassHandle(),
-                                    portal_client.PassHandle());
-  WebRemoteFrameImpl* portal_frame = ToWebRemoteFrameImpl(pair.first);
-  portal_frame->InitializeCoreFrame(*GetFrame()->GetPage(), portal, g_null_atom,
-                                    &GetFrame()->window_agent_factory());
-  return std::pair<RemoteFrame*, base::UnguessableToken>(
-      portal_frame->GetFrame(), pair.second);
+  WebRemoteFrame* portal_frame;
+  base::UnguessableToken portal_token;
+  std::tie(portal_frame, portal_token) = client_->CreatePortal(
+      portal_receiver.PassHandle(), portal_client.PassHandle(), portal);
+  return {ToWebRemoteFrameImpl(portal_frame)->GetFrame(), portal_token};
 }
 
 RemoteFrame* WebLocalFrameImpl::AdoptPortal(HTMLPortalElement* portal) {
   WebRemoteFrameImpl* portal_frame =
-      ToWebRemoteFrameImpl(client_->AdoptPortal(portal->GetToken()));
-  portal_frame->InitializeCoreFrame(*GetFrame()->GetPage(), portal, g_null_atom,
-                                    &GetFrame()->window_agent_factory());
+      ToWebRemoteFrameImpl(client_->AdoptPortal(portal->GetToken(), portal));
   return portal_frame->GetFrame();
 }
 
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
index 7d7446f..fc9270fd 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -1154,11 +1154,6 @@
   HTMLElement::Trace(visitor);
 }
 
-void HTMLCanvasElement::DisableDeferral(DisableDeferralReason reason) {
-  if (canvas2d_bridge_)
-    canvas2d_bridge_->DisableDeferral(reason);
-}
-
 Canvas2DLayerBridge* HTMLCanvasElement::GetOrCreateCanvas2DLayerBridge() {
   DCHECK(Is2d());
   if (!canvas2d_bridge_ && !did_fail_to_create_resource_provider_) {
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.h b/third_party/blink/renderer/core/html/canvas/html_canvas_element.h
index 0eff66e..375f60a 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.h
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.h
@@ -159,8 +159,6 @@
              const PhysicalRect&,
              bool flatten_composited_layers);
 
-  void DisableDeferral(DisableDeferralReason);
-
   CanvasRenderingContext* RenderingContext() const override {
     return context_.Get();
   }
diff --git a/third_party/blink/renderer/core/html/html_frame_owner_element.cc b/third_party/blink/renderer/core/html/html_frame_owner_element.cc
index 60c5e0be..d6910e1a 100644
--- a/third_party/blink/renderer/core/html/html_frame_owner_element.cc
+++ b/third_party/blink/renderer/core/html/html_frame_owner_element.cc
@@ -362,8 +362,7 @@
 
   GetDocument().GetRootScrollerController().DidUpdateIFrameFrameView(*this);
 
-  LayoutEmbeddedContent* layout_embedded_content =
-      ToLayoutEmbeddedContent(GetLayoutObject());
+  LayoutEmbeddedContent* layout_embedded_content = GetLayoutEmbeddedContent();
   if (!layout_embedded_content)
     return;
 
@@ -391,8 +390,7 @@
     return nullptr;
   if (embedded_content_view_->IsAttached())
     embedded_content_view_->DetachFromLayout();
-  LayoutEmbeddedContent* layout_embedded_content =
-      ToLayoutEmbeddedContent(GetLayoutObject());
+  LayoutEmbeddedContent* layout_embedded_content = GetLayoutEmbeddedContent();
   if (layout_embedded_content) {
     if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache())
       cache->ChildrenChanged(layout_embedded_content);
diff --git a/third_party/blink/renderer/core/html/media/html_video_element.cc b/third_party/blink/renderer/core/html/media/html_video_element.cc
index 3245d11..3df0439 100644
--- a/third_party/blink/renderer/core/html/media/html_video_element.cc
+++ b/third_party/blink/renderer/core/html/media/html_video_element.cc
@@ -603,6 +603,8 @@
     ActivateViewportIntersectionMonitoring(true);
   }
 
+  wake_lock_->ElementDidMoveToNewDocument();
+
   HTMLMediaElement::DidMoveToNewDocument(old_document);
 }
 
diff --git a/third_party/blink/renderer/core/html/media/video_wake_lock.cc b/third_party/blink/renderer/core/html/media/video_wake_lock.cc
index 0c3d96c..cbcbaa3 100644
--- a/third_party/blink/renderer/core/html/media/video_wake_lock.cc
+++ b/third_party/blink/renderer/core/html/media/video_wake_lock.cc
@@ -5,6 +5,7 @@
 #include "third_party/blink/renderer/core/html/media/video_wake_lock.h"
 
 #include "services/service_manager/public/cpp/interface_provider.h"
+#include "third_party/blink/public/mojom/wake_lock/wake_lock.mojom-blink.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/dom/events/event.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
@@ -12,12 +13,11 @@
 #include "third_party/blink/renderer/core/html/media/html_video_element.h"
 #include "third_party/blink/renderer/core/html/media/remote_playback_controller.h"
 
-#include "third_party/blink/public/mojom/wake_lock/wake_lock.mojom-blink.h"
-
 namespace blink {
 
 VideoWakeLock::VideoWakeLock(HTMLVideoElement& video)
     : PageVisibilityObserver(video.GetDocument().GetPage()),
+      ContextLifecycleStateObserver(&video.GetDocument()),
       video_element_(video) {
   VideoElement().addEventListener(event_type_names::kPlaying, this, true);
   VideoElement().addEventListener(event_type_names::kPause, this, true);
@@ -30,6 +30,13 @@
       RemotePlaybackController::From(VideoElement());
   if (remote_playback_controller)
     remote_playback_controller->AddObserver(this);
+
+  UpdateStateIfNeeded();
+}
+
+void VideoWakeLock::ElementDidMoveToNewDocument() {
+  ContextLifecycleStateObserver::DidMoveToNewExecutionContext(
+      &VideoElement().GetDocument());
 }
 
 void VideoWakeLock::PageVisibilityChanged() {
@@ -39,6 +46,7 @@
 void VideoWakeLock::Trace(Visitor* visitor) {
   NativeEventListener::Trace(visitor);
   PageVisibilityObserver::Trace(visitor);
+  ContextLifecycleStateObserver::Trace(visitor);
   visitor->Trace(video_element_);
 }
 
@@ -61,6 +69,14 @@
   Update();
 }
 
+void VideoWakeLock::ContextLifecycleStateChanged(mojom::FrameLifecycleState) {
+  Update();
+}
+
+void VideoWakeLock::ContextDestroyed(ExecutionContext*) {
+  Update();
+}
+
 void VideoWakeLock::Update() {
   bool should_be_active = ShouldBeActive();
   if (should_be_active == active_)
@@ -74,9 +90,12 @@
   bool page_visible = GetPage() && GetPage()->IsPageVisible();
   bool in_picture_in_picture =
       PictureInPictureController::IsElementInPictureInPicture(&VideoElement());
+
   return playing_ && (page_visible || in_picture_in_picture) &&
          remote_playback_state_ !=
-             mojom::blink::PresentationConnectionState::CONNECTED;
+             mojom::blink::PresentationConnectionState::CONNECTED &&
+         !(VideoElement().GetDocument().IsContextPaused() ||
+           VideoElement().GetDocument().IsContextDestroyed());
 }
 
 void VideoWakeLock::EnsureWakeLockService() {
@@ -87,8 +106,12 @@
   if (!frame)
     return;
 
+  scoped_refptr<base::SingleThreadTaskRunner> task_runner =
+      frame->GetTaskRunner(TaskType::kMediaElementEvent);
+
   blink::mojom::blink::WakeLockServicePtr service;
-  frame->GetInterfaceProvider().GetInterface(mojo::MakeRequest(&service));
+  frame->GetInterfaceProvider().GetInterface(
+      mojo::MakeRequest(&service, task_runner));
   service->GetWakeLock(device::mojom::WakeLockType::kPreventDisplaySleep,
                        device::mojom::blink::WakeLockReason::kVideoPlayback,
                        "Video Wake Lock",
diff --git a/third_party/blink/renderer/core/html/media/video_wake_lock.h b/third_party/blink/renderer/core/html/media/video_wake_lock.h
index ae38febd..7f825d5 100644
--- a/third_party/blink/renderer/core/html/media/video_wake_lock.h
+++ b/third_party/blink/renderer/core/html/media/video_wake_lock.h
@@ -8,6 +8,7 @@
 #include "services/device/public/mojom/wake_lock.mojom-blink.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/dom/events/native_event_listener.h"
+#include "third_party/blink/renderer/core/execution_context/context_lifecycle_state_observer.h"
 #include "third_party/blink/renderer/core/html/media/remote_playback_observer.h"
 #include "third_party/blink/renderer/core/page/page_visibility_observer.h"
 
@@ -19,19 +20,23 @@
 // take wake lock iif:
 //  - the video is playing;
 //  - the page is visible OR the video is in picture-in-picture;
-//  - the video isn't being remoted.
+//  - the video isn't being remoted;
+//  - the execution context is neither paused nor destroyed.
 // Each video element implements its own wake lock logic. The service will then
 // merge all the requests and take the appropriate system wake lock.
 // VideoWakeLock only uses "screen" related wake lock: it prevents the screen
 // from locking on mobile or the lockscreen to show up on desktop.
 class CORE_EXPORT VideoWakeLock final : public NativeEventListener,
                                         public PageVisibilityObserver,
-                                        public RemotePlaybackObserver {
+                                        public RemotePlaybackObserver,
+                                        public ContextLifecycleStateObserver {
   USING_GARBAGE_COLLECTED_MIXIN(VideoWakeLock);
 
  public:
   explicit VideoWakeLock(HTMLVideoElement&);
 
+  void ElementDidMoveToNewDocument();
+
   void Trace(Visitor*) final;
 
   // EventListener implementation.
@@ -41,6 +46,10 @@
   void OnRemotePlaybackStateChanged(
       mojom::blink::PresentationConnectionState) final;
 
+  // ContextLifecycleStateObserver
+  void ContextLifecycleStateChanged(mojom::FrameLifecycleState) override;
+  void ContextDestroyed(ExecutionContext*) override;
+
   bool active_for_tests() const { return active_; }
 
  private:
diff --git a/third_party/blink/renderer/core/html/media/video_wake_lock_test.cc b/third_party/blink/renderer/core/html/media/video_wake_lock_test.cc
index 5fc8dfd..448ca9a 100644
--- a/third_party/blink/renderer/core/html/media/video_wake_lock_test.cc
+++ b/third_party/blink/renderer/core/html/media/video_wake_lock_test.cc
@@ -4,6 +4,9 @@
 
 #include "third_party/blink/renderer/core/html/media/video_wake_lock.h"
 
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom-blink.h"
 #include "third_party/blink/renderer/core/dom/events/event.h"
@@ -25,8 +28,8 @@
     : public mojom::blink::PictureInPictureSession {
  public:
   explicit VideoWakeLockPictureInPictureSession(
-      mojo::InterfaceRequest<mojom::blink::PictureInPictureSession> request)
-      : binding_(this, std::move(request)) {}
+      mojo::PendingReceiver<mojom::blink::PictureInPictureSession> receiver)
+      : receiver_(this, std::move(receiver)) {}
   ~VideoWakeLockPictureInPictureSession() override = default;
 
   void Stop(StopCallback callback) final { std::move(callback).Run(); }
@@ -38,7 +41,7 @@
               bool show_mute_button) final {}
 
  private:
-  mojo::Binding<mojom::blink::PictureInPictureSession> binding_;
+  mojo::Receiver<mojom::blink::PictureInPictureSession> receiver_;
 };
 
 // The VideoWakeLockPictureInPictureService implements the PictureInPicture
@@ -47,30 +50,31 @@
 class VideoWakeLockPictureInPictureService
     : public mojom::blink::PictureInPictureService {
  public:
-  VideoWakeLockPictureInPictureService() : binding_(this) {}
+  VideoWakeLockPictureInPictureService() : receiver_(this) {}
   ~VideoWakeLockPictureInPictureService() override = default;
 
   void Bind(mojo::ScopedMessagePipeHandle handle) {
-    binding_.Bind(
-        mojom::blink::PictureInPictureServiceRequest(std::move(handle)));
+    receiver_.Bind(mojo::PendingReceiver<mojom::blink::PictureInPictureService>(
+        std::move(handle)));
   }
 
-  void StartSession(uint32_t,
-                    const base::Optional<viz::SurfaceId>&,
-                    const blink::WebSize&,
-                    bool,
-                    bool,
-                    mojom::blink::PictureInPictureSessionObserverPtr,
-                    StartSessionCallback callback) final {
-    mojom::blink::PictureInPictureSessionPtr session_ptr;
+  void StartSession(
+      uint32_t,
+      const base::Optional<viz::SurfaceId>&,
+      const blink::WebSize&,
+      bool,
+      bool,
+      mojo::PendingRemote<mojom::blink::PictureInPictureSessionObserver>,
+      StartSessionCallback callback) final {
+    mojo::PendingRemote<mojom::blink::PictureInPictureSession> session_remote;
     session_.reset(new VideoWakeLockPictureInPictureSession(
-        mojo::MakeRequest(&session_ptr)));
+        session_remote.InitWithNewPipeAndPassReceiver()));
 
-    std::move(callback).Run(std::move(session_ptr), WebSize());
+    std::move(callback).Run(std::move(session_remote), WebSize());
   }
 
  private:
-  mojo::Binding<mojom::blink::PictureInPictureService> binding_;
+  mojo::Receiver<mojom::blink::PictureInPictureService> receiver_;
   std::unique_ptr<VideoWakeLockPictureInPictureSession> session_;
 };
 
@@ -149,6 +153,16 @@
         video_.Get(), event_type_names::kLeavepictureinpicture);
   }
 
+  void SimulateContextPause() {
+    GetDocument().SetLifecycleState(mojom::FrameLifecycleState::kPaused);
+  }
+
+  void SimulateContextRunning() {
+    GetDocument().SetLifecycleState(mojom::FrameLifecycleState::kRunning);
+  }
+
+  void SimulateContextDestroyed() { GetDocument().NotifyContextDestroyed(); }
+
  private:
   Persistent<HTMLVideoElement> video_;
   Persistent<VideoWakeLock> video_wake_lock_;
@@ -307,4 +321,31 @@
   EXPECT_FALSE(GetVideoWakeLock()->active_for_tests());
 }
 
+TEST_F(VideoWakeLockTest, PausingContextCancelsLock) {
+  SimulatePlaying();
+  EXPECT_TRUE(GetVideoWakeLock()->active_for_tests());
+
+  SimulateContextPause();
+  EXPECT_FALSE(GetVideoWakeLock()->active_for_tests());
+}
+
+TEST_F(VideoWakeLockTest, ResumingContextResumesLock) {
+  SimulatePlaying();
+  EXPECT_TRUE(GetVideoWakeLock()->active_for_tests());
+
+  SimulateContextPause();
+  EXPECT_FALSE(GetVideoWakeLock()->active_for_tests());
+
+  SimulateContextRunning();
+  EXPECT_TRUE(GetVideoWakeLock()->active_for_tests());
+}
+
+TEST_F(VideoWakeLockTest, DestroyingContextCancelsLock) {
+  SimulatePlaying();
+  EXPECT_TRUE(GetVideoWakeLock()->active_for_tests());
+
+  SimulateContextDestroyed();
+  EXPECT_FALSE(GetVideoWakeLock()->active_for_tests());
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/inspector/inspector_layer_tree_agent.cc b/third_party/blink/renderer/core/inspector/inspector_layer_tree_agent.cc
index 2cad50e..e366189 100644
--- a/third_party/blink/renderer/core/inspector/inspector_layer_tree_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_layer_tree_agent.cc
@@ -422,13 +422,6 @@
 
 Response InspectorLayerTreeAgent::makeSnapshot(const String& layer_id,
                                                String* snapshot_id) {
-  const cc::Layer* layer = nullptr;
-  Response response = LayerById(layer_id, layer);
-  if (!response.isSuccess())
-    return response;
-  if (!layer->DrawsContent())
-    return Response::Error("Layer does not draw content");
-
   suppress_layer_paint_events_ = true;
 
   // If we hit a devtool break point in the middle of document lifecycle, for
@@ -445,6 +438,13 @@
 
   suppress_layer_paint_events_ = false;
 
+  const cc::Layer* layer = nullptr;
+  Response response = LayerById(layer_id, layer);
+  if (!response.isSuccess())
+    return response;
+  if (!layer->DrawsContent())
+    return Response::Error("Layer does not draw content");
+
   auto picture = layer->GetPicture();
   if (!picture)
     return Response::Error("Layer does not produce picture");
diff --git a/third_party/blink/renderer/core/layout/api/line_layout_box.h b/third_party/blink/renderer/core/layout/api/line_layout_box.h
index 4d2ff29..2b04d32 100644
--- a/third_party/blink/renderer/core/layout/api/line_layout_box.h
+++ b/third_party/blink/renderer/core/layout/api/line_layout_box.h
@@ -78,7 +78,7 @@
 
   void SetSize(const LayoutSize& size) { return ToBox()->SetSize(size); }
 
-  IntSize ScrolledContentOffset() const {
+  LayoutSize ScrolledContentOffset() const {
     return ToBox()->ScrolledContentOffset();
   }
 
diff --git a/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc b/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc
index c8414800..10a49c1 100644
--- a/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc
@@ -39,7 +39,7 @@
 FlexItem::FlexItem(LayoutBox* box,
                    LayoutUnit flex_base_content_size,
                    MinMaxSize min_max_sizes,
-                   LayoutUnit main_axis_border_scrollbar_padding,
+                   LayoutUnit main_axis_border_and_padding,
                    LayoutUnit main_axis_margin)
     : algorithm(nullptr),
       line_number(0),
@@ -48,7 +48,7 @@
       min_max_sizes(min_max_sizes),
       hypothetical_main_content_size(
           min_max_sizes.ClampSizeToMinAndMax(flex_base_content_size)),
-      main_axis_border_scrollbar_padding(main_axis_border_scrollbar_padding),
+      main_axis_border_and_padding(main_axis_border_and_padding),
       main_axis_margin(main_axis_margin),
       frozen(false),
       ng_input_node(/* LayoutBox* */ nullptr) {
diff --git a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
index 1a2417f..aedbf18 100644
--- a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
+++ b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
@@ -70,32 +70,32 @@
 
  public:
   // Parameters:
-  // - |flex_base_content_size| does not include border/scrollbar/padding.
+  // - |flex_base_content_size| includes scrollbar size but not border/padding.
   // - |min_max_sizes| is the resolved min and max size properties in the
   //   main axis direction (not intrinsic widths). It does not include
   //   border/scrollbar/padding.
   FlexItem(LayoutBox*,
            LayoutUnit flex_base_content_size,
            MinMaxSize min_max_sizes,
-           LayoutUnit main_axis_border_scrollbar_padding,
+           LayoutUnit main_axis_border_and_padding,
            LayoutUnit main_axis_margin);
 
   LayoutUnit HypotheticalMainAxisMarginBoxSize() const {
-    return hypothetical_main_content_size + main_axis_border_scrollbar_padding +
+    return hypothetical_main_content_size + main_axis_border_and_padding +
            main_axis_margin;
   }
 
   LayoutUnit FlexBaseMarginBoxSize() const {
-    return flex_base_content_size + main_axis_border_scrollbar_padding +
+    return flex_base_content_size + main_axis_border_and_padding +
            main_axis_margin;
   }
 
   LayoutUnit FlexedBorderBoxSize() const {
-    return flexed_content_size + main_axis_border_scrollbar_padding;
+    return flexed_content_size + main_axis_border_and_padding;
   }
 
   LayoutUnit FlexedMarginBoxSize() const {
-    return flexed_content_size + main_axis_border_scrollbar_padding +
+    return flexed_content_size + main_axis_border_and_padding +
            main_axis_margin;
   }
 
@@ -132,7 +132,7 @@
   const LayoutUnit flex_base_content_size;
   const MinMaxSize min_max_sizes;
   const LayoutUnit hypothetical_main_content_size;
-  const LayoutUnit main_axis_border_scrollbar_padding;
+  const LayoutUnit main_axis_border_and_padding;
   const LayoutUnit main_axis_margin;
   LayoutUnit flexed_content_size;
 
diff --git a/third_party/blink/renderer/core/layout/hit_test_result.cc b/third_party/blink/renderer/core/layout/hit_test_result.cc
index e4a6a64..1247cf71 100644
--- a/third_party/blink/renderer/core/layout/hit_test_result.cc
+++ b/third_party/blink/renderer/core/layout/hit_test_result.cc
@@ -340,13 +340,13 @@
       (IsHTMLInputElement(*inner_node_or_image_map_image) &&
        ToHTMLInputElement(inner_node_or_image_map_image)->type() ==
            input_type_names::kImage))
-    url_string = ToElement(*inner_node_or_image_map_image).ImageSourceURL();
+    url_string = To<Element>(*inner_node_or_image_map_image).ImageSourceURL();
   else if ((inner_node_or_image_map_image->GetLayoutObject() &&
             inner_node_or_image_map_image->GetLayoutObject()->IsImage()) &&
            (IsHTMLEmbedElement(*inner_node_or_image_map_image) ||
             IsHTMLObjectElement(*inner_node_or_image_map_image) ||
             IsSVGImageElement(*inner_node_or_image_map_image)))
-    url_string = ToElement(*inner_node_or_image_map_image).ImageSourceURL();
+    url_string = To<Element>(*inner_node_or_image_map_image).ImageSourceURL();
   if (url_string.IsEmpty())
     return KURL();
 
diff --git a/third_party/blink/renderer/core/layout/layout_block_flow_line.cc b/third_party/blink/renderer/core/layout/layout_block_flow_line.cc
index eee0e9cc..066ba20 100644
--- a/third_party/blink/renderer/core/layout/layout_block_flow_line.cc
+++ b/third_party/blink/renderer/core/layout/layout_block_flow_line.cc
@@ -1958,6 +1958,12 @@
   }
 
   if (FirstChild()) {
+    // In full layout mode, clear the line boxes of children upfront. Otherwise,
+    // siblings can run into stale root lineboxes during layout. Then layout
+    // the replaced elements later. In partial layout mode, line boxes are not
+    // deleted and only dirtied. In that case, we can layout the replaced
+    // elements at the same time.
+    Vector<LayoutBox*> atomic_inline_children;
     for (InlineWalker walker(LineLayoutBlockFlow(this)); !walker.AtEnd();
          walker.Advance()) {
       LayoutObject* o = walker.Current().GetLayoutObject();
@@ -1990,16 +1996,29 @@
           }
         } else if (is_full_layout || o->NeedsLayout()) {
           // Atomic inline.
+          DCHECK(o->IsAtomicInlineLevel());
           box->DirtyLineBoxes(is_full_layout);
-          o->LayoutIfNeeded();
+          // In full layout mode, defer laying out inline chlidren (adding any
+          // |InlineBox|es to |LineBoxes()|) to after all calls to
+          // |DirtyLineBoxesForObject()| is done.
+          if (is_full_layout)
+            atomic_inline_children.push_back(box);
+          else
+            o->LayoutIfNeeded();
         }
       } else if (o->IsText() ||
                  (o->IsLayoutInline() && !walker.AtEndOfInline())) {
         if (!o->IsText())
           ToLayoutInline(o)->UpdateAlwaysCreateLineBoxes(
               layout_state.IsFullLayout());
-        if (layout_state.IsFullLayout() || o->SelfNeedsLayout())
+        if (layout_state.IsFullLayout() || o->SelfNeedsLayout()) {
+          // In full layout mode, line boxes are deleted at the beginning of
+          // this function. It is critical to keep them empty here, because
+          // |DirtyLineBoxesForObject()| can destroy |InlineTextBox| without
+          // unlinking them from |LineBoxes()|.
+          DCHECK(!is_full_layout || !LineBoxes()->First());
           DirtyLineBoxesForObject(o, layout_state.IsFullLayout());
+        }
         o->ClearNeedsLayout();
       }
 
@@ -2007,6 +2026,13 @@
         SetContainsInlineWithOutlineAndContinuation(true);
     }
 
+    // Now all |DirtyLineBoxesForObject()| is done. We can safely start
+    // adding |InlineBox|es to |LineBoxes()|.
+    DCHECK(!is_full_layout || !LineBoxes()->First());
+    for (LayoutBox* atomic_inline_child : atomic_inline_children) {
+      atomic_inline_child->LayoutIfNeeded();
+    }
+
     LayoutRunsAndFloats(layout_state);
   }
 
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc
index 0c9af91..98ffca9 100644
--- a/third_party/blink/renderer/core/layout/layout_box.cc
+++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -1155,11 +1155,10 @@
   return GetScrollableArea() ? GetScrollableArea()->ScrollOrigin() : IntPoint();
 }
 
-IntSize LayoutBox::ScrolledContentOffset() const {
+LayoutSize LayoutBox::ScrolledContentOffset() const {
   DCHECK(HasOverflowClip());
   DCHECK(GetScrollableArea());
-  // FIXME: Return DoubleSize here. crbug.com/414283.
-  return GetScrollableArea()->ScrollOffsetInt();
+  return LayoutSize(GetScrollableArea()->GetScrollOffset());
 }
 
 PhysicalRect LayoutBox::ClippingRect(const PhysicalOffset& location) const {
@@ -1232,7 +1231,7 @@
   // c) Container scroll offset.
   if (container_object->IsBox() && container_object != ancestor &&
       ToLayoutBox(container_object)->ContainedContentsScroll(*this)) {
-    IntSize offset = -ToLayoutBox(container_object)->ScrolledContentOffset();
+    LayoutSize offset(-ToLayoutBox(container_object)->ScrolledContentOffset());
     transform.PostTranslate(offset.Width(), offset.Height());
   }
 
@@ -1967,9 +1966,8 @@
   if (!NeedsLayout())
     SetShouldCheckForPaintInvalidation();
 
-  if (GetNode() && GetNode()->IsElementNode()) {
-    Element& element = ToElement(*GetNode());
-    element.SetNeedsResizeObserverUpdate();
+  if (auto* element = DynamicTo<Element>(GetNode())) {
+    element->SetNeedsResizeObserverUpdate();
   }
 }
 
diff --git a/third_party/blink/renderer/core/layout/layout_box.h b/third_party/blink/renderer/core/layout/layout_box.h
index a735a69..51fc685 100644
--- a/third_party/blink/renderer/core/layout/layout_box.h
+++ b/third_party/blink/renderer/core/layout/layout_box.h
@@ -1373,7 +1373,7 @@
   // See README.md for an explanation of scroll origin.
   IntSize OriginAdjustmentForScrollbars() const;
   IntPoint ScrollOrigin() const;
-  IntSize ScrolledContentOffset() const;
+  LayoutSize ScrolledContentOffset() const;
 
   // Maps from scrolling contents space to box space and apply overflow
   // clip if needed. Returns true if no clipping applied or the flattened quad
diff --git a/third_party/blink/renderer/core/layout/layout_box_test.cc b/third_party/blink/renderer/core/layout/layout_box_test.cc
index 04fc9c3..e298eb90 100644
--- a/third_party/blink/renderer/core/layout/layout_box_test.cc
+++ b/third_party/blink/renderer/core/layout/layout_box_test.cc
@@ -1208,7 +1208,7 @@
 
 #define EXPECT_ZERO_SCROLL(box)                                      \
   do {                                                               \
-    EXPECT_EQ(IntSize(), box->ScrolledContentOffset());              \
+    EXPECT_EQ(LayoutSize(), box->ScrolledContentOffset());           \
     const auto* scrollable_area = box->GetScrollableArea();          \
     EXPECT_EQ(IntSize(), scrollable_area->ScrollOffsetInt());        \
     EXPECT_EQ(IntPoint(), scrollable_area->ScrollOrigin());          \
@@ -1313,7 +1313,7 @@
 
   const auto* normal = GetLayoutBoxByElementId("normal");
   const auto* scrollable_area = normal->GetScrollableArea();
-  EXPECT_EQ(IntSize(), normal->ScrolledContentOffset());
+  EXPECT_EQ(LayoutSize(), normal->ScrolledContentOffset());
   EXPECT_EQ(IntSize(), normal->OriginAdjustmentForScrollbars());
   EXPECT_EQ(IntSize(), scrollable_area->ScrollOffsetInt());
   // 50 = border_left, 20 = border_top
@@ -1335,7 +1335,7 @@
 
   const auto* vlr = GetLayoutBoxByElementId("vlr");
   scrollable_area = vlr->GetScrollableArea();
-  EXPECT_EQ(IntSize(), vlr->ScrolledContentOffset());
+  EXPECT_EQ(LayoutSize(), vlr->ScrolledContentOffset());
   EXPECT_EQ(IntSize(), vlr->OriginAdjustmentForScrollbars());
   EXPECT_EQ(IntSize(), scrollable_area->ScrollOffsetInt());
   // 2060 = child_width + padding_left + padding_right
@@ -1356,7 +1356,7 @@
 
   const auto* vrl = GetLayoutBoxByElementId("vrl");
   scrollable_area = vrl->GetScrollableArea();
-  EXPECT_EQ(IntSize(), vrl->ScrolledContentOffset());
+  EXPECT_EQ(LayoutSize(), vrl->ScrolledContentOffset());
   EXPECT_EQ(IntSize(), vrl->OriginAdjustmentForScrollbars());
   EXPECT_EQ(IntSize(), scrollable_area->ScrollOffsetInt());
   // Same as "vlr" except for flipping.
@@ -1373,7 +1373,7 @@
 
   const auto* rtl = GetLayoutBoxByElementId("rtl");
   scrollable_area = rtl->GetScrollableArea();
-  EXPECT_EQ(IntSize(), rtl->ScrolledContentOffset());
+  EXPECT_EQ(LayoutSize(), rtl->ScrolledContentOffset());
   EXPECT_EQ(IntSize(15, 0), rtl->OriginAdjustmentForScrollbars());
   EXPECT_EQ(IntSize(), scrollable_area->ScrollOffsetInt());
   // The contents overflow to the left.
@@ -1393,7 +1393,7 @@
 
   const auto* rtl_vlr = GetLayoutBoxByElementId("rtl-vlr");
   scrollable_area = rtl_vlr->GetScrollableArea();
-  EXPECT_EQ(IntSize(), rtl_vlr->ScrolledContentOffset());
+  EXPECT_EQ(LayoutSize(), rtl_vlr->ScrolledContentOffset());
   EXPECT_EQ(IntSize(), rtl_vlr->OriginAdjustmentForScrollbars());
   EXPECT_EQ(IntSize(), scrollable_area->ScrollOffsetInt());
   // 2060 = child_width + padding_left + padding_right
@@ -1412,7 +1412,7 @@
 
   const auto* rtl_vrl = GetLayoutBoxByElementId("rtl-vrl");
   scrollable_area = rtl_vrl->GetScrollableArea();
-  EXPECT_EQ(IntSize(), rtl_vrl->ScrolledContentOffset());
+  EXPECT_EQ(LayoutSize(), rtl_vrl->ScrolledContentOffset());
   EXPECT_EQ(IntSize(), rtl_vrl->OriginAdjustmentForScrollbars());
   EXPECT_EQ(IntSize(), scrollable_area->ScrollOffsetInt());
   // Same as "vlr" except for flipping.
diff --git a/third_party/blink/renderer/core/layout/layout_embedded_content.cc b/third_party/blink/renderer/core/layout/layout_embedded_content.cc
index 927ff59..124ed8b 100644
--- a/third_party/blink/renderer/core/layout/layout_embedded_content.cc
+++ b/third_party/blink/renderer/core/layout/layout_embedded_content.cc
@@ -384,8 +384,11 @@
   // TODO(szager): Refactor this functionality into EmbeddedContentView, rather
   // than reimplementing in each concrete subclass.
   LayoutView* layout_view = View();
-  if (layout_view && layout_view->HasOverflowClip())
-    frame_rect.Move(layout_view->ScrolledContentOffset());
+  if (layout_view && layout_view->HasOverflowClip()) {
+    // Floored because the frame_rect in a content view is an IntRect. We may
+    // want to reevaluate that since scroll offsets/layout can be fractional.
+    frame_rect.Move(FlooredIntSize(layout_view->ScrolledContentOffset()));
+  }
 
   embedded_content_view.SetFrameRect(frame_rect);
 }
diff --git a/third_party/blink/renderer/core/layout/layout_flexible_box.cc b/third_party/blink/renderer/core/layout/layout_flexible_box.cc
index da431e5..160d6e2 100644
--- a/third_party/blink/renderer/core/layout/layout_flexible_box.cc
+++ b/third_party/blink/renderer/core/layout/layout_flexible_box.cc
@@ -556,6 +556,13 @@
   return IsHorizontalFlow() ? child.ContentWidth() : child.ContentHeight();
 }
 
+LayoutUnit LayoutFlexibleBox::MainAxisContentExtentForChildIncludingScrollbar(
+    const LayoutBox& child) const {
+  return IsHorizontalFlow()
+             ? child.ContentWidth() + child.VerticalScrollbarWidth()
+             : child.ContentHeight() + child.HorizontalScrollbarHeight();
+}
+
 LayoutUnit LayoutFlexibleBox::CrossAxisExtent() const {
   return IsHorizontalFlow() ? Size().Height() : Size().Width();
 }
@@ -586,7 +593,7 @@
     const LayoutBox& child,
     SizeType size_type,
     const Length& size,
-    LayoutUnit border_scrollbar_padding) const {
+    LayoutUnit border_and_padding) const {
   if (!MainAxisIsInlineAxis(child)) {
     // We don't have to check for "auto" here - computeContentLogicalHeight
     // will just return -1 for that case anyway. It's safe to access
@@ -595,21 +602,24 @@
     // if necessary (see ComputeNextFlexLine and the call to
     // childHasIntrinsicMainAxisSize) so we can be sure that the two height
     // calls here will return up-to-date data.
-    return child.ComputeContentLogicalHeight(
+    LayoutUnit logical_height = child.ComputeContentLogicalHeight(
         size_type, size, child.IntrinsicContentLogicalHeight());
+    if (logical_height == -1)
+      return logical_height;
+    return logical_height + child.ScrollbarLogicalHeight();
   }
   // computeLogicalWidth always re-computes the intrinsic widths. However, when
   // our logical width is auto, we can just use our cached value. So let's do
   // that here. (Compare code in LayoutBlock::computePreferredLogicalWidths)
   if (child.StyleRef().LogicalWidth().IsAuto() && !HasAspectRatio(child)) {
     if (size.IsMinContent())
-      return child.MinPreferredLogicalWidth() - border_scrollbar_padding;
+      return child.MinPreferredLogicalWidth() - border_and_padding;
     if (size.IsMaxContent())
-      return child.MaxPreferredLogicalWidth() - border_scrollbar_padding;
+      return child.MaxPreferredLogicalWidth() - border_and_padding;
   }
   return child.ComputeLogicalWidthUsing(size_type, size, ContentLogicalWidth(),
                                         this) -
-         border_scrollbar_padding;
+         border_and_padding;
 }
 
 LayoutUnit LayoutFlexibleBox::ContentInsetRight() const {
@@ -831,7 +841,7 @@
 DISABLE_CFI_PERF
 LayoutUnit LayoutFlexibleBox::ComputeInnerFlexBaseSizeForChild(
     LayoutBox& child,
-    LayoutUnit main_axis_border_scrollbar_padding,
+    LayoutUnit main_axis_border_and_padding,
     ChildLayoutType child_layout_type) {
   if (child.IsImage() || child.IsVideo() || child.IsCanvas())
     UseCounter::Count(GetDocument(), WebFeature::kAspectRatioFlexItem);
@@ -840,7 +850,7 @@
   if (MainAxisLengthIsDefinite(child, flex_basis)) {
     return std::max(LayoutUnit(), ComputeMainAxisExtentForChild(
                                       child, kMainOrPreferredSize, flex_basis,
-                                      main_axis_border_scrollbar_padding));
+                                      main_axis_border_and_padding));
   }
 
   if (UseChildAspectRatio(child)) {
@@ -850,7 +860,7 @@
     LayoutUnit result =
         ComputeMainSizeFromAspectRatioUsing(child, cross_size_length);
     result = AdjustChildSizeForAspectRatioCrossAxisMinAndMax(child, result);
-    return result - main_axis_border_scrollbar_padding;
+    return result - main_axis_border_and_padding;
   }
 
   // The flex basis is indefinite (=auto), so we need to compute the actual
@@ -858,17 +868,18 @@
   // width; for the height we need to lay out the child.
   LayoutUnit main_axis_extent;
   if (MainAxisIsInlineAxis(child)) {
-    // We don't need to add scrollbarLogicalWidth here because the preferred
+    // We don't need to add ScrollbarLogicalWidth here because the preferred
     // width includes the scrollbar, even for overflow: auto.
     main_axis_extent = child.MaxPreferredLogicalWidth();
   } else {
     if (child.ShouldApplySizeContainment())
-      return LayoutUnit();
+      return LayoutUnit(child.ScrollbarLogicalHeight());
     // The needed value here is the logical height. This value does not include
-    // the border/scrollbar/padding size, so we can just return the locked value
-    // directly.
-    if (child.DisplayLockInducesSizeContainment())
-      return child.GetDisplayLockContext()->GetLockedContentLogicalHeight();
+    // the border/scrollbar/padding size, so we have to add the scrollbar.
+    if (child.DisplayLockInducesSizeContainment()) {
+      return child.GetDisplayLockContext()->GetLockedContentLogicalHeight() +
+             child.ScrollbarLogicalHeight();
+    }
 
     if (child_layout_type == kNeverLayout)
       return LayoutUnit();
@@ -877,9 +888,9 @@
     DCHECK(intrinsic_size_along_main_axis_.Contains(&child));
     main_axis_extent = intrinsic_size_along_main_axis_.at(&child);
   }
-  DCHECK_GE(main_axis_extent - main_axis_border_scrollbar_padding, LayoutUnit())
-      << main_axis_extent << " - " << main_axis_border_scrollbar_padding;
-  return main_axis_extent - main_axis_border_scrollbar_padding;
+  DCHECK_GE(main_axis_extent - main_axis_border_and_padding, LayoutUnit())
+      << main_axis_extent << " - " << main_axis_border_and_padding;
+  return main_axis_extent - main_axis_border_and_padding;
 }
 
 void LayoutFlexibleBox::LayoutFlexItems(bool relayout_children,
@@ -1058,14 +1069,14 @@
 MinMaxSize LayoutFlexibleBox::ComputeMinAndMaxSizesForChild(
     const FlexLayoutAlgorithm& algorithm,
     const LayoutBox& child,
-    LayoutUnit border_scrollbar_padding) const {
+    LayoutUnit border_and_padding) const {
   MinMaxSize sizes{LayoutUnit(), LayoutUnit::Max()};
 
   const Length& max = IsHorizontalFlow() ? child.StyleRef().MaxWidth()
                                          : child.StyleRef().MaxHeight();
   if (max.IsSpecifiedOrIntrinsic()) {
-    sizes.max_size = ComputeMainAxisExtentForChild(child, kMaxSize, max,
-                                                   border_scrollbar_padding);
+    sizes.max_size =
+        ComputeMainAxisExtentForChild(child, kMaxSize, max, border_and_padding);
     if (sizes.max_size == -1)
       sizes.max_size = LayoutUnit::Max();
     DCHECK_GE(sizes.max_size, LayoutUnit());
@@ -1074,14 +1085,14 @@
   const Length& min = IsHorizontalFlow() ? child.StyleRef().MinWidth()
                                          : child.StyleRef().MinHeight();
   if (min.IsSpecifiedOrIntrinsic()) {
-    sizes.min_size = ComputeMainAxisExtentForChild(child, kMinSize, min,
-                                                   border_scrollbar_padding);
+    sizes.min_size =
+        ComputeMainAxisExtentForChild(child, kMinSize, min, border_and_padding);
     // computeMainAxisExtentForChild can return -1 when the child has a
     // percentage min size, but we have an indefinite size in that axis.
     sizes.min_size = std::max(LayoutUnit(), sizes.min_size);
   } else if (algorithm.ShouldApplyMinSizeAutoForChild(child)) {
     LayoutUnit content_size = ComputeMainAxisExtentForChild(
-        child, kMinSize, Length::MinContent(), border_scrollbar_padding);
+        child, kMinSize, Length::MinContent(), border_and_padding);
     DCHECK_GE(content_size, LayoutUnit());
     if (HasAspectRatio(child) && child.IntrinsicSize().Height() > 0)
       content_size =
@@ -1098,7 +1109,7 @@
                                                    : child.StyleRef().Height();
       if (MainAxisLengthIsDefinite(child, main_size)) {
         LayoutUnit resolved_main_size = ComputeMainAxisExtentForChild(
-            child, kMainOrPreferredSize, main_size, border_scrollbar_padding);
+            child, kMainOrPreferredSize, main_size, border_and_padding);
         DCHECK_GE(resolved_main_size, LayoutUnit());
         LayoutUnit specified_size =
             sizes.max_size != -1 ? std::min(resolved_main_size, sizes.max_size)
@@ -1214,21 +1225,20 @@
     }
   }
 
-  LayoutUnit border_scrollbar_padding =
-      IsHorizontalFlow()
-          ? child.BorderAndPaddingWidth() + child.VerticalScrollbarWidth()
-          : child.BorderAndPaddingHeight() + child.HorizontalScrollbarHeight();
+  LayoutUnit border_and_padding = IsHorizontalFlow()
+                                      ? child.BorderAndPaddingWidth()
+                                      : child.BorderAndPaddingHeight();
 
-  LayoutUnit child_inner_flex_base_size = ComputeInnerFlexBaseSizeForChild(
-      child, border_scrollbar_padding, layout_type);
+  LayoutUnit child_inner_flex_base_size =
+      ComputeInnerFlexBaseSizeForChild(child, border_and_padding, layout_type);
 
-  MinMaxSize sizes = ComputeMinAndMaxSizesForChild(*algorithm, child,
-                                                   border_scrollbar_padding);
+  MinMaxSize sizes =
+      ComputeMinAndMaxSizesForChild(*algorithm, child, border_and_padding);
 
   LayoutUnit margin =
       IsHorizontalFlow() ? child.MarginWidth() : child.MarginHeight();
   algorithm->emplace_back(&child, child_inner_flex_base_size, sizes,
-                          border_scrollbar_padding, margin);
+                          border_and_padding, margin);
 }
 
 static LayoutUnit AlignmentOffset(LayoutUnit available_free_space,
@@ -1408,8 +1418,7 @@
     const FlexLayoutAlgorithm& algorithm,
     const LayoutBox& child) const {
   bool result = false;
-  bool main_axis_is_inline = MainAxisIsInlineAxis(child);
-  if (!main_axis_is_inline && !child.ShouldApplySizeContainment() &&
+  if (!MainAxisIsInlineAxis(child) && !child.ShouldApplySizeContainment() &&
       !child.DisplayLockInducesSizeContainment()) {
     Length child_flex_basis = FlexBasisForChild(child);
     const Length& child_min_size = IsHorizontalFlow()
@@ -1424,11 +1433,6 @@
     } else if (algorithm.ShouldApplyMinSizeAutoForChild(child)) {
       result = true;
     }
-  } else if (main_axis_is_inline &&
-             child.StyleRef().OverflowInlineDirection() == EOverflow::kAuto) {
-    // Because scrollbars depend on layout, we need to layout before running
-    // the algorithm to get an up-to-date size.
-    result = true;
   }
   return result;
 }
@@ -1453,8 +1457,10 @@
     child->SetShouldCheckForPaintInvalidation();
 
     SetOverrideMainAxisContentSizeForChild(flex_item);
+    // The flexed content size and the override size include the scrollbar
+    // width, so we need to compare to the size including the scrollbar.
     if (flex_item.flexed_content_size !=
-        MainAxisContentExtentForChild(*child)) {
+        MainAxisContentExtentForChildIncludingScrollbar(*child)) {
       child->SetSelfNeedsLayoutForAvailableSpace(true);
     } else {
       // To avoid double applying margin changes in
@@ -1489,8 +1495,7 @@
     // But it turns out that tables ignore the override size, and so we have
     // to re-check the size so that we place the flex item correctly.
     flex_item.flexed_content_size =
-        MainAxisExtentForChild(*child) -
-        flex_item.main_axis_border_scrollbar_padding;
+        MainAxisExtentForChild(*child) - flex_item.main_axis_border_and_padding;
     flex_item.cross_axis_size = CrossAxisUnstretchedExtentForChild(*child);
   }
 }
diff --git a/third_party/blink/renderer/core/layout/layout_flexible_box.h b/third_party/blink/renderer/core/layout/layout_flexible_box.h
index 157d3758..f03f498 100644
--- a/third_party/blink/renderer/core/layout/layout_flexible_box.h
+++ b/third_party/blink/renderer/core/layout/layout_flexible_box.h
@@ -127,13 +127,14 @@
   LayoutUnit ChildUnstretchedLogicalWidth(const LayoutBox& child) const;
   LayoutUnit MainAxisExtentForChild(const LayoutBox& child) const;
   LayoutUnit MainAxisContentExtentForChild(const LayoutBox& child) const;
+  LayoutUnit MainAxisContentExtentForChildIncludingScrollbar(
+      const LayoutBox& child) const;
   LayoutUnit CrossAxisExtent() const;
   LayoutUnit MainAxisContentExtent(LayoutUnit content_logical_height);
-  LayoutUnit ComputeMainAxisExtentForChild(
-      const LayoutBox& child,
-      SizeType,
-      const Length& size,
-      LayoutUnit border_scrollbar_padding) const;
+  LayoutUnit ComputeMainAxisExtentForChild(const LayoutBox& child,
+                                           SizeType,
+                                           const Length& size,
+                                           LayoutUnit border_and_padding) const;
 
   LayoutUnit ContentInsetBottom() const;
   LayoutUnit ContentInsetRight() const;
@@ -152,7 +153,7 @@
   void SetFlowAwareLocationForChild(LayoutBox& child, const LayoutPoint&);
   LayoutUnit ComputeInnerFlexBaseSizeForChild(
       LayoutBox& child,
-      LayoutUnit main_axis_border_scrollbar_padding,
+      LayoutUnit main_axis_border_and_padding,
       ChildLayoutType = kLayoutIfNeeded);
   void AdjustAlignmentForChild(LayoutBox& child, LayoutUnit);
   void ResetAlignmentForChild(LayoutBox& child, LayoutUnit);
@@ -179,10 +180,9 @@
 
   LayoutUnit ComputeChildMarginValue(const Length& margin);
   void PrepareOrderIteratorAndMargins();
-  MinMaxSize ComputeMinAndMaxSizesForChild(
-      const FlexLayoutAlgorithm& algorithm,
-      const LayoutBox& child,
-      LayoutUnit border_scrollbar_padding) const;
+  MinMaxSize ComputeMinAndMaxSizesForChild(const FlexLayoutAlgorithm& algorithm,
+                                           const LayoutBox& child,
+                                           LayoutUnit border_and_padding) const;
   LayoutUnit AdjustChildSizeForAspectRatioCrossAxisMinAndMax(
       const LayoutBox& child,
       LayoutUnit child_size) const;
diff --git a/third_party/blink/renderer/core/layout/layout_flexible_box_test.cc b/third_party/blink/renderer/core/layout/layout_flexible_box_test.cc
index b71ecd3..8a84ff2 100644
--- a/third_party/blink/renderer/core/layout/layout_flexible_box_test.cc
+++ b/third_party/blink/renderer/core/layout/layout_flexible_box_test.cc
@@ -79,8 +79,8 @@
               flex_box->PhysicalContentBoxRect());
   }
 
-  EXPECT_EQ(IntSize(), flex_box->ScrolledContentOffset());
-  EXPECT_EQ(IntSize(), flex_box->GetScrollableArea()->ScrollOffsetInt());
+  EXPECT_EQ(LayoutSize(), flex_box->ScrolledContentOffset());
+  EXPECT_EQ(ScrollOffset(), flex_box->GetScrollableArea()->GetScrollOffset());
 }
 
 void LayoutFlexibleBoxTest::ExpectSameAsRowHTB() {
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc
index 228911dc..4a482c1 100644
--- a/third_party/blink/renderer/core/layout/layout_object.cc
+++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -289,11 +289,9 @@
   if (node_)
     GetFrameView()->IncrementLayoutObjectCount();
 
-  if (const Node* node = GetNode()) {
-    if (const Element* element = ToElementOrNull(node)) {
-      if (element->ShouldForceLegacyLayout())
-        SetForceLegacyLayout();
-    }
+  if (const auto* element = DynamicTo<Element>(GetNode())) {
+    if (element->ShouldForceLegacyLayout())
+      SetForceLegacyLayout();
   }
 }
 
@@ -1572,7 +1570,7 @@
 }
 
 void LayoutObject::AdjustVisualRectForCompositedScrolling(
-    IntRect& rect,
+    LayoutRect& rect,
     const LayoutBoxModelObject& paint_invalidation_container) const {
   if (CompositedScrollsWithRespectTo(paint_invalidation_container)) {
     rect.Move(
@@ -1580,9 +1578,9 @@
   }
 }
 
-IntRect LayoutObject::VisualRectIncludingCompositedScrolling(
+LayoutRect LayoutObject::VisualRectIncludingCompositedScrolling(
     const LayoutBoxModelObject& paint_invalidation_container) const {
-  IntRect rect = VisualRect();
+  LayoutRect rect(VisualRect());
   AdjustVisualRectForCompositedScrolling(rect, paint_invalidation_container);
   return rect;
 }
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h
index 6b5b4b1d..12ae35dd 100644
--- a/third_party/blink/renderer/core/layout/layout_object.h
+++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -2026,7 +2026,7 @@
 
   // The visual rect, in the the space of the paint invalidation container
   // (*not* the graphics layer that paints this object).
-  IntRect VisualRectIncludingCompositedScrolling(
+  LayoutRect VisualRectIncludingCompositedScrolling(
       const LayoutBoxModelObject& paint_invalidation_container) const;
 
   // Called when the previous visual rect(s) is no longer valid.
@@ -2657,7 +2657,7 @@
   // the |paint_invalidation_container|, if needed. They can be different only
   // if |paint_invalidation_container| is a composited scroller.
   void AdjustVisualRectForCompositedScrolling(
-      IntRect& visual_rect,
+      LayoutRect& visual_rect,
       const LayoutBoxModelObject& paint_invalidation_container) const;
 
   FloatQuad LocalToAncestorQuadInternal(const FloatQuad&,
diff --git a/third_party/blink/renderer/core/layout/layout_shift_region.cc b/third_party/blink/renderer/core/layout/layout_shift_region.cc
index 8eb2105..41197bd 100644
--- a/third_party/blink/renderer/core/layout/layout_shift_region.cc
+++ b/third_party/blink/renderer/core/layout/layout_shift_region.cc
@@ -3,6 +3,8 @@
 // found in the LICENSE file.
 
 #include "third_party/blink/renderer/core/layout/layout_shift_region.h"
+#include "third_party/blink/renderer/platform/wtf/hash_map.h"
+#include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
 
 namespace blink {
 
@@ -44,7 +46,11 @@
  private:
   Vector<int> endpoints_;
   // Avoid WTF::HashMap as key may be 0 or -1.
-  std::unordered_map<int, unsigned> endpoint_to_index_;
+  HashMap<int,
+          unsigned,
+          WTF::AlreadyHashed,
+          WTF::UnsignedWithZeroKeyHashTraits<int>>
+      endpoint_to_index_;
 
 #if DCHECK_IS_ON()
   bool has_index_ = false;
@@ -61,8 +67,8 @@
   DCHECK_HAS_INDEX(false);
 
   // We can't index yet, but use the map to de-dupe.
-  auto ret = endpoint_to_index_.insert(std::make_pair(endpoint, 0u));
-  if (ret.second)
+  auto ret = endpoint_to_index_.insert(endpoint, 0u);
+  if (ret.is_new_entry)
     endpoints_.push_back(endpoint);
 }
 
@@ -71,7 +77,7 @@
   std::sort(endpoints_.begin(), endpoints_.end());
   unsigned i = 0;
   for (const int& e : endpoints_)
-    endpoint_to_index_[e] = i++;
+    endpoint_to_index_.Set(e, i++);
 
 #if DCHECK_IS_ON()
   has_index_ = true;
diff --git a/third_party/blink/renderer/core/layout/layout_table_section.cc b/third_party/blink/renderer/core/layout/layout_table_section.cc
index fffb5b3..edf85f3 100644
--- a/third_party/blink/renderer/core/layout/layout_table_section.cc
+++ b/third_party/blink/renderer/core/layout/layout_table_section.cc
@@ -1458,6 +1458,7 @@
 }
 
 void LayoutTableSection::RecalcVisualOverflow() {
+  SECURITY_CHECK(!needs_cell_recalc_);
   unsigned total_rows = grid_.size();
   for (unsigned r = 0; r < total_rows; r++) {
     LayoutTableRow* row_layouter = RowLayoutObjectAt(r);
@@ -1483,6 +1484,7 @@
 }
 
 LayoutUnit LayoutTableSection::FirstLineBoxBaseline() const {
+  DCHECK(!NeedsCellRecalc());
   if (!grid_.size())
     return LayoutUnit(-1);
 
@@ -1526,6 +1528,7 @@
     const LayoutRect& damage_rect,
     CellSpan& rows,
     CellSpan& columns) const {
+  DCHECK(!NeedsCellRecalc());
   if (!grid_.size()) {
     rows = CellSpan();
     columns = CellSpan(1, 1);
diff --git a/third_party/blink/renderer/core/layout/layout_table_section.h b/third_party/blink/renderer/core/layout/layout_table_section.h
index 2870e1e..e9da2c3 100644
--- a/third_party/blink/renderer/core/layout/layout_table_section.h
+++ b/third_party/blink/renderer/core/layout/layout_table_section.h
@@ -146,13 +146,16 @@
   };
 
   TableGridCell& GridCellAt(unsigned row, unsigned effective_column) {
+    SECURITY_DCHECK(!needs_cell_recalc_);
     return grid_[row].grid_cells[effective_column];
   }
   const TableGridCell& GridCellAt(unsigned row,
                                   unsigned effective_column) const {
+    SECURITY_DCHECK(!needs_cell_recalc_);
     return grid_[row].grid_cells[effective_column];
   }
   LayoutTableCell* PrimaryCellAt(unsigned row, unsigned effective_column) {
+    SECURITY_DCHECK(!needs_cell_recalc_);
     auto& grid_cells = grid_[row].grid_cells;
     if (effective_column >= grid_cells.size())
       return nullptr;
@@ -173,12 +176,19 @@
         row, effective_column);
   }
 
-  unsigned NumCols(unsigned row) const { return grid_[row].grid_cells.size(); }
+  unsigned NumCols(unsigned row) const {
+    DCHECK(!NeedsCellRecalc());
+    return grid_[row].grid_cells.size();
+  }
 
   // Returns null for cells with a rowspan that exceed the last row. Possibly
   // others.
-  LayoutTableRow* RowLayoutObjectAt(unsigned row) { return grid_[row].row; }
+  LayoutTableRow* RowLayoutObjectAt(unsigned row) {
+    SECURITY_DCHECK(!needs_cell_recalc_);
+    return grid_[row].row;
+  }
   const LayoutTableRow* RowLayoutObjectAt(unsigned row) const {
+    SECURITY_DCHECK(!needs_cell_recalc_);
     return grid_[row].row;
   }
 
diff --git a/third_party/blink/renderer/core/layout/layout_tree_as_text.cc b/third_party/blink/renderer/core/layout/layout_tree_as_text.cc
index ea3585eb..9c20cd4 100644
--- a/third_party/blink/renderer/core/layout/layout_tree_as_text.cc
+++ b/third_party/blink/renderer/core/layout/layout_tree_as_text.cc
@@ -305,18 +305,16 @@
   }
 
   if (behavior & kLayoutAsTextShowIDAndClass) {
-    Node* node = o.GetNode();
-    if (node && node->IsElementNode()) {
-      Element& element = ToElement(*node);
-      if (element.HasID())
-        ts << " id=\"" + element.GetIdAttribute() + "\"";
+    if (auto* element = DynamicTo<Element>(o.GetNode())) {
+      if (element->HasID())
+        ts << " id=\"" + element->GetIdAttribute() + "\"";
 
-      if (element.HasClass()) {
+      if (element->HasClass()) {
         ts << " class=\"";
-        for (wtf_size_t i = 0; i < element.ClassNames().size(); ++i) {
+        for (wtf_size_t i = 0; i < element->ClassNames().size(); ++i) {
           if (i > 0)
             ts << " ";
-          ts << element.ClassNames()[i];
+          ts << element->ClassNames()[i];
         }
         ts << "\"";
       }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
index 0c20fe7d..9f7c3d81 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
@@ -94,6 +94,11 @@
     LayoutUnit main_axis_border_scrollbar_padding =
         is_horizontal_flow ? physical_border_padding.HorizontalSum()
                            : physical_border_padding.VerticalSum();
+    LayoutUnit main_axis_border_and_padding =
+        main_axis_border_scrollbar_padding -
+        (is_horizontal_flow
+             ? child.GetLayoutBox()->VerticalScrollbarWidth()
+             : child.GetLayoutBox()->HorizontalScrollbarHeight());
 
     // We want the child's min/max size in its writing mode, not ours. We'll
     // only ever use it if the child's inline axis is our main axis.
@@ -145,8 +150,10 @@
 
     // Spec calls this "flex base size"
     // https://www.w3.org/TR/css-flexbox-1/#algo-main-item
+    // Blink's FlexibleBoxAlgorithm expects it to be content + scrollbar widths,
+    // but no padding or border.
     LayoutUnit flex_base_content_size =
-        flex_base_border_box - main_axis_border_scrollbar_padding;
+        flex_base_border_box - main_axis_border_and_padding;
 
     NGPhysicalBoxStrut physical_child_margins =
         ComputePhysicalMargins(child_space, child_style);
@@ -245,7 +252,7 @@
     algorithm_
         ->emplace_back(child.GetLayoutBox(), flex_base_content_size,
                        min_max_sizes_in_main_axis_direction,
-                       main_axis_border_scrollbar_padding, main_axis_margin)
+                       main_axis_border_and_padding, main_axis_margin)
         .ng_input_node = child;
   }
 }
@@ -291,14 +298,12 @@
       LogicalSize available_size;
       if (is_column_) {
         available_size.inline_size = content_box_size_.inline_size;
-        available_size.block_size =
-            flex_item.flexed_content_size +
-            flex_item.main_axis_border_scrollbar_padding;
+        available_size.block_size = flex_item.flexed_content_size +
+                                    flex_item.main_axis_border_and_padding;
         space_builder.SetIsFixedSizeBlock(true);
       } else {
-        available_size.inline_size =
-            flex_item.flexed_content_size +
-            flex_item.main_axis_border_scrollbar_padding;
+        available_size.inline_size = flex_item.flexed_content_size +
+                                     flex_item.main_axis_border_and_padding;
         available_size.block_size = content_box_size_.block_size;
         space_builder.SetIsFixedSizeInline(true);
       }
@@ -371,10 +376,9 @@
         SetOrthogonalFallbackInlineSizeIfNeeded(
             Style(), flex_item.ng_input_node, &space_builder);
 
-        LogicalSize available_size(
-            flex_item.flexed_content_size +
-                flex_item.main_axis_border_scrollbar_padding,
-            flex_item.cross_axis_size);
+        LogicalSize available_size(flex_item.flexed_content_size +
+                                       flex_item.main_axis_border_and_padding,
+                                   flex_item.cross_axis_size);
         if (is_column_)
           available_size.Transpose();
         space_builder.SetAvailableSize(available_size);
diff --git a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc
index 3923c78..4e53eea1 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc
@@ -450,15 +450,22 @@
       container_info.ContentSize(candidate_style.GetPosition());
   PhysicalSize container_physical_content_size =
       ToPhysicalSize(container_content_size, writing_mode_);
-  LogicalSize container_content_size_in_candidate_writing_mode =
-      container_physical_content_size.ConvertToLogical(candidate_writing_mode);
 
   // Determine if we need to actually run the full OOF-positioned sizing, and
   // positioning algorithm.
-  if (scoped_refptr<const NGLayoutResult> cached_result =
-          node.CachedLayoutResultForOutOfFlowPositioned(
-              container_content_size_in_candidate_writing_mode))
-    return cached_result;
+  //
+  // When this candidate has an inline container, the container may move without
+  // setting |NeedsLayout()| to the candidate and that there are cases where the
+  // cache validity cannot be determined.
+  if (!candidate.inline_container) {
+    LogicalSize container_content_size_in_candidate_writing_mode =
+        container_physical_content_size.ConvertToLogical(
+            candidate_writing_mode);
+    if (scoped_refptr<const NGLayoutResult> cached_result =
+            node.CachedLayoutResultForOutOfFlowPositioned(
+                container_content_size_in_candidate_writing_mode))
+      return cached_result;
+  }
 
   // Adjust the |static_position| (which is currently relative to the default
   // container's border-box). ng_absolute_utils expects the static position to
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc
index 3a72dac..0d3e2b5 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.cc
@@ -152,7 +152,7 @@
   return PhysicalRect({}, Size());
 }
 
-IntSize NGPhysicalBoxFragment::ScrolledContentOffset() const {
+LayoutSize NGPhysicalBoxFragment::ScrolledContentOffset() const {
   DCHECK(GetLayoutObject() && GetLayoutObject()->IsBox());
   const LayoutBox* box = ToLayoutBox(GetLayoutObject());
   return box->ScrolledContentOffset();
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h
index 8df59ad..2c7cf70 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h
@@ -64,7 +64,7 @@
   PhysicalRect OverflowClipRect(
       const PhysicalOffset& location,
       OverlayScrollbarClipBehavior = kIgnorePlatformOverlayScrollbarSize) const;
-  IntSize ScrolledContentOffset() const;
+  LayoutSize ScrolledContentOffset() const;
   PhysicalSize ScrollSize() const;
 
   // Compute visual overflow of this box in the local coordinate.
diff --git a/third_party/blink/renderer/core/layout/traced_layout_object.cc b/third_party/blink/renderer/core/layout/traced_layout_object.cc
index 30a93f30..e1aa734 100644
--- a/third_party/blink/renderer/core/layout/traced_layout_object.cc
+++ b/third_party/blink/renderer/core/layout/traced_layout_object.cc
@@ -24,14 +24,13 @@
   traced_value->SetString("name", object.GetName());
   if (Node* node = object.GetNode()) {
     traced_value->SetString("tag", node->nodeName());
-    if (node->IsElementNode()) {
-      Element& element = ToElement(*node);
-      if (element.HasID())
-        traced_value->SetString("htmlId", element.GetIdAttribute());
-      if (element.HasClass()) {
+    if (auto* element = DynamicTo<Element>(node)) {
+      if (element->HasID())
+        traced_value->SetString("htmlId", element->GetIdAttribute());
+      if (element->HasClass()) {
         traced_value->BeginArray("classNames");
-        for (wtf_size_t i = 0; i < element.ClassNames().size(); ++i)
-          traced_value->PushString(element.ClassNames()[i]);
+        for (wtf_size_t i = 0; i < element->ClassNames().size(); ++i)
+          traced_value->PushString(element->ClassNames()[i]);
         traced_value->EndArray();
       }
     }
diff --git a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc
index 005274e..620197d 100644
--- a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc
+++ b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc
@@ -17,6 +17,7 @@
 #include "third_party/blink/renderer/platform/weborigin/kurl.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
+#include "third_party/blink/renderer/platform/wtf/vector.h"
 
 namespace blink {
 
@@ -34,22 +35,40 @@
 PreviewsResourceLoadingHints* PreviewsResourceLoadingHints::Create(
     ExecutionContext& execution_context,
     int64_t ukm_source_id,
-    const Vector<WTF::String>& subresource_patterns_to_block) {
+    const WebVector<WebString>& subresource_patterns_to_block) {
   return MakeGarbageCollected<PreviewsResourceLoadingHints>(
       &execution_context, ukm_source_id, subresource_patterns_to_block);
 }
 
+// static
+PreviewsResourceLoadingHints*
+PreviewsResourceLoadingHints::CreateFromLoadingHintsProvider(
+    ExecutionContext& execution_context,
+    std::unique_ptr<WebLoadingHintsProvider> loading_hints_provider) {
+  WebVector<WebString> subresource_patterns_to_block;
+  for (const auto& pattern :
+       loading_hints_provider->subresource_patterns_to_block) {
+    // |pattern| is guaranteed to be ascii.
+    subresource_patterns_to_block.emplace_back(pattern);
+  }
+
+  return MakeGarbageCollected<PreviewsResourceLoadingHints>(
+      &execution_context, loading_hints_provider->ukm_source_id,
+      subresource_patterns_to_block);
+}
+
 PreviewsResourceLoadingHints::PreviewsResourceLoadingHints(
     ExecutionContext* execution_context,
     int64_t ukm_source_id,
-    const Vector<WTF::String>& subresource_patterns_to_block)
+    const WebVector<WebString>& subresource_patterns_to_block)
     : execution_context_(execution_context),
       ukm_source_id_(ukm_source_id),
       subresource_patterns_to_block_(subresource_patterns_to_block) {
   DCHECK_NE(ukm::kInvalidSourceId, ukm_source_id_);
 
   subresource_patterns_to_block_usage_.Fill(
-      false, subresource_patterns_to_block.size());
+      false,
+      static_cast<WTF::wtf_size_t>(subresource_patterns_to_block.size()));
   blocked_resource_load_priority_counts_.Fill(
       0, static_cast<int>(ResourceLoadPriority::kHighest) + 1);
 
diff --git a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h
index 32d42d7..8eed4903 100644
--- a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h
+++ b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h
@@ -6,6 +6,7 @@
 #define THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_PREVIEWS_RESOURCE_LOADING_HINTS_H_
 
 #include "base/feature_list.h"
+#include "third_party/blink/public/platform/web_loading_hints_provider.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/platform/heap/garbage_collected.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
@@ -31,12 +32,16 @@
   static PreviewsResourceLoadingHints* Create(
       ExecutionContext& execution_context,
       int64_t ukm_source_id,
-      const Vector<WTF::String>& subresource_patterns_to_block);
+      const WebVector<WebString>& subresource_patterns_to_block);
+
+  static PreviewsResourceLoadingHints* CreateFromLoadingHintsProvider(
+      ExecutionContext& execution_context,
+      std::unique_ptr<WebLoadingHintsProvider> loading_hints_provider);
 
   PreviewsResourceLoadingHints(
       ExecutionContext* execution_context,
       int64_t ukm_source_id,
-      const Vector<WTF::String>& subresource_patterns_to_block);
+      const WebVector<WebString>& subresource_patterns_to_block);
   ~PreviewsResourceLoadingHints();
 
   // Returns true if load of resource with type |type|, URL |resource_url|
@@ -62,10 +67,10 @@
 
   // |subresource_patterns_to_block_| is a collection of subresource patterns
   // for resources whose loading should be blocked. Each pattern is a
-  // WTF::String. If a subresource URL contains any of the strings specified in
+  // WebString. If a subresource URL contains any of the strings specified in
   // |subresource_patterns_to_block_|, then that subresource's loading could
   // be blocked.
-  const Vector<WTF::String> subresource_patterns_to_block_;
+  const WebVector<WebString> subresource_patterns_to_block_;
 
   // True if resource blocking hints should apply to resource of a given type.
   bool block_resource_type_[static_cast<int>(ResourceType::kMaxValue) + 1] = {
diff --git a/third_party/blink/renderer/core/loader/previews_resource_loading_hints_receiver_impl.cc b/third_party/blink/renderer/core/loader/previews_resource_loading_hints_receiver_impl.cc
index 08c0d20..0e4c1d03 100644
--- a/third_party/blink/renderer/core/loader/previews_resource_loading_hints_receiver_impl.cc
+++ b/third_party/blink/renderer/core/loader/previews_resource_loading_hints_receiver_impl.cc
@@ -5,6 +5,7 @@
 #include "third_party/blink/renderer/core/loader/previews_resource_loading_hints_receiver_impl.h"
 
 #include "base/metrics/histogram_macros.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/renderer/core/loader/document_loader.h"
 #include "third_party/blink/renderer/core/loader/previews_resource_loading_hints.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
@@ -15,7 +16,10 @@
     PreviewsResourceLoadingHintsReceiverImpl(
         mojom::blink::PreviewsResourceLoadingHintsReceiverRequest request,
         Document* document)
-    : binding_(this, std::move(request)), document_(document) {}
+    : binding_(this, std::move(request)), document_(document) {
+  DCHECK(!base::FeatureList::IsEnabled(
+      blink::features::kSendPreviewsLoadingHintsBeforeCommit));
+}
 
 PreviewsResourceLoadingHintsReceiverImpl::
     ~PreviewsResourceLoadingHintsReceiverImpl() {}
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc
index 33b2840e..24d3fee 100644
--- a/third_party/blink/renderer/core/page/context_menu_controller.cc
+++ b/third_party/blink/renderer/core/page/context_menu_controller.cc
@@ -259,17 +259,6 @@
     // An image can be null for many reasons, like being blocked, no image
     // data received from server yet.
     data.has_image_contents = result.GetImage() && !result.GetImage()->IsNull();
-    data.is_placeholder_image =
-        result.GetImage() && result.GetImage()->IsPlaceholderImage();
-    if (data.has_image_contents &&
-        IsHTMLImageElement(result.InnerNodeOrImageMapImage())) {
-      HTMLImageElement* image_element =
-          ToHTMLImageElement(result.InnerNodeOrImageMapImage());
-      if (image_element && image_element->CachedImage()) {
-        data.image_response = WrappedResourceResponse(
-            image_element->CachedImage()->GetResponse());
-      }
-    }
   } else if (!result.AbsoluteMediaURL().IsEmpty() ||
              result.GetMediaStreamDescriptor()) {
     if (!result.AbsoluteMediaURL().IsEmpty())
diff --git a/third_party/blink/renderer/core/page/pointer_lock_controller.cc b/third_party/blink/renderer/core/page/pointer_lock_controller.cc
index 9585b32..d92a9c4 100644
--- a/third_party/blink/renderer/core/page/pointer_lock_controller.cc
+++ b/third_party/blink/renderer/core/page/pointer_lock_controller.cc
@@ -138,7 +138,7 @@
   EnqueueEvent(event_type_names::kPointerlockchange, pointer_lock_document);
 
   // Set the last mouse position back the locked position.
-  if (pointer_lock_document) {
+  if (pointer_lock_document && pointer_lock_document->GetFrame()) {
     pointer_lock_document->GetFrame()
         ->GetEventHandler()
         .SetMousePositionForPointerUnlock(pointer_lock_screen_position_);
diff --git a/third_party/blink/renderer/core/paint/background_image_geometry.cc b/third_party/blink/renderer/core/paint/background_image_geometry.cc
index a2d5a2d..b940fb6 100644
--- a/third_party/blink/renderer/core/paint/background_image_geometry.cc
+++ b/third_party/blink/renderer/core/paint/background_image_geometry.cc
@@ -62,10 +62,10 @@
   return !mapping->BackgroundPaintsOntoScrollingContentsLayer();
 }
 
-IntPoint AccumulatedScrollOffsetForFixedBackground(
+LayoutPoint AccumulatedScrollOffsetForFixedBackground(
     const LayoutBoxModelObject& object,
     const LayoutBoxModelObject* container) {
-  IntPoint result;
+  LayoutPoint result;
   if (&object == container)
     return result;
 
@@ -410,10 +410,12 @@
     if (RuntimeEnabledFeatures::CompositeAfterPaintEnabled()) {
       DCHECK_EQ(obj.GetBackgroundPaintLocation(),
                 kBackgroundPaintInScrollingContents);
-      rect.SetLocation(IntPoint(ToLayoutView(obj).ScrolledContentOffset()));
+      rect.SetLocation(LayoutPoint(ToLayoutView(obj).ScrolledContentOffset()));
     } else if (auto* mapping = obj.Layer()->GetCompositedLayerMapping()) {
-      if (mapping->BackgroundPaintsOntoScrollingContentsLayer())
-        rect.SetLocation(IntPoint(ToLayoutView(obj).ScrolledContentOffset()));
+      if (mapping->BackgroundPaintsOntoScrollingContentsLayer()) {
+        rect.SetLocation(
+            LayoutPoint(ToLayoutView(obj).ScrolledContentOffset()));
+      }
     }
   }
 
diff --git a/third_party/blink/renderer/core/paint/block_painter.cc b/third_party/blink/renderer/core/paint/block_painter.cc
index 180d375..6c12d13c 100644
--- a/third_party/blink/renderer/core/paint/block_painter.cc
+++ b/third_party/blink/renderer/core/paint/block_painter.cc
@@ -73,7 +73,10 @@
   if (original_phase == PaintPhase::kMask) {
     layout_block_.PaintObject(local_paint_info, paint_offset);
   } else if (original_phase != PaintPhase::kSelfBlockBackgroundOnly &&
-             original_phase != PaintPhase::kSelfOutlineOnly) {
+             original_phase != PaintPhase::kSelfOutlineOnly &&
+             // For now all scrollers with overlay scrollbars are self-painting
+             // layers, so we don't need to traverse descendants here.
+             original_phase != PaintPhase::kOverlayScrollbars) {
     ScopedBoxContentsPaintState contents_paint_state(paint_state,
                                                      layout_block_);
     layout_block_.PaintObject(contents_paint_state.GetPaintInfo(),
@@ -107,22 +110,12 @@
     layout_block_.PaintObject(local_paint_info, paint_offset);
   }
 
-  // Our scrollbar widgets paint exactly when we tell them to, so that they work
-  // properly with z-index. We paint after we painted the background/border, so
-  // that the scrollbars will sit above the background/border.
+  // We paint scrollbars after we painted the other things, so that the
+  // scrollbars will sit above them.
   local_paint_info.phase = original_phase;
-  PaintOverflowControlsIfNeeded(local_paint_info, paint_offset);
-}
-
-void BlockPainter::PaintOverflowControlsIfNeeded(
-    const PaintInfo& paint_info,
-    const PhysicalOffset& paint_offset) {
-  if (layout_block_.HasOverflowClip() &&
-      layout_block_.StyleRef().Visibility() == EVisibility::kVisible &&
-      ShouldPaintSelfBlockBackground(paint_info.phase)) {
-    ScrollableAreaPainter(*layout_block_.Layer()->GetScrollableArea())
-        .PaintOverflowControls(paint_info, RoundedIntPoint(paint_offset),
-                               false /* painting_overlay_controls */);
+  if (auto* scrollable_area = layout_block_.GetScrollableArea()) {
+    ScrollableAreaPainter(*scrollable_area)
+        .PaintOverflowControls(local_paint_info, RoundedIntPoint(paint_offset));
   }
 }
 
diff --git a/third_party/blink/renderer/core/paint/block_painter.h b/third_party/blink/renderer/core/paint/block_painter.h
index 76b51d3..1c9e74725 100644
--- a/third_party/blink/renderer/core/paint/block_painter.h
+++ b/third_party/blink/renderer/core/paint/block_painter.h
@@ -32,8 +32,6 @@
   void PaintContents(const PaintInfo&, const PhysicalOffset& paint_offset);
   void PaintChildren(const PaintInfo&);
   void PaintChild(const LayoutBox&, const PaintInfo&);
-  void PaintOverflowControlsIfNeeded(const PaintInfo&,
-                                     const PhysicalOffset& paint_offset);
 
   // See ObjectPainter::PaintAllPhasesAtomically().
   void PaintAllChildPhasesAtomically(const LayoutBox&, const PaintInfo&);
diff --git a/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc b/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
index 2c1fa94..d785df9 100644
--- a/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
+++ b/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
@@ -1376,7 +1376,7 @@
       compositing_container->NeedsCompositedScrolling()) {
     LayoutBox& layout_box =
         ToLayoutBox(compositing_container->GetLayoutObject());
-    IntSize scroll_offset = layout_box.ScrolledContentOffset();
+    IntSize scroll_offset = FlooredIntSize(layout_box.ScrolledContentOffset());
     IntPoint scroll_origin =
         compositing_container->GetScrollableArea()->ScrollOrigin();
     scroll_origin.Move(-layout_box.OriginAdjustmentForScrollbars());
@@ -2955,12 +2955,7 @@
 }
 
 bool CompositedLayerMapping::NeedsToReparentOverflowControls() const {
-  const ComputedStyle& style = owning_layer_.GetLayoutObject().StyleRef();
-  return owning_layer_.GetScrollableArea() &&
-         owning_layer_.GetScrollableArea()->HasOverlayScrollbars() &&
-         !style.IsStackingContext() &&
-         (style.IsStacked() ||
-          owning_layer_.IsNonStackedWithInFlowStackedDescendant());
+  return owning_layer_.NeedsReorderOverlayScrollbars();
 }
 
 GraphicsLayer* CompositedLayerMapping::DetachLayerForOverflowControls() {
@@ -3178,13 +3173,6 @@
         paint_info.paint_layer->SubpixelAccumulation());
     PaintLayerPainter(*paint_info.paint_layer)
         .PaintLayerContents(context, painting_info, paint_layer_flags);
-
-    if (paint_info.paint_layer->ContainsDirtyOverlayScrollbars()) {
-      PaintLayerPainter(*paint_info.paint_layer)
-          .PaintLayerContents(
-              context, painting_info,
-              paint_layer_flags | kPaintLayerPaintingOverlayScrollbars);
-    }
   } else {
     PaintLayerPaintingInfo painting_info(
         paint_info.paint_layer, CullRect(dirty_rect), kGlobalPaintNormalPhase,
diff --git a/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_builder.cc b/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_builder.cc
index d27f2aa..084bd945 100644
--- a/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_builder.cc
+++ b/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_builder.cc
@@ -166,9 +166,8 @@
     pending_reparents.Set(&layer, child_layers.size());
 
   // Set or overwrite the entry in |pending_reparents| for this scroller.
-  // Overlay controls need to paint on top of all content under the
-  // scroller, so keep overwriting if we find a PaintLayer that is
-  // later in paint order.
+  // Overlay scrollbars need to paint on top of all content under the scroller,
+  // so keep overwriting if we find a PaintLayer that is later in paint order.
   const PaintLayer* scroll_parent = layer.ScrollParent();
   if (style.IsStacked() && scroll_parent &&
       scroll_parent->HasCompositedLayerMapping() &&
diff --git a/third_party/blink/renderer/core/paint/frame_painter.cc b/third_party/blink/renderer/core/paint/frame_painter.cc
index b1b9a2e..a3cbfbc 100644
--- a/third_party/blink/renderer/core/paint/frame_painter.cc
+++ b/third_party/blink/renderer/core/paint/frame_painter.cc
@@ -103,11 +103,6 @@
   layer_painter.Paint(context, cull_rect, updated_global_paint_flags,
                       root_layer_paint_flags);
 
-  if (root_layer->ContainsDirtyOverlayScrollbars()) {
-    layer_painter.PaintOverlayScrollbars(context, cull_rect,
-                                         updated_global_paint_flags);
-  }
-
   // Regions may have changed as a result of the visibility/z-index of element
   // changing.
   if (document->AnnotatedRegionsDirty())
diff --git a/third_party/blink/renderer/core/paint/image_paint_timing_detector.cc b/third_party/blink/renderer/core/paint/image_paint_timing_detector.cc
index d2698a5a..470cf63 100644
--- a/third_party/blink/renderer/core/paint/image_paint_timing_detector.cc
+++ b/third_party/blink/renderer/core/paint/image_paint_timing_detector.cc
@@ -146,8 +146,6 @@
     need_update_timing_at_frame_end_ = false;
     UpdateCandidate();
   }
-  if (!records_manager_.NeedMeausuringPaintTime())
-    return;
 
   if (!records_manager_.HasUnregisteredRecordsInQueued(
           last_registered_frame_index_))
@@ -163,7 +161,7 @@
   // Todo: check whether it is visible background image.
   if (!records_manager_.IsRecordedVisibleNode(node_id))
     return;
-  records_manager_.SetNodeDetached(node_id);
+  records_manager_.RemoveVisibleRecord(node_id);
   need_update_timing_at_frame_end_ = true;
 }
 
@@ -175,7 +173,7 @@
   BackgroundImageId background_image_id = std::make_pair(node_id, cached_image);
   if (!records_manager_.IsRecordedVisibleNode(background_image_id))
     return;
-  records_manager_.SetNodeDetached(background_image_id.first);
+  records_manager_.RemoveVisibleRecord(background_image_id);
 }
 
 void ImagePaintTimingDetector::RegisterNotifySwapTime() {
@@ -218,12 +216,16 @@
     const base::TimeTicks& timestamp,
     unsigned last_queued_frame_index) {
   // TODO(crbug.com/971419): should guarantee the queue not empty.
-  while (!images_queued_for_paint_time_.empty()) {
+  while (!images_queued_for_paint_time_.IsEmpty()) {
     base::WeakPtr<ImageRecord>& record = images_queued_for_paint_time_.front();
+    if (!record) {
+      images_queued_for_paint_time_.pop_front();
+      continue;
+    }
     if (record->frame_index > last_queued_frame_index)
       break;
     record->paint_time = timestamp;
-    images_queued_for_paint_time_.pop();
+    images_queued_for_paint_time_.pop_front();
   }
 }
 
@@ -240,7 +242,6 @@
   if (records_manager_.IsRecordedInvisibleNode(node_id))
     return;
 
-  records_manager_.SetNodeReattachedIfNeeded(node_id);
   BackgroundImageId background_image_id =
       std::make_pair(node_id, &cached_image);
   bool is_recored_visible_node =
@@ -302,8 +303,6 @@
   if (records_manager_.IsRecordedInvisibleNode(node_id))
     return;
 
-  records_manager_.SetNodeReattachedIfNeeded(node_id);
-
   bool is_loaded = cached_image.IsLoaded();
   bool is_recored_visible_node =
       records_manager_.IsRecordedVisibleNode(node_id);
@@ -409,13 +408,9 @@
 ImageRecord* ImageRecordsManager::FindLargestPaintCandidate() const {
   DCHECK_EQ(visible_node_map_.size() + visible_background_image_map_.size(),
             size_ordered_set_.size());
-  for (auto it = size_ordered_set_.begin(); it != size_ordered_set_.end();
-       ++it) {
-    if (detached_ids_.Contains((*it)->node_id))
-      continue;
-    return (*it).get();
-  }
-  return nullptr;
+  if (size_ordered_set_.size() == 0)
+    return nullptr;
+  return size_ordered_set_.begin()->get();
 }
 
 void ImagePaintTimingDetector::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/paint/image_paint_timing_detector.h b/third_party/blink/renderer/core/paint/image_paint_timing_detector.h
index dd7cafd8..71a829e 100644
--- a/third_party/blink/renderer/core/paint/image_paint_timing_detector.h
+++ b/third_party/blink/renderer/core/paint/image_paint_timing_detector.h
@@ -65,13 +65,23 @@
   ImageRecord* FindLargestPaintCandidate() const;
 
   bool AreAllVisibleNodesDetached() const;
-  inline void SetNodeDetached(const DOMNodeId& visible_node_id) {
-    detached_ids_.insert(visible_node_id);
+  inline void RemoveVisibleRecord(const DOMNodeId& visible_node_id) {
+    base::WeakPtr<ImageRecord> record =
+        visible_node_map_.find(visible_node_id)->value->AsWeakPtr();
+    size_ordered_set_.erase(record);
+    visible_node_map_.erase(visible_node_id);
+    // Leave out |images_queued_for_paint_time_| intentionally because the null
+    // record will be removed in |AssignPaintTimeToRegisteredQueuedNodes|.
   }
-  inline void SetNodeReattachedIfNeeded(const DOMNodeId& visible_node_id) {
-    if (!detached_ids_.Contains(visible_node_id))
-      return;
-    detached_ids_.erase(visible_node_id);
+  inline void RemoveVisibleRecord(
+      const BackgroundImageId& background_image_id) {
+    base::WeakPtr<ImageRecord> record =
+        visible_background_image_map_.find(background_image_id)
+            ->value->AsWeakPtr();
+    size_ordered_set_.erase(record);
+    visible_background_image_map_.erase(background_image_id);
+    // Leave out |images_queued_for_paint_time_| intentionally because the null
+    // record will be removed in |AssignPaintTimeToRegisteredQueuedNodes|.
   }
 
   inline void RecordInvisibleNode(const DOMNodeId& node_id) {
@@ -117,19 +127,26 @@
                              unsigned current_frame_index);
 
   inline bool NeedMeausuringPaintTime() const {
-    return !images_queued_for_paint_time_.empty();
+    return !images_queued_for_paint_time_.IsEmpty();
   }
 
   // Compare the last frame index in queue with the last frame index that has
   // registered for assigning paint time.
   inline bool HasUnregisteredRecordsInQueued(
       unsigned last_registered_frame_index) {
+    while (!images_queued_for_paint_time_.IsEmpty() &&
+           !images_queued_for_paint_time_.back()) {
+      images_queued_for_paint_time_.pop_back();
+    }
+    if (images_queued_for_paint_time_.IsEmpty())
+      return false;
     DCHECK(last_registered_frame_index <= LastQueuedFrameIndex());
     return last_registered_frame_index < LastQueuedFrameIndex();
   }
   void AssignPaintTimeToRegisteredQueuedNodes(const base::TimeTicks&,
                                               unsigned last_queued_frame_index);
   inline unsigned LastQueuedFrameIndex() const {
+    DCHECK(images_queued_for_paint_time_.back());
     return images_queued_for_paint_time_.back()->frame_index;
   }
 
@@ -152,7 +169,7 @@
       const uint64_t& visual_size);
   inline void QueueToMeasurePaintTime(base::WeakPtr<ImageRecord>& record,
                                       unsigned current_frame_index) {
-    images_queued_for_paint_time_.push(record);
+    images_queued_for_paint_time_.push_back(record);
     record->frame_index = current_frame_index;
   }
   inline void SetLoaded(base::WeakPtr<ImageRecord>& record) {
@@ -166,14 +183,12 @@
   HashMap<BackgroundImageId, std::unique_ptr<ImageRecord>>
       visible_background_image_map_;
   HashSet<DOMNodeId> invisible_node_ids_;
-  // Use |DOMNodeId| instead of |ImageRecord|* for the efficiency of inserting
-  // and erasing.
-  HashSet<DOMNodeId> detached_ids_;
+
   // This stores the image records, which are ordered by size.
   ImageRecordSet size_ordered_set_;
   // |ImageRecord|s waiting for paint time are stored in this queue
   // until they get a swap time.
-  std::queue<base::WeakPtr<ImageRecord>> images_queued_for_paint_time_;
+  Deque<base::WeakPtr<ImageRecord>> images_queued_for_paint_time_;
 
   DISALLOW_COPY_AND_ASSIGN(ImageRecordsManager);
 };
diff --git a/third_party/blink/renderer/core/paint/image_paint_timing_detector_test.cc b/third_party/blink/renderer/core/paint/image_paint_timing_detector_test.cc
index 15478c4..9155ba0 100644
--- a/third_party/blink/renderer/core/paint/image_paint_timing_detector_test.cc
+++ b/third_party/blink/renderer/core/paint/image_paint_timing_detector_test.cc
@@ -111,6 +111,21 @@
         ->records_manager_.visible_background_image_map_.size();
   }
 
+  size_t ContainerTotalSize() {
+    return GetPaintTimingDetector()
+               .GetImagePaintTimingDetector()
+               ->records_manager_.visible_background_image_map_.size() +
+           GetPaintTimingDetector()
+               .GetImagePaintTimingDetector()
+               ->records_manager_.visible_node_map_.size() +
+           GetPaintTimingDetector()
+               .GetImagePaintTimingDetector()
+               ->records_manager_.size_ordered_set_.size() +
+           GetPaintTimingDetector()
+               .GetImagePaintTimingDetector()
+               ->records_manager_.images_queued_for_paint_time_.size();
+  }
+
   size_t CountChildFrameRecords() {
     return GetChildPaintTimingDetector()
         .GetImagePaintTimingDetector()
@@ -557,7 +572,63 @@
 }
 
 TEST_F(ImagePaintTimingDetectorTest,
-       LargestImagePaint_ReattachedNodeUseFirstPaint) {
+       RemoveRecordFromAllContainersAfterImageRemoval) {
+  SetBodyInnerHTML(R"HTML(
+    <div id="parent">
+      <img id="target"></img>
+    </div>
+  )HTML");
+  SetImageAndPaint("target", 5, 5);
+  UpdateAllLifecyclePhasesAndInvokeCallbackIfAny();
+  EXPECT_EQ(ContainerTotalSize(), 2u);
+
+  GetDocument().getElementById("parent")->RemoveChild(
+      GetDocument().getElementById("target"));
+  EXPECT_EQ(ContainerTotalSize(), 0u);
+}
+
+TEST_F(ImagePaintTimingDetectorTest,
+       RemoveRecordFromAllContainersAfterBackgroundImageRemoval) {
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      #target {
+        background-image: url(data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==);
+      }
+    </style>
+    <div id="parent">
+      <div id="target">
+        place-holder
+      </div>
+    </div>
+  )HTML");
+  UpdateAllLifecyclePhasesAndInvokeCallbackIfAny();
+  EXPECT_EQ(ContainerTotalSize(), 2u);
+
+  GetDocument().getElementById("parent")->RemoveChild(
+      GetDocument().getElementById("target"));
+  EXPECT_EQ(ContainerTotalSize(), 0u);
+}
+
+TEST_F(ImagePaintTimingDetectorTest,
+       RemoveRecordFromAllContainersAfterImageRemovedAndCallbackInvoked) {
+  SetBodyInnerHTML(R"HTML(
+    <div id="parent">
+      <img id="target"></img>
+    </div>
+  )HTML");
+  SetImageAndPaint("target", 5, 5);
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_EQ(ContainerTotalSize(), 3u);
+
+  GetDocument().getElementById("parent")->RemoveChild(
+      GetDocument().getElementById("target"));
+  EXPECT_EQ(ContainerTotalSize(), 1u);
+  InvokeCallback();
+  EXPECT_EQ(ContainerTotalSize(), 0u);
+}
+
+TEST_F(ImagePaintTimingDetectorTest,
+       LargestImagePaint_ReattachedNodeTreatedAsNew) {
   SetBodyInnerHTML(R"HTML(
     <div id="parent">
     </div>
@@ -591,9 +662,9 @@
   EXPECT_TRUE(record);
   // UpdateAllLifecyclePhasesAndInvokeCallbackIfAny() moves time forward
   // kQuantumOfTime so we should take that into account.
-  EXPECT_EQ(
-      record->paint_time,
-      base::TimeTicks() + base::TimeDelta::FromSecondsD(1) + kQuantumOfTime);
+  EXPECT_EQ(record->paint_time, base::TimeTicks() +
+                                    base::TimeDelta::FromSecondsD(3) +
+                                    3 * kQuantumOfTime);
 }
 
 // This is to prove that a swap time is assigned only to nodes of the frame who
diff --git a/third_party/blink/renderer/core/paint/largest_contentful_paint_calculator.cc b/third_party/blink/renderer/core/paint/largest_contentful_paint_calculator.cc
index e6fe201..692efaf 100644
--- a/third_party/blink/renderer/core/paint/largest_contentful_paint_calculator.cc
+++ b/third_party/blink/renderer/core/paint/largest_contentful_paint_calculator.cc
@@ -90,7 +90,7 @@
             : url.GetString();
     // Do not expose element attribution from shadow trees.
     Element* image_element =
-        image_node->IsInShadowTree() ? nullptr : ToElement(image_node);
+        image_node->IsInShadowTree() ? nullptr : To<Element>(image_node);
     const AtomicString& image_id =
         image_element ? image_element->GetIdAttribute() : AtomicString();
     window_performance_->OnLargestContentfulPaintUpdated(
@@ -98,9 +98,14 @@
         cached_image->LoadResponseEnd(), image_id, image_url, image_element);
   } else {
     Node* text_node = DOMNodeIds::NodeForId(largest_text_->node_id);
+    // |text_node| could be null and |largest_text_| should be ignored in this
+    // case.
+    if (!text_node)
+      return;
+
     // Do not expose element attribution from shadow trees.
     Element* text_element =
-        text_node->IsInShadowTree() ? nullptr : ToElement(text_node);
+        text_node->IsInShadowTree() ? nullptr : To<Element>(text_node);
     const AtomicString& text_id =
         text_element ? text_element->GetIdAttribute() : AtomicString();
     window_performance_->OnLargestContentfulPaintUpdated(
diff --git a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
index eb671ad..df51e78 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
@@ -192,11 +192,13 @@
     PaintObject(info, paint_offset);
   }
 
-  // Our scrollbar widgets paint exactly when we tell them to, so that they work
-  // properly with z-index. We paint after we painted the background/border, so
-  // that the scrollbars will sit above the background/border.
+  // We paint scrollbars after we painted other things, so that the scrollbars
+  // will sit above them.
   info.phase = original_phase;
-  PaintOverflowControlsIfNeeded(info, paint_offset);
+  if (box_fragment_.HasOverflowClip()) {
+    ScrollableAreaPainter(*PhysicalFragment().Layer()->GetScrollableArea())
+        .PaintOverflowControls(info, RoundedIntPoint(paint_offset));
+  }
 }
 
 void NGBoxFragmentPainter::RecordHitTestData(
@@ -890,19 +892,6 @@
          box_fragment_.GetLayoutObject() == paint_info.PaintContainer();
 }
 
-// Clone of BlockPainter::PaintOverflowControlsIfNeeded
-void NGBoxFragmentPainter::PaintOverflowControlsIfNeeded(
-    const PaintInfo& paint_info,
-    const PhysicalOffset& paint_offset) {
-  if (box_fragment_.HasOverflowClip() &&
-      box_fragment_.Style().Visibility() == EVisibility::kVisible &&
-      ShouldPaintSelfBlockBackground(paint_info.phase)) {
-    ScrollableAreaPainter(*PhysicalFragment().Layer()->GetScrollableArea())
-        .PaintOverflowControls(paint_info, RoundedIntPoint(paint_offset),
-                               false /* painting_overlay_controls */);
-  }
-}
-
 bool NGBoxFragmentPainter::ShouldPaint(
     const ScopedPaintState& paint_state) const {
   // TODO(layout-dev): Add support for scrolling, see BlockPainter::ShouldPaint.
diff --git a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h
index 88e9030..91e7ace 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h
+++ b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h
@@ -94,8 +94,6 @@
   void PaintFloatingChildren(NGPaintFragment::ChildList, const PaintInfo&);
   void PaintFloats(const PaintInfo&);
   void PaintMask(const PaintInfo&, const PhysicalOffset& paint_offset);
-  void PaintOverflowControlsIfNeeded(const PaintInfo&,
-                                     const PhysicalOffset& paint_offset);
   void PaintAtomicInline(const PaintInfo&);
   void PaintBackground(const PaintInfo&,
                        const PhysicalRect&,
diff --git a/third_party/blink/renderer/core/paint/paint_layer.cc b/third_party/blink/renderer/core/paint/paint_layer.cc
index 88805eb..f8a8831 100644
--- a/third_party/blink/renderer/core/paint/paint_layer.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer.cc
@@ -147,7 +147,6 @@
       needs_position_update_(!IsRootLayer()),
 #endif
       has3d_transformed_descendant_(false),
-      contains_dirty_overlay_scrollbars_(false),
       needs_ancestor_dependent_compositing_inputs_update_(
           !RuntimeEnabledFeatures::CompositeAfterPaintEnabled()),
       child_needs_compositing_inputs_update_(
@@ -177,7 +176,7 @@
       needs_compositing_layer_assignment_(false),
       descendant_needs_compositing_layer_assignment_(false),
       has_self_painting_layer_descendant_(false),
-      is_non_stacked_with_in_flow_stacked_descendant_(false),
+      needs_reorder_overlay_scrollbars_(false),
 #if DCHECK_IS_ON()
       layer_list_mutation_allowed_(true),
 #endif
@@ -223,6 +222,12 @@
     ClearCompositedLayerMapping(true);
   }
 
+  // Reset this flag before disposing scrollable_area_ to prevent
+  // PaintLayerScrollableArea::WillRemoveScrollbar() from dirtying the z-order
+  // list of the stacking context. If this layer is removed from the parent,
+  // the z-order list should have been invalidated in RemoveChild().
+  needs_reorder_overlay_scrollbars_ = false;
+
   if (scrollable_area_)
     scrollable_area_->Dispose();
 
@@ -662,14 +667,10 @@
     has_non_contained_absolute_position_descendant_ = false;
     has_stacked_descendant_in_current_stacking_context_ = false;
     has_self_painting_layer_descendant_ = false;
-    is_non_stacked_with_in_flow_stacked_descendant_ = false;
 
     bool can_contain_abs =
         GetLayoutObject().CanContainAbsolutePositionObjects();
 
-    const ComputedStyle& style = GetLayoutObject().StyleRef();
-    bool is_stacked = style.IsStacked();
-
     for (PaintLayer* child = FirstChild(); child;
          child = child->NextSibling()) {
       const ComputedStyle& child_style = child->GetLayoutObject().StyleRef();
@@ -713,14 +714,6 @@
           has_self_painting_layer_descendant_ ||
           child->HasSelfPaintingLayerDescendant() ||
           child->IsSelfPaintingLayer();
-
-      if (!is_stacked) {
-        if (child->IsNonStackedWithInFlowStackedDescendant())
-          is_non_stacked_with_in_flow_stacked_descendant_ = true;
-        else if (child_style.IsStacked() &&
-                 !child->GetLayoutObject().IsOutOfFlowPositioned())
-          is_non_stacked_with_in_flow_stacked_descendant_ = true;
-      }
     }
 
     UpdateStackingNode();
@@ -1350,8 +1343,7 @@
     // ancestorStackingContextNode() can be null in the case where we're
     // building up generated content layers. This is ok, since the lists will
     // start off dirty in that case anyway.
-    PaintLayerStackingNode::DirtyStackingContextZOrderLists(*child);
-    MarkAncestorChainForFlagsUpdate();
+    child->DirtyStackingContextZOrderLists();
   }
 
   // Non-self-painting children paint into this layer, so the visible contents
@@ -1393,7 +1385,7 @@
         Compositor()->SetNeedsCompositingUpdate(kCompositingUpdateRebuildTree);
     }
     // Dirty the z-order list in which we are contained.
-    PaintLayerStackingNode::DirtyStackingContextZOrderLists(*old_child);
+    old_child->DirtyStackingContextZOrderLists();
     SetNeedsCompositingInputsUpdate();
   }
 
@@ -1425,10 +1417,8 @@
   if (!parent_)
     return;
 
-  if (old_style && old_style->IsStacked()) {
-    PaintLayerStackingNode::DirtyStackingContextZOrderLists(*this);
-    MarkAncestorChainForFlagsUpdate();
-  }
+  if (old_style && old_style->IsStacked())
+    DirtyStackingContextZOrderLists();
 
   bool did_set_paint_invalidation = false;
   if (!RuntimeEnabledFeatures::CompositeAfterPaintEnabled()) {
@@ -3259,10 +3249,10 @@
   }
 }
 
-IntSize PaintLayer::ScrolledContentOffset() const {
+LayoutSize PaintLayer::ScrolledContentOffset() const {
   if (GetLayoutObject().HasOverflowClip())
     return GetLayoutBox()->ScrolledContentOffset();
-  return IntSize();
+  return LayoutSize();
 }
 
 PaintLayerClipper PaintLayer::Clipper(
@@ -3517,6 +3507,25 @@
   return nullptr;
 }
 
+void PaintLayer::DirtyStackingContextZOrderLists() {
+  auto* stacking_context = AncestorStackingContext();
+  if (!stacking_context)
+    return;
+
+  // This invalidation code intentionally refers to stale state.
+  DisableCompositingQueryAsserts disabler;
+
+  // Changes of stacking may result in graphics layers changing size
+  // due to new contents painting into them.
+  if (auto* mapping = stacking_context->GetCompositedLayerMapping())
+    mapping->SetNeedsGraphicsLayerUpdate(kGraphicsLayerUpdateSubtree);
+
+  if (stacking_context->StackingNode())
+    stacking_context->StackingNode()->DirtyZOrderLists();
+
+  MarkAncestorChainForFlagsUpdate();
+}
+
 DisableCompositingQueryAsserts::DisableCompositingQueryAsserts()
     : disabler_(&g_compositing_query_mode, kCompositingQueriesAreAllowed) {}
 
diff --git a/third_party/blink/renderer/core/paint/paint_layer.h b/third_party/blink/renderer/core/paint/paint_layer.h
index 9a9dbe22..c271b2b 100644
--- a/third_party/blink/renderer/core/paint/paint_layer.h
+++ b/third_party/blink/renderer/core/paint/paint_layer.h
@@ -300,7 +300,7 @@
     return location_;
   }
 
-  IntSize ScrolledContentOffset() const;
+  LayoutSize ScrolledContentOffset() const;
 
   // FIXME: size() should DCHECK(!needs_position_update_) as well, but that
   // fails in some tests, for example, fast/repaint/clipped-relative.html.
@@ -611,13 +611,6 @@
   bool BackgroundIsKnownToBeOpaqueInRect(const PhysicalRect&,
                                          bool should_check_children) const;
 
-  bool ContainsDirtyOverlayScrollbars() const {
-    return contains_dirty_overlay_scrollbars_;
-  }
-  void SetContainsDirtyOverlayScrollbars(bool dirty_scrollbars) {
-    contains_dirty_overlay_scrollbars_ = dirty_scrollbars;
-  }
-
   // If the input CompositorFilterOperation is not empty, it will be populated
   // only if |filter_on_effect_node_dirty_| is true or the reference box has
   // changed. Otherwise it will be populated unconditionally.
@@ -883,9 +876,10 @@
     DCHECK(!needs_descendant_dependent_flags_update_);
     return has_self_painting_layer_descendant_;
   }
-  bool IsNonStackedWithInFlowStackedDescendant() const {
-    DCHECK(!needs_descendant_dependent_flags_update_);
-    return is_non_stacked_with_in_flow_stacked_descendant_;
+
+  // See PaintLayerStackingNode::layer_to_overlay_scrollbars_painting_after_.
+  bool NeedsReorderOverlayScrollbars() const {
+    return needs_reorder_overlay_scrollbars_;
   }
 
   // Returns true if there is a descendant with blend-mode that is
@@ -1112,6 +1106,8 @@
     return descendant_needs_compositing_layer_assignment_;
   }
 
+  void DirtyStackingContextZOrderLists();
+
  private:
   void SetNeedsCompositingInputsUpdateInternal();
 
@@ -1275,6 +1271,10 @@
   // PaintLayerPaintOrderIterator.
   PaintLayerStackingNode* StackingNode() const { return stacking_node_.get(); }
 
+  void SetNeedsReorderOverlayScrollbars(bool b) {
+    needs_reorder_overlay_scrollbars_ = b;
+  }
+
   // Self-painting layer is an optimization where we avoid the heavy Layer
   // painting machinery for a Layer allocated only to handle the overflow clip
   // case.
@@ -1299,8 +1299,6 @@
   // in a preserves3D hierarchy. Hint to do 3D-aware hit testing.
   unsigned has3d_transformed_descendant_ : 1;
 
-  unsigned contains_dirty_overlay_scrollbars_ : 1;
-
   unsigned needs_ancestor_dependent_compositing_inputs_update_ : 1;
   unsigned child_needs_compositing_inputs_update_ : 1;
 
@@ -1355,7 +1353,8 @@
   unsigned descendant_needs_compositing_layer_assignment_ : 1;
 
   unsigned has_self_painting_layer_descendant_ : 1;
-  unsigned is_non_stacked_with_in_flow_stacked_descendant_ : 1;
+
+  unsigned needs_reorder_overlay_scrollbars_ : 1;
 
 #if DCHECK_IS_ON()
   mutable unsigned layer_list_mutation_allowed_ : 1;
diff --git a/third_party/blink/renderer/core/paint/paint_layer_paint_order_iterator.h b/third_party/blink/renderer/core/paint/paint_layer_paint_order_iterator.h
index 32ee38c..5bd84d94 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_paint_order_iterator.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_paint_order_iterator.h
@@ -57,6 +57,14 @@
 
   PaintLayer* Next();
 
+  const Vector<PaintLayer*>* LayersPaintingOverlayScrollbarsAfter(
+      const PaintLayer* layer) const {
+    return root_.stacking_node_
+               ? root_.stacking_node_->LayersPaintingOverlayScrollbarsAfter(
+                     layer)
+               : nullptr;
+  }
+
  private:
   const PaintLayer& root_;
   unsigned remaining_children_;
diff --git a/third_party/blink/renderer/core/paint/paint_layer_painter.cc b/third_party/blink/renderer/core/paint/paint_layer_painter.cc
index 0f91221..3341c7874 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_painter.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_painter.cc
@@ -14,6 +14,7 @@
 #include "third_party/blink/renderer/core/paint/paint_info.h"
 #include "third_party/blink/renderer/core/paint/paint_layer.h"
 #include "third_party/blink/renderer/core/paint/paint_layer_paint_order_iterator.h"
+#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
 #include "third_party/blink/renderer/core/paint/scrollable_area_painter.h"
 #include "third_party/blink/renderer/platform/geometry/float_point_3d.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_layer.h"
@@ -491,13 +492,13 @@
          (is_painting_root_layer &&
           !(paint_flags & kPaintLayerPaintingSkipRootBackground)));
     bool should_paint_neg_z_order_list =
-        (is_painting_scrolling_content && is_painting_overflow_contents) ||
-        (!is_painting_scrolling_content && is_painting_composited_background);
+        !is_painting_overlay_scrollbars &&
+        (is_painting_scrolling_content ? is_painting_overflow_contents
+                                       : is_painting_composited_background);
     bool should_paint_own_contents =
         is_painting_composited_foreground && should_paint_content;
     bool should_paint_normal_flow_and_pos_z_order_lists =
-        is_painting_composited_foreground;
-    bool should_paint_overlay_scrollbars = is_painting_overlay_scrollbars;
+        is_painting_composited_foreground && !is_painting_overlay_scrollbars;
     bool is_video = paint_layer_.GetLayoutObject().IsVideo();
 
     base::Optional<ScopedPaintChunkProperties>
@@ -556,9 +557,13 @@
         result = kMayBeClippedByCullRect;
     }
 
-    if (should_paint_overlay_scrollbars) {
-      PaintOverflowControlsForFragments(layer_fragments, context,
-                                        local_painting_info, paint_flags);
+    if (paint_layer_.GetScrollableArea() &&
+        paint_layer_.GetScrollableArea()->HasOverlayScrollbars()) {
+      if (is_painting_overlay_scrollbars ||
+          !paint_layer_.NeedsReorderOverlayScrollbars()) {
+        PaintOverlayScrollbarsForFragments(layer_fragments, context,
+                                           local_painting_info, paint_flags);
+      }
     }
 
     if (is_video && should_paint_self_outline) {
@@ -698,44 +703,44 @@
     if (PaintLayerPainter(*child).Paint(context, painting_info, paint_flags) ==
         kMayBeClippedByCullRect)
       result = kMayBeClippedByCullRect;
+
+    if (const auto* layers_painting_overlay_scrollbars_after =
+            iterator.LayersPaintingOverlayScrollbarsAfter(child)) {
+      for (auto* reparent_scrollbar_layer :
+           *layers_painting_overlay_scrollbars_after) {
+        DCHECK(reparent_scrollbar_layer->NeedsReorderOverlayScrollbars());
+        if (PaintLayerPainter(*reparent_scrollbar_layer)
+                .Paint(context, painting_info,
+                       kPaintLayerPaintingOverlayScrollbars) ==
+            kMayBeClippedByCullRect)
+          result = kMayBeClippedByCullRect;
+      }
+    }
   }
 
   return result;
 }
 
-void PaintLayerPainter::PaintOverflowControlsForFragments(
+void PaintLayerPainter::PaintOverlayScrollbarsForFragments(
     const PaintLayerFragments& layer_fragments,
     GraphicsContext& context,
     const PaintLayerPaintingInfo& painting_info,
     PaintLayerFlags paint_flags) {
-  PaintLayerScrollableArea* scrollable_area = paint_layer_.GetScrollableArea();
-  if (!scrollable_area)
+  DCHECK(paint_layer_.GetScrollableArea() &&
+         paint_layer_.GetScrollableArea()->HasOverlayScrollbars());
+
+  // We don't need to paint composited scrollbars.
+  if (paint_layer_.GetScrollableArea()->HasLayerForHorizontalScrollbar() ||
+      paint_layer_.GetScrollableArea()->HasLayerForVerticalScrollbar())
     return;
 
   ForAllFragments(
       context, layer_fragments, [&](const PaintLayerFragment& fragment) {
-        ScopedPaintChunkProperties fragment_paint_chunk_properties(
-            context.GetPaintController(),
-            fragment.fragment_data->LocalBorderBoxProperties(), paint_layer_,
-            DisplayItem::kOverflowControls);
-
-        // We need to apply the same clips and transforms that
-        // paintFragmentWithPhase would have.
-        PhysicalRect cull_rect = fragment.background_rect.Rect();
-        PaintInfo paint_info(
-            context, PixelSnappedIntRect(cull_rect),
-            PaintPhase::kSelfBlockBackgroundOnly,
-            painting_info.GetGlobalPaintFlags(), paint_flags,
-            &painting_info.root_layer->GetLayoutObject(),
-            fragment.fragment_data
-                ? fragment.fragment_data->LogicalTopInFlowThread()
-                : LayoutUnit());
-        // We pass IntPoint() as the paint offset here, because
-        // ScrollableArea::paintOverflowControls just ignores it and uses the
-        // offset found in a previous pass.
-        ScrollableAreaPainter(*scrollable_area)
-            .PaintOverflowControls(paint_info, IntPoint(),
-                                   true /* painting_overlay_controls */);
+        if (!fragment.background_rect.IsEmpty()) {
+          PaintFragmentWithPhase(PaintPhase::kOverlayScrollbars, fragment,
+                                 context, fragment.background_rect,
+                                 painting_info, paint_flags);
+        }
       });
 }
 
@@ -940,14 +945,9 @@
     GraphicsContext& context,
     const CullRect& cull_rect,
     const GlobalPaintFlags paint_flags) {
-  if (!paint_layer_.ContainsDirtyOverlayScrollbars())
-    return;
-
   PaintLayerPaintingInfo painting_info(&paint_layer_, cull_rect, paint_flags,
                                        PhysicalOffset());
   Paint(context, painting_info, kPaintLayerPaintingOverlayScrollbars);
-
-  paint_layer_.SetContainsDirtyOverlayScrollbars(false);
 }
 
 void PaintLayerPainter::FillMaskingFragment(GraphicsContext& context,
diff --git a/third_party/blink/renderer/core/paint/paint_layer_painter.h b/third_party/blink/renderer/core/paint/paint_layer_painter.h
index c16f278..03be2fc 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_painter.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_painter.h
@@ -94,10 +94,10 @@
                                     GraphicsContext&,
                                     const PaintLayerPaintingInfo&,
                                     PaintLayerFlags);
-  void PaintOverflowControlsForFragments(const PaintLayerFragments&,
-                                         GraphicsContext&,
-                                         const PaintLayerPaintingInfo&,
-                                         PaintLayerFlags);
+  void PaintOverlayScrollbarsForFragments(const PaintLayerFragments&,
+                                          GraphicsContext&,
+                                          const PaintLayerPaintingInfo&,
+                                          PaintLayerFlags);
   void PaintMaskForFragments(const PaintLayerFragments&,
                              GraphicsContext&,
                              const PaintLayerPaintingInfo&,
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
index b1271a1..49b1bf0 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
@@ -2621,9 +2621,25 @@
   return page->GetScrollbarTheme();
 }
 
+void PaintLayerScrollableArea::DidAddScrollbar(
+    Scrollbar& scrollbar,
+    ScrollbarOrientation orientation) {
+  // Z-order of reparented scrollbar is updated along with the z-order lists.
+  if (scrollbar.IsOverlayScrollbar())
+    layer_->DirtyStackingContextZOrderLists();
+
+  ScrollableArea::DidAddScrollbar(scrollbar, orientation);
+}
+
 void PaintLayerScrollableArea::WillRemoveScrollbar(
     Scrollbar& scrollbar,
     ScrollbarOrientation orientation) {
+  if (layer_->NeedsReorderOverlayScrollbars()) {
+    // Z-order of reparented scrollbar is updated along with the z-order lists.
+    DCHECK(scrollbar.IsOverlayScrollbar());
+    layer_->DirtyStackingContextZOrderLists();
+  }
+
   if (!scrollbar.IsCustomScrollbar() &&
       !(orientation == kHorizontalScrollbar ? LayerForHorizontalScrollbar()
                                             : LayerForVerticalScrollbar())) {
@@ -2912,4 +2928,10 @@
       ->PaintedOutputOfObjectHasNoEffectRegardlessOfSize();
 }
 
+void PaintLayerScrollableArea::PreFinalize() {
+  if (!HasBeenDisposed())
+    Dispose();
+  rare_data_.reset();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
index b9b0205c..6bb84d4c 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
@@ -444,13 +444,6 @@
 
   LayoutScrollbarPart* Resizer() const { return resizer_; }
 
-  const IntPoint& CachedOverlayScrollbarOffset() {
-    return cached_overlay_scrollbar_offset_;
-  }
-  void SetCachedOverlayScrollbarOffset(const IntPoint& offset) {
-    cached_overlay_scrollbar_offset_ = offset;
-  }
-
   IntRect RectForHorizontalScrollbar(const IntRect& border_box_rect) const;
   IntRect RectForVerticalScrollbar(const IntRect& border_box_rect) const;
 
@@ -528,6 +521,7 @@
   // scrollbar.
   int HypotheticalScrollbarThickness(ScrollbarOrientation) const;
 
+  void DidAddScrollbar(Scrollbar&, ScrollbarOrientation) override;
   void WillRemoveScrollbar(Scrollbar&, ScrollbarOrientation) override;
 
   void InvalidatePaintOfScrollControlsIfNeeded(const PaintInvalidatorContext&);
@@ -551,6 +545,8 @@
     return scrolling_background_display_item_client_;
   }
 
+  void PreFinalize() override;
+  
  private:
   bool NeedsScrollbarReconstruction() const;
 
@@ -678,8 +674,6 @@
   // This is the offset from the beginning of content flow.
   ScrollOffset scroll_offset_;
 
-  IntPoint cached_overlay_scrollbar_offset_;
-
   // LayoutObject to hold our custom scroll corner.
   LayoutScrollbarPart* scroll_corner_;
 
diff --git a/third_party/blink/renderer/core/paint/paint_layer_stacking_node.cc b/third_party/blink/renderer/core/paint/paint_layer_stacking_node.cc
index 2f318b0..0a9abfb 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_stacking_node.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_stacking_node.cc
@@ -53,6 +53,7 @@
 #include "third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.h"
 #include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
 #include "third_party/blink/renderer/core/paint/paint_layer.h"
+#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
 
 namespace blink {
 
@@ -86,50 +87,83 @@
 
   pos_z_order_list_.clear();
   neg_z_order_list_.clear();
+
+  for (auto& entry : layer_to_overlay_scrollbars_painting_after_.Values()) {
+    for (PaintLayer* layer : entry)
+      layer->SetNeedsReorderOverlayScrollbars(false);
+  }
+  layer_to_overlay_scrollbars_painting_after_.clear();
+
   z_order_lists_dirty_ = true;
 
   if (!layer_.GetLayoutObject().DocumentBeingDestroyed() && Compositor())
     Compositor()->SetNeedsCompositingUpdate(kCompositingUpdateRebuildTree);
 }
 
-void PaintLayerStackingNode::DirtyStackingContextZOrderLists(
-    PaintLayer& layer) {
-  auto* stacking_context = layer.AncestorStackingContext();
-  if (!stacking_context)
-    return;
-
-  // This invalidation code intentionally refers to stale state.
-  DisableCompositingQueryAsserts disabler;
-
-  // Changes of stacking may result in graphics layers changing size
-  // due to new contents painting into them.
-  if (auto* mapping = stacking_context->GetCompositedLayerMapping())
-    mapping->SetNeedsGraphicsLayerUpdate(kGraphicsLayerUpdateSubtree);
-
-  if (stacking_context->StackingNode())
-    stacking_context->StackingNode()->DirtyZOrderLists();
+static bool ZIndexLessThan(const PaintLayer* first, const PaintLayer* second) {
+  DCHECK(first->GetLayoutObject().StyleRef().IsStacked());
+  DCHECK(second->GetLayoutObject().StyleRef().IsStacked());
+  return first->GetLayoutObject().StyleRef().ZIndex() <
+         second->GetLayoutObject().StyleRef().ZIndex();
 }
 
+static void SetIfHigher(const PaintLayer*& first, const PaintLayer* second) {
+  if (!second)
+    return;
+  DCHECK_GE(second->GetLayoutObject().StyleRef().ZIndex(), 0);
+  // |second| appears later in the tree, so it's higher than |first| if its
+  // z-index >= |first|'s z-index.
+  if (!first || !ZIndexLessThan(second, first))
+    first = second;
+}
+
+// For finding the proper z-order of reparented overlay scrollbars.
+struct PaintLayerStackingNode::HighestLayers {
+  const PaintLayer* highest_absolute_position = nullptr;
+  const PaintLayer* highest_fixed_position = nullptr;
+  const PaintLayer* highest_in_flow_stacked = nullptr;
+
+  void Update(const PaintLayer& layer) {
+    const auto& style = layer.GetLayoutObject().StyleRef();
+    // We only need to consider zero or positive z-index stacked child for
+    // candidates of causing reparent of overlay scrollbars of ancestors.
+    // A negative z-index child will not cause reparent of overlay scrollbars
+    // because the ancestor scroller either has auto z-index which is above
+    // the child or has negative z-index which is a stacking context.
+    if (!style.IsStacked() || style.ZIndex() < 0)
+      return;
+
+    if (style.GetPosition() == EPosition::kAbsolute)
+      SetIfHigher(highest_absolute_position, &layer);
+    else if (style.GetPosition() == EPosition::kFixed)
+      SetIfHigher(highest_fixed_position, &layer);
+    else
+      SetIfHigher(highest_in_flow_stacked, &layer);
+  }
+
+  void Merge(HighestLayers& child) {
+    SetIfHigher(highest_absolute_position, child.highest_absolute_position);
+    SetIfHigher(highest_fixed_position, child.highest_fixed_position);
+    SetIfHigher(highest_in_flow_stacked, child.highest_in_flow_stacked);
+  }
+};
+
 void PaintLayerStackingNode::RebuildZOrderLists() {
 #if DCHECK_IS_ON()
   DCHECK(layer_.LayerListMutationAllowed());
 #endif
   DCHECK(z_order_lists_dirty_);
 
+  layer_.SetNeedsReorderOverlayScrollbars(false);
   for (PaintLayer* child = layer_.FirstChild(); child;
        child = child->NextSibling())
-    CollectLayers(*child);
-
-  auto CompareZIndex = [](PaintLayer* first, PaintLayer* second) {
-    return first->GetLayoutObject().StyleRef().ZIndex() <
-           second->GetLayoutObject().StyleRef().ZIndex();
-  };
+    CollectLayers(*child, nullptr);
 
   // Sort the two lists.
   std::stable_sort(pos_z_order_list_.begin(), pos_z_order_list_.end(),
-                   CompareZIndex);
+                   ZIndexLessThan);
   std::stable_sort(neg_z_order_list_.begin(), neg_z_order_list_.end(),
-                   CompareZIndex);
+                   ZIndexLessThan);
 
   // Append layers for top layer elements after normal layer collection, to
   // ensure they are on top regardless of z-indexes.  The layoutObjects of top
@@ -160,11 +194,18 @@
   z_order_lists_dirty_ = false;
 }
 
-void PaintLayerStackingNode::CollectLayers(PaintLayer& paint_layer) {
+void PaintLayerStackingNode::CollectLayers(PaintLayer& paint_layer,
+                                           HighestLayers* highest_layers) {
+  paint_layer.SetNeedsReorderOverlayScrollbars(false);
+
   if (paint_layer.IsInTopLayer())
     return;
 
-  const ComputedStyle& style = paint_layer.GetLayoutObject().StyleRef();
+  if (highest_layers)
+    highest_layers->Update(paint_layer);
+
+  const auto& object = paint_layer.GetLayoutObject();
+  const auto& style = object.StyleRef();
 
   if (style.IsStacked()) {
     auto& list = style.ZIndex() >= 0 ? pos_z_order_list_ : neg_z_order_list_;
@@ -174,9 +215,41 @@
   if (style.IsStackingContext())
     return;
 
+  base::Optional<HighestLayers> subtree_highest_layers;
+  bool has_overlay_scrollbars =
+      paint_layer.GetScrollableArea() &&
+      paint_layer.GetScrollableArea()->HasOverlayScrollbars();
+  if (has_overlay_scrollbars)
+    subtree_highest_layers.emplace();
+
   for (PaintLayer* child = paint_layer.FirstChild(); child;
-       child = child->NextSibling())
-    CollectLayers(*child);
+       child = child->NextSibling()) {
+    CollectLayers(*child, subtree_highest_layers ? &*subtree_highest_layers
+                                                 : highest_layers);
+  }
+
+  if (has_overlay_scrollbars) {
+    const PaintLayer* layer_to_paint_overlay_scrollbars_after =
+        subtree_highest_layers->highest_in_flow_stacked;
+    if (object.CanContainFixedPositionObjects()) {
+      SetIfHigher(layer_to_paint_overlay_scrollbars_after,
+                  subtree_highest_layers->highest_fixed_position);
+    }
+    if (object.CanContainAbsolutePositionObjects()) {
+      SetIfHigher(layer_to_paint_overlay_scrollbars_after,
+                  subtree_highest_layers->highest_absolute_position);
+    }
+    if (layer_to_paint_overlay_scrollbars_after) {
+      layer_to_overlay_scrollbars_painting_after_
+          .insert(layer_to_paint_overlay_scrollbars_after, PaintLayers())
+          .stored_value->value.push_back(&paint_layer);
+    }
+    paint_layer.SetNeedsReorderOverlayScrollbars(
+        !!layer_to_paint_overlay_scrollbars_after);
+
+    if (highest_layers)
+      highest_layers->Merge(*subtree_highest_layers);
+  }
 }
 
 #if DCHECK_IS_ON()
@@ -211,7 +284,7 @@
 
   // Need to force requirements update, due to change of stacking order.
   paint_layer.SetNeedsCompositingRequirementsUpdate();
-  DirtyStackingContextZOrderLists(paint_layer);
+  paint_layer.DirtyStackingContextZOrderLists();
 
   if (paint_layer.StackingNode())
     paint_layer.StackingNode()->DirtyZOrderLists();
diff --git a/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h b/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h
index fb9288f..7f0f3c24 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h
@@ -50,6 +50,7 @@
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/layout/layout_box_model_object.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
+#include "third_party/blink/renderer/platform/wtf/hash_map.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
 namespace blink {
@@ -96,8 +97,8 @@
   explicit PaintLayerStackingNode(PaintLayer&);
   ~PaintLayerStackingNode();
 
+  void DirtyZOrderLists();
   void UpdateZOrderLists();
-  static void DirtyStackingContextZOrderLists(PaintLayer&);
 
   // Returns whether a relevant style changed.
   static bool StyleDidChange(PaintLayer& paint_layer,
@@ -114,11 +115,21 @@
     return neg_z_order_list_;
   }
 
+  const PaintLayers* LayersPaintingOverlayScrollbarsAfter(
+      const PaintLayer* layer) const {
+    DCHECK(!z_order_lists_dirty_);
+    auto it = layer_to_overlay_scrollbars_painting_after_.find(layer);
+    return it == layer_to_overlay_scrollbars_painting_after_.end() ? nullptr
+                                                                   : &it->value;
+  }
+
+  void ClearNeedsReorderOverlayScrollbars();
+
  private:
-  void DirtyZOrderLists();
   void RebuildZOrderLists();
 
-  void CollectLayers(PaintLayer&);
+  struct HighestLayers;
+  void CollectLayers(PaintLayer&, HighestLayers*);
 
 #if DCHECK_IS_ON()
   void UpdateStackingParentForZOrderLists(
@@ -135,6 +146,48 @@
   // Holds descendants within our stacking context with negative z-indices.
   PaintLayers neg_z_order_list_;
 
+  // Overlay scrollbars need to be painted above all scrollable contents, even
+  // if the contents are stacked in a stacking context which is an ancestor of
+  // the scrolling layer, for example:
+  //   <div id="stacking-context" style="opacity: 0.5">
+  //     <div id="other" style="position: relative; z-index: 10></div>
+  //     <div id="scroller" style="overflow: scroll">
+  //       <div id="child" style="position: relative">CHILD</div>
+  //     </div>
+  //   </div>
+  // and
+  //   <div id="stacking-context" style="opacity: 0.5">
+  //     <div id="other" style="position: relative; z-index: 10></div>
+  //     <div id="scroller" style="overflow: scroll; position: relative">
+  //       <div id="child" style="position: absolute; z-index: 5">CHILD</div>
+  //     </div>
+  //   </div>
+  //
+  // The paint order without reordering overlay scrollbars would be:
+  //            stacking-context
+  //               /    |    \
+  //         scroller child  other
+  //            |
+  //    overlay scrollbars
+  // where the overlay scrollbars would be painted incorrectly below |child|
+  // which is scrollable by |scroller|.
+  //
+  // To paint the overlay scrollbars above all scrollable contents, we need to
+  // reorder the z-order of overlay scrollbars in the stacking context:
+  //            stacking-context
+  //             /    |    |   \
+  //       scroller child  |   other
+  //                       |
+  //                overlay scrollbars
+  //
+  // This map records which PaintLayers (the values of the map) have overlay
+  // scrollbars which should paint after the given PaintLayer (the key of the
+  // map). The value of the map is a list of PaintLayers because there may be
+  // more than one scroller in the same stacking context with overlay
+  // scrollbars.
+  HashMap<const PaintLayer*, PaintLayers>
+      layer_to_overlay_scrollbars_painting_after_;
+
   // Indicates whether the z-order lists above are dirty.
   bool z_order_lists_dirty_ : 1;
 
diff --git a/third_party/blink/renderer/core/paint/paint_layer_test.cc b/third_party/blink/renderer/core/paint/paint_layer_test.cc
index f64dce5..6f96d3a9 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_test.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_test.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/core/paint/paint_layer.h"
 
+#include "testing/gmock/include/gmock/gmock.h"
 #include "third_party/blink/renderer/core/dom/pseudo_element.h"
 #include "third_party/blink/renderer/core/html/html_iframe_element.h"
 #include "third_party/blink/renderer/core/layout/layout_box_model_object.h"
@@ -16,6 +17,9 @@
 
 namespace blink {
 
+using ::testing::ElementsAre;
+using ::testing::Pointee;
+
 class PaintLayerTest : public PaintTestConfigurations, public RenderingTest {
  public:
   PaintLayerTest()
@@ -233,7 +237,7 @@
                                                      kProgrammaticScroll);
   GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint();
   EXPECT_EQ(PhysicalOffset(0, 0), content_layer->Location());
-  EXPECT_EQ(IntSize(1000, 1000),
+  EXPECT_EQ(LayoutSize(1000, 1000),
             content_layer->ContainingLayer()->ScrolledContentOffset());
   EXPECT_FALSE(content_layer->NeedsRepaint());
   EXPECT_FALSE(scroll_layer->NeedsRepaint());
@@ -265,7 +269,7 @@
                                                      kProgrammaticScroll);
   GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint();
   EXPECT_EQ(PhysicalOffset(0, 0), content_layer->Location());
-  EXPECT_EQ(IntSize(1000, 1000),
+  EXPECT_EQ(LayoutSize(1000, 1000),
             content_layer->ContainingLayer()->ScrolledContentOffset());
 
   EXPECT_TRUE(scroll_layer->NeedsRepaint());
@@ -450,79 +454,333 @@
   EXPECT_FALSE(child->HasSelfPaintingLayerDescendant());
 }
 
-TEST_P(PaintLayerTest, NonStackedWithInFlowDescendant) {
-  SetBodyInnerHTML(R"HTML(
-    <div id='parent' style='overflow: auto'>
-      <div id='child' style='position: relative'>
-        <div></div>
-      </div>
-    </div>
-  )HTML");
-  PaintLayer* parent = GetPaintLayerByElementId("parent");
-  PaintLayer* child = GetPaintLayerByElementId("child");
-
-  EXPECT_TRUE(parent->IsNonStackedWithInFlowStackedDescendant());
-  EXPECT_FALSE(child->IsNonStackedWithInFlowStackedDescendant());
+static const Vector<PaintLayer*>* LayersPaintingOverlayScrollbarsAfter(
+    const PaintLayer* layer) {
+  return PaintLayerPaintOrderIterator(*layer->AncestorStackingContext(),
+                                      kPositiveZOrderChildren)
+      .LayersPaintingOverlayScrollbarsAfter(layer);
 }
 
-TEST_P(PaintLayerTest, NonStackedWithOutOfFlowDescendant) {
+TEST_P(PaintLayerTest, ReorderOverlayScrollbars_StackedWithInFlowDescendant) {
   SetBodyInnerHTML(R"HTML(
-    <div id='parent' style='overflow: auto'>
-      <div id='child' style='position: absolute'>
-        <div></div>
-      </div>
+    <div id='parent' style='overflow: auto; position: relative;
+                            width: 100px; height: 100px'>
+      <div id='child' style='position: relative; height: 200px'></div>
     </div>
   )HTML");
-  PaintLayer* parent = GetPaintLayerByElementId("parent");
-  PaintLayer* child = GetPaintLayerByElementId("child");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
 
-  EXPECT_FALSE(parent->IsNonStackedWithInFlowStackedDescendant());
-  EXPECT_FALSE(child->IsNonStackedWithInFlowStackedDescendant());
+  GetDocument().getElementById("child")->setAttribute(
+      html_names::kStyleAttr, "position: relative; height: 80px");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(child));
+
+  GetDocument().getElementById("child")->setAttribute(
+      html_names::kStyleAttr, "position: relative; width: 200px; height: 80px");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
+
+  GetDocument().getElementById("child")->setAttribute(
+      html_names::kStyleAttr, "width: 200px; height: 80px");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+
+  GetDocument().getElementById("child")->setAttribute(
+      html_names::kStyleAttr, "position: relative; width: 200px; height: 80px");
+  UpdateAllLifecyclePhasesForTest();
+  child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
 }
 
-TEST_P(PaintLayerTest, NonStackedWithNonStackedDescendant) {
+TEST_P(PaintLayerTest,
+       ReorderOverlayScrollbars_StackedWithOutOfFlowDescendant) {
   SetBodyInnerHTML(R"HTML(
-    <div id='parent' style='overflow: auto'>
-      <div id='child' style='overflow: auto'>
-        <div></div>
-      </div>
+    <style>#child { width: 200px; height: 200px; }</style>
+    <div id='parent' style='overflow: auto; position: relative; height: 100px'>
+      <div id='child' style='position: absolute'></div>
     </div>
   )HTML");
-  PaintLayer* parent = GetPaintLayerByElementId("parent");
-  PaintLayer* child = GetPaintLayerByElementId("child");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
 
-  EXPECT_FALSE(parent->IsNonStackedWithInFlowStackedDescendant());
-  EXPECT_FALSE(child->IsNonStackedWithInFlowStackedDescendant());
+  GetDocument().getElementById("child")->setAttribute(html_names::kStyleAttr,
+                                                      "");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+
+  GetDocument().getElementById("child")->setAttribute(html_names::kStyleAttr,
+                                                      "position: absolute");
+  UpdateAllLifecyclePhasesForTest();
+  child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
 }
 
-TEST_P(PaintLayerTest, NonStackedWithInFlowStackedGrandchild) {
+TEST_P(PaintLayerTest, ReorderOverlayScrollbars_StackedWithZIndexDescendant) {
   SetBodyInnerHTML(R"HTML(
-    <div id='parent' style='overflow: auto'>
-      <div id='child' style='overflow: auto'>
-        <div style='position: relative'></div>
-      </div>
+    <style>#child { position: absolute; width: 200px; height: 200px; }</style>
+    <div id='parent' style='overflow: auto; position: relative; height: 100px'>
+      <div id='child' style='position: absolute; z-index: 1;
+                             width: 200px; height: 200px'></div>
     </div>
   )HTML");
-  PaintLayer* parent = GetPaintLayerByElementId("parent");
-  PaintLayer* child = GetPaintLayerByElementId("child");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
 
-  EXPECT_TRUE(parent->IsNonStackedWithInFlowStackedDescendant());
-  EXPECT_TRUE(child->IsNonStackedWithInFlowStackedDescendant());
+  GetDocument().getElementById("child")->setAttribute(html_names::kStyleAttr,
+                                                      "z-index: -1");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(child));
+
+  GetDocument().getElementById("child")->setAttribute(html_names::kStyleAttr,
+                                                      "z-index: 2");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
 }
 
-TEST_P(PaintLayerTest, NonStackedWithOutOfFlowStackedGrandchild) {
+TEST_P(PaintLayerTest,
+       ReorderOverlayScrollbars_NestedStackedWithInFlowStackedChild) {
   SetBodyInnerHTML(R"HTML(
-    <div id='parent' style='overflow: auto'>
-      <div id='child' style='overflow: auto'>
-        <div style='position: absolute'></div>
+    <div id='ancestor'
+         style='overflow: auto; position: relative; height: 100px'>
+      <div id='parent' style='overflow: auto; height: 200px'>
+        <div id="child" style='position: relative; height: 300px'></div>
       </div>
     </div>
   )HTML");
-  PaintLayer* parent = GetPaintLayerByElementId("parent");
-  PaintLayer* child = GetPaintLayerByElementId("child");
+  auto* ancestor = GetPaintLayerByElementId("ancestor");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(ancestor->NeedsReorderOverlayScrollbars());
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent, ancestor)));
+}
 
-  EXPECT_FALSE(parent->IsNonStackedWithInFlowStackedDescendant());
-  EXPECT_FALSE(child->IsNonStackedWithInFlowStackedDescendant());
+TEST_P(PaintLayerTest,
+       ReorderOverlayScrollbars_NestedStackedWithOutOfFlowStackedChild) {
+  SetBodyInnerHTML(R"HTML(
+    <div id='ancestor'
+         style='overflow: auto; position: relative; height: 100px'>
+      <div id='parent' style='overflow: auto; position: absolute;
+                             width: 200px; height: 200px'>
+        <div id="child" style='position: absolute; width: 300px; height: 300px'>
+        </div>
+      </div>
+    </div>
+  )HTML");
+  auto* ancestor = GetPaintLayerByElementId("ancestor");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(ancestor->NeedsReorderOverlayScrollbars());
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent, ancestor)));
+}
+
+TEST_P(PaintLayerTest, ReorderOverlayScrollbars_MultipleChildren) {
+  SetBodyInnerHTML(R"HTML(
+    <style>
+      div { width: 200px; height: 200px; }
+      #parent { overflow: auto; width: 100px; height: 100px; }
+    </style>
+    <div id='parent'>
+      <div id="low-child" style='position: absolute; z-index: 1'></div>
+      <div id="middle-child" style='position: relative; z-index: 2'></div>
+      <div id="high-child" style='position: absolute; z-index: 3'></div>
+    </div>
+  )HTML");
+
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* low_child = GetPaintLayerByElementId("low-child");
+  auto* middle_child = GetPaintLayerByElementId("middle-child");
+  auto* high_child = GetPaintLayerByElementId("high-child");
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(low_child));
+  // The highest contained child by parent is middle_child because the
+  // absolute-position children are not contained.
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(middle_child),
+              Pointee(ElementsAre(parent)));
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(high_child));
+
+  GetDocument().getElementById("parent")->setAttribute(
+      html_names::kStyleAttr, "position: absolute; z-index: 1");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(low_child));
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(middle_child));
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(high_child));
+
+  GetDocument().getElementById("parent")->setAttribute(html_names::kStyleAttr,
+                                                       "position: absolute");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(low_child));
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(middle_child));
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(high_child),
+              Pointee(ElementsAre(parent)));
+}
+
+TEST_P(PaintLayerTest,
+       ReorderOverlayScrollbars_NonStackedWithInFlowDescendant) {
+  SetBodyInnerHTML(R"HTML(
+    <div id='parent' style='overflow: auto; width: 100px; height: 100px'>
+      <div id='child' style='position: relative; height: 200px'></div>
+    </div>
+  )HTML");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
+
+  GetDocument().getElementById("child")->setAttribute(
+      html_names::kStyleAttr, "position: relative; height: 80px");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(child));
+
+  GetDocument().getElementById("child")->setAttribute(
+      html_names::kStyleAttr, "position: relative; width: 200px; height: 80px");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
+
+  GetDocument().getElementById("child")->setAttribute(
+      html_names::kStyleAttr, "width: 200px; height: 80px");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+
+  GetDocument().getElementById("child")->setAttribute(
+      html_names::kStyleAttr, "position: relative; width: 200px; height: 80px");
+  UpdateAllLifecyclePhasesForTest();
+  child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
+}
+
+TEST_P(PaintLayerTest,
+       ReorderOverlayScrollbars_NonStackedWithZIndexInFlowDescendant) {
+  SetBodyInnerHTML(R"HTML(
+    <style>#child { position: relative; height: 200px; }</style>
+    <div id='parent' style='overflow: auto; height: 100px'>
+      <div id='child' style='z-index: 1'>
+      </div>
+    </div>
+  )HTML");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
+
+  GetDocument().getElementById("child")->setAttribute(html_names::kStyleAttr,
+                                                      "z-index: -1");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(child));
+
+  GetDocument().getElementById("child")->setAttribute(html_names::kStyleAttr,
+                                                      "z-index: 2");
+  UpdateAllLifecyclePhasesForTest();
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent)));
+}
+
+TEST_P(PaintLayerTest,
+       ReorderOverlayScrollbars_NonStackedWithOutOfFlowDescendant) {
+  SetBodyInnerHTML(R"HTML(
+    <div id='parent' style='overflow: auto; height: 100px'>
+      <div id='child' style='position: absolute;
+                             width: 200px; height: 200px'></div>
+    </div>
+  )HTML");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(child));
+}
+
+TEST_P(PaintLayerTest,
+       ReorderOverlayScrollbars_NonStackedWithNonStackedDescendant) {
+  SetBodyInnerHTML(R"HTML(
+    <div id='parent' style='overflow: auto'>
+      <div id='child' style='overflow: auto'></div>
+    </div>
+  )HTML");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(child));
+}
+
+TEST_P(PaintLayerTest,
+       ReorderOverlayScrollbars_NestedNonStackedWithInFlowStackedChild) {
+  SetBodyInnerHTML(R"HTML(
+    <div id='ancestor' style='overflow: auto; height: 100px'>
+      <div id='parent' style='overflow: auto; height: 200px'>
+        <div id="child" style='position: relative; height: 300px'></div>
+      </div>
+    </div>
+  )HTML");
+  auto* ancestor = GetPaintLayerByElementId("ancestor");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_TRUE(ancestor->NeedsReorderOverlayScrollbars());
+  EXPECT_TRUE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_THAT(LayersPaintingOverlayScrollbarsAfter(child),
+              Pointee(ElementsAre(parent, ancestor)));
+}
+
+TEST_P(PaintLayerTest,
+       ReorderOverlayScrollbars_NestedNonStackedWithOutOfFlowStackedChild) {
+  SetBodyInnerHTML(R"HTML(
+    <div id='ancestor' style='overflow: auto; height: 100px'>
+      <div id='parent' style='overflow: auto; height: 200px'>
+        <div id="child" style='position: absolute; width: 300px; height: 300px'>
+        </div>
+      </div>
+    </div>
+  )HTML");
+  auto* ancestor = GetPaintLayerByElementId("ancestor");
+  auto* parent = GetPaintLayerByElementId("parent");
+  auto* child = GetPaintLayerByElementId("child");
+  EXPECT_FALSE(ancestor->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(parent->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(child->NeedsReorderOverlayScrollbars());
+  EXPECT_FALSE(LayersPaintingOverlayScrollbarsAfter(child));
 }
 
 TEST_P(PaintLayerTest, SubsequenceCachingStackingContexts) {
@@ -1146,7 +1404,8 @@
   EXPECT_EQ(container, span->ContainingLayer());
 
   EXPECT_EQ(PhysicalOffset(100, 100), span->Location());
-  EXPECT_EQ(IntSize(0, 400), span->ContainingLayer()->ScrolledContentOffset());
+  EXPECT_EQ(LayoutSize(0, 400),
+            span->ContainingLayer()->ScrolledContentOffset());
   if (RuntimeEnabledFeatures::LayoutNGEnabled()) {
     EXPECT_EQ(PhysicalOffset(50, 50), floating->Location());
     EXPECT_EQ(PhysicalOffset(50, 50), floating->VisualOffsetFromAncestor(span));
@@ -1154,7 +1413,7 @@
               floating->VisualOffsetFromAncestor(container));
   } else {
     EXPECT_EQ(PhysicalOffset(50, 50), floating->Location());
-    EXPECT_EQ(IntSize(0, 400),
+    EXPECT_EQ(LayoutSize(0, 400),
               floating->ContainingLayer()->ScrolledContentOffset());
     EXPECT_EQ(PhysicalOffset(-50, -50),
               floating->VisualOffsetFromAncestor(span));
@@ -1399,7 +1658,7 @@
   EXPECT_EQ(columns, extra_layer->ContainingLayer()->Parent());
 
   EXPECT_EQ(PhysicalOffset(50, 50), spanner->Location());
-  EXPECT_EQ(IntSize(200, 0),
+  EXPECT_EQ(LayoutSize(200, 0),
             spanner->ContainingLayer()->ScrolledContentOffset());
   EXPECT_EQ(PhysicalOffset(100, 100), extra_layer->Location());
   // -60 = 2nd-column-x(40) - scroll-offset-x(200) + x-location(100)
diff --git a/third_party/blink/renderer/core/paint/paint_phase.h b/third_party/blink/renderer/core/paint/paint_phase.h
index bf07703..34e57bf4 100644
--- a/third_party/blink/renderer/core/paint/paint_phase.h
+++ b/third_party/blink/renderer/core/paint/paint_phase.h
@@ -45,7 +45,7 @@
   // Background phase
   //
   // Paint background of the current object and non-self-painting descendants.
-  kBlockBackground = 0,
+  kBlockBackground,
   //
   // The following two values are added besides the normal
   // kBlockBackground to distinguish backgrounds for the object itself
@@ -53,39 +53,40 @@
   // different scroll offsets and clips.
   //
   // Paint background of the current object only.
-  kSelfBlockBackgroundOnly = 1,
+  kSelfBlockBackgroundOnly,
   // Paint backgrounds of non-self-painting descendants only. The painter should
   // call each non-self-painting child's paint method by passing
   // paintInfo.forDescendants() which converts kDescendantBlockBackgroundsOnly
   // to kBlockBackground.
-  kDescendantBlockBackgroundsOnly = 2,
+  kDescendantBlockBackgroundsOnly,
 
   // Float phase
-  kFloat = 3,
+  kFloat,
 
   // Foreground phase
-  kForeground = 4,
+  kForeground,
 
   // Outline phase
   //
   // Paint outline for the current object and non-self-painting descendants.
-  kOutline = 5,
+  kOutline,
   //
   // Similar to the background phase, the following two values are added for
   // painting outlines of the object itself and for descendants.
   //
   // Paint outline for the current object only.
-  kSelfOutlineOnly = 6,
+  kSelfOutlineOnly,
   // Paint outlines of non-self-painting descendants only. The painter should
   // call each non-self-painting child's paint method by passing
   // paintInfo.forDescendants() which converts kDescendantOutlinesOnly to
   // kOutline.
-  kDescendantOutlinesOnly = 7,
+  kDescendantOutlinesOnly,
 
   // The below are auxiliary phases which are used to paint special effects.
-  kSelection = 8,
-  kTextClip = 9,
-  kMask = 10,
+  kOverlayScrollbars,
+  kSelection,
+  kTextClip,
+  kMask,
 
   kMax = kMask,
   // These values must be kept in sync with DisplayItem::Type and
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
index c9ffd61..565fb8c2 100644
--- a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
+++ b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
@@ -280,7 +280,12 @@
     CompositingReasons direct_compositing_reasons) {
   if (!object.HasOverflowClip())
     return false;
-  IntSize scroll_offset = ToLayoutBox(object).ScrolledContentOffset();
+
+  const LayoutBox& box = ToLayoutBox(object);
+  if (!box.GetScrollableArea())
+    return false;
+
+  ScrollOffset scroll_offset = box.GetScrollableArea()->GetScrollOffset();
   return !scroll_offset.IsZero() ||
          NeedsScrollNode(object, direct_compositing_reasons);
 }
@@ -1893,11 +1898,13 @@
     if (NeedsScrollOrScrollTranslation(
             object_, full_context_.direct_compositing_reasons)) {
       const auto& box = ToLayoutBox(object_);
+      DCHECK(box.GetScrollableArea());
+
       // Bake ScrollOrigin into ScrollTranslation. See comments for
       // ScrollTranslation in object_paint_properties.h for details.
-      auto scroll_position = box.ScrollOrigin() + box.ScrolledContentOffset();
-      TransformPaintPropertyNode::State state{
-          -FloatSize(ToIntSize(scroll_position))};
+      FloatPoint scroll_position = FloatPoint(box.ScrollOrigin()) +
+                                   box.GetScrollableArea()->GetScrollOffset();
+      TransformPaintPropertyNode::State state{-ToFloatSize(scroll_position)};
       state.flattens_inherited_transform =
           context_.current.should_flatten_inherited_transform;
       state.direct_compositing_reasons =
diff --git a/third_party/blink/renderer/core/paint/scrollable_area_painter.cc b/third_party/blink/renderer/core/paint/scrollable_area_painter.cc
index 2dc2294f..22a3963 100644
--- a/third_party/blink/renderer/core/paint/scrollable_area_painter.cc
+++ b/third_party/blink/renderer/core/paint/scrollable_area_painter.cc
@@ -124,56 +124,23 @@
 
 void ScrollableAreaPainter::PaintOverflowControls(
     const PaintInfo& paint_info,
-    const IntPoint& paint_offset,
-    bool painting_overlay_controls) {
+    const IntPoint& paint_offset) {
   // Don't do anything if we have no overflow.
-  if (!GetScrollableArea().GetLayoutBox()->HasOverflowClip())
+  const auto& box = *GetScrollableArea().GetLayoutBox();
+  if (!box.HasOverflowClip() ||
+      box.StyleRef().Visibility() != EVisibility::kVisible)
     return;
 
-  IntPoint adjusted_paint_offset = paint_offset;
-  if (painting_overlay_controls)
-    adjusted_paint_offset = GetScrollableArea().CachedOverlayScrollbarOffset();
-
-  CullRect adjusted_cull_rect = paint_info.GetCullRect();
-  adjusted_cull_rect.MoveBy(-adjusted_paint_offset);
-  // Overlay scrollbars paint in a second pass through the layer tree so that
-  // they will paint on top of everything else. If this is the normal painting
-  // pass, paintingOverlayControls will be false, and we should just tell the
-  // root layer that there are overlay scrollbars that need to be painted. That
-  // will cause the second pass through the layer tree to run, and we'll paint
-  // the scrollbars then. In the meantime, cache tx and ty so that the second
-  // pass doesn't need to re-enter the LayoutTree to get it right.
-  if (GetScrollableArea().HasOverlayScrollbars() &&
-      !painting_overlay_controls) {
-    GetScrollableArea().SetCachedOverlayScrollbarOffset(paint_offset);
-    // It's not necessary to do the second pass if the scrollbars paint into
-    // layers.
-    if ((GetScrollableArea().HorizontalScrollbar() &&
-         GetScrollableArea().LayerForHorizontalScrollbar()) ||
-        (GetScrollableArea().VerticalScrollbar() &&
-         GetScrollableArea().LayerForVerticalScrollbar()))
+  // Overlay scrollbars are painted in the dedicated paint phase, and normal
+  // scrollbars are painted in the background paint phase.
+  if (GetScrollableArea().HasOverlayScrollbars()) {
+    if (paint_info.phase != PaintPhase::kOverlayScrollbars)
       return;
-    if (!OverflowControlsIntersectRect(adjusted_cull_rect))
-      return;
-
-    LayoutView* layout_view = GetScrollableArea().GetLayoutBox()->View();
-
-    PaintLayer* painting_root =
-        GetScrollableArea().Layer()->EnclosingLayerWithCompositedLayerMapping(
-            kIncludeSelf);
-    if (!painting_root)
-      painting_root = layout_view->Layer();
-
-    painting_root->SetContainsDirtyOverlayScrollbars(true);
+  } else if (!ShouldPaintSelfBlockBackground(paint_info.phase)) {
     return;
   }
 
-  // This check is required to avoid painting custom CSS scrollbars twice.
-  if (painting_overlay_controls && !GetScrollableArea().HasOverlayScrollbars())
-    return;
-
   GraphicsContext& context = paint_info.context;
-  const auto& box = *GetScrollableArea().GetLayoutBox();
   const auto* fragment = paint_info.FragmentToPaint(box);
   if (!fragment)
     return;
@@ -191,6 +158,9 @@
     }
   }
 
+  CullRect adjusted_cull_rect = paint_info.GetCullRect();
+  adjusted_cull_rect.MoveBy(-paint_offset);
+
   if (GetScrollableArea().HorizontalScrollbar() &&
       !GetScrollableArea().LayerForHorizontalScrollbar()) {
     GetScrollableArea().HorizontalScrollbar()->Paint(context,
@@ -200,51 +170,27 @@
       !GetScrollableArea().LayerForVerticalScrollbar()) {
     GetScrollableArea().VerticalScrollbar()->Paint(context, adjusted_cull_rect);
   }
+
   if (!GetScrollableArea().LayerForScrollCorner()) {
     // We fill our scroll corner with white if we have a scrollbar that doesn't
     // run all the way up to the edge of the box.
-    PaintScrollCorner(context, adjusted_paint_offset, paint_info.GetCullRect());
+    PaintScrollCorner(context, paint_offset, paint_info.GetCullRect());
 
     // Paint our resizer last, since it sits on top of the scroll corner.
-    PaintResizer(context, adjusted_paint_offset, paint_info.GetCullRect());
+    PaintResizer(context, paint_offset, paint_info.GetCullRect());
   }
 }
 
-bool ScrollableAreaPainter::OverflowControlsIntersectRect(
-    const CullRect& cull_rect) const {
-  const IntRect border_box =
-      GetScrollableArea().GetLayoutBox()->PixelSnappedBorderBoxRect(
-          GetScrollableArea().Layer()->SubpixelAccumulation());
-
-  if (cull_rect.Intersects(
-          GetScrollableArea().RectForHorizontalScrollbar(border_box)))
-    return true;
-
-  if (cull_rect.Intersects(
-          GetScrollableArea().RectForVerticalScrollbar(border_box)))
-    return true;
-
-  if (cull_rect.Intersects(GetScrollableArea().ScrollCornerRect()))
-    return true;
-
-  if (cull_rect.Intersects(GetScrollableArea().ResizerCornerRect(
-          border_box, kResizerForPointer)))
-    return true;
-
-  return false;
-}
-
-void ScrollableAreaPainter::PaintScrollCorner(
-    GraphicsContext& context,
-    const IntPoint& paint_offset,
-    const CullRect& adjusted_cull_rect) {
+void ScrollableAreaPainter::PaintScrollCorner(GraphicsContext& context,
+                                              const IntPoint& paint_offset,
+                                              const CullRect& cull_rect) {
   IntRect abs_rect = GetScrollableArea().ScrollCornerRect();
   if (abs_rect.IsEmpty())
     return;
   abs_rect.MoveBy(paint_offset);
 
   if (const auto* scroll_corner = GetScrollableArea().ScrollCorner()) {
-    if (!adjusted_cull_rect.Intersects(abs_rect))
+    if (!cull_rect.Intersects(abs_rect))
       return;
     ScrollbarPainter::PaintIntoRect(*scroll_corner, context,
                                     PhysicalOffset(paint_offset),
diff --git a/third_party/blink/renderer/core/paint/scrollable_area_painter.h b/third_party/blink/renderer/core/paint/scrollable_area_painter.h
index d6c884a..86346c3 100644
--- a/third_party/blink/renderer/core/paint/scrollable_area_painter.h
+++ b/third_party/blink/renderer/core/paint/scrollable_area_painter.h
@@ -26,10 +26,7 @@
       PaintLayerScrollableArea& paint_layer_scrollable_area)
       : scrollable_area_(&paint_layer_scrollable_area) {}
 
-  void PaintOverflowControls(const PaintInfo&,
-                             const IntPoint& paint_offset,
-                             bool painting_overlay_controls);
-
+  void PaintOverflowControls(const PaintInfo&, const IntPoint& paint_offset);
   void PaintResizer(GraphicsContext&,
                     const IntPoint& paint_offset,
                     const CullRect&);
@@ -39,7 +36,6 @@
 
  private:
   void DrawPlatformResizerImage(GraphicsContext&, IntRect resizer_corner_rect);
-  bool OverflowControlsIntersectRect(const CullRect&) const;
 
   PaintLayerScrollableArea& GetScrollableArea() const;
   const DisplayItemClient& DisplayItemClientForCorner() const;
diff --git a/third_party/blink/renderer/core/paint/text_element_timing.h b/third_party/blink/renderer/core/paint/text_element_timing.h
index 1c78ee96..f3a4c40 100644
--- a/third_party/blink/renderer/core/paint/text_element_timing.h
+++ b/third_party/blink/renderer/core/paint/text_element_timing.h
@@ -35,10 +35,9 @@
   static TextElementTiming& From(LocalDOMWindow&);
 
   static inline bool NeededForElementTiming(Node& node) {
-    return !node.IsInShadowTree() && node.IsElementNode() &&
-           !ToElement(&node)
-                ->FastGetAttribute(html_names::kElementtimingAttr)
-                .IsEmpty();
+    auto* element = DynamicTo<Element>(node);
+    return !node.IsInShadowTree() && element &&
+           !element->FastGetAttribute(html_names::kElementtimingAttr).IsEmpty();
   }
 
   static FloatRect ComputeIntersectionRect(
diff --git a/third_party/blink/renderer/core/paint/theme_painter.cc b/third_party/blink/renderer/core/paint/theme_painter.cc
index 1c5c476..2c83795 100644
--- a/third_party/blink/renderer/core/paint/theme_painter.cc
+++ b/third_party/blink/renderer/core/paint/theme_painter.cc
@@ -31,6 +31,7 @@
 #include "third_party/blink/renderer/core/html/forms/html_option_element.h"
 #include "third_party/blink/renderer/core/html/forms/html_select_element.h"
 #include "third_party/blink/renderer/core/html/forms/html_text_area_element.h"
+#include "third_party/blink/renderer/core/html/forms/spin_button_element.h"
 #include "third_party/blink/renderer/core/html/parser/html_parser_idioms.h"
 #include "third_party/blink/renderer/core/html/shadow/shadow_element_names.h"
 #include "third_party/blink/renderer/core/input_type_names.h"
@@ -160,8 +161,7 @@
       return PaintButton(node, o.GetDocument(), style, paint_info, r);
     case kInnerSpinButtonPart: {
       COUNT_APPEARANCE(doc, InnerSpinButton);
-      auto* element = ToElementOrNull(node);
-      if (!element || !element->IsSpinButtonElement())
+      if (!DynamicTo<SpinButtonElement>(node))
         COUNT_APPEARANCE(doc, InnerSpinButtonForOthers);
       return PaintInnerSpinButton(node, style, paint_info, r);
     }
@@ -226,7 +226,7 @@
     }
     case kSearchFieldCancelButtonPart: {
       COUNT_APPEARANCE(doc, SearchCancel);
-      auto* element = ToElementOrNull(node);
+      auto* element = DynamicTo<Element>(node);
       if (!element || !element->OwnerShadowHost()) {
         COUNT_APPEARANCE(doc, SearchCancelForOthers);
         COUNT_APPEARANCE(doc, SearchCancelForOthers2);
diff --git a/third_party/blink/renderer/core/script/resources/layered_api/elements/switch/style.mjs b/third_party/blink/renderer/core/script/resources/layered_api/elements/switch/style.mjs
index 4b88822..6b0bc2e 100644
--- a/third_party/blink/renderer/core/script/resources/layered_api/elements/switch/style.mjs
+++ b/third_party/blink/renderer/core/script/resources/layered_api/elements/switch/style.mjs
@@ -152,31 +152,9 @@
 }
 
 /**
- * Add 'transitioning' class to the element, and remove it on 'transitionend'
- * event.
- *
- * TODO(tkent): This doesn't work well with customization by web authors because
- * class of a shadow element is invisible for web authors. We should apply
- * custom state.
- *
  * @param {!Element} element
  */
-export function markTransition(element) {
-  // Should check hasAttribute() to avoid creating a DOMTokenList instance.
-  if (!element.hasAttribute('part') || element.part.length < 1) {
-    return;
-  }
-  let partName = element.part[0] + '-transitioning';
-  element.part.add(partName);
-  let durations = element.computedStyleMap().getAll('transition-duration');
-  if (!durations.some(duration => duration.value > 0)) {
-    // If the element will have no transitions, we remove the part name
-    // immediately.
-    element.part.remove(partName);
-    return;
-  }
-  // If the element will have transitions, initialize counters and listeners
-  // only once.
+function setupTransitionCounter(element) {
   if (element.runningTransitions !== undefined) {
     return;
   }
@@ -189,11 +167,58 @@
   let handleEndOrCancel = e => {
     // Need to check runningTransitions>0 due to superfluous transitioncancel
     // events; crbug.com/979556.
-    if (e.target === element && element.runningTransitions > 0 &&
-        --element.runningTransitions === 0) {
-      element.part.remove(partName);
+    if (e.target === element && element.runningTransitions > 0) {
+      --element.runningTransitions;
     }
   };
   element.addEventListener('transitionend', handleEndOrCancel);
   element.addEventListener('transitioncancel', handleEndOrCancel);
 }
+
+/**
+ * Add '$part-transitioning' part to the element, and remove it on 'transitionend'
+ * event or remove it immediately if the element has no transitions.
+ *
+ * TODO(tkent): We should apply custom state.
+ *
+ * @param {!Element} element
+ */
+export function markTransition(element) {
+  // Should check hasAttribute() to avoid creating a DOMTokenList instance.
+  if (!element.hasAttribute('part') || element.part.length < 1) {
+    return;
+  }
+
+  setupTransitionCounter(element);
+
+  const partName = element.part[0] + '-transitioning';
+  if (element.part.contains(partName)) {
+    return;
+  }
+  // The style with partName might have transitions, and might have no
+  // transitions. We need to add partName anyway because we have no other
+  // ways to check existence of transitions.  Then, we need to remove
+  // partName because state change without markTransition() should have
+  // style without partName.
+  //
+  // We add partName in an animation frame, and continue to request
+  // animation frames until runningTransitions becomes 0. If the style with
+  // partName has no transitions, runningTransitions keeps 0, and the second
+  // animation frame removes partName.
+  window.requestAnimationFrame(() => {
+    element.part.add(partName);
+
+    // If the element has a transition, it must start on the rendering just
+    // after this rAF callback. So we check runningTransitions in the next
+    // frame.
+    const removeIfNoTransitions = () => {
+      // No transitions started, or all transitions were completed.
+      if (element.runningTransitions === 0) {
+        element.part.remove(partName);
+      } else {
+        window.requestAnimationFrame(removeIfNoTransitions);
+      }
+    };
+    window.requestAnimationFrame(removeIfNoTransitions);
+  });
+}
diff --git a/third_party/blink/renderer/core/scroll/scroll_animator_test.cc b/third_party/blink/renderer/core/scroll/scroll_animator_test.cc
index 4d9ab8c5..21f15d4 100644
--- a/third_party/blink/renderer/core/scroll/scroll_animator_test.cc
+++ b/third_party/blink/renderer/core/scroll/scroll_animator_test.cc
@@ -139,6 +139,10 @@
     ScrollableArea::Trace(visitor);
   }
 
+  virtual void PreFinalize() {
+      timer_task_runner_.reset();
+  }
+
  private:
   bool scroll_animator_enabled_;
   ScrollOffset min_offset_;
diff --git a/third_party/blink/renderer/core/scroll/scrollable_area.cc b/third_party/blink/renderer/core/scroll/scrollable_area.cc
index 3666288..d4467c7 100644
--- a/third_party/blink/renderer/core/scroll/scrollable_area.cc
+++ b/third_party/blink/renderer/core/scroll/scrollable_area.cc
@@ -93,10 +93,16 @@
       needs_show_scrollbar_layers_(false),
       uses_composited_scrolling_(false) {}
 
-ScrollableArea::~ScrollableArea() {
+ScrollableArea::~ScrollableArea() = default;
+
+void ScrollableArea::Dispose() {
   RunScrollCompleteCallbacks();
+  fade_overlay_scrollbars_timer_.reset();
+  PreFinalize();
 }
 
+void ScrollableArea::PreFinalize() {}
+
 void ScrollableArea::ClearScrollableArea() {
 #if defined(OS_MACOSX)
   if (scroll_animator_)
diff --git a/third_party/blink/renderer/core/scroll/scrollable_area.h b/third_party/blink/renderer/core/scroll/scrollable_area.h
index e5c354c..c0756926 100644
--- a/third_party/blink/renderer/core/scroll/scrollable_area.h
+++ b/third_party/blink/renderer/core/scroll/scrollable_area.h
@@ -67,6 +67,7 @@
 
 class CORE_EXPORT ScrollableArea : public GarbageCollectedMixin {
   DISALLOW_COPY_AND_ASSIGN(ScrollableArea);
+  USING_PRE_FINALIZER(ScrollableArea, Dispose);
 
  public:
   using ScrollCallback = base::OnceClosure;
@@ -349,6 +350,9 @@
 
   virtual ~ScrollableArea();
 
+  void Dispose();
+  virtual void PreFinalize();
+
   // Called when any of horizontal scrollbar, vertical scrollbar and scroll
   // corner is setNeedsPaintInvalidation.
   virtual void ScrollControlWasSetNeedsPaintInvalidation() = 0;
@@ -389,8 +393,6 @@
   // for layout movements (bit.ly/scroll-anchoring).
   virtual bool ShouldPerformScrollAnchoring() const { return false; }
 
-  // Need to promptly let go of owned animator objects.
-  EAGERLY_FINALIZE();
   void Trace(blink::Visitor*) override;
 
   virtual void ClearScrollableArea();
diff --git a/third_party/blink/renderer/core/scroll/scrollbar.cc b/third_party/blink/renderer/core/scroll/scrollbar.cc
index 251927c..b8273ca3 100644
--- a/third_party/blink/renderer/core/scroll/scrollbar.cc
+++ b/third_party/blink/renderer/core/scroll/scrollbar.cc
@@ -83,7 +83,9 @@
   current_pos_ = ScrollableAreaCurrentPos();
 }
 
-Scrollbar::~Scrollbar() {
+Scrollbar::~Scrollbar() =default;
+
+void Scrollbar::Dispose() {
   theme_.UnregisterScrollbar(*this);
 }
 
diff --git a/third_party/blink/renderer/core/scroll/scrollbar.h b/third_party/blink/renderer/core/scroll/scrollbar.h
index e265f7e..486f604 100644
--- a/third_party/blink/renderer/core/scroll/scrollbar.h
+++ b/third_party/blink/renderer/core/scroll/scrollbar.h
@@ -47,6 +47,7 @@
 
 class CORE_EXPORT Scrollbar : public GarbageCollectedFinalized<Scrollbar>,
                               public DisplayItemClient {
+    USING_PRE_FINALIZER(Scrollbar, Dispose);
  public:
   // Theme object ownership remains with the caller and it must outlive the
   // scrollbar.
@@ -191,7 +192,7 @@
 
   // Promptly unregister from the theme manager + run finalizers of derived
   // Scrollbars.
-  EAGERLY_FINALIZE();
+  void Dispose();
   virtual void Trace(blink::Visitor*);
 
  protected:
diff --git a/third_party/blink/renderer/core/scroll/scrolling_test.cc b/third_party/blink/renderer/core/scroll/scrolling_test.cc
index f69a5aa8..45e18070 100644
--- a/third_party/blink/renderer/core/scroll/scrolling_test.cc
+++ b/third_party/blink/renderer/core/scroll/scrolling_test.cc
@@ -12,6 +12,7 @@
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
 #include "third_party/blink/renderer/core/frame/root_frame_viewport.h"
 #include "third_party/blink/renderer/core/frame/visual_viewport.h"
+#include "third_party/blink/renderer/core/geometry/dom_rect.h"
 #include "third_party/blink/renderer/core/layout/layout_box.h"
 #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
 #include "third_party/blink/renderer/core/scroll/scroll_animator_base.h"
@@ -22,6 +23,53 @@
 
 namespace blink {
 
+class FractionalScrollSimTest : public SimTest {
+ public:
+  FractionalScrollSimTest() : fractional_scroll_offsets_for_test_(true) {}
+
+ private:
+  ScopedFractionalScrollOffsetsForTest fractional_scroll_offsets_for_test_;
+};
+
+TEST_F(FractionalScrollSimTest, GetBoundingClientRectAtFractional) {
+  WebView().MainFrameWidget()->Resize(WebSize(800, 600));
+  SimRequest request("https://example.com/test.html", "text/html");
+  LoadURL("https://example.com/test.html");
+  request.Complete(R"HTML(
+    <!DOCTYPE html>
+    <style>
+      body, html {
+        margin: 0;
+        height: 2000px;
+        width: 2000px;
+      }
+      div {
+        position: absolute;
+        left: 800px;
+        top: 600px;
+        width: 100px;
+        height: 100px;
+      }
+    </style>
+    <body>
+      <div id="target"></div>
+    </body>
+  )HTML");
+  Compositor().BeginFrame();
+
+  // Scroll on the layout viewport.
+  GetDocument().View()->GetScrollableArea()->SetScrollOffset(
+      FloatSize(700.5f, 500.6f), kProgrammaticScroll, kScrollBehaviorInstant);
+
+  Compositor().BeginFrame();
+
+  Element* target = GetDocument().getElementById("target");
+  DOMRect* rect = target->getBoundingClientRect();
+  const float kOneLayoutUnit = 1.f / kFixedPointDenominator;
+  EXPECT_NEAR(LayoutUnit(800.f - 700.5f), rect->left(), kOneLayoutUnit);
+  EXPECT_NEAR(LayoutUnit(600.f - 500.6f), rect->top(), kOneLayoutUnit);
+}
+
 class ScrollAnimatorSimTest : public SimTest {};
 
 // Test that the callback of user scroll will be executed when the animation
diff --git a/third_party/blink/renderer/core/streams/underlying_sink_base.h b/third_party/blink/renderer/core/streams/underlying_sink_base.h
index 515b64c..9dd9e0bf 100644
--- a/third_party/blink/renderer/core/streams/underlying_sink_base.h
+++ b/third_party/blink/renderer/core/streams/underlying_sink_base.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_STREAMS_UNDERLYING_SINK_BASE_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_STREAMS_UNDERLYING_SINK_BASE_H_
 
+#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/streams/writable_stream_default_controller_interface.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
@@ -12,7 +13,6 @@
 
 namespace blink {
 
-class ScriptPromise;
 class ScriptValue;
 class ScriptState;
 
diff --git a/third_party/blink/renderer/core/streams/writable_stream.cc b/third_party/blink/renderer/core/streams/writable_stream.cc
index 3d6f944..f0817bf8 100644
--- a/third_party/blink/renderer/core/streams/writable_stream.cc
+++ b/third_party/blink/renderer/core/streams/writable_stream.cc
@@ -53,6 +53,19 @@
   return stream;
 }
 
+WritableStream* WritableStream::CreateWithCountQueueingStrategy(
+    ScriptState* script_state,
+    UnderlyingSinkBase* underlying_sink,
+    size_t high_water_mark) {
+  if (RuntimeEnabledFeatures::StreamsNativeEnabled()) {
+    return WritableStreamNative::CreateWithCountQueueingStrategy(
+        script_state, underlying_sink, high_water_mark);
+  }
+
+  return WritableStreamWrapper::CreateWithCountQueueingStrategy(
+      script_state, underlying_sink, high_water_mark);
+}
+
 // static
 WritableStream* WritableStream::Deserialize(ScriptState* script_state,
                                             MessagePort* port,
diff --git a/third_party/blink/renderer/core/streams/writable_stream.h b/third_party/blink/renderer/core/streams/writable_stream.h
index 2d57e219..cbc4f616 100644
--- a/third_party/blink/renderer/core/streams/writable_stream.h
+++ b/third_party/blink/renderer/core/streams/writable_stream.h
@@ -15,6 +15,7 @@
 namespace blink {
 
 class MessagePort;
+class UnderlyingSinkBase;
 
 // This is an implementation of the corresponding IDL interface.
 class CORE_EXPORT WritableStream : public ScriptWrappable {
@@ -31,6 +32,10 @@
                                 ScriptValue underlying_sink,
                                 ScriptValue strategy,
                                 ExceptionState&);
+  static WritableStream* CreateWithCountQueueingStrategy(
+      ScriptState*,
+      UnderlyingSinkBase*,
+      size_t high_water_mark);
 
   // IDL defined functions
   virtual bool locked(ScriptState*, ExceptionState&) const = 0;
diff --git a/third_party/blink/renderer/core/streams/writable_stream_native.cc b/third_party/blink/renderer/core/streams/writable_stream_native.cc
index c0ee787..4c84778 100644
--- a/third_party/blink/renderer/core/streams/writable_stream_native.cc
+++ b/third_party/blink/renderer/core/streams/writable_stream_native.cc
@@ -8,8 +8,10 @@
 #include "third_party/blink/renderer/core/streams/miscellaneous_operations.h"
 #include "third_party/blink/renderer/core/streams/promise_handler.h"
 #include "third_party/blink/renderer/core/streams/readable_stream_native.h"
+#include "third_party/blink/renderer/core/streams/readable_stream_operations.h"
 #include "third_party/blink/renderer/core/streams/stream_promise_resolver.h"
 #include "third_party/blink/renderer/core/streams/transferable_streams.h"
+#include "third_party/blink/renderer/core/streams/underlying_sink_base.h"
 #include "third_party/blink/renderer/core/streams/writable_stream_default_controller.h"
 #include "third_party/blink/renderer/core/streams/writable_stream_default_writer.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
@@ -217,6 +219,32 @@
   return stream;
 }
 
+// static
+WritableStreamNative* WritableStreamNative::CreateWithCountQueueingStrategy(
+    ScriptState* script_state,
+    UnderlyingSinkBase* underlying_sink,
+    size_t high_water_mark) {
+  // TODO(crbug.com/902633): This method of constructing a WritableStream
+  // introduces unnecessary trips through the V8. Perhaps we should implement
+  // algorithms based on an UnderlyingSinkBase, or C++ stream implementations
+  // should provide the algorithms directly.
+  ScriptValue strategy = ReadableStreamOperations::CreateCountQueuingStrategy(
+      script_state, high_water_mark);
+  if (strategy.IsEmpty())
+    return nullptr;
+
+  auto underlying_sink_value = ScriptValue::From(script_state, underlying_sink);
+
+  ExceptionState exception_state(script_state->GetIsolate(),
+                                 ExceptionState::kConstructionContext,
+                                 "WritableStream");
+  auto* stream = MakeGarbageCollected<WritableStreamNative>(
+      script_state, underlying_sink_value, strategy, exception_state);
+  if (exception_state.HadException())
+    return nullptr;
+  return stream;
+}
+
 void WritableStreamNative::Serialize(ScriptState* script_state,
                                      MessagePort* port,
                                      ExceptionState& exception_state) {
diff --git a/third_party/blink/renderer/core/streams/writable_stream_native.h b/third_party/blink/renderer/core/streams/writable_stream_native.h
index e1848c6..e37cac9 100644
--- a/third_party/blink/renderer/core/streams/writable_stream_native.h
+++ b/third_party/blink/renderer/core/streams/writable_stream_native.h
@@ -20,6 +20,7 @@
 class StreamAlgorithm;
 class StreamPromiseResolver;
 class StreamStartAlgorithm;
+class UnderlyingSinkBase;
 class WritableStreamDefaultController;
 class WritableStreamDefaultWriter;
 
@@ -44,6 +45,11 @@
                                       StrategySizeAlgorithm* size_algorithm,
                                       ExceptionState&);
 
+  static WritableStreamNative* CreateWithCountQueueingStrategy(
+      ScriptState*,
+      UnderlyingSinkBase*,
+      size_t high_water_mark);
+
   // Used by Create().
   WritableStreamNative();
 
diff --git a/third_party/blink/renderer/core/streams/writable_stream_wrapper.cc b/third_party/blink/renderer/core/streams/writable_stream_wrapper.cc
index 277aa68..6e6ffcd 100644
--- a/third_party/blink/renderer/core/streams/writable_stream_wrapper.cc
+++ b/third_party/blink/renderer/core/streams/writable_stream_wrapper.cc
@@ -7,6 +7,8 @@
 #include "third_party/blink/renderer/bindings/core/v8/v8_script_runner.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_writable_stream.h"
 #include "third_party/blink/renderer/core/messaging/message_port.h"
+#include "third_party/blink/renderer/core/streams/readable_stream_operations.h"
+#include "third_party/blink/renderer/core/streams/underlying_sink_base.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/v8_binding.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
@@ -46,6 +48,27 @@
   return stream;
 }
 
+WritableStreamWrapper* WritableStreamWrapper::CreateWithCountQueueingStrategy(
+    ScriptState* script_state,
+    UnderlyingSinkBase* underlying_sink,
+    size_t high_water_mark) {
+  ScriptValue strategy = ReadableStreamOperations::CreateCountQueuingStrategy(
+      script_state, high_water_mark);
+  if (strategy.IsEmpty())
+    return nullptr;
+
+  auto underlying_sink_value = ScriptValue::From(script_state, underlying_sink);
+  auto* stream = MakeGarbageCollected<WritableStreamWrapper>();
+
+  ExceptionState exception_state(script_state->GetIsolate(),
+                                 ExceptionState::kConstructionContext,
+                                 "WritableStream");
+  stream->Init(script_state, underlying_sink_value, strategy, exception_state);
+  if (exception_state.HadException())
+    return nullptr;
+  return stream;
+}
+
 bool WritableStreamWrapper::InitInternal(
     ScriptState* script_state,
     v8::Local<v8::Object> internal_stream) {
diff --git a/third_party/blink/renderer/core/streams/writable_stream_wrapper.h b/third_party/blink/renderer/core/streams/writable_stream_wrapper.h
index 4a24ad8..658c6d1 100644
--- a/third_party/blink/renderer/core/streams/writable_stream_wrapper.h
+++ b/third_party/blink/renderer/core/streams/writable_stream_wrapper.h
@@ -16,6 +16,7 @@
 namespace blink {
 
 class MessagePort;
+class WritableStreamWrapper;
 
 // This is an implementation of the WritableStream interface that delegates to
 // the V8 Extras implementation.
@@ -46,6 +47,11 @@
       v8::Local<v8::Object> internal_stream,
       ExceptionState&);
 
+  static WritableStreamWrapper* CreateWithCountQueueingStrategy(
+      ScriptState*,
+      UnderlyingSinkBase*,
+      size_t high_water_mark);
+
   void Trace(Visitor* visitor) override;
 
   // IDL defined functions
diff --git a/third_party/blink/renderer/core/style/computed_style_test.cc b/third_party/blink/renderer/core/style/computed_style_test.cc
index 6c16aa4..6bc972c 100644
--- a/third_party/blink/renderer/core/style/computed_style_test.cc
+++ b/third_party/blink/renderer/core/style/computed_style_test.cc
@@ -70,13 +70,22 @@
 TEST(ComputedStyleTest, FocusRingWidth) {
   scoped_refptr<ComputedStyle> style = ComputedStyle::Create();
   style->SetEffectiveZoom(3.5);
-#if defined(OS_MACOSX)
   style->SetOutlineStyle(EBorderStyle::kSolid);
+#if defined(OS_MACOSX)
   EXPECT_EQ(3, style->GetOutlineStrokeWidthForFocusRing());
 #else
-  EXPECT_EQ(3.5, style->GetOutlineStrokeWidthForFocusRing());
+  style->SetOutlineStyleIsAuto(static_cast<bool>(OutlineIsAuto::kOn));
+  static uint16_t outline_width = 4;
+  style->SetOutlineWidth(outline_width);
+
+  double expected_width =
+      LayoutTheme::GetTheme().IsFocusRingOutset() ? outline_width : 3.5;
+  EXPECT_EQ(expected_width, style->GetOutlineStrokeWidthForFocusRing());
+
+  expected_width =
+      LayoutTheme::GetTheme().IsFocusRingOutset() ? outline_width : 1.0;
   style->SetEffectiveZoom(0.5);
-  EXPECT_EQ(1, style->GetOutlineStrokeWidthForFocusRing());
+  EXPECT_EQ(expected_width, style->GetOutlineStrokeWidthForFocusRing());
 #endif
 }
 
diff --git a/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc b/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc
index 8111578..b0188383 100644
--- a/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc
+++ b/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc
@@ -843,7 +843,7 @@
 
   if (!first_interval.begin.IsUnresolved() && first_interval != interval_) {
     interval_ = first_interval;
-    NotifyDependentsIntervalChanged();
+    NotifyDependentsIntervalChanged(interval_);
     next_progress_time_ = next_progress_time_.IsUnresolved()
                               ? interval_.begin
                               : std::min(next_progress_time_, interval_.begin);
@@ -853,21 +853,16 @@
   }
 }
 
-bool SVGSMILElement::ResolveNextInterval() {
+base::Optional<SMILInterval> SVGSMILElement::ResolveNextInterval() {
   SMILInterval next_interval = ResolveInterval(kNextInterval);
   DCHECK(!next_interval.begin.IsIndefinite());
 
   if (!next_interval.begin.IsUnresolved() &&
       next_interval.begin != interval_.begin) {
-    interval_ = next_interval;
-    NotifyDependentsIntervalChanged();
-    next_progress_time_ = next_progress_time_.IsUnresolved()
-                              ? interval_.begin
-                              : std::min(next_progress_time_, interval_.begin);
-    return true;
+    return next_interval;
   }
 
-  return false;
+  return base::nullopt;
 }
 
 SMILTime SVGSMILElement::NextProgressTime() const {
@@ -892,7 +887,7 @@
           if (GetActiveState() != kActive)
             EndedActiveInterval();
         }
-        NotifyDependentsIntervalChanged();
+        NotifyDependentsIntervalChanged(interval_);
       }
     }
   }
@@ -912,7 +907,7 @@
       new_end = ResolveActiveEnd(interval_.begin, new_end);
       if (new_end != interval_.end) {
         interval_.end = new_end;
-        NotifyDependentsIntervalChanged();
+        NotifyDependentsIntervalChanged(interval_);
       }
     }
   }
@@ -937,13 +932,22 @@
     SMILTime next_begin = FindInstanceTime(kBegin, interval_.begin, false);
     if (next_begin < interval_.end) {
       interval_.end = next_begin;
-      NotifyDependentsIntervalChanged();
+      NotifyDependentsIntervalChanged(interval_);
     }
   }
 
   if (elapsed >= interval_.end) {
-    if (ResolveNextInterval() && elapsed >= interval_.begin)
-      return kDidRestartInterval;
+    base::Optional<SMILInterval> next_interval = ResolveNextInterval();
+    if (next_interval) {
+      interval_ = *next_interval;
+      NotifyDependentsIntervalChanged(interval_);
+      next_progress_time_ =
+          next_progress_time_.IsUnresolved()
+              ? interval_.begin
+              : std::min(next_progress_time_, interval_.begin);
+      if (elapsed >= interval_.begin)
+        return kDidRestartInterval;
+    }
   }
   return kDidNotRestartInterval;
 }
@@ -971,16 +975,33 @@
       // End current interval, and start a new interval from the 'nextBegin'
       // time.
       interval_.end = next_begin;
-      if (!ResolveNextInterval())
+
+      base::Optional<SMILInterval> next_interval = ResolveNextInterval();
+      if (!next_interval)
         break;
+
+      interval_ = *next_interval;
+      NotifyDependentsIntervalChanged(interval_);
+      next_progress_time_ =
+          next_progress_time_.IsUnresolved()
+              ? interval_.begin
+              : std::min(next_progress_time_, interval_.begin);
       continue;
     }
 
     // If the desired 'elapsed' time is past the current interval, advance to
     // the next.
     if (elapsed >= interval_.end) {
-      if (!ResolveNextInterval())
+      base::Optional<SMILInterval> next_interval = ResolveNextInterval();
+      if (!next_interval)
         break;
+
+      interval_ = *next_interval;
+      NotifyDependentsIntervalChanged(interval_);
+      next_progress_time_ =
+          next_progress_time_.IsUnresolved()
+              ? interval_.begin
+              : std::min(next_progress_time_, interval_.begin);
       continue;
     }
 
@@ -1176,8 +1197,9 @@
   }
 }
 
-void SVGSMILElement::NotifyDependentsIntervalChanged() {
-  DCHECK(interval_.begin.IsFinite());
+void SVGSMILElement::NotifyDependentsIntervalChanged(
+    const SMILInterval& interval) {
+  DCHECK(interval.begin.IsFinite());
   // |loopBreaker| is used to avoid infinite recursions which may be caused by:
   // |notifyDependentsIntervalChanged| -> |createInstanceTimesFromSyncbase| ->
   // |add{Begin,End}Time| -> |{begin,end}TimeChanged| ->
@@ -1192,13 +1214,14 @@
     return;
 
   for (SVGSMILElement* element : sync_base_dependents_)
-    element->CreateInstanceTimesFromSyncbase(*this);
+    element->CreateInstanceTimesFromSyncbase(*this, interval);
 
   loop_breaker.erase(this);
 }
 
 void SVGSMILElement::CreateInstanceTimesFromSyncbase(
-    SVGSMILElement& sync_base) {
+    SVGSMILElement& sync_base,
+    const SMILInterval& interval) {
   // FIXME: To be really correct, this should handle updating exising interval
   // by changing the associated times instead of creating new ones.
   for (Condition* condition : conditions_) {
@@ -1209,9 +1232,9 @@
       // conversions. Phew!
       SMILTime time = 0;
       if (condition->GetName() == "begin")
-        time = sync_base.interval_.begin + condition->Offset();
+        time = interval.begin + condition->Offset();
       else
-        time = sync_base.interval_.end + condition->Offset();
+        time = interval.end + condition->Offset();
       if (!time.IsFinite())
         continue;
       AddInstanceTime(condition->GetBeginOrEnd(), time);
@@ -1222,7 +1245,7 @@
 void SVGSMILElement::AddSyncBaseDependent(SVGSMILElement& animation) {
   sync_base_dependents_.insert(&animation);
   if (interval_.begin.IsFinite())
-    animation.CreateInstanceTimesFromSyncbase(*this);
+    animation.CreateInstanceTimesFromSyncbase(*this, interval_);
 }
 
 void SVGSMILElement::RemoveSyncBaseDependent(SVGSMILElement& animation) {
diff --git a/third_party/blink/renderer/core/svg/animation/svg_smil_element.h b/third_party/blink/renderer/core/svg/animation/svg_smil_element.h
index d57acd3..3ed78ff 100644
--- a/third_party/blink/renderer/core/svg/animation/svg_smil_element.h
+++ b/third_party/blink/renderer/core/svg/animation/svg_smil_element.h
@@ -180,7 +180,7 @@
 
   SMILInterval ResolveInterval(IntervalSelector) const;
   void ResolveFirstInterval();
-  bool ResolveNextInterval();
+  base::Optional<SMILInterval> ResolveNextInterval();
   SMILTime ResolveActiveEnd(SMILTime resolved_begin,
                             SMILTime resolved_end) const;
   SMILTime RepeatingDuration() const;
@@ -239,8 +239,9 @@
   void DisconnectSyncBaseConditions();
   void DisconnectEventBaseConditions();
 
-  void NotifyDependentsIntervalChanged();
-  void CreateInstanceTimesFromSyncbase(SVGSMILElement& syncbase);
+  void NotifyDependentsIntervalChanged(const SMILInterval& interval);
+  void CreateInstanceTimesFromSyncbase(SVGSMILElement& syncbase,
+                                       const SMILInterval& interval);
   void AddSyncBaseDependent(SVGSMILElement&);
   void RemoveSyncBaseDependent(SVGSMILElement&);
 
diff --git a/third_party/blink/renderer/core/svg/svg_fe_image_element.cc b/third_party/blink/renderer/core/svg/svg_fe_image_element.cc
index 1256a0e..9069c8b1 100644
--- a/third_party/blink/renderer/core/svg/svg_fe_image_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_fe_image_element.cc
@@ -45,7 +45,9 @@
   AddToPropertyMap(preserve_aspect_ratio_);
 }
 
-SVGFEImageElement::~SVGFEImageElement() {
+SVGFEImageElement::~SVGFEImageElement() = default;
+
+void SVGFEImageElement::Dispose() {
   ClearImageResource();
 }
 
diff --git a/third_party/blink/renderer/core/svg/svg_fe_image_element.h b/third_party/blink/renderer/core/svg/svg_fe_image_element.h
index a21fb8e..a2991133 100644
--- a/third_party/blink/renderer/core/svg/svg_fe_image_element.h
+++ b/third_party/blink/renderer/core/svg/svg_fe_image_element.h
@@ -36,6 +36,8 @@
                                 public ImageResourceObserver {
   DEFINE_WRAPPERTYPEINFO();
   USING_GARBAGE_COLLECTED_MIXIN(SVGFEImageElement);
+  // Pre-finalize to promptly remove as a ImageResource client.
+  USING_PRE_FINALIZER(SVGFEImageElement, Dispose);
 
  public:
   bool CurrentFrameHasSingleSecurityOrigin() const;
@@ -50,8 +52,8 @@
     return SVGURIReference::GetCheckedAttributeTypes();
   }
 
-  // Promptly remove as a ImageResource client.
-  EAGERLY_FINALIZE();
+  void Dispose();
+
   void Trace(blink::Visitor*) override;
 
  private:
diff --git a/third_party/blink/renderer/core/svg/svg_length.cc b/third_party/blink/renderer/core/svg/svg_length.cc
index 6ff0ded..9bd69733 100644
--- a/third_party/blink/renderer/core/svg/svg_length.cc
+++ b/third_party/blink/renderer/core/svg/svg_length.cc
@@ -21,6 +21,7 @@
 
 #include "third_party/blink/renderer/core/svg/svg_length.h"
 
+#include "third_party/blink/renderer/core/css/css_math_function_value.h"
 #include "third_party/blink/renderer/core/css/css_numeric_literal_value.h"
 #include "third_party/blink/renderer/core/css/css_primitive_value.h"
 #include "third_party/blink/renderer/core/css/css_value.h"
@@ -132,20 +133,28 @@
       value_->TypeWithCalcResolved());
 }
 
-static bool IsCalcCSSUnitType(CSSPrimitiveValue::UnitType type) {
-  return type >= CSSPrimitiveValue::UnitType::kCalc &&
-         type <=
-             CSSPrimitiveValue::UnitType::kCalcPercentageWithLengthAndNumber;
-}
-
 static bool IsSupportedCSSUnitType(CSSPrimitiveValue::UnitType type) {
   return (CSSPrimitiveValue::IsLength(type) ||
           type == CSSPrimitiveValue::UnitType::kNumber ||
-          type == CSSPrimitiveValue::UnitType::kPercentage ||
-          IsCalcCSSUnitType(type)) &&
+          type == CSSPrimitiveValue::UnitType::kPercentage) &&
          type != CSSPrimitiveValue::UnitType::kQuirkyEms;
 }
 
+static bool IsSupportedCalculationCategory(CalculationCategory category) {
+  switch (category) {
+    case kCalcLength:
+    case kCalcNumber:
+    case kCalcPercent:
+    case kCalcPercentNumber:
+    case kCalcPercentLength:
+    case kCalcLengthNumber:
+    case kCalcPercentLengthNumber:
+      return true;
+    default:
+      return false;
+  }
+}
+
 void SVGLength::SetUnitType(CSSPrimitiveValue::UnitType type) {
   DCHECK(IsSupportedCSSUnitType(type));
   value_ = CSSNumericLiteralValue::Create(value_->GetFloatValue(), type);
@@ -212,8 +221,13 @@
   if (!new_value)
     return SVGParseStatus::kExpectedLength;
 
-  if (!IsSupportedCSSUnitType(new_value->TypeWithCalcResolved()))
-    return SVGParseStatus::kExpectedLength;
+  if (const auto* math_value = DynamicTo<CSSMathFunctionValue>(new_value)) {
+    if (!IsSupportedCalculationCategory(math_value->Category()))
+      return SVGParseStatus::kExpectedLength;
+  } else {
+    if (!IsSupportedCSSUnitType(new_value->TypeWithCalcResolved()))
+      return SVGParseStatus::kExpectedLength;
+  }
 
   value_ = new_value;
   return SVGParseStatus::kNoError;
diff --git a/third_party/blink/renderer/core/timing/memory_info.cc b/third_party/blink/renderer/core/timing/memory_info.cc
index 4cfde32..1db6689e 100644
--- a/third_party/blink/renderer/core/timing/memory_info.cc
+++ b/third_party/blink/renderer/core/timing/memory_info.cc
@@ -56,10 +56,6 @@
   info.total_js_heap_size =
       heap_statistics.total_physical_size() + heap_statistics.external_memory();
   info.js_heap_size_limit = heap_statistics.heap_size_limit();
-  info.used_js_heap_size_without_external_memory =
-      heap_statistics.used_heap_size();
-  info.total_js_heap_size_without_external_memory =
-      heap_statistics.total_physical_size();
 }
 
 class HeapSizeCache {
@@ -107,10 +103,6 @@
     info_.used_js_heap_size = QuantizeMemorySize(info_.used_js_heap_size);
     info_.total_js_heap_size = QuantizeMemorySize(info_.total_js_heap_size);
     info_.js_heap_size_limit = QuantizeMemorySize(info_.js_heap_size_limit);
-    info_.used_js_heap_size_without_external_memory =
-        QuantizeMemorySize(info_.used_js_heap_size_without_external_memory);
-    info_.total_js_heap_size_without_external_memory =
-        QuantizeMemorySize(info_.total_js_heap_size_without_external_memory);
   }
 
   base::Optional<base::TimeTicks> last_update_time_;
diff --git a/third_party/blink/renderer/core/timing/memory_info.h b/third_party/blink/renderer/core/timing/memory_info.h
index 665e53b8..7cc0704a 100644
--- a/third_party/blink/renderer/core/timing/memory_info.h
+++ b/third_party/blink/renderer/core/timing/memory_info.h
@@ -48,9 +48,6 @@
   size_t used_js_heap_size = 0;
   size_t total_js_heap_size = 0;
   size_t js_heap_size_limit = 0;
-  // Values for origin trial: "Legacy Performance Memory Counters".
-  size_t used_js_heap_size_without_external_memory = 0;
-  size_t total_js_heap_size_without_external_memory = 0;
 };
 
 class CORE_EXPORT MemoryInfo final : public ScriptWrappable {
@@ -68,12 +65,6 @@
   size_t totalJSHeapSize() const { return info_.total_js_heap_size; }
   size_t usedJSHeapSize() const { return info_.used_js_heap_size; }
   size_t jsHeapSizeLimit() const { return info_.js_heap_size_limit; }
-  size_t usedJSHeapSizeWithoutExternalMemory() const {
-    return info_.used_js_heap_size_without_external_memory;
-  }
-  size_t totalJSHeapSizeWithoutExternalMemory() const {
-    return info_.total_js_heap_size_without_external_memory;
-  }
 
  private:
   FRIEND_TEST_ALL_PREFIXES(MemoryInfoTest, Bucketized);
diff --git a/third_party/blink/renderer/core/timing/memory_info.idl b/third_party/blink/renderer/core/timing/memory_info.idl
index dcac531..dbbf246 100644
--- a/third_party/blink/renderer/core/timing/memory_info.idl
+++ b/third_party/blink/renderer/core/timing/memory_info.idl
@@ -37,6 +37,4 @@
     [Measure] readonly attribute unsigned long long totalJSHeapSize;
     [Measure] readonly attribute unsigned long long usedJSHeapSize;
     [Measure] readonly attribute unsigned long long jsHeapSizeLimit;
-    [RuntimeEnabled=LegacyPerformanceMemoryCounters] readonly attribute unsigned long long usedJSHeapSizeWithoutExternalMemory;
-    [RuntimeEnabled=LegacyPerformanceMemoryCounters] readonly attribute unsigned long long totalJSHeapSizeWithoutExternalMemory;
 };
diff --git a/third_party/blink/renderer/core/timing/performance_mark.cc b/third_party/blink/renderer/core/timing/performance_mark.cc
index a1733a8..1464e99 100644
--- a/third_party/blink/renderer/core/timing/performance_mark.cc
+++ b/third_party/blink/renderer/core/timing/performance_mark.cc
@@ -5,7 +5,6 @@
 
 #include "third_party/blink/renderer/bindings/core/v8/script_value.h"
 #include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h"
-#include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value_factory.h"
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
 #include "third_party/blink/renderer/core/performance_entry_names.h"
 #include "third_party/blink/renderer/core/timing/dom_window_performance.h"
@@ -15,16 +14,34 @@
 
 namespace blink {
 
-PerformanceMark::PerformanceMark(ScriptState* script_state,
-                                 const AtomicString& name,
-                                 double start_time,
-                                 const ScriptValue& detail)
-    : PerformanceEntry(name, start_time, start_time) {
-  world_ = WrapRefCounted(&script_state->World());
-  if (detail.IsEmpty() || detail.IsNull() || detail.IsUndefined()) {
-    return;
+PerformanceMark::PerformanceMark(
+    ScriptState* script_state,
+    const AtomicString& name,
+    double start_time,
+    scoped_refptr<SerializedScriptValue> serialized_detail,
+    ExceptionState& exception_state)
+    : PerformanceEntry(name, start_time, start_time),
+      serialized_detail_(std::move(serialized_detail)) {}
+
+// static
+PerformanceMark* PerformanceMark::Create(ScriptState* script_state,
+                                         const AtomicString& name,
+                                         double start_time,
+                                         const ScriptValue& detail,
+                                         ExceptionState& exception_state) {
+  scoped_refptr<SerializedScriptValue> serialized_detail;
+  if (detail.IsEmpty()) {
+    serialized_detail = SerializedScriptValue::NullValue();
+  } else {
+    serialized_detail = SerializedScriptValue::Serialize(
+        script_state->GetIsolate(), detail.V8Value(),
+        SerializedScriptValue::SerializeOptions(), exception_state);
+    if (exception_state.HadException())
+      return nullptr;
   }
-  detail_.Set(detail.GetIsolate(), detail.V8Value());
+  return MakeGarbageCollected<PerformanceMark>(script_state, name, start_time,
+                                               std::move(serialized_detail),
+                                               exception_state);
 }
 
 // static
@@ -51,23 +68,23 @@
   return PerformanceEntry::EntryType::kMark;
 }
 
-ScriptValue PerformanceMark::detail(ScriptState* script_state) const {
+ScriptValue PerformanceMark::detail(ScriptState* script_state) {
   v8::Isolate* isolate = script_state->GetIsolate();
-  if (detail_.IsEmpty()) {
+  if (!serialized_detail_)
     return ScriptValue(script_state, v8::Null(isolate));
-  }
-  // Return a serialized clone when the world is different.
-  if (!world_ || world_->GetWorldId() != script_state->World().GetWorldId()) {
-    v8::Local<v8::Value> value = detail_.NewLocal(isolate);
-    scoped_refptr<SerializedScriptValue> serialized =
-        SerializedScriptValue::SerializeAndSwallowExceptions(isolate, value);
-    return ScriptValue(script_state, serialized->Deserialize(isolate));
-  }
-  return ScriptValue(script_state, detail_.NewLocal(isolate));
+  auto result = deserialized_detail_map_.insert(
+      script_state, TraceWrapperV8Reference<v8::Value>());
+  TraceWrapperV8Reference<v8::Value>& relevant_data =
+      result.stored_value->value;
+  if (!result.is_new_entry)
+    return ScriptValue(script_state, relevant_data.NewLocal(isolate));
+  v8::Local<v8::Value> value = serialized_detail_->Deserialize(isolate);
+  relevant_data.Set(isolate, value);
+  return ScriptValue(script_state, value);
 }
 
 void PerformanceMark::Trace(blink::Visitor* visitor) {
-  visitor->Trace(detail_);
+  visitor->Trace(deserialized_detail_map_);
   PerformanceEntry::Trace(visitor);
 }
 
diff --git a/third_party/blink/renderer/core/timing/performance_mark.h b/third_party/blink/renderer/core/timing/performance_mark.h
index da82967..397d523 100644
--- a/third_party/blink/renderer/core/timing/performance_mark.h
+++ b/third_party/blink/renderer/core/timing/performance_mark.h
@@ -26,9 +26,11 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_TIMING_PERFORMANCE_MARK_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_TIMING_PERFORMANCE_MARK_H_
 
+#include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h"
 #include "third_party/blink/renderer/core/timing/performance_entry.h"
-#include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h"
 #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h"
+#include "third_party/blink/renderer/platform/heap/heap_allocator.h"
+#include "third_party/blink/renderer/platform/heap/member.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
 namespace blink {
@@ -43,10 +45,8 @@
   static PerformanceMark* Create(ScriptState* script_state,
                                  const AtomicString& name,
                                  double start_time,
-                                 const ScriptValue& detail) {
-    return MakeGarbageCollected<PerformanceMark>(script_state, name, start_time,
-                                                 detail);
-  }
+                                 const ScriptValue& detail,
+                                 ExceptionState& exception_state);
 
   // This method is required by the constructor defined in performance_mark.idl.
   static PerformanceMark* Create(ScriptState*,
@@ -57,20 +57,24 @@
   PerformanceMark(ScriptState*,
                   const AtomicString& name,
                   double start_time,
-                  const ScriptValue& detail);
+                  scoped_refptr<SerializedScriptValue>,
+                  ExceptionState& exception_state);
 
   AtomicString entryType() const override;
   PerformanceEntryType EntryTypeEnum() const override;
 
-  ScriptValue detail(ScriptState*) const;
+  ScriptValue detail(ScriptState*);
 
   void Trace(blink::Visitor*) override;
 
  private:
   ~PerformanceMark() override = default;
 
-  scoped_refptr<DOMWrapperWorld> world_;
-  TraceWrapperV8Reference<v8::Value> detail_;
+  scoped_refptr<SerializedScriptValue> serialized_detail_;
+  // In order to prevent cross-world reference leak, we create a copy of the
+  // detail for each world.
+  HeapHashMap<WeakMember<ScriptState>, TraceWrapperV8Reference<v8::Value>>
+      deserialized_detail_map_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance_measure.cc b/third_party/blink/renderer/core/timing/performance_measure.cc
index 0a6c3db..e3880e4c 100644
--- a/third_party/blink/renderer/core/timing/performance_measure.cc
+++ b/third_party/blink/renderer/core/timing/performance_measure.cc
@@ -7,27 +7,56 @@
 #include "third_party/blink/renderer/bindings/core/v8/script_value.h"
 #include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h"
 #include "third_party/blink/renderer/core/performance_entry_names.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
 
 namespace blink {
 
-PerformanceMeasure::PerformanceMeasure(ScriptState* script_state,
-                                       const AtomicString& name,
-                                       double start_time,
-                                       double end_time,
-                                       const ScriptValue& detail)
-    : PerformanceEntry(name, start_time, end_time) {
+PerformanceMeasure::PerformanceMeasure(
+    ScriptState* script_state,
+    const AtomicString& name,
+    double start_time,
+    double end_time,
+    scoped_refptr<SerializedScriptValue> serialized_detail,
+    ExceptionState& exception_state)
+    : PerformanceEntry(name, start_time, end_time),
+      serialized_detail_(serialized_detail) {}
+
+// static
+PerformanceMeasure* PerformanceMeasure::Create(
+    ScriptState* script_state,
+    const AtomicString& name,
+    double start_time,
+    double end_time,
+    const ScriptValue& detail,
+    ExceptionState& exception_state) {
+  scoped_refptr<SerializedScriptValue> serialized_detail;
   if (detail.IsEmpty()) {
-    detail_ = SerializedScriptValue::NullValue();
+    serialized_detail = nullptr;
   } else {
-    detail_ = SerializedScriptValue::SerializeAndSwallowExceptions(
-        script_state->GetIsolate(), detail.V8Value());
+    serialized_detail = SerializedScriptValue::Serialize(
+        script_state->GetIsolate(), detail.V8Value(),
+        SerializedScriptValue::SerializeOptions(), exception_state);
+    if (exception_state.HadException())
+      return nullptr;
   }
+  return MakeGarbageCollected<PerformanceMeasure>(
+      script_state, name, start_time, end_time, serialized_detail,
+      exception_state);
 }
 
-ScriptValue PerformanceMeasure::detail(ScriptState* script_state) const {
+ScriptValue PerformanceMeasure::detail(ScriptState* script_state) {
   v8::Isolate* isolate = script_state->GetIsolate();
-  v8::Local<v8::Value> detail = detail_->Deserialize(isolate);
-  return ScriptValue(script_state, detail);
+  if (!serialized_detail_)
+    return ScriptValue(script_state, v8::Null(isolate));
+  auto result = deserialized_detail_map_.insert(
+      script_state, TraceWrapperV8Reference<v8::Value>());
+  TraceWrapperV8Reference<v8::Value>& relevant_data =
+      result.stored_value->value;
+  if (!result.is_new_entry)
+    return ScriptValue(script_state, relevant_data.NewLocal(isolate));
+  v8::Local<v8::Value> value = serialized_detail_->Deserialize(isolate);
+  relevant_data.Set(isolate, value);
+  return ScriptValue(script_state, value);
 }
 
 AtomicString PerformanceMeasure::entryType() const {
@@ -38,4 +67,9 @@
   return PerformanceEntry::EntryType::kMeasure;
 }
 
+void PerformanceMeasure::Trace(blink::Visitor* visitor) {
+  visitor->Trace(deserialized_detail_map_);
+  PerformanceEntry::Trace(visitor);
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance_measure.h b/third_party/blink/renderer/core/timing/performance_measure.h
index bb15e1f1..4ac3ab0 100644
--- a/third_party/blink/renderer/core/timing/performance_measure.h
+++ b/third_party/blink/renderer/core/timing/performance_measure.h
@@ -27,12 +27,16 @@
 #define THIRD_PARTY_BLINK_RENDERER_CORE_TIMING_PERFORMANCE_MEASURE_H_
 
 #include "base/memory/scoped_refptr.h"
+#include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h"
 #include "third_party/blink/renderer/core/timing/performance_entry.h"
+#include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h"
+#include "third_party/blink/renderer/platform/heap/heap_allocator.h"
+#include "third_party/blink/renderer/platform/heap/member.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
 namespace blink {
 
-class SerializedScriptValue;
+class ExceptionState;
 
 class PerformanceMeasure final : public PerformanceEntry {
   DEFINE_WRAPPERTYPEINFO();
@@ -42,20 +46,30 @@
                      const AtomicString& name,
                      double start_time,
                      double end_time,
-                     const ScriptValue& detail);
+                     scoped_refptr<SerializedScriptValue>,
+                     ExceptionState&);
 
-  ScriptValue detail(ScriptState*) const;
+  static PerformanceMeasure* Create(ScriptState*,
+                                    const AtomicString& name,
+                                    double start_time,
+                                    double end_time,
+                                    const ScriptValue& detail,
+                                    ExceptionState&);
+
+  ScriptValue detail(ScriptState*);
 
   AtomicString entryType() const override;
   PerformanceEntryType EntryTypeEnum() const override;
 
-  void Trace(blink::Visitor* visitor) override {
-    PerformanceEntry::Trace(visitor);
-  }
+  void Trace(blink::Visitor* visitor) override;
 
  private:
   ~PerformanceMeasure() override = default;
-  scoped_refptr<SerializedScriptValue> detail_;
+  scoped_refptr<SerializedScriptValue> serialized_detail_;
+  // In order to prevent cross-world reference leak, we create a copy of the
+  // detail for each world.
+  HeapHashMap<WeakMember<ScriptState>, TraceWrapperV8Reference<v8::Value>>
+      deserialized_detail_map_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance_observer_test.cc b/third_party/blink/renderer/core/timing/performance_observer_test.cc
index 78c50da..58f5d1c 100644
--- a/third_party/blink/renderer/core/timing/performance_observer_test.cc
+++ b/third_party/blink/renderer/core/timing/performance_observer_test.cc
@@ -86,11 +86,12 @@
 
 TEST_F(PerformanceObserverTest, Enqueue) {
   V8TestingScope scope;
+  NonThrowableExceptionState exception_state;
   Initialize(scope.GetScriptState());
 
   ScriptValue empty_value;
-  Persistent<PerformanceEntry> entry =
-      PerformanceMark::Create(scope.GetScriptState(), "m", 1234, empty_value);
+  Persistent<PerformanceEntry> entry = PerformanceMark::Create(
+      scope.GetScriptState(), "m", 1234, empty_value, exception_state);
   EXPECT_EQ(0, NumPerformanceEntries());
 
   observer_->EnqueuePerformanceEntry(*entry);
@@ -99,11 +100,12 @@
 
 TEST_F(PerformanceObserverTest, Deliver) {
   V8TestingScope scope;
+  NonThrowableExceptionState exception_state;
   Initialize(scope.GetScriptState());
 
   ScriptValue empty_value;
-  Persistent<PerformanceEntry> entry =
-      PerformanceMark::Create(scope.GetScriptState(), "m", 1234, empty_value);
+  Persistent<PerformanceEntry> entry = PerformanceMark::Create(
+      scope.GetScriptState(), "m", 1234, empty_value, exception_state);
   EXPECT_EQ(0, NumPerformanceEntries());
 
   observer_->EnqueuePerformanceEntry(*entry);
@@ -115,11 +117,12 @@
 
 TEST_F(PerformanceObserverTest, Disconnect) {
   V8TestingScope scope;
+  NonThrowableExceptionState exception_state;
   Initialize(scope.GetScriptState());
 
   ScriptValue empty_value;
-  Persistent<PerformanceEntry> entry =
-      PerformanceMark::Create(scope.GetScriptState(), "m", 1234, empty_value);
+  Persistent<PerformanceEntry> entry = PerformanceMark::Create(
+      scope.GetScriptState(), "m", 1234, empty_value, exception_state);
   EXPECT_EQ(0, NumPerformanceEntries());
 
   observer_->EnqueuePerformanceEntry(*entry);
@@ -129,4 +132,4 @@
   EXPECT_FALSE(IsRegistered());
   EXPECT_EQ(0, NumPerformanceEntries());
 }
-}
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance_user_timing.cc b/third_party/blink/renderer/core/timing/performance_user_timing.cc
index 3f76f57..1866557 100644
--- a/third_party/blink/renderer/core/timing/performance_user_timing.cc
+++ b/third_party/blink/renderer/core/timing/performance_user_timing.cc
@@ -130,7 +130,8 @@
     return nullptr;
   }
 
-  return PerformanceMark::Create(script_state, mark_name, start, detail);
+  return PerformanceMark::Create(script_state, mark_name, start, detail,
+                                 exception_state);
 }
 
 void UserTiming::AddMarkToPerformanceTimeline(PerformanceMark& mark) {
@@ -234,8 +235,11 @@
       "blink.user_timing", measure_name.Utf8().c_str(), hash,
       trace_event::ToTraceTimestamp(end_time_monotonic));
 
-  auto* measure = MakeGarbageCollected<PerformanceMeasure>(
-      script_state, measure_name, start_time, end_time, detail);
+  PerformanceMeasure* measure =
+      PerformanceMeasure::Create(script_state, measure_name, start_time,
+                                 end_time, detail, exception_state);
+  if (!measure)
+    return nullptr;
   InsertPerformanceEntry(measures_map_, *measure);
   if (end_time >= start_time) {
     DEFINE_THREAD_SAFE_STATIC_LOCAL(
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third_party/blink/renderer/core/workers/dedicated_worker.cc
index 45f084de..c7502b5 100644
--- a/third_party/blink/renderer/core/workers/dedicated_worker.cc
+++ b/third_party/blink/renderer/core/workers/dedicated_worker.cc
@@ -161,9 +161,12 @@
           context->Fetcher()->GetProperties().GetFetchClientSettingsObject());
 }
 
-DedicatedWorker::~DedicatedWorker() {
+DedicatedWorker::~DedicatedWorker() = default;
+
+void DedicatedWorker::Dispose() {
   DCHECK(!GetExecutionContext() || GetExecutionContext()->IsContextThread());
   context_proxy_->ParentObjectDestroyed();
+  factory_client_.reset();
 }
 
 void DedicatedWorker::postMessage(ScriptState* script_state,
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.h b/third_party/blink/renderer/core/workers/dedicated_worker.h
index 1a9de84..ec220869f 100644
--- a/third_party/blink/renderer/core/workers/dedicated_worker.h
+++ b/third_party/blink/renderer/core/workers/dedicated_worker.h
@@ -70,9 +70,9 @@
       public WebDedicatedWorker {
   DEFINE_WRAPPERTYPEINFO();
   USING_GARBAGE_COLLECTED_MIXIN(DedicatedWorker);
-  // Eager finalization is needed to notify the parent object destruction of the
+  // Pre-finalization is needed to notify the parent object destruction of the
   // GC-managed messaging proxy and to initiate worker termination.
-  EAGERLY_FINALIZE();
+  USING_PRE_FINALIZER(DedicatedWorker, Dispose);
 
  public:
   static DedicatedWorker* Create(ExecutionContext*,
@@ -85,6 +85,8 @@
                   const WorkerOptions*);
   ~DedicatedWorker() override;
 
+  void Dispose();
+
   void postMessage(ScriptState*,
                    const ScriptValue& message,
                    Vector<ScriptValue>& transfer,
diff --git a/third_party/blink/renderer/core/xml/xpath_node_set.cc b/third_party/blink/renderer/core/xml/xpath_node_set.cc
index dfe3a48..3b945f1e 100644
--- a/third_party/blink/renderer/core/xml/xpath_node_set.cc
+++ b/third_party/blink/renderer/core/xml/xpath_node_set.cc
@@ -232,10 +232,10 @@
     if (nodes.Contains(&n))
       sorted_nodes.push_back(&n);
 
-    if (!contains_attribute_nodes || !n.IsElementNode())
+    auto* element = DynamicTo<Element>(&n);
+    if (!element || !contains_attribute_nodes)
       continue;
 
-    Element* element = ToElement(&n);
     AttributeCollection attributes = element->Attributes();
     for (auto& attribute : attributes) {
       Attr* attr = element->AttrIfExists(attribute.GetName());
diff --git a/third_party/blink/renderer/core/xml/xpath_step.cc b/third_party/blink/renderer/core/xml/xpath_step.cc
index d2c13d2..9cd60e7 100644
--- a/third_party/blink/renderer/core/xml/xpath_step.cc
+++ b/third_party/blink/renderer/core/xml/xpath_step.cc
@@ -204,31 +204,32 @@
 #if DCHECK_IS_ON()
       DCHECK_EQ(Node::kElementNode, PrimaryNodeType(axis));
 #endif
-      if (!node->IsElementNode())
+      auto* element = DynamicTo<Element>(node);
+      if (!element)
         return false;
-      Element& element = ToElement(*node);
 
-      if (name == g_star_atom)
+      if (name == g_star_atom) {
         return namespace_uri.IsEmpty() ||
-               namespace_uri == element.namespaceURI();
+               namespace_uri == element->namespaceURI();
+      }
 
-      if (element.GetDocument().IsHTMLDocument()) {
-        if (element.IsHTMLElement()) {
+      if (element->GetDocument().IsHTMLDocument()) {
+        if (element->IsHTMLElement()) {
           // Paths without namespaces should match HTML elements in HTML
           // documents despite those having an XHTML namespace. Names are
           // compared case-insensitively.
-          return EqualIgnoringASCIICase(element.localName(), name) &&
+          return EqualIgnoringASCIICase(element->localName(), name) &&
                  (namespace_uri.IsNull() ||
-                  namespace_uri == element.namespaceURI());
+                  namespace_uri == element->namespaceURI());
         }
         // An expression without any prefix shouldn't match no-namespace
         // nodes (because HTML5 says so).
-        return element.HasLocalName(name) &&
-               namespace_uri == element.namespaceURI() &&
+        return element->HasLocalName(name) &&
+               namespace_uri == element->namespaceURI() &&
                !namespace_uri.IsNull();
       }
-      return element.HasLocalName(name) &&
-             namespace_uri == element.namespaceURI();
+      return element->HasLocalName(name) &&
+             namespace_uri == element->namespaceURI();
     }
   }
   NOTREACHED();
diff --git a/third_party/blink/renderer/devtools/PRESUBMIT.py b/third_party/blink/renderer/devtools/PRESUBMIT.py
index 0749c1a..6b1f9d3d 100644
--- a/third_party/blink/renderer/devtools/PRESUBMIT.py
+++ b/third_party/blink/renderer/devtools/PRESUBMIT.py
@@ -95,23 +95,15 @@
     ]
 
 
-def _CheckDevtoolsWithNodeScript(input_api, output_api, script_path, script_arguments=None):  # pylint: disable=invalid-name
-    affected_front_end_files = _getAffectedFrontEndFiles(input_api)
-    if len(affected_front_end_files) == 0:
-        return []
-    else:
-        if script_arguments is None:
-            script_arguments = []
-        return _checkWithNodeScript(input_api, output_api, script_path, script_arguments)
-
-
 def _CheckDevtoolsLocalizableResources(input_api, output_api):  # pylint: disable=invalid-name
-    affected_front_end_files = _getAffectedFrontEndFiles(input_api)
+    devtools_root = input_api.PresubmitLocalPath()
+    devtools_front_end = input_api.os_path.join(devtools_root, "front_end")
+    affected_front_end_files = _getAffectedFiles(input_api, [devtools_front_end], [], [".js", "module.json", ".grd", ".grdp"])
     if len(affected_front_end_files) == 0:
         return []
     script_path = input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts", "check_localizable_resources.js")
     args = ['--autofix']
-    return _CheckDevtoolsWithNodeScript(input_api, output_api, script_path, args)
+    return _checkWithNodeScript(input_api, output_api, script_path, args)
 
 
 def _CheckDevtoolsLocalization(input_api, output_api):  # pylint: disable=invalid-name
@@ -207,25 +199,33 @@
     return []
 
 
+def _getAffectedFiles(input_api, parent_directories, excluded_actions, accepted_endings):  # pylint: disable=invalid-name
+    '''Return absolute file paths of affected files (not due to an excluded action)
+       under a parent directory with an accepted file ending.
+    '''
+    local_paths = [
+        f.AbsoluteLocalPath() for f in input_api.AffectedFiles() if all(f.Action() != action for action in excluded_actions)
+    ]
+    affected_files = [
+        file_name for file_name in local_paths
+        if any(parent_directory in file_name for parent_directory in parent_directories) and any(
+            file_name.endswith(accepted_ending) for accepted_ending in accepted_endings)
+    ]
+    return affected_files
+
+
 def _getAffectedFrontEndFiles(input_api):
-    local_paths = [f.AbsoluteLocalPath() for f in input_api.AffectedFiles() if f.Action() != "D"]
     devtools_root = input_api.PresubmitLocalPath()
     devtools_front_end = input_api.os_path.join(devtools_root, "front_end")
-    affected_front_end_files = [
-        file_name for file_name in local_paths if devtools_front_end in file_name and file_name.endswith(".js")
-    ]
+    affected_front_end_files = _getAffectedFiles(input_api, [devtools_front_end], ["D"], [".js"])
     return [input_api.os_path.relpath(file_name, devtools_root) for file_name in affected_front_end_files]
 
 
 def _getAffectedJSFiles(input_api):
-    local_paths = [f.AbsoluteLocalPath() for f in input_api.AffectedFiles() if f.Action() != "D"]
     devtools_root = input_api.PresubmitLocalPath()
     devtools_front_end = input_api.os_path.join(devtools_root, "front_end")
     devtools_scripts = input_api.os_path.join(devtools_root, "scripts")
-    affected_js_files = [
-        file_name for file_name in local_paths
-        if (devtools_front_end in file_name or devtools_scripts in file_name) and file_name.endswith(".js")
-    ]
+    affected_js_files = _getAffectedFiles(input_api, [devtools_front_end, devtools_scripts], ["D"], [".js"])
     return [input_api.os_path.relpath(file_name, devtools_root) for file_name in affected_js_files]
 
 
diff --git a/third_party/blink/renderer/devtools/front_end/network/signedExchangeInfoTree.css b/third_party/blink/renderer/devtools/front_end/network/signedExchangeInfoTree.css
index 9d4ea3a..1eee505f 100644
--- a/third_party/blink/renderer/devtools/front_end/network/signedExchangeInfoTree.css
+++ b/third_party/blink/renderer/devtools/front_end/network/signedExchangeInfoTree.css
@@ -25,12 +25,12 @@
 }
 
 .tree-outline li {
-    display: block;
     padding-left: 5px;
     line-height: 20px;
 }
 
 .tree-outline li:not(.parent) {
+    display: block;
     margin-left: 10px;
 }
 
diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn
index 6737a5e..89569d2 100644
--- a/third_party/blink/renderer/modules/BUILD.gn
+++ b/third_party/blink/renderer/modules/BUILD.gn
@@ -341,6 +341,8 @@
     "mediastream/media_stream_constraints_util_video_device_test.cc",
     "mediastream/media_stream_video_capturer_source_test.cc",
     "mediastream/media_stream_video_renderer_sink_test.cc",
+    "mediastream/media_stream_video_source_test.cc",
+    "mediastream/media_stream_video_track_test.cc",
     "mediastream/mock_mojo_media_stream_dispatcher_host.cc",
     "mediastream/mock_mojo_media_stream_dispatcher_host.h",
     "mediastream/video_track_adapter_unittest.cc",
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
index 79276d3..d3ca692 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
@@ -2169,7 +2169,7 @@
     if (IsHTMLAnchorElement(runner) ||
         (runner.GetLayoutObject() &&
          cache.GetOrCreate(runner.GetLayoutObject())->IsAnchor()))
-      return ToElement(&runner);
+      return To<Element>(&runner);
   }
 
   return nullptr;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc
index c8cc077..4482889 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -1179,28 +1179,14 @@
   if (!GetNode())
     return false;
 
-  // If the node is part of the user agent shadow dom, or has the explicit
-  // internal Role::kIgnored, they aren't interesting for paragraph navigation
-  // or LabelledBy/DescribedBy relationships.
-  if (RoleValue() == ax::mojom::Role::kIgnored ||
-      GetNode()->IsInUserAgentShadowRoot()) {
-    return false;
-  }
-
   // Always pass through Line Breaking objects, this is necessary to
   // detect paragraph edges, which are defined as hard-line breaks.
-  if (IsLineBreakingObject())
-    return true;
-
-  // Allow the browser side ax tree to access "visibility: hidden" nodes. This
-  // is useful for APIs that return the node referenced by aria-labeledby and
-  // aria-descibedby
-  if (GetLayoutObject() &&
-      GetLayoutObject()->Style()->Visibility() == EVisibility::kHidden) {
-    return true;
-  }
-
-  return false;
+  //
+  // Though if the node is part of the shadow dom, or has the explicit
+  // internal Role::kIgnored, they aren't interesting for paragraph
+  // navigation so exclude those cases.
+  return RoleValue() != ax::mojom::Role::kIgnored &&
+         !GetNode()->IsInUserAgentShadowRoot() && IsLineBreakingObject();
 }
 
 const AXObject* AXObject::DatetimeAncestor(int max_levels_to_check) const {
@@ -1506,15 +1492,8 @@
                          AXObject::AXObjectVector* name_objects) const {
   HeapHashSet<Member<const AXObject>> visited;
   AXRelatedObjectVector related_objects;
-  // For purposes of computing a text alternative, if an ignored node is
-  // included in the tree, assume that it is the target of aria-labelledby or
-  // aria-describedby, since we can't tell yet whether that's the case. If it
-  // isn't exposed, the AT will never see the name anyways.
-  bool hidden_and_ignored_but_included_in_tree =
-      IsHiddenForTextAlternativeCalculation() && AccessibilityIsIgnored() &&
-      AccessibilityIsIncludedInTree();
-  String text = TextAlternative(false, hidden_and_ignored_but_included_in_tree,
-                                visited, name_from, &related_objects, nullptr);
+  String text = TextAlternative(false, false, visited, name_from,
+                                &related_objects, nullptr);
 
   ax::mojom::Role role = RoleValue();
   if (!GetNode() ||
@@ -1535,16 +1514,8 @@
   AXObjectSet visited;
   ax::mojom::NameFrom tmp_name_from;
   AXRelatedObjectVector tmp_related_objects;
-  // For purposes of computing a text alternative, if an ignored node is
-  // included in the tree, assume that it is the target of aria-labelledby or
-  // aria-describedby, since we can't tell yet whether that's the case. If it
-  // isn't exposed, the AT will never see the name anyways.
-  bool hidden_and_ignored_but_included_in_tree =
-      IsHiddenForTextAlternativeCalculation() && AccessibilityIsIgnored() &&
-      AccessibilityIsIncludedInTree();
-  String text =
-      TextAlternative(false, hidden_and_ignored_but_included_in_tree, visited,
-                      tmp_name_from, &tmp_related_objects, name_sources);
+  String text = TextAlternative(false, false, visited, tmp_name_from,
+                                &tmp_related_objects, name_sources);
   text = text.SimplifyWhiteSpace(IsHTMLSpace<UChar>);
   return text;
 }
diff --git a/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.cc b/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.cc
index 9d1a1bb..4bad2ce 100644
--- a/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.cc
+++ b/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.cc
@@ -108,7 +108,15 @@
     event = MessageEvent::CreateError(
         GetExecutionContext()->GetSecurityOrigin()->ToString());
   }
-  EnqueueEvent(*event, TaskType::kPostedMessage);
+  // <specdef
+  // href="https://html.spec.whatwg.org/multipage/web-messaging.html#dom-broadcastchannel-postmessage">
+  // <spec>The tasks must use the DOM manipulation task source, and, for
+  // those where the event loop specified by the target BroadcastChannel
+  // object's BroadcastChannel settings object is a window event loop,
+  // must be associated with the responsible document specified by that
+  // target BroadcastChannel object's BroadcastChannel settings object.
+  // </spec>
+  EnqueueEvent(*event, TaskType::kDOMManipulation);
 }
 
 void BroadcastChannel::OnError() {
@@ -131,6 +139,13 @@
   // Local BroadcastChannelClient for messages send from the browser to this
   // channel.
   mojom::blink::BroadcastChannelClientAssociatedPtrInfo local_client_info;
+  // Note: We cannot associate per-frame task runner here, but postTask
+  //       to it manually via EnqueueEvent, since the current expectation
+  //       is to receive messages even after close for which queued before
+  //       close.
+  //       https://github.com/whatwg/html/issues/1319
+  //       Relying on Mojo binding will cancel the enqueued messages
+  //       at close().
   binding_.Bind(mojo::MakeRequest(&local_client_info));
   binding_.set_connection_error_handler(
       WTF::Bind(&BroadcastChannel::OnError, WrapWeakPersistent(this)));
diff --git a/third_party/blink/renderer/modules/cache_storage/global_cache_storage.cc b/third_party/blink/renderer/modules/cache_storage/global_cache_storage.cc
index c1b61fe..fd9d7a9 100644
--- a/third_party/blink/renderer/modules/cache_storage/global_cache_storage.cc
+++ b/third_party/blink/renderer/modules/cache_storage/global_cache_storage.cc
@@ -74,8 +74,6 @@
     return caches_;
   }
 
-  // Promptly dispose of associated CacheStorage.
-  EAGERLY_FINALIZE();
   void Trace(blink::Visitor* visitor) override {
     visitor->Trace(caches_);
     Supplement<T>::Trace(visitor);
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h
index 2ef24077..c82ba86 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h
@@ -227,7 +227,6 @@
 
   virtual cc::PaintCanvas* DrawingCanvas() const = 0;
   virtual cc::PaintCanvas* ExistingDrawingCanvas() const = 0;
-  virtual void DisableDeferral(DisableDeferralReason) = 0;
 
   virtual void DidDraw(const SkIRect& dirty_rect) = 0;
 
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
index 64ae5d5..4c3625dd 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
@@ -447,10 +447,6 @@
   return nullptr;
 }
 
-void CanvasRenderingContext2D::DisableDeferral(DisableDeferralReason reason) {
-  canvas()->DisableDeferral(reason);
-}
-
 String CanvasRenderingContext2D::font() const {
   if (!GetState().HasRealizedFont())
     return kDefaultFont;
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
index 3760d69..6a4c206 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
@@ -179,7 +179,6 @@
 
   cc::PaintCanvas* DrawingCanvas() const final;
   cc::PaintCanvas* ExistingDrawingCanvas() const final;
-  void DisableDeferral(DisableDeferralReason) final;
 
   void DidDraw(const SkIRect& dirty_rect) final;
   scoped_refptr<StaticBitmapImage> GetImage(AccelerationHint) const final;
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc
index 4bf926ee..ccd1ced 100644
--- a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.cc
@@ -220,9 +220,6 @@
   return GetCanvasResourceProvider()->Canvas();
 }
 
-void OffscreenCanvasRenderingContext2D::DisableDeferral(DisableDeferralReason) {
-}
-
 void OffscreenCanvasRenderingContext2D::DidDraw() {
   Host()->DidDraw();
   dirty_rect_for_commit_.set(0, 0, Width(), Height());
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h
index 1815f0c..755f078 100644
--- a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h
+++ b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h
@@ -99,7 +99,6 @@
 
   cc::PaintCanvas* DrawingCanvas() const final;
   cc::PaintCanvas* ExistingDrawingCanvas() const final;
-  void DisableDeferral(DisableDeferralReason) final;
 
   void DidDraw() final;
   void DidDraw(const SkIRect& dirty_rect) final;
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.cc b/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.cc
index b379877..7b4c9e0 100644
--- a/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.cc
+++ b/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.cc
@@ -16,8 +16,9 @@
 CredentialManagerProxy::CredentialManagerProxy(Document& document) {
   LocalFrame* frame = document.GetFrame();
   DCHECK(frame);
-  frame->GetDocumentInterfaceBroker().GetCredentialManager(mojo::MakeRequest(
-      &credential_manager_, frame->GetTaskRunner(TaskType::kUserInteraction)));
+  frame->GetDocumentInterfaceBroker().GetCredentialManager(
+      credential_manager_.BindNewPipeAndPassReceiver(
+          frame->GetTaskRunner(TaskType::kUserInteraction)));
   frame->GetDocumentInterfaceBroker().GetAuthenticator(mojo::MakeRequest(
       &authenticator_, frame->GetTaskRunner(TaskType::kUserInteraction)));
 }
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h b/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h
index 0228425..9ce230c3 100644
--- a/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h
+++ b/third_party/blink/renderer/modules/credentialmanager/credential_manager_proxy.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_CREDENTIALMANAGER_CREDENTIAL_MANAGER_PROXY_H_
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_CREDENTIALMANAGER_CREDENTIAL_MANAGER_PROXY_H_
 
+#include "mojo/public/cpp/bindings/remote.h"
 #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom-blink.h"
 #include "third_party/blink/public/mojom/webauthn/authenticator.mojom-blink.h"
 #include "third_party/blink/renderer/core/dom/document.h"
@@ -55,7 +56,7 @@
 
  private:
   mojom::blink::AuthenticatorPtr authenticator_;
-  mojom::blink::CredentialManagerPtr credential_manager_;
+  mojo::Remote<mojom::blink::CredentialManager> credential_manager_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/credentialmanager/credentials_container_test.cc b/third_party/blink/renderer/modules/credentialmanager/credentials_container_test.cc
index 416bb9f..0c5ca26 100644
--- a/third_party/blink/renderer/modules/credentialmanager/credentials_container_test.cc
+++ b/third_party/blink/renderer/modules/credentialmanager/credentials_container_test.cc
@@ -8,7 +8,8 @@
 #include <utility>
 
 #include "base/macros.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom-blink.h"
@@ -43,18 +44,19 @@
 
 class MockCredentialManager : public mojom::blink::CredentialManager {
  public:
-  MockCredentialManager() : binding_(this) {}
+  MockCredentialManager() {}
   ~MockCredentialManager() override {}
 
-  void Bind(::blink::mojom::blink::CredentialManagerRequest request) {
-    binding_.Bind(std::move(request));
+  void Bind(mojo::PendingReceiver<::blink::mojom::blink::CredentialManager>
+                receiver) {
+    receiver_.Bind(std::move(receiver));
   }
 
   void WaitForConnectionError() {
-    if (!binding_.is_bound())
+    if (!receiver_.is_bound())
       return;
 
-    binding_.set_connection_error_handler(WTF::Bind(&test::ExitRunLoop));
+    receiver_.set_disconnect_handler(WTF::Bind(&test::ExitRunLoop));
     test::EnterRunLoop();
   }
 
@@ -66,7 +68,7 @@
   }
 
   void InvokeGetCallback() {
-    EXPECT_TRUE(binding_.is_bound());
+    EXPECT_TRUE(receiver_.is_bound());
 
     auto info = blink::mojom::blink::CredentialInfo::New();
     info->type = blink::mojom::blink::CredentialType::EMPTY;
@@ -89,7 +91,7 @@
   }
 
  private:
-  mojo::Binding<::blink::mojom::blink::CredentialManager> binding_;
+  mojo::Receiver<::blink::mojom::blink::CredentialManager> receiver_{this};
 
   GetCallback get_callback_;
 
@@ -108,8 +110,9 @@
         mock_credential_manager_(mock_credential_manager) {}
 
   void GetCredentialManager(
-      mojom::blink::CredentialManagerRequest request) override {
-    mock_credential_manager_->Bind(std::move(request));
+      mojo::PendingReceiver<::blink::mojom::blink::CredentialManager> receiver)
+      override {
+    mock_credential_manager_->Bind(std::move(receiver));
   }
 
   void GetAuthenticator(mojom::blink::AuthenticatorRequest request) override {}
diff --git a/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.h b/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.h
index ac51502..bfad30a 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.h
+++ b/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.h
@@ -56,7 +56,6 @@
 
   cc::PaintCanvas* DrawingCanvas() const final;
   cc::PaintCanvas* ExistingDrawingCanvas() const final;
-  void DisableDeferral(DisableDeferralReason) final {}
 
   void DidDraw(const SkIRect&) final;
 
diff --git a/third_party/blink/renderer/modules/exported/web_ax_object.cc b/third_party/blink/renderer/modules/exported/web_ax_object.cc
index b03a08e..0d5844e 100644
--- a/third_party/blink/renderer/modules/exported/web_ax_object.cc
+++ b/third_party/blink/renderer/modules/exported/web_ax_object.cc
@@ -699,6 +699,11 @@
   return WebAXObject();
 }
 
+WebRect WebAXObject::GetBoundsInFrameCoordinates() const {
+  LayoutRect rect = private_->GetBoundsInFrameCoordinates();
+  return WebRect(EnclosingIntRect(rect));
+}
+
 WebString WebAXObject::KeyboardShortcut() const {
   if (IsDetached())
     return WebString();
diff --git a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
index 9b20712d..c8219609 100644
--- a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
+++ b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
@@ -370,11 +370,20 @@
   // For now we don't use global scope name for service workers.
   const String global_scope_name = g_empty_string;
 
-  // FIXME: this document's origin is pristine and without any extra privileges.
-  // (crbug.com/254993)
-  const SecurityOrigin* starter_origin = document->GetSecurityOrigin();
-  bool starter_secure_context = document->IsSecureContext();
-  const HttpsState starter_https_state = document->GetHttpsState();
+  // TODO(crbug.com/967265,937177): Plumb these starter parameters from an
+  // appropriate Document. See comment in CreateFetchClientSettingsObject() for
+  // details.
+  scoped_refptr<const SecurityOrigin> starter_origin =
+      SecurityOrigin::Create(worker_start_data_.script_url);
+  // This roughly equals to shadow document's IsSecureContext() as a shadow
+  // document have a frame with no parent.
+  // See also Document::InitSecureContextState().
+  bool starter_secure_context =
+      starter_origin->IsPotentiallyTrustworthy() ||
+      SchemeRegistry::SchemeShouldBypassSecureContextCheck(
+          starter_origin->Protocol());
+  const HttpsState starter_https_state =
+      CalculateHttpsState(starter_origin.get());
 
   auto* worker_clients = MakeGarbageCollected<WorkerClients>();
   ProvideIndexedDBClientToWorker(
@@ -443,7 +452,7 @@
         worker_start_data_.user_agent, std::move(web_worker_fetch_context),
         content_security_policy ? content_security_policy->Headers()
                                 : Vector<CSPHeaderAndType>(),
-        referrer_policy, starter_origin, starter_secure_context,
+        referrer_policy, starter_origin.get(), starter_secure_context,
         starter_https_state, worker_clients,
         main_script_loader_->ResponseAddressSpace(),
         main_script_loader_->OriginTrialTokens(), devtools_worker_token_,
@@ -462,7 +471,7 @@
         off_main_thread_fetch_option, global_scope_name,
         worker_start_data_.user_agent, std::move(web_worker_fetch_context),
         Vector<CSPHeaderAndType>(), network::mojom::ReferrerPolicy::kDefault,
-        starter_origin, starter_secure_context, starter_https_state,
+        starter_origin.get(), starter_secure_context, starter_https_state,
         worker_clients, base::nullopt /* response_address_space */,
         nullptr /* OriginTrialTokens */, devtools_worker_token_,
         std::move(worker_settings),
@@ -501,7 +510,9 @@
         return;
       case mojom::ScriptType::kModule:
         worker_thread_->RunInstalledModuleScript(
-            worker_start_data_.script_url, *CreateFetchClientSettingsObject(),
+            worker_start_data_.script_url,
+            *CreateFetchClientSettingsObject(starter_origin.get(),
+                                             starter_https_state),
             network::mojom::CredentialsMode::kOmit);
         return;
     }
@@ -528,7 +539,8 @@
       MakeGarbageCollected<NullWorkerResourceTimingNotifier>();
 
   FetchClientSettingsObjectSnapshot* fetch_client_setting_object =
-      CreateFetchClientSettingsObject();
+      CreateFetchClientSettingsObject(starter_origin.get(),
+                                      starter_https_state);
 
   // If this is a new (not installed) service worker, we are in the Update
   // algorithm here:
@@ -558,8 +570,9 @@
 }
 
 FetchClientSettingsObjectSnapshot*
-WebEmbeddedWorkerImpl::CreateFetchClientSettingsObject() {
-  DCHECK(shadow_page_->WasInitialized());
+WebEmbeddedWorkerImpl::CreateFetchClientSettingsObject(
+    const SecurityOrigin* security_origin,
+    const HttpsState& https_state) {
   // TODO(crbug.com/967265): Currently we create an incomplete outside settings
   // object from |worker_start_data_| but we should create a proper outside
   // settings objects depending on the situation. For new worker case, this
@@ -571,13 +584,10 @@
   // object over mojo IPCs.
 
   const KURL& script_url = worker_start_data_.script_url;
-  scoped_refptr<const SecurityOrigin> security_origin =
-      SecurityOrigin::Create(script_url);
   return MakeGarbageCollected<FetchClientSettingsObjectSnapshot>(
       script_url /* global_object_url */, script_url /* base_url */,
       security_origin, network::mojom::ReferrerPolicy::kDefault,
-      script_url.GetString() /* outgoing_referrer */,
-      CalculateHttpsState(security_origin.get()),
+      script_url.GetString() /* outgoing_referrer */, https_state,
       AllowedByNosniff::MimeTypeCheck::kLax, worker_start_data_.address_space,
       kBlockAllMixedContent /* insecure_requests_policy */,
       FetchClientSettingsObject::InsecureNavigationsSet(),
diff --git a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.h b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.h
index 15509dde..b1bc53f1 100644
--- a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.h
+++ b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.h
@@ -96,7 +96,9 @@
 
   // Creates an outside settings object from the worker shadow page for
   // top-level worker script fetch.
-  FetchClientSettingsObjectSnapshot* CreateFetchClientSettingsObject();
+  FetchClientSettingsObjectSnapshot* CreateFetchClientSettingsObject(
+      const SecurityOrigin*,
+      const HttpsState&);
 
   WebEmbeddedWorkerStartData worker_start_data_;
 
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_database.cc b/third_party/blink/renderer/modules/indexeddb/idb_database.cc
index 4f52673..d81e2a5 100644
--- a/third_party/blink/renderer/modules/indexeddb/idb_database.cc
+++ b/third_party/blink/renderer/modules/indexeddb/idb_database.cc
@@ -193,14 +193,14 @@
   }
 
   for (const auto& map_entry : observation_index_map) {
-    auto observer_lookup_result = observers_.find(map_entry.first);
+    auto observer_lookup_result = observers_.find(map_entry.key);
     if (observer_lookup_result != observers_.end()) {
       IDBObserver* observer = observer_lookup_result->value;
 
-      auto transactions_lookup_result = transactions.find(map_entry.first);
+      auto transactions_lookup_result = transactions.find(map_entry.key);
       if (transactions_lookup_result != transactions.end()) {
         const std::pair<int64_t, Vector<int64_t>>& obs_txn =
-            transactions_lookup_result->second;
+            transactions_lookup_result->value;
         HashSet<String> stores;
         for (int64_t store_id : obs_txn.second) {
           stores.insert(metadata_.object_stores.at(store_id)->name);
@@ -209,7 +209,7 @@
 
       observer->Callback()->InvokeAndReportException(
           observer, MakeGarbageCollected<IDBObserverChanges>(
-                        this, nullptr, observations, map_entry.second));
+                        this, nullptr, observations, map_entry.value));
     }
   }
 }
diff --git a/third_party/blink/renderer/modules/indexeddb/indexed_db_database_callbacks_impl.cc b/third_party/blink/renderer/modules/indexeddb/indexed_db_database_callbacks_impl.cc
index c92e2f13..083a560 100644
--- a/third_party/blink/renderer/modules/indexeddb/indexed_db_database_callbacks_impl.cc
+++ b/third_party/blink/renderer/modules/indexeddb/indexed_db_database_callbacks_impl.cc
@@ -4,7 +4,6 @@
 
 #include "third_party/blink/renderer/modules/indexeddb/indexed_db_database_callbacks_impl.h"
 
-#include <unordered_map>
 #include <utility>
 
 #include "third_party/blink/public/platform/web_blob_info.h"
@@ -58,21 +57,20 @@
         std::move(value)));
   }
 
-  std::unordered_map<int32_t, Vector<int32_t>> observation_index_map;
+  HashMap<int32_t, Vector<int32_t>> observation_index_map;
   for (const auto& observation_pair : changes->observation_index_map) {
-    observation_index_map[observation_pair.key] =
-        Vector<int32_t>(observation_pair.value);
+    observation_index_map.insert(observation_pair.key,
+                                 Vector<int32_t>(observation_pair.value));
   }
 
-  std::unordered_map<int32_t, std::pair<int64_t, Vector<int64_t>>>
-      observer_transactions;
+  HashMap<int32_t, std::pair<int64_t, Vector<int64_t>>> observer_transactions;
   for (const auto& transaction_pair : changes->transaction_map) {
     // Moving an int64_t is rather silly. Sadly, std::make_pair's overloads
     // accept either two rvalue arguments, or none.
-    observer_transactions[transaction_pair.key] =
-        std::make_pair<int64_t, Vector<int64_t>>(
-            std::move(transaction_pair.value->id),
-            std::move(transaction_pair.value->scope));
+    observer_transactions.insert(transaction_pair.key,
+                                 std::make_pair<int64_t, Vector<int64_t>>(
+                                     std::move(transaction_pair.value->id),
+                                     std::move(transaction_pair.value->scope)));
   }
 
   callbacks_->OnChanges(observation_index_map, std::move(observations),
diff --git a/third_party/blink/renderer/modules/indexeddb/web_idb_database_callbacks.h b/third_party/blink/renderer/modules/indexeddb/web_idb_database_callbacks.h
index 9ab144b..b3973aa 100644
--- a/third_party/blink/renderer/modules/indexeddb/web_idb_database_callbacks.h
+++ b/third_party/blink/renderer/modules/indexeddb/web_idb_database_callbacks.h
@@ -26,12 +26,12 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_INDEXEDDB_WEB_IDB_DATABASE_CALLBACKS_H_
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_INDEXEDDB_WEB_IDB_DATABASE_CALLBACKS_H_
 
-#include <unordered_map>
 #include <utility>
 
 #include "third_party/blink/renderer/modules/indexeddb/idb_database_error.h"
 #include "third_party/blink/renderer/modules/modules_export.h"
 #include "third_party/blink/renderer/platform/heap/persistent.h"
+#include "third_party/blink/renderer/platform/wtf/hash_map.h"
 
 namespace blink {
 
@@ -39,11 +39,10 @@
 
 class WebIDBDatabaseCallbacks {
  public:
-  using ObservationIndexMap = std::unordered_map<int32_t, Vector<int32_t>>;
+  using ObservationIndexMap = HashMap<int32_t, Vector<int32_t>>;
 
   // Maps observer to transaction, which needs an id and a scope.
-  using TransactionMap =
-      std::unordered_map<int32_t, std::pair<int64_t, Vector<int64_t>>>;
+  using TransactionMap = HashMap<int32_t, std::pair<int64_t, Vector<int64_t>>>;
 
   virtual ~WebIDBDatabaseCallbacks() = default;
 
diff --git a/third_party/blink/renderer/modules/locks/lock_manager.cc b/third_party/blink/renderer/modules/locks/lock_manager.cc
index bae478c4..1f13590 100644
--- a/third_party/blink/renderer/modules/locks/lock_manager.cc
+++ b/third_party/blink/renderer/modules/locks/lock_manager.cc
@@ -9,6 +9,7 @@
 #include "mojo/public/cpp/bindings/associated_binding.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
+#include "third_party/blink/public/platform/task_type.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
 #include "third_party/blink/renderer/bindings/modules/v8/v8_lock_granted_callback.h"
 #include "third_party/blink/renderer/core/dom/abort_signal.h"
@@ -69,11 +70,10 @@
         resolver_(resolver),
         name_(name),
         mode_(mode),
-        // See https://bit.ly/2S0zRAS for task types.
-        binding_(this,
-                 std::move(request),
-                 manager->GetExecutionContext()->GetTaskRunner(
-                     TaskType::kMiscPlatformAPI)),
+        binding_(
+            this,
+            std::move(request),
+            manager->GetExecutionContext()->GetTaskRunner(TaskType::kWebLocks)),
         manager_(manager) {}
 
   ~LockRequestImpl() override = default;
diff --git a/third_party/blink/renderer/modules/mediastream/BUILD.gn b/third_party/blink/renderer/modules/mediastream/BUILD.gn
index 59cffa5..20c35e5 100644
--- a/third_party/blink/renderer/modules/mediastream/BUILD.gn
+++ b/third_party/blink/renderer/modules/mediastream/BUILD.gn
@@ -29,6 +29,8 @@
     "media_stream_constraints_util_video_device.cc",
     "media_stream_event.cc",
     "media_stream_event.h",
+    "media_stream_local_frame_wrapper.cc",
+    "media_stream_local_frame_wrapper.h",
     "media_stream_track.cc",
     "media_stream_track.h",
     "media_stream_track_content_hint.h",
@@ -46,6 +48,7 @@
     "overconstrained_error.cc",
     "overconstrained_error.h",
     "remote_media_stream_track_adapter.cc",
+    "track_audio_renderer.cc",
     "user_media_client.cc",
     "user_media_client.h",
     "user_media_controller.cc",
@@ -66,6 +69,7 @@
   sources = [
     "mock_constraint_factory.cc",
     "mock_media_stream_registry.cc",
+    "mock_media_stream_video_sink.cc",
     "mock_media_stream_video_source.cc",
   ]
 
diff --git a/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc b/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc
index 3a1fead..4a066985 100644
--- a/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc
+++ b/third_party/blink/renderer/modules/mediastream/local_media_stream_audio_source.cc
@@ -13,28 +13,10 @@
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/web/web_local_frame.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
+#include "third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.h"
 
 namespace blink {
 
-class LocalMediaStreamAudioSource::InternalFrame {
- public:
-  explicit InternalFrame(WebLocalFrame* web_frame)
-      : frame_(web_frame ? static_cast<LocalFrame*>(
-                               WebLocalFrame::ToCoreFrame(*web_frame))
-                         : nullptr) {}
-
-  LocalFrame* frame() { return frame_.Get(); }
-  WebLocalFrame* web_frame() {
-    if (!frame_)
-      return nullptr;
-
-    return static_cast<WebLocalFrame*>(WebFrame::FromFrame(frame()));
-  }
-
- private:
-  WeakPersistent<LocalFrame> frame_;
-};
-
 LocalMediaStreamAudioSource::LocalMediaStreamAudioSource(
     WebLocalFrame* web_frame,
     const MediaStreamDevice& device,
@@ -45,7 +27,8 @@
     : MediaStreamAudioSource(std::move(task_runner),
                              true /* is_local_source */,
                              disable_local_echo),
-      internal_consumer_frame_(std::make_unique<InternalFrame>(web_frame)),
+      internal_consumer_frame_(
+          std::make_unique<MediaStreamInternalFrameWrapper>(web_frame)),
       started_callback_(std::move(started_callback)) {
   DVLOG(1) << "LocalMediaStreamAudioSource::LocalMediaStreamAudioSource()";
   SetDevice(device);
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.cc b/third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.cc
new file mode 100644
index 0000000..9ecaca20
--- /dev/null
+++ b/third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.cc
@@ -0,0 +1,8 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.h"
+
+// This empty .cc file is needed so that the linking step succeeds on some
+// Windows platforms.
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.h b/third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.h
new file mode 100644
index 0000000..72db4274
--- /dev/null
+++ b/third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.h
@@ -0,0 +1,42 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_LOCAL_FRAME_WRAPPER_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_LOCAL_FRAME_WRAPPER_H_
+
+#include "third_party/blink/public/web/web_local_frame.h"
+#include "third_party/blink/renderer/core/frame/local_frame.h"
+#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
+
+namespace blink {
+
+// This class wraps WebLocalFrame instances, so they can be work as
+// weak pointers. Internally, it uses the backing LocalFrame for such.
+//
+// TODO(crbug.com/704136): Remove this class when its users get fully
+// Onion souped, and WeakPersistent<LocalFrame> can be used directly.
+class MediaStreamInternalFrameWrapper {
+ public:
+  MediaStreamInternalFrameWrapper(WebLocalFrame* web_frame)
+      : frame_(web_frame ? static_cast<LocalFrame*>(
+                               WebLocalFrame::ToCoreFrame(*web_frame))
+                         : nullptr) {}
+
+  LocalFrame* frame() { return frame_.Get(); }
+  WebLocalFrame* web_frame() {
+    if (!frame_)
+      return nullptr;
+
+    return static_cast<WebLocalFrame*>(WebFrame::FromFrame(frame()));
+  }
+
+ private:
+  WeakPersistent<LocalFrame> frame_;
+
+  DISALLOW_COPY_AND_ASSIGN(MediaStreamInternalFrameWrapper);
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_LOCAL_FRAME_WRAPPER_H_
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source.cc
index 6c6e75b5c..1502254 100644
--- a/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source.cc
+++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source.cc
@@ -14,24 +14,22 @@
 #include "third_party/blink/public/web/web_local_frame.h"
 #include "third_party/blink/public/web/web_local_frame_client.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
+#include "third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.h"
 #include "third_party/blink/renderer/platform/wtf/functional.h"
 
 namespace blink {
 
-class MediaStreamVideoCapturerSource::InternalState {
+class MediaStreamVideoCapturerSource::InternalState
+    : public MediaStreamInternalFrameWrapper {
  public:
   InternalState(WebLocalFrame* web_frame)
-      : frame_(web_frame ? static_cast<LocalFrame*>(
-                               WebLocalFrame::ToCoreFrame(*web_frame))
-                         : nullptr) {}
-
-  LocalFrame* frame() { return frame_.Get(); }
+      : MediaStreamInternalFrameWrapper(web_frame) {}
 
   const mojom::blink::MediaStreamDispatcherHostPtr&
   GetMediaStreamDispatcherHost() {
-    DCHECK(frame_);
+    DCHECK(frame());
     if (!host_)
-      frame_->GetInterfaceProvider().GetInterface(mojo::MakeRequest(&host_));
+      frame()->GetInterfaceProvider().GetInterface(mojo::MakeRequest(&host_));
     return host_;
   }
 
@@ -41,7 +39,6 @@
   }
 
  private:
-  WeakPersistent<LocalFrame> frame_;
   mojom::blink::MediaStreamDispatcherHostPtr host_;
 };
 
diff --git a/content/renderer/media/stream/media_stream_video_source_unittest.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_source_test.cc
similarity index 67%
rename from content/renderer/media/stream/media_stream_video_source_unittest.cc
rename to third_party/blink/renderer/modules/mediastream/media_stream_video_source_test.cc
index b96d2dc9..a2631fe 100644
--- a/content/renderer/media/stream/media_stream_video_source_unittest.cc
+++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_source_test.cc
@@ -6,14 +6,10 @@
 #include <utility>
 #include <vector>
 
-#include "base/bind.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/test/scoped_task_environment.h"
 #include "build/build_config.h"
-#include "content/child/child_process.h"
-#include "content/renderer/media/stream/mock_media_stream_video_sink.h"
 #include "media/base/limits.h"
 #include "media/base/video_frame.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -21,27 +17,27 @@
 #include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h"
 #include "third_party/blink/public/web/modules/mediastream/media_stream_video_track.h"
 #include "third_party/blink/public/web/modules/mediastream/mock_constraint_factory.h"
+#include "third_party/blink/public/web/modules/mediastream/mock_media_stream_video_sink.h"
 #include "third_party/blink/public/web/modules/mediastream/mock_media_stream_video_source.h"
 #include "third_party/blink/public/web/modules/mediastream/video_track_adapter_settings.h"
 #include "third_party/blink/public/web/web_heap.h"
+#include "third_party/blink/renderer/platform/testing/io_task_runner_testing_platform_support.h"
+#include "third_party/blink/renderer/platform/wtf/functional.h"
 
 using ::testing::_;
 using ::testing::DoAll;
 using ::testing::SaveArg;
 
-namespace content {
+namespace blink {
 
 class MediaStreamVideoSourceTest : public ::testing::Test {
  public:
   MediaStreamVideoSourceTest()
-      : scoped_task_environment_(
-            base::test::ScopedTaskEnvironment::MainThreadType::UI),
-        child_process_(new ChildProcess()),
-        number_of_successful_constraints_applied_(0),
+      : number_of_successful_constraints_applied_(0),
         number_of_failed_constraints_applied_(0),
-        result_(blink::mojom::MediaStreamRequestResult::OK),
+        result_(mojom::MediaStreamRequestResult::OK),
         result_name_(""),
-        mock_source_(new blink::MockMediaStreamVideoSource(
+        mock_source_(new MockMediaStreamVideoSource(
             media::VideoCaptureFormat(gfx::Size(1280, 720),
                                       1000.0,
                                       media::PIXEL_FORMAT_I420),
@@ -56,41 +52,41 @@
                                                 media::PIXEL_FORMAT_I420));
     formats.push_back(media::VideoCaptureFormat(gfx::Size(320, 240), 30,
                                                 media::PIXEL_FORMAT_I420));
-    web_source_.Initialize(blink::WebString::FromASCII("dummy_source_id"),
-                           blink::WebMediaStreamSource::kTypeVideo,
-                           blink::WebString::FromASCII("dummy_source_name"),
+    web_source_.Initialize(WebString::FromASCII("dummy_source_id"),
+                           WebMediaStreamSource::kTypeVideo,
+                           WebString::FromASCII("dummy_source_name"),
                            false /* remote */);
     web_source_.SetPlatformSource(base::WrapUnique(mock_source_));
   }
 
   void TearDown() override {
     web_source_.Reset();
-    blink::WebHeap::CollectAllGarbageForTesting();
+    WebHeap::CollectAllGarbageForTesting();
   }
 
   MOCK_METHOD0(MockNotification, void());
 
  protected:
-  blink::MediaStreamVideoSource* source() { return mock_source_; }
+  MediaStreamVideoSource* source() { return mock_source_; }
 
   // Create a track that's associated with |web_source_|.
-  blink::WebMediaStreamTrack CreateTrack(const std::string& id) {
+  WebMediaStreamTrack CreateTrack(const std::string& id) {
     bool enabled = true;
-    return blink::MediaStreamVideoTrack::CreateVideoTrack(
+    return MediaStreamVideoTrack::CreateVideoTrack(
         mock_source_,
         base::Bind(&MediaStreamVideoSourceTest::OnConstraintsApplied,
                    base::Unretained(this)),
         enabled);
   }
 
-  blink::WebMediaStreamTrack CreateTrack(
+  WebMediaStreamTrack CreateTrack(
       const std::string& id,
-      const blink::VideoTrackAdapterSettings& adapter_settings,
+      const VideoTrackAdapterSettings& adapter_settings,
       const base::Optional<bool>& noise_reduction,
       bool is_screencast,
       double min_frame_rate) {
     bool enabled = true;
-    return blink::MediaStreamVideoTrack::CreateVideoTrack(
+    return MediaStreamVideoTrack::CreateVideoTrack(
         mock_source_, adapter_settings, noise_reduction, is_screencast,
         min_frame_rate,
         base::Bind(&MediaStreamVideoSourceTest::OnConstraintsApplied,
@@ -98,20 +94,18 @@
         enabled);
   }
 
-  blink::WebMediaStreamTrack CreateTrackAndStartSource(
-      int width,
-      int height,
-      double frame_rate,
-      bool detect_rotation = false) {
-    blink::WebMediaStreamTrack track = CreateTrack(
-        "123",
-        blink::VideoTrackAdapterSettings(gfx::Size(width, height), frame_rate),
+  WebMediaStreamTrack CreateTrackAndStartSource(int width,
+                                                int height,
+                                                double frame_rate,
+                                                bool detect_rotation = false) {
+    WebMediaStreamTrack track = CreateTrack(
+        "123", VideoTrackAdapterSettings(gfx::Size(width, height), frame_rate),
         base::Optional<bool>(), false, 0.0);
 
     EXPECT_EQ(0, NumberOfSuccessConstraintsCallbacks());
     mock_source_->StartMockedSource();
     // Once the source has started successfully we expect that the
-    // ConstraintsCallback in blink::WebPlatformMediaStreamSource::AddTrack
+    // ConstraintsCallback in WebPlatformMediaStreamSource::AddTrack
     // completes.
     EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
     return track;
@@ -125,19 +119,19 @@
     return number_of_failed_constraints_applied_;
   }
 
-  blink::mojom::MediaStreamRequestResult error_type() const { return result_; }
-  blink::WebString error_name() const { return result_name_; }
+  mojom::MediaStreamRequestResult error_type() const { return result_; }
+  WebString error_name() const { return result_name_; }
 
-  blink::MockMediaStreamVideoSource* mock_source() { return mock_source_; }
+  MockMediaStreamVideoSource* mock_source() { return mock_source_; }
 
-  const blink::WebMediaStreamSource& web_source() { return web_source_; }
+  const WebMediaStreamSource& web_source() { return web_source_; }
 
   void TestSourceCropFrame(int capture_width,
                            int capture_height,
                            int expected_width,
                            int expected_height) {
     // Configure the track to crop to the expected resolution.
-    blink::WebMediaStreamTrack track =
+    WebMediaStreamTrack track =
         CreateTrackAndStartSource(expected_width, expected_height, 30.0);
 
     // Produce frames at the capture resolution.
@@ -196,16 +190,15 @@
                                           int expected_height1,
                                           int expected_width2,
                                           int expected_height2) {
-    blink::WebMediaStreamTrack track1 = CreateTrackAndStartSource(
-        expected_width1, expected_height1,
-        blink::MediaStreamVideoSource::kDefaultFrameRate);
+    WebMediaStreamTrack track1 =
+        CreateTrackAndStartSource(expected_width1, expected_height1,
+                                  MediaStreamVideoSource::kDefaultFrameRate);
 
-    blink::WebMediaStreamTrack track2 =
-        CreateTrack("dummy",
-                    blink::VideoTrackAdapterSettings(
-                        gfx::Size(expected_width2, expected_height2),
-                        blink::MediaStreamVideoSource::kDefaultFrameRate),
-                    base::Optional<bool>(), false, 0.0);
+    WebMediaStreamTrack track2 = CreateTrack(
+        "dummy",
+        VideoTrackAdapterSettings(gfx::Size(expected_width2, expected_height2),
+                                  MediaStreamVideoSource::kDefaultFrameRate),
+        base::Optional<bool>(), false, 0.0);
 
     MockMediaStreamVideoSink sink1;
     sink1.ConnectToTrack(track1);
@@ -231,17 +224,17 @@
   }
 
   void ReleaseTrackAndSourceOnAddTrackCallback(
-      const blink::WebMediaStreamTrack& track_to_release) {
+      const WebMediaStreamTrack& track_to_release) {
     track_to_release_ = track_to_release;
   }
 
  private:
-  void OnConstraintsApplied(blink::WebPlatformMediaStreamSource* source,
-                            blink::mojom::MediaStreamRequestResult result,
-                            const blink::WebString& result_name) {
+  void OnConstraintsApplied(WebPlatformMediaStreamSource* source,
+                            mojom::MediaStreamRequestResult result,
+                            const WebString& result_name) {
     ASSERT_EQ(source, web_source().GetPlatformSource());
 
-    if (result == blink::mojom::MediaStreamRequestResult::OK) {
+    if (result == mojom::MediaStreamRequestResult::OK) {
       ++number_of_successful_constraints_applied_;
     } else {
       result_ = result;
@@ -255,42 +248,41 @@
       track_to_release_.Reset();
     }
   }
-  const base::test::ScopedTaskEnvironment scoped_task_environment_;
-  const std::unique_ptr<ChildProcess> child_process_;
-  blink::WebMediaStreamTrack track_to_release_;
+  ScopedTestingPlatformSupport<IOTaskRunnerTestingPlatformSupport> platform_;
+  WebMediaStreamTrack track_to_release_;
   int number_of_successful_constraints_applied_;
   int number_of_failed_constraints_applied_;
-  blink::mojom::MediaStreamRequestResult result_;
-  blink::WebString result_name_;
-  blink::WebMediaStreamSource web_source_;
+  mojom::MediaStreamRequestResult result_;
+  WebString result_name_;
+  WebMediaStreamSource web_source_;
   // |mock_source_| is owned by |web_source_|.
-  blink::MockMediaStreamVideoSource* mock_source_;
+  MockMediaStreamVideoSource* mock_source_;
 };
 
 TEST_F(MediaStreamVideoSourceTest, AddTrackAndStartSource) {
-  blink::WebMediaStreamTrack track = CreateTrack("123");
+  WebMediaStreamTrack track = CreateTrack("123");
   mock_source()->StartMockedSource();
   EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
 }
 
 TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeSourceStarts) {
-  blink::WebMediaStreamTrack track1 = CreateTrack("123");
-  blink::WebMediaStreamTrack track2 = CreateTrack("123");
+  WebMediaStreamTrack track1 = CreateTrack("123");
+  WebMediaStreamTrack track2 = CreateTrack("123");
   EXPECT_EQ(0, NumberOfSuccessConstraintsCallbacks());
   mock_source()->StartMockedSource();
   EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
 }
 
 TEST_F(MediaStreamVideoSourceTest, AddTrackAfterSourceStarts) {
-  blink::WebMediaStreamTrack track1 = CreateTrack("123");
+  WebMediaStreamTrack track1 = CreateTrack("123");
   mock_source()->StartMockedSource();
   EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
-  blink::WebMediaStreamTrack track2 = CreateTrack("123");
+  WebMediaStreamTrack track2 = CreateTrack("123");
   EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
 }
 
 TEST_F(MediaStreamVideoSourceTest, AddTrackAndFailToStartSource) {
-  blink::WebMediaStreamTrack track = CreateTrack("123");
+  WebMediaStreamTrack track = CreateTrack("123");
   mock_source()->FailToStartMockedSource();
   EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
 }
@@ -300,7 +292,7 @@
 }
 
 TEST_F(MediaStreamVideoSourceTest, ReleaseTrackAndSourceOnSuccessCallBack) {
-  blink::WebMediaStreamTrack track = CreateTrack("123");
+  WebMediaStreamTrack track = CreateTrack("123");
   ReleaseTrackAndSourceOnAddTrackCallback(track);
   mock_source()->StartMockedSource();
   EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
@@ -318,7 +310,7 @@
   // Expect the source to start capture with the supported resolution.
   // Disable frame-rate adjustment in spec-compliant mode to ensure no frames
   // are dropped.
-  blink::WebMediaStreamTrack track = CreateTrackAndStartSource(800, 700, 0.0);
+  WebMediaStreamTrack track = CreateTrackAndStartSource(800, 700, 0.0);
 
   MockMediaStreamVideoSink sink;
   sink.ConnectToTrack(track);
@@ -352,8 +344,7 @@
   // Expect the source to start capture with the supported resolution.
   // Disable frame-rate adjustment in spec-compliant mode to ensure no frames
   // are dropped.
-  blink::WebMediaStreamTrack track =
-      CreateTrackAndStartSource(1280, 720, 0.0, true);
+  WebMediaStreamTrack track = CreateTrackAndStartSource(1280, 720, 0.0, true);
 
   MockMediaStreamVideoSink sink;
   sink.ConnectToTrack(track);
@@ -381,8 +372,7 @@
   // Expect the source to start capture with the supported resolution.
   // Disable frame-rate adjustment in spec-compliant mode to ensure no frames
   // are dropped.
-  blink::WebMediaStreamTrack track =
-      CreateTrackAndStartSource(1280, 720, 0.0, true);
+  WebMediaStreamTrack track = CreateTrackAndStartSource(1280, 720, 0.0, true);
 
   MockMediaStreamVideoSink sink;
   sink.ConnectToTrack(track);
@@ -411,12 +401,12 @@
   // the muted event faster. This is since the frame monitoring uses
   // PostDelayedTask that is dependent on the source frame rate.
   // Note that media::limits::kMaxFramesPerSecond is 1000.
-  blink::WebMediaStreamTrack track = CreateTrackAndStartSource(
+  WebMediaStreamTrack track = CreateTrackAndStartSource(
       640, 480, media::limits::kMaxFramesPerSecond - 2);
   MockMediaStreamVideoSink sink;
   sink.ConnectToTrack(track);
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   base::RunLoop run_loop;
   base::OnceClosure quit_closure = run_loop.QuitClosure();
@@ -428,7 +418,7 @@
   EXPECT_EQ(muted_state, true);
 
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateMuted);
+            WebMediaStreamSource::kReadyStateMuted);
 
   base::RunLoop run_loop2;
   base::OnceClosure quit_closure2 = run_loop2.QuitClosure();
@@ -440,30 +430,30 @@
 
   EXPECT_EQ(muted_state, false);
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   sink.DisconnectFromTrack();
 }
 
 TEST_F(MediaStreamVideoSourceTest, ReconfigureTrack) {
-  blink::WebMediaStreamTrack track = CreateTrackAndStartSource(
+  WebMediaStreamTrack track = CreateTrackAndStartSource(
       640, 480, media::limits::kMaxFramesPerSecond - 2);
   MockMediaStreamVideoSink sink;
   sink.ConnectToTrack(track);
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
-  blink::MediaStreamVideoTrack* native_track =
-      blink::MediaStreamVideoTrack::GetVideoTrack(track);
-  blink::WebMediaStreamTrack::Settings settings;
+  MediaStreamVideoTrack* native_track =
+      MediaStreamVideoTrack::GetVideoTrack(track);
+  WebMediaStreamTrack::Settings settings;
   native_track->GetSettings(settings);
   EXPECT_EQ(settings.width, 640);
   EXPECT_EQ(settings.height, 480);
   EXPECT_EQ(settings.frame_rate, media::limits::kMaxFramesPerSecond - 2);
   EXPECT_EQ(settings.aspect_ratio, 640.0 / 480.0);
 
-  source()->ReconfigureTrack(native_track, blink::VideoTrackAdapterSettings(
-                                               gfx::Size(630, 470), 30.0));
+  source()->ReconfigureTrack(
+      native_track, VideoTrackAdapterSettings(gfx::Size(630, 470), 30.0));
   native_track->GetSettings(settings);
   EXPECT_EQ(settings.width, 630);
   EXPECT_EQ(settings.height, 470);
@@ -479,14 +469,14 @@
 }
 
 TEST_F(MediaStreamVideoSourceTest, ReconfigureStoppedTrack) {
-  blink::WebMediaStreamTrack track = CreateTrackAndStartSource(
+  WebMediaStreamTrack track = CreateTrackAndStartSource(
       640, 480, media::limits::kMaxFramesPerSecond - 2);
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
-  blink::MediaStreamVideoTrack* native_track =
-      blink::MediaStreamVideoTrack::GetVideoTrack(track);
-  blink::WebMediaStreamTrack::Settings settings;
+  MediaStreamVideoTrack* native_track =
+      MediaStreamVideoTrack::GetVideoTrack(track);
+  WebMediaStreamTrack::Settings settings;
   native_track->GetSettings(settings);
   EXPECT_EQ(settings.width, 640);
   EXPECT_EQ(settings.height, 480);
@@ -497,11 +487,11 @@
   // associated with the source.
   native_track->Stop();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateEnded);
+            WebMediaStreamSource::kReadyStateEnded);
 
-  source()->ReconfigureTrack(native_track, blink::VideoTrackAdapterSettings(
-                                               gfx::Size(630, 470), 30.0));
-  blink::WebMediaStreamTrack::Settings stopped_settings;
+  source()->ReconfigureTrack(
+      native_track, VideoTrackAdapterSettings(gfx::Size(630, 470), 30.0));
+  WebMediaStreamTrack::Settings stopped_settings;
   native_track->GetSettings(stopped_settings);
   EXPECT_EQ(stopped_settings.width, -1);
   EXPECT_EQ(stopped_settings.height, -1);
@@ -511,222 +501,212 @@
 
 // Test that restart fails on a source without restart support.
 TEST_F(MediaStreamVideoSourceTest, FailedRestart) {
-  blink::WebMediaStreamTrack track = CreateTrack("123");
+  WebMediaStreamTrack track = CreateTrack("123");
   mock_source()->StartMockedSource();
   EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   // The source does not support Restart/StopForRestart.
   mock_source()->StopForRestart(
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::IS_RUNNING);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::IS_RUNNING);
       }));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   // Verify that Restart() fails with INVALID_STATE when not called after a
   // successful StopForRestart().
   mock_source()->Restart(
       media::VideoCaptureFormat(),
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::INVALID_STATE);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::INVALID_STATE);
       }));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   mock_source()->StopSource();
   // Verify that StopForRestart() fails with INVALID_STATE when called when the
   // source is not running.
   mock_source()->StopForRestart(
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::INVALID_STATE);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::INVALID_STATE);
       }));
 }
 
 // Test that restart succeeds on a source with restart support.
 TEST_F(MediaStreamVideoSourceTest, SuccessfulRestart) {
-  blink::WebMediaStreamTrack track = CreateTrack("123");
+  WebMediaStreamTrack track = CreateTrack("123");
   mock_source()->EnableStopForRestart();
   mock_source()->EnableRestart();
   mock_source()->StartMockedSource();
   EXPECT_EQ(NumberOfSuccessConstraintsCallbacks(), 1);
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   mock_source()->StopForRestart(
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::IS_STOPPED);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::IS_STOPPED);
       }));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   // Verify that StopForRestart() fails with INVALID_STATE called after the
   // source is already stopped.
   mock_source()->StopForRestart(
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::INVALID_STATE);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::INVALID_STATE);
       }));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   mock_source()->Restart(
       media::VideoCaptureFormat(),
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::IS_RUNNING);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::IS_RUNNING);
       }));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   // Verify that Restart() fails with INVALID_STATE if the source has already
   // started.
   mock_source()->Restart(
       media::VideoCaptureFormat(),
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::INVALID_STATE);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::INVALID_STATE);
       }));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   mock_source()->StopSource();
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateEnded);
+            WebMediaStreamSource::kReadyStateEnded);
 }
 
 // Test that restart fails on a source without restart support.
 TEST_F(MediaStreamVideoSourceTest, FailedRestartAfterStopForRestart) {
-  blink::WebMediaStreamTrack track = CreateTrack("123");
+  WebMediaStreamTrack track = CreateTrack("123");
   mock_source()->EnableStopForRestart();
   mock_source()->DisableRestart();
   mock_source()->StartMockedSource();
   EXPECT_EQ(NumberOfSuccessConstraintsCallbacks(), 1);
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   mock_source()->StopForRestart(
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::IS_STOPPED);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::IS_STOPPED);
       }));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   mock_source()->Restart(
       media::VideoCaptureFormat(),
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::IS_STOPPED);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::IS_STOPPED);
       }));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   // Another failed attempt to verify that the source remains in the correct
   // state.
   mock_source()->Restart(
       media::VideoCaptureFormat(),
-      base::BindOnce([](blink::MediaStreamVideoSource::RestartResult result) {
-        EXPECT_EQ(result,
-                  blink::MediaStreamVideoSource::RestartResult::IS_STOPPED);
+      WTF::Bind([](MediaStreamVideoSource::RestartResult result) {
+        EXPECT_EQ(result, MediaStreamVideoSource::RestartResult::IS_STOPPED);
       }));
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   mock_source()->StopSource();
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateEnded);
+            WebMediaStreamSource::kReadyStateEnded);
 }
 
 TEST_F(MediaStreamVideoSourceTest, StartStopAndNotifyRestartSupported) {
-  blink::WebMediaStreamTrack web_track = CreateTrack("123");
+  WebMediaStreamTrack web_track = CreateTrack("123");
   mock_source()->EnableStopForRestart();
   mock_source()->StartMockedSource();
   EXPECT_EQ(NumberOfSuccessConstraintsCallbacks(), 1);
   EXPECT_EQ(web_track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   EXPECT_CALL(*this, MockNotification());
-  blink::WebPlatformMediaStreamTrack* track =
-      blink::WebPlatformMediaStreamTrack::GetTrack(web_track);
-  track->StopAndNotify(base::BindOnce(
-      &MediaStreamVideoSourceTest::MockNotification, base::Unretained(this)));
+  WebPlatformMediaStreamTrack* track =
+      WebPlatformMediaStreamTrack::GetTrack(web_track);
+  track->StopAndNotify(WTF::Bind(&MediaStreamVideoSourceTest::MockNotification,
+                                 base::Unretained(this)));
   EXPECT_EQ(web_track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateEnded);
+            WebMediaStreamSource::kReadyStateEnded);
   base::RunLoop().RunUntilIdle();
 }
 
 TEST_F(MediaStreamVideoSourceTest, StartStopAndNotifyRestartNotSupported) {
-  blink::WebMediaStreamTrack web_track = CreateTrack("123");
+  WebMediaStreamTrack web_track = CreateTrack("123");
   mock_source()->DisableStopForRestart();
   mock_source()->StartMockedSource();
   EXPECT_EQ(NumberOfSuccessConstraintsCallbacks(), 1);
   EXPECT_EQ(web_track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateLive);
+            WebMediaStreamSource::kReadyStateLive);
 
   EXPECT_CALL(*this, MockNotification());
-  blink::WebPlatformMediaStreamTrack* track =
-      blink::WebPlatformMediaStreamTrack::GetTrack(web_track);
-  track->StopAndNotify(base::BindOnce(
-      &MediaStreamVideoSourceTest::MockNotification, base::Unretained(this)));
+  WebPlatformMediaStreamTrack* track =
+      WebPlatformMediaStreamTrack::GetTrack(web_track);
+  track->StopAndNotify(WTF::Bind(&MediaStreamVideoSourceTest::MockNotification,
+                                 base::Unretained(this)));
   EXPECT_EQ(web_track.Source().GetReadyState(),
-            blink::WebMediaStreamSource::kReadyStateEnded);
+            WebMediaStreamSource::kReadyStateEnded);
   base::RunLoop().RunUntilIdle();
 }
 
 TEST_F(MediaStreamVideoSourceTest, StopSuspendedTrack) {
-  blink::WebMediaStreamTrack web_track1 = CreateTrack("123");
+  WebMediaStreamTrack web_track1 = CreateTrack("123");
   mock_source()->StartMockedSource();
-  blink::WebMediaStreamTrack web_track2 = CreateTrack("123");
+  WebMediaStreamTrack web_track2 = CreateTrack("123");
 
   // Simulate assigning |track1| to a sink, then removing it from the sink, and
   // then stopping it.
-  blink::MediaStreamVideoTrack* track1 =
-      blink::MediaStreamVideoTrack::GetVideoTrack(web_track1);
+  MediaStreamVideoTrack* track1 =
+      MediaStreamVideoTrack::GetVideoTrack(web_track1);
   mock_source()->UpdateHasConsumers(track1, true);
   mock_source()->UpdateHasConsumers(track1, false);
   track1->Stop();
 
   // Simulate assigning |track2| to a sink. The source should not be suspended.
-  blink::MediaStreamVideoTrack* track2 =
-      blink::MediaStreamVideoTrack::GetVideoTrack(web_track2);
+  MediaStreamVideoTrack* track2 =
+      MediaStreamVideoTrack::GetVideoTrack(web_track2);
   mock_source()->UpdateHasConsumers(track2, true);
   EXPECT_FALSE(mock_source()->is_suspended());
 }
 
 TEST_F(MediaStreamVideoSourceTest, AddTrackAfterStoppingSource) {
-  blink::WebMediaStreamTrack web_track1 = CreateTrack("123");
+  WebMediaStreamTrack web_track1 = CreateTrack("123");
   mock_source()->StartMockedSource();
   EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
   EXPECT_EQ(0, NumberOfFailedConstraintsCallbacks());
 
-  blink::MediaStreamVideoTrack* track1 =
-      blink::MediaStreamVideoTrack::GetVideoTrack(web_track1);
+  MediaStreamVideoTrack* track1 =
+      MediaStreamVideoTrack::GetVideoTrack(web_track1);
   EXPECT_CALL(*this, MockNotification());
   // This is equivalent to track.stop() in JavaScript.
-  track1->StopAndNotify(base::BindOnce(
-      &MediaStreamVideoSourceTest::MockNotification, base::Unretained(this)));
+  track1->StopAndNotify(WTF::Bind(&MediaStreamVideoSourceTest::MockNotification,
+                                  base::Unretained(this)));
 
-  blink::WebMediaStreamTrack track2 = CreateTrack("456");
+  WebMediaStreamTrack track2 = CreateTrack("456");
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
   EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
 }
 
-}  // namespace content
+}  // namespace blink
diff --git a/content/renderer/media/stream/media_stream_video_track_unittest.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc
similarity index 60%
rename from content/renderer/media/stream/media_stream_video_track_unittest.cc
rename to third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc
index dfa498e2..a5cd398 100644
--- a/content/renderer/media/stream/media_stream_video_track_unittest.cc
+++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc
@@ -6,23 +6,24 @@
 
 #include <utility>
 
-#include "base/bind.h"
-#include "base/bind_helpers.h"
 #include "base/callback.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/test/scoped_task_environment.h"
-#include "base/threading/thread_checker_impl.h"
-#include "content/child/child_process.h"
-#include "content/renderer/media/stream/mock_media_stream_video_sink.h"
+#include "base/threading/thread_checker.h"
 #include "media/base/video_frame.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/web/modules/mediastream/media_stream_video_track.h"
+#include "third_party/blink/public/web/modules/mediastream/mock_media_stream_video_sink.h"
 #include "third_party/blink/public/web/modules/mediastream/mock_media_stream_video_source.h"
 #include "third_party/blink/public/web/modules/mediastream/video_track_adapter_settings.h"
 #include "third_party/blink/public/web/web_heap.h"
+#include "third_party/blink/renderer/platform/testing/io_task_runner_testing_platform_support.h"
+#include "third_party/blink/renderer/platform/wtf/functional.h"
 
-namespace content {
+namespace blink {
+
+// To avoid symbol collisions in jumbo builds.
+namespace media_stream_video_track_test {
 
 const uint8_t kBlackValue = 0x00;
 const uint8_t kColorValue = 0xAB;
@@ -35,17 +36,13 @@
 
 class MediaStreamVideoTrackTest : public ::testing::Test {
  public:
-  MediaStreamVideoTrackTest()
-      : scoped_task_environment_(
-            base::test::ScopedTaskEnvironment::MainThreadType::UI),
-        mock_source_(nullptr),
-        source_started_(false) {}
+  MediaStreamVideoTrackTest() : mock_source_(nullptr), source_started_(false) {}
 
   ~MediaStreamVideoTrackTest() override {}
 
   void TearDown() override {
     blink_source_.Reset();
-    blink::WebHeap::CollectAllGarbageForTesting();
+    WebHeap::CollectAllGarbageForTesting();
   }
 
   void DeliverVideoFrameAndWaitForRenderer(
@@ -63,8 +60,8 @@
       MockMediaStreamVideoSink* sink) {
     const scoped_refptr<media::VideoFrame> frame =
         media::VideoFrame::CreateColorFrame(
-            gfx::Size(blink::MediaStreamVideoSource::kDefaultWidth,
-                      blink::MediaStreamVideoSource::kDefaultHeight),
+            gfx::Size(MediaStreamVideoSource::kDefaultWidth,
+                      MediaStreamVideoSource::kDefaultHeight),
             kColorValue, kColorValue, kColorValue, base::TimeDelta());
     DeliverVideoFrameAndWaitForRenderer(frame, sink);
   }
@@ -72,26 +69,24 @@
  protected:
   void InitializeSource() {
     blink_source_.Reset();
-    mock_source_ = new blink::MockMediaStreamVideoSource(
+    mock_source_ = new MockMediaStreamVideoSource(
         media::VideoCaptureFormat(
             gfx::Size(kMockSourceWidth, kMockSourceHeight), 30.0,
             media::PIXEL_FORMAT_I420),
         false);
-    blink_source_.Initialize(blink::WebString::FromASCII("dummy_source_id"),
-                             blink::WebMediaStreamSource::kTypeVideo,
-                             blink::WebString::FromASCII("dummy_source_name"),
+    blink_source_.Initialize(WebString::FromASCII("dummy_source_id"),
+                             WebMediaStreamSource::kTypeVideo,
+                             WebString::FromASCII("dummy_source_name"),
                              false /* remote */);
     blink_source_.SetPlatformSource(base::WrapUnique(mock_source_));
   }
 
   // Create a track that's associated with |mock_source_|.
-  blink::WebMediaStreamTrack CreateTrack() {
+  WebMediaStreamTrack CreateTrack() {
     const bool enabled = true;
-    blink::WebMediaStreamTrack track =
-        blink::MediaStreamVideoTrack::CreateVideoTrack(
-            mock_source_,
-            blink::WebPlatformMediaStreamSource::ConstraintsCallback(),
-            enabled);
+    WebMediaStreamTrack track = MediaStreamVideoTrack::CreateVideoTrack(
+        mock_source_, WebPlatformMediaStreamSource::ConstraintsCallback(),
+        enabled);
     if (!source_started_) {
       mock_source_->StartMockedSource();
       source_started_ = true;
@@ -101,14 +96,12 @@
 
   // Create a track that's associated with |mock_source_| and has the given
   // |adapter_settings|.
-  blink::WebMediaStreamTrack CreateTrackWithSettings(
-      const blink::VideoTrackAdapterSettings& adapter_settings) {
+  WebMediaStreamTrack CreateTrackWithSettings(
+      const VideoTrackAdapterSettings& adapter_settings) {
     const bool enabled = true;
-    blink::WebMediaStreamTrack track =
-        blink::MediaStreamVideoTrack::CreateVideoTrack(
-            mock_source_, adapter_settings, base::Optional<bool>(), false, 0.0,
-            blink::WebPlatformMediaStreamSource::ConstraintsCallback(),
-            enabled);
+    WebMediaStreamTrack track = MediaStreamVideoTrack::CreateVideoTrack(
+        mock_source_, adapter_settings, base::Optional<bool>(), false, 0.0,
+        WebPlatformMediaStreamSource::ConstraintsCallback(), enabled);
     if (!source_started_) {
       mock_source_->StartMockedSource();
       source_started_ = true;
@@ -118,38 +111,33 @@
 
   void UpdateVideoSourceToRespondToRequestRefreshFrame() {
     blink_source_.Reset();
-    mock_source_ = new blink::MockMediaStreamVideoSource(
+    mock_source_ = new MockMediaStreamVideoSource(
         media::VideoCaptureFormat(
             gfx::Size(kMockSourceWidth, kMockSourceHeight), 30.0,
             media::PIXEL_FORMAT_I420),
         true);
-    blink_source_.Initialize(blink::WebString::FromASCII("dummy_source_id"),
-                             blink::WebMediaStreamSource::kTypeVideo,
-                             blink::WebString::FromASCII("dummy_source_name"),
+    blink_source_.Initialize(WebString::FromASCII("dummy_source_id"),
+                             WebMediaStreamSource::kTypeVideo,
+                             WebString::FromASCII("dummy_source_name"),
                              false /* remote */);
     blink_source_.SetPlatformSource(base::WrapUnique(mock_source_));
   }
 
-  blink::MockMediaStreamVideoSource* mock_source() { return mock_source_; }
-  const blink::WebMediaStreamSource& blink_source() const {
-    return blink_source_;
-  }
+  MockMediaStreamVideoSource* mock_source() { return mock_source_; }
+  const WebMediaStreamSource& blink_source() const { return blink_source_; }
 
  private:
-  // The ScopedTaskEnvironment prevents the ChildProcess from leaking a
-  // ThreadPool.
-  const base::test::ScopedTaskEnvironment scoped_task_environment_;
-  const ChildProcess child_process_;
-  blink::WebMediaStreamSource blink_source_;
+  ScopedTestingPlatformSupport<IOTaskRunnerTestingPlatformSupport> platform_;
+  WebMediaStreamSource blink_source_;
   // |mock_source_| is owned by |webkit_source_|.
-  blink::MockMediaStreamVideoSource* mock_source_;
+  MockMediaStreamVideoSource* mock_source_;
   bool source_started_;
 };
 
 TEST_F(MediaStreamVideoTrackTest, AddAndRemoveSink) {
   InitializeSource();
   MockMediaStreamVideoSink sink;
-  blink::WebMediaStreamTrack track = CreateTrack();
+  WebMediaStreamTrack track = CreateTrack();
   sink.ConnectToTrack(track);
 
   DeliverDefaultSizeVideoFrameAndWaitForRenderer(&sink);
@@ -160,8 +148,8 @@
   sink.DisconnectFromTrack();
 
   scoped_refptr<media::VideoFrame> frame = media::VideoFrame::CreateBlackFrame(
-      gfx::Size(blink::MediaStreamVideoSource::kDefaultWidth,
-                blink::MediaStreamVideoSource::kDefaultHeight));
+      gfx::Size(MediaStreamVideoSource::kDefaultWidth,
+                MediaStreamVideoSource::kDefaultHeight));
   mock_source()->DeliverVideoFrame(frame);
   // Wait for the IO thread to complete delivering frames.
   base::RunLoop().RunUntilIdle();
@@ -174,14 +162,15 @@
       : callback_(std::move(callback)), correct_(correct) {}
 
   ~CheckThreadHelper() {
-    *correct_ = thread_checker_.CalledOnValidThread();
+    DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+    *correct_ = true;
     std::move(callback_).Run();
   }
 
  private:
   base::OnceClosure callback_;
   bool* correct_;
-  base::ThreadCheckerImpl thread_checker_;
+  THREAD_CHECKER(thread_checker_);
 };
 
 void CheckThreadVideoFrameReceiver(CheckThreadHelper* helper,
@@ -194,15 +183,14 @@
 TEST_F(MediaStreamVideoTrackTest, ResetCallbackOnThread) {
   InitializeSource();
   MockMediaStreamVideoSink sink;
-  blink::WebMediaStreamTrack track = CreateTrack();
+  WebMediaStreamTrack track = CreateTrack();
 
   base::RunLoop run_loop;
   bool correct = false;
   sink.ConnectToTrackWithCallback(
-      track,
-      base::Bind(&CheckThreadVideoFrameReceiver,
-                 base::Owned(new CheckThreadHelper(run_loop.QuitClosure(),
-                                                   &correct))));
+      track, WTF::BindRepeating(&CheckThreadVideoFrameReceiver,
+                                base::Owned(new CheckThreadHelper(
+                                    run_loop.QuitClosure(), &correct))));
   sink.DisconnectFromTrack();
   run_loop.Run();
   EXPECT_TRUE(correct) << "Not called on correct thread.";
@@ -211,11 +199,11 @@
 TEST_F(MediaStreamVideoTrackTest, SetEnabled) {
   InitializeSource();
   MockMediaStreamVideoSink sink;
-  blink::WebMediaStreamTrack track = CreateTrack();
+  WebMediaStreamTrack track = CreateTrack();
   sink.ConnectToTrack(track);
 
-  blink::MediaStreamVideoTrack* video_track =
-      blink::MediaStreamVideoTrack::GetVideoTrack(track);
+  MediaStreamVideoTrack* video_track =
+      MediaStreamVideoTrack::GetVideoTrack(track);
 
   DeliverDefaultSizeVideoFrameAndWaitForRenderer(&sink);
   EXPECT_EQ(1, sink.number_of_frames());
@@ -239,43 +227,43 @@
 TEST_F(MediaStreamVideoTrackTest, SourceStopped) {
   InitializeSource();
   MockMediaStreamVideoSink sink;
-  blink::WebMediaStreamTrack track = CreateTrack();
+  WebMediaStreamTrack track = CreateTrack();
   sink.ConnectToTrack(track);
-  EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive, sink.state());
+  EXPECT_EQ(WebMediaStreamSource::kReadyStateLive, sink.state());
 
   mock_source()->StopSource();
-  EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateEnded, sink.state());
+  EXPECT_EQ(WebMediaStreamSource::kReadyStateEnded, sink.state());
   sink.DisconnectFromTrack();
 }
 
 TEST_F(MediaStreamVideoTrackTest, StopLastTrack) {
   InitializeSource();
   MockMediaStreamVideoSink sink1;
-  blink::WebMediaStreamTrack track1 = CreateTrack();
+  WebMediaStreamTrack track1 = CreateTrack();
   sink1.ConnectToTrack(track1);
-  EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive, sink1.state());
+  EXPECT_EQ(WebMediaStreamSource::kReadyStateLive, sink1.state());
 
-  EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive,
+  EXPECT_EQ(WebMediaStreamSource::kReadyStateLive,
             blink_source().GetReadyState());
 
   MockMediaStreamVideoSink sink2;
-  blink::WebMediaStreamTrack track2 = CreateTrack();
+  WebMediaStreamTrack track2 = CreateTrack();
   sink2.ConnectToTrack(track2);
-  EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive, sink2.state());
+  EXPECT_EQ(WebMediaStreamSource::kReadyStateLive, sink2.state());
 
-  blink::MediaStreamVideoTrack* const native_track1 =
-      blink::MediaStreamVideoTrack::GetVideoTrack(track1);
+  MediaStreamVideoTrack* const native_track1 =
+      MediaStreamVideoTrack::GetVideoTrack(track1);
   native_track1->Stop();
-  EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateEnded, sink1.state());
-  EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive,
+  EXPECT_EQ(WebMediaStreamSource::kReadyStateEnded, sink1.state());
+  EXPECT_EQ(WebMediaStreamSource::kReadyStateLive,
             blink_source().GetReadyState());
   sink1.DisconnectFromTrack();
 
-  blink::MediaStreamVideoTrack* const native_track2 =
-      blink::MediaStreamVideoTrack::GetVideoTrack(track2);
+  MediaStreamVideoTrack* const native_track2 =
+      MediaStreamVideoTrack::GetVideoTrack(track2);
   native_track2->Stop();
-  EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateEnded, sink2.state());
-  EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateEnded,
+  EXPECT_EQ(WebMediaStreamSource::kReadyStateEnded, sink2.state());
+  EXPECT_EQ(WebMediaStreamSource::kReadyStateEnded,
             blink_source().GetReadyState());
   sink2.DisconnectFromTrack();
 }
@@ -283,7 +271,7 @@
 TEST_F(MediaStreamVideoTrackTest, CheckTrackRequestsFrame) {
   InitializeSource();
   UpdateVideoSourceToRespondToRequestRefreshFrame();
-  blink::WebMediaStreamTrack track = CreateTrack();
+  WebMediaStreamTrack track = CreateTrack();
 
   // Add sink and expect to get a frame.
   MockMediaStreamVideoSink sink;
@@ -300,17 +288,16 @@
 
 TEST_F(MediaStreamVideoTrackTest, GetSettings) {
   InitializeSource();
-  blink::WebMediaStreamTrack track = CreateTrack();
-  blink::MediaStreamVideoTrack* const native_track =
-      blink::MediaStreamVideoTrack::GetVideoTrack(track);
-  blink::WebMediaStreamTrack::Settings settings;
+  WebMediaStreamTrack track = CreateTrack();
+  MediaStreamVideoTrack* const native_track =
+      MediaStreamVideoTrack::GetVideoTrack(track);
+  WebMediaStreamTrack::Settings settings;
   native_track->GetSettings(settings);
   // These values come straight from the mock video track implementation.
   EXPECT_EQ(640, settings.width);
   EXPECT_EQ(480, settings.height);
   EXPECT_EQ(30.0, settings.frame_rate);
-  EXPECT_EQ(blink::WebMediaStreamTrack::FacingMode::kNone,
-            settings.facing_mode);
+  EXPECT_EQ(WebMediaStreamTrack::FacingMode::kNone, settings.facing_mode);
 }
 
 TEST_F(MediaStreamVideoTrackTest, GetSettingsWithAdjustment) {
@@ -318,45 +305,43 @@
   const int kAdjustedWidth = 600;
   const int kAdjustedHeight = 400;
   const double kAdjustedFrameRate = 20.0;
-  blink::VideoTrackAdapterSettings adapter_settings(
+  VideoTrackAdapterSettings adapter_settings(
       gfx::Size(kAdjustedWidth, kAdjustedHeight), 0.0, 10000.0,
       kAdjustedFrameRate);
-  blink::WebMediaStreamTrack track = CreateTrackWithSettings(adapter_settings);
-  blink::MediaStreamVideoTrack* const native_track =
-      blink::MediaStreamVideoTrack::GetVideoTrack(track);
-  blink::WebMediaStreamTrack::Settings settings;
+  WebMediaStreamTrack track = CreateTrackWithSettings(adapter_settings);
+  MediaStreamVideoTrack* const native_track =
+      MediaStreamVideoTrack::GetVideoTrack(track);
+  WebMediaStreamTrack::Settings settings;
   native_track->GetSettings(settings);
   EXPECT_EQ(kAdjustedWidth, settings.width);
   EXPECT_EQ(kAdjustedHeight, settings.height);
   EXPECT_EQ(kAdjustedFrameRate, settings.frame_rate);
-  EXPECT_EQ(blink::WebMediaStreamTrack::FacingMode::kNone,
-            settings.facing_mode);
+  EXPECT_EQ(WebMediaStreamTrack::FacingMode::kNone, settings.facing_mode);
 }
 
 TEST_F(MediaStreamVideoTrackTest, GetSettingsStopped) {
   InitializeSource();
-  blink::WebMediaStreamTrack track = CreateTrack();
-  blink::MediaStreamVideoTrack* const native_track =
-      blink::MediaStreamVideoTrack::GetVideoTrack(track);
+  WebMediaStreamTrack track = CreateTrack();
+  MediaStreamVideoTrack* const native_track =
+      MediaStreamVideoTrack::GetVideoTrack(track);
   native_track->Stop();
-  blink::WebMediaStreamTrack::Settings settings;
+  WebMediaStreamTrack::Settings settings;
   native_track->GetSettings(settings);
   EXPECT_EQ(-1, settings.width);
   EXPECT_EQ(-1, settings.height);
   EXPECT_EQ(-1, settings.frame_rate);
-  EXPECT_EQ(blink::WebMediaStreamTrack::FacingMode::kNone,
-            settings.facing_mode);
+  EXPECT_EQ(WebMediaStreamTrack::FacingMode::kNone, settings.facing_mode);
   EXPECT_TRUE(settings.device_id.IsNull());
 }
 
 TEST_F(MediaStreamVideoTrackTest, DeliverFramesAndGetSettings) {
   InitializeSource();
   MockMediaStreamVideoSink sink;
-  blink::WebMediaStreamTrack track = CreateTrack();
+  WebMediaStreamTrack track = CreateTrack();
   sink.ConnectToTrack(track);
-  blink::MediaStreamVideoTrack* const native_track =
-      blink::MediaStreamVideoTrack::GetVideoTrack(track);
-  blink::WebMediaStreamTrack::Settings settings;
+  MediaStreamVideoTrack* const native_track =
+      MediaStreamVideoTrack::GetVideoTrack(track);
+  WebMediaStreamTrack::Settings settings;
 
   auto frame1 = media::VideoFrame::CreateBlackFrame(gfx::Size(600, 400));
   DeliverVideoFrameAndWaitForRenderer(std::move(frame1), &sink);
@@ -373,4 +358,5 @@
   sink.DisconnectFromTrack();
 }
 
-}  // namespace content
+}  // namespace media_stream_video_track_test
+}  // namespace blink
diff --git a/content/renderer/media/stream/mock_media_stream_video_sink.cc b/third_party/blink/renderer/modules/mediastream/mock_media_stream_video_sink.cc
similarity index 73%
rename from content/renderer/media/stream/mock_media_stream_video_sink.cc
rename to third_party/blink/renderer/modules/mediastream/mock_media_stream_video_sink.cc
index 70d4f72..ec81de6c 100644
--- a/content/renderer/media/stream/mock_media_stream_video_sink.cc
+++ b/third_party/blink/renderer/modules/mediastream/mock_media_stream_video_sink.cc
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "content/renderer/media/stream/mock_media_stream_video_sink.h"
+#include "third_party/blink/public/web/modules/mediastream/mock_media_stream_video_sink.h"
 
-#include "base/bind.h"
 #include "media/base/bind_to_current_loop.h"
+#include "third_party/blink/renderer/platform/wtf/functional.h"
 
-namespace content {
+namespace blink {
 
 MockMediaStreamVideoSink::MockMediaStreamVideoSink()
     : number_of_frames_(0),
@@ -16,15 +16,13 @@
       state_(blink::WebMediaStreamSource::kReadyStateLive),
       weak_factory_(this) {}
 
-MockMediaStreamVideoSink::~MockMediaStreamVideoSink() {
-}
+MockMediaStreamVideoSink::~MockMediaStreamVideoSink() {}
 
 blink::VideoCaptureDeliverFrameCB
 MockMediaStreamVideoSink::GetDeliverFrameCB() {
   return media::BindToCurrentLoop(
-      base::Bind(
-          &MockMediaStreamVideoSink::DeliverVideoFrame,
-          weak_factory_.GetWeakPtr()));
+      WTF::BindRepeating(&MockMediaStreamVideoSink::DeliverVideoFrame,
+                         weak_factory_.GetWeakPtr()));
 }
 
 void MockMediaStreamVideoSink::DeliverVideoFrame(
@@ -46,4 +44,4 @@
   enabled_ = enabled;
 }
 
-}  // namespace content
+}  // namespace blink
diff --git a/content/renderer/media/stream/track_audio_renderer.cc b/third_party/blink/renderer/modules/mediastream/track_audio_renderer.cc
similarity index 79%
rename from content/renderer/media/stream/track_audio_renderer.cc
rename to third_party/blink/renderer/modules/mediastream/track_audio_renderer.cc
index baee3a3..a51ac652 100644
--- a/content/renderer/media/stream/track_audio_renderer.cc
+++ b/third_party/blink/renderer/modules/mediastream/track_audio_renderer.cc
@@ -2,24 +2,40 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "content/renderer/media/stream/track_audio_renderer.h"
+#include "third_party/blink/public/web/modules/mediastream/track_audio_renderer.h"
 
 #include <utility>
 
-#include "base/bind.h"
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/synchronization/lock.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/trace_event.h"
-#include "content/renderer/media/audio/audio_device_factory.h"
+#include "media/audio/audio_sink_parameters.h"
 #include "media/base/audio_bus.h"
 #include "media/base/audio_latency.h"
 #include "media/base/audio_shifter.h"
 #include "third_party/blink/public/platform/modules/mediastream/media_stream_audio_track.h"
+#include "third_party/blink/public/platform/platform.h"
+#include "third_party/blink/public/web/web_local_frame.h"
+#include "third_party/blink/renderer/core/frame/local_frame.h"
+#include "third_party/blink/renderer/modules/mediastream/media_stream_local_frame_wrapper.h"
+#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
+#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 
-namespace content {
+namespace WTF {
+
+template <>
+struct CrossThreadCopier<media::AudioParameters> {
+  STATIC_ONLY(CrossThreadCopier);
+  using Type = media::AudioParameters;
+  static Type Copy(Type pointer) { return pointer; }
+};
+
+}  // namespace WTF
+
+namespace blink {
 
 namespace {
 
@@ -35,8 +51,10 @@
     base::TimeDelta prior_elapsed_render_time,
     int64_t num_samples_rendered,
     int sample_rate) {
-  return prior_elapsed_render_time + base::TimeDelta::FromMicroseconds(
-      num_samples_rendered * base::Time::kMicrosecondsPerSecond / sample_rate);
+  return prior_elapsed_render_time +
+         base::TimeDelta::FromMicroseconds(num_samples_rendered *
+                                           base::Time::kMicrosecondsPerSecond /
+                                           sample_rate);
 }
 
 }  // namespace
@@ -71,7 +89,7 @@
   NOTIMPLEMENTED();
 }
 
-// blink::WebMediaStreamAudioSink implementation
+// WebMediaStreamAudioSink implementation
 void TrackAudioRenderer::OnData(const media::AudioBus& audio_bus,
                                 base::TimeTicks reference_time) {
   DCHECK(!reference_time.is_null());
@@ -111,26 +129,28 @@
 
   // Post a task on the main render thread to reconfigure the |sink_| with the
   // new format.
-  task_runner_->PostTask(
-      FROM_HERE,
-      base::BindOnce(&TrackAudioRenderer::ReconfigureSink, this, params));
+  PostCrossThreadTask(*task_runner_, FROM_HERE,
+                      CrossThreadBindOnce(&TrackAudioRenderer::ReconfigureSink,
+                                          WrapRefCounted(this), params));
 }
 
-TrackAudioRenderer::TrackAudioRenderer(
-    const blink::WebMediaStreamTrack& audio_track,
-    int playout_render_frame_id,
-    int session_id,
-    const std::string& device_id)
+TrackAudioRenderer::TrackAudioRenderer(const WebMediaStreamTrack& audio_track,
+                                       WebLocalFrame* playout_web_frame,
+                                       int session_id,
+                                       const std::string& device_id)
     : audio_track_(audio_track),
-      playout_render_frame_id_(playout_render_frame_id),
+      internal_playout_frame_(
+          std::make_unique<MediaStreamInternalFrameWrapper>(playout_web_frame)),
       session_id_(session_id),
-      task_runner_(base::ThreadTaskRunnerHandle::Get()),
+      task_runner_(
+          playout_web_frame->GetTaskRunner(blink::TaskType::kInternalMedia)),
       num_samples_rendered_(0),
       playing_(false),
       output_device_id_(device_id),
       volume_(0.0),
       sink_started_(false) {
-  DCHECK(blink::MediaStreamAudioTrack::From(audio_track_));
+  DCHECK(MediaStreamAudioTrack::From(audio_track_));
+  DCHECK(task_runner_->BelongsToCurrentThread());
   DVLOG(1) << "TrackAudioRenderer::TrackAudioRenderer()";
 }
 
@@ -146,12 +166,12 @@
   DCHECK_EQ(playing_, false);
 
   // We get audio data from |audio_track_|...
-  blink::WebMediaStreamAudioSink::AddToAudioTrack(this, audio_track_);
+  WebMediaStreamAudioSink::AddToAudioTrack(this, audio_track_);
   // ...and |sink_| will get audio data from us.
   DCHECK(!sink_);
-  sink_ = AudioDeviceFactory::NewAudioRendererSink(
-      blink::WebAudioDeviceSourceType::kNonRtcAudioTrack,
-      playout_render_frame_id_, {session_id_, output_device_id_});
+  sink_ = Platform::Current()->NewAudioRendererSink(
+      WebAudioDeviceSourceType::kNonRtcAudioTrack,
+      internal_playout_frame_->web_frame(), {session_id_, output_device_id_});
 
   base::AutoLock auto_lock(thread_lock_);
   prior_elapsed_render_time_ = base::TimeDelta();
@@ -179,7 +199,7 @@
   sink_started_ = false;
 
   // Ensure that the capturer stops feeding us with captured audio.
-  blink::WebMediaStreamAudioSink::RemoveFromAudioTrack(this, audio_track_);
+  WebMediaStreamAudioSink::RemoveFromAudioTrack(this, audio_track_);
 }
 
 void TrackAudioRenderer::Play() {
@@ -231,7 +251,7 @@
 
 bool TrackAudioRenderer::IsLocalRenderer() {
   DCHECK(task_runner_->BelongsToCurrentThread());
-  return blink::MediaStreamAudioTrack::From(audio_track_)->is_local_track();
+  return MediaStreamAudioTrack::From(audio_track_)->is_local_track();
 }
 
 void TrackAudioRenderer::SwitchOutputDevice(
@@ -246,9 +266,9 @@
   }
 
   scoped_refptr<media::AudioRendererSink> new_sink =
-      AudioDeviceFactory::NewAudioRendererSink(
-          blink::WebAudioDeviceSourceType::kNonRtcAudioTrack,
-          playout_render_frame_id_, {session_id_, device_id});
+      Platform::Current()->NewAudioRendererSink(
+          WebAudioDeviceSourceType::kNonRtcAudioTrack,
+          internal_playout_frame_->web_frame(), {session_id_, device_id});
 
   media::OutputDeviceStatus new_sink_status =
       new_sink->GetOutputDeviceInfo().device_status();
@@ -317,8 +337,8 @@
            << sink_params.AsHumanReadableString() << '}';
 
   // Specify the latency info to be passed to the browser side.
-  sink_params.set_latency_tag(AudioDeviceFactory::GetSourceLatencyType(
-      blink::WebAudioDeviceSourceType::kNonRtcAudioTrack));
+  sink_params.set_latency_tag(Platform::Current()->GetAudioSourceLatencyType(
+      WebAudioDeviceSourceType::kNonRtcAudioTrack));
 
   sink_->Initialize(sink_params, this);
   sink_->Start();
@@ -347,9 +367,9 @@
   // parameters.  Then, invoke MaybeStartSink() to restart everything again.
   sink_->Stop();
   sink_started_ = false;
-  sink_ = AudioDeviceFactory::NewAudioRendererSink(
-      blink::WebAudioDeviceSourceType::kNonRtcAudioTrack,
-      playout_render_frame_id_, {session_id_, output_device_id_});
+  sink_ = Platform::Current()->NewAudioRendererSink(
+      WebAudioDeviceSourceType::kNonRtcAudioTrack,
+      internal_playout_frame_->web_frame(), {session_id_, output_device_id_});
   MaybeStartSink();
 }
 
@@ -381,12 +401,11 @@
   audio_shifter_.reset();
 
   if (source_params_.IsValid()) {
-    prior_elapsed_render_time_ =
-        ComputeTotalElapsedRenderTime(prior_elapsed_render_time_,
-                                      num_samples_rendered_,
-                                      source_params_.sample_rate());
+    prior_elapsed_render_time_ = ComputeTotalElapsedRenderTime(
+        prior_elapsed_render_time_, num_samples_rendered_,
+        source_params_.sample_rate());
     num_samples_rendered_ = 0;
   }
 }
 
-}  // namespace content
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_handle.cc b/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_handle.cc
index 29ce19b..aaa45db 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_handle.cc
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_handle.cc
@@ -27,7 +27,8 @@
 
 NativeFileSystemDirectoryHandle::NativeFileSystemDirectoryHandle(
     const String& name,
-    mojom::blink::NativeFileSystemDirectoryHandlePtr mojo_ptr)
+    RevocableInterfacePtr<mojom::blink::NativeFileSystemDirectoryHandle>
+        mojo_ptr)
     : NativeFileSystemHandle(name), mojo_ptr_(std::move(mojo_ptr)) {
   DCHECK(mojo_ptr_);
 }
@@ -45,10 +46,18 @@
           [](ScriptPromiseResolver* resolver, const String& name,
              NativeFileSystemErrorPtr result,
              mojom::blink::NativeFileSystemFileHandlePtr handle) {
+            ExecutionContext* context = resolver->GetExecutionContext();
+            if (!context)
+              return;
             if (result->error_code == base::File::FILE_OK) {
               resolver->Resolve(
                   MakeGarbageCollected<NativeFileSystemFileHandle>(
-                      name, std::move(handle)));
+                      name,
+                      RevocableInterfacePtr<
+                          mojom::blink::NativeFileSystemFileHandle>(
+                          handle.PassInterface(),
+                          context->GetInterfaceInvalidator(),
+                          context->GetTaskRunner(TaskType::kMiscPlatformAPI))));
             } else {
               resolver->Reject(
                   file_error::CreateDOMException(result->error_code));
@@ -72,10 +81,18 @@
           [](ScriptPromiseResolver* resolver, const String& name,
              NativeFileSystemErrorPtr result,
              mojom::blink::NativeFileSystemDirectoryHandlePtr handle) {
+            ExecutionContext* context = resolver->GetExecutionContext();
+            if (!context)
+              return;
             if (result->error_code == base::File::FILE_OK) {
               resolver->Resolve(
                   MakeGarbageCollected<NativeFileSystemDirectoryHandle>(
-                      name, std::move(handle)));
+                      name,
+                      RevocableInterfacePtr<
+                          mojom::blink::NativeFileSystemDirectoryHandle>(
+                          handle.PassInterface(),
+                          context->GetInterfaceInvalidator(),
+                          context->GetTaskRunner(TaskType::kMiscPlatformAPI))));
             } else {
               resolver->Reject(
                   file_error::CreateDOMException(result->error_code));
@@ -96,8 +113,8 @@
 
 ScriptValue NativeFileSystemDirectoryHandle::getEntries(
     ScriptState* script_state) {
-  auto* iterator =
-      MakeGarbageCollected<NativeFileSystemDirectoryIterator>(this);
+  auto* iterator = MakeGarbageCollected<NativeFileSystemDirectoryIterator>(
+      this, ExecutionContext::From(script_state));
   auto* isolate = script_state->GetIsolate();
   auto context = script_state->GetContext();
   v8::Local<v8::Object> result = v8::Object::New(isolate);
@@ -160,10 +177,18 @@
          mojom::blink::NativeFileSystemManagerPtr,
          NativeFileSystemErrorPtr result,
          mojom::blink::NativeFileSystemDirectoryHandlePtr handle) {
+        ExecutionContext* context = resolver->GetExecutionContext();
+        if (!context)
+          return;
         if (result->error_code == base::File::FILE_OK) {
           resolver->Resolve(
               MakeGarbageCollected<NativeFileSystemDirectoryHandle>(
-                  kSandboxRootDirectoryName, std::move(handle)));
+                  kSandboxRootDirectoryName,
+                  RevocableInterfacePtr<
+                      mojom::blink::NativeFileSystemDirectoryHandle>(
+                      handle.PassInterface(),
+                      context->GetInterfaceInvalidator(),
+                      context->GetTaskRunner(TaskType::kMiscPlatformAPI))));
         } else {
           resolver->Reject(file_error::CreateDOMException(result->error_code));
         }
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_handle.h b/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_handle.h
index 8af1c6f..e74ca554 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_handle.h
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_handle.h
@@ -7,6 +7,7 @@
 
 #include "third_party/blink/public/mojom/native_file_system/native_file_system_directory_handle.mojom-blink.h"
 #include "third_party/blink/renderer/modules/native_file_system/native_file_system_handle.h"
+#include "third_party/blink/renderer/platform/mojo/revocable_interface_ptr.h"
 
 namespace blink {
 class FileSystemGetDirectoryOptions;
@@ -20,7 +21,7 @@
  public:
   NativeFileSystemDirectoryHandle(
       const String& name,
-      mojom::blink::NativeFileSystemDirectoryHandlePtr);
+      RevocableInterfacePtr<mojom::blink::NativeFileSystemDirectoryHandle>);
 
   bool isDirectory() const override { return true; }
 
@@ -52,7 +53,8 @@
       bool writable,
       base::OnceCallback<void(mojom::blink::PermissionStatus)>) override;
 
-  mojom::blink::NativeFileSystemDirectoryHandlePtr mojo_ptr_;
+  RevocableInterfacePtr<mojom::blink::NativeFileSystemDirectoryHandle>
+      mojo_ptr_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_iterator.cc b/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_iterator.cc
index 9f7574c..f0016994 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_iterator.cc
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_iterator.cc
@@ -15,8 +15,9 @@
 namespace blink {
 
 NativeFileSystemDirectoryIterator::NativeFileSystemDirectoryIterator(
-    NativeFileSystemDirectoryHandle* directory)
-    : directory_(directory) {
+    NativeFileSystemDirectoryHandle* directory,
+    ExecutionContext* execution_context)
+    : ContextLifecycleObserver(execution_context), directory_(directory) {
   directory_->MojoHandle()->GetEntries(
       WTF::Bind(&NativeFileSystemDirectoryIterator::OnGotEntries,
                 WrapWeakPersistent(this)));
@@ -50,6 +51,7 @@
 
 void NativeFileSystemDirectoryIterator::Trace(Visitor* visitor) {
   ScriptWrappable::Trace(visitor);
+  ContextLifecycleObserver::Trace(visitor);
   visitor->Trace(entries_);
   visitor->Trace(pending_next_);
   visitor->Trace(directory_);
@@ -58,6 +60,8 @@
 void NativeFileSystemDirectoryIterator::OnGotEntries(
     mojom::blink::NativeFileSystemErrorPtr result,
     Vector<mojom::blink::NativeFileSystemEntryPtr> entries) {
+  if (!GetExecutionContext())
+    return;
   if (result->error_code != base::File::FILE_OK) {
     error_ = result->error_code;
     if (pending_next_) {
@@ -67,8 +71,8 @@
     return;
   }
   for (auto& e : entries) {
-    entries_.push_back(
-        NativeFileSystemHandle::CreateFromMojoEntry(std::move(e)));
+    entries_.push_back(NativeFileSystemHandle::CreateFromMojoEntry(
+        std::move(e), GetExecutionContext()));
   }
   waiting_for_more_entries_ = false;
   if (pending_next_) {
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_iterator.h b/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_iterator.h
index e6d7db3e..65dcc19 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_iterator.h
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_directory_iterator.h
@@ -8,6 +8,7 @@
 #include "base/files/file.h"
 #include "third_party/blink/public/mojom/native_file_system/native_file_system_directory_handle.mojom-blink.h"
 #include "third_party/blink/public/mojom/native_file_system/native_file_system_error.mojom-blink.h"
+#include "third_party/blink/renderer/core/execution_context/context_lifecycle_observer.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
 
 namespace blink {
@@ -17,12 +18,15 @@
 class ScriptPromiseResolver;
 class ScriptState;
 
-class NativeFileSystemDirectoryIterator final : public ScriptWrappable {
+class NativeFileSystemDirectoryIterator final
+    : public ScriptWrappable,
+      public ContextLifecycleObserver {
   DEFINE_WRAPPERTYPEINFO();
+  USING_GARBAGE_COLLECTED_MIXIN(NativeFileSystemDirectoryIterator);
 
  public:
-  explicit NativeFileSystemDirectoryIterator(
-      NativeFileSystemDirectoryHandle* directory);
+  NativeFileSystemDirectoryIterator(NativeFileSystemDirectoryHandle* directory,
+                                    ExecutionContext* execution_context);
 
   ScriptPromise next(ScriptState*);
   // TODO(mek): This return method should cancel the backend directory iteration
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_file_handle.cc b/third_party/blink/renderer/modules/native_file_system/native_file_system_file_handle.cc
index efd2d85..aadd59b 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_file_handle.cc
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_file_handle.cc
@@ -21,7 +21,7 @@
 
 NativeFileSystemFileHandle::NativeFileSystemFileHandle(
     const String& name,
-    mojom::blink::NativeFileSystemFileHandlePtr mojo_ptr)
+    RevocableInterfacePtr<mojom::blink::NativeFileSystemFileHandle> mojo_ptr)
     : NativeFileSystemHandle(name), mojo_ptr_(std::move(mojo_ptr)) {
   DCHECK(mojo_ptr_);
 }
@@ -35,9 +35,14 @@
       [](ScriptPromiseResolver* resolver,
          mojom::blink::NativeFileSystemErrorPtr result,
          mojom::blink::NativeFileSystemFileWriterPtr writer) {
+        ExecutionContext* context = resolver->GetExecutionContext();
+        if (!context)
+          return;
         if (result->error_code == base::File::FILE_OK) {
-          resolver->Resolve(
-              MakeGarbageCollected<NativeFileSystemWriter>(std::move(writer)));
+          resolver->Resolve(MakeGarbageCollected<NativeFileSystemWriter>(
+              RevocableInterfacePtr<mojom::blink::NativeFileSystemFileWriter>(
+                  writer.PassInterface(), context->GetInterfaceInvalidator(),
+                  context->GetTaskRunner(TaskType::kMiscPlatformAPI))));
         } else {
           resolver->Reject(file_error::CreateDOMException(result->error_code));
         }
@@ -56,10 +61,15 @@
       [](ScriptPromiseResolver* resolver,
          mojom::blink::NativeFileSystemErrorPtr result,
          mojom::blink::NativeFileSystemFileWriterPtr writer) {
+        ExecutionContext* context = resolver->GetExecutionContext();
+        if (!context)
+          return;
         if (result->error_code == base::File::FILE_OK) {
-          resolver->Resolve(
-              MakeGarbageCollected<NativeFileSystemWritableFileStream>(
-                  std::move(writer)));
+          resolver->Resolve(MakeGarbageCollected<
+                            NativeFileSystemWritableFileStream>(
+              RevocableInterfacePtr<mojom::blink::NativeFileSystemFileWriter>(
+                  writer.PassInterface(), context->GetInterfaceInvalidator(),
+                  context->GetTaskRunner(TaskType::kMiscPlatformAPI))));
         } else {
           resolver->Reject(file_error::CreateDOMException(result->error_code));
         }
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_file_handle.h b/third_party/blink/renderer/modules/native_file_system/native_file_system_file_handle.h
index 53a13fc..88586f5f 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_file_handle.h
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_file_handle.h
@@ -7,6 +7,7 @@
 
 #include "third_party/blink/public/mojom/native_file_system/native_file_system_file_handle.mojom-blink.h"
 #include "third_party/blink/renderer/modules/native_file_system/native_file_system_handle.h"
+#include "third_party/blink/renderer/platform/mojo/revocable_interface_ptr.h"
 
 namespace blink {
 
@@ -14,8 +15,9 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  NativeFileSystemFileHandle(const String& name,
-                             mojom::blink::NativeFileSystemFileHandlePtr);
+  NativeFileSystemFileHandle(
+      const String& name,
+      RevocableInterfacePtr<mojom::blink::NativeFileSystemFileHandle>);
 
   bool isFile() const override { return true; }
 
@@ -37,7 +39,7 @@
       bool writable,
       base::OnceCallback<void(mojom::blink::PermissionStatus)>) override;
 
-  mojom::blink::NativeFileSystemFileHandlePtr mojo_ptr_;
+  RevocableInterfacePtr<mojom::blink::NativeFileSystemFileHandle> mojo_ptr_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_handle.cc b/third_party/blink/renderer/modules/native_file_system/native_file_system_handle.cc
index dfa2fc518..acb20da0 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_handle.cc
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_handle.cc
@@ -11,6 +11,7 @@
 #include "third_party/blink/renderer/modules/native_file_system/file_system_handle_permission_descriptor.h"
 #include "third_party/blink/renderer/modules/native_file_system/native_file_system_directory_handle.h"
 #include "third_party/blink/renderer/modules/native_file_system/native_file_system_file_handle.h"
+#include "third_party/blink/renderer/platform/mojo/revocable_interface_ptr.h"
 #include "third_party/blink/renderer/platform/wtf/functional.h"
 
 namespace blink {
@@ -22,15 +23,22 @@
 
 // static
 NativeFileSystemHandle* NativeFileSystemHandle::CreateFromMojoEntry(
-    mojom::blink::NativeFileSystemEntryPtr e) {
+    mojom::blink::NativeFileSystemEntryPtr e,
+    ExecutionContext* execution_context) {
   if (e->entry_handle->is_file()) {
     return MakeGarbageCollected<NativeFileSystemFileHandle>(
-        e->name, mojom::blink::NativeFileSystemFileHandlePtr(
-                     std::move(e->entry_handle->get_file())));
+        e->name,
+        RevocableInterfacePtr<mojom::blink::NativeFileSystemFileHandle>(
+            std::move(e->entry_handle->get_file()),
+            execution_context->GetInterfaceInvalidator(),
+            execution_context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
   }
   return MakeGarbageCollected<NativeFileSystemDirectoryHandle>(
-      e->name, mojom::blink::NativeFileSystemDirectoryHandlePtr(
-                   std::move(e->entry_handle->get_directory())));
+      e->name,
+      RevocableInterfacePtr<mojom::blink::NativeFileSystemDirectoryHandle>(
+          std::move(e->entry_handle->get_directory()),
+          execution_context->GetInterfaceInvalidator(),
+          execution_context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
 }
 
 namespace {
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_handle.h b/third_party/blink/renderer/modules/native_file_system/native_file_system_handle.h
index b07a83c..71f2bceb 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_handle.h
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_handle.h
@@ -16,6 +16,7 @@
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
 namespace blink {
+class ExecutionContext;
 class FileSystemHandlePermissionDescriptor;
 
 class NativeFileSystemHandle : public ScriptWrappable {
@@ -24,7 +25,8 @@
  public:
   explicit NativeFileSystemHandle(const String& name);
   static NativeFileSystemHandle* CreateFromMojoEntry(
-      mojom::blink::NativeFileSystemEntryPtr);
+      mojom::blink::NativeFileSystemEntryPtr,
+      ExecutionContext* execution_context);
 
   virtual bool isFile() const { return false; }
   virtual bool isDirectory() const { return false; }
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_writable_file_stream.cc b/third_party/blink/renderer/modules/native_file_system/native_file_system_writable_file_stream.cc
index a8cc8cd8..395abea1 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_writable_file_stream.cc
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_writable_file_stream.cc
@@ -17,7 +17,7 @@
 namespace blink {
 
 NativeFileSystemWritableFileStream::NativeFileSystemWritableFileStream(
-    mojom::blink::NativeFileSystemFileWriterPtr mojo_ptr)
+    RevocableInterfacePtr<mojom::blink::NativeFileSystemFileWriter> mojo_ptr)
     : mojo_ptr_(std::move(mojo_ptr)) {
   DCHECK(mojo_ptr_);
 }
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_writable_file_stream.h b/third_party/blink/renderer/modules/native_file_system/native_file_system_writable_file_stream.h
index 9a17156..2f17f7d 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_writable_file_stream.h
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_writable_file_stream.h
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/bindings/core/v8/array_buffer_or_array_buffer_view_or_blob_or_usv_string.h"
 #include "third_party/blink/renderer/core/streams/writable_stream.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
+#include "third_party/blink/renderer/platform/mojo/revocable_interface_ptr.h"
 
 namespace blink {
 
@@ -24,7 +25,7 @@
 
  public:
   explicit NativeFileSystemWritableFileStream(
-      mojom::blink::NativeFileSystemFileWriterPtr);
+      RevocableInterfacePtr<mojom::blink::NativeFileSystemFileWriter>);
 
   void Trace(Visitor* visitor) override;
 
@@ -52,7 +53,7 @@
                      uint64_t bytes_written);
   void TruncateComplete(mojom::blink::NativeFileSystemErrorPtr result);
 
-  mojom::blink::NativeFileSystemFileWriterPtr mojo_ptr_;
+  RevocableInterfacePtr<mojom::blink::NativeFileSystemFileWriter> mojo_ptr_;
 
   Member<ScriptPromiseResolver> pending_operation_;
 };
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_writer.cc b/third_party/blink/renderer/modules/native_file_system/native_file_system_writer.cc
index 297b541..c7c410a 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_writer.cc
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_writer.cc
@@ -25,7 +25,7 @@
 namespace blink {
 
 NativeFileSystemWriter::NativeFileSystemWriter(
-    mojom::blink::NativeFileSystemFileWriterPtr mojo_ptr)
+    RevocableInterfacePtr<mojom::blink::NativeFileSystemFileWriter> mojo_ptr)
     : mojo_ptr_(std::move(mojo_ptr)) {
   DCHECK(mojo_ptr_);
 }
diff --git a/third_party/blink/renderer/modules/native_file_system/native_file_system_writer.h b/third_party/blink/renderer/modules/native_file_system/native_file_system_writer.h
index 43a6ec2..ba363d29 100644
--- a/third_party/blink/renderer/modules/native_file_system/native_file_system_writer.h
+++ b/third_party/blink/renderer/modules/native_file_system/native_file_system_writer.h
@@ -9,6 +9,7 @@
 #include "third_party/blink/public/mojom/native_file_system/native_file_system_file_writer.mojom-blink.h"
 #include "third_party/blink/renderer/bindings/core/v8/array_buffer_or_array_buffer_view_or_blob_or_usv_string.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
+#include "third_party/blink/renderer/platform/mojo/revocable_interface_ptr.h"
 
 namespace blink {
 
@@ -25,7 +26,8 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  explicit NativeFileSystemWriter(mojom::blink::NativeFileSystemFileWriterPtr);
+  explicit NativeFileSystemWriter(
+      RevocableInterfacePtr<mojom::blink::NativeFileSystemFileWriter>);
 
   ScriptPromise write(ScriptState*,
                       uint64_t position,
@@ -50,7 +52,7 @@
   void TruncateComplete(mojom::blink::NativeFileSystemErrorPtr result);
   void CloseComplete(mojom::blink::NativeFileSystemErrorPtr result);
 
-  mojom::blink::NativeFileSystemFileWriterPtr mojo_ptr_;
+  RevocableInterfacePtr<mojom::blink::NativeFileSystemFileWriter> mojo_ptr_;
   Member<NativeFileSystemFileHandle> file_;
 
   Member<ScriptPromiseResolver> pending_operation_;
diff --git a/third_party/blink/renderer/modules/native_file_system/window_native_file_system.cc b/third_party/blink/renderer/modules/native_file_system/window_native_file_system.cc
index 75885e6..3155d3f 100644
--- a/third_party/blink/renderer/modules/native_file_system/window_native_file_system.cc
+++ b/third_party/blink/renderer/modules/native_file_system/window_native_file_system.cc
@@ -110,6 +110,9 @@
              const ChooseFileSystemEntriesOptions* options,
              mojom::blink::NativeFileSystemErrorPtr file_operation_result,
              Vector<mojom::blink::NativeFileSystemEntryPtr> entries) {
+            ExecutionContext* context = resolver->GetExecutionContext();
+            if (!context)
+              return;
             if (file_operation_result->error_code != base::File::FILE_OK) {
               resolver->Reject(file_error::CreateDOMException(
                   file_operation_result->error_code));
@@ -120,13 +123,13 @@
               results.ReserveInitialCapacity(entries.size());
               for (auto& entry : entries) {
                 results.push_back(NativeFileSystemHandle::CreateFromMojoEntry(
-                    std::move(entry)));
+                    std::move(entry), context));
               }
               resolver->Resolve(results);
             } else {
               DCHECK_EQ(1u, entries.size());
               resolver->Resolve(NativeFileSystemHandle::CreateFromMojoEntry(
-                  std::move(entries[0])));
+                  std::move(entries[0]), context));
             }
           },
           WrapPersistent(resolver), std::move(manager),
diff --git a/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.cc b/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.cc
index b969e52..85d6856 100644
--- a/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.cc
+++ b/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.cc
@@ -76,6 +76,16 @@
     return false;
   }
 
+  // Although not enforced in the spec the spec gives freedom to do additional
+  // security checks. Bugs have arisen from allowing non-http/https URLs, e.g.
+  // https://crbug.com/971917 and it doesn't make a lot of sense to support
+  // them.
+  if (!kurl.ProtocolIsInHTTPFamily()) {
+    exception_state.ThrowSecurityError(
+        "The scheme of the url provided must be the 'http' or 'https'.");
+    return false;
+  }
+
   // The specification says that the API throws SecurityError exception if the
   // URL's origin differs from the document's origin.
   if (!document.GetSecurityOrigin()->CanRequest(kurl)) {
diff --git a/third_party/blink/renderer/modules/payments/basic_card_request.idl b/third_party/blink/renderer/modules/payments/basic_card_request.idl
index 9bd0aeb9..8269e80 100644
--- a/third_party/blink/renderer/modules/payments/basic_card_request.idl
+++ b/third_party/blink/renderer/modules/payments/basic_card_request.idl
@@ -12,5 +12,5 @@
 
 dictionary BasicCardRequest {
     sequence<DOMString> supportedNetworks;
-    sequence<BasicCardType> supportedTypes;
+    [MeasureAs=BasicCardType] sequence<BasicCardType> supportedTypes;
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_host.cc b/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_host.cc
index ef4d7fa..69d8565 100644
--- a/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_host.cc
+++ b/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_host.cc
@@ -77,8 +77,7 @@
 
   P2PQuicStream* p2p_stream = quic_transport_->CreateStream();
   stream_host->Initialize(this, p2p_stream);
-  stream_hosts_.insert(
-      std::make_pair(stream_host.get(), std::move(stream_host)));
+  stream_hosts_.insert(stream_host.get(), std::move(stream_host));
 }
 
 void QuicTransportHost::SendDatagram(Vector<uint8_t> datagram) {
@@ -140,8 +139,7 @@
 
   stream_host->Initialize(this, p2p_stream);
 
-  stream_hosts_.insert(
-      std::make_pair(stream_host.get(), std::move(stream_host)));
+  stream_hosts_.insert(stream_host.get(), std::move(stream_host));
 
   PostCrossThreadTask(
       *proxy_thread(), FROM_HERE,
diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_host.h b/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_host.h
index 2969484..bf6fd6c0 100644
--- a/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_host.h
+++ b/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_host.h
@@ -5,8 +5,6 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_QUIC_TRANSPORT_HOST_H_
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_QUIC_TRANSPORT_HOST_H_
 
-#include <unordered_map>
-
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/single_thread_task_runner.h"
@@ -14,6 +12,7 @@
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_transport.h"
 #include "third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_transport_factory.h"
+#include "third_party/blink/renderer/platform/wtf/hash_map.h"
 
 namespace blink {
 
@@ -82,8 +81,7 @@
   std::unique_ptr<P2PQuicTransport> quic_transport_;
   base::WeakPtr<QuicTransportProxy> proxy_;
   IceTransportHost* ice_transport_host_ = nullptr;
-  std::unordered_map<QuicStreamHost*, std::unique_ptr<QuicStreamHost>>
-      stream_hosts_;
+  HashMap<QuicStreamHost*, std::unique_ptr<QuicStreamHost>> stream_hosts_;
 
   THREAD_CHECKER(thread_checker_);
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_proxy.cc b/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_proxy.cc
index 8c10789..3af56de 100644
--- a/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_proxy.cc
+++ b/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_proxy.cc
@@ -101,8 +101,7 @@
                                           WTF::Passed(std::move(stream_host))));
 
   QuicStreamProxy* stream_proxy_ptr = stream_proxy.get();
-  stream_proxies_.insert(
-      std::make_pair(stream_proxy_ptr, std::move(stream_proxy)));
+  stream_proxies_.insert(stream_proxy_ptr, std::move(stream_proxy));
   return stream_proxy_ptr;
 }
 
@@ -159,8 +158,7 @@
   stream_proxy->Initialize(this);
 
   QuicStreamProxy* stream_proxy_ptr = stream_proxy.get();
-  stream_proxies_.insert(
-      std::make_pair(stream_proxy_ptr, std::move(stream_proxy)));
+  stream_proxies_.insert(stream_proxy_ptr, std::move(stream_proxy));
   delegate_->OnStream(stream_proxy_ptr);
 }
 
diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_proxy.h b/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_proxy.h
index fd33e8a..387b2db 100644
--- a/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_proxy.h
+++ b/third_party/blink/renderer/modules/peerconnection/adapters/quic_transport_proxy.h
@@ -5,8 +5,6 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_QUIC_TRANSPORT_PROXY_H_
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_QUIC_TRANSPORT_PROXY_H_
 
-#include <unordered_map>
-
 #include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/single_thread_task_runner.h"
@@ -15,6 +13,7 @@
 #include "third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_transport_factory.h"
 #include "third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_transport_stats.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
+#include "third_party/blink/renderer/platform/wtf/hash_map.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 #include "third_party/webrtc/api/scoped_refptr.h"
 
@@ -113,8 +112,7 @@
   std::unique_ptr<QuicTransportHost, base::OnTaskRunnerDeleter> host_;
   Delegate* const delegate_;
   IceTransportProxy* ice_transport_proxy_;
-  std::unordered_map<QuicStreamProxy*, std::unique_ptr<QuicStreamProxy>>
-      stream_proxies_;
+  HashMap<QuicStreamProxy*, std::unique_ptr<QuicStreamProxy>> stream_proxies_;
 
   THREAD_CHECKER(thread_checker_);
 
diff --git a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.cc b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.cc
index 2767a28..d594908 100644
--- a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.cc
+++ b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/bind_helpers.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
 #include "services/service_manager/public/cpp/interface_provider.h"
 #include "third_party/blink/public/common/manifest/web_display_mode.h"
 #include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-blink.h"
@@ -163,13 +164,14 @@
 
   video_element->GetWebMediaPlayer()->OnRequestPictureInPicture();
 
-  session_observer_binding_.Close();
+  session_observer_receiver_.reset();
 
-  mojom::blink::PictureInPictureSessionObserverPtr session_observer;
+  mojo::PendingRemote<mojom::blink::PictureInPictureSessionObserver>
+      session_observer;
   scoped_refptr<base::SingleThreadTaskRunner> task_runner =
       element->GetDocument().GetTaskRunner(TaskType::kMediaElementEvent);
-  session_observer_binding_.Bind(
-      mojo::MakeRequest(&session_observer, task_runner), task_runner);
+  session_observer_receiver_.Bind(
+      session_observer.InitWithNewPipeAndPassReceiver(), task_runner);
 
   picture_in_picture_service_->StartSession(
       video_element->GetWebMediaPlayer()->GetDelegateId(),
@@ -185,12 +187,12 @@
 void PictureInPictureControllerImpl::OnEnteredPictureInPicture(
     HTMLVideoElement* element,
     ScriptPromiseResolver* resolver,
-    mojom::blink::PictureInPictureSessionPtr session_ptr,
+    mojo::PendingRemote<mojom::blink::PictureInPictureSession> session_remote,
     const WebSize& picture_in_picture_window_size) {
   // If |session_ptr| is null then Picture-in-Picture is not supported by the
   // browser. We should rarely see this because we should have already rejected
   // with |kDisabledBySystem|.
-  if (!session_ptr) {
+  if (!session_remote) {
     if (resolver) {
       resolver->Reject(MakeGarbageCollected<DOMException>(
           DOMExceptionCode::kNotSupportedError,
@@ -200,7 +202,9 @@
     return;
   }
 
-  picture_in_picture_session_ = std::move(session_ptr);
+  picture_in_picture_session_ =
+      mojo::Remote<mojom::blink::PictureInPictureSession>(
+          std::move(session_remote));
 
   if (IsElementAllowed(*element) != Status::kEnabled) {
     if (resolver) {
@@ -239,7 +243,7 @@
   picture_in_picture_session_->Stop(
       WTF::Bind(&PictureInPictureControllerImpl::OnExitedPictureInPicture,
                 WrapPersistent(this), WrapPersistent(resolver)));
-  session_observer_binding_.Close();
+  session_observer_receiver_.reset();
 }
 
 void PictureInPictureControllerImpl::OnExitedPictureInPicture(
@@ -371,7 +375,7 @@
 
 void PictureInPictureControllerImpl::ContextDestroyed(Document*) {
   picture_in_picture_service_.reset();
-  session_observer_binding_.Close();
+  session_observer_receiver_.reset();
 }
 
 void PictureInPictureControllerImpl::OnPictureInPictureStateChange() {
@@ -416,7 +420,7 @@
     Document& document)
     : PictureInPictureController(document),
       PageVisibilityObserver(document.GetPage()),
-      session_observer_binding_(this) {}
+      session_observer_receiver_(this) {}
 
 bool PictureInPictureControllerImpl::EnsureService() {
   if (picture_in_picture_service_)
@@ -429,7 +433,7 @@
       GetSupplementable()->GetFrame()->GetTaskRunner(
           TaskType::kMediaElementEvent);
   GetSupplementable()->GetFrame()->GetInterfaceProvider().GetInterface(
-      mojo::MakeRequest(&picture_in_picture_service_, task_runner));
+      picture_in_picture_service_.BindNewPipeAndPassReceiver(task_runner));
   return true;
 }
 
diff --git a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h
index f48b7a183..46ad6ac 100644
--- a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h
+++ b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h
@@ -6,6 +6,9 @@
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_PICTURE_IN_PICTURE_PICTURE_IN_PICTURE_CONTROLLER_IMPL_H_
 
 #include "base/macros.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
 #include "third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom-blink.h"
 #include "third_party/blink/renderer/core/dom/document_shutdown_observer.h"
 #include "third_party/blink/renderer/core/frame/picture_in_picture_controller.h"
@@ -97,16 +100,16 @@
 
   void Trace(blink::Visitor*) override;
 
-  mojo::Binding<mojom::blink::PictureInPictureSessionObserver>&
-  GetSessionObserverBindingForTesting() {
-    return session_observer_binding_;
+  bool IsSessionObserverReceiverBoundForTesting() {
+    return session_observer_receiver_.is_bound();
   }
 
  private:
-  void OnEnteredPictureInPicture(HTMLVideoElement*,
-                                 ScriptPromiseResolver*,
-                                 mojom::blink::PictureInPictureSessionPtr,
-                                 const WebSize&);
+  void OnEnteredPictureInPicture(
+      HTMLVideoElement*,
+      ScriptPromiseResolver*,
+      mojo::PendingRemote<mojom::blink::PictureInPictureSession>,
+      const WebSize&);
   void OnExitedPictureInPicture(ScriptPromiseResolver*) override;
 
   // Makes sure the `picture_in_picture_service_` is set. Returns whether it was
@@ -128,14 +131,16 @@
   Member<PictureInPictureWindow> picture_in_picture_window_;
 
   // Mojo bindings for the session observer interface implemented by |this|.
-  mojo::Binding<mojom::blink::PictureInPictureSessionObserver>
-      session_observer_binding_;
+  mojo::Receiver<mojom::blink::PictureInPictureSessionObserver>
+      session_observer_receiver_;
 
   // Picture-in-Picture service living in the browser process.
-  mojom::blink::PictureInPictureServicePtr picture_in_picture_service_;
+  mojo::Remote<mojom::blink::PictureInPictureService>
+      picture_in_picture_service_;
 
   // Instance of the Picture-in-Picture session sent back by the service.
-  mojom::blink::PictureInPictureSessionPtr picture_in_picture_session_;
+  mojo::Remote<mojom::blink::PictureInPictureSession>
+      picture_in_picture_session_;
 
   DISALLOW_COPY_AND_ASSIGN(PictureInPictureControllerImpl);
 };
diff --git a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_test.cc b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_test.cc
index 5b14eff..65e4c812 100644
--- a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_test.cc
+++ b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_test.cc
@@ -4,6 +4,9 @@
 
 #include "third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h"
 
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
+#include "mojo/public/cpp/bindings/receiver.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom-blink.h"
@@ -32,8 +35,8 @@
     : public mojom::blink::PictureInPictureSession {
  public:
   MockPictureInPictureSession(
-      mojo::InterfaceRequest<mojom::blink::PictureInPictureSession> request)
-      : binding_(this, std::move(request)) {
+      mojo::PendingReceiver<mojom::blink::PictureInPictureSession> receiver)
+      : receiver_(this, std::move(receiver)) {
     ON_CALL(*this, Stop(_)).WillByDefault([](StopCallback callback) {
       std::move(callback).Run();
     });
@@ -49,7 +52,7 @@
                     bool));
 
  private:
-  mojo::Binding<mojom::blink::PictureInPictureSession> binding_;
+  mojo::Receiver<mojom::blink::PictureInPictureSession> receiver_;
 };
 
 // The MockPictureInPictureService implements the PictureInPicture service in
@@ -58,7 +61,7 @@
 class MockPictureInPictureService
     : public mojom::blink::PictureInPictureService {
  public:
-  MockPictureInPictureService() : binding_(this) {
+  MockPictureInPictureService() {
     // Setup default implementations.
     ON_CALL(*this, StartSession(_, _, _, _, _, _, _))
         .WillByDefault(testing::Invoke(
@@ -67,38 +70,40 @@
   ~MockPictureInPictureService() override = default;
 
   void Bind(mojo::ScopedMessagePipeHandle handle) {
-    binding_.Bind(
-        mojom::blink::PictureInPictureServiceRequest(std::move(handle)));
+    receiver_.Bind(mojo::PendingReceiver<mojom::blink::PictureInPictureService>(
+        std::move(handle)));
 
-    session_.reset(
-        new MockPictureInPictureSession(mojo::MakeRequest(&session_ptr_)));
+    session_.reset(new MockPictureInPictureSession(
+        session_remote_.InitWithNewPipeAndPassReceiver()));
   }
 
-  MOCK_METHOD7(StartSession,
-               void(uint32_t,
-                    const base::Optional<viz::SurfaceId>&,
-                    const blink::WebSize&,
-                    bool,
-                    bool,
-                    mojom::blink::PictureInPictureSessionObserverPtr,
-                    StartSessionCallback));
+  MOCK_METHOD7(
+      StartSession,
+      void(uint32_t,
+           const base::Optional<viz::SurfaceId>&,
+           const blink::WebSize&,
+           bool,
+           bool,
+           mojo::PendingRemote<mojom::blink::PictureInPictureSessionObserver>,
+           StartSessionCallback));
 
   MockPictureInPictureSession& Session() { return *session_.get(); }
 
-  void StartSessionInternal(uint32_t,
-                            const base::Optional<viz::SurfaceId>&,
-                            const blink::WebSize&,
-                            bool,
-                            bool,
-                            mojom::blink::PictureInPictureSessionObserverPtr,
-                            StartSessionCallback callback) {
-    std::move(callback).Run(std::move(session_ptr_), WebSize());
+  void StartSessionInternal(
+      uint32_t,
+      const base::Optional<viz::SurfaceId>&,
+      const blink::WebSize&,
+      bool,
+      bool,
+      mojo::PendingRemote<mojom::blink::PictureInPictureSessionObserver>,
+      StartSessionCallback callback) {
+    std::move(callback).Run(std::move(session_remote_), WebSize());
   }
 
  private:
-  mojo::Binding<mojom::blink::PictureInPictureService> binding_;
+  mojo::Receiver<mojom::blink::PictureInPictureService> receiver_{this};
   std::unique_ptr<MockPictureInPictureSession> session_;
-  mojom::blink::PictureInPictureSessionPtr session_ptr_;
+  mojo::PendingRemote<mojom::blink::PictureInPictureSession> session_remote_;
 
   DISALLOW_COPY_AND_ASSIGN(MockPictureInPictureService);
 };
@@ -241,8 +246,7 @@
 
 TEST_F(PictureInPictureControllerTest, StartObserving) {
   EXPECT_FALSE(PictureInPictureControllerImpl::From(GetDocument())
-                   .GetSessionObserverBindingForTesting()
-                   .is_bound());
+                   .IsSessionObserverReceiverBoundForTesting());
 
   WebMediaPlayer* player = Video()->GetWebMediaPlayer();
   EXPECT_CALL(Service(),
@@ -257,14 +261,12 @@
                                      event_type_names::kEnterpictureinpicture);
 
   EXPECT_TRUE(PictureInPictureControllerImpl::From(GetDocument())
-                  .GetSessionObserverBindingForTesting()
-                  .is_bound());
+                  .IsSessionObserverReceiverBoundForTesting());
 }
 
 TEST_F(PictureInPictureControllerTest, StopObserving) {
   EXPECT_FALSE(PictureInPictureControllerImpl::From(GetDocument())
-                   .GetSessionObserverBindingForTesting()
-                   .is_bound());
+                   .IsSessionObserverReceiverBoundForTesting());
 
   WebMediaPlayer* player = Video()->GetWebMediaPlayer();
   EXPECT_CALL(Service(),
@@ -286,8 +288,7 @@
                                      event_type_names::kLeavepictureinpicture);
 
   EXPECT_FALSE(PictureInPictureControllerImpl::From(GetDocument())
-                   .GetSessionObserverBindingForTesting()
-                   .is_bound());
+                   .IsSessionObserverReceiverBoundForTesting());
 }
 
 TEST_F(PictureInPictureControllerTest, PlayPauseButton_InfiniteDuration) {
diff --git a/third_party/blink/renderer/modules/serial/BUILD.gn b/third_party/blink/renderer/modules/serial/BUILD.gn
index d012183..c5d19ee 100644
--- a/third_party/blink/renderer/modules/serial/BUILD.gn
+++ b/third_party/blink/renderer/modules/serial/BUILD.gn
@@ -16,6 +16,8 @@
     "serial.h",
     "serial_port.cc",
     "serial_port.h",
+    "serial_port_underlying_sink.cc",
+    "serial_port_underlying_sink.h",
     "serial_port_underlying_source.cc",
     "serial_port_underlying_source.h",
     "worker_navigator_serial.cc",
diff --git a/third_party/blink/renderer/modules/serial/serial_port.cc b/third_party/blink/renderer/modules/serial/serial_port.cc
index 227da77..23e6b41 100644
--- a/third_party/blink/renderer/modules/serial/serial_port.cc
+++ b/third_party/blink/renderer/modules/serial/serial_port.cc
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/core/streams/writable_stream.h"
 #include "third_party/blink/renderer/modules/serial/serial.h"
 #include "third_party/blink/renderer/modules/serial/serial_options.h"
+#include "third_party/blink/renderer/modules/serial/serial_port_underlying_sink.h"
 #include "third_party/blink/renderer/modules/serial/serial_port_underlying_source.h"
 #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h"
 
@@ -17,6 +18,7 @@
 
 namespace {
 const char kOpenError[] = "Failed to open serial port.";
+const char kUnexpectedCloseError[] = "The port closed unexpectedly.";
 const int kMaxBufferSize = 16 * 1024 * 1024; /* 16 MiB */
 }  // namespace
 
@@ -180,8 +182,16 @@
 
 void SerialPort::close() {
   if (underlying_source_) {
+    // The ReadableStream will report "done" when the data pipe is closed.
     underlying_source_->ExpectClose();
   }
+  if (underlying_sink_) {
+    // TODO(crbug.com/893334): Rather than triggering an error on the
+    // WritableStream this should imply a call to abort() and fail if the stream
+    // is locked.
+    underlying_sink_->SignalErrorOnClose(MakeGarbageCollected<DOMException>(
+        DOMExceptionCode::kInvalidStateError, "The port has been closed."));
+  }
   ContextDestroyed();
 }
 
@@ -190,6 +200,11 @@
   underlying_source_ = nullptr;
 }
 
+void SerialPort::UnderlyingSinkClosed() {
+  writable_ = nullptr;
+  underlying_sink_ = nullptr;
+}
+
 void SerialPort::ContextDestroyed() {
   // Release connection-related resources as quickly as possible.
   port_.reset();
@@ -197,12 +212,16 @@
     client_binding_.Unbind();
   readable_ = nullptr;
   underlying_source_ = nullptr;
+  writable_ = nullptr;
+  underlying_sink_ = nullptr;
 }
 
 void SerialPort::Trace(Visitor* visitor) {
   visitor->Trace(parent_);
   visitor->Trace(readable_);
   visitor->Trace(underlying_source_);
+  visitor->Trace(writable_);
+  visitor->Trace(underlying_sink_);
   visitor->Trace(open_resolver_);
   ScriptWrappable::Trace(visitor);
 }
@@ -218,12 +237,16 @@
   if (underlying_source_) {
     // TODO(crbug.com/893334): Customize the exception based on |error|.
     underlying_source_->SignalErrorOnClose(MakeGarbageCollected<DOMException>(
-        DOMExceptionCode::kNetworkError, "Port encountered error."));
+        DOMExceptionCode::kNetworkError, "Port encountered read error."));
   }
 }
 
 void SerialPort::OnSendError(device::mojom::blink::SerialSendError error) {
-  // TODO(crbug.com/893334): Signal to the underlying sink.
+  if (underlying_sink_) {
+    // TODO(crbug.com/893334): Customize the exception based on |error|.
+    underlying_sink_->SignalErrorOnClose(MakeGarbageCollected<DOMException>(
+        DOMExceptionCode::kNetworkError, "Port encountered write error."));
+  }
 }
 
 bool SerialPort::CreateDataPipe(mojo::ScopedDataPipeProducerHandle* producer,
@@ -250,9 +273,12 @@
   }
   if (underlying_source_) {
     underlying_source_->SignalErrorOnClose(MakeGarbageCollected<DOMException>(
-        DOMExceptionCode::kNetworkError, "Port closed unexpectedly."));
+        DOMExceptionCode::kNetworkError, kUnexpectedCloseError));
   }
-  // TODO(crbug.com/893334): Signal to the underlying sink.
+  if (underlying_sink_) {
+    underlying_sink_->SignalErrorOnClose(MakeGarbageCollected<DOMException>(
+        DOMExceptionCode::kNetworkError, kUnexpectedCloseError));
+  }
   ContextDestroyed();
 }
 
@@ -294,7 +320,12 @@
 void SerialPort::InitializeWritableStream(
     ScriptState* script_state,
     mojo::ScopedDataPipeProducerHandle writable_pipe) {
-  // TODO(crbug.com/893334): Implement a SerialPortUnderlyingSink.
+  DCHECK(!underlying_sink_);
+  DCHECK(!writable_);
+  underlying_sink_ = MakeGarbageCollected<SerialPortUnderlyingSink>(
+      this, std::move(writable_pipe));
+  writable_ = WritableStream::CreateWithCountQueueingStrategy(
+      script_state, underlying_sink_, 0);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/serial/serial_port.h b/third_party/blink/renderer/modules/serial/serial_port.h
index b699c6b..18a4c95 100644
--- a/third_party/blink/renderer/modules/serial/serial_port.h
+++ b/third_party/blink/renderer/modules/serial/serial_port.h
@@ -23,6 +23,7 @@
 class ScriptState;
 class Serial;
 class SerialOptions;
+class SerialPortUnderlyingSink;
 class SerialPortUnderlyingSource;
 class WritableStream;
 
@@ -37,14 +38,16 @@
 
   // Web-exposed functions
   ReadableStream* readable() const { return readable_; }
-  WritableStream* writable() const { return nullptr; }
+  WritableStream* writable() const { return writable_; }
 
   ScriptPromise open(ScriptState*, const SerialOptions* options);
   void clearReadError(ScriptState*, ExceptionState&);
   void close();
 
   const base::UnguessableToken& token() const { return info_->token; }
+
   void UnderlyingSourceClosed();
+  void UnderlyingSinkClosed();
 
   void ContextDestroyed();
   void Trace(Visitor*) override;
@@ -76,6 +79,8 @@
 
   Member<ReadableStream> readable_;
   Member<SerialPortUnderlyingSource> underlying_source_;
+  Member<WritableStream> writable_;
+  Member<SerialPortUnderlyingSink> underlying_sink_;
 
   // Resolver for the Promise returned by open().
   Member<ScriptPromiseResolver> open_resolver_;
diff --git a/third_party/blink/renderer/modules/serial/serial_port_underlying_sink.cc b/third_party/blink/renderer/modules/serial/serial_port_underlying_sink.cc
new file mode 100644
index 0000000..9053559
--- /dev/null
+++ b/third_party/blink/renderer/modules/serial/serial_port_underlying_sink.cc
@@ -0,0 +1,188 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/modules/serial/serial_port_underlying_sink.h"
+
+#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
+#include "third_party/blink/renderer/core/dom/dom_exception.h"
+#include "third_party/blink/renderer/modules/serial/serial_port.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
+
+namespace blink {
+
+SerialPortUnderlyingSink::SerialPortUnderlyingSink(
+    SerialPort* serial_port,
+    mojo::ScopedDataPipeProducerHandle handle)
+    : data_pipe_(std::move(handle)),
+      watcher_(FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::MANUAL),
+      serial_port_(serial_port) {
+  watcher_.Watch(data_pipe_.get(), MOJO_HANDLE_SIGNAL_WRITABLE,
+                 MOJO_TRIGGER_CONDITION_SIGNALS_SATISFIED,
+                 WTF::BindRepeating(&SerialPortUnderlyingSink::OnHandleReady,
+                                    WrapWeakPersistent(this)));
+}
+
+ScriptPromise SerialPortUnderlyingSink::start(
+    ScriptState* script_state,
+    WritableStreamDefaultControllerInterface* controller) {
+  return ScriptPromise::CastUndefined(script_state);
+}
+
+ScriptPromise SerialPortUnderlyingSink::write(
+    ScriptState* script_state,
+    ScriptValue chunk,
+    WritableStreamDefaultControllerInterface* controller) {
+  // There can only be one call to write() in progress at a time.
+  DCHECK(buffer_source_.IsNull());
+  DCHECK_EQ(0u, offset_);
+  DCHECK(!pending_write_);
+
+  if (pending_exception_) {
+    DOMException* exception = pending_exception_;
+    pending_exception_ = nullptr;
+    serial_port_->UnderlyingSinkClosed();
+    return ScriptPromise::RejectWithDOMException(script_state, exception);
+  }
+
+  ExceptionState exception_state(script_state->GetIsolate(),
+                                 ExceptionState::kExecutionContext,
+                                 "SerialPortUnderlyingSink", "write");
+
+  V8ArrayBufferOrArrayBufferView::ToImpl(
+      script_state->GetIsolate(), chunk.V8Value(), buffer_source_,
+      UnionTypeConversionMode::kNotNullable, exception_state);
+  if (exception_state.HadException())
+    return ScriptPromise::Reject(script_state, exception_state);
+
+  pending_write_ = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
+  ScriptPromise promise = pending_write_->Promise();
+
+  WriteData();
+  return promise;
+}
+
+ScriptPromise SerialPortUnderlyingSink::close(ScriptState* script_state) {
+  // The specification guarantees that this will only be called after all
+  // pending writes have been completed.
+  DCHECK(!pending_write_);
+
+  watcher_.Cancel();
+  data_pipe_.reset();
+
+  if (pending_exception_) {
+    DOMException* exception = pending_exception_;
+    pending_exception_ = nullptr;
+    serial_port_->UnderlyingSinkClosed();
+    return ScriptPromise::RejectWithDOMException(script_state, exception);
+  }
+
+  // TODO(crbug.com/893334): close() should wait for data to be flushed before
+  // resolving. This will require waiting for |data_pipe_| to close.
+  return ScriptPromise::CastUndefined(script_state);
+}
+
+ScriptPromise SerialPortUnderlyingSink::abort(ScriptState* script_state,
+                                              ScriptValue reason) {
+  // The specification guarantees that this will only be called after all
+  // pending writes have been completed.
+  return close(script_state);
+}
+
+void SerialPortUnderlyingSink::SignalErrorOnClose(DOMException* exception) {
+  if (data_pipe_ || !pending_write_) {
+    // Pipe is still open or we don't have a write operation that can be failed.
+    // Wait for PipeClosed() to be called.
+    pending_exception_ = exception;
+    return;
+  }
+
+  if (pending_write_) {
+    pending_write_->Reject(exception);
+    pending_write_ = nullptr;
+  }
+}
+
+void SerialPortUnderlyingSink::Trace(Visitor* visitor) {
+  visitor->Trace(serial_port_);
+  visitor->Trace(pending_exception_);
+  visitor->Trace(buffer_source_);
+  visitor->Trace(pending_write_);
+  UnderlyingSinkBase::Trace(visitor);
+}
+
+void SerialPortUnderlyingSink::OnHandleReady(MojoResult result,
+                                             const mojo::HandleSignalsState&) {
+  switch (result) {
+    case MOJO_RESULT_OK:
+      WriteData();
+      break;
+    case MOJO_RESULT_FAILED_PRECONDITION:
+      PipeClosed();
+      break;
+    default:
+      NOTREACHED();
+  }
+}
+
+void SerialPortUnderlyingSink::WriteData() {
+  DCHECK(data_pipe_);
+  DCHECK(pending_write_);
+  DCHECK(!buffer_source_.IsNull());
+
+  const uint8_t* data = nullptr;
+  uint32_t length = 0;
+  if (buffer_source_.IsArrayBuffer()) {
+    DOMArrayBuffer* array = buffer_source_.GetAsArrayBuffer();
+    data = static_cast<const uint8_t*>(array->Data());
+    length = array->ByteLength();
+  } else {
+    DOMArrayBufferView* view = buffer_source_.GetAsArrayBufferView().View();
+    data = static_cast<const uint8_t*>(view->BaseAddress());
+    length = view->byteLength();
+  }
+
+  DCHECK_LT(offset_, length);
+  data += offset_;
+  uint32_t num_bytes = length - offset_;
+
+  MojoResult result =
+      data_pipe_->WriteData(data, &num_bytes, MOJO_WRITE_DATA_FLAG_NONE);
+  switch (result) {
+    case MOJO_RESULT_OK:
+      offset_ += num_bytes;
+      if (offset_ == length) {
+        buffer_source_ = ArrayBufferOrArrayBufferView();
+        offset_ = 0;
+        pending_write_->Resolve();
+        pending_write_ = nullptr;
+        break;
+      }
+      FALLTHROUGH;
+    case MOJO_RESULT_SHOULD_WAIT:
+      watcher_.ArmOrNotify();
+      break;
+    case MOJO_RESULT_FAILED_PRECONDITION:
+      PipeClosed();
+      break;
+    default:
+      NOTREACHED();
+  }
+}
+
+void SerialPortUnderlyingSink::PipeClosed() {
+  DCHECK(pending_write_);
+
+  watcher_.Cancel();
+  data_pipe_.reset();
+
+  if (pending_exception_) {
+    DOMException* exception = pending_exception_;
+    pending_exception_ = nullptr;
+    serial_port_->UnderlyingSinkClosed();
+    pending_write_->Reject(exception);
+    pending_write_ = nullptr;
+  }
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/serial/serial_port_underlying_sink.h b/third_party/blink/renderer/modules/serial/serial_port_underlying_sink.h
new file mode 100644
index 0000000..6915076
--- /dev/null
+++ b/third_party/blink/renderer/modules/serial/serial_port_underlying_sink.h
@@ -0,0 +1,54 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_SERIAL_SERIAL_PORT_UNDERLYING_SINK_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_SERIAL_SERIAL_PORT_UNDERLYING_SINK_H_
+
+#include "mojo/public/cpp/system/data_pipe.h"
+#include "mojo/public/cpp/system/simple_watcher.h"
+#include "third_party/blink/renderer/bindings/core/v8/array_buffer_or_array_buffer_view.h"
+#include "third_party/blink/renderer/core/streams/underlying_sink_base.h"
+
+namespace blink {
+
+class ScriptPromiseResolver;
+class SerialPort;
+
+class SerialPortUnderlyingSink final : public UnderlyingSinkBase {
+ public:
+  SerialPortUnderlyingSink(SerialPort*, mojo::ScopedDataPipeProducerHandle);
+
+  // UnderlyingSinkBase
+  ScriptPromise start(ScriptState*,
+                      WritableStreamDefaultControllerInterface*) override;
+  ScriptPromise write(ScriptState*,
+                      ScriptValue chunk,
+                      WritableStreamDefaultControllerInterface*) override;
+  ScriptPromise close(ScriptState*) override;
+  ScriptPromise abort(ScriptState*, ScriptValue reason) override;
+
+  // After |data_pipe_| has closed calls to write() will return a Promise
+  // rejected with this DOMException.
+  void SignalErrorOnClose(DOMException*);
+
+  void Trace(Visitor*) override;
+
+ private:
+  void OnHandleReady(MojoResult, const mojo::HandleSignalsState&);
+  void WriteData();
+  void PipeClosed();
+
+  mojo::ScopedDataPipeProducerHandle data_pipe_;
+  mojo::SimpleWatcher watcher_;
+  Member<SerialPort> serial_port_;
+  Member<DOMException> pending_exception_;
+
+  ArrayBufferOrArrayBufferView buffer_source_;
+  uint32_t offset_ = 0;
+  Member<ScriptPromiseResolver> pending_write_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_SERIAL_SERIAL_PORT_UNDERLYING_SINK_H_
diff --git a/third_party/blink/renderer/modules/wake_lock/DEPS b/third_party/blink/renderer/modules/wake_lock/DEPS
index 2cfae9a7..12b0536 100644
--- a/third_party/blink/renderer/modules/wake_lock/DEPS
+++ b/third_party/blink/renderer/modules/wake_lock/DEPS
@@ -6,7 +6,7 @@
 ]
 
 specific_include_rules = {
-  "wake_lock_test_utils\.h": [
+  "wake_lock_test_utils\.cc": [
     "+base/run_loop.h",
   ],
 }
diff --git a/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.cc b/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.cc
index 1e48ec2..79f20dc 100644
--- a/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.cc
+++ b/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.cc
@@ -4,14 +4,143 @@
 
 #include "third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h"
 
+#include <utility>
+
+#include "base/logging.h"
+#include "base/run_loop.h"
+#include "services/service_manager/public/cpp/interface_provider.h"
+#include "third_party/blink/renderer/bindings/core/v8/script_function.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_dom_exception.h"
+#include "third_party/blink/renderer/core/dom/document.h"
+#include "third_party/blink/renderer/modules/wake_lock/wake_lock_type.h"
 #include "third_party/blink/renderer/platform/bindings/v8_binding.h"
+#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
+#include "third_party/blink/renderer/platform/wtf/functional.h"
 
 namespace blink {
 
 using mojom::blink::PermissionDescriptorPtr;
 using mojom::blink::PermissionStatus;
 
+namespace {
+
+// Helper class for WaitForPromise{Fulfillment,Rejection}(). It provides a
+// function that invokes |callback| when a ScriptPromise is resolved.
+class ClosureRunnerFunction final : public ScriptFunction {
+ public:
+  static v8::Local<v8::Function> CreateFunction(
+      ScriptState* script_state,
+      base::RepeatingClosure callback) {
+    auto* function = MakeGarbageCollected<ClosureRunnerFunction>(
+        script_state, std::move(callback));
+    return function->BindToV8Function();
+  }
+
+  ClosureRunnerFunction(ScriptState* script_state,
+                        base::RepeatingClosure callback)
+      : ScriptFunction(script_state), callback_(std::move(callback)) {}
+
+ private:
+  ScriptValue Call(ScriptValue) override {
+    if (callback_)
+      std::move(callback_).Run();
+    return ScriptValue();
+  }
+
+  base::RepeatingClosure callback_;
+};
+
+WakeLockType ToBlinkWakeLockType(device::mojom::blink::WakeLockType type) {
+  switch (type) {
+    case device::mojom::blink::WakeLockType::kPreventDisplaySleep:
+      return WakeLockType::kScreen;
+    case device::mojom::blink::WakeLockType::kPreventAppSuspension:
+      return WakeLockType::kSystem;
+    default:
+      NOTREACHED();
+      return WakeLockType::kMaxValue;
+  }
+}
+
+}  // namespace
+
+// MockWakeLock
+
+MockWakeLock::MockWakeLock() = default;
+MockWakeLock::~MockWakeLock() = default;
+
+void MockWakeLock::Bind(device::mojom::blink::WakeLockRequest request) {
+  DCHECK(!binding_.is_bound());
+  binding_.Bind(std::move(request));
+  binding_.set_connection_error_handler(
+      WTF::Bind(&MockWakeLock::OnConnectionError, WTF::Unretained(this)));
+}
+
+void MockWakeLock::Unbind() {
+  OnConnectionError();
+}
+
+void MockWakeLock::WaitForRequest() {
+  DCHECK(!request_wake_lock_callback_);
+  base::RunLoop run_loop;
+  request_wake_lock_callback_ = run_loop.QuitClosure();
+  run_loop.Run();
+}
+
+void MockWakeLock::WaitForCancelation() {
+  DCHECK(!cancel_wake_lock_callback_);
+  base::RunLoop run_loop;
+  cancel_wake_lock_callback_ = run_loop.QuitClosure();
+  run_loop.Run();
+}
+
+void MockWakeLock::OnConnectionError() {
+  if (binding_.is_bound())
+    binding_.Unbind();
+  CancelWakeLock();
+}
+
+void MockWakeLock::RequestWakeLock() {
+  is_acquired_ = true;
+  if (request_wake_lock_callback_)
+    std::move(request_wake_lock_callback_).Run();
+}
+
+void MockWakeLock::CancelWakeLock() {
+  is_acquired_ = false;
+  if (cancel_wake_lock_callback_)
+    std::move(cancel_wake_lock_callback_).Run();
+}
+
+void MockWakeLock::AddClient(device::mojom::blink::WakeLockRequest) {}
+void MockWakeLock::ChangeType(device::mojom::blink::WakeLockType,
+                              ChangeTypeCallback) {}
+void MockWakeLock::HasWakeLockForTests(HasWakeLockForTestsCallback) {}
+
+// MockWakeLockService
+
+MockWakeLockService::MockWakeLockService() = default;
+MockWakeLockService::~MockWakeLockService() = default;
+
+void MockWakeLockService::BindRequest(mojo::ScopedMessagePipeHandle handle) {
+  bindings_.AddBinding(this,
+                       mojom::blink::WakeLockServiceRequest(std::move(handle)));
+}
+
+MockWakeLock& MockWakeLockService::get_wake_lock(WakeLockType type) {
+  size_t pos = static_cast<size_t>(type);
+  return mock_wake_lock_[pos];
+}
+
+void MockWakeLockService::GetWakeLock(
+    device::mojom::blink::WakeLockType type,
+    device::mojom::blink::WakeLockReason reason,
+    const String& description,
+    device::mojom::blink::WakeLockRequest request) {
+  size_t pos = static_cast<size_t>(ToBlinkWakeLockType(type));
+  mock_wake_lock_[pos].Bind(std::move(request));
+}
+
 // MockPermissionService
 
 MockPermissionService::MockPermissionService() = default;
@@ -110,6 +239,63 @@
   NOTREACHED();
 }
 
+// WakeLockTestingContext
+
+WakeLockTestingContext::WakeLockTestingContext(
+    MockWakeLockService* mock_wake_lock_service) {
+  service_manager::InterfaceProvider::TestApi test_api(
+      GetDocument()->GetInterfaceProvider());
+  test_api.SetBinderForName(
+      mojom::blink::WakeLockService::Name_,
+      WTF::BindRepeating(&MockWakeLockService::BindRequest,
+                         WTF::Unretained(mock_wake_lock_service)));
+  test_api.SetBinderForName(
+      mojom::blink::PermissionService::Name_,
+      WTF::BindRepeating(&MockPermissionService::BindRequest,
+                         WTF::Unretained(&permission_service_)));
+}
+
+Document* WakeLockTestingContext::GetDocument() {
+  return &testing_scope_.GetDocument();
+}
+
+LocalFrame* WakeLockTestingContext::Frame() {
+  return &testing_scope_.GetFrame();
+}
+
+ScriptState* WakeLockTestingContext::GetScriptState() {
+  return testing_scope_.GetScriptState();
+}
+
+MockPermissionService& WakeLockTestingContext::GetPermissionService() {
+  return permission_service_;
+}
+
+ScriptPromise WakeLockTestingContext::WaitForPromiseFulfillment(
+    ScriptPromise promise) {
+  base::RunLoop run_loop;
+  ScriptPromise return_promise =
+      promise.Then(ClosureRunnerFunction::CreateFunction(
+          GetScriptState(), run_loop.QuitClosure()));
+  // Execute pending microtasks, otherwise it can take a few seconds for the
+  // promise to resolve.
+  v8::MicrotasksScope::PerformCheckpoint(GetScriptState()->GetIsolate());
+  run_loop.Run();
+  return return_promise;
+}
+
+// Synchronously waits for |promise| to be rejected.
+void WakeLockTestingContext::WaitForPromiseRejection(ScriptPromise promise) {
+  base::RunLoop run_loop;
+  promise.Then(v8::Local<v8::Function>(),
+               ClosureRunnerFunction::CreateFunction(GetScriptState(),
+                                                     run_loop.QuitClosure()));
+  // Execute pending microtasks, otherwise it can take a few seconds for the
+  // promise to resolve.
+  v8::MicrotasksScope::PerformCheckpoint(GetScriptState()->GetIsolate());
+  run_loop.Run();
+}
+
 // ScriptPromiseUtils
 
 // static
diff --git a/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h b/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h
index 8b0d5e4..ce01a8b6 100644
--- a/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h
+++ b/third_party/blink/renderer/modules/wake_lock/wake_lock_test_utils.h
@@ -5,136 +5,80 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WAKE_LOCK_WAKE_LOCK_TEST_UTILS_H_
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_WAKE_LOCK_WAKE_LOCK_TEST_UTILS_H_
 
-#include <memory>
-#include <utility>
-
 #include "base/callback.h"
-#include "base/logging.h"
 #include "base/optional.h"
-#include "base/run_loop.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
 #include "services/device/public/mojom/wake_lock.mojom-blink.h"
-#include "services/service_manager/public/cpp/interface_provider.h"
 #include "third_party/blink/public/mojom/permissions/permission.mojom-blink.h"
 #include "third_party/blink/public/mojom/wake_lock/wake_lock.mojom-blink.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_function.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h"
-#include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/modules/wake_lock/wake_lock_type.h"
-#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
-#include "third_party/blink/renderer/platform/wtf/functional.h"
-#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 #include "v8/include/v8.h"
 
 namespace blink {
 
+class Document;
+
 // Mock WakeLock implementation that tracks whether it's bound or acquired, and
 // provides a few helper methods to synchronously wait for RequestWakeLock()
 // and CancelWakeLock() to be called.
 class MockWakeLock : public device::mojom::blink::WakeLock {
  public:
-  MockWakeLock() : binding_(this) {}
-  ~MockWakeLock() override = default;
+  MockWakeLock();
+  ~MockWakeLock() override;
 
   bool is_acquired() const { return is_acquired_; }
 
-  void Bind(device::mojom::blink::WakeLockRequest request) {
-    DCHECK(!binding_.is_bound());
-    binding_.Bind(std::move(request));
-    binding_.set_connection_error_handler(
-        WTF::Bind(&MockWakeLock::OnConnectionError, WTF::Unretained(this)));
-  }
+  void Bind(device::mojom::blink::WakeLockRequest request);
 
   // Forcefully terminate a binding to test connection errors.
-  void Unbind() { OnConnectionError(); }
+  void Unbind();
 
   // Synchronously wait for RequestWakeLock() to be called.
-  void WaitForRequest() {
-    DCHECK(!request_wake_lock_callback_);
-    base::RunLoop run_loop;
-    request_wake_lock_callback_ = run_loop.QuitClosure();
-    run_loop.Run();
-  }
+  void WaitForRequest();
 
   // Synchronously wait for CancelWakeLock() to be called.
-  void WaitForCancelation() {
-    DCHECK(!cancel_wake_lock_callback_);
-    base::RunLoop run_loop;
-    cancel_wake_lock_callback_ = run_loop.QuitClosure();
-    run_loop.Run();
-  }
+  void WaitForCancelation();
 
  private:
-  void OnConnectionError() {
-    if (binding_.is_bound())
-      binding_.Unbind();
-    CancelWakeLock();
-  }
+  void OnConnectionError();
 
   // device::mojom::blink::WakeLock implementation
-  void RequestWakeLock() override {
-    is_acquired_ = true;
-    if (request_wake_lock_callback_)
-      std::move(request_wake_lock_callback_).Run();
-  }
-  void CancelWakeLock() override {
-    is_acquired_ = false;
-    if (cancel_wake_lock_callback_)
-      std::move(cancel_wake_lock_callback_).Run();
-  }
-  void AddClient(device::mojom::blink::WakeLockRequest) override {}
+  void RequestWakeLock() override;
+  void CancelWakeLock() override;
+  void AddClient(device::mojom::blink::WakeLockRequest) override;
   void ChangeType(device::mojom::blink::WakeLockType,
-                  ChangeTypeCallback) override {}
-  void HasWakeLockForTests(HasWakeLockForTestsCallback) override {}
+                  ChangeTypeCallback) override;
+  void HasWakeLockForTests(HasWakeLockForTestsCallback) override;
 
   bool is_acquired_ = false;
 
   base::OnceClosure request_wake_lock_callback_;
   base::OnceClosure cancel_wake_lock_callback_;
 
-  mojo::Binding<device::mojom::blink::WakeLock> binding_;
+  mojo::Binding<device::mojom::blink::WakeLock> binding_{this};
 };
 
 // Mock WakeLockService implementation that creates a MockWakeLock in its
 // GetWakeLock() implementation.
 class MockWakeLockService : public mojom::blink::WakeLockService {
  public:
-  MockWakeLockService() = default;
-  ~MockWakeLockService() override = default;
+  MockWakeLockService();
+  ~MockWakeLockService() override;
 
-  void BindRequest(mojo::ScopedMessagePipeHandle handle) {
-    bindings_.AddBinding(
-        this, mojom::blink::WakeLockServiceRequest(std::move(handle)));
-  }
+  void BindRequest(mojo::ScopedMessagePipeHandle handle);
 
-  MockWakeLock& get_wake_lock(WakeLockType type) {
-    size_t pos = static_cast<size_t>(type);
-    return mock_wake_lock_[pos];
-  }
+  MockWakeLock& get_wake_lock(WakeLockType type);
 
  private:
-  WakeLockType ToBlinkWakeLockType(device::mojom::blink::WakeLockType type) {
-    switch (type) {
-      case device::mojom::blink::WakeLockType::kPreventDisplaySleep:
-        return WakeLockType::kScreen;
-      case device::mojom::blink::WakeLockType::kPreventAppSuspension:
-        return WakeLockType::kSystem;
-      default:
-        NOTREACHED();
-        return WakeLockType::kMaxValue;
-    }
-  }
-
   // mojom::blink::WakeLockService implementation
   void GetWakeLock(device::mojom::blink::WakeLockType type,
                    device::mojom::blink::WakeLockReason reason,
                    const String& description,
-                   device::mojom::blink::WakeLockRequest request) override {
-    size_t pos = static_cast<size_t>(ToBlinkWakeLockType(type));
-    mock_wake_lock_[pos].Bind(std::move(request));
-  }
+                   device::mojom::blink::WakeLockRequest request) override;
 
   MockWakeLock mock_wake_lock_[kWakeLockTypeCount];
   mojo::BindingSet<mojom::blink::WakeLockService> bindings_;
@@ -182,9 +126,7 @@
   base::Optional<mojom::blink::PermissionStatus>
       permission_responses_[kWakeLockTypeCount];
 
-  base::OnceClosure request_permission_callbacks_[static_cast<size_t>(
-                                                      WakeLockType::kMaxValue) +
-                                                  1];
+  base::OnceClosure request_permission_callbacks_[kWakeLockTypeCount];
 };
 
 // Overrides requests for WakeLockService with MockWakeLockService instances.
@@ -202,77 +144,20 @@
   STACK_ALLOCATED();
 
  public:
-  WakeLockTestingContext(MockWakeLockService* mock_wake_lock_service) {
-    service_manager::InterfaceProvider::TestApi test_api(
-        GetDocument()->GetInterfaceProvider());
-    test_api.SetBinderForName(
-        mojom::blink::WakeLockService::Name_,
-        WTF::BindRepeating(&MockWakeLockService::BindRequest,
-                           WTF::Unretained(mock_wake_lock_service)));
-    test_api.SetBinderForName(
-        mojom::blink::PermissionService::Name_,
-        WTF::BindRepeating(&MockPermissionService::BindRequest,
-                           WTF::Unretained(&permission_service_)));
-  }
+  WakeLockTestingContext(MockWakeLockService* mock_wake_lock_service);
 
-  Document* GetDocument() { return &testing_scope_.GetDocument(); }
-  LocalFrame* Frame() { return &testing_scope_.GetFrame(); }
-  ScriptState* GetScriptState() { return testing_scope_.GetScriptState(); }
-  MockPermissionService& GetPermissionService() { return permission_service_; }
+  Document* GetDocument();
+  LocalFrame* Frame();
+  ScriptState* GetScriptState();
+  MockPermissionService& GetPermissionService();
 
   // Synchronously waits for |promise| to be fulfilled.
-  ScriptPromise WaitForPromiseFulfillment(ScriptPromise promise) {
-    base::RunLoop run_loop;
-    ScriptPromise return_promise =
-        promise.Then(ClosureRunnerFunction::CreateFunction(
-            GetScriptState(), run_loop.QuitClosure()));
-    // Execute pending microtasks, otherwise it can take a few seconds for the
-    // promise to resolve.
-    v8::MicrotasksScope::PerformCheckpoint(GetScriptState()->GetIsolate());
-    run_loop.Run();
-    return return_promise;
-  }
+  ScriptPromise WaitForPromiseFulfillment(ScriptPromise promise);
 
   // Synchronously waits for |promise| to be rejected.
-  void WaitForPromiseRejection(ScriptPromise promise) {
-    base::RunLoop run_loop;
-    promise.Then(v8::Local<v8::Function>(),
-                 ClosureRunnerFunction::CreateFunction(GetScriptState(),
-                                                       run_loop.QuitClosure()));
-    // Execute pending microtasks, otherwise it can take a few seconds for the
-    // promise to resolve.
-    v8::MicrotasksScope::PerformCheckpoint(GetScriptState()->GetIsolate());
-    run_loop.Run();
-  }
+  void WaitForPromiseRejection(ScriptPromise promise);
 
  private:
-  // Helper class for WaitForPromise{Fulfillment,Rejection}(). It provides a
-  // function that is invoked when a ScriptPromise is rejected that invokes
-  // |callback|.
-  class ClosureRunnerFunction final : public ScriptFunction {
-   public:
-    static v8::Local<v8::Function> CreateFunction(
-        ScriptState* script_state,
-        base::RepeatingClosure callback) {
-      auto* function = MakeGarbageCollected<ClosureRunnerFunction>(
-          script_state, std::move(callback));
-      return function->BindToV8Function();
-    }
-
-    ClosureRunnerFunction(ScriptState* script_state,
-                          base::RepeatingClosure callback)
-        : ScriptFunction(script_state), callback_(std::move(callback)) {}
-
-   private:
-    ScriptValue Call(ScriptValue) override {
-      if (callback_)
-        std::move(callback_).Run();
-      return ScriptValue();
-    }
-
-    base::RepeatingClosure callback_;
-  };
-
   MockPermissionService permission_service_;
   V8TestingScope testing_scope_;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc
index 0a64973..c573d6c 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_context.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
@@ -664,14 +664,15 @@
   GetDocument()
       ->GetFrame()
       ->GetDocumentInterfaceBroker()
-      .GetAudioContextManager(mojo::MakeRequest(&audio_context_manager_));
-  audio_context_manager_.set_connection_error_handler(
+      .GetAudioContextManager(
+          audio_context_manager_.BindNewPipeAndPassReceiver());
+  audio_context_manager_.set_disconnect_handler(
       WTF::Bind(&AudioContext::OnAudioContextManagerServiceConnectionError,
                 WrapWeakPersistent(this)));
 }
 
 void AudioContext::OnAudioContextManagerServiceConnectionError() {
-  audio_context_manager_ = nullptr;
+  audio_context_manager_.reset();
 }
 
 AudioCallbackMetric AudioContext::GetCallbackMetric() const {
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.h b/third_party/blink/renderer/modules/webaudio/audio_context.h
index b018b688..3779376 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_context.h
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.h
@@ -5,6 +5,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_CONTEXT_H_
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_CONTEXT_H_
 
+#include "mojo/public/cpp/bindings/remote.h"
 #include "third_party/blink/public/mojom/webaudio/audio_context_manager.mojom-blink.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
@@ -174,7 +175,7 @@
   bool suspended_by_user_ = false;
 
   // AudioContextManager for reporting audibility.
-  mojom::blink::AudioContextManagerPtr audio_context_manager_;
+  mojo::Remote<mojom::blink::AudioContextManager> audio_context_manager_;
 
   // Keeps track if the output of this destination was audible, before the
   // current rendering quantum.  Used for recording "playback" time.
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context_test.cc b/third_party/blink/renderer/modules/webaudio/audio_context_test.cc
index d2ce4bd9..4d388e8 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_context_test.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_context_test.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 
+#include "mojo/public/cpp/bindings/remote.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/web_audio_device.h"
 #include "third_party/blink/public/platform/web_audio_latency_hint.h"
@@ -94,9 +95,8 @@
     CoreInitializer::GetInstance().ProvideModulesToPage(GetPage(), nullptr);
   }
 
-  mojom::blink::AudioContextManagerPtr& GetAudioContextManagerPtrFor(
-      AudioContext* audio_context) {
-    return audio_context->audio_context_manager_;
+  void ResetAudioContextManagerForAudioContext(AudioContext* audio_context) {
+    audio_context->audio_context_manager_.reset();
   }
 
   void SetContextState(AudioContext* audio_context,
@@ -169,7 +169,7 @@
       AudioContext::Create(GetDocument(), options, ASSERT_NO_EXCEPTION);
 
   audio_context->set_was_audible_for_testing(true);
-  GetAudioContextManagerPtrFor(audio_context).reset();
+  ResetAudioContextManagerForAudioContext(audio_context);
   SetContextState(audio_context, AudioContext::AudioContextState::kSuspended);
 
   ScopedTestingPlatformSupport<TestingPlatformSupport> platform;
diff --git a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc
index a388d2b1..4a0a0c7 100644
--- a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc
+++ b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.cc
@@ -81,7 +81,6 @@
     case WorldType::kIsolated:
     case WorldType::kInspectorIsolated:
     case WorldType::kRegExp:
-    case WorldType::kTesting:
     case WorldType::kForV8ContextSnapshotNonMain:
     case WorldType::kWorker: {
       WorldMap& map = GetWorldMap();
@@ -228,7 +227,6 @@
       return next_devtools_isolated_world_id++;
     }
     case WorldType::kRegExp:
-    case WorldType::kTesting:
     case WorldType::kForV8ContextSnapshotNonMain:
     case WorldType::kWorker:
       int world_id = *next_world_id;
diff --git a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.h b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.h
index 4ee39fc..c10cfa4 100644
--- a/third_party/blink/renderer/platform/bindings/dom_wrapper_world.h
+++ b/third_party/blink/renderer/platform/bindings/dom_wrapper_world.h
@@ -76,7 +76,6 @@
     kIsolated,
     kInspectorIsolated,
     kRegExp,
-    kTesting,
     kForV8ContextSnapshotNonMain,
     kWorker,
   };
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
index c5cebd31..689fd30 100644
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -35,10 +35,6 @@
 
 namespace blink {
 
-void WebRuntimeFeatures::EnableBlinkHeapIncrementalMarking(bool enable) {
-  RuntimeEnabledFeatures::SetHeapIncrementalMarkingEnabled(enable);
-}
-
 void WebRuntimeFeatures::EnableBlockingFocusWithoutUserActivation(bool enable) {
   RuntimeEnabledFeatures::SetBlockingFocusWithoutUserActivationEnabled(enable);
 }
@@ -200,10 +196,6 @@
   RuntimeEnabledFeatures::SetSensorExtraClassesEnabled(enable);
 }
 
-void WebRuntimeFeatures::EnableHeapCompaction(bool enable) {
-  RuntimeEnabledFeatures::SetHeapCompactionEnabled(enable);
-}
-
 void WebRuntimeFeatures::EnableImplicitRootScroller(bool enable) {
   RuntimeEnabledFeatures::SetImplicitRootScrollerEnabled(enable);
 }
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc
index 33b07c3..6b88704 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc
@@ -350,34 +350,6 @@
   return nullptr;
 }
 
-void Canvas2DLayerBridge::DisableDeferral(DisableDeferralReason reason) {
-  // Disabling deferral is permanent: once triggered by disableDeferral()
-  // we stay in immediate mode indefinitely. This is a performance heuristic
-  // that significantly helps a number of use cases. The rationale is that if
-  // immediate rendering was needed once, it is likely to be needed at least
-  // once per frame, which eliminates the possibility for inter-frame
-  // overdraw optimization. Furthermore, in cases where immediate mode is
-  // required multiple times per frame, the repeated flushing of deferred
-  // commands would cause significant overhead, so it is better to just stop
-  // trying to defer altogether.
-  if (!is_deferral_enabled_ || !resource_host_)
-    return;
-
-  UMA_HISTOGRAM_ENUMERATION(
-      "Blink.Canvas.GPUAccelerated2DCanvasDisableDeferralReason", reason,
-      kDisableDeferralReasonCount);
-  FlushRecording();
-  // Because we will be discarding the recorder, if the flush failed
-  // content will be lost -> force m_haveRecordedDrawCommands to false
-  have_recorded_draw_commands_ = false;
-
-  is_deferral_enabled_ = false;
-  recorder_.reset();
-  // install the current matrix/clip stack onto the immediate canvas
-  if (GetOrCreateResourceProvider())
-    resource_host_->RestoreCanvasMatrixClipStack(ResourceProvider()->Canvas());
-}
-
 void Canvas2DLayerBridge::UpdateFilterQuality() {
   SkFilterQuality filter_quality = resource_host_->FilterQuality();
   if (GetOrCreateResourceProvider())
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
index 9c5c783..0eccc46 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
@@ -104,7 +104,6 @@
   void DoPaintInvalidation(const FloatRect& dirty_rect);
   cc::Layer* Layer();
   bool Restore();
-  void DisableDeferral(DisableDeferralReason);
   void UpdateFilterQuality();
 
   // virtual for unit testing
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc
index b7badc64..6b4c7fe 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge_test.cc
@@ -149,7 +149,8 @@
   std::unique_ptr<Canvas2DLayerBridge> MakeBridge(
       const IntSize& size,
       Canvas2DLayerBridge::AccelerationMode acceleration_mode,
-      const CanvasColorParams& color_params) {
+      const CanvasColorParams& color_params,
+      bool disable_deferral = false) {
     std::unique_ptr<Canvas2DLayerBridge> bridge =
         std::make_unique<Canvas2DLayerBridge>(size, acceleration_mode,
                                               color_params);
@@ -157,6 +158,7 @@
     if (!host_)
       host_ = std::make_unique<MockCanvasResourceHost>(size);
     bridge->SetCanvasResourceHost(host_.get());
+    bridge->is_deferral_enabled_ = !disable_deferral;
     return bridge;
   }
 
@@ -528,12 +530,11 @@
 
   std::unique_ptr<Canvas2DLayerBridge> bridge =
       MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
-                 CanvasColorParams());
+                 CanvasColorParams(), true);
   EXPECT_CALL(*Host(), RestoreCanvasMatrixClipStack(_)).Times(AnyNumber());
 
   bridge->DontUseIdleSchedulingForTesting();
   DrawSomething(bridge.get());
-  bridge->DisableDeferral(kDisableDeferralReasonUnknown);
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -633,7 +634,6 @@
   bridge->DontUseIdleSchedulingForTesting();
   DrawSomething(bridge.get());
   EXPECT_CALL(*Host(), RestoreCanvasMatrixClipStack(_)).Times(AnyNumber());
-  bridge->DisableDeferral(kDisableDeferralReasonUnknown);
 
   // Register an alternate Logger for tracking hibernation events
   std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
@@ -677,68 +677,6 @@
   EXPECT_TRUE(bridge->IsValid());
 }
 
-#if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU
-TEST_F(Canvas2DLayerBridgeTest, DisableDeferredRenderingWhileHibernating)
-#else
-TEST_F(Canvas2DLayerBridgeTest,
-       DISABLED_DisableDeferredRenderingWhileHibernating)
-#endif
-{
-  ScopedTestingPlatformSupport<GpuMemoryBufferTestPlatform> platform;
-  std::unique_ptr<Canvas2DLayerBridge> bridge =
-      MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
-                 CanvasColorParams());
-  bridge->DontUseIdleSchedulingForTesting();
-  DrawSomething(bridge.get());
-
-  EXPECT_CALL(*Host(), RestoreCanvasMatrixClipStack(_)).Times(AnyNumber());
-
-  // Register an alternate Logger for tracking hibernation events
-  std::unique_ptr<MockLogger> mock_logger = std::make_unique<MockLogger>();
-  MockLogger* mock_logger_ptr = mock_logger.get();
-  bridge->SetLoggerForTesting(std::move(mock_logger));
-
-  // Test entering hibernation
-  EXPECT_CALL(
-      *mock_logger_ptr,
-      ReportHibernationEvent(Canvas2DLayerBridge::kHibernationScheduled));
-  EXPECT_CALL(*mock_logger_ptr, DidStartHibernating()).Times(1);
-  bridge->SetIsHidden(true);
-  platform->RunUntilIdle();
-  testing::Mock::VerifyAndClearExpectations(mock_logger_ptr);
-  testing::Mock::VerifyAndClearExpectations(Host());
-  EXPECT_FALSE(bridge->IsAccelerated());
-  EXPECT_TRUE(bridge->IsHibernating());
-  EXPECT_TRUE(bridge->IsValid());
-
-  // Disable deferral while background rendering
-  EXPECT_CALL(*mock_logger_ptr,
-              ReportHibernationEvent(
-                  Canvas2DLayerBridge::
-                      kHibernationEndedWithSwitchToBackgroundRendering));
-  EXPECT_CALL(*Host(), RestoreCanvasMatrixClipStack(_)).Times(AtLeast(1));
-  bridge->DisableDeferral(kDisableDeferralReasonUnknown);
-  testing::Mock::VerifyAndClearExpectations(mock_logger_ptr);
-  testing::Mock::VerifyAndClearExpectations(Host());
-  EXPECT_FALSE(bridge->IsAccelerated());
-  EXPECT_FALSE(bridge->IsHibernating());
-  EXPECT_TRUE(bridge->IsValid());
-
-  // Unhide
-  EXPECT_CALL(*Host(), RestoreCanvasMatrixClipStack(_)).Times(AtLeast(1));
-  bridge->SetIsHidden(false);
-  testing::Mock::VerifyAndClearExpectations(mock_logger_ptr);
-  testing::Mock::VerifyAndClearExpectations(Host());
-  EXPECT_TRUE(
-      bridge->IsAccelerated());  // Becoming visible causes switch back to GPU
-  EXPECT_FALSE(bridge->IsHibernating());
-  EXPECT_TRUE(bridge->IsValid());
-
-  EXPECT_CALL(*Host(), RestoreCanvasMatrixClipStack(_)).Times(AnyNumber());
-  bridge.reset();
-  testing::Mock::VerifyAndClearExpectations(Host());
-}
-
 #if CANVAS2D_HIBERNATION_ENABLED
 TEST_F(Canvas2DLayerBridgeTest, TeardownWhileHibernating)
 #else
@@ -1278,13 +1216,11 @@
 }
 
 TEST_F(Canvas2DLayerBridgeTest, ImagesLockedUntilCacheLimit) {
-  // Disable deferral so we can inspect the cache state as we use the canvas.
   auto color_params =
       CanvasColorParams(kSRGBCanvasColorSpace, kF16CanvasPixelFormat, kOpaque);
   std::unique_ptr<Canvas2DLayerBridge> bridge =
       MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
-                 color_params);
-  bridge->DisableDeferral(DisableDeferralReason::kDisableDeferralReasonUnknown);
+                 color_params, true);
 
   Vector<cc::DrawImage> images = {
       cc::DrawImage(cc::CreateDiscardablePaintImage(gfx::Size(10, 10)),
@@ -1314,13 +1250,11 @@
 }
 
 TEST_F(Canvas2DLayerBridgeTest, QueuesCleanupTaskForLockedImages) {
-  // Disable deferral so we can inspect the cache state as we use the canvas.
   auto color_params =
       CanvasColorParams(kSRGBCanvasColorSpace, kF16CanvasPixelFormat, kOpaque);
   std::unique_ptr<Canvas2DLayerBridge> bridge =
       MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
-                 color_params);
-  bridge->DisableDeferral(DisableDeferralReason::kDisableDeferralReasonUnknown);
+                 color_params, true);
 
   auto image =
       cc::DrawImage(cc::CreateDiscardablePaintImage(gfx::Size(10, 10)),
@@ -1334,14 +1268,11 @@
 }
 
 TEST_F(Canvas2DLayerBridgeTest, ImageCacheOnContextLost) {
-  // Disable deferral so we use the raster canvas directly.
   auto color_params =
       CanvasColorParams(kSRGBCanvasColorSpace, kF16CanvasPixelFormat, kOpaque);
   std::unique_ptr<Canvas2DLayerBridge> bridge =
       MakeBridge(IntSize(300, 300), Canvas2DLayerBridge::kEnableAcceleration,
-                 color_params);
-  bridge->DisableDeferral(DisableDeferralReason::kDisableDeferralReasonUnknown);
-
+                 color_params, true);
   PaintFlags flags;
   Vector<cc::DrawImage> images = {
       cc::DrawImage(cc::CreateDiscardablePaintImage(gfx::Size(10, 10)),
@@ -1353,7 +1284,7 @@
   bridge->Canvas()->drawImage(images[0].paint_image(), 0u, 0u, nullptr);
 
   // Lose the context and ensure that the image provider is not used.
-  bridge->ResourceProvider()->OnContextDestroyed();
+  bridge->GetOrCreateResourceProvider()->OnContextDestroyed();
   // We should unref all images on the cache when the context is destroyed.
   EXPECT_EQ(image_decode_cache_.num_locked_images(), 0);
   image_decode_cache_.set_disallow_cache_use(true);
diff --git a/third_party/blink/renderer/platform/graphics/dark_mode_bitmap_image_classifier.cc b/third_party/blink/renderer/platform/graphics/dark_mode_bitmap_image_classifier.cc
index b2ff6d3..e6ef5b6 100644
--- a/third_party/blink/renderer/platform/graphics/dark_mode_bitmap_image_classifier.cc
+++ b/third_party/blink/renderer/platform/graphics/dark_mode_bitmap_image_classifier.cc
@@ -29,6 +29,7 @@
 const int kPixelsToSample = 1000;
 const int kBlocksCount1D = 10;
 const int kMinImageSizeForClassification1D = 24;
+const int kMaxImageSizeForClassification1D = 100;
 const float kMinOpaquePixelPercentageForForeground = 0.2;
 
 // Decision tree lower and upper thresholds for grayscale and color images.
@@ -46,8 +47,14 @@
     Image& image,
     const FloatRect& src_rect) {
   if (src_rect.Width() < kMinImageSizeForClassification1D ||
-      src_rect.Height() < kMinImageSizeForClassification1D)
+      src_rect.Height() < kMinImageSizeForClassification1D) {
     return DarkModeClassification::kApplyFilter;
+  }
+
+  if (src_rect.Width() > kMaxImageSizeForClassification1D ||
+      src_rect.Height() > kMaxImageSizeForClassification1D) {
+    return DarkModeClassification::kDoNotApplyFilter;
+  }
 
   Vector<float> features;
   Vector<SkColor> sampled_pixels;
diff --git a/third_party/blink/renderer/platform/graphics/dark_mode_bitmap_image_classifier_test.cc b/third_party/blink/renderer/platform/graphics/dark_mode_bitmap_image_classifier_test.cc
index 9af3b87..bba888a 100644
--- a/third_party/blink/renderer/platform/graphics/dark_mode_bitmap_image_classifier_test.cc
+++ b/third_party/blink/renderer/platform/graphics/dark_mode_bitmap_image_classifier_test.cc
@@ -122,10 +122,10 @@
   // Decision Tree: Apply
   // Neural Network: NA.
   EXPECT_TRUE(GetFeaturesAndClassification(
-      "/images/resources/count-down-color-test.png", &features));
+      "/images/resources/twitter_favicon.ico", &features));
   EXPECT_EQ(classifier()->ClassifyImageUsingDecisionTreeForTesting(features),
             DarkModeClassification::kApplyFilter);
-  AssertFeaturesEqual(features, {1.0f, 0.0078125f, 0.0f, 0.0f});
+  AssertFeaturesEqual(features, {1.0f, 0.0002441f, 0.542092f, 0.1500000f});
 
   // Test Case 4:
   // Color
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc
index 5e6ff9a..b4e67c83 100644
--- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc
+++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.cc
@@ -26,6 +26,7 @@
   layer_->SetIsDrawable(true);
   layer_->SetBlendBackgroundColor(false);
   layer_->SetNearestNeighbor(true);
+  layer_->SetFlipped(false);
   // TODO(cwallez@chromium.org): These flags aren't taken into account when the
   // layer is promoted to an overlay. Make sure we have fallback / emulation
   // paths to keep the rendering correct in that cases.
diff --git a/third_party/blink/renderer/platform/graphics/graphics_types.h b/third_party/blink/renderer/platform/graphics/graphics_types.h
index 16e536342..425cd594 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_types.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_types.h
@@ -124,13 +124,6 @@
   kPreferNoAcceleration,
 };
 
-// Note: enum used directly for histogram, values must not change
-enum DisableDeferralReason {
-  kDisableDeferralReasonUnknown =
-      0,  // Should not appear in production histograms
-  kDisableDeferralReasonCount,
-};
-
 enum MailboxSyncMode {
   kVerifiedSyncToken,
   kUnverifiedSyncToken,
diff --git a/third_party/blink/renderer/platform/graphics/paint/display_item.cc b/third_party/blink/renderer/platform/graphics/paint/display_item.cc
index 8a46ce1..d1de073 100644
--- a/third_party/blink/renderer/platform/graphics/paint/display_item.cc
+++ b/third_party/blink/renderer/platform/graphics/paint/display_item.cc
@@ -40,8 +40,10 @@
     case 7:
       return "PaintPhaseDescendantOutlinesOnly";
     case 8:
-      return "PaintPhaseSelection";
+      return "PaintPhaseOverlayScrollbars";
     case 9:
+      return "PaintPhaseSelection";
+    case 10:
       return "PaintPhaseTextClip";
     case DisplayItem::kPaintPhaseMax:
       return "PaintPhaseMask";
diff --git a/third_party/blink/renderer/platform/graphics/paint/display_item.h b/third_party/blink/renderer/platform/graphics/paint/display_item.h
index 4434f62..c248132 100644
--- a/third_party/blink/renderer/platform/graphics/paint/display_item.h
+++ b/third_party/blink/renderer/platform/graphics/paint/display_item.h
@@ -28,7 +28,7 @@
  public:
   enum {
     // Must be kept in sync with core/paint/PaintPhase.h.
-    kPaintPhaseMax = 10,
+    kPaintPhaseMax = 11,
   };
 
   // A display item type uniquely identifies a display item of a client.
diff --git a/third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h b/third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h
index cb226ec9..e275edc 100644
--- a/third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h
+++ b/third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h
@@ -29,8 +29,6 @@
       gr_context_ = sk_ref_sp<GrContext>(gr_context);
     } else {
       GrMockOptions mockOptions;
-      mockOptions.fConfigOptions[kBGRA_8888_GrPixelConfig] =
-          mockOptions.fConfigOptions[kRGBA_8888_GrPixelConfig];
       gr_context_ = GrContext::MakeMock(&mockOptions);
     }
     // enable all gpu features.
diff --git a/third_party/blink/renderer/platform/heap/blink_gc.cc b/third_party/blink/renderer/platform/heap/blink_gc.cc
index c645ccb..6e58baa 100644
--- a/third_party/blink/renderer/platform/heap/blink_gc.cc
+++ b/third_party/blink/renderer/platform/heap/blink_gc.cc
@@ -44,8 +44,8 @@
 
 const char* BlinkGC::ToString(BlinkGC::SweepingType type) {
   switch (type) {
-    case BlinkGC::SweepingType::kLazySweeping:
-      return "LazySweeping";
+    case BlinkGC::SweepingType::kConcurrentAndLazySweeping:
+      return "ConcurrentAndLazySweeping";
     case BlinkGC::SweepingType::kEagerSweeping:
       return "EagerSweeping";
   }
diff --git a/third_party/blink/renderer/platform/heap/blink_gc.h b/third_party/blink/renderer/platform/heap/blink_gc.h
index bd79a8b..e30792c 100644
--- a/third_party/blink/renderer/platform/heap/blink_gc.h
+++ b/third_party/blink/renderer/platform/heap/blink_gc.h
@@ -79,9 +79,10 @@
   };
 
   enum SweepingType {
-    // The sweeping task is split into chunks and scheduled lazily.
-    kLazySweeping,
-    // The sweeping task executs synchronously right after marking.
+    // The sweeping task is split into chunks and scheduled lazily and
+    // concurrently.
+    kConcurrentAndLazySweeping,
+    // The sweeping task executes synchronously right after marking.
     kEagerSweeping,
   };
 
diff --git a/third_party/blink/renderer/platform/heap/heap.cc b/third_party/blink/renderer/platform/heap/heap.cc
index 7763233..7c86d73 100644
--- a/third_party/blink/renderer/platform/heap/heap.cc
+++ b/third_party/blink/renderer/platform/heap/heap.cc
@@ -202,9 +202,8 @@
   return compaction_.get();
 }
 
-void ThreadHeap::RegisterMovingObjectReference(const char* name,
-                                               MovableReference* slot) {
-  Compaction()->RegisterMovingObjectReference(name, slot);
+void ThreadHeap::RegisterMovingObjectReference(MovableReference* slot) {
+  Compaction()->RegisterMovingObjectReference(slot);
 }
 
 void ThreadHeap::RegisterMovingObjectCallback(MovableReference* slot,
@@ -599,11 +598,12 @@
 }
 
 bool ThreadHeap::AdvanceLazySweep(base::TimeTicks deadline) {
+  static const base::TimeDelta slack = base::TimeDelta::FromSecondsD(0.001);
   for (int i = 0; i < BlinkGC::kNumberOfArenas; i++) {
     // lazySweepWithDeadline() won't check the deadline until it sweeps
     // 10 pages. So we give a small slack for safety.
-    base::TimeDelta slack = base::TimeDelta::FromSecondsD(0.001);
-    base::TimeDelta remaining_budget = deadline - slack - CurrentTimeTicks();
+    const base::TimeDelta remaining_budget =
+        deadline - slack - CurrentTimeTicks();
     if (remaining_budget <= base::TimeDelta() ||
         !arenas_[i]->LazySweepWithDeadline(deadline)) {
       return false;
@@ -612,6 +612,14 @@
   return true;
 }
 
+void ThreadHeap::ConcurrentSweep() {
+  // Concurrent sweep simply sweeps pages not calling finalizers.
+  for (size_t i = BlinkGC::kEagerSweepArenaIndex + 1;
+       i < BlinkGC::kNumberOfArenas; i++) {
+    arenas_[i]->SweepOnConcurrentThread();
+  }
+}
+
 ThreadHeap* ThreadHeap::main_thread_heap_ = nullptr;
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/heap/heap.h b/third_party/blink/renderer/platform/heap/heap.h
index 8da19b2..1956db1 100644
--- a/third_party/blink/renderer/platform/heap/heap.h
+++ b/third_party/blink/renderer/platform/heap/heap.h
@@ -223,7 +223,7 @@
   //
   // When compaction moves the object pointed to by |*slot| to |newAddress|,
   // |*slot| must be updated to hold |newAddress| instead.
-  void RegisterMovingObjectReference(const char*, MovableReference*);
+  void RegisterMovingObjectReference(MovableReference*);
 
   // Register a callback to be invoked upon moving the object starting at
   // |reference|; see |MovingObjectCallback| documentation for details.
@@ -362,6 +362,8 @@
 
   bool AdvanceLazySweep(base::TimeTicks deadline);
 
+  void ConcurrentSweep();
+
   void PrepareForSweep();
   void RemoveAllPages();
   void CompleteSweep();
diff --git a/third_party/blink/renderer/platform/heap/heap_compact.cc b/third_party/blink/renderer/platform/heap/heap_compact.cc
index 2a4259e9..7db1ce90 100644
--- a/third_party/blink/renderer/platform/heap/heap_compact.cc
+++ b/third_party/blink/renderer/platform/heap/heap_compact.cc
@@ -8,6 +8,7 @@
 
 #include "base/debug/alias.h"
 #include "base/memory/ptr_util.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/heap/heap_stats_collector.h"
 #include "third_party/blink/renderer/platform/histogram.h"
@@ -33,227 +34,23 @@
   ~MovableObjectFixups() = default;
 
   // For the arenas being compacted, record all pages belonging to them.
-  // This is needed to handle 'interior slots', pointers that themselves
-  // can move (independently from the reference the slot points to.)
-  void AddCompactingPage(BasePage* page) {
-    DCHECK(!page->IsLargeObjectPage());
-    relocatable_pages_.insert(page);
-  }
+  // This is needed to handle interior pointers that reside on areas that are
+  // compacted themselves.
+  void AddCompactingPage(BasePage* page);
 
-  void AddOrFilter(MovableReference* slot, const char* name) {
-    MovableReference value = *slot;
-    CHECK(value);
+  // Adds a slot for compaction. Filters slots in dead objects.
+  void AddOrFilter(MovableReference* slot);
 
-    // All slots and values are part of Oilpan's heap.
-    // - Slots may be contained within dead objects if e.g. the write barrier
-    //   registered the slot while the out backing itself has not been marked
-    //   live in time. Slots in dead objects are filtered below.
-    // - Values may only be contained in or point to live objects.
-
-    // Slots handling.
-    BasePage* const slot_page =
-        heap_->LookupPageForAddress(reinterpret_cast<Address>(slot));
-    CHECK(slot_page);
-    HeapObjectHeader* const header =
-        slot_page->IsLargeObjectPage()
-            ? static_cast<LargeObjectPage*>(slot_page)->ObjectHeader()
-            : static_cast<NormalPage*>(slot_page)->FindHeaderFromAddress(
-                  reinterpret_cast<Address>(slot));
-    CHECK(header);
-    // Filter the slot since the object that contains the slot is dead.
-    if (!header->IsMarked())
-      return;
-
-    // Value handling.
-    BasePage* const value_page =
-        heap_->LookupPageForAddress(reinterpret_cast<Address>(value));
-    CHECK(value_page);
-
-    // The following cases are not compacted and do not require recording:
-    // - Backings in large pages.
-    // - Inline backings that are part of a non-backing arena.
-    if (value_page->IsLargeObjectPage() ||
-        !HeapCompact::IsCompactableArena(value_page->Arena()->ArenaIndex()))
-      return;
-
-    // Slots must reside in and values must point to live objects at this
-    // point, with the exception of slots in eagerly swept arenas where objects
-    // have already been processed. |value| usually points to a separate
-    // backing store but can also point to inlined storage which is why the
-    // dynamic header lookup is required.
-    HeapObjectHeader* const value_header =
-        static_cast<NormalPage*>(value_page)
-            ->FindHeaderFromAddress(reinterpret_cast<Address>(value));
-    CHECK(value_header);
-    CHECK(value_header->IsMarked());
-
-    // Slots may have been recorded already but must point to the same
-    // value. Example: Ephemeron iterations may register slots multiple
-    // times.
-    auto fixup_it = fixups_.find(value);
-    if (UNLIKELY(fixup_it != fixups_.end())) {
-      CHECK_EQ(slot, fixup_it->second);
-      return;
-    }
-
-    // Add regular fixup.
-    fixups_.insert({value, slot});
-    fixup_names_.insert({slot, name});
-
-    // Check whether the slot itself resides on a page that is compacted.
-    if (LIKELY(!relocatable_pages_.Contains(slot_page)))
-      return;
-
-    auto interior_it = interior_fixups_.find(slot);
-    CHECK(interior_fixups_.end() == interior_it);
-    interior_fixups_.insert({slot, nullptr});
-#if DCHECK_IS_ON()
-    interior_slot_to_object_.insert(slot, header->Payload());
-#endif  // DCHECK_IS_ON()
-    LOG_HEAP_COMPACTION() << "Interior slot: " << slot;
-  }
-
+  // Adds a callback that is invoked when a given slot is compacted.
   void AddFixupCallback(MovableReference* slot,
                         MovingObjectCallback callback,
-                        void* callback_data) {
-    DCHECK(!fixup_callbacks_.Contains(slot));
-    fixup_callbacks_.insert(
-        slot, std::pair<void*, MovingObjectCallback>(callback_data, callback));
-  }
+                        void* callback_data);
 
-  void RelocateInteriorFixups(Address from, Address to, size_t size) {
-    // |from| is a valid address for a slot.
-    auto interior_it =
-        interior_fixups_.lower_bound(reinterpret_cast<MovableReference*>(from));
-    if (interior_it == interior_fixups_.end())
-      return;
+  // Relocates a backing store |from| -> |to|.
+  void Relocate(Address from, Address to);
 
-    CHECK_GE(reinterpret_cast<Address>(interior_it->first), from);
-    size_t offset = reinterpret_cast<Address>(interior_it->first) - from;
-    while (offset < size) {
-      if (!interior_it->second) {
-        // Update the interior fixup value, so that when the object the slot is
-        // pointing to is moved, it can re-use this value.
-        Address fixup = to + offset;
-        interior_it->second = fixup;
-
-        // If the |slot|'s content is pointing into the region [from, from +
-        // size) we are dealing with an interior pointer that does not point to
-        // a valid HeapObjectHeader. Such references need to be fixed up
-        // immediately.
-        Address fixup_contents = *reinterpret_cast<Address*>(fixup);
-        if (fixup_contents > from && fixup_contents < (from + size)) {
-          *reinterpret_cast<Address*>(fixup) = fixup_contents - from + to;
-        }
-      }
-
-      interior_it++;
-      if (interior_it == interior_fixups_.end())
-        return;
-      offset = reinterpret_cast<Address>(interior_it->first) - from;
-    }
-  }
-
-  void Relocate(Address from, Address to) {
-#if DCHECK_IS_ON()
-    moved_objects_.insert(from);
-#endif  // DCHECK_IS_ON()
-
-    // Interior slots always need to be processed for moved objects.
-    // Consider an object A with slot A.x pointing to value B where A is
-    // allocated on a movable page itself. When B is finally moved, it needs to
-    // find the corresponding slot A.x. Object A may be moved already and the
-    // memory may have been freed, which would result in a crash.
-    if (!interior_fixups_.empty()) {
-      RelocateInteriorFixups(from, to,
-                             HeapObjectHeader::FromPayload(to)->PayloadSize());
-    }
-
-    auto it = fixups_.find(from);
-    // This means that there is no corresponding slot for a live backing store.
-    // This may happen because a mutator may change the slot to point to a
-    // different backing store because e.g.:
-    // - Incremental marking marked a backing store as live that was later on
-    //   replaced.
-    // - Backings were changed when being processed in
-    //   EagerSweep/PreFinalizer/WeakProcessing.
-    if (it == fixups_.end())
-      return;
-
-#if DCHECK_IS_ON()
-    BasePage* from_page = PageFromObject(from);
-    DCHECK(relocatable_pages_.Contains(from_page));
-#endif
-
-    // TODO(keishi): Code to determine if crash is related to interior fixups.
-    // Remove when finished. crbug.com/918064
-    enum DebugSlotType {
-      kNormalSlot,
-      kInteriorSlotPreMove,
-      kInteriorSlotPostMove,
-    };
-    DebugSlotType slot_type = kNormalSlot;
-    base::debug::Alias(&slot_type);
-
-    // TODO(918064): Remove this after getting the type of the object that
-    // crashes compaction.
-    constexpr size_t kMaxNameLen = 256;
-    char slot_container_name[kMaxNameLen];
-    base::debug::Alias(slot_container_name);
-
-    // If the object is referenced by a slot that is contained on a compacted
-    // area itself, check whether it can be updated already.
-    MovableReference* slot = reinterpret_cast<MovableReference*>(it->second);
-    auto interior_it = interior_fixups_.find(slot);
-    if (interior_it != interior_fixups_.end()) {
-      MovableReference* slot_location =
-          reinterpret_cast<MovableReference*>(interior_it->second);
-      if (!slot_location) {
-        interior_it->second = to;
-        slot_type = kInteriorSlotPreMove;
-        const char* name = fixup_names_.find(slot)->second;
-        size_t len = strlen(name);
-        if (len > kMaxNameLen)
-          len = kMaxNameLen;
-        strncpy(slot_container_name, name, len);
-        slot_container_name[len - 1] = 0;
-#if DCHECK_IS_ON()
-        // Check that the containing object has not been moved yet.
-        auto reverse_it = interior_slot_to_object_.find(slot);
-        DCHECK(interior_slot_to_object_.end() != reverse_it);
-        DCHECK(moved_objects_.end() == moved_objects_.find(reverse_it->value));
-#endif  // DCHECK_IS_ON()
-      } else {
-        LOG_HEAP_COMPACTION()
-            << "Redirected slot: " << slot << " => " << slot_location;
-        slot = slot_location;
-        slot_type = kInteriorSlotPostMove;
-      }
-    }
-
-    // If the slot has subsequently been updated, e.g. a destructor having
-    // mutated and expanded/shrunk the collection, do not update and relocate
-    // the slot -- |from| is no longer valid and referenced.
-    if (UNLIKELY(*slot != from)) {
-      LOG_HEAP_COMPACTION()
-          << "No relocation: slot = " << slot << ", *slot = " << *slot
-          << ", from = " << from << ", to = " << to;
-      VerifyUpdatedSlot(slot);
-      return;
-    }
-
-    // Update the slots new value.
-    *slot = to;
-
-    // Execute potential fixup callbacks.
-    MovableReference* callback_slot =
-        reinterpret_cast<MovableReference*>(it->second);
-    auto callback = fixup_callbacks_.find(callback_slot);
-    if (UNLIKELY(callback != fixup_callbacks_.end())) {
-      callback->value.second(callback->value.first, from, to,
-                             HeapObjectHeader::FromPayload(to)->PayloadSize());
-    }
-  }
+  // Relocates interior slots in a backing store that is moved |from| -> |to|.
+  void RelocateInteriorFixups(Address from, Address to, size_t size);
 
 #if DEBUG_HEAP_COMPACTION
   void dumpDebugStats() {
@@ -265,50 +62,14 @@
   }
 #endif
 
-  void VerifySlots() {
-    // TODO(918064): Remove this after investigation.
-    constexpr size_t kMaxNameLen = 256;
-    char slot_container_name[kMaxNameLen];
-    base::debug::Alias(slot_container_name);
-
-    for (auto it : fixups_) {
-      MovableReference object = it.first;
-      MovableReference* slot = it.second;
-      // Record name on stack.
-      auto name_it = fixup_names_.find(slot);
-      CHECK(fixup_names_.end() != name_it);
-      const char* name = name_it->second;
-      size_t len = strlen(name);
-      if (len > kMaxNameLen)
-        len = kMaxNameLen;
-      strncpy(slot_container_name, name, len);
-      slot_container_name[len - 1] = 0;
-      // Verify that slot either
-      // - points to the original object
-      // - points to null
-      // - points to a cleared hashtable entry
-      // - or points to a newly allocated object that will not be compacted.
-      MovableReference object_in_slot = *slot;
-      CHECK(object_in_slot == object || !object_in_slot ||
-            object_in_slot == reinterpret_cast<MovableReference>(-1) ||
-            !relocatable_pages_.Contains(heap_->LookupPageForAddress(
-                reinterpret_cast<Address>(object_in_slot))));
-    }
-  }
-
  private:
   void VerifyUpdatedSlot(MovableReference* slot);
 
   ThreadHeap* const heap_;
 
-  // Tracking movable and updatable references. For now, we keep a
-  // map which for each movable object, recording the slot that
-  // points to it. Upon moving the object, that slot needs to be
-  // updated.
-  //
-  // (TODO: consider in-place updating schemes.)
-  std::unordered_map<MovableReference, MovableReference*> fixups_;
-  std::unordered_map<MovableReference*, const char*> fixup_names_;
+  // Map from movable reference (value) to its slots. Upon moving an object its
+  // slot pointing to it requires updating.
+  HashMap<MovableReference, MovableReference*> fixups_;
 
   // Map from movable reference to callbacks that need to be invoked
   // when the object moves.
@@ -337,6 +98,201 @@
 #endif  // DCHECK_IS_ON()
 };
 
+void HeapCompact::MovableObjectFixups::AddCompactingPage(BasePage* page) {
+  DCHECK(!page->IsLargeObjectPage());
+  relocatable_pages_.insert(page);
+}
+
+void HeapCompact::MovableObjectFixups::AddFixupCallback(
+    MovableReference* slot,
+    MovingObjectCallback callback,
+    void* callback_data) {
+  DCHECK(!fixup_callbacks_.Contains(slot));
+  fixup_callbacks_.insert(
+      slot, std::pair<void*, MovingObjectCallback>(callback_data, callback));
+}
+
+void HeapCompact::MovableObjectFixups::AddOrFilter(MovableReference* slot) {
+  MovableReference value = *slot;
+  CHECK(value);
+
+  // All slots and values are part of Oilpan's heap.
+  // - Slots may be contained within dead objects if e.g. the write barrier
+  //   registered the slot while the out backing itself has not been marked
+  //   live in time. Slots in dead objects are filtered below.
+  // - Values may only be contained in or point to live objects.
+
+  // Slots handling.
+  BasePage* const slot_page =
+      heap_->LookupPageForAddress(reinterpret_cast<Address>(slot));
+  CHECK(slot_page);
+  HeapObjectHeader* const header =
+      slot_page->IsLargeObjectPage()
+          ? static_cast<LargeObjectPage*>(slot_page)->ObjectHeader()
+          : static_cast<NormalPage*>(slot_page)->FindHeaderFromAddress(
+                reinterpret_cast<Address>(slot));
+  CHECK(header);
+  // Filter the slot since the object that contains the slot is dead.
+  if (!header->IsMarked())
+    return;
+
+  // Value handling.
+  BasePage* const value_page =
+      heap_->LookupPageForAddress(reinterpret_cast<Address>(value));
+  CHECK(value_page);
+
+  // The following cases are not compacted and do not require recording:
+  // - Backings in large pages.
+  // - Inline backings that are part of a non-backing arena.
+  if (value_page->IsLargeObjectPage() ||
+      !HeapCompact::IsCompactableArena(value_page->Arena()->ArenaIndex()))
+    return;
+
+  // Slots must reside in and values must point to live objects at this
+  // point, with the exception of slots in eagerly swept arenas where objects
+  // have already been processed. |value| usually points to a separate
+  // backing store but can also point to inlined storage which is why the
+  // dynamic header lookup is required.
+  HeapObjectHeader* const value_header =
+      static_cast<NormalPage*>(value_page)
+          ->FindHeaderFromAddress(reinterpret_cast<Address>(value));
+  CHECK(value_header);
+  CHECK(value_header->IsMarked());
+
+  // Slots may have been recorded already but must point to the same
+  // value. Example: Ephemeron iterations may register slots multiple
+  // times.
+  auto fixup_it = fixups_.find(value);
+  if (UNLIKELY(fixup_it != fixups_.end())) {
+    CHECK_EQ(slot, fixup_it->value);
+    return;
+  }
+
+  // Add regular fixup.
+  fixups_.insert(value, slot);
+
+  // Check whether the slot itself resides on a page that is compacted.
+  if (LIKELY(!relocatable_pages_.Contains(slot_page)))
+    return;
+
+  auto interior_it = interior_fixups_.find(slot);
+  CHECK(interior_fixups_.end() == interior_it);
+  interior_fixups_.insert({slot, nullptr});
+#if DCHECK_IS_ON()
+  interior_slot_to_object_.insert(slot, header->Payload());
+#endif  // DCHECK_IS_ON()
+  LOG_HEAP_COMPACTION() << "Interior slot: " << slot;
+}
+
+void HeapCompact::MovableObjectFixups::Relocate(Address from, Address to) {
+#if DCHECK_IS_ON()
+    moved_objects_.insert(from);
+#endif  // DCHECK_IS_ON()
+
+    // Interior slots always need to be processed for moved objects.
+    // Consider an object A with slot A.x pointing to value B where A is
+    // allocated on a movable page itself. When B is finally moved, it needs to
+    // find the corresponding slot A.x. Object A may be moved already and the
+    // memory may have been freed, which would result in a crash.
+    if (!interior_fixups_.empty()) {
+      RelocateInteriorFixups(from, to,
+                             HeapObjectHeader::FromPayload(to)->PayloadSize());
+    }
+
+    auto it = fixups_.find(from);
+    // This means that there is no corresponding slot for a live backing store.
+    // This may happen because a mutator may change the slot to point to a
+    // different backing store because e.g. incremental marking marked a backing
+    // store as live that was later on replaced.
+    if (it == fixups_.end())
+      return;
+
+#if DCHECK_IS_ON()
+    BasePage* from_page = PageFromObject(from);
+    DCHECK(relocatable_pages_.Contains(from_page));
+#endif
+
+    // If the object is referenced by a slot that is contained on a compacted
+    // area itself, check whether it can be updated already.
+    MovableReference* slot = reinterpret_cast<MovableReference*>(it->value);
+    auto interior_it = interior_fixups_.find(slot);
+    if (interior_it != interior_fixups_.end()) {
+      MovableReference* slot_location =
+          reinterpret_cast<MovableReference*>(interior_it->second);
+      if (!slot_location) {
+        interior_it->second = to;
+#if DCHECK_IS_ON()
+        // Check that the containing object has not been moved yet.
+        auto reverse_it = interior_slot_to_object_.find(slot);
+        DCHECK(interior_slot_to_object_.end() != reverse_it);
+        DCHECK(moved_objects_.end() == moved_objects_.find(reverse_it->value));
+#endif  // DCHECK_IS_ON()
+      } else {
+        LOG_HEAP_COMPACTION()
+            << "Redirected slot: " << slot << " => " << slot_location;
+        slot = slot_location;
+      }
+    }
+
+    // If the slot has subsequently been updated, e.g. a destructor having
+    // mutated and expanded/shrunk the collection, do not update and relocate
+    // the slot -- |from| is no longer valid and referenced.
+    if (UNLIKELY(*slot != from)) {
+      LOG_HEAP_COMPACTION()
+          << "No relocation: slot = " << slot << ", *slot = " << *slot
+          << ", from = " << from << ", to = " << to;
+      VerifyUpdatedSlot(slot);
+      return;
+    }
+
+    // Update the slots new value.
+    *slot = to;
+
+    // Execute potential fixup callbacks.
+    MovableReference* callback_slot =
+        reinterpret_cast<MovableReference*>(it->value);
+    auto callback = fixup_callbacks_.find(callback_slot);
+    if (UNLIKELY(callback != fixup_callbacks_.end())) {
+      callback->value.second(callback->value.first, from, to,
+                             HeapObjectHeader::FromPayload(to)->PayloadSize());
+    }
+}
+
+void HeapCompact::MovableObjectFixups::RelocateInteriorFixups(Address from,
+                                                              Address to,
+                                                              size_t size) {
+  // |from| is a valid address for a slot.
+  auto interior_it =
+      interior_fixups_.lower_bound(reinterpret_cast<MovableReference*>(from));
+  if (interior_it == interior_fixups_.end())
+    return;
+
+  CHECK_GE(reinterpret_cast<Address>(interior_it->first), from);
+  size_t offset = reinterpret_cast<Address>(interior_it->first) - from;
+  while (offset < size) {
+    if (!interior_it->second) {
+      // Update the interior fixup value, so that when the object the slot is
+      // pointing to is moved, it can re-use this value.
+      Address fixup = to + offset;
+      interior_it->second = fixup;
+
+      // If the |slot|'s content is pointing into the region [from, from +
+      // size) we are dealing with an interior pointer that does not point to
+      // a valid HeapObjectHeader. Such references need to be fixed up
+      // immediately.
+      Address fixup_contents = *reinterpret_cast<Address*>(fixup);
+      if (fixup_contents > from && fixup_contents < (from + size)) {
+        *reinterpret_cast<Address*>(fixup) = fixup_contents - from + to;
+      }
+    }
+
+    interior_it++;
+    if (interior_it == interior_fixups_.end())
+      return;
+    offset = reinterpret_cast<Address>(interior_it->first) - from;
+  }
+}
+
 void HeapCompact::MovableObjectFixups::VerifyUpdatedSlot(
     MovableReference* slot) {
 // Verify that the already updated slot is valid, meaning:
@@ -404,7 +360,7 @@
     return true;
   }
 
-  if (!RuntimeEnabledFeatures::HeapCompactionEnabled()) {
+  if (!base::FeatureList::IsEnabled(blink::features::kBlinkHeapCompaction)) {
     return false;
   }
 
@@ -418,7 +374,8 @@
 }
 
 void HeapCompact::Initialize(ThreadState* state) {
-  CHECK(force_for_next_gc_ || RuntimeEnabledFeatures::HeapCompactionEnabled());
+  CHECK(force_for_next_gc_ ||
+        base::FeatureList::IsEnabled(blink::features::kBlinkHeapCompaction));
   CHECK(!do_compact_);
   CHECK(!fixups_);
   LOG_HEAP_COMPACTION() << "Compacting: free=" << free_list_size_;
@@ -427,15 +384,13 @@
   force_for_next_gc_ = false;
 }
 
-void HeapCompact::RegisterMovingObjectReference(const char* name,
-                                                MovableReference* slot) {
+void HeapCompact::RegisterMovingObjectReference(MovableReference* slot) {
   CHECK(heap_->LookupPageForAddress(reinterpret_cast<Address>(slot)));
 
   if (!do_compact_)
     return;
 
   traced_slots_.insert(slot);
-  traced_slots_names_.insert(slot, name);
 }
 
 void HeapCompact::RegisterMovingObjectCallback(MovableReference* slot,
@@ -498,13 +453,6 @@
   Fixups().Relocate(from, to);
 }
 
-void HeapCompact::VerifySlots() {
-  if (!do_compact_)
-    return;
-
-  Fixups().VerifySlots();
-}
-
 void HeapCompact::FilterNonLiveSlots() {
   if (!do_compact_)
     return;
@@ -512,12 +460,11 @@
   last_fixup_count_for_testing_ = 0;
   for (auto** slot : traced_slots_) {
     if (*slot) {
-      Fixups().AddOrFilter(slot, traced_slots_names_.find(slot)->value);
+      Fixups().AddOrFilter(slot);
       last_fixup_count_for_testing_++;
     }
   }
   traced_slots_.clear();
-  traced_slots_names_.clear();
 }
 
 void HeapCompact::Finish() {
@@ -538,7 +485,6 @@
 
   last_fixup_count_for_testing_ = 0;
   traced_slots_.clear();
-  traced_slots_names_.clear();
   fixups_.reset();
   do_compact_ = false;
 }
diff --git a/third_party/blink/renderer/platform/heap/heap_compact.h b/third_party/blink/renderer/platform/heap/heap_compact.h
index baf8800..e79e12d6 100644
--- a/third_party/blink/renderer/platform/heap/heap_compact.h
+++ b/third_party/blink/renderer/platform/heap/heap_compact.h
@@ -63,10 +63,10 @@
     return do_compact_ && (compactable_arenas_ & (0x1u << arena_index));
   }
 
-  // See |Heap::registerMovingObjectReference()| documentation.
-  void RegisterMovingObjectReference(const char* name, MovableReference* slot);
+  // See |Heap::RegisterMovingObjectReference()| documentation.
+  void RegisterMovingObjectReference(MovableReference* slot);
 
-  // See |Heap::registerMovingObjectCallback()| documentation.
+  // See |Heap::RegisterMovingObjectCallback()| documentation.
   void RegisterMovingObjectCallback(MovableReference*,
                                     MovingObjectCallback,
                                     void* callback_data);
@@ -77,10 +77,6 @@
   // die before being reached by the marker.
   void FilterNonLiveSlots();
 
-  // Verifies that all recorded slots are in consistent state, i.e., either
-  // point to valid objects that can be compacted or are cleared.
-  void VerifySlots();
-
   // Finishes compaction and clears internal state.
   void Finish();
 
@@ -142,7 +138,6 @@
   // marking phases. The mapping between the slots and the backing stores are
   // created at the atomic pause phase.
   HashSet<MovableReference*> traced_slots_;
-  HashMap<MovableReference*, const char*> traced_slots_names_;
 
   // Set to |true| when a compacting sweep will go ahead.
   bool do_compact_ = false;
diff --git a/third_party/blink/renderer/platform/heap/heap_page.cc b/third_party/blink/renderer/platform/heap/heap_page.cc
index 819655f0..3d29a279 100644
--- a/third_party/blink/renderer/platform/heap/heap_page.cc
+++ b/third_party/blink/renderer/platform/heap/heap_page.cc
@@ -216,7 +216,7 @@
     page->MarkAsSwept();
   }
 
-  swept_pages_ = std::move(unswept_pages_);
+  swept_pages_.MoveFrom(std::move(unswept_pages_));
   DCHECK(SweepingAndFinalizationCompleted());
 
   VerifyObjectStartBitmap();
@@ -249,7 +249,7 @@
   }
 
   // Move all pages to a list of unswept pages.
-  unswept_pages_ = std::move(swept_pages_);
+  unswept_pages_.MoveFrom(std::move(swept_pages_));
   DCHECK(swept_pages_.IsEmpty());
 }
 
@@ -286,9 +286,9 @@
 bool BaseArena::SweepUnsweptPageOnConcurrentThread(BasePage* page) {
   const bool is_empty = page->Sweep(FinalizeType::kDeferred);
   if (is_empty) {
-    swept_unfinalized_empty_pages_.Push(page);
+    swept_unfinalized_empty_pages_.PushLocked(page);
   } else {
-    swept_unfinalized_pages_.Push(page);
+    swept_unfinalized_pages_.PushLocked(page);
   }
   return is_empty;
 }
@@ -300,7 +300,7 @@
   } else {
     // First, we add page to the list of swept pages
     // so that the FindPageFromAddress check is happy.
-    swept_pages_.Push(page);
+    swept_pages_.PushLocked(page);
     page->FinalizeSweep(SweepResult::kPageNotEmpty);
   }
   return is_empty;
@@ -321,7 +321,7 @@
   // TODO(bikineev): We should probably process pages in the reverse order. This
   // will leave more work for concurrent sweeper and reduce memory footprint
   // faster.
-  while (BasePage* page = unswept_pages_.Pop()) {
+  while (BasePage* page = unswept_pages_.PopLocked()) {
     SweepUnsweptPage(page);
     if (page_count % kDeadlineCheckInterval == 0) {
       if (deadline <= CurrentTimeTicks()) {
@@ -331,8 +331,8 @@
     }
     page_count++;
   }
-  while (BasePage* page = swept_unfinalized_pages_.Pop()) {
-    swept_pages_.Push(page);
+  while (BasePage* page = swept_unfinalized_pages_.PopLocked()) {
+    swept_pages_.PushLocked(page);
     page->FinalizeSweep(SweepResult::kPageNotEmpty);
     if (page_count % kDeadlineCheckInterval == 0) {
       if (deadline <= CurrentTimeTicks()) {
@@ -342,7 +342,7 @@
     }
     page_count++;
   }
-  while (BasePage* page = swept_unfinalized_empty_pages_.Pop()) {
+  while (BasePage* page = swept_unfinalized_empty_pages_.PopLocked()) {
     page->FinalizeSweep(SweepResult::kPageEmpty);
     if (page_count % kDeadlineCheckInterval == 0) {
       if (deadline <= CurrentTimeTicks()) {
@@ -357,7 +357,7 @@
 }
 
 void BaseArena::SweepOnConcurrentThread() {
-  while (BasePage* page = unswept_pages_.Pop()) {
+  while (BasePage* page = unswept_pages_.PopLocked()) {
     SweepUnsweptPageOnConcurrentThread(page);
   }
 }
@@ -370,15 +370,15 @@
   // Some phases, e.g. verification, require iterability of a page.
   MakeIterable();
 
-  while (BasePage* page = unswept_pages_.Pop()) {
+  while (BasePage* page = unswept_pages_.PopLocked()) {
     SweepUnsweptPage(page);
   }
 
-  while (BasePage* page = swept_unfinalized_pages_.Pop()) {
-    swept_pages_.Push(page);
+  while (BasePage* page = swept_unfinalized_pages_.PopLocked()) {
+    swept_pages_.PushLocked(page);
     page->FinalizeSweep(SweepResult::kPageNotEmpty);
   }
-  while (BasePage* page = swept_unfinalized_empty_pages_.Pop()) {
+  while (BasePage* page = swept_unfinalized_empty_pages_.PopLocked()) {
     page->FinalizeSweep(SweepResult::kPageEmpty);
   }
 
@@ -670,7 +670,7 @@
   }
   NormalPage* page =
       new (page_memory->WritableStart()) NormalPage(page_memory, this);
-  swept_pages_.Push(page);
+  swept_pages_.PushLocked(page);
 
   GetThreadState()->Heap().stats_collector()->IncreaseAllocatedSpace(
       page->size());
@@ -827,8 +827,8 @@
   Address result = nullptr;
   // First, process unfinalized pages as finalizing a page is faster than
   // sweeping.
-  while (BasePage* page = swept_unfinalized_pages_.Pop()) {
-    swept_pages_.Push(page);
+  while (BasePage* page = swept_unfinalized_pages_.PopLocked()) {
+    swept_pages_.PushLocked(page);
     page->FinalizeSweep(SweepResult::kPageNotEmpty);
     // For NormalPage, stop lazy sweeping once we find a slot to
     // allocate a new object.
@@ -836,7 +836,7 @@
     if (result)
       return result;
   }
-  while (BasePage* page = unswept_pages_.Pop()) {
+  while (BasePage* page = unswept_pages_.PopLocked()) {
     const bool is_empty = SweepUnsweptPage(page);
     if (!is_empty) {
       // For NormalPage, stop lazy sweeping once we find a slot to
@@ -1002,7 +1002,7 @@
   ASAN_POISON_MEMORY_REGION(large_object->GetAddress() + large_object->size(),
                             kAllocationGranularity);
 
-  swept_pages_.Push(large_object);
+  swept_pages_.PushLocked(large_object);
 
   GetThreadState()->Heap().stats_collector()->IncreaseAllocatedSpace(
       large_object->size());
@@ -1032,7 +1032,7 @@
                                          size_t gc_info_index) {
   Address result = nullptr;
   size_t swept_size = 0;
-  while (BasePage* page = unswept_pages_.Pop()) {
+  while (BasePage* page = unswept_pages_.PopLocked()) {
     if (page->Sweep(FinalizeType::kInlined)) {
       swept_size += static_cast<LargeObjectPage*>(page)->ObjectSize();
       page->RemoveFromHeap();
@@ -1044,7 +1044,7 @@
         break;
       }
     } else {
-      swept_pages_.Push(page);
+      swept_pages_.PushLocked(page);
       page->MarkAsSwept();
     }
   }
diff --git a/third_party/blink/renderer/platform/heap/heap_page.h b/third_party/blink/renderer/platform/heap/heap_page.h
index 2884aaf..3b0fe93b 100644
--- a/third_party/blink/renderer/platform/heap/heap_page.h
+++ b/third_party/blink/renderer/platform/heap/heap_page.h
@@ -46,6 +46,7 @@
 #include "third_party/blink/renderer/platform/wtf/container_annotations.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
 #include "third_party/blink/renderer/platform/wtf/sanitizers.h"
+#include "third_party/blink/renderer/platform/wtf/threading_primitives.h"
 
 namespace base {
 namespace trace_event {
@@ -528,6 +529,30 @@
   using Base::size;
 };
 
+class PageStackThreadSafe : public PageStack {
+ public:
+  void PushLocked(BasePage* page) {
+    WTF::MutexLocker locker(mutex_);
+    Push(page);
+  }
+
+  BasePage* PopLocked() {
+    WTF::MutexLocker locker(mutex_);
+    return Pop();
+  }
+
+  bool IsEmptyLocked() const {
+    WTF::MutexLocker locker(mutex_);
+    return IsEmpty();
+  }
+
+  // Explicit unsafe move assignment.
+  void MoveFrom(PageStack&& other) { PageStack::operator=(std::move(other)); }
+
+ private:
+  mutable WTF::Mutex mutex_;
+};
+
 // A bitmap for recording object starts. Objects have to be allocated at
 // minimum granularity of kGranularity.
 //
@@ -835,20 +860,21 @@
   virtual void VerifyObjectStartBitmap() {}
 
  protected:
-  bool SweepingCompleted() const { return unswept_pages_.IsEmpty(); }
+  bool SweepingCompleted() const { return unswept_pages_.IsEmptyLocked(); }
   bool SweepingAndFinalizationCompleted() const {
-    return unswept_pages_.IsEmpty() && swept_unfinalized_pages_.IsEmpty() &&
-           swept_unfinalized_empty_pages_.IsEmpty();
+    return unswept_pages_.IsEmptyLocked() &&
+           swept_unfinalized_pages_.IsEmptyLocked() &&
+           swept_unfinalized_empty_pages_.IsEmptyLocked();
   }
 
   // Pages for allocation.
-  PageStack swept_pages_;
+  PageStackThreadSafe swept_pages_;
   // Pages that are being swept.
-  PageStack unswept_pages_;
+  PageStackThreadSafe unswept_pages_;
   // Pages that have been swept but contain unfinalized objects.
-  PageStack swept_unfinalized_pages_;
+  PageStackThreadSafe swept_unfinalized_pages_;
   // Pages that have been swept and need to be removed from the heap.
-  PageStack swept_unfinalized_empty_pages_;
+  PageStackThreadSafe swept_unfinalized_empty_pages_;
 
  private:
   virtual Address LazySweepPages(size_t, size_t gc_info_index) = 0;
diff --git a/third_party/blink/renderer/platform/heap/heap_stats_collector.h b/third_party/blink/renderer/platform/heap/heap_stats_collector.h
index df78cc9b..465fbcb 100644
--- a/third_party/blink/renderer/platform/heap/heap_stats_collector.h
+++ b/third_party/blink/renderer/platform/heap/heap_stats_collector.h
@@ -41,6 +41,36 @@
   virtual void DecreaseAllocatedObjectSize(size_t) = 0;
 };
 
+#define FOR_ALL_SCOPES(V)                  \
+  V(AtomicPhase)                           \
+  V(AtomicPhaseCompaction)                 \
+  V(AtomicPhaseMarking)                    \
+  V(AtomicSweepAndCompact)                 \
+  V(CompleteSweep)                         \
+  V(EagerSweep)                            \
+  V(IncrementalMarkingFinalize)            \
+  V(IncrementalMarkingStartMarking)        \
+  V(IncrementalMarkingStep)                \
+  V(InvokePreFinalizers)                   \
+  V(LazySweepInIdle)                       \
+  V(LazySweepOnAllocation)                 \
+  V(MarkInvokeEphemeronCallbacks)          \
+  V(MarkProcessWorklist)                   \
+  V(MarkNotFullyConstructedObjects)        \
+  V(MarkWeakProcessing)                    \
+  V(StandAloneAtomicMarking)               \
+  V(UnifiedAtomicMarkingEpilogue)          \
+  V(UnifiedAtomicMarkingPrologue)          \
+  V(UnifiedAtomicMarkingTransitiveClosure) \
+  V(UnifiedMarkingStep)                    \
+  V(VisitCrossThreadPersistents)           \
+  V(VisitDOMWrappers)                      \
+  V(VisitPersistentRoots)                  \
+  V(VisitPersistents)                      \
+  V(VisitStackRoots)
+
+#define FOR_ALL_CONCURRENT_SCOPES(V) V(ConcurrentSweep)
+
 // Manages counters and statistics across garbage collection cycles.
 //
 // Usage:
@@ -55,101 +85,41 @@
  public:
   // These ids will form human readable names when used in Scopes.
   enum Id {
-    kAtomicPhase,
-    kAtomicPhaseCompaction,
-    kAtomicPhaseMarking,
-    kAtomicSweepAndCompact,
-    kCompleteSweep,
-    kEagerSweep,
-    kIncrementalMarkingFinalize,
-    kIncrementalMarkingStartMarking,
-    kIncrementalMarkingStep,
-    kInvokePreFinalizers,
-    kLazySweepInIdle,
-    kLazySweepOnAllocation,
-    kMarkInvokeEphemeronCallbacks,
-    kMarkProcessWorklist,
-    kMarkNotFullyConstructedObjects,
-    kMarkWeakProcessing,
-    kStandAloneAtomicMarking,
-    kUnifiedAtomicMarkingEpilogue,
-    kUnifiedAtomicMarkingPrologue,
-    kUnifiedAtomicMarkingTransitiveClosure,
-    kUnifiedMarkingStep,
-    kVisitCrossThreadPersistents,
-    kVisitDOMWrappers,
-    kVisitPersistentRoots,
-    kVisitPersistents,
-    kVisitStackRoots,
-    kNumScopeIds,
+#define DECLARE_ENUM(name) k##name,
+    FOR_ALL_SCOPES(DECLARE_ENUM)
+#undef DECLARE_ENUM
+        kNumScopeIds,
   };
 
-  enum ConcurrentId { kConcurrentSweep, kNumConcurrentScopeIds };
+  enum ConcurrentId {
+#define DECLARE_ENUM(name) k##name,
+    FOR_ALL_CONCURRENT_SCOPES(DECLARE_ENUM)
+#undef DECLARE_ENUM
+        kNumConcurrentScopeIds
+  };
 
-  static const char* ToString(Id id) {
+  constexpr static const char* ToString(Id id) {
     switch (id) {
-      case kAtomicPhase:
-        return "BlinkGC.AtomicPhase";
-      case kAtomicPhaseCompaction:
-        return "BlinkGC.AtomicPhaseCompaction";
-      case kAtomicPhaseMarking:
-        return "BlinkGC.AtomicPhaseMarking";
-      case kAtomicSweepAndCompact:
-        return "BlinkGC.AtomicSweepAndCompact";
-      case kCompleteSweep:
-        return "BlinkGC.CompleteSweep";
-      case kEagerSweep:
-        return "BlinkGC.EagerSweep";
-      case kIncrementalMarkingFinalize:
-        return "BlinkGC.IncrementalMarkingFinalize";
-      case kIncrementalMarkingStartMarking:
-        return "BlinkGC.IncrementalMarkingStartMarking";
-      case kIncrementalMarkingStep:
-        return "BlinkGC.IncrementalMarkingStep";
-      case kInvokePreFinalizers:
-        return "BlinkGC.InvokePreFinalizers";
-      case kLazySweepInIdle:
-        return "BlinkGC.LazySweepInIdle";
-      case kLazySweepOnAllocation:
-        return "BlinkGC.LazySweepOnAllocation";
-      case kMarkInvokeEphemeronCallbacks:
-        return "BlinkGC.MarkInvokeEphemeronCallbacks";
-      case kMarkNotFullyConstructedObjects:
-        return "BlinkGC.MarkNotFullyConstructedObjects";
-      case kMarkProcessWorklist:
-        return "BlinkGC.MarkProcessWorklist";
-      case kMarkWeakProcessing:
-        return "BlinkGC.MarkWeakProcessing";
-      case kStandAloneAtomicMarking:
-        return "BlinkGC.StandAloneAtomicMarking";
-      case kUnifiedAtomicMarkingEpilogue:
-        return "BlinkGC.UnifiedMarkingAtomicEpilogue";
-      case kUnifiedAtomicMarkingPrologue:
-        return "BlinkGC.UnifiedMarkingAtomicPrologue";
-      case kUnifiedAtomicMarkingTransitiveClosure:
-        return "BlinkGC.UnifiedMarkingAtomicTransitiveClosure";
-      case kUnifiedMarkingStep:
-        return "BlinkGC.UnifiedMarkingStep";
-      case kVisitCrossThreadPersistents:
-        return "BlinkGC.VisitCrossThreadPersistents";
-      case kVisitDOMWrappers:
-        return "BlinkGC.VisitDOMWrappers";
-      case kVisitPersistentRoots:
-        return "BlinkGC.VisitPersistentRoots";
-      case kVisitPersistents:
-        return "BlinkGC.VisitPersistents";
-      case kVisitStackRoots:
-        return "BlinkGC.VisitStackRoots";
-      case kNumScopeIds:
+#define CASE(name) \
+  case k##name:    \
+    return "BlinkGC." #name;
+
+      FOR_ALL_SCOPES(CASE)
+#undef CASE
+      default:
         NOTREACHED();
     }
     return nullptr;
   }
 
-  static const char* ToString(ConcurrentId id) {
+  constexpr static const char* ToString(ConcurrentId id) {
     switch (id) {
-      case kConcurrentSweep:
-        return "BlinkGC.ConcurrentSweep";
+#define CASE(name) \
+  case k##name:    \
+    return "BlinkGC." #name;
+
+      FOR_ALL_CONCURRENT_SCOPES(CASE)
+#undef CASE
       default:
         NOTREACHED();
     }
@@ -423,6 +393,9 @@
   FRIEND_TEST_ALL_PREFIXES(ThreadHeapStatsCollectorTest, StopResetsCurrent);
 };
 
+#undef FOR_ALL_SCOPES
+#undef FOR_ALL_CONCURRENT_SCOPES
+
 }  // namespace blink
 
 #endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_HEAP_STATS_COLLECTOR_H_
diff --git a/third_party/blink/renderer/platform/heap/heap_test.cc b/third_party/blink/renderer/platform/heap/heap_test.cc
index ba873a9..899666b 100644
--- a/third_party/blink/renderer/platform/heap/heap_test.cc
+++ b/third_party/blink/renderer/platform/heap/heap_test.cc
@@ -1861,7 +1861,8 @@
     MakeGarbageCollected<SimpleFinalizedObject>();
   ThreadState::Current()->CollectGarbage(
       BlinkGC::kNoHeapPointersOnStack, BlinkGC::kAtomicMarking,
-      BlinkGC::kLazySweeping, BlinkGC::GCReason::kForcedGCForTesting);
+      BlinkGC::kConcurrentAndLazySweeping,
+      BlinkGC::GCReason::kForcedGCForTesting);
   EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
   for (int i = 0; i < 10000; i++)
     MakeGarbageCollected<SimpleFinalizedObject>();
@@ -1889,7 +1890,8 @@
     MakeGarbageCollected<LargeHeapObject>();
   ThreadState::Current()->CollectGarbage(
       BlinkGC::kNoHeapPointersOnStack, BlinkGC::kAtomicMarking,
-      BlinkGC::kLazySweeping, BlinkGC::GCReason::kForcedGCForTesting);
+      BlinkGC::kConcurrentAndLazySweeping,
+      BlinkGC::GCReason::kForcedGCForTesting);
   EXPECT_EQ(0, LargeHeapObject::destructor_calls_);
   for (int i = 0; i < 10; i++) {
     MakeGarbageCollected<LargeHeapObject>();
@@ -1900,7 +1902,8 @@
   EXPECT_EQ(10, LargeHeapObject::destructor_calls_);
   ThreadState::Current()->CollectGarbage(
       BlinkGC::kNoHeapPointersOnStack, BlinkGC::kAtomicMarking,
-      BlinkGC::kLazySweeping, BlinkGC::GCReason::kForcedGCForTesting);
+      BlinkGC::kConcurrentAndLazySweeping,
+      BlinkGC::GCReason::kForcedGCForTesting);
   EXPECT_EQ(10, LargeHeapObject::destructor_calls_);
   PreciselyCollectGarbage();
   EXPECT_EQ(22, LargeHeapObject::destructor_calls_);
@@ -1963,7 +1966,8 @@
     MakeGarbageCollected<SimpleFinalizedObjectInstanceOfTemplate>();
   ThreadState::Current()->CollectGarbage(
       BlinkGC::kNoHeapPointersOnStack, BlinkGC::kAtomicMarking,
-      BlinkGC::kLazySweeping, BlinkGC::GCReason::kForcedGCForTesting);
+      BlinkGC::kConcurrentAndLazySweeping,
+      BlinkGC::GCReason::kForcedGCForTesting);
   EXPECT_EQ(0, SimpleFinalizedObject::destructor_calls_);
   EXPECT_EQ(100, SimpleFinalizedEagerObject::destructor_calls_);
   EXPECT_EQ(100, SimpleFinalizedObjectInstanceOfTemplate::destructor_calls_);
@@ -6078,7 +6082,7 @@
     vector.push_back(MakeGarbageCollected<IntWrapper>(i));
   }
 
-  ConservativelyCollectGarbage(BlinkGC::kLazySweeping);
+  ConservativelyCollectGarbage(BlinkGC::kConcurrentAndLazySweeping);
 
   // The following call tries to promptly free the left overs. In the buggy
   // scenario that would create a free HeapObjectHeader that is assumed to be
diff --git a/third_party/blink/renderer/platform/heap/incremental_marking_test.cc b/third_party/blink/renderer/platform/heap/incremental_marking_test.cc
index 6312feb..ffd89bd 100644
--- a/third_party/blink/renderer/platform/heap/incremental_marking_test.cc
+++ b/third_party/blink/renderer/platform/heap/incremental_marking_test.cc
@@ -55,17 +55,15 @@
                  void** object_slot,
                  TraceDescriptor desc,
                  WeakCallback callback) final {}
-  void VisitBackingStoreStrongly(const char*,
-                                 void* object,
+  void VisitBackingStoreStrongly(void* object,
                                  void** object_slot,
                                  TraceDescriptor desc) final {}
-  void VisitBackingStoreWeakly(const char*,
-                               void*,
+  void VisitBackingStoreWeakly(void*,
                                void**,
                                TraceDescriptor,
                                WeakCallback,
                                void*) final {}
-  void VisitBackingStoreOnly(const char*, void*, void**) final {}
+  void VisitBackingStoreOnly(void*, void**) final {}
   void RegisterBackingStoreCallback(void** slot,
                                     MovingObjectCallback,
                                     void* callback_data) final {}
@@ -1676,7 +1674,7 @@
   driver.FinishSteps();
   ThreadState::Current()->CollectGarbage(
       BlinkGC::kHeapPointersOnStack, BlinkGC::kAtomicMarking,
-      BlinkGC::kLazySweeping, BlinkGC::GCReason::kConservativeGC);
+      BlinkGC::kConcurrentAndLazySweeping, BlinkGC::GCReason::kConservativeGC);
 
   // Heap compaction should be canceled if incremental marking finishes with a
   // conservative GC.
diff --git a/third_party/blink/renderer/platform/heap/marking_verifier.cc b/third_party/blink/renderer/platform/heap/marking_verifier.cc
index 9b2098c1..c1f24457 100644
--- a/third_party/blink/renderer/platform/heap/marking_verifier.cc
+++ b/third_party/blink/renderer/platform/heap/marking_verifier.cc
@@ -39,8 +39,7 @@
   VerifyChild(object, desc.base_object_payload);
 }
 
-void MarkingVerifier::VisitBackingStoreStrongly(const char*,
-                                                void* object,
+void MarkingVerifier::VisitBackingStoreStrongly(void* object,
                                                 void**,
                                                 TraceDescriptor desc) {
   if (!object)
@@ -52,8 +51,7 @@
   VerifyChild(object, desc.base_object_payload);
 }
 
-void MarkingVerifier::VisitBackingStoreWeakly(const char*,
-                                              void* object,
+void MarkingVerifier::VisitBackingStoreWeakly(void* object,
                                               void**,
                                               TraceDescriptor desc,
                                               WeakCallback,
diff --git a/third_party/blink/renderer/platform/heap/marking_verifier.h b/third_party/blink/renderer/platform/heap/marking_verifier.h
index fba209ce..920e3f5 100644
--- a/third_party/blink/renderer/platform/heap/marking_verifier.h
+++ b/third_party/blink/renderer/platform/heap/marking_verifier.h
@@ -23,20 +23,16 @@
                  TraceDescriptor desc,
                  WeakCallback callback) final;
 
-  void VisitBackingStoreStrongly(const char*,
-                                 void*,
-                                 void**,
-                                 TraceDescriptor) final;
+  void VisitBackingStoreStrongly(void*, void**, TraceDescriptor) final;
 
-  void VisitBackingStoreWeakly(const char*,
-                               void*,
+  void VisitBackingStoreWeakly(void*,
                                void**,
                                TraceDescriptor,
                                WeakCallback,
                                void*) final;
 
   // Unused overrides.
-  void VisitBackingStoreOnly(const char*, void*, void**) final {}
+  void VisitBackingStoreOnly(void*, void**) final {}
   void RegisterBackingStoreCallback(void**, MovingObjectCallback, void*) final {
   }
   void RegisterWeakCallback(void*, WeakCallback) final {}
diff --git a/third_party/blink/renderer/platform/heap/marking_visitor.cc b/third_party/blink/renderer/platform/heap/marking_visitor.cc
index d26ca31..1c9bfab 100644
--- a/third_party/blink/renderer/platform/heap/marking_visitor.cc
+++ b/third_party/blink/renderer/platform/heap/marking_visitor.cc
@@ -41,14 +41,13 @@
   weak_callback_worklist_.Push({object, callback});
 }
 
-void MarkingVisitorBase::RegisterBackingStoreReference(const char* name,
-                                                       void** slot) {
+void MarkingVisitorBase::RegisterBackingStoreReference(void** slot) {
   if (marking_mode_ != kGlobalMarkingWithCompaction)
     return;
   // TODO(mlippautz): Do not call into heap directly but rather use a Worklist
   // as temporary storage.
   Heap().RegisterMovingObjectReference(
-      name, reinterpret_cast<MovableReference*>(slot));
+      reinterpret_cast<MovableReference*>(slot));
 }
 
 void MarkingVisitorBase::RegisterBackingStoreCallback(
diff --git a/third_party/blink/renderer/platform/heap/marking_visitor.h b/third_party/blink/renderer/platform/heap/marking_visitor.h
index 9389088..3c4a767 100644
--- a/third_party/blink/renderer/platform/heap/marking_visitor.h
+++ b/third_party/blink/renderer/platform/heap/marking_visitor.h
@@ -62,24 +62,22 @@
     RegisterWeakCallback(object_slot, callback);
   }
 
-  void VisitBackingStoreStrongly(const char* name,
-                                 void* object,
+  void VisitBackingStoreStrongly(void* object,
                                  void** object_slot,
                                  TraceDescriptor desc) final {
-    RegisterBackingStoreReference(name, object_slot);
+    RegisterBackingStoreReference(object_slot);
     if (!object)
       return;
     Visit(object, desc);
   }
 
   // All work is registered through RegisterWeakCallback.
-  void VisitBackingStoreWeakly(const char* name,
-                               void* object,
+  void VisitBackingStoreWeakly(void* object,
                                void** object_slot,
                                TraceDescriptor desc,
                                WeakCallback callback,
                                void* parameter) final {
-    RegisterBackingStoreReference(name, object_slot);
+    RegisterBackingStoreReference(object_slot);
     if (!object)
       return;
     RegisterWeakCallback(parameter, callback);
@@ -88,10 +86,8 @@
   // Used to only mark the backing store when it has been registered for weak
   // processing. In this case, the contents are processed separately using
   // the corresponding traits but the backing store requires marking.
-  void VisitBackingStoreOnly(const char* name,
-                             void* object,
-                             void** object_slot) final {
-    RegisterBackingStoreReference(name, object_slot);
+  void VisitBackingStoreOnly(void* object, void** object_slot) final {
+    RegisterBackingStoreReference(object_slot);
     if (!object)
       return;
     MarkHeaderNoTracing(HeapObjectHeader::FromPayload(object));
@@ -124,7 +120,7 @@
   // transitioning an object from unmarked to marked state.
   ALWAYS_INLINE void AccountMarkedBytes(HeapObjectHeader*);
 
-  void RegisterBackingStoreReference(const char* name, void** slot);
+  void RegisterBackingStoreReference(void** slot);
 
   MarkingWorklist::View marking_worklist_;
   NotFullyConstructedWorklist::View not_fully_constructed_worklist_;
diff --git a/third_party/blink/renderer/platform/heap/thread_state.cc b/third_party/blink/renderer/platform/heap/thread_state.cc
index d5e62aa..5f64ad5 100644
--- a/third_party/blink/renderer/platform/heap/thread_state.cc
+++ b/third_party/blink/renderer/platform/heap/thread_state.cc
@@ -37,9 +37,12 @@
 
 #include "base/atomicops.h"
 #include "base/location.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/numerics/safe_conversions.h"
+#include "base/task_runner.h"
 #include "base/trace_event/process_memory_dump.h"
 #include "build/build_config.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/renderer/platform/bindings/active_script_wrappable_base.h"
 #include "third_party/blink/renderer/platform/bindings/runtime_call_stats.h"
@@ -64,7 +67,9 @@
 #include "third_party/blink/renderer/platform/instrumentation/tracing/web_process_memory_dump.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
+#include "third_party/blink/renderer/platform/scheduler/public/worker_pool.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/partitions.h"
+#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 #include "third_party/blink/renderer/platform/wtf/stack_util.h"
 #include "third_party/blink/renderer/platform/wtf/threading_primitives.h"
 #include "third_party/blink/renderer/platform/wtf/time.h"
@@ -107,6 +112,18 @@
   return base::saturated_cast<base::Histogram::Sample>(size_in_bytes / 1024);
 }
 
+class WorkerPoolTaskRunner : public base::TaskRunner {
+ public:
+  bool PostDelayedTask(const base::Location& location,
+                       base::OnceClosure task,
+                       base::TimeDelta) override {
+    worker_pool::PostTask(location, WTF::CrossThreadBindOnce(std::move(task)));
+    return true;
+  }
+
+  bool RunsTasksInCurrentSequence() const override { return false; }
+};
+
 }  // namespace
 
 ThreadState::ThreadState()
@@ -124,7 +141,8 @@
 #if defined(LEAK_SANITIZER)
       disabled_static_persistent_registration_(0),
 #endif
-      reported_memory_to_v8_(0) {
+      reported_memory_to_v8_(0),
+      sweeper_scheduler_(base::MakeRefCounted<WorkerPoolTaskRunner>()) {
   DCHECK(CheckThread());
   DCHECK(!**thread_specific_);
   **thread_specific_ = this;
@@ -206,9 +224,10 @@
   DCHECK(!IsMainThread());
   DCHECK(CheckThread());
 
-  FinishIncrementalMarkingIfRunning(
-      BlinkGC::kNoHeapPointersOnStack, BlinkGC::kIncrementalMarking,
-      BlinkGC::kLazySweeping, BlinkGC::GCReason::kThreadTerminationGC);
+  FinishIncrementalMarkingIfRunning(BlinkGC::kNoHeapPointersOnStack,
+                                    BlinkGC::kIncrementalMarking,
+                                    BlinkGC::kConcurrentAndLazySweeping,
+                                    BlinkGC::GCReason::kThreadTerminationGC);
 
   // Finish sweeping.
   CompleteSweep();
@@ -442,7 +461,8 @@
 }
 
 bool ThreadState::ShouldScheduleV8FollowupGC() {
-  if (RuntimeEnabledFeatures::HeapUnifiedGCSchedulingEnabled())
+  if (base::FeatureList::IsEnabled(
+          blink::features::kBlinkHeapUnifiedGCScheduling))
     return false;
 
   return JudgeGCThreshold(kDefaultAllocatedObjectSizeThreshold,
@@ -450,7 +470,8 @@
 }
 
 bool ThreadState::ShouldForceConservativeGC() {
-  if (RuntimeEnabledFeatures::HeapUnifiedGCSchedulingEnabled())
+  if (base::FeatureList::IsEnabled(
+          blink::features::kBlinkHeapUnifiedGCScheduling))
     return false;
 
   // TODO(haraken): 400% is too large. Lower the heap growing factor.
@@ -461,7 +482,8 @@
 // If we're consuming too much memory, trigger a conservative GC
 // aggressively. This is a safe guard to avoid OOM.
 bool ThreadState::ShouldForceMemoryPressureGC() {
-  if (RuntimeEnabledFeatures::HeapUnifiedGCSchedulingEnabled())
+  if (base::FeatureList::IsEnabled(
+          blink::features::kBlinkHeapUnifiedGCScheduling))
     return false;
 
   if (TotalMemorySize() < 300 * 1024 * 1024)
@@ -486,7 +508,8 @@
   if (ShouldScheduleV8FollowupGC()) {
     // When we want to optimize for load time, we should prioritize throughput
     // over latency and not do incremental marking.
-    if (RuntimeEnabledFeatures::HeapIncrementalMarkingEnabled() &&
+    if (base::FeatureList::IsEnabled(
+            blink::features::kBlinkHeapIncrementalMarking) &&
         !should_optimize_for_load_time_) {
       VLOG(2) << "[state:" << this << "] "
               << "ScheduleV8FollowupGCIfNeeded: Scheduled incremental v8 "
@@ -552,7 +575,7 @@
       VLOG(2) << "[state:" << this << "] "
               << "ScheduleGCIfNeeded: Scheduled memory pressure GC";
       CollectGarbage(BlinkGC::kHeapPointersOnStack, BlinkGC::kAtomicMarking,
-                     BlinkGC::kLazySweeping,
+                     BlinkGC::kConcurrentAndLazySweeping,
                      BlinkGC::GCReason::kMemoryPressureGC);
       return;
     }
@@ -564,14 +587,15 @@
       VLOG(2) << "[state:" << this << "] "
               << "ScheduleGCIfNeeded: Scheduled conservative GC";
       CollectGarbage(BlinkGC::kHeapPointersOnStack, BlinkGC::kAtomicMarking,
-                     BlinkGC::kLazySweeping,
+                     BlinkGC::kConcurrentAndLazySweeping,
                      BlinkGC::GCReason::kConservativeGC);
       return;
     }
   }
 
   if (GetGCState() == kNoGCScheduled &&
-      RuntimeEnabledFeatures::HeapIncrementalMarkingStressEnabled()) {
+      base::FeatureList::IsEnabled(
+          blink::features::kBlinkHeapIncrementalMarkingStress)) {
     VLOG(2) << "[state:" << this << "] "
             << "ScheduleGCIfNeeded: Scheduled incremental marking for testing";
     IncrementalMarkingStart(BlinkGC::GCReason::kForcedGCForTesting);
@@ -617,8 +641,21 @@
       ScheduleIdleLazySweep();
   }
 
-  if (sweep_completed)
+  if (sweep_completed) {
+    // TODO(bikineev): We need to synchronize with concurrent sweepers here
+    // using the same bottleneck as in CompleteSweep().
     PostSweep();
+  }
+}
+
+void ThreadState::PerformConcurrentSweep() {
+  VLOG(2) << "[state:" << this << "] [threadid:" << CurrentThread() << "] "
+          << "ConcurrentSweep";
+  // Concurrent sweeper doesn't call finalizers - this guarantees that sweeping
+  // is not called recursively.
+  ThreadHeapStatsCollector::EnabledConcurrentScope stats_scope(
+      Heap().stats_collector(), ThreadHeapStatsCollector::kConcurrentSweep);
+  Heap().ConcurrentSweep();
 }
 
 void ThreadState::ScheduleIncrementalMarkingStep() {
@@ -637,6 +674,23 @@
       WTF::Bind(&ThreadState::PerformIdleLazySweep, WTF::Unretained(this)));
 }
 
+void ThreadState::ScheduleConcurrentAndLazySweep() {
+  ScheduleIdleLazySweep();
+
+  if (!base::FeatureList::IsEnabled(
+          blink::features::kBlinkHeapConcurrentSweeping)) {
+    return;
+  }
+
+  static constexpr size_t kNumberOfSweepingTasks = 1u;
+
+  for (size_t i = 0; i < kNumberOfSweepingTasks; ++i) {
+    sweeper_scheduler_.ScheduleTask(
+        WTF::CrossThreadBindOnce(&ThreadState::PerformConcurrentSweep,
+                                 WTF::CrossThreadUnretained(this)));
+  }
+}
+
 void ThreadState::SchedulePreciseGC() {
   DCHECK(CheckThread());
   CompleteSweep();
@@ -764,15 +818,14 @@
   if (IsGCForbidden())
     return;
 
-  base::AutoReset<bool> precise_gc_allowed_scope(&precise_gc_allowed_, true);
-
   switch (GetGCState()) {
     case kForcedGCForTestingScheduled:
       CollectAllGarbageForTesting();
       break;
     case kPreciseGCScheduled:
       CollectGarbage(BlinkGC::kNoHeapPointersOnStack, BlinkGC::kAtomicMarking,
-                     BlinkGC::kLazySweeping, BlinkGC::GCReason::kPreciseGC);
+                     BlinkGC::kConcurrentAndLazySweeping,
+                     BlinkGC::GCReason::kPreciseGC);
       break;
     case kIncrementalMarkingStepScheduled:
       IncrementalMarkingStep(stack_state);
@@ -838,13 +891,6 @@
 
   EagerSweep();
 
-  {
-    ThreadHeapStatsCollector::Scope stats_scope(
-        Heap().stats_collector(),
-        ThreadHeapStatsCollector::kAtomicPhaseCompaction);
-    Heap().Compaction()->VerifySlots();
-  }
-
   // Any sweep compaction must happen after pre-finalizers and eager
   // sweeping, as it will finalize dead objects in compactable arenas
   // (e.g., backing stores for container objects.)
@@ -891,7 +937,7 @@
     return;
 
   {
-    // CompleteSweep may be called during regular mutator exececution, from a
+    // CompleteSweep may be called during regular mutator execution, from a
     // task, or from the atomic pause in which the atomic scope has already been
     // opened.
     const bool was_in_atomic_pause = in_atomic_pause();
@@ -904,6 +950,16 @@
         "forced",
         current_gc_data_.reason == BlinkGC::GCReason::kForcedGCForTesting);
     Heap().CompleteSweep();
+
+    // Wait for concurrent sweepers.
+    sweeper_scheduler_.CancelAndWait();
+
+    // Concurrent sweepers may perform some work at the last stage (e.g.
+    // sweeping the last page and preparing finalizers).
+    // TODO(bikineev): This should be changed to Heap.Finalize() to only call
+    // remaining finalizers, not perform complete sweeping once again.
+    Heap().CompleteSweep();
+
     if (!was_in_atomic_pause)
       LeaveAtomicPause();
   }
@@ -1146,7 +1202,8 @@
 }
 
 void ThreadState::ReportMemoryToV8() {
-  if (!isolate_ || RuntimeEnabledFeatures::HeapUnifiedGCSchedulingEnabled())
+  if (!isolate_ || base::FeatureList::IsEnabled(
+                       blink::features::kBlinkHeapUnifiedGCScheduling))
     return;
 
   const size_t current_heap_size =
@@ -1317,7 +1374,7 @@
   // Call into the regular bottleneck instead of the internal version to get
   // UMA accounting and allow follow up GCs if necessary.
   CollectGarbage(BlinkGC::kNoHeapPointersOnStack, BlinkGC::kIncrementalMarking,
-                 BlinkGC::kLazySweeping, current_gc_data_.reason);
+                 BlinkGC::kConcurrentAndLazySweeping, current_gc_data_.reason);
 }
 
 bool ThreadState::FinishIncrementalMarkingIfRunning(
@@ -1343,13 +1400,6 @@
                                  BlinkGC::MarkingType marking_type,
                                  BlinkGC::SweepingType sweeping_type,
                                  BlinkGC::GCReason reason) {
-  // // Precise GC must only be executed when we don't need to scan the stack.
-  // crbug.com/937117 crbug.com/937117
-  if (stack_state == BlinkGC::kNoHeapPointersOnStack &&
-      reason != BlinkGC::GCReason::kForcedGCForTesting &&
-      reason != BlinkGC::GCReason::kThreadTerminationGC)
-    CHECK(precise_gc_allowed_);
-
   // Nested garbage collection invocations are not supported.
   CHECK(!IsGCForbidden());
   // Garbage collection during sweeping is not supported. This can happen when
@@ -1447,9 +1497,9 @@
     // Eager sweeping should happen only in testing.
     CompleteSweep();
   } else {
-    DCHECK(sweeping_type == BlinkGC::kLazySweeping);
-    // The default behavior is lazy sweeping.
-    ScheduleIdleLazySweep();
+    DCHECK(sweeping_type == BlinkGC::kConcurrentAndLazySweeping);
+    // The default behavior is concurrent and lazy sweeping.
+    ScheduleConcurrentAndLazySweep();
   }
 }
 
@@ -1465,9 +1515,10 @@
       AtomicPauseScope atomic_pause_scope(this);
       ThreadHeapStatsCollector::EnabledScope stats2(
           Heap().stats_collector(),
-          ThreadHeapStatsCollector::kAtomicPhaseMarking, "lazySweeping",
-          sweeping_type == BlinkGC::kLazySweeping ? "yes" : "no", "gcReason",
-          BlinkGC::ToString(reason));
+          ThreadHeapStatsCollector::kAtomicPhaseMarking,
+          "concurrentAndLazySweeping",
+          sweeping_type == BlinkGC::kConcurrentAndLazySweeping ? "yes" : "no",
+          "gcReason", BlinkGC::ToString(reason));
       ThreadHeapStatsCollector::EnabledScope stats3(
           Heap().stats_collector(),
           ThreadHeapStatsCollector::kStandAloneAtomicMarking);
@@ -1593,8 +1644,8 @@
 }
 
 bool ThreadState::VerifyMarkingEnabled() const {
-  bool should_verify_marking =
-      RuntimeEnabledFeatures::HeapIncrementalMarkingStressEnabled();
+  bool should_verify_marking = base::FeatureList::IsEnabled(
+      blink::features::kBlinkHeapIncrementalMarkingStress);
 #if BUILDFLAG(BLINK_HEAP_VERIFICATION)
   should_verify_marking = true;
 #endif  // BLINK_HEAP_VERIFICATION
diff --git a/third_party/blink/renderer/platform/heap/thread_state.h b/third_party/blink/renderer/platform/heap/thread_state.h
index 237f07f9..24bee1a 100644
--- a/third_party/blink/renderer/platform/heap/thread_state.h
+++ b/third_party/blink/renderer/platform/heap/thread_state.h
@@ -37,6 +37,7 @@
 #include "third_party/blink/renderer/platform/bindings/script_forbidden_scope.h"
 #include "third_party/blink/renderer/platform/heap/atomic_entry_flag.h"
 #include "third_party/blink/renderer/platform/heap/blink_gc.h"
+#include "third_party/blink/renderer/platform/heap/cancelable_task_scheduler.h"
 #include "third_party/blink/renderer/platform/heap/threading_traits.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/scheduler/public/rail_mode_observer.h"
@@ -241,8 +242,10 @@
   void RunTerminationGC();
 
   void PerformIdleLazySweep(base::TimeTicks deadline);
+  void PerformConcurrentSweep();
 
   void ScheduleIdleLazySweep();
+  void ScheduleConcurrentAndLazySweep();
   void SchedulePreciseGC();
   void ScheduleIncrementalGC(BlinkGC::GCReason);
   void ScheduleV8FollowupGCIfNeeded(BlinkGC::V8GCType);
@@ -608,9 +611,7 @@
   };
   GCData current_gc_data_;
 
-  // Used to ensure precise GC is only run when we don't need to scan the stack.
-  // crbug.com/937117
-  bool precise_gc_allowed_ = false;
+  CancelableTaskScheduler sweeper_scheduler_;
 
   friend class BlinkGCObserver;
   friend class incremental_marking_test::IncrementalMarkingScope;
diff --git a/third_party/blink/renderer/platform/heap/thread_state_scheduling_test.cc b/third_party/blink/renderer/platform/heap/thread_state_scheduling_test.cc
index f52a8648..3d49369 100644
--- a/third_party/blink/renderer/platform/heap/thread_state_scheduling_test.cc
+++ b/third_party/blink/renderer/platform/heap/thread_state_scheduling_test.cc
@@ -2,7 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/test/scoped_feature_list.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/renderer/platform/heap/heap_test_utilities.h"
 #include "third_party/blink/renderer/platform/heap/thread_state_scopes.h"
 #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
@@ -101,7 +103,10 @@
 
 TEST_F(ThreadStateSchedulingTest, SchedulePreciseGCWhileIncrementalMarking) {
   ThreadStateSchedulingTest* test = this;
-  ScopedHeapIncrementalMarkingForTest scoped_feature(true);
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      blink::features::kBlinkHeapIncrementalMarking);
+
   test->StartIncrementalMarking();
   test->state()->SchedulePreciseGC();
   // Scheduling a precise GC should cancel incremental marking tasks.
@@ -122,7 +127,10 @@
 TEST_F(ThreadStateSchedulingTest,
        ScheduleIncrementalV8FollowupGCWhileIncrementalMarking) {
   ThreadStateSchedulingTest* test = this;
-  ScopedHeapIncrementalMarkingForTest scoped_feature(true);
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      blink::features::kBlinkHeapIncrementalMarking);
+
   test->StartIncrementalMarking();
   test->state()->ScheduleIncrementalGC(
       BlinkGC::GCReason::kIncrementalV8FollowupGC);
diff --git a/third_party/blink/renderer/platform/heap/unified_heap_controller.cc b/third_party/blink/renderer/platform/heap/unified_heap_controller.cc
index 55a040e..6d46d247f 100644
--- a/third_party/blink/renderer/platform/heap/unified_heap_controller.cc
+++ b/third_party/blink/renderer/platform/heap/unified_heap_controller.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/platform/heap/unified_heap_controller.h"
 
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
 #include "third_party/blink/renderer/platform/bindings/wrapper_type_info.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
@@ -27,12 +28,14 @@
 
 UnifiedHeapController::UnifiedHeapController(ThreadState* thread_state)
     : thread_state_(thread_state) {
-  if (RuntimeEnabledFeatures::HeapUnifiedGCSchedulingEnabled())
+  if (base::FeatureList::IsEnabled(
+          blink::features::kBlinkHeapUnifiedGCScheduling))
     thread_state->Heap().stats_collector()->RegisterObserver(this);
 }
 
 UnifiedHeapController::~UnifiedHeapController() {
-  if (RuntimeEnabledFeatures::HeapUnifiedGCSchedulingEnabled())
+  if (base::FeatureList::IsEnabled(
+          blink::features::kBlinkHeapUnifiedGCScheduling))
     thread_state_->Heap().stats_collector()->UnregisterObserver(this);
 }
 
@@ -45,7 +48,8 @@
   // Be conservative here as a new garbage collection gets started right away.
   thread_state_->FinishIncrementalMarkingIfRunning(
       BlinkGC::kHeapPointersOnStack, BlinkGC::kIncrementalMarking,
-      BlinkGC::kLazySweeping, thread_state_->current_gc_data_.reason);
+      BlinkGC::kConcurrentAndLazySweeping,
+      thread_state_->current_gc_data_.reason);
 
   // Reset any previously scheduled garbage collections.
   thread_state_->SetGCState(ThreadState::kNoGCScheduled);
@@ -93,10 +97,11 @@
       thread_state_->LeaveAtomicPause();
       thread_state_->LeaveGCForbiddenScope();
     }
-    thread_state_->AtomicPauseSweepAndCompact(BlinkGC::kIncrementalMarking,
-                                              BlinkGC::kLazySweeping);
+    thread_state_->AtomicPauseSweepAndCompact(
+        BlinkGC::kIncrementalMarking, BlinkGC::kConcurrentAndLazySweeping);
 
-    if (RuntimeEnabledFeatures::HeapUnifiedGCSchedulingEnabled()) {
+    if (base::FeatureList::IsEnabled(
+            blink::features::kBlinkHeapUnifiedGCScheduling)) {
       ThreadHeapStatsCollector* const stats_collector =
           thread_state_->Heap().stats_collector();
       summary->allocated_size =
@@ -197,7 +202,8 @@
 }
 
 void UnifiedHeapController::ReportBufferedAllocatedSizeIfPossible() {
-  DCHECK(RuntimeEnabledFeatures::HeapUnifiedGCSchedulingEnabled());
+  DCHECK(base::FeatureList::IsEnabled(
+      blink::features::kBlinkHeapUnifiedGCScheduling));
   // Reported from a recursive sweeping call.
   if (thread_state()->IsSweepingInProgress() &&
       thread_state()->SweepForbidden()) {
diff --git a/third_party/blink/renderer/platform/heap/visitor.h b/third_party/blink/renderer/platform/heap/visitor.h
index c07b74fd..c0af2c1 100644
--- a/third_party/blink/renderer/platform/heap/visitor.h
+++ b/third_party/blink/renderer/platform/heap/visitor.h
@@ -135,8 +135,7 @@
     static_assert(IsGarbageCollectedType<T>::value,
                   "T needs to be a garbage collected object");
 
-    VisitBackingStoreStrongly(__PRETTY_FUNCTION__,
-                              reinterpret_cast<void*>(backing_store),
+    VisitBackingStoreStrongly(reinterpret_cast<void*>(backing_store),
                               reinterpret_cast<void**>(backing_store_slot),
                               TraceDescriptorFor(backing_store));
   }
@@ -150,8 +149,7 @@
     static_assert(IsGarbageCollectedType<T>::value,
                   "T needs to be a garbage collected object");
 
-    VisitBackingStoreWeakly(__PRETTY_FUNCTION__,
-                            reinterpret_cast<void*>(backing_store),
+    VisitBackingStoreWeakly(reinterpret_cast<void*>(backing_store),
                             reinterpret_cast<void**>(backing_store_slot),
                             TraceTrait<T>::GetTraceDescriptor(
                                 reinterpret_cast<void*>(backing_store)),
@@ -164,8 +162,7 @@
     static_assert(IsGarbageCollectedType<T>::value,
                   "T needs to be a garbage collected object");
 
-    VisitBackingStoreOnly(__PRETTY_FUNCTION__,
-                          reinterpret_cast<void*>(backing_store),
+    VisitBackingStoreOnly(reinterpret_cast<void*>(backing_store),
                           reinterpret_cast<void**>(backing_store_slot));
   }
 
@@ -239,17 +236,13 @@
   virtual void VisitWeak(void*, void**, TraceDescriptor, WeakCallback) = 0;
 
   // Visitors for collection backing stores.
-  virtual void VisitBackingStoreStrongly(const char*,
-                                         void*,
-                                         void**,
-                                         TraceDescriptor) = 0;
-  virtual void VisitBackingStoreWeakly(const char*,
-                                       void*,
+  virtual void VisitBackingStoreStrongly(void*, void**, TraceDescriptor) = 0;
+  virtual void VisitBackingStoreWeakly(void*,
                                        void**,
                                        TraceDescriptor,
                                        WeakCallback,
                                        void*) = 0;
-  virtual void VisitBackingStoreOnly(const char*, void*, void**) = 0;
+  virtual void VisitBackingStoreOnly(void*, void**) = 0;
 
   // Visits cross-component references to V8.
 
diff --git a/third_party/blink/renderer/platform/lifecycle_context_test.cc b/third_party/blink/renderer/platform/lifecycle_context_test.cc
index cbe0146..ef1b388 100644
--- a/third_party/blink/renderer/platform/lifecycle_context_test.cc
+++ b/third_party/blink/renderer/platform/lifecycle_context_test.cc
@@ -24,7 +24,9 @@
  *
  */
 
+#include "base/test/scoped_feature_list.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/heap/persistent.h"
@@ -140,7 +142,9 @@
 
 // This is a regression test for http://crbug.com/854639.
 TEST(LifecycleContextTest, ShouldNotHitCFICheckOnIncrementalMarking) {
-  ScopedHeapIncrementalMarkingForTest scoped_feature(true);
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      blink::features::kBlinkHeapIncrementalMarking);
   ThreadState* thread_state = ThreadState::Current();
   thread_state->IncrementalMarkingStart(BlinkGC::GCReason::kForcedGCForTesting);
 
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 4a03e63..fa65200 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -693,23 +693,6 @@
       status: "test",
     },
     {
-      name: "HeapCompaction",
-    },
-    {
-      name: "HeapConcurrentMarking",
-    },
-    {
-      name: "HeapIncrementalMarking",
-      status: "stable",
-    },
-    {
-      name: "HeapIncrementalMarkingStress"
-    },
-    {
-      name: "HeapUnifiedGCScheduling",
-      status: "stable",
-    },
-    {
       name: "HrefTranslate",
       depends_on: ["TranslateService"],
       origin_trial_feature_name: "HrefTranslate",
@@ -824,7 +807,7 @@
     },
     {
       name: "LayoutNG",
-      implied_by: ["LayoutNGBlockFragmentation", "LayoutNGFieldset", "LayoutNGFlexBox", "LayoutNGLineCache", "EditingNG", "BidiCaretAffinity"],
+      implied_by: ["LayoutNGBlockFragmentation", "LayoutNGFieldset", "LayoutNGFlexBox", "LayoutNGFragmentItem", "LayoutNGLineCache", "EditingNG", "BidiCaretAffinity"],
       status: "stable",
     },
     {
@@ -841,6 +824,9 @@
       implied_by: ["LayoutNG"],
     },
     {
+      name: "LayoutNGFragmentItem",
+    },
+    {
       name: "LayoutNGLineCache",
     },
     {
@@ -866,10 +852,6 @@
       // This is enabled by features::kLazyInitializeMediaControls.
     },
     {
-      name: "LegacyPerformanceMemoryCounters",
-      origin_trial_feature_name: "LegacyPerformanceMemoryCounters",
-    },
-    {
       name: "LongTaskV2",
     },
     {
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
index 57698cd..e281441 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
@@ -462,6 +462,9 @@
     // Some tasks in the tests need to run when objects are paused e.g. to hook
     // when recovering from debugger JavaScript statetment.
     case TaskType::kInternalTest:
+    // kWebLocks can be frozen if for entire page, but not for individual
+    // frames. See https://crrev.com/c/1687716
+    case TaskType::kWebLocks:
       return UnpausableTaskQueueTraits();
     case TaskType::kInternalTranslation:
       return ForegroundOnlyTaskQueueTraits();
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/task_type_names.cc b/third_party/blink/renderer/platform/scheduler/main_thread/task_type_names.cc
index 3cffe58..fde4dc0 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/task_type_names.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/task_type_names.cc
@@ -71,6 +71,8 @@
       return "Permission";
     case TaskType::kServiceWorkerClientMessage:
       return "ServiceWorkerClientMessage";
+    case TaskType::kWebLocks:
+      return "WebLocks";
     case TaskType::kInternalDefault:
       return "InternalDefault";
     case TaskType::kInternalLoading:
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler.cc b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler.cc
index accdcb6..4bf57a1 100644
--- a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler.cc
+++ b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler.cc
@@ -182,6 +182,9 @@
     case TaskType::kInternalInspector:
     case TaskType::kInternalTest:
     case TaskType::kInternalNavigationAssociated:
+      // kWebLocks can be frozen if for entire page, but not for individual
+      // frames. See https://crrev.com/c/1687716
+    case TaskType::kWebLocks:
       // UnthrottledTaskRunner is generally discouraged in future.
       // TODO(nhiroki): Identify which tasks can be throttled / suspendable and
       // move them into other task runners. See also comments in
diff --git a/third_party/blink/renderer/platform/timer_test.cc b/third_party/blink/renderer/platform/timer_test.cc
index bbd8fb94..3804d933 100644
--- a/third_party/blink/renderer/platform/timer_test.cc
+++ b/third_party/blink/renderer/platform/timer_test.cc
@@ -665,7 +665,8 @@
   // Explicit regular GC call to allow lazy sweeping.
   ThreadState::Current()->CollectGarbage(
       BlinkGC::kNoHeapPointersOnStack, BlinkGC::kAtomicMarking,
-      BlinkGC::kLazySweeping, BlinkGC::GCReason::kForcedGCForTesting);
+      BlinkGC::kConcurrentAndLazySweeping,
+      BlinkGC::GCReason::kForcedGCForTesting);
   // Since the heap is laziy swept, owner is not yet destructed.
   EXPECT_FALSE(record->OwnerIsDestructed());
 
diff --git a/third_party/blink/renderer/platform/wtf/text/text_encoding_registry.cc b/third_party/blink/renderer/platform/wtf/text/text_encoding_registry.cc
index 5b1ce61..c931630 100644
--- a/third_party/blink/renderer/platform/wtf/text/text_encoding_registry.cc
+++ b/third_party/blink/renderer/platform/wtf/text/text_encoding_registry.cc
@@ -97,10 +97,7 @@
 typedef HashMap<const char*, TextCodecFactory> TextCodecMap;
 
 static Mutex& EncodingRegistryMutex() {
-  // We don't have to use AtomicallyInitializedStatic here because
-  // this function is called on the main thread for any page before
-  // it is used in worker threads.
-  DEFINE_STATIC_LOCAL(Mutex, mutex, ());
+  DEFINE_THREAD_SAFE_STATIC_LOCAL(Mutex, mutex, ());
   return mutex;
 }
 
@@ -179,10 +176,11 @@
                            TextCodecFactory(function, additional_data));
 }
 
+// Note that this can be called both the main thread and worker threads.
 static void BuildBaseTextCodecMaps() {
-  DCHECK(IsMainThread());
   DCHECK(!g_text_codec_map);
   DCHECK(!g_text_encoding_name_map);
+  EncodingRegistryMutex().AssertAcquired();
 
   g_text_codec_map = new TextCodecMap;
   g_text_encoding_name_map = new TextEncodingNameMap;
@@ -220,11 +218,11 @@
 const char* AtomicCanonicalTextEncodingName(const char* name) {
   if (!name || !name[0])
     return nullptr;
+  MutexLocker lock(EncodingRegistryMutex());
+
   if (!g_text_encoding_name_map)
     BuildBaseTextCodecMaps();
 
-  MutexLocker lock(EncodingRegistryMutex());
-
   if (const char* atomic_name = g_text_encoding_name_map->at(name))
     return atomic_name;
   if (AtomicDidExtendTextCodecMaps())
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint
index 178b7a5..cc1c846 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint
+++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=CompositeAfterPaint
@@ -441,6 +441,9 @@
 crbug.com/940033 virtual/fractional_scrolling_threaded/fast/scrolling/wheel-scrolling-over-custom-scrollbar.html [ Failure ]
 crbug.com/940033 virtual/threaded/fast/scrolling/wheel-scrolling-over-custom-scrollbar.html [ Failure ]
 
+crbug.com/918155 scrollbars/overlay-scrollbar-over-child-layer.html [ Failure ]
+crbug.com/918155 virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbar-over-child-layer.html [ Failure ]
+
 crbug.com/979389 ietestcenter/css3/bordersbackgrounds/background-attachment-local-scrolling.htm [ Failure ]
 
 # Crash during PictureLayer::GetPicture() when DisplayItemList is finished twice.
diff --git a/third_party/blink/web_tests/NeverFixTests b/third_party/blink/web_tests/NeverFixTests
index b3187e0..da96ebf 100644
--- a/third_party/blink/web_tests/NeverFixTests
+++ b/third_party/blink/web_tests/NeverFixTests
@@ -271,12 +271,6 @@
 crbug.com/753080 external/wpt/css/css-transforms/ttwf-css-3d-polygon-cycle-mismatch.html [ WontFix ]
 crbug.com/753080 external/wpt/css/css-transforms/ttwf-css-3d-polygon-cycle.html [ WontFix ]
 
-# We could fix this test for us and upstream it if the test shell user agent
-# would let us differentiate test_shell and WebKit DumpTreeNode.
-crbug.com/7482 [ Linux ] http/tests/misc/timer-vs-loading.html [ WontFix ]
-crbug.com/7482 [ Win ] http/tests/misc/timer-vs-loading.html [ WontFix ]
-crbug.com/7482 [ Mac ] http/tests/misc/timer-vs-loading.html [ WontFix ]
-
 # On Linux bold emoji are already supported.
 crbug.com/551843 [ Linux ] fast/text/fallback-traits-fixup.html [ WontFix ]
 crbug.com/551843 [ Linux ] fast/text/emoji-font-weight-mac.html [ WontFix ]
diff --git a/third_party/blink/web_tests/StaleTestExpectations b/third_party/blink/web_tests/StaleTestExpectations
index 3c06553f..f934e0b 100644
--- a/third_party/blink/web_tests/StaleTestExpectations
+++ b/third_party/blink/web_tests/StaleTestExpectations
@@ -6,8 +6,3 @@
 #
 # Further documentation:
 # https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_test_expectations.md
-
-# We could fix this test for us and upstream it if the test shell user agent
-# would let us differentiate test_shell and WebKit DumpTreeNode.
-crbug.com/7482 [ Win Mac ] http/tests/misc/timer-vs-loading.html [ WontFix ]
-
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index e07bd0c..0698fddb 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -352,7 +352,6 @@
 # Subpixel rounding differences that are incorrect.
 crbug.com/836886 virtual/prefer_compositing_to_lcd_text/compositing/overflow/scaled-overflow.html [ Failure ]
 crbug.com/836886 compositing/overflow/scaled-overflow.html [ Failure ]
-crbug.com/836886 compositing/scrollbars/nested-overlay-scrollbars.html [ Failure ]
 # Flaky subpixel AA difference (not necessarily incorrect, but flaky)
 crbug.com/921105 virtual/threaded/animations/skew-notsequential-compositor.html [ Failure Pass ]
 crbug.com/921105 virtual/disable-blink-gen-property-trees/animations/skew-notsequential-compositor.html [ Skip ]
@@ -363,6 +362,10 @@
 crbug.com/954591 external/wpt/css/css-transforms/composited-under-rotateY-180deg.html [ Failure ]
 crbug.com/954591 external/wpt/css/css-transforms/composited-under-rotateY-180deg-clip.html [ Failure ]
 
+# Fixed in CompositeAfterPaint.
+crbug.com/918155 virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbar-over-child-layer-nested-2.html [ Failure ]
+crbug.com/918155 virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbar-over-child-layer-nested.html [ Failure ]
+
 # ====== Paint team owned tests to here ======
 
 crbug.com/922249 virtual/android/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html [ Failure Pass ]
@@ -2752,6 +2755,8 @@
 crbug.com/467127 [ Mac ] external/wpt/css/css-flexbox/ttwf-reftest-flex-wrap-reverse.html [ Failure ]
 crbug.com/467127 [ Mac ] external/wpt/css/css-flexbox/ttwf-reftest-flex-wrap.html [ Failure ]
 
+crbug.com/972227 external/wpt/css/css-flexbox/overflow-auto-001.html [ Failure ]
+
 crbug.com/467127 external/wpt/css/css-flexbox/negative-margins-001.html [ Failure ]
 crbug.com/467127 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-horiz-001a.xhtml [ Failure ]
 crbug.com/467127 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-horiz-001b.xhtml [ Failure ]
@@ -3194,6 +3199,7 @@
 crbug.com/893480 external/wpt/infrastructure/testdriver/actions/elementTiming.html [ Timeout ]
 crbug.com/893480 external/wpt/infrastructure/testdriver/actions/multiDevice.html [ Failure Timeout ]
 crbug.com/893480 external/wpt/pointerevents/pointerevent_touch-action-keyboard.html [ Failure Timeout ]
+crbug.com/893480 external/wpt/infrastructure/testdriver/actions/actionsWithKeyPressed.html [ Failure Timeout ]
 
 # Hit a DCHECK
 crbug.com/918664 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/sizing/block-size-with-min-or-max-content-table-1a.html [ Failure Pass ]
@@ -5214,13 +5220,6 @@
 crbug.com/961439 external/wpt/cookies/samesite-none-secure/ [ Failure ]
 crbug.com/961439 virtual/samesite-by-default-cookies/external/wpt/cookies/samesite-none-secure/ [ Failure ]
 
-# Client hint tests that fail in content_shell but pass when run manually using
-# full browser.
-crbug.com/856700 external/wpt/client-hints/accept_ch_lifetime_same_origin_iframe.tentative.https.html [ Skip ]
-crbug.com/856700 external/wpt/client-hints/accept_ch_lifetime.tentative.https.html [ Skip ]
-crbug.com/856700 external/wpt/client-hints/http_equiv_accept_ch_lifetime_same_origin_iframe.tentative.https.html [ Skip ]
-crbug.com/856700 external/wpt/client-hints/http_equiv_accept_ch_lifetime.tentative.https.html [ Skip ]
-
 # Sheriff failures 2017-11-15
 crbug.com/785179 [ Win7 Debug ] http/tests/devtools/console/console-viewport-stick-to-bottom.js [ Skip ]
 
@@ -5739,9 +5738,6 @@
 crbug.com/840659 external/wpt/webrtc/protocol/video-codecs.https.html [ Pass Failure ]
 crbug.com/840659 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/video-codecs.https.html [ Pass Failure ]
 
-# Sheriff 2019-01-11
-crbug.com/921038 virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed/legacy-performance-memory-counters-enabled.html [ Skip ]
-
 # Mac doesn't support lowLatency/desynchronized Canvas Contexts.
 crbug.com/922218 [ Mac ] fast/canvas-api/canvas-lowlatency-getContext.html [ Failure ]
 
@@ -6024,12 +6020,8 @@
 # Sheriff 2019-04-03
 crbug.com/949167 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.html [ Pass Timeout ]
 crbug.com/949207 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html [ Pass Timeout ]
-crbug.com/949440 [ Mac10.13 Debug ] http/tests/devtools/layers/layers-panel-mouse-events.js [ Pass Crash ]
 crbug.com/949442 [ Mac10.13 Debug ] external/wpt/accelerometer/Accelerometer.https.html [ Pass Failure ]
 crbug.com/949442 [ Mac10.13 Debug ] external/wpt/orientation-sensor/AbsoluteOrientationSensor.https.html [ Pass Failure ]
-crbug.com/949443 [ Mac10.13 Debug ] fast/block/inline-children-root-linebox-crash.html [ Pass Crash ]
-crbug.com/949444 [ Mac10.13 Debug ] fast/events/sequential-focus-navigation-starting-point.html [ Pass Crash ]
-crbug.com/949444 [ Mac10.13 Debug ] virtual/mouseevent_fractional/fast/events/sequential-focus-navigation-starting-point.html [ Pass Crash ]
 crbug.com/949445 [ Mac ] fast/forms/text/input-text-scroll-left-on-blur.html [ Failure ]
 
 # Sheriff 2019-04-09
@@ -6224,7 +6216,6 @@
 crbug.com/535738 external/wpt/media-source/mediasource-changetype-play-negative.html [ Failure ]
 crbug.com/535738 external/wpt/media-source/mediasource-changetype-play-without-codecs-parameter.html [ Failure ]
 
-crbug.com/978611 http/tests/devtools/layers/layers-3d-view-hit-testing.js [ Pass Failure ]
 crbug.com/974675 http/tests/devtools/sources/debugger-frameworks/frameworks-jquery.js [ Pass Crash ]
 
 # Sheriff 2019-06-26
@@ -6264,3 +6255,11 @@
 crbug.com/981879 virtual/gpu-rasterization/images/color-profile-background-image-cross-fade-png.html [ Pass Failure ]
 crbug.com/981879 virtual/gpu-rasterization/images/color-profile-background-image-cross-fade.html [ Pass Failure ]
 crbug.com/981879 virtual/gpu-rasterization/images/cross-fade-background-size.html [ Pass Failure ]
+
+crbug.com/982289 virtual/gpu-rasterization/images/color-profile-background-image-cover.html [ Pass Failure ]
+crbug.com/982289 virtual/gpu-rasterization/images/color-profile-background-image-repeat.html [ Pass Failure ]
+crbug.com/982289 virtual/gpu-rasterization/images/color-profile-background-image-space.html [ Pass Failure ]
+crbug.com/982289 virtual/gpu-rasterization/images/color-profile-image-canvas-pattern.html [ Pass Failure ]
+crbug.com/982289 virtual/gpu-rasterization/images/color-profile-image-canvas.html [ Pass Failure ]
+crbug.com/982289 virtual/gpu-rasterization/images/color-profile-mask-image-svg.html [ Pass Failure ]
+crbug.com/982289 virtual/gpu-rasterization/images/ycbcr-with-cmyk-color-profile.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child.html b/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child.html
index 45beb68..54f3f8b 100644
--- a/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child.html
+++ b/third_party/blink/web_tests/compositing/overflow/scrollbar-layer-placement-negative-z-index-child.html
@@ -43,9 +43,9 @@
   }
 </style>
 <div class="outer">
-<div class="scroller">
-<div class="content"></div>
-</div>
+  <div class="scroller">
+    <div class="content"></div>
+  </div>
 </div>
 <script>
 if (window.testRunner) {
diff --git a/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.png b/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.png
index 219172d..1fa1711d 100644
--- a/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.png
+++ b/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.txt b/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
index abd8db5..32b2959 100644
--- a/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
+++ b/third_party/blink/web_tests/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
@@ -18,7 +18,7 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "LayoutBlockFlow (positioned) DIV id='outer'",
+      "name": "LayoutNGBlockFlow (positioned) DIV id='outer'",
       "position": [8, 8],
       "bounds": [404, 404]
     },
@@ -35,7 +35,7 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow (positioned) DIV id='inner'",
+      "name": "LayoutNGBlockFlow (positioned) DIV id='inner'",
       "position": [10, 510],
       "bounds": [204, 204],
       "transform": 1
@@ -60,7 +60,7 @@
       "transform": 1
     },
     {
-      "name": "LayoutBlockFlow (positioned) DIV id='grey'",
+      "name": "LayoutNGBlockFlow (positioned) DIV id='grey'",
       "position": [12, 512],
       "bounds": [100, 800],
       "contentsOpaque": true,
@@ -68,7 +68,7 @@
       "transform": 1
     },
     {
-      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='spacer')",
+      "name": "Squashing Layer (first squashed layer: LayoutNGBlockFlow (positioned) DIV id='spacer')",
       "position": [12, 2512],
       "bounds": [5000, 1000],
       "transform": 1
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
index c11970a..cd7fe7d 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
@@ -40218,7 +40218,7 @@
      "css/css-contain/contain-style-counters-004.html",
      [
       [
-       "/css/css-contain/reference/contain-style-counters-003-ref.html",
+       "/css/css-contain/reference/contain-style-counters-004-ref.html",
        "=="
       ]
      ],
@@ -131030,6 +131030,9 @@
    "css/css-contain/reference/contain-style-counters-003-ref.html": [
     []
    ],
+   "css/css-contain/reference/contain-style-counters-004-ref.html": [
+    []
+   ],
    "css/css-contain/reference/contain-subgrid-001.html": [
     []
    ],
@@ -132446,6 +132449,9 @@
    "css/css-fonts/idlharness-expected.txt": [
     []
    ],
+   "css/css-fonts/inheritance-expected.txt": [
+    []
+   ],
    "css/css-fonts/matching/META.yml": [
     []
    ],
@@ -132500,12 +132506,33 @@
    "css/css-fonts/math-script-level-and-math-style/math-script-level-font-size-clamping-001.tentative-ref.html": [
     []
    ],
+   "css/css-fonts/parsing/font-family-computed-expected.txt": [
+    []
+   ],
+   "css/css-fonts/parsing/font-family-valid-expected.txt": [
+    []
+   ],
+   "css/css-fonts/parsing/font-size-computed-expected.txt": [
+    []
+   ],
+   "css/css-fonts/parsing/font-size-valid-expected.txt": [
+    []
+   ],
+   "css/css-fonts/parsing/font-style-computed-expected.txt": [
+    []
+   ],
    "css/css-fonts/parsing/font-synthesis-computed-expected.txt": [
     []
    ],
    "css/css-fonts/parsing/font-synthesis-valid-expected.txt": [
     []
    ],
+   "css/css-fonts/parsing/font-valid-expected.txt": [
+    []
+   ],
+   "css/css-fonts/parsing/font-variant-numeric-valid-expected.txt": [
+    []
+   ],
    "css/css-fonts/parsing/font-variant-position-computed-expected.txt": [
     []
    ],
@@ -160199,6 +160226,9 @@
    "infrastructure/metadata/infrastructure/server/title.any.js.ini": [
     []
    ],
+   "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
+    []
+   ],
    "infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
     []
    ],
@@ -192417,11 +192447,32 @@
      }
     ]
    ],
-   "bluetooth/characteristic/characteristicProperties.https.html": [
+   "bluetooth/characteristic/characteristicProperties.https.window.js": [
     [
-     "bluetooth/characteristic/characteristicProperties.https.html",
+     "bluetooth/characteristic/characteristicProperties.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
@@ -192489,43 +192540,148 @@
      }
     ]
    ],
-   "bluetooth/characteristic/notifications/characteristic-is-removed.https.html": [
+   "bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js": [
     [
-     "bluetooth/characteristic/notifications/characteristic-is-removed.https.html",
+     "bluetooth/characteristic/notifications/characteristic-is-removed.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/notifications/service-is-removed.https.html": [
+   "bluetooth/characteristic/notifications/service-is-removed.https.window.js": [
     [
-     "bluetooth/characteristic/notifications/service-is-removed.https.html",
+     "bluetooth/characteristic/notifications/service-is-removed.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html": [
+   "bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js": [
     [
-     "bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html",
+     "bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/readValue/characteristic-is-removed.https.html": [
+   "bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js": [
     [
-     "bluetooth/characteristic/readValue/characteristic-is-removed.https.html",
+     "bluetooth/characteristic/readValue/characteristic-is-removed.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/readValue/event-is-fired.https.html": [
+   "bluetooth/characteristic/readValue/event-is-fired.https.window.js": [
     [
-     "bluetooth/characteristic/readValue/event-is-fired.https.html",
+     "bluetooth/characteristic/readValue/event-is-fired.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
@@ -192537,43 +192693,148 @@
      }
     ]
    ],
-   "bluetooth/characteristic/readValue/read-succeeds.https.html": [
+   "bluetooth/characteristic/readValue/read-succeeds.https.window.js": [
     [
-     "bluetooth/characteristic/readValue/read-succeeds.https.html",
+     "bluetooth/characteristic/readValue/read-succeeds.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/readValue/read-updates-value.https.html": [
+   "bluetooth/characteristic/readValue/read-updates-value.https.window.js": [
     [
-     "bluetooth/characteristic/readValue/read-updates-value.https.html",
+     "bluetooth/characteristic/readValue/read-updates-value.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/readValue/service-is-removed.https.html": [
+   "bluetooth/characteristic/readValue/service-is-removed.https.window.js": [
     [
-     "bluetooth/characteristic/readValue/service-is-removed.https.html",
+     "bluetooth/characteristic/readValue/service-is-removed.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/service-same-from-2-characteristics.https.html": [
+   "bluetooth/characteristic/service-same-from-2-characteristics.https.window.js": [
     [
-     "bluetooth/characteristic/service-same-from-2-characteristics.https.html",
+     "bluetooth/characteristic/service-same-from-2-characteristics.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/service-same-object.https.html": [
+   "bluetooth/characteristic/service-same-object.https.window.js": [
     [
-     "bluetooth/characteristic/service-same-object.https.html",
+     "bluetooth/characteristic/service-same-object.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
@@ -192585,19 +192846,61 @@
      }
     ]
    ],
-   "bluetooth/characteristic/writeValue/buffer-is-detached.https.html": [
+   "bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js": [
     [
-     "bluetooth/characteristic/writeValue/buffer-is-detached.https.html",
+     "bluetooth/characteristic/writeValue/buffer-is-detached.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/writeValue/characteristic-is-removed.https.html": [
+   "bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js": [
     [
-     "bluetooth/characteristic/writeValue/characteristic-is-removed.https.html",
+     "bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
@@ -192609,19 +192912,61 @@
      }
     ]
    ],
-   "bluetooth/characteristic/writeValue/service-is-removed.https.html": [
+   "bluetooth/characteristic/writeValue/service-is-removed.https.window.js": [
     [
-     "bluetooth/characteristic/writeValue/service-is-removed.https.html",
+     "bluetooth/characteristic/writeValue/service-is-removed.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
-   "bluetooth/characteristic/writeValue/write-succeeds.https.html": [
+   "bluetooth/characteristic/writeValue/write-succeeds.https.window.js": [
     [
-     "bluetooth/characteristic/writeValue/write-succeeds.https.html",
+     "bluetooth/characteristic/writeValue/write-succeeds.https.window.html",
      {
-      "testdriver": true
+      "script_metadata": [
+       [
+        "script",
+        "/resources/testharness.js"
+       ],
+       [
+        "script",
+        "/resources/testharnessreport.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver.js"
+       ],
+       [
+        "script",
+        "/resources/testdriver-vendor.js"
+       ],
+       [
+        "script",
+        "/bluetooth/resources/bluetooth-helpers.js"
+       ]
+      ]
      }
     ]
    ],
@@ -197644,6 +197989,12 @@
      {}
     ]
    ],
+   "css/CSS2/linebox/inline-children-root-linebox-crash-001.html": [
+    [
+     "css/CSS2/linebox/inline-children-root-linebox-crash-001.html",
+     {}
+    ]
+   ],
    "css/CSS2/linebox/inline-negative-margin-001.html": [
     [
      "css/CSS2/linebox/inline-negative-margin-001.html",
@@ -200370,6 +200721,12 @@
      {}
     ]
    ],
+   "css/css-fonts/inheritance.html": [
+    [
+     "css/css-fonts/inheritance.html",
+     {}
+    ]
+   ],
    "css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html": [
     [
      "css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html",
@@ -200394,6 +200751,66 @@
      {}
     ]
    ],
+   "css/css-fonts/parsing/font-family-computed.html": [
+    [
+     "css/css-fonts/parsing/font-family-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-family-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-family-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-family-valid.html": [
+    [
+     "css/css-fonts/parsing/font-family-valid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-feature-settings-computed.html": [
+    [
+     "css/css-fonts/parsing/font-feature-settings-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-feature-settings-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-feature-settings-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-feature-settings-valid.html": [
+    [
+     "css/css-fonts/parsing/font-feature-settings-valid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-kerning-computed.html": [
+    [
+     "css/css-fonts/parsing/font-kerning-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-kerning-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-kerning-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-kerning-valid.html": [
+    [
+     "css/css-fonts/parsing/font-kerning-valid.html",
+     {}
+    ]
+   ],
    "css/css-fonts/parsing/font-size-adjust-computed.html": [
     [
      "css/css-fonts/parsing/font-size-adjust-computed.html",
@@ -200412,6 +200829,60 @@
      {}
     ]
    ],
+   "css/css-fonts/parsing/font-size-computed.html": [
+    [
+     "css/css-fonts/parsing/font-size-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-size-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-size-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-size-valid.html": [
+    [
+     "css/css-fonts/parsing/font-size-valid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-stretch-computed.html": [
+    [
+     "css/css-fonts/parsing/font-stretch-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-stretch-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-stretch-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-stretch-valid.html": [
+    [
+     "css/css-fonts/parsing/font-stretch-valid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-style-computed.html": [
+    [
+     "css/css-fonts/parsing/font-style-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-style-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-style-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-style-valid.html": [
+    [
+     "css/css-fonts/parsing/font-style-valid.html",
+     {}
+    ]
+   ],
    "css/css-fonts/parsing/font-synthesis-computed.html": [
     [
      "css/css-fonts/parsing/font-synthesis-computed.html",
@@ -200430,6 +200901,84 @@
      {}
     ]
    ],
+   "css/css-fonts/parsing/font-valid.html": [
+    [
+     "css/css-fonts/parsing/font-valid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-caps-computed.html": [
+    [
+     "css/css-fonts/parsing/font-variant-caps-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-caps-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-variant-caps-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-caps-valid.html": [
+    [
+     "css/css-fonts/parsing/font-variant-caps-valid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-east-asian-computed.html": [
+    [
+     "css/css-fonts/parsing/font-variant-east-asian-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-east-asian-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-variant-east-asian-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-east-asian-valid.html": [
+    [
+     "css/css-fonts/parsing/font-variant-east-asian-valid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-ligatures-computed.html": [
+    [
+     "css/css-fonts/parsing/font-variant-ligatures-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-ligatures-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-variant-ligatures-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-ligatures-valid.html": [
+    [
+     "css/css-fonts/parsing/font-variant-ligatures-valid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-numeric-computed.html": [
+    [
+     "css/css-fonts/parsing/font-variant-numeric-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-numeric-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-variant-numeric-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-variant-numeric-valid.html": [
+    [
+     "css/css-fonts/parsing/font-variant-numeric-valid.html",
+     {}
+    ]
+   ],
    "css/css-fonts/parsing/font-variant-position-computed.html": [
     [
      "css/css-fonts/parsing/font-variant-position-computed.html",
@@ -200448,6 +200997,24 @@
      {}
     ]
    ],
+   "css/css-fonts/parsing/font-weight-computed.html": [
+    [
+     "css/css-fonts/parsing/font-weight-computed.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-weight-invalid.html": [
+    [
+     "css/css-fonts/parsing/font-weight-invalid.html",
+     {}
+    ]
+   ],
+   "css/css-fonts/parsing/font-weight-valid.html": [
+    [
+     "css/css-fonts/parsing/font-weight-valid.html",
+     {}
+    ]
+   ],
    "css/css-fonts/test_datafont_same_origin.html": [
     [
      "css/css-fonts/test_datafont_same_origin.html",
@@ -217761,6 +218328,12 @@
      {}
     ]
    ],
+   "element-timing/buffered-flag.html": [
+    [
+     "element-timing/buffered-flag.html",
+     {}
+    ]
+   ],
    "element-timing/cross-origin-element.sub.html": [
     [
      "element-timing/cross-origin-element.sub.html",
@@ -246811,6 +247384,14 @@
      {}
     ]
    ],
+   "infrastructure/testdriver/actions/actionsWithKeyPressed.html": [
+    [
+     "infrastructure/testdriver/actions/actionsWithKeyPressed.html",
+     {
+      "testdriver": true
+     }
+    ]
+   ],
    "infrastructure/testdriver/actions/elementPosition.html": [
     [
      "infrastructure/testdriver/actions/elementPosition.html",
@@ -262544,6 +263125,26 @@
      }
     ]
    ],
+   "performance-timeline/buffered-flag-after-timeout.any.js": [
+    [
+     "performance-timeline/buffered-flag-after-timeout.any.html",
+     {}
+    ],
+    [
+     "performance-timeline/buffered-flag-after-timeout.any.worker.html",
+     {}
+    ]
+   ],
+   "performance-timeline/buffered-flag-observer.any.js": [
+    [
+     "performance-timeline/buffered-flag-observer.any.html",
+     {}
+    ],
+    [
+     "performance-timeline/buffered-flag-observer.any.worker.html",
+     {}
+    ]
+   ],
    "performance-timeline/case-sensitivity.any.js": [
     [
      "performance-timeline/case-sensitivity.any.html",
@@ -262638,6 +263239,26 @@
      }
     ]
    ],
+   "performance-timeline/multiple-buffered-flag-observers.any.js": [
+    [
+     "performance-timeline/multiple-buffered-flag-observers.any.html",
+     {}
+    ],
+    [
+     "performance-timeline/multiple-buffered-flag-observers.any.worker.html",
+     {}
+    ]
+   ],
+   "performance-timeline/observer-buffered-false.any.js": [
+    [
+     "performance-timeline/observer-buffered-false.any.html",
+     {}
+    ],
+    [
+     "performance-timeline/observer-buffered-false.any.worker.html",
+     {}
+    ]
+   ],
    "performance-timeline/performanceentry-tojson.any.js": [
     [
      "performance-timeline/performanceentry-tojson.any.html",
@@ -285694,6 +286315,16 @@
      {}
     ]
    ],
+   "user-timing/buffered-flag.any.js": [
+    [
+     "user-timing/buffered-flag.any.html",
+     {}
+    ],
+    [
+     "user-timing/buffered-flag.any.worker.html",
+     {}
+    ]
+   ],
    "user-timing/clearMarks.html": [
     [
      "user-timing/clearMarks.html",
@@ -285994,6 +286625,12 @@
      {}
     ]
    ],
+   "user-timing/structured-serialize-detail.html": [
+    [
+     "user-timing/structured-serialize-detail.html",
+     {}
+    ]
+   ],
    "user-timing/supported-usertiming-types.any.js": [
     [
      "user-timing/supported-usertiming-types.any.html",
@@ -318056,11 +318693,11 @@
    "support"
   ],
   "bluetooth/README.md": [
-   "2d0e9ab7a9b3c6fcda90b40eae3f8d77322daa26",
+   "dcf3d2832c33f72e8dce2356956baac1d83eafed",
    "support"
   ],
-  "bluetooth/characteristic/characteristicProperties.https.html": [
-   "0747af2fc9c65ee34023674b5d5658f0d26c31bd",
+  "bluetooth/characteristic/characteristicProperties.https.window.js": [
+   "abe9f79ce26ed7cc9f5c17cfd2f0e1e70d1d3657",
    "testharness"
   ],
   "bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.html": [
@@ -318095,72 +318732,72 @@
    "c9056dd3b3c937f157b0495ee2964bbf21a59692",
    "testharness"
   ],
-  "bluetooth/characteristic/notifications/characteristic-is-removed.https.html": [
-   "35f5ee974fc07097111b69509050e577d1250d7d",
+  "bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js": [
+   "6b5d3e22a121e64c75e217e73631c7cd6ad86865",
    "testharness"
   ],
-  "bluetooth/characteristic/notifications/service-is-removed.https.html": [
-   "bf389ce5286b176325184f1719d5dabc98668967",
+  "bluetooth/characteristic/notifications/service-is-removed.https.window.js": [
+   "29bc671c5d4c9e27e4fc59b4dee520a494770cd8",
    "testharness"
   ],
-  "bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html": [
-   "c0d4328a0e4d83d852b0d3fe4f885294f44b7297",
+  "bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js": [
+   "7e6e4159bb11234b01162b3daf080143c0055252",
    "testharness"
   ],
-  "bluetooth/characteristic/readValue/characteristic-is-removed.https.html": [
-   "3c963c3c9fdbae6d6aeb6bed8f0f99dce720a0aa",
+  "bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js": [
+   "07678e6e037b211ee9560a6c1af02465e7cc4e11",
    "testharness"
   ],
-  "bluetooth/characteristic/readValue/event-is-fired.https.html": [
-   "a217bdd36aad2eb305f85804e023e86da6477c52",
+  "bluetooth/characteristic/readValue/event-is-fired.https.window.js": [
+   "eee34d0612d3611121d219c0b4098937df507ece",
    "testharness"
   ],
   "bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.html": [
    "a80bccfe469223145ae4ec78dfd33e24a613fcd7",
    "testharness"
   ],
-  "bluetooth/characteristic/readValue/read-succeeds.https.html": [
-   "4dca3ed5a571fc636fa57c4ae6287e63a1830d8f",
+  "bluetooth/characteristic/readValue/read-succeeds.https.window.js": [
+   "aeece7d11f480e5cf7122ef97bc9eb098a7da883",
    "testharness"
   ],
-  "bluetooth/characteristic/readValue/read-updates-value.https.html": [
-   "11bb9391b626f089d1913cd8d93e67c275eb9604",
+  "bluetooth/characteristic/readValue/read-updates-value.https.window.js": [
+   "45da8af25020374c8b876984017fbefc95f4b8f1",
    "testharness"
   ],
-  "bluetooth/characteristic/readValue/service-is-removed.https.html": [
-   "48f8127de83628e3ff01f4d754e9269519209961",
+  "bluetooth/characteristic/readValue/service-is-removed.https.window.js": [
+   "07e9701d3c321dfdf166195ec4eab6c2f354f216",
    "testharness"
   ],
-  "bluetooth/characteristic/service-same-from-2-characteristics.https.html": [
-   "395d49b7f07f1acf7f1b3ee72595fbcecc8201fd",
+  "bluetooth/characteristic/service-same-from-2-characteristics.https.window.js": [
+   "e3bc5d0e103d66368db4b294e3e09d8a9018b792",
    "testharness"
   ],
-  "bluetooth/characteristic/service-same-object.https.html": [
-   "0b2a915721431b23b1dba5a584701039fd82aac4",
+  "bluetooth/characteristic/service-same-object.https.window.js": [
+   "6b1f543ae5e9944d4792a01209417016f4566a2e",
    "testharness"
   ],
   "bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.html": [
    "d9a9594320d5ec337b5b50ac5f7873e547e4b30a",
    "testharness"
   ],
-  "bluetooth/characteristic/writeValue/buffer-is-detached.https.html": [
-   "b8a1abfa5afe3d514d6884b58268dc47cfc15f5e",
+  "bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js": [
+   "35347e3bcf8fdc3c895e6daea5d9b7247cbcfcac",
    "testharness"
   ],
-  "bluetooth/characteristic/writeValue/characteristic-is-removed.https.html": [
-   "f79c21916fba824578eeb20052dba6f86c350adc",
+  "bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js": [
+   "33a963bed0950485a06685df8a601025bd4c419c",
    "testharness"
   ],
   "bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.html": [
    "1652070463057dc48ef64cdb4bfe07379a672a49",
    "testharness"
   ],
-  "bluetooth/characteristic/writeValue/service-is-removed.https.html": [
-   "2b43bfb7c9138c2ba284fdbc63a38afbf8c4f91c",
+  "bluetooth/characteristic/writeValue/service-is-removed.https.window.js": [
+   "a9f812c137f236ac088fbf42886c44e92eabafc4",
    "testharness"
   ],
-  "bluetooth/characteristic/writeValue/write-succeeds.https.html": [
-   "f2cf577e4f9b60c43e5b47b7ee1192f3824e1362",
+  "bluetooth/characteristic/writeValue/write-succeeds.https.window.js": [
+   "1472c619a2dbdf5c8536e240ff024349a6e938ea",
    "testharness"
   ],
   "bluetooth/descriptor/readValue/gen-service-is-removed.https.html": [
@@ -328135,6 +328772,10 @@
    "86e5e190aa043f3961464def7ea01190027a12ee",
    "reftest"
   ],
+  "css/CSS2/linebox/inline-children-root-linebox-crash-001.html": [
+   "7fe6b3ea5df5986a5f747cb8e9c5312afdeede21",
+   "testharness"
+  ],
   "css/CSS2/linebox/inline-formatting-context-001-ref.xht": [
    "d142292ad802391482d806bdc24374b5ee50ca28",
    "support"
@@ -346200,7 +346841,7 @@
    "reftest"
   ],
   "css/css-contain/contain-style-counters-004.html": [
-   "e0e0528918abe7d3d696c8b077a58f310ad1a810",
+   "4a366e32776d223dba69cb307a1ac06606d3ab3d",
    "reftest"
   ],
   "css/css-contain/contain-style-counters-ref.html": [
@@ -346467,6 +347108,10 @@
    "12f9b989fd2402d5e8af279cd03f03931856270e",
    "support"
   ],
+  "css/css-contain/reference/contain-style-counters-004-ref.html": [
+   "afe60666c02e726ab3c3f2a7f603255168a03b14",
+   "support"
+  ],
   "css/css-contain/reference/contain-subgrid-001.html": [
    "ab0d1fede5367681b74a6790286796249614a5f1",
    "support"
@@ -351719,6 +352364,14 @@
    "ecc601bcf6a97a1722e3901d731f9f424d0a79e1",
    "testharness"
   ],
+  "css/css-fonts/inheritance-expected.txt": [
+   "069790ba0e73eea6d946c72bcb0d06fe18ceb832",
+   "support"
+  ],
+  "css/css-fonts/inheritance.html": [
+   "8ff02fb7405a358cb4716716e87adc1bee58fca7",
+   "testharness"
+  ],
   "css/css-fonts/language-specific-01.html": [
    "0438046083112d0497ecad4eb8ad34ff3c98f09b",
    "visual"
@@ -351855,6 +352508,54 @@
    "56cb1eca09d7741275df03ea217e2b31acb04371",
    "testharness"
   ],
+  "css/css-fonts/parsing/font-family-computed-expected.txt": [
+   "c937bbbe523b0f57c4c98912eaf40b14bf2a38e1",
+   "support"
+  ],
+  "css/css-fonts/parsing/font-family-computed.html": [
+   "993b72e6a8f013d92633ce4866e1522c1c554ffe",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-family-invalid.html": [
+   "f4403e7e6424734ea4b3b4acedde90eb3c06c983",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-family-valid-expected.txt": [
+   "30d61bea11f3f7a49ff0c9770c85bca6d9738305",
+   "support"
+  ],
+  "css/css-fonts/parsing/font-family-valid.html": [
+   "2dafcc684569a9ea2b8b455ab23644ba7bd1da52",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-feature-settings-computed.html": [
+   "137d9dbbf478a7269fd7047092ee1a56238163fb",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-feature-settings-invalid.html": [
+   "37689ce7058535cb6afbfe99879e0d6209821b61",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-feature-settings-valid.html": [
+   "9ed4b5cde208a9635ab76e78482baafae3bfb8b4",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-invalid.html": [
+   "d6db9338aa2adf5945fd88e29bdd9376e2efe1d1",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-kerning-computed.html": [
+   "5cd0b252ffed757dc59bafcef2abce4c087340da",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-kerning-invalid.html": [
+   "46e94b0a76f274b22d75fe51b5f0207a4ca1a829",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-kerning-valid.html": [
+   "623f860dd79c452b6403c1aa23ebf3ffa9dbbdac",
+   "testharness"
+  ],
   "css/css-fonts/parsing/font-size-adjust-computed.html": [
    "601e22ee0d13510b8a75ee36afbd508773836b0a",
    "testharness"
@@ -351867,6 +352568,54 @@
    "1e4d0aebe1147beba0ce37e2773125a0b742501e",
    "testharness"
   ],
+  "css/css-fonts/parsing/font-size-computed-expected.txt": [
+   "c993fecf4cc766fc5b6e31ff403d296de528fa0c",
+   "support"
+  ],
+  "css/css-fonts/parsing/font-size-computed.html": [
+   "ebbbeac0802928d0ea8ef0856470b824fcc2f697",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-size-invalid.html": [
+   "b3bccc289f0c6c1b10f5d6a9d9526cf94e9a3b8b",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-size-valid-expected.txt": [
+   "372fd174fc68ee57ad3ab8624a5d2bc56e3894ea",
+   "support"
+  ],
+  "css/css-fonts/parsing/font-size-valid.html": [
+   "72cf605302fbbd6e425715b0e6dcffac30d28da4",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-stretch-computed.html": [
+   "4a1ecdb6a6b84ba112e36f6745d1ebcac3107ffb",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-stretch-invalid.html": [
+   "9ff8fa5dcf8b60af5fe7d4a83bd0d0bcf227544c",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-stretch-valid.html": [
+   "38452c2699e625cef71d93273535f9002ae2c566",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-style-computed-expected.txt": [
+   "66fc2b59fea59c457b997643f44245451547d351",
+   "support"
+  ],
+  "css/css-fonts/parsing/font-style-computed.html": [
+   "a7bb42146a0e2bd8b24b557ad841bca424557026",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-style-invalid.html": [
+   "4542c29cf2ce6a3a6fada6e4392f469c410c4ca7",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-style-valid.html": [
+   "b61864478ba29a82854fe1924832ead4dc199747",
+   "testharness"
+  ],
   "css/css-fonts/parsing/font-synthesis-computed-expected.txt": [
    "e0da8b22288a50a27c2c6ded29625c953a5e7335",
    "support"
@@ -351887,6 +352636,66 @@
    "1d1aa5d29974125dc119223233f237ba4925e699",
    "testharness"
   ],
+  "css/css-fonts/parsing/font-valid-expected.txt": [
+   "00a03863e343a5de5440901148f658131fc11822",
+   "support"
+  ],
+  "css/css-fonts/parsing/font-valid.html": [
+   "769e6b42eae37a864fec6577614917f7b1fd7667",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-caps-computed.html": [
+   "03f37ec11c981d67fa08aba4c7a05dd548cd8798",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-caps-invalid.html": [
+   "4c538ad5eb75cf3f0cb6dec5c6dd5d8da48f39ed",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-caps-valid.html": [
+   "f34595a9f295f2952930d32ca6a94f506b10c5bf",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-east-asian-computed.html": [
+   "27b3b1c86dfb19392cdd528c9569582f5bfaccf2",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-east-asian-invalid.html": [
+   "30dbe403b8db67ec1921390e1611683407da3f23",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-east-asian-valid.html": [
+   "0f16ceccfe1fe2668d01dfc64e99f4e3ca3164b1",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-ligatures-computed.html": [
+   "8cc3fce267fd661e29b4954fd22909b5aec0c638",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-ligatures-invalid.html": [
+   "69af66b9b03baa1961e4cbd7470561c7597b339c",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-ligatures-valid.html": [
+   "2fdd99e226700a065ab6c5646f86dd2c6a5a0637",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-numeric-computed.html": [
+   "b7706e2688af587da2266f55cf06e5ab42853f40",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-numeric-invalid.html": [
+   "97f9e1484023cd2b8acea2cb62751ed6c29e5656",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-variant-numeric-valid-expected.txt": [
+   "28466d3703d943340647fc3382ec82a32464196a",
+   "support"
+  ],
+  "css/css-fonts/parsing/font-variant-numeric-valid.html": [
+   "ed240cc36d5ac8701e090748fe1ccb24057a2d53",
+   "testharness"
+  ],
   "css/css-fonts/parsing/font-variant-position-computed-expected.txt": [
    "ea96d5585016616586257e1c6cf00f20e362970a",
    "support"
@@ -351907,6 +352716,18 @@
    "3887ab0cc4b59024544338d2338c3a723fe3b625",
    "testharness"
   ],
+  "css/css-fonts/parsing/font-weight-computed.html": [
+   "b88565ee5aa23b20837bf625dd7cf08587dacb7e",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-weight-invalid.html": [
+   "af81569306247f3715dc7904490d9bd53fb2cce4",
+   "testharness"
+  ],
+  "css/css-fonts/parsing/font-weight-valid.html": [
+   "090729287b265ab3992a44867a622be595b5e7e9",
+   "testharness"
+  ],
   "css/css-fonts/quoted-generic-ignored-ref.html": [
    "70e2d50cd83f61017f0f22da14065c7afa76e1d1",
    "support"
@@ -376664,7 +377485,7 @@
    "support"
   ],
   "css/css-text/text-transform/math/text-transform-math-auto-002.tentative.html": [
-   "86c1ea17c76b40a0a69ab1daf1ad563e810e4dcc",
+   "32bad74f94d682db15f893b5a61c85c113083ef7",
    "reftest"
   ],
   "css/css-text/text-transform/math/text-transform-math-bold-001.tentative-ref.html": [
@@ -384388,11 +385209,11 @@
    "testharness"
   ],
   "css/css-transitions/CSSTransition-effect.tentative-expected.txt": [
-   "542b9547ff7ba391ed150bba0e27b556ddde7f17",
+   "065f2d4229e82516c9dbdc22aac1b8b7c88c2db9",
    "support"
   ],
   "css/css-transitions/CSSTransition-effect.tentative.html": [
-   "3979dd29533ad3a3af7135aaa5255721aa100702",
+   "a6153b33171daee1dc0e9cb5b98c2ff89059fbae",
    "testharness"
   ],
   "css/css-transitions/CSSTransition-finished.tentative.html": [
@@ -410307,6 +411128,10 @@
    "68eeeefe15fdc587cdf0d4382f90c33ee3230290",
    "testharness"
   ],
+  "element-timing/buffered-flag.html": [
+   "19c387d26b9c22ed10c352c57d5c771ea75363ba",
+   "testharness"
+  ],
   "element-timing/cross-origin-element.sub.html": [
    "40a97056c2bfba92485f627117f61cd56a563d0b",
    "testharness"
@@ -437695,6 +438520,10 @@
    "cbae6b15410e13433c4a9fadd8c2a8cc5fbc4fdc",
    "support"
   ],
+  "infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini": [
+   "c83e8ff9261b78084f75fb584a8b5236cc28c3fd",
+   "support"
+  ],
   "infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
    "49e4a40016e0eb2304a5e6e61b19556818c4ef3d",
    "support"
@@ -437895,6 +438724,10 @@
    "ea7973a62e0ee9cdc874879fd844b2309e944e61",
    "testharness"
   ],
+  "infrastructure/testdriver/actions/actionsWithKeyPressed.html": [
+   "74e939f5fde4773aade6ce4f7bbee573e39ae8ec",
+   "testharness"
+  ],
   "infrastructure/testdriver/actions/elementPosition.html": [
    "145852e7b51bd0cdc9e7b4ef5ebddcbf1c0235c5",
    "testharness"
@@ -451859,6 +452692,14 @@
    "07ede8cb9d1f0c0b6c7ab9af7593af81188896f1",
    "support"
   ],
+  "performance-timeline/buffered-flag-after-timeout.any.js": [
+   "08b3e3231465857cf248e4ace8ef574469a14864",
+   "testharness"
+  ],
+  "performance-timeline/buffered-flag-observer.any.js": [
+   "31dc39c128ad55c13eef66583a6888622f86bf63",
+   "testharness"
+  ],
   "performance-timeline/case-sensitivity.any.js": [
    "588b59cc6a796b64aa4ad42137700430805a1d16",
    "testharness"
@@ -451871,6 +452712,14 @@
    "585bda92dced217354f93fb5beebe6d930890c0e",
    "testharness"
   ],
+  "performance-timeline/multiple-buffered-flag-observers.any.js": [
+   "5dd44fb18fbdb9c3c32f4538d2ef7ec2cac47302",
+   "testharness"
+  ],
+  "performance-timeline/observer-buffered-false.any.js": [
+   "a28100b0fdba2e00579809a581935d312cf1245e",
+   "testharness"
+  ],
   "performance-timeline/performanceentry-tojson.any.js": [
    "44f0156eec19241970028c28e5897be4d6f1cb81",
    "testharness"
@@ -475696,7 +476545,7 @@
    "support"
   ],
   "tools/webdriver/webdriver/client.py": [
-   "1ce49069cfdc128f4ea0e6584bd13bac4d50774a",
+   "781eabdbc4dd46779064c1ebfcc2c99a86e1d3a0",
    "support"
   ],
   "tools/webdriver/webdriver/error.py": [
@@ -475716,7 +476565,7 @@
    "support"
   ],
   "tools/wpt/browser.py": [
-   "b093600b596fa8d3736b72e842bcbacdd82f6463",
+   "23e91a7aa40b82081ea10f2638c7414b61fe9456",
    "support"
   ],
   "tools/wpt/commands.json": [
@@ -475744,7 +476593,7 @@
    "support"
   ],
   "tools/wpt/run.py": [
-   "fec2afc9a365b9daa813cfe6463060958a4a7a1b",
+   "282dd29178b626ffc19b0e896f759b6fa388789f",
    "support"
   ],
   "tools/wpt/testfiles.py": [
@@ -475932,7 +476781,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/base.py": [
-   "d1c123a3ef39c016fb32475e5255c119f306a828",
+   "588e0b2fad6afbe17ed4ba9ea5b8f25cc9b7e055",
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/executorchrome.py": [
@@ -475952,7 +476801,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/executormarionette.py": [
-   "7ab701879ff1c0186a077c9e0dad313f6064ed6a",
+   "c46571bd544927fca7b3fb2a8c167b5f7cf51311",
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/executoropera.py": [
@@ -475964,7 +476813,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/executorselenium.py": [
-   "e7b9f45dc81d5f11f58beeefff9d9f76d6bc1047",
+   "9a2d223f6495356859aec05035deec2f775a7f22",
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/executorservo.py": [
@@ -475976,7 +476825,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
-   "65938a7678b1aefc003faa05521dfde3a0edaaa1",
+   "ce7691c4d565ac330b7f941111d36b7e035ef7db",
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/executorwebkit.py": [
@@ -475988,7 +476837,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/protocol.py": [
-   "d08b74bfc36ae97cebaa148741701dcc2a767399",
+   "7da592396096db85479dd65162ae63775856a937",
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/pytestrunner/__init__.py": [
@@ -476076,7 +476925,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/testdriver-extra.js": [
-   "09d7c2908671228e625d0717e567d751470fe6cd",
+   "e23073dece1f35db632d48ad6036a90a9cc12b46",
    "support"
   ],
   "tools/wptrunner/wptrunner/testdriver-vendor.js": [
@@ -477395,6 +478244,10 @@
    "948e9e1200422cfabde1eff0e05ea969527d4c19",
    "support"
   ],
+  "user-timing/buffered-flag.any.js": [
+   "e3e60656317d523961a1c9bb459be1d8cacfebda",
+   "testharness"
+  ],
   "user-timing/clearMarks.html": [
    "92c60a3bbb856bd05bf13f12bde09dac7eefb6e6",
    "testharness"
@@ -477535,6 +478388,10 @@
    "822376be24c2fc7e45441e47a1a3f09d341e7bac",
    "support"
   ],
+  "user-timing/structured-serialize-detail.html": [
+   "c9689fe33480dfcd71bbb953804b7d6308988cb2",
+   "testharness"
+  ],
   "user-timing/supported-usertiming-types.any.js": [
    "ea3b2fe9dc90f70f3998a94a1460460b8b8b5992",
    "testharness"
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.html
deleted file mode 100644
index 0747af2..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'HeartRate device properties';
-
-bluetooth_test(
-    () => getHealthThermometerService()
-              .then(({service}) => Promise.all([
-                service.getCharacteristic('temperature_measurement'),
-                service.getCharacteristic('measurement_interval')
-              ]))
-              .then(([temperature_measurement, measurement_interval]) => {
-                let tm_expected_properties =
-                    new TestCharacteristicProperties(['indicate']);
-                assert_properties_equal(
-                    temperature_measurement.properties, tm_expected_properties);
-
-                let mi_expected_properties = new TestCharacteristicProperties(
-                    ['read', 'write', 'indicate']);
-                assert_properties_equal(
-                    measurement_interval.properties, mi_expected_properties);
-              }),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.window.js
new file mode 100644
index 0000000..abe9f79
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/characteristicProperties.https.window.js
@@ -0,0 +1,23 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'HeartRate device properties';
+
+bluetooth_test(async () => {
+  const {service} = await getHealthThermometerService()
+  const [temperature_measurement, measurement_interval] = await Promise.all([
+    service.getCharacteristic('temperature_measurement'),
+    service.getCharacteristic('measurement_interval')
+  ]);
+  const tm_expected_properties = new TestCharacteristicProperties(['indicate']);
+  assert_properties_equal(
+      temperature_measurement.properties, tm_expected_properties);
+
+  const mi_expected_properties =
+      new TestCharacteristicProperties(['read', 'write', 'indicate']);
+  assert_properties_equal(
+      measurement_interval.properties, mi_expected_properties);
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.html
deleted file mode 100644
index 35f5ee9..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Characteristic is removed. Reject with InvalidStateError.';
-const expected = new DOMException('GATT Characteristic no longer exists.',
-    'InvalidStateError');
-let characteristic, fake_characteristic;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_characteristic} = _))
-    .then(() => fake_characteristic.remove())
-    .then(() => assert_promise_rejects_with_message(
-        characteristic.startNotifications(),
-        expected,
-        'Characteristic got removed.')),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js
new file mode 100644
index 0000000..6b5d3e22
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.js
@@ -0,0 +1,18 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'Characteristic is removed. Reject with InvalidStateError.';
+const expected = new DOMException(
+    'GATT Characteristic no longer exists.', 'InvalidStateError');
+
+bluetooth_test(async () => {
+  const {characteristic, fake_characteristic} =
+      await getMeasurementIntervalCharacteristic();
+  await fake_characteristic.remove();
+  await assert_promise_rejects_with_message(
+      characteristic.startNotifications(), expected,
+      'Characteristic got removed.');
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.html
deleted file mode 100644
index bf389ce..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Service is removed. Reject with InvalidStateError.';
-const expected = new DOMException('GATT Service no longer exists.',
-    'InvalidStateError');
-let characteristic, fake_peripheral, fake_service;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_peripheral, fake_service} = _))
-    .then(() => fake_service.remove())
-    .then(() => fake_peripheral.simulateGATTServicesChanged())
-    .then(() => assert_promise_rejects_with_message(
-        characteristic.startNotifications(),
-        expected,
-        'Service got removed.')),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.js
new file mode 100644
index 0000000..29bc671
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.js
@@ -0,0 +1,18 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'Service is removed. Reject with InvalidStateError.';
+const expected =
+    new DOMException('GATT Service no longer exists.', 'InvalidStateError');
+
+bluetooth_test(async () => {
+  const {characteristic, fake_peripheral, fake_service} =
+      await getMeasurementIntervalCharacteristic();
+  await fake_service.remove();
+  await fake_peripheral.simulateGATTServicesChanged();
+  await assert_promise_rejects_with_message(
+      characteristic.startNotifications(), expected, 'Service got removed.');
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html
deleted file mode 100644
index c0d4328a..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Add multiple event listeners then readValue().';
-let characteristic, fake_characteristic;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_characteristic} = _))
-    .then(() => fake_characteristic.setNextReadResponse(GATT_SUCCESS, [0,1,2]))
-    .then(() => assert_promise_resolves_after_event(
-        characteristic,
-        'readValue',
-        'characteristicvaluechanged',
-        3 /* attach 3 listeners */))
-    .then(results => {
-      let read_value = new Uint8Array(results[0].buffer);
-      let event_values = results.slice(1).map(v => new Uint8Array(v.buffer));
-      for (let event_value of event_values) {
-        assert_equals(event_value.buffer, read_value.buffer);
-        assert_array_equals(event_value, read_value);
-      }
-    }), test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js
new file mode 100644
index 0000000..7e6e4159b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.js
@@ -0,0 +1,26 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'Add multiple event listeners then readValue().';
+
+bluetooth_test(async () => {
+  const {characteristic, fake_characteristic} =
+      await getMeasurementIntervalCharacteristic();
+  await fake_characteristic.setNextReadResponse(GATT_SUCCESS, [0, 1, 2]);
+
+  // Make sure that |characteristic.readValue()| resolves after
+  // |characteristicvaluechanged| is fired |3| times.
+  const results = await assert_promise_resolves_after_event(
+      characteristic /* object */, 'readValue' /* func */,
+      'characteristicvaluechanged' /* event */, 3 /* num_listeners */);
+
+  const read_value = new Uint8Array(results[0].buffer);
+  const event_values = results.slice(1).map(v => new Uint8Array(v.buffer));
+  for (const event_value of event_values) {
+    assert_equals(event_value.buffer, read_value.buffer);
+    assert_array_equals(event_value, read_value);
+  }
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.html
deleted file mode 100644
index 3c963c3..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
-const expected = new DOMException('GATT Characteristic no longer exists.',
-    'InvalidStateError');
-let characteristic, fake_characteristic;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_characteristic} = _))
-    .then(() => fake_characteristic.remove())
-    .then(() => assert_promise_rejects_with_message(
-        characteristic.readValue(),
-        expected,
-        'Characteristic got removed.')),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js
new file mode 100644
index 0000000..07678e6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js
@@ -0,0 +1,17 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
+const expected = new DOMException(
+    'GATT Characteristic no longer exists.', 'InvalidStateError');
+
+bluetooth_test(async () => {
+  const {characteristic, fake_characteristic} =
+      await getMeasurementIntervalCharacteristic();
+  await fake_characteristic.remove();
+  await assert_promise_rejects_with_message(
+      characteristic.readValue(), expected, 'Characteristic got removed.');
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.html
deleted file mode 100644
index a217bdd3..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Reading a characteristic should fire an event.';
-let characteristic, fake_characteristic;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_characteristic} = _))
-    .then(() => fake_characteristic.setNextReadResponse(
-          GATT_SUCCESS, [0, 1, 2]))
-    .then(() => assert_promise_resolves_after_event(
-         characteristic,
-         'readValue',
-         'characteristicvaluechanged'))
-    .then(results => new Promise(resolve => {
-        let read_value = new Uint8Array(results[0].buffer);
-        let event_value = new Uint8Array(results[1].buffer);
-        assert_equals(event_value.buffer, read_value.buffer);
-        assert_array_equals(event_value, read_value);
-        resolve();
-    })), test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.js
new file mode 100644
index 0000000..eee34d0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.js
@@ -0,0 +1,24 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'Reading a characteristic should fire an event.';
+
+bluetooth_test(async () => {
+  const {characteristic, fake_characteristic} =
+      await getMeasurementIntervalCharacteristic();
+  await fake_characteristic.setNextReadResponse(GATT_SUCCESS, [0, 1, 2]);
+
+  // Make sure that |characteristic.readValue()| resolves after
+  // |characteristicvaluechanged| is fired.
+  const results = await assert_promise_resolves_after_event(
+      characteristic /* object */, 'readValue' /* func */,
+      'characteristicvaluechanged' /* event */);
+
+  const read_value = new Uint8Array(results[0].buffer);
+  const event_value = new Uint8Array(results[1].buffer);
+  assert_equals(event_value.buffer, read_value.buffer);
+  assert_array_equals(event_value, read_value);
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.html
deleted file mode 100644
index 4dca3ed..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'A read request succeeds and returns the characteristic\'s ' +
-    'value.';
-const EXPECTED_VALUE = [0, 1, 2];
-
-let characteristic, fake_characteristic;
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_characteristic} = _))
-    .then(() =>  fake_characteristic.setNextReadResponse(
-        GATT_SUCCESS,
-        EXPECTED_VALUE))
-    .then(() => characteristic.readValue())
-    .then(value => assert_array_equals(
-        new Uint8Array(value.buffer),
-        EXPECTED_VALUE)),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.js
new file mode 100644
index 0000000..aeece7d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.js
@@ -0,0 +1,17 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'A read request succeeds and returns the characteristic\'s ' +
+    'value.';
+const EXPECTED_VALUE = [0, 1, 2];
+
+bluetooth_test(async () => {
+  const {characteristic, fake_characteristic} =
+      await getMeasurementIntervalCharacteristic();
+  await fake_characteristic.setNextReadResponse(GATT_SUCCESS, EXPECTED_VALUE);
+  const value = await characteristic.readValue();
+  assert_array_equals(new Uint8Array(value.buffer), EXPECTED_VALUE)
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.html
deleted file mode 100644
index 11bb9391..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Succesful read should update characteristic.value';
-const EXPECTED_VALUE = [0, 1, 2];
-let characteristic, fake_characteristic;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_characteristic} = _))
-    .then(() => assert_equals(characteristic.value, null))
-    .then(() => fake_characteristic.setNextReadResponse(
-          GATT_SUCCESS, EXPECTED_VALUE))
-    .then(() => characteristic.readValue())
-    .then(() => assert_array_equals(
-          new Uint8Array(characteristic.value.buffer),
-          EXPECTED_VALUE)),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.js
new file mode 100644
index 0000000..45da8af
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.js
@@ -0,0 +1,18 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+const test_desc = 'Succesful read should update characteristic.value';
+const EXPECTED_VALUE = [0, 1, 2];
+
+bluetooth_test(async () => {
+  const {characteristic, fake_characteristic} =
+      await getMeasurementIntervalCharacteristic();
+  assert_equals(characteristic.value, null);
+
+  await fake_characteristic.setNextReadResponse(GATT_SUCCESS, EXPECTED_VALUE);
+  await characteristic.readValue();
+  assert_array_equals(
+      new Uint8Array(characteristic.value.buffer), EXPECTED_VALUE)
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.html
deleted file mode 100644
index 48f8127..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Service gets removed. Reject with InvalidStateError.';
-const expected = new DOMException('GATT Service no longer exists.',
-    'InvalidStateError');
-let characteristic, fake_peripheral, fake_service;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_peripheral, fake_service} = _))
-    .then(() => fake_service.remove())
-    .then(() => fake_peripheral.simulateGATTServicesChanged())
-    .then(() => assert_promise_rejects_with_message(
-        characteristic.readValue(),
-        expected,
-        'Service got removed.')),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.js
new file mode 100644
index 0000000..07e9701d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.js
@@ -0,0 +1,18 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'Service gets removed. Reject with InvalidStateError.';
+const expected =
+    new DOMException('GATT Service no longer exists.', 'InvalidStateError');
+
+bluetooth_test(async () => {
+  const {characteristic, fake_peripheral, fake_service} =
+      await getMeasurementIntervalCharacteristic();
+  await fake_service.remove();
+  await fake_peripheral.simulateGATTServicesChanged();
+  await assert_promise_rejects_with_message(
+      characteristic.readValue(), expected, 'Service got removed.')
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.html
deleted file mode 100644
index 395d49b..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Same parent service returned from multiple characteristics.';
-
-bluetooth_test(
-    () => getHealthThermometerService()
-              .then(({service}) => Promise.all([
-                service.getCharacteristic('measurement_interval'),
-                service.getCharacteristic('temperature_measurement')
-              ]))
-              .then(
-                  characteristics => assert_equals(
-                      characteristics[0].service, characteristics[1].service)),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.js
new file mode 100644
index 0000000..e3bc5d0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.js
@@ -0,0 +1,16 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'Same parent service returned from multiple characteristics.';
+
+bluetooth_test(async () => {
+  const {service} = await getHealthThermometerService();
+  const characteristics = await Promise.all([
+    service.getCharacteristic('measurement_interval'),
+    service.getCharacteristic('temperature_measurement')
+  ]);
+  assert_equals(characteristics[0].service, characteristics[1].service);
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.html
deleted file mode 100644
index 0b2a915..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = '[SameObject] test for BluetoothRemoteGATTCharacteristic ' +
-    'service.';
-
-bluetooth_test(
-    () => getMeasurementIntervalCharacteristic().then(
-        ({characteristic}) =>
-            assert_equals(characteristic.service, characteristic.service)),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.window.js
new file mode 100644
index 0000000..6b1f543
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/service-same-object.https.window.js
@@ -0,0 +1,13 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = '[SameObject] test for BluetoothRemoteGATTCharacteristic ' +
+    'service.';
+
+bluetooth_test(async () => {
+  const {characteristic} = await getMeasurementIntervalCharacteristic();
+  assert_equals(characteristic.service, characteristic.service);
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.html
deleted file mode 100644
index b8a1abfa..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-
-function detachBuffer(buffer) {
-  window.postMessage('', '*', [buffer]);
-}
-
-bluetooth_test(async (t) => {
-  let {characteristic, fake_characteristic} =
-      await getMeasurementIntervalCharacteristic();
-
-  let typed_array = Uint8Array.of(1, 2);
-  detachBuffer(typed_array.buffer);
-  await promise_rejects(
-    t, 'InvalidStateError', characteristic.writeValue(typed_array));
-
-  let array_buffer = Uint8Array.of(3, 4).buffer;
-  detachBuffer(array_buffer);
-  await promise_rejects(
-    t, 'InvalidStateError', characteristic.writeValue(array_buffer));
-}, 'writeValue() fails when passed a detached buffer');
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js
new file mode 100644
index 0000000..35347e3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.js
@@ -0,0 +1,25 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'writeValue() fails when passed a detached buffer';
+
+function detachBuffer(buffer) {
+  window.postMessage('', '*', [buffer]);
+}
+
+bluetooth_test(async (t) => {
+  const {characteristic} = await getMeasurementIntervalCharacteristic();
+
+  const typed_array = Uint8Array.of(1, 2);
+  detachBuffer(typed_array.buffer);
+  await promise_rejects(
+      t, 'InvalidStateError', characteristic.writeValue(typed_array));
+
+  const array_buffer = Uint8Array.of(3, 4).buffer;
+  detachBuffer(array_buffer);
+  await promise_rejects(
+      t, 'InvalidStateError', characteristic.writeValue(array_buffer));
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.html
deleted file mode 100644
index f79c2191..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
-const expected = new DOMException('GATT Characteristic no longer exists.',
-    'InvalidStateError');
-let characteristic, fake_characteristic;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_characteristic} = _))
-    .then(() => fake_characteristic.remove())
-    .then(() => assert_promise_rejects_with_message(
-        characteristic.writeValue(new ArrayBuffer(1 /* length */)),
-        expected,
-        'Characteristic got removed.')),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js
new file mode 100644
index 0000000..33a963b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.js
@@ -0,0 +1,18 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
+const expected = new DOMException(
+    'GATT Characteristic no longer exists.', 'InvalidStateError');
+
+bluetooth_test(async () => {
+  const {characteristic, fake_characteristic} =
+      await getMeasurementIntervalCharacteristic();
+  await fake_characteristic.remove();
+  await assert_promise_rejects_with_message(
+      characteristic.writeValue(new ArrayBuffer(1 /* length */)), expected,
+      'Characteristic got removed.');
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.html
deleted file mode 100644
index 2b43bfb7..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'Service gets removed. Reject with InvalidStateError.';
-const expected = new DOMException('GATT Service no longer exists.',
-    'InvalidStateError');
-let characteristic, fake_peripheral, fake_service;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_peripheral, fake_service} = _))
-    .then(() => fake_service.remove())
-    .then(() => fake_peripheral.simulateGATTServicesChanged())
-    .then(() => assert_promise_rejects_with_message(
-        characteristic.writeValue(new ArrayBuffer(1 /* length */)),
-        expected,
-        'Service got removed.')),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.js
new file mode 100644
index 0000000..a9f812c1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.js
@@ -0,0 +1,19 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'Service gets removed. Reject with InvalidStateError.';
+const expected =
+    new DOMException('GATT Service no longer exists.', 'InvalidStateError');
+
+bluetooth_test(async () => {
+  const {characteristic, fake_peripheral, fake_service} =
+      await getMeasurementIntervalCharacteristic();
+  await fake_service.remove();
+  await fake_peripheral.simulateGATTServicesChanged();
+  await assert_promise_rejects_with_message(
+      characteristic.writeValue(new ArrayBuffer(1 /* length */)), expected,
+      'Service got removed.');
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.html b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.html
deleted file mode 100644
index f2cf577e4..0000000
--- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
-<script>
-'use strict';
-const test_desc = 'A regular write request to a writable characteristic ' +
-    'should succeed.';
-let typed_array = Uint8Array.of(1, 2);
-let array_buffer = Uint8Array.of(3, 4).buffer;
-let data_view = new DataView(new ArrayBuffer(2));
-let characteristic, fake_characteristic;
-
-bluetooth_test(() => getMeasurementIntervalCharacteristic()
-    .then(_ => ({characteristic, fake_characteristic} = _))
-    .then(() => new Promise(resolve => {
-        data_view.setUint8(0, 5);
-        data_view.setUint8(1, 6);
-        resolve();
-    }))
-    .then(() => fake_characteristic.getLastWrittenValue())
-    .then(last_value => assert_true(last_value === null))
-
-    .then(() => fake_characteristic.setNextWriteResponse(GATT_SUCCESS))
-    .then(() => characteristic.writeValue(typed_array))
-    .then(() => fake_characteristic.getLastWrittenValue())
-    .then(last_value => assert_array_equals(last_value, [1, 2]))
-
-    .then(() => fake_characteristic.setNextWriteResponse(GATT_SUCCESS))
-    .then(() => characteristic.writeValue(array_buffer))
-    .then(() => fake_characteristic.getLastWrittenValue())
-    .then(last_value => assert_array_equals(last_value, [3, 4]))
-
-    .then(() => fake_characteristic.setNextWriteResponse(GATT_SUCCESS))
-    .then(() => characteristic.writeValue(data_view))
-    .then(() => fake_characteristic.getLastWrittenValue())
-    .then(last_value => assert_array_equals(last_value, [5, 6])),
-    test_desc);
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.js
new file mode 100644
index 0000000..1472c61
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.js
@@ -0,0 +1,39 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-helpers.js
+'use strict';
+const test_desc = 'A regular write request to a writable characteristic ' +
+    'should succeed.';
+
+bluetooth_test(async () => {
+  const {characteristic, fake_characteristic} =
+      await getMeasurementIntervalCharacteristic();
+
+  let last_value = await fake_characteristic.getLastWrittenValue();
+  assert_equals(last_value, null);
+
+  await fake_characteristic.setNextWriteResponse(GATT_SUCCESS);
+
+  const typed_array = Uint8Array.of(1, 2);
+  await characteristic.writeValue(typed_array);
+  last_value = await fake_characteristic.getLastWrittenValue();
+  assert_array_equals(last_value, [1, 2]);
+
+  await fake_characteristic.setNextWriteResponse(GATT_SUCCESS);
+
+  const array_buffer = Uint8Array.of(3, 4).buffer;
+  await characteristic.writeValue(array_buffer);
+  last_value = await fake_characteristic.getLastWrittenValue();
+  assert_array_equals(last_value, [3, 4]);
+
+  await fake_characteristic.setNextWriteResponse(GATT_SUCCESS);
+
+  const data_view = new DataView(new ArrayBuffer(2));
+  data_view.setUint8(0, 5);
+  data_view.setUint8(1, 6);
+  await characteristic.writeValue(data_view);
+  last_value = await fake_characteristic.getLastWrittenValue();
+  assert_array_equals(last_value, [5, 6]);
+}, test_desc);
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-iframe-other-origin.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-iframe-other-origin.tentative.https.html
new file mode 100644
index 0000000..9859fa8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-iframe-other-origin.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "cross origin iframe not setting other origins",
+    initial_url: echo,
+    accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
+    expect_url: do_not_expect,
+    type: "iframe" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-iframe.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-iframe.tentative.https.html
new file mode 100644
index 0000000..4990f6f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-iframe.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "cross origin iframe not setting own origin",
+    initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
+    accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
+    expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
+    type: "iframe" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-navigation.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-navigation.tentative.https.html
new file mode 100644
index 0000000..19f774b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-navigation.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "cross origin navigation",
+    initial_url: echo,
+    accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
+    expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect,
+    type: "navigation" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-subresource.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-subresource.tentative.https.html
new file mode 100644
index 0000000..fcbdb2a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-cross-origin-subresource.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "cross origin subresource",
+    initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
+    accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept,
+    expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
+    type: "subresource" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-same-origin-iframe.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-same-origin-iframe.tentative.https.html
new file mode 100644
index 0000000..ebac307
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-same-origin-iframe.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "same origin iframe",
+    initial_url: echo,
+    accept_url: accept,
+    expect_url: expect,
+    type: "iframe" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-same-origin-navigation.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-same-origin-navigation.tentative.https.html
new file mode 100644
index 0000000..3962528c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-same-origin-navigation.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "same origin navigation",
+    initial_url: echo,
+    accept_url: accept,
+    expect_url: expect,
+    type: "navigation" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-same-origin-subresource.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-same-origin-subresource.tentative.https.html
new file mode 100644
index 0000000..0a0028e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/accept-ch-lifetime-same-origin-subresource.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "same origin subresource",
+    initial_url: echo,
+    accept_url: accept,
+    expect_url: do_not_expect,
+    type: "subresource" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime.tentative.https.html
deleted file mode 100644
index 678f8ea..0000000
--- a/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime.tentative.https.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<html>
-<title>Accept-CH-Lifetime test</title>
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<!--
-Apart from this webpage, the test opens two more html web page. One test is run
-in this web page, and two in the other web pages.
--->
-
-<script>
-
-// This test fetches resources/accept_ch_lifetime.html. The response headers to
-// that webpage contain Accept-CH and Accept-CH-Lifetime headers.
-// Fetching that webpage should cause the user-agent to persist origin
-// preferences for the client hints specified in Accept-CH header for a
-// duration specified in the Accept-CH-Lifetime header.
-
-// Next, to verify if the origin preferences were persisted by the user
-// agent, this test fetches resources/expect_client_hints_headers.html
-// in a new window. Fetching of resources/expect_client_hints_headers.html
-// verifies that the user agent actually sends the client hints in the request
-// headers.
-
-// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
-// is resolved.
-
-// First, verify the initial state to make sure that the browser does not have
-// client hints preferences cached from a previous run of the test.
-promise_test(t => {
-  return fetch("echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers when fetching echo_client_hints_received.py.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-  });
-}, "Precondition: Test that the browser does not have client hints preferences cached");
-
-async_test(t => {
-  window.addEventListener('message', t.step_func(function(e) {
-    if(!e.source.location.pathname.includes("expect_client_hints_headers.html")) {
-      return;
-    }
-    if(typeof e.data != "string")
-      return;
-    assert_equals(e.data, "PASS");
-    t.done();
-  }));
-}, "Loading of resources/expect_client_hints_headers.html did not finish.");
-
-
-function acceptChLifetimeLoaded() {
-  // Open a new window. Verify that the user agent attaches the client hints.
-  var verify_win = window.open("expect_client_hints_headers.html");
-  assert_not_equals(verify_win, null, "Popup windows not allowed?");
-}
-
-// Fetching this webpage should cause user-agent to persist client hint
-// preferences for the origin.
-var win = window.open("resources/accept_ch_lifetime.html");
-assert_not_equals(win, null, "Popup windows not allowed?");
-win.addEventListener('load', acceptChLifetimeLoaded, false);
-
-</script>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime_cross_origin_iframe.tentative.sub.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime_cross_origin_iframe.tentative.sub.https.html
deleted file mode 100644
index 2e81a16..0000000
--- a/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime_cross_origin_iframe.tentative.sub.https.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<html>
-<title>Accept-CH-Lifetime test with cross-origin iframe</title>
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<!--
-Apart from this webpage, the test opens another html web page. One test is run
-in this web page, and another in the second web page.
--->
-
-<script>
-
-// This test fetches resources/accept_ch_lifetime.html in a cross origin iframe.
-// The response headers to that webpage contain Accept-CH and Accept-CH-Lifetime
-// headers.
-
-// Fetching that webpage should NOT cause the user-agent to persist origin
-// preferences for the client hints specified.
-
-// Next, to verify if the origin preferences were NOT persisted by the user
-// agent, this test fetches resources/do_not_expect_client_hints_headers.html
-// in a new window. Fetching of
-// resources/do_not_expect_client_hints_headers.html
-// verifies that the user agent did not actually sent the client hints in the
-// request headers.
-
-// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
-// is resolved.
-
-// First, verify the initial state to make sure that the browser does not have
-// client hints preferences cached from a previous run of the test.
-promise_test(t => {
-  return fetch("echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers when fetching echo_client_hints_received.py.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-  });
-}, "Precondition: Test that the browser does not have client hints preferences cached");
-
-async_test(t => {
-  window.addEventListener('message', t.step_func(function(e) {
-    if(!e.source.location.pathname.includes("do_not_expect_client_hints_headers.html")) {
-      return;
-    }
-    if(typeof e.data != "string")
-      return;
-    assert_equals(e.data, "PASS");
-    t.done();
-  }));
-}, "Loading of resources/do_not_expect_client_hints_headers.html did not finish.");
-
-function acceptChLifetimeLoaded() {
-  // Open a new window. Verify that the user agent does not attach the client
-  // hints.
-  var verify_win = window.open("resources/do_not_expect_client_hints_headers.html");
-  assert_not_equals(verify_win, null, "Popup windows not allowed?");
-}
-
-</script>
-
-<!-- Fetching this webpage should NOT cause user-agent to persist client hint
- preferences for the origin.-->
-<iframe onload="acceptChLifetimeLoaded()" src="https://{{hosts[][www]}}:{{ports[https][0]}}/client-hints/resources/accept_ch_lifetime.html"></iframe>
-
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime_same_origin_iframe.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime_same_origin_iframe.tentative.https.html
deleted file mode 100644
index 893b89e..0000000
--- a/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime_same_origin_iframe.tentative.https.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<html>
-<title>Accept-CH-Lifetime test with same-origin iframe</title>
-<meta name="timeout" content="long">
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<!--
-Apart from this webpage, the test opens another html web page. One test is run
-in this web page, and another in the second web page.
--->
-
-<script>
-
-// This test fetches resources/accept_ch_lifetime.html in a same origin iframe.
-// The response headers to that webpage contain Accept-CH and Accept-CH-Lifetime
-// headers.
-
-// Fetching that webpage should cause the user-agent to persist origin
-// preferences for the client hints specified in Accept-CH header for a
-// duration specified in the Accept-CH-Lifetime header.
-
-// Next, to verify if the origin preferences were persisted by the user
-// agent, this test fetches resources/expect_client_hints_headers.html
-// in a new window. Fetching of resources/expect_client_hints_headers.html
-// verifies that the user agent actually sends the client hints in the request
-// headers.
-
-// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
-// is resolved.
-
-// First, verify the initial state to make sure that the browser does not have
-// client hints preferences cached from a previous run of the test.
-promise_test(t => {
-  return fetch("echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers when fetching echo_client_hints_received.py.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-  });
-}, "Precondition: Test that the browser does not have client hints preferences cached");
-
-var acceptChLifetimeLoaded;
-
-async_test(t => {
-  acceptChLifetimeLoaded = t.step_func(() => {
-    // Open a new window. Verify that the user agent attaches the client hints.
-    var verify_win = window.open("resources/expect_client_hints_headers.html");
-    assert_not_equals(verify_win, null, "Popup windows not allowed?");
-  });
-
-  window.addEventListener('message', t.step_func((e) => {
-    if(!e.source.location.pathname.includes("expect_client_hints_headers.html")) {
-      return;
-    }
-    if(typeof e.data != "string")
-      return;
-    assert_equals(e.data, "PASS");
-    t.done();
-  }));
-}, "Loading of resources/expect_client_hints_headers.html did not finish.");
-</script>
-
-<!-- Fetching this webpage should cause user-agent to persist client hint
- preferences for the origin.-->
-<iframe onload="acceptChLifetimeLoaded()" src="resources/accept_ch_lifetime.html"></iframe>
-
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime_subresource.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime_subresource.tentative.https.html
deleted file mode 100644
index 4b351d17..0000000
--- a/third_party/blink/web_tests/external/wpt/client-hints/accept_ch_lifetime_subresource.tentative.https.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<html>
-<title>Accept-CH-Lifetime test with subresource</title>
-<meta name="timeout" content="long">
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<!--
-Apart from this webpage, the test opens another html web page. One test is run
-in this web page, and another in the second web page.
--->
-
-<script>
-
-// This test fetches resources/accept_ch_lifetime.html as a subresource. The
-// response headers to that webpage contain Accept-CH and Accept-CH-Lifetime
-// headers.
-
-// Fetching that webpage as a subresource should NOT cause the user-agent to
-// persist origin preferences for the client hints specified in Accept-CH
-// header.
-
-// Next, to verify if the origin preferences were not persisted by the user
-// agent, this test fetches resources/do_not_expect_client_hints_headers.html
-// in a new window. Fetching of
-// resources/do_not_expect_client_hints_headers.html verifies that the user
-// agent does not send the client hints in the request headers.
-
-// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
-// is resolved.
-
-// First, verify the initial state to make sure that the browser does not have
-// client hints preferences cached from a previous run of the test.
-promise_test(t => {
-  return fetch("echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers when fetching echo_client_hints_received.py.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-  });
-}, "Precondition: Test that the browser does not have client hints preferences cached");
-
-promise_test(t => {
-  // Fetching this web page as a subresource should NOT cause user-agent to
-  // persist client hint preferences for the origin.
-  return fetch("resources/accept_ch_lifetime.html").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-    // Open a new window. Verify that the user agent does not attach the client
-    // hints.
-    var win = window.open("resources/do_not_expect_client_hints_headers.html");
-    assert_not_equals(win, null, "Popup windows not allowed?");
-  });
-}, "Test receiving Accept-CH-Lifetime header");
-
-async_test(t => {
-  window.addEventListener('message', t.step_func(function(e) {
-    if(!e.source.location.pathname.includes("do_not_expect_client_hints_headers.html")) {
-      return;
-    }
-    if(typeof e.data != "string")
-      return;
-    assert_equals(e.data, "PASS");
-    t.done();
-  }));
-}, "Loading of resources/do_not_expect_client_hints_headers.html did not finish.");
-
-</script>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime.tentative.https.html
deleted file mode 100644
index 28bdeff..0000000
--- a/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime.tentative.https.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<html>
-<title>Accept-CH-Lifetime test</title>
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<!--
-Apart from this webpage, the test opens two more html web page. One test is run
-in this web page, and two in the other web pages.
--->
-
-<script>
-
-// This test fetches resources/http_equiv_accept_ch_lifetime.html. The response
-// to that webpage contains Accept-CH and Accept-CH-Lifetime http-equiv headers.
-// Fetching that webpage should cause the user-agent to persist origin
-// preferences for the client hints specified in Accept-CH header for a
-// duration specified in the Accept-CH-Lifetime header.
-
-// Next, to verify if the origin preferences were persisted by the user
-// agent, this test fetches resources/expect_client_hints_headers.html
-// in a new window. Fetching of resources/expect_client_hints_headers.html
-// verifies that the user agent actually sends the client hints in the request
-// headers.
-
-// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
-// is resolved.
-
-// First, verify the initial state to make sure that the browser does not have
-// client hints preferences cached from a previous run of the test.
-promise_test(t => {
-  return fetch("echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers when fetching echo_client_hints_received.py.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-  });
-}, "Precondition: Test that the browser does not have client hints preferences cached");
-
-async_test(t => {
-  window.addEventListener('message', t.step_func(function(e) {
-    if(!e.source.location.pathname.includes("expect_client_hints_headers.html")) {
-      return;
-    }
-    if(typeof e.data != "string")
-      return;
-    assert_equals(e.data, "PASS");
-    t.done();
-  }));
-}, "Loading of resources/expect_client_hints_headers.html did not finish.");
-
-function acceptChLifetimeLoaded() {
-  // Open a new window. Verify that the user agent attaches the client hints.
-  var verify_win = window.open("expect_client_hints_headers.html");
-  assert_not_equals(verify_win, null, "Popup windows not allowed?");
-}
-
-// Fetching this webpage should cause user-agent to persist client hint
-// preferences for the origin.
-var win = window.open("resources/http_equiv_accept_ch_lifetime.html");
-assert_not_equals(win, null, "Popup windows not allowed?");
-win.addEventListener('load', acceptChLifetimeLoaded, false);
-
-</script>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime_cross_origin_iframe.tentative.sub.https.html b/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime_cross_origin_iframe.tentative.sub.https.html
deleted file mode 100644
index cf4f8afc..0000000
--- a/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime_cross_origin_iframe.tentative.sub.https.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<html>
-<title>Accept-CH-Lifetime test with cross-origin iframe</title>
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<!--
-Apart from this webpage, the test opens another html web page. One test is run
-in this web page, and another in the second web page.
--->
-
-<script>
-
-// This test fetches resources/http_equiv_accept_ch_lifetime.html in a cross
-// origin iframe. The response to that webpage contains Accept-CH and
-// Accept-CH-Lifetime http-equiv headers.
-
-// Fetching that webpage should NOT cause the user-agent to persist origin
-// preferences for the client hints specified.
-
-// Next, to verify if the origin preferences were NOT persisted by the user
-// agent, this test fetches resources/do_not_expect_client_hints_headers.html
-// in a new window. Fetching of
-// resources/do_not_expect_client_hints_headers.html
-// verifies that the user agent did not actually sent the client hints in the
-// request headers.
-
-// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
-// is resolved.
-
-// First, verify the initial state to make sure that the browser does not have
-// client hints preferences cached from a previous run of the test.
-promise_test(t => {
-  return fetch("echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers when fetching echo_client_hints_received.py.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-  });
-}, "Precondition: Test that the browser does not have client hints preferences cached");
-
-async_test(t => {
-  window.addEventListener('message', t.step_func(function(e) {
-    if(!e.source.location.pathname.includes("do_not_expect_client_hints_headers.html")) {
-      return;
-    }
-    if(typeof e.data != "string")
-      return;
-    assert_equals(e.data, "PASS");
-    t.done();
-  }));
-}, "Loading of resources/do_not_expect_client_hints_headers.html did not finish.");
-
-function acceptChLifetimeLoaded() {
-  var verify_win = window.open("resources/do_not_expect_client_hints_headers.html");
-  assert_not_equals(verify_win, null, "Popup windows not allowed?");
-}
-
-</script>
-
-<!-- Fetching this webpage should NOT cause user-agent to persist client hint
- preferences for the origin.-->
-<iframe onload="acceptChLifetimeLoaded()" src="https://{{hosts[][www]}}:{{ports[https][0]}}/client-hints/resources/http_equiv_accept_ch_lifetime.html"></iframe>
-
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime_same_origin_iframe.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime_same_origin_iframe.tentative.https.html
deleted file mode 100644
index efc8d8b..0000000
--- a/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime_same_origin_iframe.tentative.https.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<html>
-<title>Accept-CH-Lifetime test with same-origin iframe</title>
-<meta name="timeout" content="long">
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<!--
-Apart from this webpage, the test opens another html web page. One test is run
-in this web page, and another in the second web page.
--->
-
-<script>
-
-// This test fetches resources/http_equiv_accept_ch_lifetime.html in a same
-// origin iframe. The response to that webpage contains Accept-CH and
-// Accept-CH-Lifetime http-equiv headers.
-
-// Fetching that webpage should cause the user-agent to persist origin
-// preferences for the client hints specified in Accept-CH header for a
-// duration specified in the Accept-CH-Lifetime header.
-
-// Next, to verify if the origin preferences were persisted by the user
-// agent, this test fetches resources/expect_client_hints_headers.html
-// in a new window. Fetching of resources/expect_client_hints_headers.html
-// verifies that the user agent actually sends the client hints in the request
-// headers.
-
-// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
-// is resolved.
-
-// First, verify the initial state to make sure that the browser does not have
-// client hints preferences cached from a previous run of the test.
-promise_test(t => {
-  return fetch("echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers when fetching echo_client_hints_received.py.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-  });
-}, "Precondition: Test that the browser does not have client hints preferences cached");
-
-var acceptChLifetimeLoaded;
-
-async_test(t => {
-  acceptChLifetimeLoaded = t.step_func(() => {
-    // Open a new window. Verify that the user agent attaches the client hints.
-    var verify_win = window.open("resources/expect_client_hints_headers.html");
-    assert_not_equals(verify_win, null, "Popup windows not allowed?");
-  });
-
-  window.addEventListener('message', t.step_func((e) => {
-    if(!e.source.location.pathname.includes("expect_client_hints_headers.html")) {
-      return;
-    }
-    if(typeof e.data != "string")
-      return;
-    assert_equals(e.data, "PASS");
-    t.done();
-  }));
-}, "Loading of resources/expect_client_hints_headers.html did not finish.");
-
-</script>
-
-<!-- Fetching this webpage should cause user-agent to persist client hint
- preferences for the origin.-->
-<iframe onload="acceptChLifetimeLoaded()" src="resources/http_equiv_accept_ch_lifetime.html"></iframe>
-
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime_subresource.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime_subresource.tentative.https.html
deleted file mode 100644
index 3be83cd..0000000
--- a/third_party/blink/web_tests/external/wpt/client-hints/http_equiv_accept_ch_lifetime_subresource.tentative.https.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<html>
-<title>Accept-CH-Lifetime test with subresource</title>
-<meta name="timeout" content="long">
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<!--
-Apart from this webpage, the test opens another html web page. One test is run
-in this web page, and another in the second web page.
--->
-
-<script>
-
-// This test fetches resources/http_equiv_accept_ch_lifetime.html as a
-// subresource. The response to that webpage contains Accept-CH and
-// Accept-CH-Lifetime http-equiv headers.
-
-// Fetching that webpage as a subresource should NOT cause the user-agent to
-// persist origin preferences for the client hints specified in Accept-CH
-// header.
-
-// Next, to verify if the origin preferences were not persisted by the user
-// agent, this test fetches resources/do_not_expect_client_hints_headers.html
-// in a new window. Fetching of
-// resources/do_not_expect_client_hints_headers.html verifies that the user
-// agent does not send the client hints in the request headers.
-
-// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
-// is resolved.
-
-// First, verify the initial state to make sure that the browser does not have
-// client hints preferences cached from a previous run of the test.
-promise_test(t => {
-  return fetch("echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers when fetching echo_client_hints_received.py.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-  });
-}, "Precondition: Test that the browser does not have client hints preferences cached");
-
-promise_test(t => {
-  // Fetching this web page as a subresource should NOT cause user-agent to
-  // persist client hint preferences for the origin.
-  return fetch("resources/http_equiv_accept_ch_lifetime.html").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
-
-    // Open a new window. Verify that the user agent does not attach the client
-    // hints.
-    var win = window.open("resources/do_not_expect_client_hints_headers.html");
-    assert_not_equals(win, null, "Popup windows not allowed?");
-
-  });
-}, "Test receiving Accept-CH-Lifetime header");
-
-async_test(t => {
-  window.addEventListener('message', t.step_func(function(e) {
-    if(!e.source.location.pathname.includes("do_not_expect_client_hints_headers.html")) {
-      return;
-    }
-    if(typeof e.data != "string")
-      return;
-    assert_equals(e.data, "PASS");
-    t.done();
-  }));
-}, "Loading of resources/do_not_expect_client_hints_headers.html did not finish.");
-
-
-</script>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-iframe-other-origin.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-iframe-other-origin.tentative.https.html
new file mode 100644
index 0000000..059c621
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-iframe-other-origin.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "cross origin iframe not setting other origins",
+    initial_url: echo,
+    accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
+    expect_url: do_not_expect,
+    type: "iframe" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-iframe.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-iframe.tentative.https.html
new file mode 100644
index 0000000..90147d6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-iframe.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "cross origin iframe not setting own origin",
+    initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
+    accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
+    expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
+    type: "iframe" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-navigation.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-navigation.tentative.https.html
new file mode 100644
index 0000000..b4a2d0f3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-navigation.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "cross origin navigation",
+    initial_url: echo,
+    accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
+    expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect,
+    type: "navigation" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-subresource.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-subresource.tentative.https.html
new file mode 100644
index 0000000..6917c898c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-cross-origin-subresource.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "cross origin subresource",
+    initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo,
+    accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept,
+    expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect,
+    type: "subresource" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-same-origin-iframe.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-same-origin-iframe.tentative.https.html
new file mode 100644
index 0000000..676b9a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-same-origin-iframe.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "same origin iframe",
+    initial_url: echo,
+    accept_url: httpequiv_accept,
+    expect_url: expect,
+    type: "iframe" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-same-origin-navigation.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-same-origin-navigation.tentative.https.html
new file mode 100644
index 0000000..6a0196a4f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-same-origin-navigation.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "same origin navigation",
+    initial_url: echo,
+    accept_url: httpequiv_accept,
+    expect_url: expect,
+    type: "navigation" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-same-origin-subresource.tentative.https.html b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-same-origin-subresource.tentative.https.html
new file mode 100644
index 0000000..b0f7c7b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/httpequiv-accept-ch-lifetime-same-origin-subresource.tentative.https.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<title>Accept-CH-Lifetime test</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/accept-ch-lifetime-test.js"></script>
+
+<script>
+setup({ explicit_done: true });
+
+run_test({ name: "same origin subresource",
+    initial_url: echo,
+    accept_url: httpequiv_accept,
+    expect_url: do_not_expect,
+    type: "subresource" });
+done();
+
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/resources/accept-ch-lifetime-test.js b/third_party/blink/web_tests/external/wpt/client-hints/resources/accept-ch-lifetime-test.js
new file mode 100644
index 0000000..7906315
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/resources/accept-ch-lifetime-test.js
@@ -0,0 +1,73 @@
+const echo = "/client-hints/echo_client_hints_received.py";
+const accept = "/client-hints/resources/accept_ch_lifetime.html";
+const httpequiv_accept = "/client-hints/resources/http_equiv_accept_ch_lifetime.html";
+const expect = "/client-hints/resources/expect_client_hints_headers.html"
+const do_not_expect = "/client-hints/resources/do_not_expect_client_hints_headers.html"
+
+const host_info = get_host_info();
+const run_test = test => {
+  // Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
+  // is resolved.
+
+  // First, verify the initial state to make sure that the browser does not have
+  // client hints preferences cached from a previous run of the test.
+  promise_test(t => {
+    return fetch(test.initial_url).then(r => {
+      assert_equals(r.status, 200)
+      // Verify that the browser did not include client hints in the request
+      // headers when fetching echo_client_hints_received.py.
+      assert_false(r.headers.has("device-memory-received"),
+        "device-memory-received");
+    });
+  }, test.name + " precondition: Test that the browser does not have client " +
+    "hints preferences cached");
+
+  // Then, attempt to set Accept-CH-Lifetime for 1 second
+  promise_test(t => {
+    return new Promise(resolve => {
+      if (test.type == "navigation") {
+        const win = window.open(test.accept_url);
+        assert_not_equals(win, null, "Popup windows not allowed?");
+        addEventListener('message', t.step_func(() => {
+          win.close();
+          resolve();
+        }), false);
+      } else if (test.type == "iframe") {
+        const iframe = document.createElement("iframe");
+        iframe.addEventListener('load', t.step_func(() => {
+          resolve();
+        }), false);
+        iframe.src = test.accept_url;
+        document.body.appendChild(iframe);
+      } else if (test.type == "subresource") {
+        fetch(test.accept_url).then(r => {
+          assert_equals(r.status, 200, "subresource response status")
+          // Verify that the browser did not include client hints in the request
+          // headers, just because we can..
+          assert_false(r.headers.has("device-memory-received"),
+            "device-memory-received",
+            "subresource request had no client hints");
+          resolve();
+        });
+      } else {
+        assert_unreached("unknown test type");
+      }
+    });
+  }, test.name + " set Accept-CH-Lifetime");
+
+  // Finally, verify that CH are actually sent (or not) on requests
+  promise_test(t => {
+    return new Promise(resolve => {
+      let win;
+      window.addEventListener('message', t.step_func(function(e) {
+        win.close();
+        assert_equals(e.data, "PASS", "message from opened page");
+        t.step_timeout(resolve, 1500);
+      }));
+      // Open a new window. Verify that the user agent attaches client hints.
+      win = window.open(test.expect_url);
+      assert_not_equals(win, null, "Popup windows not allowed?");
+    });
+  }, test.name + " got client hints according to expectations.");
+};
+
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/resources/accept_ch_lifetime.html b/third_party/blink/web_tests/external/wpt/client-hints/resources/accept_ch_lifetime.html
index 2927d7c..a77eaab 100644
--- a/third_party/blink/web_tests/external/wpt/client-hints/resources/accept_ch_lifetime.html
+++ b/third_party/blink/web_tests/external/wpt/client-hints/resources/accept_ch_lifetime.html
@@ -6,6 +6,10 @@
 user-agent to persist origin preferences for the client hints
 specified in the Accept-CH header for a duration specified in
 the Accept-CH-Lifetime header.-->
+<script>
+  window.top.opener.postMessage('Loaded', '*');
+</script>
+
 
 </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/resources/accept_ch_lifetime.html.headers b/third_party/blink/web_tests/external/wpt/client-hints/resources/accept_ch_lifetime.html.headers
index ec146df..bd90f6e 100644
--- a/third_party/blink/web_tests/external/wpt/client-hints/resources/accept_ch_lifetime.html.headers
+++ b/third_party/blink/web_tests/external/wpt/client-hints/resources/accept_ch_lifetime.html.headers
@@ -1,2 +1,3 @@
 Accept-CH: device-memory
-Accept-CH-Lifetime: 5
+Accept-CH-Lifetime: 1
+Access-Control-Allow-Origin: *
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/resources/http_equiv_accept_ch_lifetime.html b/third_party/blink/web_tests/external/wpt/client-hints/resources/http_equiv_accept_ch_lifetime.html
index 2dd1806..ab2ab9e 100644
--- a/third_party/blink/web_tests/external/wpt/client-hints/resources/http_equiv_accept_ch_lifetime.html
+++ b/third_party/blink/web_tests/external/wpt/client-hints/resources/http_equiv_accept_ch_lifetime.html
@@ -2,5 +2,8 @@
 <meta http-equiv="Accept-CH" content="device-memory">
 <meta http-equiv="Accept-CH-Lifetime" content="5">
 <body>
+<script>
+  window.top.opener.postMessage('Loaded', '*');
+</script>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/client-hints/resources/http_equiv_accept_ch_lifetime.html.headers b/third_party/blink/web_tests/external/wpt/client-hints/resources/http_equiv_accept_ch_lifetime.html.headers
new file mode 100644
index 0000000..27140bf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/client-hints/resources/http_equiv_accept_ch_lifetime.html.headers
@@ -0,0 +1,2 @@
+Access-Control-Allow-Origin: *
+
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/inline-children-root-linebox-crash-001.html b/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/inline-children-root-linebox-crash-001.html
new file mode 100644
index 0000000..7fe6b3ea
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/inline-children-root-linebox-crash-001.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://crbug.com/981602">
+<link rel="author" href="mailto:kojii@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+.class6 { writing-mode: vertical-rl; }
+</style>
+<svg>
+<radialGradient id="svgvar00004">
+<pattern>
+<foreignObject>
+<pre class="class6">
+<svg>
+<polyline fill="url(#svgvar00004) red">
+</svg>
+<script>test(() => {});</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/abspos-width-change-inline-container-001-ref.html b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/abspos-width-change-inline-container-001-ref.html
new file mode 100644
index 0000000..3426056
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/abspos-width-change-inline-container-001-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<style>
+#container {
+  text-align: center;
+  width: 100px;
+}
+#relpos {
+  position: relative;
+  background: red;
+}
+#abspos {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 50px;
+  height: 50px;
+  background: green;
+}
+</style>
+<body>
+  <div id="container">
+    <span id="relpos">x
+      <span id="abspos"></span>
+    </span>
+  </div>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/abspos-width-change-inline-container-001.html b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/abspos-width-change-inline-container-001.html
new file mode 100644
index 0000000..27b5aed
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/abspos-width-change-inline-container-001.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<title>CSS Test: Absolutely positioned object in an inline container repsonding to the block width change</title>
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#comp-abspos">
+<link rel="match" href="abspos-width-change-inline-container-001-ref.html">
+<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
+<style>
+#container {
+  text-align: center;
+  width: 200px;
+}
+#relpos {
+  position: relative;
+  background: red;
+}
+#abspos {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 50px;
+  height: 50px;
+  background: green;
+}
+</style>
+<body>
+  <div id="container">
+    <span id="relpos">x
+      <span id="abspos"></span>
+    </span>
+  </div>
+<script>
+run();
+function run() {
+  document.body.offsetTop;
+  container.style.width = '100px';
+}
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-valid-expected.txt
deleted file mode 100644
index 00a0386..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-valid-expected.txt
+++ /dev/null
@@ -1,319 +0,0 @@
-This is a testharness.js-based test.
-Found 315 tests; 212 PASS, 103 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS caption should be a supported system font.
-PASS icon should be a supported system font.
-PASS menu should be a supported system font.
-PASS message-box should be a supported system font.
-PASS small-caption should be a supported system font.
-PASS status-bar should be a supported system font.
-PASS e.style['font'] = "xx-small serif" should set the property value
-PASS e.style['font'] = "normal medium/normal sans-serif" should set the property value
-PASS e.style['font'] = "normal normal xx-large/1.2 cursive" should set the property value
-PASS e.style['font'] = "normal normal normal larger/calc(120% + 1.2em) fantasy" should set the property value
-PASS e.style['font'] = "normal normal normal normal smaller monospace" should set the property value
-FAIL e.style['font'] = "normal normal normal italic 10px/normal Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal normal small-caps 20%/1.2 \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal normal normal ultra-condensed xx-small sans-serif" should set the property value
-FAIL e.style['font'] = "normal normal oblique medium/normal cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal italic normal xx-large/1.2 fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal oblique small-caps larger/calc(120% + 1.2em) monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal italic bolder smaller Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal oblique extra-condensed 10px/normal \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal small-caps 20%/1.2 serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal small-caps normal calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal small-caps italic xx-small cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal small-caps lighter medium/normal fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal small-caps condensed xx-large/1.2 monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal normal 100 larger/calc(120% + 1.2em) Menu" should set the property value
-PASS e.style['font'] = "normal normal 900 normal smaller \"FB Armada\"" should set the property value
-FAIL e.style['font'] = "normal normal bold oblique 10px/normal serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal bolder small-caps 20%/1.2 sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal normal lighter semi-condensed calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value
-PASS e.style['font'] = "normal normal semi-expanded xx-small fantasy" should set the property value
-PASS e.style['font'] = "normal normal expanded normal medium/normal monospace" should set the property value
-FAIL e.style['font'] = "normal normal extra-expanded italic xx-large/1.2 Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal normal ultra-condensed 100 smaller serif" should set the property value
-FAIL e.style['font'] = "normal oblique 10px/normal sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal italic normal 20%/1.2 cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal oblique normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal italic normal small-caps xx-small monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal oblique normal 900 medium/normal Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal italic normal extra-condensed xx-large/1.2 \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal oblique small-caps larger/calc(120% + 1.2em) serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal italic small-caps normal smaller sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal oblique small-caps bold 10px/normal cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal italic small-caps condensed 20%/1.2 fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal oblique bolder calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal italic lighter normal xx-small Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal oblique 100 small-caps medium/normal \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal italic 900 semi-condensed xx-large/1.2 serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal oblique semi-expanded larger/calc(120% + 1.2em) sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal italic expanded normal smaller cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal oblique extra-expanded small-caps 10px/normal fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal italic ultra-expanded bold 20%/1.2 monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal small-caps calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value
-PASS e.style['font'] = "normal small-caps normal xx-small \"FB Armada\"" should set the property value
-PASS e.style['font'] = "normal small-caps normal normal medium/normal serif" should set the property value
-FAIL e.style['font'] = "normal small-caps normal oblique xx-large/1.2 sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal small-caps normal bolder larger/calc(120% + 1.2em) cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal small-caps normal ultra-condensed smaller fantasy" should set the property value
-FAIL e.style['font'] = "normal small-caps italic 10px/normal monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal small-caps oblique normal 20%/1.2 Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal small-caps italic lighter calc(30% - 40px)/calc(120% + 1.2em) \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal small-caps oblique extra-condensed xx-small serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal small-caps 100 medium/normal sans-serif" should set the property value
-PASS e.style['font'] = "normal small-caps 900 normal xx-large/1.2 cursive" should set the property value
-FAIL e.style['font'] = "normal small-caps bold italic larger/calc(120% + 1.2em) fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal small-caps bolder condensed smaller monospace" should set the property value
-PASS e.style['font'] = "normal small-caps semi-condensed 10px/normal Menu" should set the property value
-PASS e.style['font'] = "normal small-caps semi-expanded normal 20%/1.2 \"FB Armada\"" should set the property value
-FAIL e.style['font'] = "normal small-caps expanded oblique calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal small-caps extra-expanded lighter xx-small sans-serif" should set the property value
-PASS e.style['font'] = "normal 100 medium/normal cursive" should set the property value
-PASS e.style['font'] = "normal 900 normal xx-large/1.2 fantasy" should set the property value
-PASS e.style['font'] = "normal bold normal normal larger/calc(120% + 1.2em) monospace" should set the property value
-FAIL e.style['font'] = "normal bolder normal italic smaller Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal lighter normal small-caps 10px/normal \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal 100 normal ultra-expanded 20%/1.2 serif" should set the property value
-FAIL e.style['font'] = "normal 900 oblique calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal bold italic normal xx-small cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal bolder oblique small-caps medium/normal fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal lighter italic ultra-condensed xx-large/1.2 monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal 100 small-caps larger/calc(120% + 1.2em) Menu" should set the property value
-PASS e.style['font'] = "normal 900 small-caps normal smaller \"FB Armada\"" should set the property value
-FAIL e.style['font'] = "normal bold small-caps oblique 10px/normal serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal bolder small-caps extra-condensed 20%/1.2 sans-serif" should set the property value
-PASS e.style['font'] = "normal lighter condensed calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value
-PASS e.style['font'] = "normal 100 semi-condensed normal xx-small fantasy" should set the property value
-FAIL e.style['font'] = "normal 900 semi-expanded italic medium/normal monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal bold expanded small-caps xx-large/1.2 Menu" should set the property value
-PASS e.style['font'] = "normal extra-expanded larger/calc(120% + 1.2em) \"FB Armada\"" should set the property value
-PASS e.style['font'] = "normal ultra-expanded normal smaller serif" should set the property value
-PASS e.style['font'] = "normal ultra-condensed normal normal 10px/normal sans-serif" should set the property value
-FAIL e.style['font'] = "normal extra-condensed normal oblique 20%/1.2 cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal semi-condensed normal bolder xx-small monospace" should set the property value
-FAIL e.style['font'] = "normal semi-expanded italic medium/normal Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal expanded oblique normal xx-large/1.2 \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "normal ultra-expanded oblique lighter smaller sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal ultra-condensed small-caps 10px/normal cursive" should set the property value
-PASS e.style['font'] = "normal extra-condensed small-caps normal 20%/1.2 fantasy" should set the property value
-FAIL e.style['font'] = "normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal semi-condensed small-caps 100 xx-small Menu" should set the property value
-PASS e.style['font'] = "normal semi-expanded 900 medium/normal \"FB Armada\"" should set the property value
-PASS e.style['font'] = "normal expanded bold normal xx-large/1.2 serif" should set the property value
-FAIL e.style['font'] = "normal extra-expanded bolder oblique larger/calc(120% + 1.2em) sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "normal ultra-expanded lighter small-caps smaller cursive" should set the property value
-PASS e.style['font'] = "italic 10px/normal fantasy" should set the property value
-PASS e.style['font'] = "oblique normal 20%/1.2 monospace" should set the property value
-PASS e.style['font'] = "italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value
-PASS e.style['font'] = "oblique normal normal normal xx-small \"FB Armada\"" should set the property value
-FAIL e.style['font'] = "italic normal normal small-caps medium/normal serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "oblique normal normal 100 xx-large/1.2 sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "italic normal normal ultra-condensed larger/calc(120% + 1.2em) cursive" should set the property value
-FAIL e.style['font'] = "oblique normal small-caps smaller fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "italic normal small-caps normal 10px/normal monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "oblique normal small-caps 900 20%/1.2 Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "italic normal small-caps extra-condensed calc(30% - 40px)/calc(120% + 1.2em) \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "oblique normal bold xx-small serif" should set the property value
-PASS e.style['font'] = "italic normal bolder normal medium/normal sans-serif" should set the property value
-FAIL e.style['font'] = "oblique normal lighter small-caps xx-large/1.2 cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "italic normal 100 condensed larger/calc(120% + 1.2em) fantasy" should set the property value
-PASS e.style['font'] = "oblique normal semi-condensed smaller monospace" should set the property value
-PASS e.style['font'] = "italic normal semi-expanded normal 10px/normal Menu" should set the property value
-FAIL e.style['font'] = "oblique normal expanded small-caps 20%/1.2 \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "italic normal extra-expanded 900 calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value
-PASS e.style['font'] = "oblique small-caps xx-small sans-serif" should set the property value
-PASS e.style['font'] = "italic small-caps normal medium/normal cursive" should set the property value
-PASS e.style['font'] = "oblique small-caps normal normal xx-large/1.2 fantasy" should set the property value
-FAIL e.style['font'] = "italic small-caps normal bold larger/calc(120% + 1.2em) monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "oblique small-caps normal ultra-expanded smaller Menu" should set the property value
-PASS e.style['font'] = "italic small-caps bolder 10px/normal \"FB Armada\"" should set the property value
-PASS e.style['font'] = "oblique small-caps lighter normal 20%/1.2 serif" should set the property value
-PASS e.style['font'] = "italic small-caps 100 ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value
-PASS e.style['font'] = "oblique small-caps extra-condensed xx-small cursive" should set the property value
-PASS e.style['font'] = "italic small-caps condensed normal medium/normal fantasy" should set the property value
-PASS e.style['font'] = "oblique small-caps semi-condensed 900 xx-large/1.2 monospace" should set the property value
-PASS e.style['font'] = "italic bold larger/calc(120% + 1.2em) Menu" should set the property value
-PASS e.style['font'] = "oblique bolder normal smaller \"FB Armada\"" should set the property value
-PASS e.style['font'] = "italic lighter normal normal 10px/normal serif" should set the property value
-FAIL e.style['font'] = "oblique 100 normal small-caps 20%/1.2 sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "italic 900 normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value
-PASS e.style['font'] = "oblique bold small-caps xx-small fantasy" should set the property value
-PASS e.style['font'] = "italic bolder small-caps normal medium/normal monospace" should set the property value
-PASS e.style['font'] = "oblique lighter small-caps expanded xx-large/1.2 Menu" should set the property value
-PASS e.style['font'] = "italic 100 extra-expanded larger/calc(120% + 1.2em) \"FB Armada\"" should set the property value
-PASS e.style['font'] = "oblique 900 ultra-expanded normal smaller serif" should set the property value
-PASS e.style['font'] = "italic bold ultra-condensed small-caps 10px/normal sans-serif" should set the property value
-PASS e.style['font'] = "oblique extra-condensed 20%/1.2 cursive" should set the property value
-PASS e.style['font'] = "italic condensed normal calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value
-PASS e.style['font'] = "oblique semi-condensed normal normal xx-small monospace" should set the property value
-FAIL e.style['font'] = "italic semi-expanded normal small-caps medium/normal Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "oblique expanded normal bolder xx-large/1.2 \"FB Armada\"" should set the property value
-PASS e.style['font'] = "italic extra-expanded small-caps larger/calc(120% + 1.2em) serif" should set the property value
-PASS e.style['font'] = "oblique ultra-expanded small-caps normal smaller sans-serif" should set the property value
-PASS e.style['font'] = "italic ultra-condensed small-caps lighter 10px/normal cursive" should set the property value
-PASS e.style['font'] = "oblique extra-condensed 100 20%/1.2 fantasy" should set the property value
-PASS e.style['font'] = "italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value
-PASS e.style['font'] = "oblique semi-condensed bold small-caps xx-small Menu" should set the property value
-PASS e.style['font'] = "small-caps medium/normal \"FB Armada\"" should set the property value
-PASS e.style['font'] = "small-caps normal xx-large/1.2 serif" should set the property value
-PASS e.style['font'] = "small-caps normal normal larger/calc(120% + 1.2em) sans-serif" should set the property value
-PASS e.style['font'] = "small-caps normal normal normal smaller cursive" should set the property value
-FAIL e.style['font'] = "small-caps normal normal italic 10px/normal fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "small-caps normal normal bolder 20%/1.2 monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "small-caps normal normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value
-FAIL e.style['font'] = "small-caps normal oblique xx-small \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "small-caps normal italic normal medium/normal serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "small-caps normal oblique lighter xx-large/1.2 sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "small-caps normal italic expanded larger/calc(120% + 1.2em) cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "small-caps normal 100 smaller fantasy" should set the property value
-PASS e.style['font'] = "small-caps normal 900 normal 10px/normal monospace" should set the property value
-FAIL e.style['font'] = "small-caps normal bold oblique 20%/1.2 Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "small-caps normal bolder extra-expanded calc(30% - 40px)/calc(120% + 1.2em) \"FB Armada\"" should set the property value
-PASS e.style['font'] = "small-caps normal ultra-expanded xx-small serif" should set the property value
-PASS e.style['font'] = "small-caps normal ultra-condensed normal medium/normal sans-serif" should set the property value
-FAIL e.style['font'] = "small-caps normal extra-condensed italic xx-large/1.2 cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "small-caps normal condensed lighter larger/calc(120% + 1.2em) fantasy" should set the property value
-PASS e.style['font'] = "small-caps oblique smaller monospace" should set the property value
-PASS e.style['font'] = "small-caps italic normal 10px/normal Menu" should set the property value
-PASS e.style['font'] = "small-caps oblique normal normal 20%/1.2 \"FB Armada\"" should set the property value
-FAIL e.style['font'] = "small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "small-caps oblique normal semi-condensed xx-small sans-serif" should set the property value
-PASS e.style['font'] = "small-caps italic 900 medium/normal cursive" should set the property value
-PASS e.style['font'] = "small-caps oblique bold normal xx-large/1.2 fantasy" should set the property value
-PASS e.style['font'] = "small-caps italic bolder semi-expanded larger/calc(120% + 1.2em) monospace" should set the property value
-PASS e.style['font'] = "small-caps oblique expanded smaller Menu" should set the property value
-PASS e.style['font'] = "small-caps italic extra-expanded normal 10px/normal \"FB Armada\"" should set the property value
-PASS e.style['font'] = "small-caps oblique ultra-expanded lighter 20%/1.2 serif" should set the property value
-PASS e.style['font'] = "small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value
-PASS e.style['font'] = "small-caps 900 normal xx-small cursive" should set the property value
-PASS e.style['font'] = "small-caps bold normal normal medium/normal fantasy" should set the property value
-FAIL e.style['font'] = "small-caps bolder normal italic xx-large/1.2 monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "small-caps lighter normal ultra-condensed larger/calc(120% + 1.2em) Menu" should set the property value
-PASS e.style['font'] = "small-caps 100 oblique smaller \"FB Armada\"" should set the property value
-PASS e.style['font'] = "small-caps 900 italic normal 10px/normal serif" should set the property value
-PASS e.style['font'] = "small-caps bold oblique extra-condensed 20%/1.2 sans-serif" should set the property value
-PASS e.style['font'] = "small-caps bolder condensed calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value
-PASS e.style['font'] = "small-caps lighter semi-condensed normal xx-small fantasy" should set the property value
-PASS e.style['font'] = "small-caps 100 semi-expanded italic medium/normal monospace" should set the property value
-PASS e.style['font'] = "small-caps expanded xx-large/1.2 Menu" should set the property value
-PASS e.style['font'] = "small-caps extra-expanded normal larger/calc(120% + 1.2em) \"FB Armada\"" should set the property value
-PASS e.style['font'] = "small-caps ultra-expanded normal normal smaller serif" should set the property value
-FAIL e.style['font'] = "small-caps ultra-condensed normal oblique 10px/normal sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "small-caps extra-condensed normal 900 20%/1.2 cursive" should set the property value
-PASS e.style['font'] = "small-caps condensed italic calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value
-PASS e.style['font'] = "small-caps semi-condensed oblique normal xx-small monospace" should set the property value
-PASS e.style['font'] = "small-caps semi-expanded italic bold medium/normal Menu" should set the property value
-PASS e.style['font'] = "small-caps expanded bolder xx-large/1.2 \"FB Armada\"" should set the property value
-PASS e.style['font'] = "small-caps extra-expanded lighter normal larger/calc(120% + 1.2em) serif" should set the property value
-PASS e.style['font'] = "small-caps ultra-expanded 100 oblique smaller sans-serif" should set the property value
-PASS e.style['font'] = "900 10px/normal cursive" should set the property value
-PASS e.style['font'] = "bold normal 20%/1.2 fantasy" should set the property value
-PASS e.style['font'] = "bolder normal normal calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value
-PASS e.style['font'] = "lighter normal normal normal xx-small Menu" should set the property value
-FAIL e.style['font'] = "100 normal normal italic medium/normal \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "900 normal normal small-caps xx-large/1.2 serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "bold normal normal ultra-condensed larger/calc(120% + 1.2em) sans-serif" should set the property value
-FAIL e.style['font'] = "bolder normal oblique smaller cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "lighter normal italic normal 10px/normal fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "100 normal oblique small-caps 20%/1.2 monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "900 normal italic extra-condensed calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "bold normal small-caps xx-small \"FB Armada\"" should set the property value
-PASS e.style['font'] = "bolder normal small-caps normal medium/normal serif" should set the property value
-FAIL e.style['font'] = "lighter normal small-caps oblique xx-large/1.2 sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "100 normal small-caps condensed larger/calc(120% + 1.2em) cursive" should set the property value
-PASS e.style['font'] = "900 normal semi-condensed smaller fantasy" should set the property value
-PASS e.style['font'] = "bold normal semi-expanded normal 10px/normal monospace" should set the property value
-FAIL e.style['font'] = "bolder normal expanded italic 20%/1.2 Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "lighter normal extra-expanded small-caps calc(30% - 40px)/calc(120% + 1.2em) \"FB Armada\"" should set the property value
-PASS e.style['font'] = "100 oblique xx-small serif" should set the property value
-PASS e.style['font'] = "900 italic normal medium/normal sans-serif" should set the property value
-PASS e.style['font'] = "bold oblique normal normal xx-large/1.2 cursive" should set the property value
-FAIL e.style['font'] = "bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "lighter oblique normal ultra-expanded smaller monospace" should set the property value
-PASS e.style['font'] = "100 italic small-caps 10px/normal Menu" should set the property value
-PASS e.style['font'] = "900 oblique small-caps normal 20%/1.2 \"FB Armada\"" should set the property value
-PASS e.style['font'] = "bold italic small-caps ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value
-PASS e.style['font'] = "bolder oblique extra-condensed xx-small sans-serif" should set the property value
-PASS e.style['font'] = "lighter italic condensed normal medium/normal cursive" should set the property value
-PASS e.style['font'] = "100 oblique semi-condensed small-caps xx-large/1.2 fantasy" should set the property value
-PASS e.style['font'] = "900 small-caps larger/calc(120% + 1.2em) monospace" should set the property value
-PASS e.style['font'] = "bold small-caps normal smaller Menu" should set the property value
-PASS e.style['font'] = "bolder small-caps normal normal 10px/normal \"FB Armada\"" should set the property value
-FAIL e.style['font'] = "lighter small-caps normal italic 20%/1.2 serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "100 small-caps normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value
-PASS e.style['font'] = "900 small-caps oblique xx-small cursive" should set the property value
-PASS e.style['font'] = "bold small-caps italic normal medium/normal fantasy" should set the property value
-PASS e.style['font'] = "bolder small-caps oblique expanded xx-large/1.2 monospace" should set the property value
-PASS e.style['font'] = "lighter small-caps extra-expanded larger/calc(120% + 1.2em) Menu" should set the property value
-PASS e.style['font'] = "100 small-caps ultra-expanded normal smaller \"FB Armada\"" should set the property value
-PASS e.style['font'] = "900 small-caps ultra-condensed italic 10px/normal serif" should set the property value
-PASS e.style['font'] = "bold extra-condensed 20%/1.2 sans-serif" should set the property value
-PASS e.style['font'] = "bolder condensed normal calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value
-PASS e.style['font'] = "lighter semi-condensed normal normal xx-small fantasy" should set the property value
-FAIL e.style['font'] = "100 semi-expanded normal oblique medium/normal monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "900 expanded normal small-caps xx-large/1.2 Menu" should set the property value
-PASS e.style['font'] = "bold extra-expanded italic larger/calc(120% + 1.2em) \"FB Armada\"" should set the property value
-PASS e.style['font'] = "bolder ultra-expanded oblique normal smaller serif" should set the property value
-PASS e.style['font'] = "lighter ultra-condensed italic small-caps 10px/normal sans-serif" should set the property value
-PASS e.style['font'] = "100 extra-condensed small-caps 20%/1.2 cursive" should set the property value
-PASS e.style['font'] = "900 condensed small-caps normal calc(30% - 40px)/calc(120% + 1.2em) fantasy" should set the property value
-PASS e.style['font'] = "bold semi-condensed small-caps oblique xx-small monospace" should set the property value
-PASS e.style['font'] = "semi-expanded medium/normal Menu" should set the property value
-PASS e.style['font'] = "expanded normal xx-large/1.2 \"FB Armada\"" should set the property value
-PASS e.style['font'] = "extra-expanded normal normal larger/calc(120% + 1.2em) serif" should set the property value
-PASS e.style['font'] = "ultra-expanded normal normal normal smaller sans-serif" should set the property value
-FAIL e.style['font'] = "ultra-condensed normal normal italic 10px/normal cursive" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "extra-condensed normal normal small-caps 20%/1.2 fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "condensed normal normal bolder calc(30% - 40px)/calc(120% + 1.2em) monospace" should set the property value
-FAIL e.style['font'] = "semi-condensed normal oblique xx-small Menu" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "semi-expanded normal italic normal medium/normal \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "expanded normal oblique small-caps xx-large/1.2 serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-FAIL e.style['font'] = "extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "ultra-expanded normal small-caps smaller cursive" should set the property value
-PASS e.style['font'] = "ultra-condensed normal small-caps normal 10px/normal fantasy" should set the property value
-FAIL e.style['font'] = "extra-condensed normal small-caps oblique 20%/1.2 monospace" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "condensed normal small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) Menu" should set the property value
-PASS e.style['font'] = "semi-condensed normal 900 xx-small \"FB Armada\"" should set the property value
-PASS e.style['font'] = "semi-expanded normal bold normal medium/normal serif" should set the property value
-FAIL e.style['font'] = "expanded normal bolder italic xx-large/1.2 sans-serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "extra-expanded normal lighter small-caps larger/calc(120% + 1.2em) cursive" should set the property value
-PASS e.style['font'] = "ultra-expanded oblique smaller fantasy" should set the property value
-PASS e.style['font'] = "ultra-condensed italic normal 10px/normal monospace" should set the property value
-PASS e.style['font'] = "extra-condensed oblique normal normal 20%/1.2 Menu" should set the property value
-FAIL e.style['font'] = "condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) \"FB Armada\"" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "semi-condensed oblique normal 100 xx-small serif" should set the property value
-PASS e.style['font'] = "semi-expanded italic small-caps medium/normal sans-serif" should set the property value
-PASS e.style['font'] = "expanded oblique small-caps normal xx-large/1.2 cursive" should set the property value
-PASS e.style['font'] = "extra-expanded italic small-caps 900 larger/calc(120% + 1.2em) fantasy" should set the property value
-PASS e.style['font'] = "ultra-expanded oblique bold smaller monospace" should set the property value
-PASS e.style['font'] = "ultra-condensed italic bolder normal 10px/normal Menu" should set the property value
-PASS e.style['font'] = "extra-condensed oblique lighter small-caps 20%/1.2 \"FB Armada\"" should set the property value
-PASS e.style['font'] = "condensed small-caps calc(30% - 40px)/calc(120% + 1.2em) serif" should set the property value
-PASS e.style['font'] = "semi-condensed small-caps normal xx-small sans-serif" should set the property value
-PASS e.style['font'] = "semi-expanded small-caps normal normal medium/normal cursive" should set the property value
-FAIL e.style['font'] = "expanded small-caps normal italic xx-large/1.2 fantasy" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "extra-expanded small-caps normal 100 larger/calc(120% + 1.2em) monospace" should set the property value
-PASS e.style['font'] = "ultra-expanded small-caps oblique smaller Menu" should set the property value
-PASS e.style['font'] = "ultra-condensed small-caps italic normal 10px/normal \"FB Armada\"" should set the property value
-PASS e.style['font'] = "extra-condensed small-caps oblique 900 20%/1.2 serif" should set the property value
-PASS e.style['font'] = "condensed small-caps bold calc(30% - 40px)/calc(120% + 1.2em) sans-serif" should set the property value
-PASS e.style['font'] = "semi-condensed small-caps bolder normal xx-small cursive" should set the property value
-PASS e.style['font'] = "semi-expanded small-caps lighter italic medium/normal fantasy" should set the property value
-PASS e.style['font'] = "expanded 100 xx-large/1.2 monospace" should set the property value
-PASS e.style['font'] = "extra-expanded 900 normal larger/calc(120% + 1.2em) Menu" should set the property value
-PASS e.style['font'] = "ultra-expanded bold normal normal smaller \"FB Armada\"" should set the property value
-FAIL e.style['font'] = "ultra-condensed bolder normal oblique 10px/normal serif" should set the property value assert_not_equals: property should be set got disallowed value ""
-PASS e.style['font'] = "extra-condensed lighter normal small-caps 20%/1.2 sans-serif" should set the property value
-PASS e.style['font'] = "condensed 100 italic calc(30% - 40px)/calc(120% + 1.2em) cursive" should set the property value
-PASS e.style['font'] = "semi-condensed 900 oblique normal xx-small fantasy" should set the property value
-PASS e.style['font'] = "semi-expanded bold italic small-caps medium/normal monospace" should set the property value
-PASS e.style['font'] = "expanded bolder small-caps xx-large/1.2 Menu" should set the property value
-PASS e.style['font'] = "extra-expanded lighter small-caps normal larger/calc(120% + 1.2em) \"FB Armada\"" should set the property value
-PASS e.style['font'] = "ultra-expanded 100 small-caps oblique smaller serif" should set the property value
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-variant-numeric-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-variant-numeric-valid-expected.txt
deleted file mode 100644
index 28466d3..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-fonts/parsing/font-variant-numeric-valid-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-This is a testharness.js-based test.
-PASS e.style['font-variant-numeric'] = "normal" should set the property value
-PASS e.style['font-variant-numeric'] = "lining-nums" should set the property value
-PASS e.style['font-variant-numeric'] = "oldstyle-nums" should set the property value
-PASS e.style['font-variant-numeric'] = "proportional-nums" should set the property value
-PASS e.style['font-variant-numeric'] = "tabular-nums" should set the property value
-PASS e.style['font-variant-numeric'] = "diagonal-fractions" should set the property value
-PASS e.style['font-variant-numeric'] = "stacked-fractions" should set the property value
-PASS e.style['font-variant-numeric'] = "ordinal" should set the property value
-PASS e.style['font-variant-numeric'] = "slashed-zero" should set the property value
-PASS e.style['font-variant-numeric'] = "oldstyle-nums tabular-nums diagonal-fractions" should set the property value
-FAIL e.style['font-variant-numeric'] = "slashed-zero ordinal stacked-fractions proportional-nums lining-nums" should set the property value assert_equals: serialization should be canonical expected "lining-nums proportional-nums stacked-fractions ordinal slashed-zero" but got "slashed-zero ordinal stacked-fractions proportional-nums lining-nums"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/text-transform/math/text-transform-math-auto-002.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-text/text-transform/math/text-transform-math-auto-002.tentative.html
index 86c1ea1..32bad74 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-text/text-transform/math/text-transform-math-auto-002.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-text/text-transform/math/text-transform-math-auto-002.tentative.html
@@ -4,6 +4,7 @@
 <meta charset="utf-8"/>
 <title>text-transform math-auto</title>
 <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3745"/>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#new-text-transform-values">
 <link rel="match" href="text-transform-math-auto-002.tentative-ref.html"/>
 <meta name="assert" content="Test 'text-transform: math-auto' for text nodes of different lengths">
 <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/parsing/translate-parsing-valid.html b/third_party/blink/web_tests/external/wpt/css/css-transforms/parsing/translate-parsing-valid.html
index e000f6a..c59ac9f 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-transforms/parsing/translate-parsing-valid.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-transforms/parsing/translate-parsing-valid.html
@@ -18,7 +18,9 @@
 test_valid_value("translate", "100%");
 
 test_valid_value("translate", "100px 0px", "100px");
+test_valid_value("translate", "100px 0.1px", "100px 0.1px");
 test_valid_value("translate", "100px 0%", "100px");
+test_valid_value("translate", "100px calc(10px - 10%)", "100px calc(10px - 10%)");
 test_valid_value("translate", "100px 200%");
 test_valid_value("translate", "100% 200px");
 
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
new file mode 100644
index 0000000..c83e8ff
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/metadata/infrastructure/testdriver/actions/actionsWithKeyPressed.html.ini
@@ -0,0 +1,8 @@
+[actionsWithKeyPressed.html]
+  expected:
+    if product == "safari": ERROR
+
+  [TestDriver actions: actions with key pressed]
+    expected:
+      if product == "firefox": FAIL
+      if os == "mac" and product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/testdriver/actions/actionsWithKeyPressed.html b/third_party/blink/web_tests/external/wpt/infrastructure/testdriver/actions/actionsWithKeyPressed.html
new file mode 100644
index 0000000..74e939f5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/infrastructure/testdriver/actions/actionsWithKeyPressed.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>TestDriver actions: actions with key pressed</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<style>
+div#test1, div#test2 {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100px;
+  height: 100px;
+  background-color: blue;
+}
+
+div#test2 {
+  position: fixed;
+  top: 100px;
+  left: 0;
+  width: 100px;
+  height: 100px;
+  background-color: green;
+}
+</style>
+
+<div id="test1">
+</div>
+
+<div id="test2">
+</div>
+
+<script>
+let keys = [];
+
+async_test(t => {
+  let test1 = document.getElementById("test1");
+  let test2 = document.getElementById("test2");
+  document.getElementById("test1").addEventListener("click",
+    e => {keys.push(e.getModifierState("Control"))});
+  document.getElementById("test2").addEventListener("click",
+    e => {keys.push(e.getModifierState("Control"))});
+
+  let actions = new test_driver.Actions()
+    .keyDown("\uE009")
+    .addTick()
+    .pointerMove(0, 0, {origin: test1})
+    .pointerDown()
+    .pointerUp()
+    .pointerMove(0, 0, {origin: test2})
+    .pointerDown()
+    .pointerUp()
+    .addTick()
+    .keyUp("\uE009")
+    .addTick()
+    .pointerMove(0, 0, {origin: test1})
+    .pointerDown()
+    .pointerUp();
+
+  actions.send()
+    .then(t.step_func_done(() => assert_array_equals(keys, [true, true, false])))
+    .catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
+});
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/portals/portals-navigate-after-adoption.html b/third_party/blink/web_tests/external/wpt/portals/portals-navigate-after-adoption.html
new file mode 100644
index 0000000..083eeaa1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/portals-navigate-after-adoption.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+function nextMessage(target) {
+  return new Promise((resolve, reject) => {
+    target.addEventListener('message', e => resolve(e), {once: true});
+  });
+}
+
+async function openPortalAndActivate(logic) {
+  let {port1, port2} = new MessageChannel();
+  const w = window.open();
+  try {
+    const portal = w.document.createElement('portal');
+    portal.src = new URL('resources/eval-portal.html?logic=' + encodeURIComponent(logic), location.href);
+    w.document.body.appendChild(portal);
+    assert_equals((await nextMessage(portal)).data, 'ready');
+    const replyPromise = nextMessage(port2);
+    await portal.activate({data: {replyPort: port1}, transfer: [port1]});
+    port2.start();
+    return (await nextMessage(port2)).data;
+  } finally {
+    w.close();
+  }
+}
+
+promise_test(async () => {
+  let messageFromNewSrc = await openPortalAndActivate(
+      'let predecessor = event.adoptPredecessor();' +
+      'let readyPromise = new Promise((resolve, reject) => {' +
+      '  predecessor.onmessage = e => resolve(e.data + " via new src");' +
+      '});' +
+      'predecessor.src = "/portals/resources/eval-portal.html";' +
+      'document.body.appendChild(predecessor);' +
+      'return readyPromise;');
+  assert_equals(messageFromNewSrc, 'ready via new src');
+}, "can set portal src during portalactivate");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/portals/resources/eval-portal.html b/third_party/blink/web_tests/external/wpt/portals/resources/eval-portal.html
new file mode 100644
index 0000000..98c2013
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/resources/eval-portal.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<script>
+let logic = new Function('event', (new URL(location)).searchParams.get('logic'));
+onload = () => window.portalHost.postMessage('ready', '*');
+onportalactivate = event => {
+  Promise.resolve(event)
+      .then(logic)
+      .then(reply => event.data.replyPort.postMessage(reply));
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/tools/wpt/browser.py b/third_party/blink/web_tests/external/wpt/tools/wpt/browser.py
index b093600..23e91a7 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wpt/browser.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wpt/browser.py
@@ -3,6 +3,7 @@
 import re
 import shutil
 import stat
+import errno
 import subprocess
 import tempfile
 import urlparse
@@ -27,6 +28,14 @@
         return None
 
 
+def handle_remove_readonly(func, path, exc):
+    excvalue = exc[1]
+    if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
+        os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)  # 0777
+        func(path)
+    else:
+        raise
+
 class Browser(object):
     __metaclass__ = ABCMeta
 
@@ -663,6 +672,7 @@
         "Darwin": "macos"
     }.get(uname[0])
     product = "edgechromium"
+    edgedriver_name = "msedgedriver"
     requirements = "requirements_edge_chromium.txt"
 
     def install(self, dest=None, channel=None):
@@ -697,22 +707,40 @@
         return find_executable("msedgedriver")
 
     def install_webdriver(self, dest=None, channel=None, browser_binary=None):
-        if self.platform != "win":
-            raise ValueError("Only Windows platform is currently supported")
+        if self.platform != "win" and self.platform != "macos":
+            raise ValueError("Only Windows and Mac platforms are currently supported")
 
         if dest is None:
             dest = os.pwd
 
-        platform = "x64" if uname[4] == "x86_64" else "x86"
-        url = "https://az813057.vo.msecnd.net/webdriver/msedgedriver_%s/msedgedriver.exe" % platform
+        if channel is None:
+            version_url = "https://msedgedriver.azureedge.net/LATEST_DEV"
+        else:
+            version_url = "https://msedgedriver.azureedge.net/LATEST_%s" % channel.upper()
+        version = get(version_url).text.strip()
+
+        if self.platform == "macos":
+            bits = "mac64"
+            edgedriver_path = os.path.join(dest, self.edgedriver_name)
+        else:
+            bits = "win64" if uname[4] == "x86_64" else "win32"
+            edgedriver_path = os.path.join(dest, "%s.exe" % self.edgedriver_name)
+        url = "https://msedgedriver.azureedge.net/%s/edgedriver_%s.zip" % (version, bits)
+
+        # cleanup existing Edge driver files to avoid access_denied errors when unzipping
+        if os.path.isfile(edgedriver_path):
+            # remove read-only attribute
+            os.chmod(edgedriver_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)  # 0777
+            os.remove(edgedriver_path)
+            driver_notes_path = os.path.join(dest, "Driver_notes")
+            if os.path.isdir(driver_notes_path):
+                shutil.rmtree(driver_notes_path, ignore_errors=False, onerror=handle_remove_readonly)
 
         self.logger.info("Downloading MSEdgeDriver from %s" % url)
-        resp = get(url)
-        installer_path = os.path.join(dest, "msedgedriver.exe")
-        with open(installer_path, "wb") as f:
-            f.write(resp.content)
-
-        return find_executable("msedgedriver", dest)
+        unzip(get(url).raw, dest)
+        if os.path.isfile(edgedriver_path):
+            self.logger.info("Successfully downloaded MSEdgeDriver to %s" % edgedriver_path)
+        return find_executable(self.edgedriver_name, dest)
 
     def version(self, binary=None, webdriver_binary=None):
         if binary is None:
diff --git a/third_party/blink/web_tests/external/wpt/tools/wpt/run.py b/third_party/blink/web_tests/external/wpt/tools/wpt/run.py
index fec2afc..282dd29 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wpt/run.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wpt/run.py
@@ -338,15 +338,23 @@
     browser_cls = browser.EdgeChromium
 
     def setup_kwargs(self, kwargs):
+        browser_channel = kwargs["browser_channel"]
+        if kwargs["binary"] is None:
+            binary = self.browser.find_binary(channel=browser_channel)
+            if binary:
+                kwargs["binary"] = self.browser.find_binary()
+            else:
+                raise WptrunError("Unable to locate Edge binary")
         if kwargs["webdriver_binary"] is None:
             webdriver_binary = self.browser.find_webdriver()
 
-            if webdriver_binary is None:
+            # Install browser if none are found or if it's found in venv path
+            if webdriver_binary is None or webdriver_binary in self.venv.bin_path:
                 install = self.prompt_install("msedgedriver")
 
                 if install:
                     logger.info("Downloading msedgedriver")
-                    webdriver_binary = self.browser.install_webdriver(dest=self.venv.bin_path)
+                    webdriver_binary = self.browser.install_webdriver(dest=self.venv.bin_path, channel=browser_channel)
             else:
                 logger.info("Using webdriver binary %s" % webdriver_binary)
 
@@ -354,11 +362,9 @@
                 kwargs["webdriver_binary"] = webdriver_binary
             else:
                 raise WptrunError("Unable to locate or install msedgedriver binary")
-        if kwargs["browser_channel"] == "dev":
+        if browser_channel == "dev":
             logger.info("Automatically turning on experimental features for Edge Dev")
             kwargs["binary_args"].append("--enable-experimental-web-platform-features")
-        # HACK(Hexcles): work around https://github.com/web-platform-tests/wpt/issues/17403
-        kwargs["webdriver_args"].append("--disable-build-check")
 
 
 class Edge(BrowserSetup):
diff --git a/third_party/blink/web_tests/external/wpt/tools/wpt/virtualenv.py b/third_party/blink/web_tests/external/wpt/tools/wpt/virtualenv.py
index e0f51d5..a894c9c 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wpt/virtualenv.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wpt/virtualenv.py
@@ -34,6 +34,11 @@
     def exists(self):
         return os.path.isdir(self.path)
 
+    @property
+    def broken_link(self):
+        python_link = os.path.join(self.path, ".Python")
+        return os.path.lexists(python_link) and not os.path.exists(python_link)
+
     def create(self):
         if os.path.exists(self.path):
             shutil.rmtree(self.path)
@@ -88,7 +93,7 @@
         execfile(path, {"__file__": path})  # noqa: F821
 
     def start(self):
-        if not self.exists:
+        if not self.exists or self.broken_link:
             self.create()
         self.activate()
 
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/testrunner.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/testrunner.py
index 44b5401..d7b51c5 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/testrunner.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/testrunner.py
@@ -13,6 +13,17 @@
 Stop = object()
 
 
+def release_mozlog_lock():
+    try:
+        from mozlog.structuredlog import StructuredLogger
+        try:
+            StructuredLogger._lock.release()
+        except threading.ThreadError:
+            pass
+    except ImportError:
+        pass
+
+
 class MessageLogger(object):
     def __init__(self, message_func):
         self.send_message = message_func
@@ -138,6 +149,10 @@
         logger.critical(traceback.format_exc())
         stop_flag.set()
 
+    # Ensure that when we start this in a new process we have the global lock
+    # in the logging module unlocked
+    release_mozlog_lock()
+
     logger = MessageLogger(send_message)
 
     with capture.CaptureIO(logger, capture_stdio):
diff --git a/third_party/blink/web_tests/external/wpt/user-timing/structured-serialize-detail.html b/third_party/blink/web_tests/external/wpt/user-timing/structured-serialize-detail.html
new file mode 100644
index 0000000..c9689fe3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/user-timing/structured-serialize-detail.html
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>UserTiming L3: the detail property should be serialized-cloned.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+  test(function() {
+    performance.clearMarks();
+    const detail = { randomInfo: 123 }
+    const markEntry = new PerformanceMark("A", { detail });
+    assert_equals(markEntry.detail.randomInfo, detail.randomInfo);
+    assert_not_equals(markEntry.detail, detail);
+  }, "The detail property in the mark constructor should be structured-clone.");
+
+  test(function() {
+    performance.clearMarks();
+    const detail = { randomInfo: 123 }
+    const markEntry = performance.mark("A", { detail });
+    assert_not_equals(markEntry.detail, detail);
+  }, "The detail property in the mark method should be structured-clone.");
+
+  test(function() {
+    performance.clearMarks();
+    const markEntry = performance.mark("A");
+    assert_equals(markEntry.detail, null);
+  }, "When accessing detail from a mark entry and the detail is not provided, just return a null value.");
+
+  test(function() {
+    performance.clearMarks();
+    const detail = { unserializable: Symbol() };
+    assert_throws("DataCloneError", ()=>{
+      new PerformanceMark("A", { detail });
+    }, "Trying to structured-serialize a Symbol.");
+  }, "Mark: Throw an exception when the detail property cannot be structured-serialized.");
+
+  test(function() {
+    performance.clearMeasures();
+    const detail = { randomInfo: 123 }
+    const measureEntry = performance.measure("A", { detail });
+    assert_not_equals(measureEntry.detail, detail);
+  }, "The detail property in the measure method should be structured-clone.");
+
+  test(function() {
+    performance.clearMeasures();
+    const detail = { randomInfo: 123 }
+    const measureEntry = performance.measure("A", { detail });
+    assert_equals(measureEntry.detail, measureEntry.detail);
+  }, "The detail property in the measure method should be the same reference.");
+
+  test(function() {
+    performance.clearMeasures();
+    const measureEntry = performance.measure("A");
+    assert_equals(measureEntry.detail, null);
+  }, "When accessing detail from a measure entry and the detail is not provided, just return a null value.");
+
+  test(function() {
+    performance.clearMeasures();
+    const detail = { unserializable: Symbol() };
+    assert_throws("DataCloneError", ()=>{
+      performance.measure("A", { detail });
+    }, "Trying to structured-serialize a Symbol.");
+  }, "Measure: Throw an exception when the detail property cannot be structured-serialized.");
+
+  test(function() {
+    const bar = { 1: 2 };
+    const detail = { foo: 1, bar };
+    const mark = performance.mark("m", { detail });
+    detail.foo = 2;
+    assert_equals(mark.detail.foo, 1);
+  }, "The detail object is cloned when passed to mark API.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animatable/animate-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animatable/animate-expected.txt
index 76cd54c..c277654 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animatable/animate-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animatable/animate-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 135 tests; 126 PASS, 9 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 137 tests; 134 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Element.animate() creates an Animation object
 PASS Element.animate() creates an Animation object in the relevant realm of the target element
 PASS Element.animate() creates an Animation object with a KeyframeEffect
@@ -8,18 +8,19 @@
 PASS Element.animate() accepts empty keyframe lists (input: null)
 PASS Element.animate() accepts empty keyframe lists (input: undefined)
 PASS Element.animate() accepts a one property two value property-indexed keyframes specification
-FAIL Element.animate() accepts a one shorthand property two value property-indexed keyframes specification assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL Element.animate() accepts a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,marginTop,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS Element.animate() accepts a one shorthand property two value property-indexed keyframes specification
+PASS Element.animate() accepts a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification
 PASS Element.animate() accepts a two property two value property-indexed keyframes specification
 PASS Element.animate() accepts a two property property-indexed keyframes specification with different numbers of values
 PASS Element.animate() accepts a property-indexed keyframes specification with an invalid value
 PASS Element.animate() accepts a one property two value property-indexed keyframes specification that needs to stringify its values
 PASS Element.animate() accepts a property-indexed keyframes specification with a CSS variable reference
-FAIL Element.animate() accepts a property-indexed keyframes specification with a CSS variable reference in a shorthand property assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS Element.animate() accepts a property-indexed keyframes specification with a CSS variable reference in a shorthand property
 PASS Element.animate() accepts a one property one value property-indexed keyframes specification
 PASS Element.animate() accepts a one property one non-array value property-indexed keyframes specification
 PASS Element.animate() accepts a one property two value property-indexed keyframes specification where the first value is invalid
 PASS Element.animate() accepts a one property two value property-indexed keyframes specification where the second value is invalid
+PASS Element.animate() accepts a property-indexed keyframes specification with a CSS variable as the property
 PASS Element.animate() accepts a property-indexed keyframe with a single offset
 PASS Element.animate() accepts a property-indexed keyframe with an array of offsets
 PASS Element.animate() accepts a property-indexed keyframe with an array of offsets that is too short
@@ -47,13 +48,14 @@
 PASS Element.animate() accepts a one property one keyframe sequence
 PASS Element.animate() accepts a one property two keyframe sequence
 PASS Element.animate() accepts a two property two keyframe sequence
-FAIL Element.animate() accepts a one shorthand property two keyframe sequence assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL Element.animate() accepts a two property (a shorthand and one of its component longhands) two keyframe sequence assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,marginTop,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS Element.animate() accepts a one shorthand property two keyframe sequence
+PASS Element.animate() accepts a two property (a shorthand and one of its component longhands) two keyframe sequence
 PASS Element.animate() accepts a two property keyframe sequence where one property is missing from the first keyframe
 PASS Element.animate() accepts a two property keyframe sequence where one property is missing from the last keyframe
 PASS Element.animate() accepts a one property two keyframe sequence that needs to stringify its values
 PASS Element.animate() accepts a keyframe sequence with a CSS variable reference
-FAIL Element.animate() accepts a keyframe sequence with a CSS variable reference in a shorthand property assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS Element.animate() accepts a keyframe sequence with a CSS variable reference in a shorthand property
+PASS Element.animate() accepts a keyframe sequence with a CSS variable as its property
 PASS Element.animate() accepts a keyframe sequence with duplicate values for a given interior offset
 PASS Element.animate() accepts a keyframe sequence with duplicate values for offsets 0 and 1
 PASS Element.animate() accepts a two property four keyframe sequence
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/constructor-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/constructor-expected.txt
index ce4a921..1ccc49f 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/constructor-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/constructor-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 167 tests; 155 PASS, 12 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 171 tests; 167 PASS, 4 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS A KeyframeEffect can be constructed with no frames
 PASS easing values are parsed correctly when passed to the KeyframeEffect constructor in KeyframeEffectOptions
 PASS Invalid easing values are correctly rejected when passed to the KeyframeEffect constructor in KeyframeEffectOptions
@@ -8,9 +8,9 @@
 PASS composite value is auto if the composite operation specified on the keyframe effect is being used
 PASS A KeyframeEffect can be constructed with a one property two value property-indexed keyframes specification
 PASS A KeyframeEffect constructed with a one property two value property-indexed keyframes specification roundtrips
-FAIL A KeyframeEffect can be constructed with a one shorthand property two value property-indexed keyframes specification assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS A KeyframeEffect can be constructed with a one shorthand property two value property-indexed keyframes specification
 PASS A KeyframeEffect constructed with a one shorthand property two value property-indexed keyframes specification roundtrips
-FAIL A KeyframeEffect can be constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,marginTop,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS A KeyframeEffect can be constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification
 PASS A KeyframeEffect constructed with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification roundtrips
 PASS A KeyframeEffect can be constructed with a two property two value property-indexed keyframes specification
 PASS A KeyframeEffect constructed with a two property two value property-indexed keyframes specification roundtrips
@@ -22,8 +22,8 @@
 PASS A KeyframeEffect constructed with a one property two value property-indexed keyframes specification that needs to stringify its values roundtrips
 PASS A KeyframeEffect can be constructed with a property-indexed keyframes specification with a CSS variable reference
 PASS A KeyframeEffect constructed with a property-indexed keyframes specification with a CSS variable reference roundtrips
-FAIL A KeyframeEffect can be constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL A KeyframeEffect constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property roundtrips assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset" but got "composite,computedOffset,easing,offset"
+PASS A KeyframeEffect can be constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property
+PASS A KeyframeEffect constructed with a property-indexed keyframes specification with a CSS variable reference in a shorthand property roundtrips
 PASS A KeyframeEffect can be constructed with a one property one value property-indexed keyframes specification
 PASS A KeyframeEffect constructed with a one property one value property-indexed keyframes specification roundtrips
 PASS A KeyframeEffect can be constructed with a one property one non-array value property-indexed keyframes specification
@@ -32,6 +32,8 @@
 PASS A KeyframeEffect constructed with a one property two value property-indexed keyframes specification where the first value is invalid roundtrips
 PASS A KeyframeEffect can be constructed with a one property two value property-indexed keyframes specification where the second value is invalid
 PASS A KeyframeEffect constructed with a one property two value property-indexed keyframes specification where the second value is invalid roundtrips
+PASS A KeyframeEffect can be constructed with a property-indexed keyframes specification with a CSS variable as the property
+PASS A KeyframeEffect constructed with a property-indexed keyframes specification with a CSS variable as the property roundtrips
 PASS A KeyframeEffect can be constructed with a property-indexed keyframe with a single offset
 PASS A KeyframeEffect constructed with a property-indexed keyframe with a single offset roundtrips
 PASS A KeyframeEffect can be constructed with a property-indexed keyframe with an array of offsets
@@ -86,9 +88,9 @@
 PASS A KeyframeEffect constructed with a one property two keyframe sequence roundtrips
 PASS A KeyframeEffect can be constructed with a two property two keyframe sequence
 PASS A KeyframeEffect constructed with a two property two keyframe sequence roundtrips
-FAIL A KeyframeEffect can be constructed with a one shorthand property two keyframe sequence assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS A KeyframeEffect can be constructed with a one shorthand property two keyframe sequence
 PASS A KeyframeEffect constructed with a one shorthand property two keyframe sequence roundtrips
-FAIL A KeyframeEffect can be constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,marginTop,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS A KeyframeEffect can be constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence
 PASS A KeyframeEffect constructed with a two property (a shorthand and one of its component longhands) two keyframe sequence roundtrips
 PASS A KeyframeEffect can be constructed with a two property keyframe sequence where one property is missing from the first keyframe
 PASS A KeyframeEffect constructed with a two property keyframe sequence where one property is missing from the first keyframe roundtrips
@@ -98,8 +100,10 @@
 PASS A KeyframeEffect constructed with a one property two keyframe sequence that needs to stringify its values roundtrips
 PASS A KeyframeEffect can be constructed with a keyframe sequence with a CSS variable reference
 PASS A KeyframeEffect constructed with a keyframe sequence with a CSS variable reference roundtrips
-FAIL A KeyframeEffect can be constructed with a keyframe sequence with a CSS variable reference in a shorthand property assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL A KeyframeEffect constructed with a keyframe sequence with a CSS variable reference in a shorthand property roundtrips assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset" but got "composite,computedOffset,easing,offset"
+PASS A KeyframeEffect can be constructed with a keyframe sequence with a CSS variable reference in a shorthand property
+PASS A KeyframeEffect constructed with a keyframe sequence with a CSS variable reference in a shorthand property roundtrips
+PASS A KeyframeEffect can be constructed with a keyframe sequence with a CSS variable as its property
+PASS A KeyframeEffect constructed with a keyframe sequence with a CSS variable as its property roundtrips
 PASS A KeyframeEffect can be constructed with a keyframe sequence with duplicate values for a given interior offset
 PASS A KeyframeEffect constructed with a keyframe sequence with duplicate values for a given interior offset roundtrips
 PASS A KeyframeEffect can be constructed with a keyframe sequence with duplicate values for offsets 0 and 1
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/getKeyframes.html b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/getKeyframes.html
new file mode 100644
index 0000000..1f8d267e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/getKeyframes.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>KeyframeEffect getKeyframes()</title>
+<link rel="help"
+      href="https://drafts.csswg.org/web-animations/#dom-keyframeeffect-getkeyframes">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/keyframe-utils.js"></script>
+<script src="../../resources/keyframe-tests.js"></script>
+<body>
+<div id="log"></div>
+<div id="target"></div>
+<script>
+'use strict';
+
+const target = document.getElementById('target');
+
+
+for (const subtest of gKeyframeSerializationTests) {
+  test(t => {
+    const effect = new KeyframeEffect(target, subtest.input);
+    assert_frame_lists_equal(effect.getKeyframes(), subtest.output);
+  }, `getKeyframes() should serialize its css values with ${subtest.desc}`);
+}
+</script>
\ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/setKeyframes-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/setKeyframes-expected.txt
index 719cf0eb..6d66e81 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/setKeyframes-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/setKeyframes-expected.txt
@@ -1,19 +1,20 @@
 This is a testharness.js-based test.
-Found 76 tests; 69 PASS, 7 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 78 tests; 77 PASS, 1 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Keyframes can be replaced with an empty keyframe
 PASS Keyframes can be replaced with a one property two value property-indexed keyframes specification
-FAIL Keyframes can be replaced with a one shorthand property two value property-indexed keyframes specification assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL Keyframes can be replaced with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,marginTop,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS Keyframes can be replaced with a one shorthand property two value property-indexed keyframes specification
+PASS Keyframes can be replaced with a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specification
 PASS Keyframes can be replaced with a two property two value property-indexed keyframes specification
 PASS Keyframes can be replaced with a two property property-indexed keyframes specification with different numbers of values
 PASS Keyframes can be replaced with a property-indexed keyframes specification with an invalid value
 PASS Keyframes can be replaced with a one property two value property-indexed keyframes specification that needs to stringify its values
 PASS Keyframes can be replaced with a property-indexed keyframes specification with a CSS variable reference
-FAIL Keyframes can be replaced with a property-indexed keyframes specification with a CSS variable reference in a shorthand property assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS Keyframes can be replaced with a property-indexed keyframes specification with a CSS variable reference in a shorthand property
 PASS Keyframes can be replaced with a one property one value property-indexed keyframes specification
 PASS Keyframes can be replaced with a one property one non-array value property-indexed keyframes specification
 PASS Keyframes can be replaced with a one property two value property-indexed keyframes specification where the first value is invalid
 PASS Keyframes can be replaced with a one property two value property-indexed keyframes specification where the second value is invalid
+PASS Keyframes can be replaced with a property-indexed keyframes specification with a CSS variable as the property
 PASS Keyframes can be replaced with a property-indexed keyframe with a single offset
 PASS Keyframes can be replaced with a property-indexed keyframe with an array of offsets
 PASS Keyframes can be replaced with a property-indexed keyframe with an array of offsets that is too short
@@ -41,13 +42,14 @@
 PASS Keyframes can be replaced with a one property one keyframe sequence
 PASS Keyframes can be replaced with a one property two keyframe sequence
 PASS Keyframes can be replaced with a two property two keyframe sequence
-FAIL Keyframes can be replaced with a one shorthand property two keyframe sequence assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
-FAIL Keyframes can be replaced with a two property (a shorthand and one of its component longhands) two keyframe sequence assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,marginTop,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS Keyframes can be replaced with a one shorthand property two keyframe sequence
+PASS Keyframes can be replaced with a two property (a shorthand and one of its component longhands) two keyframe sequence
 PASS Keyframes can be replaced with a two property keyframe sequence where one property is missing from the first keyframe
 PASS Keyframes can be replaced with a two property keyframe sequence where one property is missing from the last keyframe
 PASS Keyframes can be replaced with a one property two keyframe sequence that needs to stringify its values
 PASS Keyframes can be replaced with a keyframe sequence with a CSS variable reference
-FAIL Keyframes can be replaced with a keyframe sequence with a CSS variable reference in a shorthand property assert_equals: properties on ComputedKeyframe #0 should match expected "composite,computedOffset,easing,margin,offset" but got "composite,computedOffset,easing,marginBottom,marginLeft,marginRight,marginTop,offset"
+PASS Keyframes can be replaced with a keyframe sequence with a CSS variable reference in a shorthand property
+PASS Keyframes can be replaced with a keyframe sequence with a CSS variable as its property
 PASS Keyframes can be replaced with a keyframe sequence with duplicate values for a given interior offset
 PASS Keyframes can be replaced with a keyframe sequence with duplicate values for offsets 0 and 1
 PASS Keyframes can be replaced with a two property four keyframe sequence
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/resources/keyframe-tests.js b/third_party/blink/web_tests/external/wpt/web-animations/resources/keyframe-tests.js
index 76a0481..43716801 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/resources/keyframe-tests.js
+++ b/third_party/blink/web_tests/external/wpt/web-animations/resources/keyframe-tests.js
@@ -159,6 +159,13 @@
     output: [keyframe(computedOffset(0), { left: '10px' }),
              keyframe(computedOffset(1), {})]
   },
+  {
+    desc:   'a property-indexed keyframes specification with a CSS variable as'
+            + ' the property',
+    input:  { '--custom': ['1', '2'] },
+    output: [keyframe(computedOffset(0), { '--custom': '1' }),
+             keyframe(computedOffset(1), { '--custom': '2' })]
+  },
 
   // ----------- Property-indexed keyframes: offset handling -----------
 
@@ -453,6 +460,13 @@
              keyframe(computedOffset(1),
                       { margin: 'calc(var(--dist) + 100px)' })],
   },
+  {
+    desc:   'a keyframe sequence with a CSS variable as its property',
+    input:  [{ '--custom': 'a' },
+             { '--custom': 'b' }],
+    output: [keyframe(computedOffset(0), { '--custom': 'a' }),
+             keyframe(computedOffset(1), { '--custom': 'b' })]
+  },
 
   // ----------- Keyframe sequence: offset handling -----------
 
@@ -682,6 +696,18 @@
   },
 ];
 
+
+const gKeyframeSerializationTests = [
+  {
+    desc:   'a on keyframe sequence which requires value serilaization of its'
+            + ' values',
+    input:  [{offset: 0, backgroundColor: 'rgb(1,2,3)' }],
+    output: [keyframe(offset(0), { backgroundColor: 'rgb(1, 2, 3)' })],
+  },
+];
+
+
+
 // ------------------------------
 //  KeyframeEffectOptions
 // ------------------------------
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/scrollbars/nested-overlay-scrollbars-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
new file mode 100644
index 0000000..abd8db5
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
@@ -0,0 +1,129 @@
+{
+  "layers": [
+    {
+      "name": "LayoutView #document",
+      "bounds": [800, 600],
+      "drawsContent": false,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "Scrolling Layer",
+      "bounds": [800, 600],
+      "drawsContent": false
+    },
+    {
+      "name": "Scrolling Contents Layer",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='outer'",
+      "position": [8, 8],
+      "bounds": [404, 404]
+    },
+    {
+      "name": "Scrolling Layer",
+      "position": [10, 10],
+      "bounds": [400, 400],
+      "drawsContent": false
+    },
+    {
+      "name": "Scrolling Contents Layer",
+      "position": [10, 10],
+      "bounds": [400, 704],
+      "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='inner'",
+      "position": [10, 510],
+      "bounds": [204, 204],
+      "transform": 1
+    },
+    {
+      "name": "Scrolling Layer",
+      "position": [12, 512],
+      "bounds": [200, 200],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "Scrolling Contents Layer",
+      "position": [12, 512],
+      "bounds": [5000, 9000],
+      "transform": 1
+    },
+    {
+      "name": "Squashing Containment Layer",
+      "position": [10, 10],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='grey'",
+      "position": [12, 512],
+      "bounds": [100, 800],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080",
+      "transform": 1
+    },
+    {
+      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='spacer')",
+      "position": [12, 2512],
+      "bounds": [5000, 1000],
+      "transform": 1
+    },
+    {
+      "name": "Overflow Controls Host Layer",
+      "position": [12, 512],
+      "bounds": [204, 204],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "Horizontal Scrollbar Layer",
+      "position": [14, 707],
+      "bounds": [193, 7],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "Vertical Scrollbar Layer",
+      "position": [207, 514],
+      "bounds": [7, 193],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "Scroll Corner Layer",
+      "position": [207, 707],
+      "bounds": [7, 7],
+      "transform": 1
+    },
+    {
+      "name": "Overflow Controls Host Layer",
+      "position": [8, 8],
+      "bounds": [404, 404],
+      "drawsContent": false
+    },
+    {
+      "name": "Vertical Scrollbar Layer",
+      "position": [403, 10],
+      "bounds": [7, 400],
+      "drawsContent": false
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -304, 0, 1]
+      ],
+      "flattenInheritedTransform": false
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt
new file mode 100644
index 0000000..7e910706
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt
@@ -0,0 +1,67 @@
+{
+  "layers": [
+    {
+      "name": "LayoutView #document",
+      "bounds": [800, 600],
+      "drawsContent": false,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "Scrolling Layer",
+      "bounds": [800, 600],
+      "drawsContent": false
+    },
+    {
+      "name": "Scrolling Contents Layer",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV class='outer'",
+      "bounds": [352, 294]
+    },
+    {
+      "name": "LayoutBlockFlow (relative positioned) DIV class='content'",
+      "position": [79, 79],
+      "bounds": [196, 212],
+      "contentsOpaque": true,
+      "backgroundColor": "#DDDDDD"
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV class='outer' (foreground) Layer",
+      "bounds": [352, 294]
+    },
+    {
+      "name": "LayoutBlockFlow DIV class='scroller'",
+      "position": [32, 32],
+      "bounds": [290, 230],
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "Scrolling Layer",
+      "position": [67, 67],
+      "bounds": [220, 160],
+      "drawsContent": false
+    },
+    {
+      "name": "Scrolling Contents Layer",
+      "position": [67, 67],
+      "bounds": [220, 236],
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "Overflow Controls Host Layer",
+      "position": [62, 62],
+      "bounds": [230, 170],
+      "drawsContent": false
+    },
+    {
+      "name": "Vertical Scrollbar Layer",
+      "position": [280, 67],
+      "bounds": [7, 160],
+      "drawsContent": false
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/disable-blink-gen-property-trees/compositing/scrollbars/nested-overlay-scrollbars-expected.txt b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/disable-blink-gen-property-trees/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
new file mode 100644
index 0000000..abd8db5
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-blink-features=LayoutNG/virtual/disable-blink-gen-property-trees/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
@@ -0,0 +1,129 @@
+{
+  "layers": [
+    {
+      "name": "LayoutView #document",
+      "bounds": [800, 600],
+      "drawsContent": false,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "Scrolling Layer",
+      "bounds": [800, 600],
+      "drawsContent": false
+    },
+    {
+      "name": "Scrolling Contents Layer",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='outer'",
+      "position": [8, 8],
+      "bounds": [404, 404]
+    },
+    {
+      "name": "Scrolling Layer",
+      "position": [10, 10],
+      "bounds": [400, 400],
+      "drawsContent": false
+    },
+    {
+      "name": "Scrolling Contents Layer",
+      "position": [10, 10],
+      "bounds": [400, 704],
+      "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='inner'",
+      "position": [10, 510],
+      "bounds": [204, 204],
+      "transform": 1
+    },
+    {
+      "name": "Scrolling Layer",
+      "position": [12, 512],
+      "bounds": [200, 200],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "Scrolling Contents Layer",
+      "position": [12, 512],
+      "bounds": [5000, 9000],
+      "transform": 1
+    },
+    {
+      "name": "Squashing Containment Layer",
+      "position": [10, 10],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "LayoutBlockFlow (positioned) DIV id='grey'",
+      "position": [12, 512],
+      "bounds": [100, 800],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080",
+      "transform": 1
+    },
+    {
+      "name": "Squashing Layer (first squashed layer: LayoutBlockFlow (positioned) DIV id='spacer')",
+      "position": [12, 2512],
+      "bounds": [5000, 1000],
+      "transform": 1
+    },
+    {
+      "name": "Overflow Controls Host Layer",
+      "position": [12, 512],
+      "bounds": [204, 204],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "Horizontal Scrollbar Layer",
+      "position": [14, 707],
+      "bounds": [193, 7],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "Vertical Scrollbar Layer",
+      "position": [207, 514],
+      "bounds": [7, 193],
+      "drawsContent": false,
+      "transform": 1
+    },
+    {
+      "name": "Scroll Corner Layer",
+      "position": [207, 707],
+      "bounds": [7, 7],
+      "transform": 1
+    },
+    {
+      "name": "Overflow Controls Host Layer",
+      "position": [8, 8],
+      "bounds": [404, 404],
+      "drawsContent": false
+    },
+    {
+      "name": "Vertical Scrollbar Layer",
+      "position": [403, 10],
+      "bounds": [7, 400],
+      "drawsContent": false
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -304, 0, 1]
+      ],
+      "flattenInheritedTransform": false
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/scrollbars/nested-overlay-scrollbars-expected.txt b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
new file mode 100644
index 0000000..1fa1391d
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=CompositeAfterPaint/compositing/scrollbars/nested-overlay-scrollbars-expected.txt
@@ -0,0 +1,56 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='grey'",
+      "position": [2, 2],
+      "bounds": [100, 800],
+      "contentsOpaque": true,
+      "backgroundColor": "#808080",
+      "transform": 3
+    },
+    {
+      "name": "LayoutNGBlockFlow (positioned) DIV id='inner'",
+      "position": [2, 2],
+      "bounds": [200, 200],
+      "transform": 3
+    }
+  ],
+  "transforms": [
+    {
+      "id": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [8, 8, 0, 1]
+      ]
+    },
+    {
+      "id": 2,
+      "parent": 1,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [0, -304, 0, 1]
+      ]
+    },
+    {
+      "id": 3,
+      "parent": 2,
+      "transform": [
+        [1, 0, 0, 0],
+        [0, 1, 0, 0],
+        [0, 0, 1, 0],
+        [2, 502, 0, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/http/tests/activedomobject/media-expected.txt b/third_party/blink/web_tests/http/tests/activedomobject/media-expected.txt
index c82e4388..f74cbf3 100644
--- a/third_party/blink/web_tests/http/tests/activedomobject/media-expected.txt
+++ b/third_party/blink/web_tests/http/tests/activedomobject/media-expected.txt
@@ -2,7 +2,7 @@
 
 Before Reparenting
 PASS: internals.contextLifecycleStateObserverObjectCount(document) should be '0' and is.
-PASS: internals.contextLifecycleStateObserverObjectCount(iframe) should be '1' and is.
+PASS: internals.contextLifecycleStateObserverObjectCount(iframe) should be '2' and is.
 After Reparenting
-PASS: internals.contextLifecycleStateObserverObjectCount(document) should be '1' and is.
+PASS: internals.contextLifecycleStateObserverObjectCount(document) should be '2' and is.
 PASS: internals.contextLifecycleStateObserverObjectCount(iframe) should be '0' and is.
diff --git a/third_party/blink/web_tests/http/tests/activedomobject/media.html b/third_party/blink/web_tests/http/tests/activedomobject/media.html
index d8ad43c..6a7d2e6 100644
--- a/third_party/blink/web_tests/http/tests/activedomobject/media.html
+++ b/third_party/blink/web_tests/http/tests/activedomobject/media.html
@@ -11,12 +11,12 @@
 
         log('Before Reparenting');
         shouldBe('internals.contextLifecycleStateObserverObjectCount(document)', 0);
-        shouldBe('internals.contextLifecycleStateObserverObjectCount(iframe)', 1);
+        shouldBe('internals.contextLifecycleStateObserverObjectCount(iframe)', 2);
 
         document.body.appendChild(window.iframe.querySelector('video'));
 
         log('After Reparenting');
-        shouldBe('internals.contextLifecycleStateObserverObjectCount(document)', 1);
+        shouldBe('internals.contextLifecycleStateObserverObjectCount(document)', 2);
         shouldBe('internals.contextLifecycleStateObserverObjectCount(iframe)', 0);
     }
 </script>
diff --git a/third_party/blink/web_tests/http/tests/devtools/layers/layers-3d-view-hit-testing.js b/third_party/blink/web_tests/http/tests/devtools/layers/layers-3d-view-hit-testing.js
index bf7f0fe1..93e01768 100644
--- a/third_party/blink/web_tests/http/tests/devtools/layers/layers-3d-view-hit-testing.js
+++ b/third_party/blink/web_tests/http/tests/devtools/layers/layers-3d-view-hit-testing.js
@@ -5,7 +5,6 @@
 (async function() {
   TestRunner.addResult(`Tests hit testing in Layers3DView\n`);
   await TestRunner.loadModule('layers_test_runner');
-  await TestRunner.showPanel('layers');
 
   await TestRunner.loadHTML(`
       <div id="a" style="transform:translateZ(0px) translateY(60px) rotateZ(45deg);width:300px;height:300px;margin-left:100px; border: 1px solid black;">
@@ -19,6 +18,7 @@
   var canvas;
   const ButtonByEventType = {mousemove: -1, mousedown: 0, mouseup: 0};
 
+  TestRunner.showPanel('layers');
   await LayersTestRunner.requestLayers();
   initLayers();
   initSizes();
diff --git a/third_party/blink/web_tests/http/tests/misc/resources/hang-connection-before-head.php b/third_party/blink/web_tests/http/tests/misc/resources/hang-connection-before-head.php
new file mode 100644
index 0000000..68a88da2
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/misc/resources/hang-connection-before-head.php
@@ -0,0 +1,3 @@
+<?php
+usleep(10000000);
+?>
diff --git a/third_party/blink/web_tests/http/tests/misc/timer-vs-loading.html b/third_party/blink/web_tests/http/tests/misc/timer-vs-loading.html
index b12bd720..d5cad95 100644
--- a/third_party/blink/web_tests/http/tests/misc/timer-vs-loading.html
+++ b/third_party/blink/web_tests/http/tests/misc/timer-vs-loading.html
@@ -28,7 +28,7 @@
 
     <script>
     window.setTimeout("updateClock()", 100);
-    setTimeout('window.location = "resources/hang-connection.php"', 0);
+    setTimeout('window.location = "resources/hang-connection-before-head.php"', 0);
     </script>
 
 </body></html>
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/legacy-performance-memory-counters-disabled.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/legacy-performance-memory-counters-disabled.html
deleted file mode 100644
index a3524ef..0000000
--- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/legacy-performance-memory-counters-disabled.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-
-<script src="../../../../resources/testharness.js"></script>
-<script src="../../../../resources/testharnessreport.js"></script>
-<script>
-
-test(t => {
-  assert_true(
-      performance.memory.usedJSHeapSizeWithoutExternalMemory === undefined);
-  assert_true(
-      performance.memory.totalJSHeapSizeWithoutExternalMemory === undefined);
-}, "Legacy performance memory counters are disabled without Origin Trial.");
-
-</script>
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/legacy-performance-memory-counters-enabled.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/legacy-performance-memory-counters-enabled.html
deleted file mode 100644
index 4d6f6a9..0000000
--- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/legacy-performance-memory-counters-enabled.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<!-- Generate this token with the command:
-generate_token.py --expire-timestamp=2000000000 http://127.0.0.1:8000 LegacyPerformanceMemoryCounters
--->
-
-<meta http-equiv="origin-trial" content="AkkvkocWTiiH0+VhdTlxue2ibIiQ0Gy2Dp4HL5CJEEDHqSovu8L6CCqmHRz7PDWm9EgLLj9xpGXbvxxDdaN8cwAAAABneyJvcmlnaW4iOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZlYXR1cmUiOiAiTGVnYWN5UGVyZm9ybWFuY2VNZW1vcnlDb3VudGVycyIsICJleHBpcnkiOiAyMDAwMDAwMDAwfQ==" />
-
-<script src="../../../../resources/testharness.js"></script>
-<script src="../../../../resources/testharnessreport.js"></script>
-<script>
-
-test(t => {
-  assert_idl_attribute(performance.memory,
-      "usedJSHeapSizeWithoutExternalMemory",
-      "used JS heap size without external memory");
-  assert_idl_attribute(performance.memory,
-      "totalJSHeapSizeWithoutExternalMemory",
-      "total JS heap size without external memory");
-  const snapshot = performance.memory;
-  assert_less_than_equal(snapshot.usedJSHeapSizeWithoutExternalMemory,
-      snapshot.usedJSHeapSize,
-      "used without external memory <= used overall");
-  assert_less_than_equal(snapshot.totalJSHeapSizeWithoutExternalMemory,
-      snapshot.totalJSHeapSize,
-      "total without external memory <= total overall");
-  assert_less_than_equal(snapshot.usedJSHeapSizeWithoutExternalMemory,
-      snapshot.totalJSHeapSizeWithoutExternalMemory,
-      "used without external memory <= total without external memory");
-}, "Test legacy performance memory counters are enabled via origin trial.");
-
-</script>
diff --git a/third_party/blink/web_tests/mojo/bindings-lite-old-names.html b/third_party/blink/web_tests/mojo/bindings-lite-old-names.html
new file mode 100644
index 0000000..9c63bcb
--- /dev/null
+++ b/third_party/blink/web_tests/mojo/bindings-lite-old-names.html
@@ -0,0 +1,209 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings_lite.js"></script>
+<script src="file:///gen/content/test/data/lite_js_old_names_test.mojom-lite.js"></script>
+<script>
+'use strict';
+
+const kTestMessage = 'hello there';
+const kTestNumbers = [0, 1, 1, 2, 3, 5, 8, 13, 21];
+
+class TargetImpl {
+  constructor() {
+    this.numPokes = 0;
+    this.target = new liteJsOldNamesTest.mojom.TestMessageTarget(this);
+  }
+
+  poke() { this.numPokes++; }
+  ping() { return Promise.resolve(); }
+  repeat(message, numbers) { return {message: message, numbers: numbers}; }
+  flatten(values) {}
+  flattenUnions(unions) {}
+  requestSubinterface(request, client) {}
+}
+
+promise_test(() => {
+  let impl = new TargetImpl;
+  let proxy = impl.target.$.createProxy();
+  proxy.poke();
+  return proxy.ping().then(() => {
+    assert_equals(impl.numPokes, 1);
+  });
+}, 'messages with replies return Promises that resolve on reply received');
+
+promise_test(() => {
+  let impl = new TargetImpl;
+  let proxy = impl.target.$.createProxy();
+  return proxy.repeat(kTestMessage, kTestNumbers)
+              .then(reply => {
+                assert_equals(reply.message, kTestMessage);
+                assert_array_equals(reply.numbers, kTestNumbers);
+              });
+}, 'implementations can reply with multiple reply arguments');
+
+promise_test(async (t) => {
+  const impl = new TargetImpl;
+  const proxy = impl.target.$.createProxy();
+
+  await proxy.ping();
+  proxy.$.close();
+
+  await promise_rejects(t, new Error(), proxy.ping());
+}, 'after the pipe is closed all future calls should fail');
+
+promise_test(async (t) => {
+  const impl = new TargetImpl;
+  const proxy = impl.target.$.createProxy();
+
+  // None of these promises should successfully resolve because we are
+  // immediately closing the pipe.
+  const promises = []
+  for (let i = 0; i < 10; i++) {
+    promises.push(proxy.ping());
+  }
+
+  proxy.$.close();
+
+  for (const promise of promises) {
+    await promise_rejects(t, new Error(), promise);
+  }
+}, 'closing the pipe drops any pending messages');
+
+promise_test(() => {
+  let impl = new TargetImpl;
+
+  // Intercept any browser-bound request for TestMessageTarget and bind it
+  // instead to the local |impl| object.
+  let interceptor = new MojoInterfaceInterceptor(
+    liteJsOldNamesTest.mojom.TestMessageTarget.$interfaceName);
+  interceptor.oninterfacerequest = e => {
+    impl.target.$.bindHandle(e.handle);
+  }
+  interceptor.start();
+
+  let proxy = liteJsOldNamesTest.mojom.TestMessageTarget.getProxy();
+  proxy.poke();
+
+  return proxy.ping().then(() => {
+    assert_equals(impl.numPokes, 1);
+  });
+}, 'getProxy() attempts to send requests to the frame host');
+
+promise_test(() => {
+  let router = new liteJsOldNamesTest.mojom.TestMessageTargetCallbackRouter;
+  let proxy = router.$.createProxy();
+  return new Promise(resolve => {
+    router.poke.addListener(resolve);
+    proxy.poke();
+  });
+}, 'basic generated CallbackRouter behavior works as intended');
+
+promise_test(() => {
+  let router = new liteJsOldNamesTest.mojom.TestMessageTargetCallbackRouter;
+  let proxy = router.$.createProxy();
+  let numPokes = 0;
+  router.poke.addListener(() => ++numPokes);
+  router.ping.addListener(() => Promise.resolve());
+  proxy.poke();
+  return proxy.ping().then(() => assert_equals(numPokes, 1));
+}, 'CallbackRouter listeners can reply to messages');
+
+promise_test(() => {
+  let router = new liteJsOldNamesTest.mojom.TestMessageTargetCallbackRouter;
+  let proxy = router.$.createProxy();
+  router.repeat.addListener(
+    (message, numbers) => ({message: message, numbers: numbers}));
+  return proxy.repeat(kTestMessage, kTestNumbers)
+              .then(reply => {
+                assert_equals(reply.message, kTestMessage);
+                assert_array_equals(reply.numbers, kTestNumbers);
+              });
+}, 'CallbackRouter listeners can reply with multiple reply arguments');
+
+promise_test(() => {
+  let targetRouter = new liteJsOldNamesTest.mojom.TestMessageTargetCallbackRouter;
+  let targetProxy = targetRouter.$.createProxy();
+  let subinterfaceRouter = new liteJsOldNamesTest.mojom.SubinterfaceCallbackRouter;
+  targetRouter.requestSubinterface.addListener((request, client) => {
+    let values = [];
+    subinterfaceRouter.$.bindHandle(request.handle);
+    subinterfaceRouter.push.addListener(value => values.push(value));
+    subinterfaceRouter.flush.addListener(() => {
+      client.didFlush(values);
+      values = [];
+    });
+  });
+
+  let clientRouter = new liteJsOldNamesTest.mojom.SubinterfaceClientCallbackRouter;
+  let subinterfaceProxy = new liteJsOldNamesTest.mojom.SubinterfaceProxy;
+  targetProxy.requestSubinterface(
+    subinterfaceProxy.$.createRequest(), clientRouter.$.createProxy());
+  return new Promise(resolve => {
+    clientRouter.didFlush.addListener(values => {
+      assert_array_equals(values, kTestNumbers);
+      resolve();
+    });
+
+    kTestNumbers.forEach(n => subinterfaceProxy.push(n));
+    subinterfaceProxy.flush();
+  });
+}, 'can send and receive interface requests and proxies');
+
+promise_test(() => {
+  const targetRouter = new liteJsOldNamesTest.mojom.TestMessageTargetCallbackRouter;
+  const targetProxy = targetRouter.$.createProxy();
+  targetRouter.flatten.addListener(values => ({values: values.map(v => v.x)}));
+  return targetProxy.flatten([{x: 1}, {x: 2}, {x: 3}]).then(reply => {
+    assert_array_equals(reply.values, [1, 2, 3]);
+  });
+}, 'regression test for complex array serialization');
+
+promise_test(() => {
+  const targetRouter = new liteJsOldNamesTest.mojom.TestMessageTargetCallbackRouter;
+  const targetProxy = targetRouter.$.createProxy();
+  targetRouter.flattenUnions.addListener(unions => {
+    return {x: unions.filter(u => u.x !== undefined).map(u => u.x),
+            s: unions.filter(u => u.s !== undefined).map(u => u.s.x)};
+  });
+
+  return targetProxy.flattenUnions(
+    [{x: 1}, {x: 2}, {s: {x: 3}}, {s: {x: 4}}, {x: 5}, {s: {x: 6}}])
+                    .then(reply => {
+                      assert_array_equals(reply.x, [1, 2, 5]);
+                      assert_array_equals(reply.s, [3, 4, 6]);
+                    });
+}, 'can serialize and deserialize unions');
+
+promise_test(() => {
+  let impl = new TargetImpl;
+  let proxy = impl.target.$.createProxy();
+
+  // Poke a bunch of times. These should never race with the assertion below,
+  // because the |flushForTesting| request/response is ordered against other
+  // messages on |proxy|.
+  const kNumPokes = 100;
+  for (let i = 0; i < kNumPokes; ++i)
+    proxy.poke();
+  return proxy.$.flushForTesting().then(() => {
+    assert_equals(impl.numPokes, kNumPokes);
+  });
+}, 'can use generated flushForTesting API for synchronization in tests');
+
+promise_test(async(t) => {
+  const impl = new TargetImpl;
+  const proxy = impl.target.$.createProxy();
+  const disconnectPromise = new Promise(resolve => impl.target.onConnectionError.addListener(resolve));
+  proxy.$.close();
+  return disconnectPromise;
+}, 'InterfaceTarget connection error handler runs when set on an Interface object');
+
+promise_test(() => {
+  const router = new liteJsOldNamesTest.mojom.TestMessageTargetCallbackRouter;
+  const proxy = router.$.createProxy();
+  const disconnectPromise = new Promise(resolve => router.onConnectionError.addListener(resolve));
+  proxy.$.close();
+  return disconnectPromise;
+}, 'InterfaceTarget connection error handler runs when set on an InterfaceCallbackRouter object');
+
+</script>
diff --git a/third_party/blink/web_tests/mojo/bindings-lite.html b/third_party/blink/web_tests/mojo/bindings-lite.html
index 5026483..8e5af734 100644
--- a/third_party/blink/web_tests/mojo/bindings-lite.html
+++ b/third_party/blink/web_tests/mojo/bindings-lite.html
@@ -12,7 +12,7 @@
 class TargetImpl {
   constructor() {
     this.numPokes = 0;
-    this.target = new liteJsTest.mojom.TestMessageTarget(this);
+    this.target = new liteJsTest.mojom.TestMessageTargetReceiver(this);
   }
 
   poke() { this.numPokes++; }
@@ -25,17 +25,17 @@
 
 promise_test(() => {
   let impl = new TargetImpl;
-  let proxy = impl.target.$.createProxy();
-  proxy.poke();
-  return proxy.ping().then(() => {
+  let remote = impl.target.$.bindNewPipeAndPassRemote();
+  remote.poke();
+  return remote.ping().then(() => {
     assert_equals(impl.numPokes, 1);
   });
 }, 'messages with replies return Promises that resolve on reply received');
 
 promise_test(() => {
   let impl = new TargetImpl;
-  let proxy = impl.target.$.createProxy();
-  return proxy.repeat(kTestMessage, kTestNumbers)
+  let remote = impl.target.$.bindNewPipeAndPassRemote();
+  return remote.repeat(kTestMessage, kTestNumbers)
       .then(reply => {
         assert_equals(reply.message, kTestMessage);
         assert_array_equals(reply.numbers, kTestNumbers);
@@ -44,26 +44,26 @@
 
 promise_test(async (t) => {
   const impl = new TargetImpl;
-  const proxy = impl.target.$.createProxy();
+  const remote = impl.target.$.bindNewPipeAndPassRemote();
 
-  await proxy.ping();
-  proxy.$.close();
+  await remote.ping();
+  remote.$.close();
 
-  await promise_rejects(t, new Error(), proxy.ping());
+  await promise_rejects(t, new Error(), remote.ping());
 }, 'after the pipe is closed all future calls should fail');
 
 promise_test(async (t) => {
   const impl = new TargetImpl;
-  const proxy = impl.target.$.createProxy();
+  const remote = impl.target.$.bindNewPipeAndPassRemote();
 
   // None of these promises should successfully resolve because we are
   // immediately closing the pipe.
   const promises = []
   for (let i = 0; i < 10; i++) {
-    promises.push(proxy.ping());
+    promises.push(remote.ping());
   }
 
-  proxy.$.close();
+  remote.$.close();
 
   for (const promise of promises) {
     await promise_rejects(t, new Error(), promise);
@@ -82,38 +82,38 @@
   }
   interceptor.start();
 
-  let proxy = liteJsTest.mojom.TestMessageTarget.getProxy();
-  proxy.poke();
-  return proxy.ping().then(() => {
+  let remote = liteJsTest.mojom.TestMessageTarget.getRemote();
+  remote.poke();
+  return remote.ping().then(() => {
     assert_equals(impl.numPokes, 1);
   });
-}, 'getProxy() attempts to send requests to the frame host');
+}, 'getRemote() attempts to send requests to the frame host');
 
 promise_test(() => {
   let router = new liteJsTest.mojom.TestMessageTargetCallbackRouter;
-  let proxy = router.$.createProxy();
+  let remote = router.$.bindNewPipeAndPassRemote();
   return new Promise(resolve => {
     router.poke.addListener(resolve);
-    proxy.poke();
+    remote.poke();
   });
 }, 'basic generated CallbackRouter behavior works as intended');
 
 promise_test(() => {
   let router = new liteJsTest.mojom.TestMessageTargetCallbackRouter;
-  let proxy = router.$.createProxy();
+  let remote = router.$.bindNewPipeAndPassRemote();
   let numPokes = 0;
   router.poke.addListener(() => ++numPokes);
   router.ping.addListener(() => Promise.resolve());
-  proxy.poke();
-  return proxy.ping().then(() => assert_equals(numPokes, 1));
+  remote.poke();
+  return remote.ping().then(() => assert_equals(numPokes, 1));
 }, 'CallbackRouter listeners can reply to messages');
 
 promise_test(() => {
   let router = new liteJsTest.mojom.TestMessageTargetCallbackRouter;
-  let proxy = router.$.createProxy();
+  let remote = router.$.bindNewPipeAndPassRemote();
   router.repeat.addListener(
       (message, numbers) => ({message: message, numbers: numbers}));
-  return proxy.repeat(kTestMessage, kTestNumbers)
+  return remote.repeat(kTestMessage, kTestNumbers)
       .then(reply => {
         assert_equals(reply.message, kTestMessage);
         assert_array_equals(reply.numbers, kTestNumbers);
@@ -122,7 +122,7 @@
 
 promise_test(() => {
   let targetRouter = new liteJsTest.mojom.TestMessageTargetCallbackRouter;
-  let targetProxy = targetRouter.$.createProxy();
+  let targetRemote = targetRouter.$.bindNewPipeAndPassRemote();
   let subinterfaceRouter = new liteJsTest.mojom.SubinterfaceCallbackRouter;
   targetRouter.requestSubinterface.addListener((request, client) => {
     let values = [];
@@ -135,38 +135,39 @@
   });
 
   let clientRouter = new liteJsTest.mojom.SubinterfaceClientCallbackRouter;
-  let subinterfaceProxy = new liteJsTest.mojom.SubinterfaceProxy;
-  targetProxy.requestSubinterface(
-      subinterfaceProxy.$.createRequest(), clientRouter.$.createProxy());
+  let subinterfaceRemote = new liteJsTest.mojom.SubinterfaceRemote;
+  targetRemote.requestSubinterface(
+    subinterfaceRemote.$.bindNewPipeAndPassReceiver(),
+    clientRouter.$.bindNewPipeAndPassRemote());
   return new Promise(resolve => {
     clientRouter.didFlush.addListener(values => {
       assert_array_equals(values, kTestNumbers);
       resolve();
     });
 
-    kTestNumbers.forEach(n => subinterfaceProxy.push(n));
-    subinterfaceProxy.flush();
+    kTestNumbers.forEach(n => subinterfaceRemote.push(n));
+    subinterfaceRemote.flush();
   });
 }, 'can send and receive interface requests and proxies');
 
 promise_test(() => {
   const targetRouter = new liteJsTest.mojom.TestMessageTargetCallbackRouter;
-  const targetProxy = targetRouter.$.createProxy();
+  const targetRemote = targetRouter.$.bindNewPipeAndPassRemote();
   targetRouter.flatten.addListener(values => ({values: values.map(v => v.x)}));
-  return targetProxy.flatten([{x: 1}, {x: 2}, {x: 3}]).then(reply => {
+  return targetRemote.flatten([{x: 1}, {x: 2}, {x: 3}]).then(reply => {
     assert_array_equals(reply.values, [1, 2, 3]);
   });
 }, 'regression test for complex array serialization');
 
 promise_test(() => {
   const targetRouter = new liteJsTest.mojom.TestMessageTargetCallbackRouter;
-  const targetProxy = targetRouter.$.createProxy();
+  const targetRemote = targetRouter.$.bindNewPipeAndPassRemote();
   targetRouter.flattenUnions.addListener(unions => {
     return {x: unions.filter(u => u.x !== undefined).map(u => u.x),
             s: unions.filter(u => u.s !== undefined).map(u => u.s.x)};
   });
 
-  return targetProxy.flattenUnions(
+  return targetRemote.flattenUnions(
       [{x: 1}, {x: 2}, {s: {x: 3}}, {s: {x: 4}}, {x: 5}, {s: {x: 6}}])
       .then(reply => {
     assert_array_equals(reply.x, [1, 2, 5]);
@@ -176,32 +177,32 @@
 
 promise_test(() => {
   let impl = new TargetImpl;
-  let proxy = impl.target.$.createProxy();
+  let remote = impl.target.$.bindNewPipeAndPassRemote();
 
   // Poke a bunch of times. These should never race with the assertion below,
   // because the |flushForTesting| request/response is ordered against other
-  // messages on |proxy|.
+  // messages on |remote|.
   const kNumPokes = 100;
   for (let i = 0; i < kNumPokes; ++i)
-    proxy.poke();
-  return proxy.$.flushForTesting().then(() => {
+    remote.poke();
+  return remote.$.flushForTesting().then(() => {
     assert_equals(impl.numPokes, kNumPokes);
   });
 }, 'can use generated flushForTesting API for synchronization in tests');
 
 promise_test(async(t) => {
   const impl = new TargetImpl;
-  const proxy = impl.target.$.createProxy();
+  const remote = impl.target.$.bindNewPipeAndPassRemote();
   const disconnectPromise = new Promise(resolve => impl.target.onConnectionError.addListener(resolve));
-  proxy.$.close();
+  remote.$.close();
   return disconnectPromise;
 }, 'InterfaceTarget connection error handler runs when set on an Interface object');
 
 promise_test(() => {
   const router = new liteJsTest.mojom.TestMessageTargetCallbackRouter;
-  const proxy = router.$.createProxy();
+  const remote = router.$.bindNewPipeAndPassRemote();
   const disconnectPromise = new Promise(resolve => router.onConnectionError.addListener(resolve));
-  proxy.$.close();
+  remote.$.close();
   return disconnectPromise;
   }, 'InterfaceTarget connection error handler runs when set on an InterfaceCallbackRouter object');
 
diff --git a/third_party/blink/web_tests/register-protocol-handler/blob-urls.html b/third_party/blink/web_tests/register-protocol-handler/blob-urls.html
new file mode 100644
index 0000000..9bee82d
--- /dev/null
+++ b/third_party/blink/web_tests/register-protocol-handler/blob-urls.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<title>Test that blob: URLs fail registerProtocolHandler checks</title>
+<body>
+<iframe id='frame'></iframe>
+
+<script>
+const frameSrc =
+`<html>
+<head>
+<script>
+try {
+  navigator.registerProtocolHandler('web+test',
+                                    location.href + '?%s',
+                                    'Test handler');
+  window.parent.postMessage('rph succeeded', '*');
+} catch (e) {
+  window.parent.postMessage('rph failed: ' + e.message, '*');
+}
+<\/script>
+<\/head>
+<body>
+Test page
+<\/body>
+<\/html>
+`
+
+window.addEventListener('message', (msg) => {
+  assert_equals(msg.data,
+                'rph failed: Failed to execute \'registerProtocolHandler\' on \'Navigator\': The scheme of the url provided must be the \'http\' or \'https\'.',
+                'registerProtocolHandler should have failed');
+  done();
+});
+
+const data = new Blob([frameSrc], {type: 'text/html'});
+document.getElementById('frame').src = window.URL.createObjectURL(data);
+</script>
+</body>
diff --git a/third_party/blink/web_tests/register-protocol-handler/data-urls.html b/third_party/blink/web_tests/register-protocol-handler/data-urls.html
new file mode 100644
index 0000000..89bde5f
--- /dev/null
+++ b/third_party/blink/web_tests/register-protocol-handler/data-urls.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<title>Test that data: URLs fail registerProtocolHandler checks</title>
+<body>
+<iframe id='frame'></iframe>
+
+<script>
+const frameSrc =
+`<html>
+<head>
+<script>
+try {
+  navigator.registerProtocolHandler('web+test',
+                                    location.href + '?%s',
+                                    'Test handler');
+  window.parent.postMessage('rph succeeded', '*');
+} catch (e) {
+  window.parent.postMessage('rph failed: ' + e.message, '*');
+}
+<\/script>
+<\/head>
+<body>
+Test page
+<\/body>
+<\/html>
+`
+
+window.addEventListener('message', (msg) => {
+  assert_equals(msg.data,
+                'rph failed: Failed to execute \'registerProtocolHandler\' on \'Navigator\': The scheme of the url provided must be the \'http\' or \'https\'.',
+                'registerProtocolHandler should have failed');
+  done();
+});
+
+document.getElementById('frame').src = 'data:text/html,' + frameSrc;
+</script>
+</body>
diff --git a/third_party/blink/web_tests/scrollbars/nested-scroll-overlay-scrollbar-expected.html b/third_party/blink/web_tests/scrollbars/nested-scroll-overlay-scrollbar-expected.html
new file mode 100644
index 0000000..337c2f68
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/nested-scroll-overlay-scrollbar-expected.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<div id="outer" style="width: 200px; height: 200px; overflow: scroll">
+  <div style="background: green; height: 100px"></div>
+  <div style="height: 110px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/nested-scroll-overlay-scrollbar.html b/third_party/blink/web_tests/scrollbars/nested-scroll-overlay-scrollbar.html
new file mode 100644
index 0000000..9a9eba03
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/nested-scroll-overlay-scrollbar.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll">
+  <!-- The intermediate div doesn't have layout overflow. -->
+  <div style="height: 210px; overflow: scroll">
+    <div style="background: green; width: 300px; height: 100px"></div>
+  </div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-interleaving-z-order-expected.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-interleaving-z-order-expected.html
new file mode 100644
index 0000000..be7860a2
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-interleaving-z-order-expected.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<div id="container" style="width: 200px; height: 200px; overflow: scroll">
+  <div id="content" style="background: green; width: 210px; height: 150px"></div>
+  <div style="height: 60px"></div>
+</div>
+<div style="position: absolute; top: 80px; left: 80px; z-index: -1; background: blue; width: 200px; height: 200px"></div>
+<div style="position: absolute; top: 120px; left: 120px; z-index: 20; background: yellow; width: 200px; height: 200px"></div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-interleaving-z-order.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-interleaving-z-order.html
new file mode 100644
index 0000000..fe92316
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-interleaving-z-order.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<div id="container" style="width: 200px; height: 200px; overflow: scroll; position: relative">
+  <div id="content" style="position: absolute; z-index: 10; background: green; width: 210px; height: 150px"></div>
+  <div style="height: 210px"></div>
+</div>
+<div style="position: absolute; top: 80px; left: 80px; z-index: 5; background: blue; width: 200px; height: 200px"></div>
+<div style="position: absolute; top: 120px; left: 120px; z-index: 20; background: yellow; width: 200px; height: 200px"></div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-expected.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-expected.html
new file mode 100644
index 0000000..49c1ce68
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-expected.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll">
+  <div style="background: green; width: 300px; height: 100px"></div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-1-expected.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-1-expected.html
new file mode 100644
index 0000000..0b104dd8
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-1-expected.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll">
+  <div style="background: green; width: 200px; height: 70px"></div>
+  <!-- This div let the top-level div have the same layout overflow as in the test. -->
+  <div style="width: 210px; height: 220px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-1.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-1.html
new file mode 100644
index 0000000..26445a4c
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-1.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<div style="position: relative; width: 200px; height: 200px; overflow: scroll">
+  <!-- the intermediate div doesn't have layout overflow. -->
+  <div style="position: relative; width: 210px; height: 80px; overflow: scroll">
+    <div style="position: absolute; z-index: 5; background: green; width: 200px; height: 70px"></div>
+  </div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-2-expected.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-2-expected.html
new file mode 100644
index 0000000..e4b3bae
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-2-expected.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll">
+  <div style="background: green; width: 210px; height: 80px"></div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-2.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-2.html
new file mode 100644
index 0000000..30fdcc3
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-2.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<style>
+  #intermediate::-webkit-scrollbar { display: none; }
+</style>
+<div style="position: relative; width: 200px; height: 200px; overflow: scroll">
+  <!-- The intermediate div's scrollbars are hidden. -->
+  <div id="intermediate" style="position: relative; width: 210px; height: 80px; overflow: scroll">
+    <div style="position: absolute; z-index: 5; background: green; width: 300px; height: 100px"></div>
+  </div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-3-expected.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-3-expected.html
new file mode 100644
index 0000000..e4b3bae
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-3-expected.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll">
+  <div style="background: green; width: 210px; height: 80px"></div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-3.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-3.html
new file mode 100644
index 0000000..e3b043e2
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-3.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<div style="position: relative; width: 200px; height: 200px; overflow: scroll">
+  <!-- The intermediate div's overflow is hidden. -->
+  <div style="position: relative; width: 210px; height: 80px; overflow: hidden">
+    <div style="position: absolute; z-index: 5; background: green; width: 300px; height: 100px"></div>
+  </div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-expected.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-expected.html
new file mode 100644
index 0000000..447fcfb6
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested-expected.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll">
+  <div style="width: 210px; height: 80px; overflow: scroll">
+    <div style="background: green; width: 300px; height: 200px"></div>
+  </div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested.html
new file mode 100644
index 0000000..a915f1c
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer-nested.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<div style="position: relative; width: 200px; height: 200px; overflow: scroll">
+  <div style="position: relative; width: 210px; height: 80px; overflow: scroll">
+    <div style="position: absolute; z-index: 5; background: green; width: 300px; height: 100px"></div>
+  </div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer.html
new file mode 100644
index 0000000..4220153
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-child-layer.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<div id="container" style="width: 200px; height: 200px; overflow: scroll">
+  <div id="content" style="position: relative; background: green; width: 300px; height: 100px"></div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-negative-z-child-layer-expected.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-negative-z-child-layer-expected.html
new file mode 100644
index 0000000..b136cfb
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-negative-z-child-layer-expected.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<div id="container" style="width: 200px; height: 200px; overflow: scroll">
+  <div id="content" style="background: green; width: 300px; height: 100px"></div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-negative-z-child-layer.html b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-negative-z-child-layer.html
new file mode 100644
index 0000000..a8adb7f
--- /dev/null
+++ b/third_party/blink/web_tests/scrollbars/overlay-scrollbar-over-negative-z-child-layer.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<div id="container" style="width: 200px; height: 200px; overflow: scroll">
+  <div id="content" style="position: relative; z-index: -1; background: green; width: 300px; height: 100px"></div>
+  <div style="height: 210px"></div>
+</div>
+<script>
+if (window.internals) {
+  internals.runtimeFlags.overlayScrollbarsEnabled = true;
+  internals.settings.setMockScrollbarsEnabled(true);
+}
+</script>
diff --git a/third_party/blink/web_tests/security/srcdoc-include-file.html b/third_party/blink/web_tests/security/srcdoc-include-file.html
new file mode 100644
index 0000000..7a83cb6
--- /dev/null
+++ b/third_party/blink/web_tests/security/srcdoc-include-file.html
@@ -0,0 +1,35 @@
+<!--
+  iframe using the srcdoc URL must be able to load files subresources if the
+  iframe was created from a file. This should continue to be true after history
+  navigations. See https://crbug.com/949510.
+-->
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+
+<iframe name="theiframe" srcdoc="
+  <script src='./resources/script.js'
+          onload='parent.window.onScriptLoaded();'>
+  </script>
+"></iframe>
+
+<a target="theiframe" href="../resources/back.html"></a>
+
+<script>
+  let button = document.querySelector("a");
+  let iframe = document.querySelector("iframe");
+
+  let scriptLoaded = function() {
+    return new Promise(resolved => window.onScriptLoaded = resolved);
+  };
+
+  async_test(async function(t) {
+    // 1. Check file subresource can be loaded from the initial about:srcdoc
+    //    document.
+    await scriptLoaded();
+    button.click();
+    // 2. Check file subresource can be loaded again after a new navigation to
+    //    about:srcdoc.
+    await scriptLoaded();
+    t.done();
+  });
+</script>
diff --git a/third_party/blink/web_tests/serial/resources/serial-test-utils.js b/third_party/blink/web_tests/serial/resources/serial-test-utils.js
index 34a2e338..781020c 100644
--- a/third_party/blink/web_tests/serial/resources/serial-test-utils.js
+++ b/third_party/blink/web_tests/serial/resources/serial-test-utils.js
@@ -12,6 +12,78 @@
   return { port, fakePort };
 }
 
+// Compare two Uint8Arrays.
+function compareArrays(actual, expected) {
+  assert_true(actual instanceof Uint8Array, 'actual is Uint8Array');
+  assert_true(expected instanceof Uint8Array, 'expected is Uint8Array');
+  assert_equals(actual.byteLength, expected.byteLength, 'lengths equal');
+  for (let i = 0; i < expected.byteLength; ++i)
+    assert_equals(actual[i], expected[i], `Mismatch at position ${i}.`);
+}
+
+// Pull from |reader| until it reports done and return the data as a combined
+// Uint8Array.
+async function readAll(reader) {
+  const chunks = [];
+  while (true) {
+    let { value, done } = await reader.read();
+    if (done) {
+      // It would be better to allocate |buffer| up front with the number of
+      // of bytes expected but this is the best that can be done without a BYOB
+      // reader to control the amount of data read.
+      const length =
+          chunks.reduce((total, chunk) => total + chunk.byteLength, 0);
+      const buffer = new Uint8Array(length);
+      chunks.reduce((offset, chunk) => {
+        buffer.set(chunk, offset);
+        return offset + chunk.byteLength;
+      }, 0);
+      return buffer;
+    }
+
+    chunks.push(value);
+  }
+}
+
+// Implementation of an UnderlyingSource to create a ReadableStream from a Mojo
+// data pipe consumer handle.
+class DataPipeSource {
+  constructor(consumer) {
+    this.consumer_ = consumer;
+  }
+
+  async pull(controller) {
+    let chunk = new ArrayBuffer(64);
+    let {result, numBytes} = this.consumer_.readData(chunk);
+    if (result == Mojo.RESULT_OK) {
+      controller.enqueue(new Uint8Array(chunk, 0, numBytes));
+      return;
+    } else if (result == Mojo.RESULT_FAILED_PRECONDITION) {
+      controller.close();
+      return;
+    } else if (result == Mojo.RESULT_SHOULD_WAIT) {
+      await this.readable();
+      return this.pull(controller);
+    }
+  }
+
+  cancel() {
+    this.watcher_.cancel();
+    this.consumer_.close();
+  }
+
+  readable() {
+    return new Promise((resolve) => {
+      this.watcher_ =
+          this.consumer_.watch({ readable: true, peerClosed: true }, () => {
+            this.watcher_.cancel();
+            this.watcher_ = undefined;
+            resolve();
+          });
+    });
+  }
+}
+
 // Implementation of an UnderlyingSink to create a WritableStream from a Mojo
 // data pipe producer handle.
 class DataPipeSink {
@@ -25,7 +97,7 @@
       if (numBytes < chunk.byteLength)
         return this.write(chunk.slice(numBytes), controller);
     } else if (result == Mojo.RESULT_FAILED_PRECONDITION) {
-      controller.close();
+      throw new DOMException("The pipe is closed.", "InvalidStateError");
     } else if (result == Mojo.RESULT_SHOULD_WAIT) {
       await this.writable();
       return this.write(chunk, controller);
@@ -33,13 +105,14 @@
   }
 
   close() {
-    if (this._watcher)
-      this._watcher.cancel();
+    assert_equals(undefined, this._watcher);
     this._producer.close();
   }
 
   abort(reason) {
-    this.close();
+    if (this._watcher)
+      this._watcher.cancel();
+    this._producer.close();
   }
 
   writable() {
@@ -74,6 +147,13 @@
     writer.releaseLock();
   }
 
+  async read() {
+    let reader = this.readable_.getReader();
+    let result = await reader.read();
+    reader.releaseLock();
+    return result;
+  }
+
   simulateParityError() {
     this.writable_.getWriter().close();
     this.writable_ = undefined;
@@ -96,6 +176,7 @@
   async open(options, in_stream, out_stream, client) {
     this.options_ = options;
     this.client_ = client;
+    this.readable_ = new ReadableStream(new DataPipeSource(in_stream));
     this.writable_ = new WritableStream(new DataPipeSink(out_stream));
     return { success: true };
   }
diff --git a/third_party/blink/web_tests/serial/serialPort_readable.html b/third_party/blink/web_tests/serial/serialPort_readable.html
index e5a3961..e30fa23 100644
--- a/third_party/blink/web_tests/serial/serialPort_readable.html
+++ b/third_party/blink/web_tests/serial/serialPort_readable.html
@@ -7,34 +7,6 @@
 <script src="resources/serial-test-utils.js"></script>
 <script>
 
-function compareArrays(actual, expected) {
-  assert_equals(actual.byteLength, expected.byteLength);
-  for (let i = 0; i < expected.byteLength; ++i)
-    assert_equals(actual[i], expected[i], `Mismatch at position ${i}.`);
-}
-
-async function readAll(reader) {
-  const chunks = [];
-  while (true) {
-    let { value, done } = await reader.read();
-    if (done) {
-      // It would be better to allocate |buffer| up front with the number of
-      // of bytes expected but this is the best that can be done without a BYOB
-      // reader to control the amount of data read.
-      const length =
-          chunks.reduce((total, chunk) => total + chunk.byteLength, 0);
-      const buffer = new Uint8Array(length);
-      chunks.reduce((offset, chunk) => {
-        buffer.set(chunk, offset);
-        return offset + chunk.byteLength;
-      }, 0);
-      return buffer;
-    }
-
-    chunks.push(value);
-  }
-}
-
 serial_test(async (t, fake) => {
   const { port, fakePort } = await getFakeSerialPort(fake);
 
diff --git a/third_party/blink/web_tests/serial/serialPort_writable.html b/third_party/blink/web_tests/serial/serialPort_writable.html
new file mode 100644
index 0000000..296f07e1
--- /dev/null
+++ b/third_party/blink/web_tests/serial/serialPort_writable.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/mojo/public/mojom/base/unguessable_token.mojom.js"></script>
+<script src="file:///gen/third_party/blink/public/mojom/serial/serial.mojom.js"></script>
+<script src="resources/serial-test-utils.js"></script>
+<script>
+
+serial_test(async (t, fake) => {
+  const { port, fakePort } = await getFakeSerialPort(fake);
+
+  assert_equals(port.writable, null);
+
+  await port.open({ baudrate: 9600 });
+  assert_true(port.writable instanceof WritableStream);
+
+  port.close();
+  assert_equals(port.writable, null);
+}, 'open() and close() set and unset SerialPort.writable');
+
+serial_test(async (t, fake) => {
+  const { port, fakePort } = await getFakeSerialPort(fake);
+
+  await port.open({ baudrate: 9600 });
+  assert_true(port.writable instanceof WritableStream);
+
+  const writer = port.writable.getWriter();
+  port.close();
+
+  const data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
+  await promise_rejects(t, 'InvalidStateError', writer.write(data));
+  assert_equals(port.writable, null);
+}, 'SerialPort.writable reports errors after close()');
+
+serial_test(async (t, fake) => {
+  const { port, fakePort } = await getFakeSerialPort(fake);
+
+  await port.open({ baudrate: 9600 });
+  assert_true(port.writable instanceof WritableStream);
+
+  const writer = port.writable.getWriter();
+  const data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
+  let writePromise = writer.write(data);
+  let { value, done } = await fakePort.read();
+  await writePromise;
+  compareArrays(value, data);
+
+  port.close();
+  assert_equals(port.writable, null);
+}, 'Can write a small amount of data');
+
+serial_test(async (t, fake) => {
+  const { port, fakePort } = await getFakeSerialPort(fake);
+  // Select a buffer size smaller than the amount of data transferred.
+  await port.open({ baudrate: 9600, buffersize: 64 });
+
+  const writer = port.writable.getWriter();
+  const data = new Uint8Array(1024);  // Much larger than buffersize above.
+  for (let i = 0; i < data.byteLength; ++i)
+    data[i] = i & 0xff;
+  writer.write(data);
+  writer.close();
+
+  const reader = fakePort.readable_.getReader();
+  const value = await readAll(reader);
+  reader.releaseLock();
+  compareArrays(data, value);
+}, 'Can read a large amount of data');
+
+</script>
diff --git a/third_party/blink/web_tests/std-switch/click-transition.html b/third_party/blink/web_tests/std-switch/click-transition.html
index daafd90..3bb1a1c 100644
--- a/third_party/blink/web_tests/std-switch/click-transition.html
+++ b/third_party/blink/web_tests/std-switch/click-transition.html
@@ -24,9 +24,9 @@
   thumb.addEventListener('transitionend', e => { ++transitionEndCounter; });
 
   await test_driver.click(switchElement);
-  assert_true(switchElement.on);
+  assert_true(switchElement.on, 'click');
   await singleFrame();
-  assert_true(transitionStartCounter > 0);
+  assert_true(transitionStartCounter > 0, 'A transition starts');
   if (transitionStartCounter > transitionEndCounter) {
     await new Promise((resolve, reject) => {
       thumb.addEventListener('transitionend', () => {
@@ -39,7 +39,7 @@
   assert_equals(thumb.runningTransitions, 0);
   // The track element doesn't animate by default.
   let trackElement = internals.shadowRoot(switchElement).getElementById('track');
-  assert_equals(trackElement.runningTransitions, undefined);
+  assert_equals(trackElement.runningTransitions, 0);
 
   // Changing the state with an IDL attribute should not animate.
   transitionStartCounter = 0;
diff --git a/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.png b/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.png
index 57f073e..d3100be 100644
--- a/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.png
+++ b/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt b/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt
index 54bb628..d6d5879 100644
--- a/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt
+++ b/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/overflow/scrollbar-layer-placement-negative-z-index-child-expected.txt
@@ -18,34 +18,22 @@
       "backgroundColor": "#FFFFFF"
     },
     {
-      "name": "LayoutBlockFlow (positioned) DIV class='outer'",
+      "name": "LayoutNGBlockFlow (positioned) DIV class='outer'",
       "bounds": [352, 294]
     },
     {
-      "name": "LayoutBlockFlow (relative positioned) DIV class='content'",
+      "name": "LayoutNGBlockFlow (relative positioned) DIV class='content'",
       "position": [79, 79],
       "bounds": [196, 212],
       "contentsOpaque": true,
       "backgroundColor": "#DDDDDD"
     },
     {
-      "name": "Overflow Controls Host Layer",
-      "position": [62, 62],
-      "bounds": [230, 170],
-      "drawsContent": false
-    },
-    {
-      "name": "Vertical Scrollbar Layer",
-      "position": [280, 67],
-      "bounds": [7, 160],
-      "drawsContent": false
-    },
-    {
-      "name": "LayoutBlockFlow (positioned) DIV class='outer' (foreground) Layer",
+      "name": "LayoutNGBlockFlow (positioned) DIV class='outer' (foreground) Layer",
       "bounds": [352, 294]
     },
     {
-      "name": "LayoutBlockFlow DIV class='scroller'",
+      "name": "LayoutNGBlockFlow DIV class='scroller'",
       "position": [32, 32],
       "bounds": [290, 230],
       "backgroundColor": "#FFFFFF"
@@ -61,6 +49,18 @@
       "position": [67, 67],
       "bounds": [220, 236],
       "backgroundColor": "#FFFFFF"
+    },
+    {
+      "name": "Overflow Controls Host Layer",
+      "position": [62, 62],
+      "bounds": [230, 170],
+      "drawsContent": false
+    },
+    {
+      "name": "Vertical Scrollbar Layer",
+      "position": [280, 67],
+      "bounds": [7, 160],
+      "drawsContent": false
     }
   ]
 }
diff --git a/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/scrollbars/nested-overlay-scrollbars-expected.png b/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/scrollbars/nested-overlay-scrollbars-expected.png
new file mode 100644
index 0000000..219172d
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/disable-blink-gen-property-trees/compositing/scrollbars/nested-overlay-scrollbars-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/user-timing-l2/external/wpt/user-timing/structured-serialize-detail-expected.txt b/third_party/blink/web_tests/virtual/user-timing-l2/external/wpt/user-timing/structured-serialize-detail-expected.txt
new file mode 100644
index 0000000..f5b62db1
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/user-timing-l2/external/wpt/user-timing/structured-serialize-detail-expected.txt
@@ -0,0 +1,16 @@
+This is a testharness.js-based test.
+FAIL The detail property in the mark constructor should be structured-clone. Cannot read property 'randomInfo' of undefined
+FAIL The detail property in the mark method should be structured-clone. Cannot read property 'detail' of null
+FAIL When accessing detail from a mark entry and the detail is not provided, just return a null value. Cannot read property 'detail' of null
+FAIL Mark: Throw an exception when the detail property cannot be structured-serialized. assert_throws: Trying to structured-serialize a Symbol. function "()=>{
+      new PerformanceMark("A", { detail });
+    }" did not throw
+FAIL The detail property in the measure method should be structured-clone. Failed to execute 'measure' on 'Performance': The mark '[object Object]' does not exist.
+FAIL The detail property in the measure method should be the same reference. Failed to execute 'measure' on 'Performance': The mark '[object Object]' does not exist.
+FAIL When accessing detail from a measure entry and the detail is not provided, just return a null value. Cannot read property 'detail' of null
+FAIL Measure: Throw an exception when the detail property cannot be structured-serialized. assert_throws: Trying to structured-serialize a Symbol. function "()=>{
+      performance.measure("A", { detail });
+    }" threw object "SyntaxError: Failed to execute 'measure' on 'Performance': The mark '[object Object]' does not exist." that is not a DOMException DataCloneError: property "code" is equal to 12, expected 25
+FAIL The detail object is cloned when passed to mark API. Cannot read property 'detail' of null
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/wpt_internal/user-timing/detail-isolated-world.html b/third_party/blink/web_tests/wpt_internal/user-timing/detail-isolated-world.html
new file mode 100644
index 0000000..24d5ea2
--- /dev/null
+++ b/third_party/blink/web_tests/wpt_internal/user-timing/detail-isolated-world.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+promise_test(async () => {
+  // Demonstrate that the object was in fact cloned, and is not the original
+  // object leaking between worlds.
+  const detail = { foo: 1 };
+  performance.mark("m", { detail });
+  const mark = performance.getEntriesByName("m")[0];
+  assert_equals(mark.detail, mark.detail, "each access should produce the same object");
+  assert_not_equals(mark.detail, detail, "the object should be a clone, not the original");
+  assert_equals(Object.getPrototypeOf(mark.detail), Object.prototype,
+    "main world object should have the right prototype");
+
+  testRunner.evaluateScriptInIsolatedWorld(1,
+    `const mark = performance.getEntriesByName("m")[0];
+     mark.detail.foo = 2;
+     performance.mark("m2", { detail: {
+       hasRightPrototype: Object.getPrototypeOf(mark.detail) === Object.prototype
+     } });`);
+  assert_equals(detail.foo, 1, "original object shouldn't be mutated through a clone");
+  assert_equals(mark.detail.foo, 1, "main world clone shouldn't be mutated through isolated clone");
+  assert_true(performance.getEntriesByName("m2")[0].detail.hasRightPrototype,
+    "isolated world object should have the right prototype");
+}, "A clone should be used in an isolated world, but only one clone");
+</script>
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium
index c627e7d..2c0c73d 100644
--- a/third_party/freetype/README.chromium
+++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@
 Name: FreeType
 URL: http://www.freetype.org/
-Version: VER-2-10-1-0-g8cf046c38
-Revision: 8cf046c38d4c6ada76ba070562beff0d5041f795
+Version: VER-2-10-1-2-g05439f5cc
+Revision: 05439f5cc69eaa3deaf3db52a7999af09a2c293a
 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent
          JPEG Group) licenses"
 License File: src/docs/FTL.TXT
diff --git a/third_party/google_trust_services/README.chromium b/third_party/google_trust_services/README.chromium
index 488f030..1a90917b 100644
--- a/third_party/google_trust_services/README.chromium
+++ b/third_party/google_trust_services/README.chromium
@@ -4,7 +4,7 @@
 Version: 0
 Date: 2019-04-22
 License: BSD
-License File: LICENSE
+License File: src/LICENSE
 Security Critical: yes
 
 Description:
diff --git a/third_party/r8/README.chromium b/third_party/r8/README.chromium
index 7d21e6b..093a5af1 100644
--- a/third_party/r8/README.chromium
+++ b/third_party/r8/README.chromium
@@ -1,7 +1,7 @@
 Name: R8
 URL: https://r8.googlesource.com/r8
-Revision: 3f76a8b25588c00095f8285e8f264d7dd0cab527
-Version: 1.6.1-dev
+Revision: 09516867c67b961f861308bceec63243b5cb7d1a
+Version: 1.6.11-dev
 License: BSD 3-Clause
 License File: NOT_SHIPPED
 Security Critical: no
@@ -14,3 +14,14 @@
 Turning off vertical and horizontal class merging, as described in
 https://issuetracker.google.com/122902374#comment11. We should no longer make
 this modification once the linked bug is fixed.
+-  public boolean enableHorizontalClassMerging = true;
+-  public boolean enableVerticalClassMerging = true;
++  public boolean enableHorizontalClassMerging = false;
++  public boolean enableVerticalClassMerging = false;
+
+Turning off nullable inlining since it caused a performance regression here:
+crbug.com/965189. If R8 ever mitigates this, we can re-enable this.
+-  public boolean enableInliningOfInvokesWithNullableReceivers =
+-      System.getProperty("com.android.tools.r8.disableInliningOfInvokesWithNullableReceivers")
+-          == null;
++  public boolean enableInliningOfInvokesWithNullableReceivers = false;
diff --git a/tools/binary_size/trybot_commit_size_checker.py b/tools/binary_size/trybot_commit_size_checker.py
index 7b4bd7bb..db68ce8 100755
--- a/tools/binary_size/trybot_commit_size_checker.py
+++ b/tools/binary_size/trybot_commit_size_checker.py
@@ -43,13 +43,13 @@
 
 Binary-Size: Increase is due to translations and so cannot be avoided.
 Binary-Size: Increase is due to new images, which are already optimally encoded.
-Binary-Size: Increase is temporary due to a "new way" / "old way" refactoring.
-    It should go away once the "old way" is removed.
+Binary-Size: Increase is temporary due to a "new way" / "old way" refactoring. \
+It should go away once the "old way" is removed.
 Binary-Size: Increase is temporary and will be reverted before next branch cut.
 Binary-Size: Increase needed to reduce RAM of a common user flow.
 Binary-Size: Increase needed to reduce runtime of a common user flow.
-Binary-Size: Increase needed to implement a feature, and I've already spent a
-    non-trivial amount of time trying to reduce its size.
+Binary-Size: Increase needed to implement a feature, and I've already spent a \
+non-trivial amount of time trying to reduce its size.
 """
 
 
@@ -237,7 +237,14 @@
   if failing_deltas:
     checks_text += _FAILURE_GUIDANCE
 
-  status_code = 1 if failing_deltas and not is_roller else 0
+  status_code = int(bool(failing_deltas))
+
+  # Give rollers a free pass, except for mutable constants.
+  # Mutable constants are rare, and other regressions are generally noticed in
+  # size graphs and can be investigated after-the-fact.
+  if is_roller and mutable_constants_delta not in failing_deltas:
+    status_code = 0
+
   summary = '<br>' + '<br>'.join(resource_sizes_lines)
   if 'Empty Resource Sizes Diff' in summary:
     summary = '<br>No size metrics were affected.'
diff --git a/tools/clang/scripts/build.py b/tools/clang/scripts/build.py
index f2ffbb4..90189a2 100755
--- a/tools/clang/scripts/build.py
+++ b/tools/clang/scripts/build.py
@@ -477,9 +477,13 @@
                msvc_arch='x64')
     RunCommand(['ninja'], msvc_arch='x64')
     if args.run_tests:
+      test_targets = [ 'check-all' ]
+      if sys.platform == 'darwin':
+        # TODO(crbug.com/731375): Run check-all on Darwin too.
+        test_targets = [ 'check-llvm', 'check-clang', 'check-builtins' ]
       if sys.platform == 'win32':
         CopyDiaDllTo(os.path.join(LLVM_BOOTSTRAP_DIR, 'bin'))
-      RunCommand(['ninja', 'check-all'], msvc_arch='x64')
+      RunCommand(['ninja'] + test_targets, msvc_arch='x64')
     RunCommand(['ninja', 'install'], msvc_arch='x64')
 
     if sys.platform == 'win32':
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index 0d207dc..292f8ed 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -37,9 +37,9 @@
 # Do NOT CHANGE this if you don't know what you're doing -- see
 # https://chromium.googlesource.com/chromium/src/+/master/docs/updating_clang.md
 # Reverting problematic clang rolls is safe, though.
-CLANG_REVISION = 'd874c057bc2361da5157553e1e2178f43c3ade1a'
-CLANG_SVN_REVISION = '363790'
-CLANG_SUB_REVISION = 3
+CLANG_REVISION = 'f7e52fbdb5a7af8ea0808e98458b497125a5eca1'
+CLANG_SVN_REVISION = '365097'
+CLANG_SUB_REVISION = 1
 
 PACKAGE_VERSION = '%s-%s-%s' % (CLANG_SVN_REVISION, CLANG_REVISION[:8],
                                 CLANG_SUB_REVISION)
diff --git a/tools/gdb/gdb_chrome.py b/tools/gdb/gdb_chrome.py
index 7867358..78c5610 100644
--- a/tools/gdb/gdb_chrome.py
+++ b/tools/gdb/gdb_chrome.py
@@ -162,8 +162,9 @@
   typename = 'base::WeakPtr'
 
   def ptr(self):
-    flag = ScopedRefPtrPrinter(self.val['ref_']['flag_']).ptr()
-    if flag and flag['is_valid_']:
+    if bool(
+        gdb.parse_and_eval(
+            '(*(%s*)(%s)).ref_.IsValid()' % (self.val.type, self.val.address))):
       return self.val['ptr_']
     return gdb.Value(0).cast(self.val['ptr_'].type)
 
diff --git a/tools/grit/grit/format/policy_templates_json_unittest.py b/tools/grit/grit/format/policy_templates_json_unittest.py
index 94b6028..d3816ad30 100755
--- a/tools/grit/grit/format/policy_templates_json_unittest.py
+++ b/tools/grit/grit/format/policy_templates_json_unittest.py
@@ -123,7 +123,7 @@
     grd_string_io = StringIO.StringIO(grd_text)
 
     # Parse the grit tree and load the policies' JSON with a gatherer.
-    grd = grd_reader.Parse(grd_string_io, dir=tmp_dir_name, defines={'_google_chrome': True})
+    grd = grd_reader.Parse(grd_string_io, dir=tmp_dir_name)
     grd.SetOutputLanguage('en')
     grd.RunGatherers()
 
diff --git a/tools/grit/grit/gather/policy_json.py b/tools/grit/grit/gather/policy_json.py
index 825e713..6e67212 100644
--- a/tools/grit/grit/gather/policy_json.py
+++ b/tools/grit/grit/gather/policy_json.py
@@ -57,15 +57,9 @@
     if example_text == []:
       # In such cases the original text is okay for an example.
       example_text = text
-
-    replacedText = self.Escape(''.join(text).strip())
-    replacedText = replacedText.replace('$1', self._config['app_name'])
-    replacedText = replacedText.replace('$2', self._config['os_name'])
-    replacedText = replacedText.replace('$3', self._config['frame_name'])
-
     msg.AppendPlaceholder(tclib.Placeholder(
         placeholder.attributes['name'].value,
-        replacedText,
+        self.Escape(''.join(text).strip()),
         ''.join(example_text).strip()))
 
   def _ParseMessage(self, string, desc):
@@ -299,21 +293,3 @@
 
   def Escape(self, text):
     return json.dumps(text, ensure_ascii=False)[1:-1]
-
-  def SetDefines(self, defines):
-    if '_chromium' in defines:
-      self._config = {
-        'build': 'chromium',
-        'app_name': 'Chromium',
-        'frame_name': 'Chromium Frame',
-        'os_name': 'Chromium OS',
-      }
-    elif '_google_chrome' in defines:
-      self._config = {
-        'build': 'chrome',
-        'app_name': 'Google Chrome',
-        'frame_name': 'Google Chrome Frame',
-        'os_name': 'Google Chrome OS',
-      }
-    else:
-      raise Exception('Unknown build')
diff --git a/tools/grit/grit/gather/policy_json_unittest.py b/tools/grit/grit/gather/policy_json_unittest.py
index 5fb3b5c..187dac1c 100755
--- a/tools/grit/grit/gather/policy_json_unittest.py
+++ b/tools/grit/grit/gather/policy_json_unittest.py
@@ -272,23 +272,20 @@
         "messages": {}
 }"""
     gatherer = policy_json.PolicyJson(StringIO.StringIO(original))
-    gatherer.SetDefines({'_google_chrome': True})
     gatherer.Parse()
     self.failUnless(len(gatherer.GetCliques()) == 1)
-    expected = json.loads(re.sub('<ph.*ph>', 'Google Chrome', original))
-    result = json.loads(gatherer.Translate('en'))
+    expected = json.loads(re.sub('<ph.*ph>', '$1', original))
     self.failUnless(expected == json.loads(gatherer.Translate('en')))
     self.failUnless(gatherer.GetCliques()[0].translateable)
     msg = gatherer.GetCliques()[0].GetMessage()
     self.failUnless(len(msg.GetPlaceholders()) == 1)
     ph = msg.GetPlaceholders()[0]
-    self.failUnless(ph.GetOriginal() == 'Google Chrome')
+    self.failUnless(ph.GetOriginal() == '$1')
     self.failUnless(ph.GetPresentation() == 'PRODUCT_NAME')
     self.failUnless(ph.GetExample() == 'Google Chrome')
 
   def testGetDescription(self):
     gatherer = policy_json.PolicyJson({})
-    gatherer.SetDefines({'_google_chrome': True})
     self.assertEquals(
         gatherer._GetDescription({'name': 'Policy1'}, 'policy', None, 'desc'),
         'Description of the policy named Policy1')
diff --git a/tools/mb/mb.py b/tools/mb/mb.py
index 5f89146..77b12f3 100755
--- a/tools/mb/mb.py
+++ b/tools/mb/mb.py
@@ -1283,11 +1283,10 @@
       ]
     elif test_type == 'script':
       cmdline = []
-      # If we're testing a CrOS simplechrome build, assume we need to launch a
-      # VM first. So prepend the command to run with the VM launcher.
-      # TODO(bpastene): Differentiate between CrOS VM and hardware tests.
+      # If we're testing a CrOS simplechrome build, assume we need to prepare a
+      # DUT for testing. So prepend the command to run with the test wrapper.
       if is_simplechrome:
-        cmdline = [os.path.join('bin', 'launch_cros_vm')]
+        cmdline = [os.path.join('bin', 'cros_test_wrapper')]
       cmdline += [
           '../../testing/test_env.py',
           '../../' + self.ToSrcRelPath(isolate_map[target]['script'])
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 698bd69b9..907dd0e 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -294,7 +294,6 @@
 
       'Site Isolation Android': 'android_release_bot_minimal_symbols_arm64',
       'VR Linux': 'vr_release_bot',
-      'linux-tcmalloc-rel': 'tcmalloc_release_bot',
       'Win 10 Fast Ring': 'release_trybot',
       'win-annotator-rel': 'release_bot',
       'win-autofill-captured-sites-rel': 'release_bot',
@@ -941,7 +940,7 @@
     ],
 
     'android_cronet_debug_static_bot_arm_no_neon': [
-      'android', 'cronet', 'debug_static_bot', 'arm_no_neon',
+      'android', 'cronet', 'debug_static_bot', 'arm_no_neon', 'release_java',
     ],
 
     'android_cronet_debug_static_bot_x86': [
@@ -952,14 +951,6 @@
       'android', 'cronet', 'debug_static_bot', 'arm64',
     ],
 
-    'android_cronet_debug_static_bot_arm_no_neon': [
-      'android', 'cronet', 'debug_static_bot', 'arm_no_neon',
-    ],
-
-    'android_cronet_debug_static_bot_x86': [
-      'android', 'cronet', 'debug_static_bot', 'x86',
-    ],
-
     'android_cronet_release_bot_minimal_symbols_arm64': [
       'android', 'cronet', 'official_optimize', 'release_bot', 'minimal_symbols', 'arm64',
       'strip_debug_info',
@@ -1849,10 +1840,6 @@
       'release_bot', 'x86', 'minimal_symbols', 'no_clang', 'use_cxx11',
     ],
 
-    'tcmalloc_release_bot': [
-      'tcmalloc', 'release_bot',
-    ],
-
     'tsan_disable_nacl_debug_bot': [
       'tsan', 'disable_nacl', 'debug_bot',
     ],
@@ -2299,6 +2286,10 @@
       'mixins': ['release', 'static', 'goma'],
     },
 
+    'release_java': {
+      'gn_args': 'is_java_debug=false',
+    },
+
     'release_trybot': {
       'mixins': ['release_bot', 'minimal_symbols', 'dcheck_always_on'],
     },
@@ -2343,10 +2334,6 @@
       'gn_args': 'win_linker_timing=true',
     },
 
-    'tcmalloc': {
-      'gn_args': 'use_new_tcmalloc=true',
-    },
-
     'resource_whitelisting': {
       'gn_args': 'enable_resource_whitelist_generation=true',
     },
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 184c98b..0b6bad9 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -21319,8 +21319,26 @@
   <owner>dfried@chromium.org</owner>
   <description>
     The user opened a bookmark from the application menu at the top of the
-    screen on, for example, MacOS. Distinguished from launching from the
-    wrench/app menu or the bookmarks bar.
+    screen on macOS. Distinguished from launching from the wrench/app menu or
+    the bookmarks bar.
+  </description>
+</action>
+
+<action name="TopMenu_History_RecentlyClosed">
+  <owner>dfried@chromium.org</owner>
+  <description>
+    The user opened a link from the Recently Closed section in the application
+    menu at the top of the screen on macOS. Distinguished from launching from
+    the wrench/app menu.
+  </description>
+</action>
+
+<action name="TopMenu_History_RecentlyVisited">
+  <owner>dfried@chromium.org</owner>
+  <description>
+    The user opened a link from the Recently Visited section in the application
+    menu at the top of the screen on macOS. Distinguished from launching from
+    the wrench/app menu.
   </description>
 </action>
 
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 0dac4e6..ce0686b 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -14668,6 +14668,7 @@
   <int value="7" label="DANGEROUS_HOST"/>
   <int value="8" label="POTENTIALLY_UNWANTED"/>
   <int value="9" label="WHITELISTED_BY_POLICY"/>
+  <int value="10" label="ASYNC_SCANNING"/>
 </enum>
 
 <enum name="DownloadLocationDialogResult">
@@ -17368,6 +17369,7 @@
   <int value="569" label="DeviceWebUsbAllowDevicesForUrls"/>
   <int value="570" label="UserFeedbackAllowed"/>
   <int value="571" label="DevicePowerwashAllowed"/>
+  <int value="572" label="ExternalPrintServers"/>
 </enum>
 
 <enum name="EnterprisePolicyInvalidations">
@@ -23842,6 +23844,7 @@
   <int value="2951" label="CredentialManagerGetSuccessWithUVM"/>
   <int value="2952" label="DiscardInputEventToMovingIframe"/>
   <int value="2953" label="SignedExchangeSubresourcePrefetch"/>
+  <int value="2954" label="BasicCardType"/>
 </enum>
 
 <enum name="FeaturePolicyAllowlistType">
@@ -27675,6 +27678,7 @@
   <int value="6" label="kGLImplementationMockGL)"/>
   <int value="7" label="kGLImplementationStubGL"/>
   <int value="8" label="kGLImplementationDisabled"/>
+  <int value="9" label="kGLImplementationEGLANGLE"/>
 </enum>
 
 <enum name="GoogleCaptchaEvent">
@@ -49916,7 +49920,9 @@
   <int value="61" label="InternalContentCapture"/>
   <int value="62" label="MainThreadTaskQueueMemoryPurge"/>
   <int value="63" label="InternalNavigation"/>
-  <int value="64" label="InternalContinueScriptLoading"/>
+  <int value="64" label="InternalFreezableIPC"/>
+  <int value="65" label="InternalContinueScriptLoading"/>
+  <int value="66" label="kWebLocks"/>
 </enum>
 
 <enum name="RendererSchedulerTaskUseCase">
@@ -51134,6 +51140,7 @@
   <int value="4" label="DANGEROUS_HOST"/>
   <int value="5" label="POTENTIALLY_UNWANTED"/>
   <int value="6" label="WHITELISTED_BY_POLICY"/>
+  <int value="7" label="ASYNC_SCANNING"/>
 </enum>
 
 <enum name="SBClientDownloadExtensions">
@@ -53153,6 +53160,9 @@
 </enum>
 
 <enum name="SigninRequestHeaderOperation">
+  <obsolete>
+    Removed 2019-07
+  </obsolete>
   <int value="0" label="Header Added"/>
   <int value="1" label="Header Removed"/>
 </enum>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index eac29bb3..415bf75 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -2461,7 +2461,7 @@
 </histogram>
 
 <histogram name="Android.ManageSpace.ClearUnimportantTime" units="ms"
-    expires_after="2019-06-26">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <owner>costan@chromium.org</owner>
   <summary>
@@ -4258,8 +4258,10 @@
   </summary>
 </histogram>
 
-<histogram name="Apps.AppListAppMovingType" enum="AppListAppMovingType">
-  <owner>weidongg@chromium.org</owner>
+<histogram name="Apps.AppListAppMovingType" enum="AppListAppMovingType"
+    expires_after="M92">
+  <owner>mmourgos@chromium.org</owner>
+  <owner>newcomer@chromium.org</owner>
   <summary>
     The different ways to move an app in app list's apps grid. Logged when the
     app moving succeeds.
@@ -5059,16 +5061,18 @@
   </summary>
 </histogram>
 
-<histogram name="Apps.NumberOfPages" units="page(s)">
-  <owner>weidongg@chromium.org</owner>
+<histogram name="Apps.NumberOfPages" units="page(s)" expires_after="M92">
+  <owner>mmourgos@chromium.org</owner>
+  <owner>newcomer@chromium.org</owner>
   <summary>
     The number of pages that users have in the top level apps grid of their
     Launcher. This metric is recorded every time the launcher is shown.
   </summary>
 </histogram>
 
-<histogram name="Apps.NumberOfPagesNotFull" units="page(s)">
-  <owner>weidongg@chromium.org</owner>
+<histogram name="Apps.NumberOfPagesNotFull" units="page(s)" expires_after="M92">
+  <owner>mmourgos@chromium.org</owner>
+  <owner>newcomer@chromium.org</owner>
   <summary>
     The number of pages that are not full in the top level apps grid of
     Launcher. This metric is recorded every time the launcher is shown.
@@ -5076,9 +5080,10 @@
 </histogram>
 
 <histogram name="Apps.PaginationTransition.AnimationSmoothness" units="%"
-    expires_after="M77">
+    expires_after="M92">
 <!-- Name completed by histogram_suffixes name="TabletOrClamshellMode" -->
 
+  <owner>newcomer@chromium.org</owner>
   <owner>wutao@chromium.org</owner>
   <summary>
     Base name is deprecated as of 3/2019 in favor of
@@ -5194,8 +5199,9 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.AppShortcuts.BuildMenuTime" units="ms">
-  <owner>warx@chromium.org</owner>
+<histogram name="Arc.AppShortcuts.BuildMenuTime" units="ms" expires_after="M92">
+  <owner>mmourgos@chromium.org</owner>
+  <owner>newcomer@chromium.org</owner>
   <summary>
     Record the time to build ARC app shortcut items on menu model. We get the
     needed metadata from Android and decode icons in the utility process. It is
@@ -6354,8 +6360,9 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.PersistentWindow.NumOfWindowsRestored" expires_after="M77">
-  <owner>warx@chromium.org</owner>
+<histogram name="Ash.PersistentWindow.NumOfWindowsRestored" expires_after="M82">
+  <owner>zentaro@chromium.org</owner>
+  <owner>maybelle@chromium.org</owner>
   <summary>
     The number of windows restored in multi-display scenario, such as due to
     disconnecting and reconnecting display, enabling and disabling mirror mode,
@@ -6397,8 +6404,9 @@
 </histogram>
 
 <histogram name="Ash.PowerButtonScreenshot.DelayBetweenAccelKeyPressed"
-    units="ms" expires_after="M77">
-  <owner>warx@chromium.org</owner>
+    units="ms" expires_after="M82">
+  <owner>zentaro@chromium.org</owner>
+  <owner>maybelle@chromium.org</owner>
   <summary>
     Record the delay when power button and volume down key are both pressed,
     which indicates user might want to use accelerator to take screenshot. This
@@ -6972,8 +6980,8 @@
 </histogram>
 
 <histogram name="Ash.Wallpaper.ColorExtractionResult2"
-    enum="WallpaperColorExtractionResult">
-  <owner>warx@chromium.org</owner>
+    enum="WallpaperColorExtractionResult" expires_after="M92">
+  <owner>newcomer@chromium.org</owner>
   <owner>tbuckley@chromium.org</owner>
   <summary>
     Tracks the success rate for wallpaper color extraction. Recorded each time
@@ -8846,7 +8854,7 @@
 </histogram>
 
 <histogram name="AutocompleteActionPredictor.DatabaseAction"
-    enum="AutocompleteActionPredictorDatabaseAction" expires_after="M77">
+    enum="AutocompleteActionPredictorDatabaseAction" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <summary>
     Trackes the number of times something is added, removed, or deleted from the
@@ -8862,7 +8870,7 @@
   </summary>
 </histogram>
 
-<histogram name="AutocompleteActionPredictor.MatchIsInDb" expires_after="M77">
+<histogram name="AutocompleteActionPredictor.MatchIsInDb" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <summary>
     A boolean that indicates if the autocomplete suggestion under consideration
@@ -12361,6 +12369,9 @@
 <histogram name="Blink.Canvas.GPUAccelerated2DCanvasDisableDeferralReason"
     enum="CanvasGPUAccelerated2DCanvasDisableDeferralReason"
     expires_after="2019-12-31">
+  <obsolete>
+    Canvas doesn't disable deferral anymore since July 2019.
+  </obsolete>
   <owner>fserb@chromium.org</owner>
   <owner>davidqu@chromium.org</owner>
   <summary>
@@ -14584,6 +14595,12 @@
 
 <histogram name="BlinkGC.SlowIncrementalMarkingFinalize.AtomicPhaseMarking"
     units="ms" expires_after="M77">
+  <obsolete>
+    Deprecated 07/2019. Data gathering finished with the result that slow
+    marking finalization was mostly caused by visiting DOM wrappers or premature
+    finalization.
+  </obsolete>
+  <owner>mlippautz@chromium.org</owner>
   <owner>oilpan-reviews@chromium.org</owner>
   <summary>
     Duration of finishing marking the transitive closure of objects during the
@@ -14593,6 +14610,12 @@
 </histogram>
 
 <histogram name="BlinkGC.SlowIncrementalMarkingFinalize.EagerSweep" units="ms">
+  <obsolete>
+    Deprecated 07/2019. Data gathering finished with the result that slow
+    marking finalization was mostly caused by visiting DOM wrappers or premature
+    finalization.
+  </obsolete>
+  <owner>mlippautz@chromium.org</owner>
   <owner>oilpan-reviews@chromium.org</owner>
   <summary>
     Duration of time taken to run eager sweep finalizers finalizers. Only
@@ -14602,7 +14625,13 @@
 
 <histogram
     name="BlinkGC.SlowIncrementalMarkingFinalize.IncrementalMarkingFinalize"
-    units="ms" expires_after="M78">
+    units="ms" expires_after="M77">
+  <obsolete>
+    Deprecated 07/2019. Data gathering finished with the result that slow
+    marking finalization was mostly caused by visiting DOM wrappers or premature
+    finalization.
+  </obsolete>
+  <owner>mlippautz@chromium.org</owner>
   <owner>oilpan-reviews@chromium.org</owner>
   <summary>
     Duration of time for incremental marking finalization. Only recorded when
@@ -14612,6 +14641,12 @@
 
 <histogram name="BlinkGC.SlowIncrementalMarkingFinalize.InvokePreFinalizers"
     units="ms" expires_after="M77">
+  <obsolete>
+    Deprecated 07/2019. Data gathering finished with the result that slow
+    marking finalization was mostly caused by visiting DOM wrappers or premature
+    finalization.
+  </obsolete>
+  <owner>mlippautz@chromium.org</owner>
   <owner>oilpan-reviews@chromium.org</owner>
   <summary>
     Duration of time taken to invoke pre finalizers. Only recorded when
@@ -14621,6 +14656,12 @@
 
 <histogram name="BlinkGC.SlowIncrementalMarkingFinalize.MarkWeakProcessing"
     units="ms" expires_after="M77">
+  <obsolete>
+    Deprecated 07/2019. Data gathering finished with the result that slow
+    marking finalization was mostly caused by visiting DOM wrappers or premature
+    finalization.
+  </obsolete>
+  <owner>mlippautz@chromium.org</owner>
   <owner>oilpan-reviews@chromium.org</owner>
   <summary>
     Duration of time taken for weak processing. Only recorded when incremental
@@ -14630,7 +14671,13 @@
 
 <histogram
     name="BlinkGC.SlowIncrementalMarkingFinalize.VisitCrossThreadPersistents"
-    units="ms" expires_after="M78">
+    units="ms" expires_after="M77">
+  <obsolete>
+    Deprecated 07/2019. Data gathering finished with the result that slow
+    marking finalization was mostly caused by visiting DOM wrappers or premature
+    finalization.
+  </obsolete>
+  <owner>mlippautz@chromium.org</owner>
   <owner>oilpan-reviews@chromium.org</owner>
   <summary>
     Duration of time taken to visit cross thread persistents. Only recorded when
@@ -14640,6 +14687,12 @@
 
 <histogram name="BlinkGC.SlowIncrementalMarkingFinalize.VisitDOMWrappers"
     units="ms" expires_after="M77">
+  <obsolete>
+    Deprecated 07/2019. Data gathering finished with the result that slow
+    marking finalization was mostly caused by visiting DOM wrappers or premature
+    finalization.
+  </obsolete>
+  <owner>mlippautz@chromium.org</owner>
   <owner>oilpan-reviews@chromium.org</owner>
   <summary>
     Duration of time taken to visit DOM wrappers. Only recorded when incremental
@@ -15658,8 +15711,9 @@
 </histogram>
 
 <histogram name="BookmarkManager.CommandExecutedFromKeyboard"
-    enum="BookmarkManagerCommand" expires_after="M77">
+    enum="BookmarkManagerCommand" expires_after="2020-06-01">
   <owner>calamity@chromium.org</owner>
+  <owner>johntlee@chromium.org</owner>
   <summary>
     Logs when a keyboard shortcut triggers a command in the bookmark manager.
 
@@ -16686,8 +16740,9 @@
 </histogram>
 
 <histogram name="CaptivePortal.DetectionResultSincePortal"
-    enum="BooleanPresent">
-  <owner>warx@chromium.org</owner>
+    enum="BooleanPresent" expires_after="M92">
+  <owner>mmourgos@chromium.org</owner>
+  <owner>newcomer@chromium.org</owner>
   <summary>
     Within one minute of the default network reporting a portal network, if we
     see an offline detection result, it is likely the client got blacklisted.
@@ -16826,14 +16881,20 @@
   </summary>
 </histogram>
 
-<histogram name="Cast.Channel.Certificate" enum="CastCertificateStatus">
+<histogram name="Cast.Channel.Certificate" enum="CastCertificateStatus"
+    expires_after="never">
+<!-- expires-never: Used for Cast device health monitoring. -->
+
   <owner>ryanchung@google.com</owner>
   <summary>
     Records the result of the Cast certificate verification on the Cast sender.
   </summary>
 </histogram>
 
-<histogram name="Cast.Channel.Nonce" enum="CastNonceStatus" expires_after="M77">
+<histogram name="Cast.Channel.Nonce" enum="CastNonceStatus"
+    expires_after="never">
+<!-- expires-never: Used for Cast device health monitoring. -->
+
   <owner>ryanchung@google.com</owner>
   <summary>
     Records whether the correct nonce challenge was in the Cast receiver's
@@ -16842,7 +16903,9 @@
 </histogram>
 
 <histogram name="Cast.Channel.Signature" enum="CastSignatureStatus"
-    expires_after="M77">
+    expires_after="never">
+<!-- expires-never: Used for Cast device health monitoring. -->
+
   <owner>ryanchung@google.com</owner>
   <summary>
     Records whether the signature returned by the Cast receiver is verifiable
@@ -27665,8 +27728,9 @@
 </histogram>
 
 <histogram name="DisplayManager.MirroringDisplayCountRanges"
-    enum="MultiDisplayModeDisplayCountRanges">
-  <owner>weidongg@chromium.org</owner>
+    enum="MultiDisplayModeDisplayCountRanges" expires_after="M82">
+  <owner>zentaro@chromium.org</owner>
+  <owner>maybelle@chromium.org</owner>
   <summary>
     The number of displays connected to the device that are in software or
     hardware mirror mode. This is emitted once when the normal or mixed mirror
@@ -27675,8 +27739,10 @@
   </summary>
 </histogram>
 
-<histogram name="DisplayManager.MirrorModeTypes" enum="DisplayMirrorModeTypes">
-  <owner>weidongg@chromium.org</owner>
+<histogram name="DisplayManager.MirrorModeTypes" enum="DisplayMirrorModeTypes"
+    expires_after="M82">
+  <owner>zentaro@chromium.org</owner>
+  <owner>maybelle@chromium.org</owner>
   <summary>
     The types of mirror mode in which the displays connected to the device are
     in. This is emitted once when the normal or mixed mirror mode is enabled
@@ -40501,7 +40567,7 @@
 </histogram>
 
 <histogram name="Extensions.LoadCreationFlags" enum="ExtensionCreationFlags"
-    expires_after="M77">
+    expires_after="2020-06-01">
   <owner>calamity@chromium.org</owner>
   <summary>
     The creation flags of all extensions loaded at profile open grouped by
@@ -41409,8 +41475,10 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.ResourceDirectoryTimestampQueryLatency" units="ms"
-    expires_after="M77">
+<histogram name="Extensions.ResourceDirectoryTimestampQueryLatency" units="ms">
+  <obsolete>
+    Stopped recording 2019-07. Data no longer needed.
+  </obsolete>
   <owner>extensions-core@chromium.org</owner>
   <summary>
     The initialization latency (in milliseconds) introduced to each extension
@@ -43906,7 +43974,7 @@
 </histogram>
 
 <histogram name="FirstRun.NewUserExperience.NtpBackgroundInteraction"
-    enum="NuxNtpBackgroundInteractions" expires_after="M77">
+    enum="NuxNtpBackgroundInteractions" expires_after="M80">
   <owner>hcarmona@chromium.org</owner>
   <owner>johntlee@chromium.org</owner>
   <summary>
@@ -43919,7 +43987,7 @@
 </histogram>
 
 <histogram name="FirstRun.NewUserExperience.NtpBackgroundLoadTime" units="ms"
-    expires_after="M77">
+    expires_after="M80">
   <owner>hcarmona@chromium.org</owner>
   <owner>johntlee@chromium.org</owner>
   <summary>
@@ -46435,15 +46503,47 @@
   </summary>
 </histogram>
 
-<histogram name="Gpu.MetalProxy.NewLibraryTime" units="ms">
+<histogram name="Gpu.MetalProxy.NewLibraryAttempt" expires_after="M78">
   <owner>ccameron@chromium.org</owner>
-  <summary>The time that it takes to create a new MTLLibrary.</summary>
+  <owner>graphics-dev@chromium.org</owner>
+  <summary>
+    Creating a new MTLLibrary will automatically retry if its callback is not
+    invoked within a short timeframe. This records the attempt number whose
+    callback was executed first. Recorded after every call to -[MTLDeviceProxy
+    newLibraryWithSource:] completes.
+  </summary>
 </histogram>
 
-<histogram name="Gpu.MetalProxy.NewRenderPipelineStateTime" units="ms">
+<histogram name="Gpu.MetalProxy.NewLibraryTime" units="ms" expires_after="M78">
   <owner>ccameron@chromium.org</owner>
+  <owner>graphics-dev@chromium.org</owner>
   <summary>
-    The time that it takes to create a new MTLRenderPipelineState.
+    The time that it takes to create a new MTLLibrary, including all retries.
+    Recorded after every call to -[MTLDeviceProxy newLibraryWithSource:]
+    completes.
+  </summary>
+</histogram>
+
+<histogram name="Gpu.MetalProxy.NewRenderPipelineStateAttempt"
+    expires_after="M78">
+  <owner>ccameron@chromium.org</owner>
+  <owner>graphics-dev@chromium.org</owner>
+  <summary>
+    Creating a new MTLRenderPipelineState will automatically retry if its
+    callback is not invoked within a short timeframe. This records the attempt
+    number whose callback was executed first. Recorded after every call to
+    -[MTLDeviceProxy newRenderPipelineStateWithDescriptor:] completes.
+  </summary>
+</histogram>
+
+<histogram name="Gpu.MetalProxy.NewRenderPipelineStateTime" units="ms"
+    expires_after="M78">
+  <owner>ccameron@chromium.org</owner>
+  <owner>graphics-dev@chromium.org</owner>
+  <summary>
+    The time that it takes to create a new MTLRenderPipelineState, including all
+    retries. Recorded after every call to -[MTLDeviceProxy
+    newRenderPipelineStateWithDescriptor:] completes.
   </summary>
 </histogram>
 
@@ -47687,7 +47787,7 @@
 </histogram>
 
 <histogram name="History.ExpireVisits.GetRedirectsDurationPercentage" units="%"
-    expires_after="M77">
+    expires_after="M90">
   <owner>calamity@chromium.org</owner>
   <summary>
     The percentage of time taken in ExpireHistoryBackend::ExpireVisits for
@@ -47696,7 +47796,7 @@
 </histogram>
 
 <histogram name="History.ExpireVisits.TotalDuration" units="ms"
-    expires_after="M77">
+    expires_after="M90">
   <owner>calamity@chromium.org</owner>
   <summary>
     The time taken to expire a list of visits. This is not scaled to the number
@@ -48280,8 +48380,9 @@
 </histogram>
 
 <histogram name="HostedAppFrame.WrenchMenu.MenuAction" enum="WrenchMenuAction"
-    expires_after="M77">
+    expires_after="M90">
   <owner>calamity@chromium.org</owner>
+  <owner>alancutter@chromium.org</owner>
   <summary>
     Number of times that each menu item is clicked from the hosted app window
     menu button.
@@ -52784,7 +52885,7 @@
   </summary>
 </histogram>
 
-<histogram name="LevelDBWrapper.CommitDelay" units="ms" expires_after="M77">
+<histogram name="LevelDBWrapper.CommitDelay" units="ms" expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     Delay between the browser process receiving changes and those changes being
@@ -52935,7 +53036,7 @@
 </histogram>
 
 <histogram name="LoadingPredictor.PreconnectLearningRedirectStatus"
-    enum="ResourcePrefetchPredictorRedirectStatus" expires_after="M77">
+    enum="ResourcePrefetchPredictorRedirectStatus" expires_after="M82">
   <owner>alexilin@chromium.org</owner>
   <summary>
     When the prefetch predictor has origins in the local database for a given
@@ -53146,7 +53247,7 @@
 </histogram>
 
 <histogram name="LocalStorageContext.CachePurgedInKB" units="KB"
-    expires_after="M77">
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     Total size of the HTML5 LocalStorage browser-side cache purged in KB when
@@ -53155,7 +53256,7 @@
 </histogram>
 
 <histogram name="LocalStorageContext.CacheSizeInKB" units="KB"
-    expires_after="M77">
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     Total size of the HTML5 LocalStorage databases in KB in the browser-side
@@ -53164,14 +53265,15 @@
 </histogram>
 
 <histogram name="LocalStorageContext.CommitResult" enum="LevelDBStatus"
-    expires_after="M77">
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The result of an attempt to commit localstorage data to the database.
   </summary>
 </histogram>
 
-<histogram name="LocalStorageContext.DatabaseOpenError" enum="LevelDBStatus">
+<histogram name="LocalStorageContext.DatabaseOpenError" enum="LevelDBStatus"
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The result of a failed attempt to open a LevelDB database for LocalStorage.
@@ -53179,7 +53281,7 @@
 </histogram>
 
 <histogram name="LocalStorageContext.DatabaseOpenError.Disk"
-    enum="LevelDBStatus" expires_after="M77">
+    enum="LevelDBStatus" expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The result of a failed attempt to open a LevelDB database for LocalStorage
@@ -53188,7 +53290,7 @@
 </histogram>
 
 <histogram name="LocalStorageContext.DatabaseOpenError.Memory"
-    enum="LevelDBStatus">
+    enum="LevelDBStatus" expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The result of a failed attempt to open a LevelDB database for LocalStorage
@@ -53197,7 +53299,7 @@
 </histogram>
 
 <histogram name="LocalStorageContext.DestroyDBResult" enum="LevelDBStatus"
-    expires_after="M77">
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The result of attempting to delete the LocalStorage database.
@@ -53205,7 +53307,7 @@
 </histogram>
 
 <histogram name="LocalStorageContext.DirectoryOpenError"
-    enum="PlatformFileError" expires_after="M77">
+    enum="PlatformFileError" expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The reason opening a directory for the LevelDB database that backs
@@ -53213,7 +53315,8 @@
   </summary>
 </histogram>
 
-<histogram name="LocalStorageContext.MapLoadError" enum="LevelDBStatus">
+<histogram name="LocalStorageContext.MapLoadError" enum="LevelDBStatus"
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The reason loading an initial snapshot of the localstorage data for an
@@ -53222,7 +53325,7 @@
 </histogram>
 
 <histogram name="LocalStorageContext.MigrationFixUpNeeded" enum="Boolean"
-    expires_after="M77">
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     Whether or not any fixes needed to be made to localstorage data, as a result
@@ -53231,7 +53334,8 @@
   </summary>
 </histogram>
 
-<histogram name="LocalStorageContext.OnConnectionDestroyed" enum="Boolean">
+<histogram name="LocalStorageContext.OnConnectionDestroyed" enum="Boolean"
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <owner>dullweber@chromium.org</owner>
   <summary>
@@ -53240,7 +53344,7 @@
 </histogram>
 
 <histogram name="LocalStorageContext.OpenError" enum="LocalStorageOpenError"
-    expires_after="M77">
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The reason opening the LevelDB database that backs LocalStorage failed.
@@ -53248,7 +53352,7 @@
 </histogram>
 
 <histogram base="true" name="LocalStorageContext.OpenResultAfter"
-    enum="LocalStorageOpenError">
+    enum="LocalStorageOpenError" expires_after="M87">
 <!-- Name completed by histogram_suffixes name="LocalStorageContextOpenReasons" -->
 
   <owner>mek@chromium.org</owner>
@@ -53258,7 +53362,7 @@
 </histogram>
 
 <histogram name="LocalStorageContext.ReadVersionError" enum="LevelDBStatus"
-    expires_after="M77">
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The reason reading the schema version of the LocalStorage database failed.
@@ -56445,7 +56549,7 @@
 </histogram>
 
 <histogram name="Media.Engagement.ScoreAtPlayback" units="%"
-    expires_after="M77">
+    expires_after="M82">
   <owner>beccahughes@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -56495,7 +56599,7 @@
 
 <histogram
     name="Media.Engagement.SignificantPlayers.PlayerNotAdded.AfterFirstTime"
-    enum="InsignificantPlaybackReason" expires_after="M78">
+    enum="InsignificantPlaybackReason" expires_after="M82">
   <owner>beccahughes@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -56512,7 +56616,7 @@
 </histogram>
 
 <histogram name="Media.Engagement.SignificantPlayers.PlayerNotAdded.FirstTime"
-    enum="InsignificantPlaybackReason" expires_after="M77">
+    enum="InsignificantPlaybackReason" expires_after="M82">
   <owner>beccahughes@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -56545,6 +56649,9 @@
 
 <histogram name="Media.Engagement.URLsDeletedScoreReduction" units="%"
     expires_after="M77">
+  <obsolete>
+    Deprecated 07/2019 as no longer needed.
+  </obsolete>
   <owner>beccahughes@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -63970,7 +64077,7 @@
 </histogram>
 
 <histogram name="MojoLevelDBEnv.IOError" enum="LevelDBIOErrorMethods"
-    expires_after="M77">
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>Methods where leveldb's Mojo environment has IO errors.</summary>
 </histogram>
@@ -65742,8 +65849,9 @@
 </histogram>
 
 <histogram name="Navigation.OnBeforeUnloadOverheadTime" units="ms"
-    expires_after="M77">
-  <owner>carlosk@chromium.org</owner>
+    expires_after="M83">
+  <owner>clamy@chromium.org</owner>
+  <owner>nasko@chromium.org</owner>
   <summary>
     Overhead time spent handling the OnBeforeUnload event from the browser
     standpoint. More precisely, it is the total time between dispatch and
@@ -83230,7 +83338,7 @@
 </histogram>
 
 <histogram name="NQE.CachedNetworkQualityAvailable" enum="BooleanAvailable"
-    expires_after="M77">
+    expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -83585,7 +83693,7 @@
   </summary>
 </histogram>
 
-<histogram name="NQE.Prefs.ReadCount" units="count" expires_after="M77">
+<histogram name="NQE.Prefs.ReadCount" units="count" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -83594,7 +83702,7 @@
   </summary>
 </histogram>
 
-<histogram name="NQE.Prefs.ReadSize" units="count" expires_after="M77">
+<histogram name="NQE.Prefs.ReadSize" units="count" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -83603,7 +83711,7 @@
   </summary>
 </histogram>
 
-<histogram name="NQE.Prefs.WriteCount" units="count" expires_after="M77">
+<histogram name="NQE.Prefs.WriteCount" units="count" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -83626,6 +83734,9 @@
 
 <histogram name="NQE.RenderThreadNotified" enum="BooleanHit"
     expires_after="M77">
+  <obsolete>
+    Obsoleted in M-77.
+  </obsolete>
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -88401,8 +88512,9 @@
 </histogram>
 
 <histogram name="PageActionController.ExtensionsWithPageActions"
-    expires_after="M77">
-  <owner>finnur@chromium.org</owner>
+    expires_after="2020-12-01">
+  <owner>rdevlin.cronin@chromium.org</owner>
+  <owner>extensions-core@chromium.org</owner>
   <summary>
     The number of Extensions that have Page Actions. Measured once per startup
     per profile.
@@ -104484,6 +104596,20 @@
 </histogram>
 
 <histogram name="Profile.TimeToOpenUserManager" units="ms" expires_after="M77">
+  <obsolete>
+    Deprecated 07/2019. Replaced by Profile.TimeToOpenUserManagerUpTo1min with
+    the max time increased from 10 seconds to 1 minute.
+  </obsolete>
+  <owner>msarda@chromium.org</owner>
+  <owner>tangltom@chromium.org</owner>
+  <summary>
+    Time required to open the UserManager, from when it started to show until
+    when its javascript started executing.
+  </summary>
+</histogram>
+
+<histogram name="Profile.TimeToOpenUserManagerUpTo1min" units="ms"
+    expires_after="M82">
   <owner>msarda@chromium.org</owner>
   <owner>tangltom@chromium.org</owner>
   <summary>
@@ -104923,7 +105049,7 @@
 </histogram>
 
 <histogram name="PushMessaging.DeliveryStatus.ServiceWorkerEvent"
-    enum="ServiceWorkerStatusCode" expires_after="M77">
+    enum="ServiceWorkerStatusCode" expires_after="M87">
   <owner>peter@chromium.org</owner>
   <summary>
     When a Service Worker receives a push message, this records the precise
@@ -104932,7 +105058,7 @@
 </histogram>
 
 <histogram name="PushMessaging.GetRegistrationStatus"
-    enum="PushGetRegistrationStatus" expires_after="M77">
+    enum="PushGetRegistrationStatus" expires_after="M87">
   <owner>peter@chromium.org</owner>
   <summary>
     When a webpage asks for details about its current push messaging
@@ -105031,7 +105157,7 @@
 </histogram>
 
 <histogram name="PushMessaging.UnregistrationReason"
-    enum="PushUnregistrationReason" expires_after="M77">
+    enum="PushUnregistrationReason" expires_after="M87">
   <owner>peter@chromium.org</owner>
   <summary>
     When unregistering a website from push messaging, this records the reason
@@ -105040,7 +105166,7 @@
 </histogram>
 
 <histogram name="PushMessaging.UnregistrationStatus"
-    enum="PushUnregistrationStatus" expires_after="M77">
+    enum="PushUnregistrationStatus" expires_after="M87">
   <owner>peter@chromium.org</owner>
   <summary>
     When unregistering a website from push messaging, this records whether the
@@ -105049,7 +105175,7 @@
 </histogram>
 
 <histogram name="PushMessaging.UserVisibleStatus" enum="PushUserVisibleStatus"
-    expires_after="M77">
+    expires_after="M87">
   <owner>peter@chromium.org</owner>
   <summary>
     When a Service Worker receives a push message, this records whether it
@@ -110036,7 +110162,7 @@
 </histogram>
 
 <histogram name="ResourceScheduler.NonDelayableLastEndToNonDelayableStart"
-    units="ms" expires_after="M77">
+    units="ms" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <owner>dougarnett@chromium.org</owner>
   <summary>
@@ -110049,7 +110175,7 @@
 
 <histogram
     name="ResourceScheduler.NonDelayableLastEndToNonDelayableStart.NonDelayableNotInFlight"
-    units="ms" expires_after="M77">
+    units="ms" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <owner>dougarnett@chromium.org</owner>
   <summary>
@@ -110063,7 +110189,7 @@
 
 <histogram
     name="ResourceScheduler.NonDelayableLastStartOrEndToNonDelayableStart"
-    units="ms" expires_after="M77">
+    units="ms" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <owner>dougarnett@chromium.org</owner>
   <summary>
@@ -110076,7 +110202,7 @@
 </histogram>
 
 <histogram name="ResourceScheduler.NonDelayableLastStartToNonDelayableStart"
-    units="ms" expires_after="M77">
+    units="ms" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <owner>dougarnett@chromium.org</owner>
   <summary>
@@ -110089,7 +110215,7 @@
 
 <histogram
     name="ResourceScheduler.NonDelayableLastStartToNonDelayableStart.NonDelayableInFlight"
-    units="ms" expires_after="M77">
+    units="ms" expires_after="M82">
   <owner>tbansal@chromium.org</owner>
   <owner>dougarnett@chromium.org</owner>
   <summary>
@@ -118170,7 +118296,8 @@
   </summary>
 </histogram>
 
-<histogram name="SendTabToSelf.Sync.NotifyCount" expires_after="M84">
+<histogram name="SendTabToSelf.Sync.NotifyLocalDevice"
+    enum="SendTabToSelfNotifyLocalDevice" expires_after="M84">
   <owner>jeffreycohen@chromium.org</owner>
   <owner>tgupta@chromium.org</owner>
   <summary>
@@ -119396,7 +119523,7 @@
   </summary>
 </histogram>
 
-<histogram name="ServiceWorker.PushEvent.Time" units="ms" expires_after="M77">
+<histogram name="ServiceWorker.PushEvent.Time" units="ms" expires_after="M87">
   <owner>peter@chromium.org</owner>
   <summary>
     The time taken between dispatching a PushEvent to a Service Worker and
@@ -120918,7 +121045,7 @@
 </histogram>
 
 <histogram name="SessionStorageDatabase.Open" enum="SessionStorageDatabaseOpen"
-    expires_after="M77">
+    expires_after="M87">
   <owner>mek@chromium.org</owner>
   <owner>dmurph@chromium.org</owner>
   <summary>
@@ -123043,7 +123170,8 @@
 </histogram>
 
 <histogram name="Signin.RefreshTokenRevocationRequestProgress"
-    enum="SigninRefreshTokenRevocationRequestProgress">
+    enum="SigninRefreshTokenRevocationRequestProgress"
+    expires_after="2021-03-31">
   <owner>droger@chromium.org</owner>
   <summary>
     Tracks the progress of revocation requests for refresh tokens, and can be
@@ -123053,7 +123181,7 @@
 </histogram>
 
 <histogram name="Signin.RefreshTokenRevocationStatus"
-    enum="GaiaTokenRevocationStatus" expires_after="M77">
+    enum="GaiaTokenRevocationStatus" expires_after="2021-03-31">
   <owner>droger@chromium.org</owner>
   <owner>msarda@chromium.org</owner>
   <summary>
@@ -123063,7 +123191,12 @@
 </histogram>
 
 <histogram name="Signin.RefreshTokenRevoked.Source"
-    enum="SourceForRefreshTokenOperation" expires_after="M77">
+    enum="SourceForRefreshTokenOperation" expires_after="never">
+<!-- expires-never:  This histogram reports the source for token revocation
+operation and should therefore be logged for as long as Chrome uses OAuth 2.0
+refresh tokens to manage authentication and authorization information for
+Google accounts.-->
+
   <owner>droger@chromium.org</owner>
   <owner>msarda@chromium.org</owner>
   <summary>
@@ -123074,7 +123207,12 @@
 </histogram>
 
 <histogram name="Signin.RefreshTokenUpdated.ToInvalidToken.Source"
-    enum="SourceForRefreshTokenOperation" expires_after="M77">
+    enum="SourceForRefreshTokenOperation" expires_after="never">
+<!-- expires-never:  This histogram reports the source for invalidating the
+refresh token of the primary account. It should therefore be logged for as long
+as Chrome uses OAuth 2.0 refresh tokens to manage authentication and
+authorization information for the primary account.-->
+
   <owner>droger@chromium.org</owner>
   <owner>msarda@chromium.org</owner>
   <summary>
@@ -123088,7 +123226,12 @@
 </histogram>
 
 <histogram name="Signin.RefreshTokenUpdated.ToValidToken.Source"
-    enum="SourceForRefreshTokenOperation" expires_after="M77">
+    enum="SourceForRefreshTokenOperation" expires_after="never">
+<!-- expires-never:  This histogram reports the source for updating a refresh
+token. It should therefore be logged for as long as Chrome uses OAuth 2.0
+refresh tokens to manage authentication and authorization information for Google
+accounts .-->
+
   <owner>droger@chromium.org</owner>
   <owner>msarda@chromium.org</owner>
   <summary>
@@ -123099,6 +123242,9 @@
 
 <histogram name="Signin.RequestHeaderOperation.Dice"
     enum="SigninRequestHeaderOperation" expires_after="M77">
+  <obsolete>
+    Deprecated 2019-07, replaced with a log message.
+  </obsolete>
   <owner>msarda@chromium.org</owner>
   <summary>
     Tracks when Chrome adds or removes the Desktop Identity Consistency HTTP
@@ -123108,6 +123254,9 @@
 
 <histogram name="Signin.RequestHeaderOperation.Mirror"
     enum="SigninRequestHeaderOperation" expires_after="M77">
+  <obsolete>
+    Deprecated 2019-07, replaced with a log message.
+  </obsolete>
   <owner>msarda@chromium.org</owner>
   <summary>
     Tracks when Chrome adds or removes the the X-Chrome-Connected HTTP header to
@@ -124413,7 +124562,7 @@
 </histogram>
 
 <histogram name="SiteEngagementService.DaysSinceLastShortcutLaunch"
-    units="days" expires_after="M77">
+    units="days" expires_after="2020-06-01">
   <owner>calamity@chromium.org</owner>
   <owner>dominickn@chromium.org</owner>
   <summary>
@@ -124542,7 +124691,7 @@
 </histogram>
 
 <histogram name="SiteEngagementService.OriginsWithMaxDailyEngagement"
-    expires_after="M77">
+    expires_after="2020-06-01">
   <owner>calamity@chromium.org</owner>
   <owner>dominickn@chromium.org</owner>
   <summary>
@@ -124555,7 +124704,7 @@
 </histogram>
 
 <histogram name="SiteEngagementService.OriginsWithMaxEngagement"
-    expires_after="M77">
+    expires_after="2020-06-01">
   <owner>calamity@chromium.org</owner>
   <owner>dominickn@chromium.org</owner>
   <summary>
@@ -124568,7 +124717,7 @@
 </histogram>
 
 <histogram name="SiteEngagementService.PercentOriginsWithMaxEngagement"
-    expires_after="M77">
+    expires_after="2020-06-01">
   <owner>calamity@chromium.org</owner>
   <owner>dominickn@chromium.org</owner>
   <summary>
@@ -124580,7 +124729,7 @@
 </histogram>
 
 <histogram name="SiteEngagementService.ScoreDecayedFrom"
-    units="engagement score" expires_after="M77">
+    units="engagement score" expires_after="2020-06-01">
   <owner>calamity@chromium.org</owner>
   <owner>dominickn@chromium.org</owner>
   <summary>
@@ -128768,7 +128917,7 @@
 </histogram>
 
 <histogram name="Storage.BlacklistedImportantSites.Reason"
-    enum="ClearDataSiteBlacklistCrossedReason" expires_after="M77">
+    enum="ClearDataSiteBlacklistCrossedReason" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     This is recorded for every site that the user blacklists when they when they
@@ -128777,7 +128926,7 @@
   </summary>
 </histogram>
 
-<histogram name="Storage.Blob.Broken" enum="BooleanBroken" expires_after="M77">
+<histogram name="Storage.Blob.Broken" enum="BooleanBroken" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     If a newly constructed blob is broken. See Storage.Blob.BrokenReason for a
@@ -128786,7 +128935,7 @@
 </histogram>
 
 <histogram name="Storage.Blob.BrokenReason" enum="BlobBrokenReason"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     The reason a blob is broken, reported only for broken blobs upon
@@ -128796,7 +128945,7 @@
 </histogram>
 
 <histogram name="Storage.Blob.BuildFromStreamResult"
-    enum="BlobBuildFromStreamResult" expires_after="M77">
+    enum="BlobBuildFromStreamResult" expires_after="M87">
   <owner>mek@chromium.org</owner>
   <summary>
     The result of constructing a blob using the BlobRegistry.RegisterFromStream
@@ -128805,7 +128954,7 @@
 </histogram>
 
 <histogram name="Storage.Blob.CleanupSuccess" enum="Boolean"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     Recorded when the old blob storage directories are cleared. This occurs on
@@ -128873,7 +129022,7 @@
 </histogram>
 
 <histogram name="Storage.Blob.IDBRequestLoader.ReadError" enum="NetErrorCodes"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     The error code reported by the blob system while trying to read an IndexedDB
@@ -128945,7 +129094,7 @@
   </summary>
 </histogram>
 
-<histogram name="Storage.Blob.PageFileSize" units="KB" expires_after="M77">
+<histogram name="Storage.Blob.PageFileSize" units="KB" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     Size of a page file created for blob data by the blob storage system.
@@ -128955,7 +129104,7 @@
 </histogram>
 
 <histogram name="Storage.Blob.PagingDisabled" enum="PlatformFileError"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     Recorded when we disable paging blobs to file in the blob storage system.
@@ -128966,25 +129115,27 @@
   </summary>
 </histogram>
 
-<histogram name="Storage.Blob.RegisterBlobTime" units="ms" expires_after="M77">
-  <owner>darin@chromium.org</owner>
+<histogram name="Storage.Blob.RegisterBlobTime" units="ms" expires_after="M87">
+  <owner>dmurph@chromium.org</owner>
+  <owner>mek@chromium.org</owner>
   <summary>
-    The amount of time taken to complete the synchronous
-    BlobStorageMsg_RegisterBlob IPC.
+    The amount of time taken to complete the synchronous mojo call
+    BlobRegistry.Regsiter
   </summary>
 </histogram>
 
 <histogram name="Storage.Blob.RegisterPublicURLTime" units="ms"
-    expires_after="M77">
-  <owner>darin@chromium.org</owner>
+    expires_after="M87">
+  <owner>dmurph@chromium.org</owner>
+  <owner>mek@chromium.org</owner>
   <summary>
-    The amount of time taken to complete the synchronous
-    BlobStorageMsg_RegisterPublicURL IPC.
+    The amount of time taken to complete the synchronous mojo call
+    BlobURLStore.Register IPC.
   </summary>
 </histogram>
 
 <histogram name="Storage.Blob.RendererFileSeekFailed" enum="Boolean"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     Whether seeking within a file (in order to write a part of a blob) failed in
@@ -128993,7 +129144,7 @@
 </histogram>
 
 <histogram name="Storage.Blob.RendererFileWriteFailed" enum="Boolean"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     Whether writing part of a blob to a file failed in the renderer.
@@ -129001,7 +129152,7 @@
 </histogram>
 
 <histogram name="Storage.Blob.ReusedItem" enum="BooleanReused"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     True if we reuse an item for a blob created from using Blob.slice, recorded
@@ -129044,7 +129195,7 @@
   </summary>
 </histogram>
 
-<histogram name="Storage.Blob.TotalUnsharedSize" units="KB" expires_after="M77">
+<histogram name="Storage.Blob.TotalUnsharedSize" units="KB" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     The total amount of unique memory used to create a blob. Recorded in
@@ -129078,7 +129229,7 @@
 </histogram>
 
 <histogram name="Storage.BlobItemSize.File.Unknown" enum="BooleanUnknown"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     True if the file size on blob append is unknown (which means the full file),
@@ -129112,7 +129263,7 @@
 </histogram>
 
 <histogram name="Storage.ImportantSites.CBDChosenReason"
-    enum="ImportantSitesReason" expires_after="M77">
+    enum="ImportantSitesReason" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     When a user chooses to blacklist one or more sites when they clear browsing
@@ -129123,7 +129274,7 @@
 </histogram>
 
 <histogram name="Storage.ImportantSites.CBDChosenReasonCount" units="count"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     This records the number of reasons each important site had that the user
@@ -129132,7 +129283,7 @@
 </histogram>
 
 <histogram name="Storage.ImportantSites.CBDIgnoredReason"
-    enum="ImportantSitesReason" expires_after="M77">
+    enum="ImportantSitesReason" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     When a user chooses to blacklist one or more sites when they clear browsing
@@ -129144,7 +129295,7 @@
 </histogram>
 
 <histogram name="Storage.ImportantSites.CBDIgnoredReasonCount" units="count"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     This records the number of reasons each important site had that the user
@@ -129153,7 +129304,7 @@
 </histogram>
 
 <histogram name="Storage.ImportantSites.GeneratedReason"
-    enum="ImportantSitesReason">
+    enum="ImportantSitesReason" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     Recorded when we generate a list of important sites. This can happen when
@@ -129166,7 +129317,7 @@
 </histogram>
 
 <histogram name="Storage.ImportantSites.GeneratedReasonCount" units="count"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     This records the number of reasons qualifying a site for being 'important'.
@@ -129176,7 +129327,7 @@
 </histogram>
 
 <histogram name="Storage.ImportantSites.GenerationTime" units="ms"
-    expires_after="2019-06-26">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <owner>costan@chromium.org</owner>
   <summary>
@@ -144517,7 +144668,7 @@
 </histogram>
 
 <histogram name="WebCore.Editing.Commands" enum="MappedEditingCommands"
-    expires_after="M77">
+    expires_after="2020-07-01">
   <owner>yoichio@chromium.org</owner>
   <summary>
     Counts the number of times each Editor::Command::execute is called. This
@@ -144555,6 +144706,9 @@
 </histogram>
 
 <histogram name="WebCore.FindInPage.ScopingTime" expires_after="M77">
+  <obsolete>
+    Deprecated in M77 because we're not tracking this anymore.
+  </obsolete>
   <owner>rakina@chromium.org</owner>
   <summary>
     Records how much time it takes for find-in-page scoping over the idle task
@@ -144715,8 +144869,9 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.Database.OutstandingTransactionCount"
-    units="transactions" expires_after="M77">
-  <owner>jsbell@chromium.org</owner>
+    units="transactions" expires_after="M87">
+  <owner>dmurph@chromium.org</owner>
+  <owner>costan@chromium.org</owner>
   <summary>
     Number of outstanding transactions (running, blocked) in database when a new
     transaction is created.
@@ -145005,7 +145160,7 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.ObjectStore.Record.KeyType"
-    enum="IDBKeyType" expires_after="M77">
+    enum="IDBKeyType" expires_after="M87">
   <owner>jsbell@chromium.org</owner>
   <summary>
     The type of key (number, string, etc.) used for a record being newly stored
@@ -145129,8 +145284,9 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.PutValueSize2" units="KB"
-    expires_after="M77">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
+  <owner>costan@chromium.org</owner>
   <summary>
     The size of the IndexedDB value used in an IndexedDB object store 'put'
     operation. Recorded for every 'put' operation.
@@ -145370,7 +145526,7 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.Transaction.ReadOnly.SizeOnCommit2"
-    units="KB">
+    units="KB" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     The total temporary size of an IndexedDB ReadOnly Transaction. Since this is
@@ -145380,7 +145536,7 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.Transaction.ReadOnly.TimeActive" units="ms"
-    expires_after="M78">
+    expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     The time it takes for an IndexedDB ReadOnly Transaction to commit, starting
@@ -145404,7 +145560,7 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.Transaction.ReadWrite.SizeOnCommit2"
-    units="KB" expires_after="M77">
+    units="KB" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     The total temporary size of an IndexedDB ReadWrite Transaction. This is the
@@ -145438,7 +145594,7 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.Transaction.VersionChange.SizeOnCommit2"
-    units="KB" expires_after="M77">
+    units="KB" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     The total temporary size of an IndexedDB VersionChange Transaction. This is
@@ -145449,7 +145605,7 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.Transaction.VersionChange.TimeActive"
-    units="ms" expires_after="M77">
+    units="ms" expires_after="M87">
   <owner>dmurph@chromium.org</owner>
   <summary>
     The time it takes for an IndexedDB VersionChange Transaction to commit,
@@ -154461,6 +154617,7 @@
   <suffix name="Proceed"
       label="The user clicked through and recovered the download."/>
   <suffix name="Shown" label="The user was shown the prompt."/>
+  <affected-histogram name="Download.DownloadDangerPrompt.AsyncScanning"/>
   <affected-histogram name="Download.DownloadDangerPrompt.DangerousContent"/>
   <affected-histogram name="Download.DownloadDangerPrompt.DangerousFile"/>
   <affected-histogram name="Download.DownloadDangerPrompt.DangerousHost"/>
@@ -154470,6 +154627,7 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="DownloadDangerPromptType" separator=".">
+  <suffix name="AsyncScanning" label="File marked ASYNC_SCANNING"/>
   <suffix name="DangerousContent" label="File marked DANGEROUS_CONTENT"/>
   <suffix name="DangerousFile" label="File marked DANGEROUS_FILE"/>
   <suffix name="DangerousHost" label="File marked DANGEROUS_HOST"/>
@@ -154594,6 +154752,18 @@
   <affected-histogram name="Media.EME.Widevine"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="EmePromiseSystemCode" separator="."
+    ordering="prefix,3">
+  <suffix name="CloseSession" label="CloseSession promises only."/>
+  <suffix name="GenerateRequest" label="GenerateRequest promises only."/>
+  <suffix name="LoadSession" label="LoadSession promises only."/>
+  <suffix name="RemoveSession" label="RemoveSession promises only."/>
+  <suffix name="UpdateSession" label="UpdateSession promises only."/>
+  <affected-histogram name="Media.EME.ClearKey.SystemCode"/>
+  <affected-histogram name="Media.EME.Unknown.SystemCode"/>
+  <affected-histogram name="Media.EME.Widevine.SystemCode"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="EmeTimeToResolvePromise" separator=".">
   <suffix name="GenerateRequest" label="GenerateRequest promises only."/>
   <suffix name="LoadSession" label="LoadSession promises only."/>
diff --git a/tools/perf/chrome_telemetry_build/BUILD.gn b/tools/perf/chrome_telemetry_build/BUILD.gn
index 0818db84..55970a2 100644
--- a/tools/perf/chrome_telemetry_build/BUILD.gn
+++ b/tools/perf/chrome_telemetry_build/BUILD.gn
@@ -59,7 +59,7 @@
   if (is_chromeos && cros_board != "") {
     data_deps += [
       "//chromeos:cros_chrome_deploy",
-      "//chromeos:cros_vm_launcher",
+      "//chromeos:cros_test_wrapper",
     ]
   }
 
diff --git a/tools/polymer/polymer.gni b/tools/polymer/polymer.gni
index 7a966d4b..d1cbadd 100644
--- a/tools/polymer/polymer.gni
+++ b/tools/polymer/polymer.gni
@@ -9,6 +9,14 @@
   # TODO(dpapad): Add more such rewrites as they get discovered.
 ]
 
+common_auto_imports = [
+  "ui/webui/resources/html/polymer.html|Polymer,html",
+  "ui/webui/resources/html/cr/ui/focus_outline_manager.html|FocusOutlineManager",
+  "third_party/polymer/v1_0/components-chromium/paper-behaviors/paper-ripple-behavior.html|PaperRippleBehavior",
+
+  # TODO(dpapad): Add more auto-imports here, as needed.
+]
+
 template("polymer_modulizer") {
   action(target_name + "_module") {
     script = "//tools/polymer/polymer.py"
@@ -47,5 +55,10 @@
     if (defined(invoker.namespace_rewrites)) {
       args += invoker.namespace_rewrites
     }
+
+    args += [ "--auto_imports" ] + common_auto_imports
+    if (defined(invoker.auto_imports)) {
+      args += invoker.auto_imports
+    }
   }
 }
diff --git a/tools/polymer/polymer.py b/tools/polymer/polymer.py
index 0e7fb2b..d70a93f 100644
--- a/tools/polymer/polymer.py
+++ b/tools/polymer/polymer.py
@@ -42,6 +42,12 @@
 #     with explicitly imported dependencies in the generated JS module.
 #     For example "cr.foo.Bar|Bar" will replace all occurrences of "cr.foo.Bar"
 #     with "Bar".
+#
+#   auto_imports:
+#     A list of of auto-imports, to inform the script on which variables to
+#     import from a JS module. For example "ui/webui/foo/bar/baz.html|Foo,Bar"
+#     will result in something like "import {Foo, Bar} from ...;" when
+#     encountering any dependency to that file.
 
 import argparse
 import os
@@ -49,11 +55,111 @@
 import sys
 
 _CWD = os.getcwd()
+_ROOT = os.path.normpath(os.path.join(_CWD, '..', '..'))
 
-# Rewrite rules for removing unnecessary namespaces for example "cr.ui.Foo", to
+POLYMER_V1_DIR = 'third_party/polymer/v1_0/components-chromium/'
+POLYMER_V3_DIR = 'third_party/polymer/v3_0/components-chromium/'
+
+# Rewrite rules for replacing global namespace references like "cr.ui.Foo", to
 # "Foo" within a generated JS module. Populated from command line arguments.
 _namespace_rewrites = {}
 
+# Auto-imports map, populated from command line arguments. Specifies which
+# variables to import from a given dependency. For example this is used to
+# import |FocusOutlineManager| whenever a dependency to
+# ui/webui/resources/html/cr/ui/focus_outline_manager.html is encountered.
+_auto_imports = {}
+
+_chrome_redirects = {
+  'chrome://resources/polymer/v1_0/': POLYMER_V1_DIR,
+  'chrome://resources/html/': 'ui/webui/resources/html/',
+}
+
+_chrome_reverse_redirects = {
+  POLYMER_V3_DIR: 'chrome://resources/polymer/v3_0/',
+  'ui/webui/resources/': 'chrome://resources/',
+}
+
+
+# Helper class for converting dependencies expressed in HTML imports, to JS
+# imports. |to_js_import()| is the only public method exposed by this class.
+# Internally an HTML import path is
+#
+# 1) normalized, meaning converted from a chrome or relative URL to to an
+#    absolute path starting at the repo's root
+# 2) converted to an equivalent JS normalized path
+# 3) de-normalized, meaning converted back to a relative or chrome URL
+# 4) converted to a JS import statement
+class Dependency:
+  def __init__(self, src, dst):
+    self.html_file = src
+    self.html_path = dst
+
+    self.input_format = (
+        'chrome' if self.html_path.startswith('chrome://') else 'relative')
+    self.output_format = self.input_format
+
+    self.html_path_normalized = self._to_html_normalized()
+    self.js_path_normalized = self._to_js_normalized()
+    self.js_path = self._to_js()
+
+  def _to_html_normalized(self):
+    if self.input_format == 'chrome':
+      self.html_path_normalized = self.html_path
+      for r in _chrome_redirects:
+        if self.html_path.startswith(r):
+          self.html_path_normalized = (
+              self.html_path.replace(r, _chrome_redirects[r]))
+          break
+      return self.html_path_normalized
+
+    input_dir = os.path.relpath(os.path.dirname(self.html_file), _ROOT)
+    return os.path.normpath(os.path.join(input_dir, self.html_path))
+
+  def _to_js_normalized(self):
+    if re.match(POLYMER_V1_DIR, self.html_path_normalized):
+      return (self.html_path_normalized
+          .replace(POLYMER_V1_DIR, POLYMER_V3_DIR)
+          .replace(r'.html', '.js'))
+
+    if self.html_path_normalized == 'ui/webui/resources/html/polymer.html':
+      self.output_format = 'chrome'
+      return POLYMER_V3_DIR + 'polymer/polymer_bundled.min.js'
+
+    if re.match(r'ui/webui/resources/html/', self.html_path_normalized):
+      return (self.html_path_normalized
+          .replace(r'ui/webui/resources/html/', 'ui/webui/resources/js/')
+          .replace(r'.html', '.m.js'))
+
+    return self.html_path_normalized.replace(r'.html', '.m.js')
+
+  def _to_js(self):
+    js_path = self.js_path_normalized
+
+    if self.output_format == 'chrome':
+      for r in _chrome_reverse_redirects:
+        if self.js_path_normalized.startswith(r):
+          js_path = self.js_path_normalized.replace(
+              r, _chrome_reverse_redirects[r])
+          break
+      return js_path
+
+    input_dir = os.path.relpath(os.path.dirname(self.html_file), _ROOT)
+    relpath = os.path.relpath(self.js_path_normalized, input_dir)
+    # Prepend "./" if |relpath| refers to a relative subpath, that is not "../".
+    # This prefix is required for JS Modules paths.
+    if not relpath.startswith('.'):
+      relpath = './' + relpath
+
+    return relpath
+
+  def to_js_import(self, auto_imports):
+    if self.html_path_normalized in auto_imports:
+      imports = auto_imports[self.html_path_normalized]
+      return 'import {%s} from \'%s\';' % (', '.join(imports), self.js_path)
+
+    return 'import \'%s\';' % self.js_path
+
 
 def _extract_dependencies(html_file):
   with open(html_file, 'r') as f:
@@ -66,43 +172,10 @@
   return deps;
 
 
-def _rewrite_dependency_path(dep):
-  if re.match(r'chrome://resources/polymer/v1_0/', dep):
-    dep = dep.replace(r'/v1_0/', '/v3_0/')
-    dep = dep.replace(r'.html', '.js')
-
-  if dep.endswith('/html/polymer.html'):
-    dep = "chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js"
-
-  if re.match(r'chrome://resources/html/', dep):
-    dep = dep.replace(r'/resources/html/', 'resources/js/')
-
-  dep = dep.replace(r'.html', '.m.js')
-
-  # Prepend "./" if |dep| refers to the same folder as the processed file. This
-  # prefix is necessary for JS modules paths.
-  if not re.match('chrome://', dep) and os.path.dirname(dep) == '':
-    dep = './' + dep
-
-  return dep
-
-
-def _construct_js_import(dep):
-  if dep.endswith('polymer_bundled.min.js'):
-    return 'import {%s, %s} from \'%s\';' % ('Polymer', 'html', dep)
-  # TODO(dpapad): Figure out how to pass these from the command line, such that
-  # users of this script can pass their own default imports.
-  if dep.endswith('paper-ripple-behavior.js'):
-    return 'import {%s} from \'%s\';' % ('PaperRippleBehavior', dep)
-  if dep.endswith('focus_outline_manager.m.js'):
-    return 'import {%s} from \'%s\';' % ('FocusOutlineManager', dep)
-  else:
-    return 'import \'%s\';' % dep
-
-
 def _generate_js_imports(html_file):
-  return map(_construct_js_import,
-      map(_rewrite_dependency_path, _extract_dependencies(html_file)))
+  return map(
+      lambda dep: Dependency(html_file, dep).to_js_import(_auto_imports),
+      _extract_dependencies(html_file))
 
 
 def _extract_dom_module_id(html_file):
@@ -304,6 +377,7 @@
   parser.add_argument('--js_file', required=True)
   parser.add_argument('--html_file', required=True)
   parser.add_argument('--namespace_rewrites', required=False, nargs="*")
+  parser.add_argument('--auto_imports', required=False, nargs="*")
   parser.add_argument(
       '--html_type', choices=['dom-module', 'style-module', 'custom-style',
       'iron-iconset', 'v3-ready'],
@@ -316,6 +390,13 @@
       before, after = r.split('|')
       _namespace_rewrites[before] = after
 
+  # Extract automatic imports from arguments.
+  if args.auto_imports:
+    for entry in args.auto_imports:
+      path, imports = entry.split('|')
+      _auto_imports[path] = imports.split(',')
+
+
   in_folder = os.path.normpath(os.path.join(_CWD, args.in_folder))
   out_folder = os.path.normpath(os.path.join(_CWD, args.out_folder))
 
diff --git a/tools/polymer/polymer_test.py b/tools/polymer/polymer_test.py
index 969b1ce8..f4039f4 100755
--- a/tools/polymer/polymer_test.py
+++ b/tools/polymer/polymer_test.py
@@ -18,7 +18,8 @@
     self._out_folder = None
 
   def tearDown(self):
-    shutil.rmtree(self._out_folder)
+    if self._out_folder:
+      shutil.rmtree(self._out_folder)
 
   def _read_out_file(self, file_name):
     assert self._out_folder
@@ -29,49 +30,103 @@
     assert not self._out_folder
     self._out_folder = tempfile.mkdtemp(dir=_HERE_DIR)
     polymer.main([
-      '--in_folder', 'tests',
+      '--in_folder', os.path.join(_HERE_DIR, 'tests'),
       '--out_folder', self._out_folder,
       '--js_file',  js_file,
       '--html_file',  html_file,
       '--html_type',  html_type,
       '--namespace_rewrites',  'Polymer.PaperRippleBehavior|PaperRippleBehavior',
+      '--auto_imports',
+      'ui/webui/resources/html/polymer.html|Polymer,html',
+      'third_party/polymer/v1_0/components-chromium/paper-behaviors/paper-ripple-behavior.html|PaperRippleBehavior',
     ])
 
     actual_js = self._read_out_file(js_out_file)
-    expected_js = open(os.path.join('tests', js_file_expected), 'r').read()
+    expected_js = open(os.path.join(
+        _HERE_DIR, 'tests', js_file_expected), 'r').read()
     self.assertEquals(expected_js, actual_js)
 
   # Test case where HTML is extracted from a Polymer2 <dom-module>.
-  def testSuccess_DomModule(self):
+  def testDomModule(self):
     self._run_test(
         'dom-module', 'dom_module.html', 'dom_module.js',
         'dom_module.m.js', 'dom_module_expected.js')
 
   # Test case where HTML is extracted from a Polymer2 style module.
-  def testSuccess_StyleModule(self):
+  def testStyleModule(self):
     self._run_test(
         'style-module', 'style_module.html', 'style_module.m.js',
         'style_module.m.js', 'style_module_expected.js')
     return
 
   # Test case where HTML is extracted from a Polymer2 <custom-style>.
-  def testSuccess_CustomStyle(self):
+  def testCustomStyle(self):
     self._run_test(
         'custom-style', 'custom_style.html', 'custom_style.m.js',
         'custom_style.m.js', 'custom_style_expected.js')
 
   # Test case where HTML is extracted from a Polymer2 iron-iconset-svg file.
-  def testSuccess_IronIconset(self):
+  def testIronIconset(self):
     self._run_test(
         'iron-iconset', 'iron_iconset.html', 'iron_iconset.m.js',
         'iron_iconset.m.js', 'iron_iconset_expected.js')
 
   # Test case where the provided HTML is already in the form needed by Polymer3.
-  def testSuccess_V3Ready(self):
+  def testV3Ready(self):
     self._run_test(
         'v3-ready', 'v3_ready.html', 'v3_ready.js',
         'v3_ready.js', 'v3_ready_expected.js')
 
 
+  # Test the |Dependency| class directly, which is responsible for converting
+  # HTML imports to JS imports.
+  def testImportsHtmlToJs(self):
+    _HERE = os.path.abspath(os.path.dirname(__file__))
+    _ROOT = os.path.normpath(os.path.join(_HERE, '..', '..'))
+
+    src = os.path.join(_ROOT, 'ui/webui/resources/foo/bar/baz.html')
+
+    auto_imports = {
+      'ui/webui/resources/html/polymer.html': ['Polymer', 'html'],
+      'ui/webui/resources/html/foo.html': ['Foo'],
+    }
+
+    def assert_html_to_js(html, expected_js):
+      actual_js = polymer.Dependency(src, html).to_js_import(auto_imports)
+      self.assertEquals(expected_js, actual_js)
+
+    cases = [
+      # Relative paths cases.
+      # Case where relative path to polymer.html is used.
+      ['../../html/polymer.html',
+       'import {Polymer, html} from \'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js\';'
+      ],
+      # Case where relative path to file in the same folder is used.
+      ['foo.html', 'import \'./foo.m.js\';'],
+      # Case where relative path to file in the same subtree is used.
+      ['path/to/subfolder/foo.html', 'import \'./path/to/subfolder/foo.m.js\';'],
+      # Case where relative path to file in ui/webui/resources/html/ is used.
+      ['../../html/foo.html', 'import {Foo} from \'../../js/foo.m.js\';'],
+
+      # chrome:// paths cases.
+      # Case where absolute path to a Polymer UI element is used.
+      ['chrome://resources/polymer/v1_0/path/to/folder/foo.html',
+       'import \'chrome://resources/polymer/v3_0/path/to/folder/foo.js\';'
+      ],
+      # Case where chrome:// path to polymer.html is used.
+      ['chrome://resources/html/polymer.html',
+       'import {Polymer, html} from \'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js\';'
+      ],
+      # Case where chrome://resources/html/ path to something other than
+      # polymer.html is used.
+      ['chrome://resources/html/bar.html',
+       'import \'chrome://resources/js/bar.m.js\';'
+      ],
+    ]
+
+    for [html, js_expected] in cases:
+      assert_html_to_js(html, js_expected)
+
+
 if __name__ == '__main__':
   unittest.main()
diff --git a/tools/polymer/tests/custom_style.html b/tools/polymer/tests/custom_style.html
index d4d51287..d1093bae 100644
--- a/tools/polymer/tests/custom_style.html
+++ b/tools/polymer/tests/custom_style.html
@@ -1,4 +1,4 @@
-<link rel="import" href="../../html/polymer.html">
+<link rel="import" href="../../../ui/webui/resources/html/polymer.html">
 
 <link rel="import" href="foo.html">
 
diff --git a/tools/polymer/tests/dom_module.html b/tools/polymer/tests/dom_module.html
index 8f82197..ad3cd8a 100644
--- a/tools/polymer/tests/dom_module.html
+++ b/tools/polymer/tests/dom_module.html
@@ -1,4 +1,4 @@
-<link rel="import" href="../../html/polymer.html">
+<link rel="import" href="../../../ui/webui/resources/html/polymer.html">
 
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-behaviors/paper-ripple-behavior.html">
 <link rel="import" href="../shared_vars_css.html">
diff --git a/tools/polymer/tests/iron_iconset.html b/tools/polymer/tests/iron_iconset.html
index b6f14ee..70ca3e9 100644
--- a/tools/polymer/tests/iron_iconset.html
+++ b/tools/polymer/tests/iron_iconset.html
@@ -1,4 +1,4 @@
-<link rel="import" href="../html/polymer.html">
+<link rel="import" href="../../../ui/webui/resources/html/polymer.html">
 
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-iconset-svg/iron-iconset-svg.html">
 
diff --git a/tools/polymer/tests/style_module.html b/tools/polymer/tests/style_module.html
index f2f24f2..37d2dbe6 100644
--- a/tools/polymer/tests/style_module.html
+++ b/tools/polymer/tests/style_module.html
@@ -1,4 +1,4 @@
-<link rel="import" href="../html/polymer.html">
+<link rel="import" href="../../../ui/webui/resources/html/polymer.html">
 
 <link rel="import" href="some_other_style.html">
 
diff --git a/ui/accessibility/BUILD.gn b/ui/accessibility/BUILD.gn
index d31244ec..3739e93 100644
--- a/ui/accessibility/BUILD.gn
+++ b/ui/accessibility/BUILD.gn
@@ -49,8 +49,8 @@
     "ax_event_generator.cc",
     "ax_event_generator.h",
     "ax_export.h",
-    "ax_language_info.cc",
-    "ax_language_info.h",
+    "ax_language_detection.cc",
+    "ax_language_detection.h",
     "ax_mode.cc",
     "ax_mode.h",
     "ax_mode_observer.h",
@@ -241,7 +241,7 @@
     "ax_enum_util_unittest.cc",
     "ax_event_generator_unittest.cc",
     "ax_generated_tree_unittest.cc",
-    "ax_language_info_unittest.cc",
+    "ax_language_detection_unittest.cc",
     "ax_node_data_unittest.cc",
     "ax_node_position_unittest.cc",
     "ax_range_unittest.cc",
diff --git a/ui/accessibility/ax_language_info.cc b/ui/accessibility/ax_language_detection.cc
similarity index 79%
rename from ui/accessibility/ax_language_info.cc
rename to ui/accessibility/ax_language_detection.cc
index 72c091a2..9b11330 100644
--- a/ui/accessibility/ax_language_info.cc
+++ b/ui/accessibility/ax_language_detection.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "ui/accessibility/ax_language_info.h"
+#include "ui/accessibility/ax_language_detection.h"
 #include <algorithm>
 #include <functional>
 
@@ -31,20 +31,12 @@
 const auto kShortTextIdentifierMaxByteLength = 1000;
 }  // namespace
 
-AXLanguageInfo::AXLanguageInfo() {}
-AXLanguageInfo::~AXLanguageInfo() {}
+AXLanguageInfo::AXLanguageInfo() = default;
+AXLanguageInfo::~AXLanguageInfo() = default;
 
-AXLanguageInfoStats::AXLanguageInfoStats()
-    : top_results_valid_(false),
-      short_text_language_identifier_(kShortTextIdentifierMinByteLength,
-                                      kShortTextIdentifierMaxByteLength) {}
+AXLanguageInfoStats::AXLanguageInfoStats() : top_results_valid_(false) {}
 AXLanguageInfoStats::~AXLanguageInfoStats() = default;
 
-chrome_lang_id::NNetLanguageIdentifier&
-AXLanguageInfoStats::GetLanguageIdentifier() {
-  return language_identifier_;
-}
-
 void AXLanguageInfoStats::Add(const std::vector<std::string>& languages) {
   // Assign languages with higher probability a higher score.
   // TODO(chrishall): consider more complex scoring
@@ -103,31 +95,28 @@
   top_results_valid_ = true;
 }
 
-static void DetectLanguageForSubtreeInternal(AXNode* node, class AXTree* tree);
+AXLanguageDetectionManager::AXLanguageDetectionManager()
+    : short_text_language_identifier_(kShortTextIdentifierMinByteLength,
+                                      kShortTextIdentifierMaxByteLength) {}
+AXLanguageDetectionManager::~AXLanguageDetectionManager() = default;
 
 // Detect language for a subtree rooted at the given node.
-void DetectLanguageForSubtree(AXNode* subtree_root, class AXTree* tree) {
+void AXLanguageDetectionManager::DetectLanguageForSubtree(
+    AXNode* subtree_root) {
   TRACE_EVENT0("accessibility", "AXLanguageInfo::DetectLanguageForSubtree");
   DCHECK(subtree_root);
-  DCHECK(tree);
   if (!::switches::IsExperimentalAccessibilityLanguageDetectionEnabled()) {
-    // If feature is not enabled we still return success as we were as
-    // successful as we could have been.
     return;
   }
 
-  if (!tree->language_info_stats) {
-    tree->language_info_stats.reset(new AXLanguageInfoStats());
-  }
-
-  DetectLanguageForSubtreeInternal(subtree_root, tree);
+  DetectLanguageForSubtreeInternal(subtree_root);
 }
 
 // Detect language for a subtree rooted at the given node
 // will not check feature flag.
-static void DetectLanguageForSubtreeInternal(AXNode* node, class AXTree* tree) {
+void AXLanguageDetectionManager::DetectLanguageForSubtreeInternal(
+    AXNode* node) {
   if (node->IsText()) {
-    AXLanguageInfoStats* lang_info_stats = tree->language_info_stats.get();
     AXLanguageInfo* lang_info = node->GetLanguageInfo();
     if (!lang_info) {
       // TODO(chrishall): consider space optimisations.
@@ -142,15 +131,12 @@
       lang_info->detected_languages.clear();
     }
 
-    chrome_lang_id::NNetLanguageIdentifier& language_identifier =
-        tree->language_info_stats->GetLanguageIdentifier();
-
     // TODO(chrishall): implement strategy for nodes which are too small to get
     // reliable language detection results. Consider combination of
     // concatenation and bubbling up results.
     auto text = node->GetStringAttribute(ax::mojom::StringAttribute::kName);
 
-    const auto results = language_identifier.FindTopNMostFreqLangs(
+    const auto results = language_identifier_.FindTopNMostFreqLangs(
         text, kMaxDetectedLanguagesPerSpan);
 
     for (const auto res : results) {
@@ -162,46 +148,32 @@
         lang_info->detected_languages.push_back(res.language);
       }
     }
-    lang_info_stats->Add(lang_info->detected_languages);
+    lang_info_stats.Add(lang_info->detected_languages);
   }
 
   // TODO(chrishall): refactor this as textnodes only ever have inline text
-  // boxen as children. This means we don't need to recurse except for
+  // boxes as children. This means we don't need to recurse except for
   // inheritance which can be handled elsewhere.
   for (AXNode* child : node->children()) {
-    DetectLanguageForSubtreeInternal(child, tree);
+    DetectLanguageForSubtreeInternal(child);
   }
 }
 
-static void LabelLanguageForSubtreeInternal(AXNode* node, class AXTree* tree);
-
 // Label language for each node in the subtree rooted at the given node.
 // This relies on DetectLanguageForSubtree having already been run.
-bool LabelLanguageForSubtree(AXNode* subtree_root, class AXTree* tree) {
+void AXLanguageDetectionManager::LabelLanguageForSubtree(AXNode* subtree_root) {
   TRACE_EVENT0("accessibility", "AXLanguageInfo::LabelLanguageForSubtree");
 
   DCHECK(subtree_root);
-  DCHECK(tree);
 
   if (!::switches::IsExperimentalAccessibilityLanguageDetectionEnabled()) {
-    // If feature is not enabled we still return success as we were as
-    // successful as we could have been.
-    return true;
+    return;
   }
 
-  if (!tree->language_info_stats) {
-    // Detection has not been performed, error, the user is holding this wrong.
-    // DetectLanguageForSubtree must always be called on a given subtree before
-    // LabelLanguageForSubtree is called.
-    LOG(FATAL) << "LabelLanguageForSubtree run before DetectLanguageForSubtree";
-    return false;
-  }
-
-  LabelLanguageForSubtreeInternal(subtree_root, tree);
-  return true;
+  LabelLanguageForSubtreeInternal(subtree_root);
 }
 
-static void LabelLanguageForSubtreeInternal(AXNode* node, class AXTree* tree) {
+void AXLanguageDetectionManager::LabelLanguageForSubtreeInternal(AXNode* node) {
   AXLanguageInfo* lang_info = node->GetLanguageInfo();
 
   // lang_info is only attached by Detect when it thinks a node is interesting,
@@ -211,9 +183,8 @@
   // If the lang_info->language is already set then we have no more work to do
   // for this node.
   if (lang_info && lang_info->language.empty()) {
-    AXLanguageInfoStats* lang_info_stats = tree->language_info_stats.get();
     for (const auto& lang : lang_info->detected_languages) {
-      if (lang_info_stats->CheckLanguageWithinTop(lang)) {
+      if (lang_info_stats.CheckLanguageWithinTop(lang)) {
         lang_info->language = lang;
         break;
       }
@@ -257,12 +228,12 @@
   }
 
   for (AXNode* child : node->children()) {
-    LabelLanguageForSubtreeInternal(child, tree);
+    LabelLanguageForSubtreeInternal(child);
   }
 }
 
 std::vector<AXLanguageSpan>
-AXLanguageInfoStats::GetLanguageAnnotationForStringAttribute(
+AXLanguageDetectionManager::GetLanguageAnnotationForStringAttribute(
     const AXNode& node,
     ax::mojom::StringAttribute attr) {
   std::vector<AXLanguageSpan> language_annotation;
diff --git a/ui/accessibility/ax_language_info.h b/ui/accessibility/ax_language_detection.h
similarity index 64%
rename from ui/accessibility/ax_language_info.h
rename to ui/accessibility/ax_language_detection.h
index 9b6d485..8851290 100644
--- a/ui/accessibility/ax_language_info.h
+++ b/ui/accessibility/ax_language_detection.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef UI_ACCESSIBILITY_AX_LANGUAGE_INFO_H_
-#define UI_ACCESSIBILITY_AX_LANGUAGE_INFO_H_
+#ifndef UI_ACCESSIBILITY_AX_LANGUAGE_DETECTION_H_
+#define UI_ACCESSIBILITY_AX_LANGUAGE_DETECTION_H_
 
 #include <string>
 #include <unordered_map>
@@ -24,17 +24,27 @@
 // detect the language for spans of text within the page without relying on any
 // declared attributes.
 //
-// Language detection relies on two key data structures:
-//   AXLanguageInfo represents the local language detection data for an AXNode.
-//   AXLanguageInfoStats represents the 'global' (tree-level) language detection
-//                       data for all nodes within an AXTree.
-//
-// Language detection is separated into two use cases: page-level and
-// inner-node-level.
+// Language detection relies on four key data structures:
+//   AXLanguageInfo represents the local language detection data for all text
+//        within an AXNode.
+//   AXLanguageInfoStats records statistics about AXLanguageInfo for all AXNodes
+//        within a single AXTree, this is used to help give language detection
+//        some context to reduce false positive language assignment.
+//   AXLanguageSpan represents local language detection data for spans of text
+//        within an AXNode, this is used by sub-node level language detection.
+//   AXLanguageDetectionManager is in charge of managing all language detection
+//        context for a single AXTree.
 //
 //
-// Language detection at the page-level is implemented as a two-pass process to
-// reduce the assignment of spurious languages.
+// Language detection is currently separated into two related implementation
+// which are trying to address slightly different use cases, one operates at the
+// node level, while the other operates at the sub-node level.
+//
+//
+// Language detection at the node-level attempts to assign at most one language
+// for each AXNode in order to support mixed-language pages. Node-level language
+// detection is implemented as a two-pass process to reduce the assignment of
+// spurious languages.
 //
 // After the first pass no languages have been assigned to AXNode(s), this is
 // left to the second pass so that we can take use tree-level statistics to
@@ -52,13 +62,17 @@
 // results (AXLanguageInfo) and the global stats (AXLanguageInfoStats).
 //
 //
-// Language detection at the inner-node level is different from that at the
-// page-level because in this case, we operate on much smaller pieces of text.
-// For this use case, we would like to detect languages that may only occur
-// once throughout the entire document. Inner-node-level language detection
-// is performed by using a language identifier constructed with a byte minimum
-// of kShortTextIdentifierMinByteLength. This way, it can potentially detect the
+// Language detection at the sub-node level differs from node-level in that it
+// operates at a much finer granularity of text, potentially down to individual
+// characters in order to support mixed language sentences.
+// We would like to detect languages that may only occur once throughout the
+// entire document. Sub-node-level language detection is performed by using a
+// language identifier constructed with a byte minimum of
+// kShortTextIdentifierMinByteLength. This way, it can potentially detect the
 // language of strings that are as short as one character in length.
+//
+// The entry point for sub-nod level language detection is
+// GetLanguageAnnotationForStringAttribute.
 
 // An instance of AXLanguageInfo is used to record the detected and assigned
 // languages for a single AXNode, this data is entirely local to the AXNode.
@@ -107,8 +121,9 @@
   float probability;
 };
 
-// A single AXLanguageInfoStats instance is stored on each AXTree and represents
-// the language detection statistics for every AXNode within that AXTree.
+// A single AXLanguageInfoStats instance is stored for each AXTree and
+// represents the language detection statistics for every AXNode within that
+// AXTree.
 //
 // We rely on these tree-level statistics to avoid spurious language detection
 // assignments.
@@ -129,16 +144,6 @@
   // Check if a given language is within the top results.
   bool CheckLanguageWithinTop(const std::string& lang);
 
-  chrome_lang_id::NNetLanguageIdentifier& GetLanguageIdentifier();
-
-  // Detect and return languages for string attribute.
-  // For example, if a node has name: "My name is Fred", then calling
-  // GetLanguageAnnotationForStringAttribute(*node, ax::mojom::StringAttribute::
-  // kName) would return language detection information about "My name is Fred".
-  std::vector<AXLanguageSpan> GetLanguageAnnotationForStringAttribute(
-      const AXNode& node,
-      ax::mojom::StringAttribute attr);
-
  private:
   // Store a count of the occurrences of a given language.
   std::unordered_map<std::string, unsigned int> lang_counts_;
@@ -153,9 +158,45 @@
 
   void InvalidateTopResults();
 
-  // Populate top_results_.
   void GenerateTopResults();
 
+  DISALLOW_COPY_AND_ASSIGN(AXLanguageInfoStats);
+};
+
+// An instance of AXLanguageDetectionManager manages all the context needed for
+// language detection within a single AXTree.
+class AX_EXPORT AXLanguageDetectionManager {
+ public:
+  AXLanguageDetectionManager();
+  ~AXLanguageDetectionManager();
+
+  // Detect language for each node in the subtree rooted at the given node.
+  // This is the first pass in detection and labelling.
+  // This only detects the language, it does not label it, for that see
+  //  LabelLanguageForSubtree.
+  void DetectLanguageForSubtree(AXNode* subtree_root);
+
+  // Label language for each node in the subtree rooted at the given node.
+  // This is the second pass in detection and labelling.
+  // This will label the language, but relies on the earlier detection phase
+  // having already completed.
+  void LabelLanguageForSubtree(AXNode* subtree_root);
+
+  // Detect and return languages for string attribute.
+  // For example, if a node has name: "My name is Fred", then calling
+  // GetLanguageAnnotationForStringAttribute(*node, ax::mojom::StringAttribute::
+  // kName) would return language detection information about "My name is Fred".
+  std::vector<AXLanguageSpan> GetLanguageAnnotationForStringAttribute(
+      const AXNode& node,
+      ax::mojom::StringAttribute attr);
+
+ private:
+  // TODO(chrishall): should this be stored by pointer or value?
+  AXLanguageInfoStats lang_info_stats;
+
+  void DetectLanguageForSubtreeInternal(AXNode* subtree_root);
+  void LabelLanguageForSubtreeInternal(AXNode* subtree_root);
+
   // This language identifier is constructed with a default minimum byte length
   // of chrome_lang_id::NNetLanguageIdentifier::kMinNumBytesToConsider and is
   // used for detecting page-level languages.
@@ -166,24 +207,9 @@
   // of shorter text (e.g. one character).
   chrome_lang_id::NNetLanguageIdentifier short_text_language_identifier_;
 
-  DISALLOW_COPY_AND_ASSIGN(AXLanguageInfoStats);
+  DISALLOW_COPY_AND_ASSIGN(AXLanguageDetectionManager);
 };
 
-// Detect language for each node in the subtree rooted at the given node.
-// This is the first pass in detection and labelling.
-// This only detects the language, it does not label it, for that see
-//  LabelLanguageForSubtree.
-AX_EXPORT void DetectLanguageForSubtree(AXNode* subtree_root,
-                                        class AXTree* tree);
-
-// Label language for each node in the subtree rooted at the given node.
-// This is the second pass in detection and labelling.
-// This will label the language, but relies on the earlier detection phase
-// having already completed.
-//
-// returns boolean indicating success.
-AX_EXPORT bool LabelLanguageForSubtree(AXNode* subtree_root,
-                                       class AXTree* tree);
 }  // namespace ui
 
-#endif  // UI_ACCESSIBILITY_AX_LANGUAGE_INFO
+#endif  // UI_ACCESSIBILITY_AX_LANGUAGE_DETECTION_H_
diff --git a/ui/accessibility/ax_language_info_unittest.cc b/ui/accessibility/ax_language_detection_unittest.cc
similarity index 90%
rename from ui/accessibility/ax_language_info_unittest.cc
rename to ui/accessibility/ax_language_detection_unittest.cc
index 440c96a..aa9ddf4 100644
--- a/ui/accessibility/ax_language_info_unittest.cc
+++ b/ui/accessibility/ax_language_detection_unittest.cc
@@ -1,7 +1,7 @@
 // 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 "ui/accessibility/ax_language_info.h"
+#include "ui/accessibility/ax_language_detection.h"
 #include "base/command_line.h"
 #include "ui/accessibility/accessibility_switches.h"
 #include "ui/accessibility/ax_node.h"
@@ -16,7 +16,7 @@
 
 namespace ui {
 
-TEST(AXLanguageInfoTest, FeatureFlag) {
+TEST(AXLanguageDetectionTest, FeatureFlag) {
   // TODO(crbug/889370): Remove this test once this feature is stable
   EXPECT_FALSE(
       ::switches::IsExperimentalAccessibilityLanguageDetectionEnabled());
@@ -29,7 +29,7 @@
 }
 
 // Tests that AXNode::GetLanguage() terminates when there is no lang attribute.
-TEST(AXLanguageInfoTest, BoringTree) {
+TEST(AXLanguageDetectionTest, BoringTree) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       ::switches::kEnableExperimentalAccessibilityLanguageDetection);
 
@@ -57,8 +57,9 @@
   initial_state.nodes[3].id = 4;
 
   AXTree tree(initial_state);
-  DetectLanguageForSubtree(tree.root(), &tree);
-  ASSERT_TRUE(LabelLanguageForSubtree(tree.root(), &tree));
+  ASSERT_NE(tree.language_detection_manager, nullptr);
+  tree.language_detection_manager->DetectLanguageForSubtree(tree.root());
+  tree.language_detection_manager->LabelLanguageForSubtree(tree.root());
 
   // Check that tree parenting conforms to expected shape.
   AXNode* node1 = tree.GetFromId(1);
@@ -83,7 +84,7 @@
   EXPECT_EQ(node4->GetLanguage(), "");
 }
 
-TEST(AXLanguageInfoTest, LangAttrInheritanceFeatureFlagOff) {
+TEST(AXLanguageDetectionTest, LangAttrInheritanceFeatureFlagOff) {
   // Test lang attribute inheritance when feature flag is off.
   //
   // Lang attribute inheritance is handled by GetLanguage.
@@ -142,8 +143,9 @@
   }
 
   AXTree tree(initial_state);
-  DetectLanguageForSubtree(tree.root(), &tree);
-  ASSERT_TRUE(LabelLanguageForSubtree(tree.root(), &tree));
+  ASSERT_NE(tree.language_detection_manager, nullptr);
+  tree.language_detection_manager->DetectLanguageForSubtree(tree.root());
+  tree.language_detection_manager->LabelLanguageForSubtree(tree.root());
 
   {
     AXNode* node1 = tree.GetFromId(1);
@@ -176,7 +178,7 @@
   }
 }
 
-TEST(AXLanguageInfoTest, LangAttrInheritanceFeatureFlagOn) {
+TEST(AXLanguageDetectionTest, LangAttrInheritanceFeatureFlagOn) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       ::switches::kEnableExperimentalAccessibilityLanguageDetection);
 
@@ -238,8 +240,9 @@
   }
 
   AXTree tree(initial_state);
-  DetectLanguageForSubtree(tree.root(), &tree);
-  ASSERT_TRUE(LabelLanguageForSubtree(tree.root(), &tree));
+  ASSERT_NE(tree.language_detection_manager, nullptr);
+  tree.language_detection_manager->DetectLanguageForSubtree(tree.root());
+  tree.language_detection_manager->LabelLanguageForSubtree(tree.root());
 
   {
     AXNode* node1 = tree.GetFromId(1);
@@ -272,7 +275,7 @@
   }
 }
 
-TEST(AXLanguageInfoTest, LanguageDetectionBasic) {
+TEST(AXLanguageDetectionTest, LanguageDetectionBasic) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       ::switches::kEnableExperimentalAccessibilityLanguageDetection);
 
@@ -344,8 +347,9 @@
   }
 
   AXTree tree(initial_state);
-  DetectLanguageForSubtree(tree.root(), &tree);
-  ASSERT_TRUE(LabelLanguageForSubtree(tree.root(), &tree));
+  ASSERT_NE(tree.language_detection_manager, nullptr);
+  tree.language_detection_manager->DetectLanguageForSubtree(tree.root());
+  tree.language_detection_manager->LabelLanguageForSubtree(tree.root());
 
   {
     AXNode* node1 = tree.GetFromId(1);
@@ -383,7 +387,7 @@
   }
 }
 
-TEST(AXLanguageInfoTest, LanguageDetectionDetectOnly) {
+TEST(AXLanguageDetectionTest, LanguageDetectionDetectOnly) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       ::switches::kEnableExperimentalAccessibilityLanguageDetection);
 
@@ -457,7 +461,8 @@
   }
 
   AXTree tree(initial_state);
-  DetectLanguageForSubtree(tree.root(), &tree);
+  ASSERT_NE(tree.language_detection_manager, nullptr);
+  tree.language_detection_manager->DetectLanguageForSubtree(tree.root());
   // Purposefully not calling Label so we can test Detect in isolation.
 
   {
@@ -505,7 +510,7 @@
   }
 }
 
-TEST(AXLanguageInfoTest, kLanguageUntouched) {
+TEST(AXLanguageDetectionTest, kLanguageUntouched) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       ::switches::kEnableExperimentalAccessibilityLanguageDetection);
 
@@ -566,8 +571,9 @@
   }
 
   AXTree tree(initial_state);
-  DetectLanguageForSubtree(tree.root(), &tree);
-  ASSERT_TRUE(LabelLanguageForSubtree(tree.root(), &tree));
+  ASSERT_NE(tree.language_detection_manager, nullptr);
+  tree.language_detection_manager->DetectLanguageForSubtree(tree.root());
+  tree.language_detection_manager->LabelLanguageForSubtree(tree.root());
 
   {
     // French should be detected, original English attr should be untouched.
@@ -600,7 +606,7 @@
   }
 }
 
-TEST(AXLanguageInfoTest, StatsBasic) {
+TEST(AXLanguageDetectionTest, AXLanguageInfoStatsBasic) {
   AXLanguageInfoStats stats;
 
   {
@@ -679,7 +685,7 @@
   EXPECT_FALSE(stats.CheckLanguageWithinTop("zz"));
 }
 
-TEST(AXLanguageInfoTest, ShortLanguageDetectorLabeledTest) {
+TEST(AXLanguageDetectionTest, ShortLanguageDetectorLabeledTest) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       ::switches::kEnableExperimentalAccessibilityLanguageDetection);
   AXTreeUpdate initial_state;
@@ -696,14 +702,15 @@
 
   AXNode* item = tree.GetFromId(2);
   std::vector<AXLanguageSpan> annotation;
+  ASSERT_NE(tree.language_detection_manager, nullptr);
   // Empty output.
   annotation =
-      tree.language_info_stats->GetLanguageAnnotationForStringAttribute(
+      tree.language_detection_manager->GetLanguageAnnotationForStringAttribute(
           *item, ax::mojom::StringAttribute::kInnerHtml);
   ASSERT_EQ(0, (int)annotation.size());
   // Returns single AXLanguageSpan.
   annotation =
-      tree.language_info_stats->GetLanguageAnnotationForStringAttribute(
+      tree.language_detection_manager->GetLanguageAnnotationForStringAttribute(
           *item, ax::mojom::StringAttribute::kName);
   ASSERT_EQ(1, (int)annotation.size());
   AXLanguageSpan* lang_span = &annotation[0];
@@ -715,7 +722,7 @@
                         lang_span->end_index - lang_span->start_index));
 }
 
-TEST(AXLanguageInfoTest, ShortLanguageDetectorCharacterTest) {
+TEST(AXLanguageDetectionTest, ShortLanguageDetectorCharacterTest) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       ::switches::kEnableExperimentalAccessibilityLanguageDetection);
   AXTreeUpdate initial_state;
@@ -730,9 +737,10 @@
 
   AXNode* item = tree.GetFromId(2);
   std::vector<AXLanguageSpan> annotation;
-  // Returns single AXLanguageSpan.
+  ASSERT_NE(tree.language_detection_manager, nullptr);
+  // Returns single LanguageSpan.
   annotation =
-      tree.language_info_stats->GetLanguageAnnotationForStringAttribute(
+      tree.language_detection_manager->GetLanguageAnnotationForStringAttribute(
           *item, ax::mojom::StringAttribute::kName);
   ASSERT_EQ(1, (int)annotation.size());
   AXLanguageSpan* lang_span = &annotation[0];
@@ -743,7 +751,7 @@
                              lang_span->end_index - lang_span->start_index));
 }
 
-TEST(AXLanguageInfoTest, ShortLanguageDetectorMultipleLanguagesTest) {
+TEST(AXLanguageDetectionTest, ShortLanguageDetectorMultipleLanguagesTest) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       ::switches::kEnableExperimentalAccessibilityLanguageDetection);
   AXTreeUpdate initial_state;
@@ -759,8 +767,9 @@
   AXTree tree(initial_state);
 
   AXNode* item = tree.GetFromId(2);
+  ASSERT_NE(tree.language_detection_manager, nullptr);
   std::vector<AXLanguageSpan> annotation =
-      tree.language_info_stats->GetLanguageAnnotationForStringAttribute(
+      tree.language_detection_manager->GetLanguageAnnotationForStringAttribute(
           *item, ax::mojom::StringAttribute::kName);
   ASSERT_EQ(3, (int)annotation.size());
   std::string name =
@@ -781,7 +790,7 @@
 
 // Assert that GetLanguageAnnotationForStringAttribute works for attributes
 // other than kName.
-TEST(AXLanguageInfoTest, DetectLanguageForRoleTest) {
+TEST(AXLanguageDetectionTest, DetectLanguageForRoleTest) {
   base::CommandLine::ForCurrentProcess()->AppendSwitch(
       ::switches::kEnableExperimentalAccessibilityLanguageDetection);
   AXTreeUpdate initial_state;
@@ -793,8 +802,9 @@
   AXTree tree(initial_state);
 
   AXNode* item = tree.GetFromId(1);
+  ASSERT_NE(tree.language_detection_manager, nullptr);
   std::vector<AXLanguageSpan> annotation =
-      tree.language_info_stats->GetLanguageAnnotationForStringAttribute(
+      tree.language_detection_manager->GetLanguageAnnotationForStringAttribute(
           *item, ax::mojom::StringAttribute::kValue);
   ASSERT_EQ(1, (int)annotation.size());
   std::string value =
diff --git a/ui/accessibility/ax_node.cc b/ui/accessibility/ax_node.cc
index c1b0ae3..f1339ee 100644
--- a/ui/accessibility/ax_node.cc
+++ b/ui/accessibility/ax_node.cc
@@ -9,7 +9,7 @@
 #include "base/strings/string16.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/accessibility/ax_enums.mojom.h"
-#include "ui/accessibility/ax_language_info.h"
+#include "ui/accessibility/ax_language_detection.h"
 #include "ui/accessibility/ax_role_properties.h"
 #include "ui/accessibility/ax_table_info.h"
 #include "ui/accessibility/ax_tree.h"
diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc
index 59495596..0f03241 100644
--- a/ui/accessibility/ax_tree.cc
+++ b/ui/accessibility/ax_tree.cc
@@ -15,7 +15,7 @@
 #include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
 #include "ui/accessibility/accessibility_switches.h"
-#include "ui/accessibility/ax_language_info.h"
+#include "ui/accessibility/ax_language_detection.h"
 #include "ui/accessibility/ax_node.h"
 #include "ui/accessibility/ax_role_properties.h"
 #include "ui/accessibility/ax_table_info.h"
@@ -173,14 +173,17 @@
   initial_state.root_id = -1;
   initial_state.nodes.push_back(root);
   CHECK(Unserialize(initial_state)) << error();
-  DCHECK(!language_info_stats);
-  language_info_stats.reset(new AXLanguageInfoStats());
+  // TODO(chrishall): should language_detection_manager be a member or pointer?
+  // TODO(chrishall): do we want to initialize all the time, on demand, or only
+  //                  when feature flag is set?
+  DCHECK(!language_detection_manager);
+  language_detection_manager.reset(new AXLanguageDetectionManager());
 }
 
 AXTree::AXTree(const AXTreeUpdate& initial_state) {
   CHECK(Unserialize(initial_state)) << error();
-  DCHECK(!language_info_stats);
-  language_info_stats.reset(new AXLanguageInfoStats());
+  DCHECK(!language_detection_manager);
+  language_detection_manager.reset(new AXLanguageDetectionManager());
 }
 
 AXTree::~AXTree() {
diff --git a/ui/accessibility/ax_tree.h b/ui/accessibility/ax_tree.h
index afc6982..adc63d9 100644
--- a/ui/accessibility/ax_tree.h
+++ b/ui/accessibility/ax_tree.h
@@ -24,7 +24,7 @@
 class AXTree;
 class AXTreeObserver;
 struct AXTreeUpdateState;
-class AXLanguageInfoStats;
+class AXLanguageDetectionManager;
 
 // AXTree is a live, managed tree of AXNode objects that can receive
 // updates from another AXTreeSource via AXTreeUpdates, and it can be
@@ -150,8 +150,10 @@
   bool GetTreeUpdateInProgressState() const override;
   void SetTreeUpdateInProgressState(bool set_tree_update_value);
 
-  // Language detection statistics
-  std::unique_ptr<AXLanguageInfoStats> language_info_stats;
+  // Language detection manager, entry point to language detection features.
+  // TODO(chrishall): Should this be stored by pointer or value?
+  //                  When should we initialize this?
+  std::unique_ptr<AXLanguageDetectionManager> language_detection_manager;
 
  private:
   friend class AXTableInfoTest;
diff --git a/ui/aura/BUILD.gn b/ui/aura/BUILD.gn
index 31cb1d2..49fdbe0 100644
--- a/ui/aura/BUILD.gn
+++ b/ui/aura/BUILD.gn
@@ -348,6 +348,7 @@
       ":aura",
       ":test_support",
       "//base/test:test_support",
+      "//mojo/core/embedder",
       "//testing/gtest",
       "//ui/base/ime/init",
       "//ui/display:display",
diff --git a/ui/aura/DEPS b/ui/aura/DEPS
index 1825fdd..df859b2a 100644
--- a/ui/aura/DEPS
+++ b/ui/aura/DEPS
@@ -22,3 +22,9 @@
   "+ui/ozone/public",
   "+ui/platform_window",
 ]
+
+specific_include_rules = {
+  "native_window_occlusion_tracker_win_interactive_test\.cc": [
+    "+mojo/core/embedder/embedder.h",
+  ],
+}
diff --git a/ui/aura/native_window_occlusion_tracker_win_interactive_test.cc b/ui/aura/native_window_occlusion_tracker_win_interactive_test.cc
index 8c27a9d9..308ee37 100644
--- a/ui/aura/native_window_occlusion_tracker_win_interactive_test.cc
+++ b/ui/aura/native_window_occlusion_tracker_win_interactive_test.cc
@@ -14,6 +14,7 @@
 #include "base/task/thread_pool/thread_pool.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/win/scoped_gdi_object.h"
+#include "mojo/core/embedder/embedder.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/aura/env.h"
 #include "ui/aura/test/aura_test_base.h"
@@ -104,7 +105,12 @@
 
 class NativeWindowOcclusionTrackerTest : public test::AuraTestBase {
  public:
-  NativeWindowOcclusionTrackerTest() {}
+  NativeWindowOcclusionTrackerTest() {
+    // These interactive_ui_tests are not based on browser tests which would
+    // normally handle initializing mojo. We can safely initialize mojo at the
+    // start of the test here since a new process is launched for each test.
+    mojo::core::Init();
+  }
   void SetUp() override {
     if (gl::GetGLImplementation() == gl::kGLImplementationNone)
       gl::GLSurfaceTestSupport::InitializeOneOff();
diff --git a/ui/chromeos/translations/ui_chromeos_strings_am.xtb b/ui/chromeos/translations/ui_chromeos_strings_am.xtb
index f360326f..850f28fd 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_am.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_am.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">ቀኝ</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ፋይሎችን በማስመጣት ላይ...</translation>
 <translation id="1352103415082130575">የታይ ቁልፍ ሰሌዳ (ፓታቾት)</translation>
-<translation id="1358032944105037487">የጃፓንኛ ቁልፍ ሰሌዳ</translation>
 <translation id="1358735829858566124">ፋይሉ ወይም አቃፊው ሊሰራበት የሚችል አይደለም።</translation>
 <translation id="1363028406613469049">ትራክ</translation>
 <translation id="1378727793141957596">ወደ Google Drive እንኳን በደህና መጡ!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ፎቶዎች ወደ <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> በምትኬ ተቀምጠዋል</translation>
 <translation id="3470502288861289375">በመቅዳት ላይ...</translation>
 <translation id="3475447146579922140">Google ተመን ሉህ</translation>
-<translation id="3494768541638400973">Google ጃፓንኛ ግቤት (ለጃፓንኛ ቁልፍ ሰሌዳ)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> ስህተቶች።</translation>
 <translation id="3519867315646775981">በቋንቋ ፊደል መጻፍ (shalom ← שלום)</translation>
 <translation id="3522708245912499433">ፖርቱጋሊኛ</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">ሁሉም በምትኬ ተቀምጧል!</translation>
 <translation id="3626281679859535460">ብሩህነት</translation>
 <translation id="3644896802912593514">ስፋት</translation>
+<translation id="3645531960514756307">አቃፍን አታያይዝ</translation>
 <translation id="3678559383040232393">Maltese የቁልፍ ሰሌዳ</translation>
 <translation id="3685122418104378273">የሞባይል ውሂብ ጥቅም ላይ በሚውልበት ጊዜ Google Drive ማመሳሰል በነባሪ ይሰናከላል።</translation>
 <translation id="3726463242007121105">የዚህ መሣሪያ ስርዓተ ፋይል ስለማይደገፍ ስላልሆነ ሊከፈት አይችልም።</translation>
@@ -513,7 +512,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> ተገኝቷል</translation>
 <translation id="6935521024859866267">ወደ ታች የተገለበጠ</translation>
-<translation id="6937152069980083337">Google ጃፓንኛ ግቤት (ለአሜሪካ ቁልፍ ሰሌዳ)</translation>
 <translation id="6939777852457331078">የአሜሪካ ዎርክማን ቁልፍ ሰሌዳ</translation>
 <translation id="696203921837389374">በሞባይል ውሂብ ላይ ማመሳሰልን አንቃ</translation>
 <translation id="6965382102122355670">እሺ</translation>
@@ -646,6 +644,7 @@
 <translation id="8336153091935557858">ትላንትና <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">የአይስላንድ ቁልፍ ሰሌዳ</translation>
 <translation id="8342318071240498787">ተመሳሳዩን ስም የያዘ ፋይል ወይም አቃፊ አስቀድሞ አለ።</translation>
+<translation id="8382450452152102026">ለ <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">በቋንቋ ፊደል መጻፍ (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">ልኬቶች</translation>
 <translation id="8412586565681117057">ፈጣን የግቤት ስልት</translation>
@@ -695,6 +694,7 @@
 <translation id="9099674669267916096">የገጽ ብዛት</translation>
 <translation id="9110990317705400362">የእርስዎን አሰሳ ይበልጥ ደህንነቱ የተጠበቀ የሚሆንባቸው መንገዶችን በቋሚነት እየፈለግን ነው። ከዚህ ቀደም ማንኛውም ድር ጣቢያ ቅጥያ በአሳሽዎ ላይ እንዲያክሉ ሊጠይቅዎ ይችል ነበር። በቅርቦቹ የGoogle Chrome ስሪቶች ላይ እነዚህን ቅጥያዎች በቅጥያዎች ገጹ በኩል በማከል እንደሚፈልጓቸው በግልጽ ለChrome መንገር አለብዎት። <ph name="BEGIN_LINK" />ተጨማሪ ለመረዳት<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">ኮዴክ</translation>
+<translation id="9129931661813833980">አቃፊን አያይዝ</translation>
 <translation id="9130775360844693113">የ«<ph name="DESTINATION_NAME" />» አባላት የእነዚህ ንጥሎች መዳረሻ ያገኛሉ።</translation>
 <translation id="9131598836763251128">አንድ ወይም ተጨማሪ ፋይሎችን ይምረጡ</translation>
 <translation id="9133055936679483811">መጭመቅ አልተሳካም። <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ar.xtb b/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
index 584096af..d4bff82 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ar.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">يمين</translation>
 <translation id="1351692861129622852">جار استيراد ملفات <ph name="FILE_COUNT" /> ...</translation>
 <translation id="1352103415082130575">‏لوحة المفاتيح التايلاندية (Pattachote)</translation>
-<translation id="1358032944105037487">لوحة المفاتيح اليابانية</translation>
 <translation id="1358735829858566124">الملف أو الدليل غير قابل للاستخدام.</translation>
 <translation id="1363028406613469049">مقطع صوتي</translation>
 <translation id="1378727793141957596">‏مرحبًا بك في Google Drive!</translation>
@@ -90,7 +89,7 @@
 <translation id="197560921582345123">يمكن التعديل</translation>
 <translation id="1984603991036629094">لوحة المفاتيح الأرمينية الصوتية</translation>
 <translation id="2001796770603320721">‏الإدارة في Drive</translation>
-<translation id="2009067268969781306">سيؤدي تنسيق محرك أقراص إلى حذف جميع البيانات المخزنة عليه. لا يمكن التراجع عن هذا الإجراء.</translation>
+<translation id="2009067268969781306">سيؤدي تنسيق محرك أقراص إلى حذف جميع البيانات المخزّنة عليه. لا يمكن التراجع عن هذا الإجراء.</translation>
 <translation id="2028997212275086731">‏أرشيف RAR</translation>
 <translation id="2046702855113914483">رامن</translation>
 <translation id="2070909990982335904">الأسماء البادئة بنقطة محجوزة للنظام. يرجى اختيار اسم آخر.</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">‏تم نسخ <ph name="FILE_COUNT" /> من الصور احتياطيًا في <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">جارٍ النسخ...</translation>
 <translation id="3475447146579922140">‏جدول بيانات Google</translation>
-<translation id="3494768541638400973">‏أسلوب Google للإدخال الياباني (للوحة المفاتيح اليابانية)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> من الأخطاء.</translation>
 <translation id="3519867315646775981">التحويل الصوتي (שלום ← شالوم)</translation>
 <translation id="3522708245912499433">البرتغالية</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">تم نسخ جميع العناصر احتياطيًا</translation>
 <translation id="3626281679859535460">السطوع</translation>
 <translation id="3644896802912593514">العرض</translation>
+<translation id="3645531960514756307">إزالة تثبيت علامة تبويب المجلد</translation>
 <translation id="3678559383040232393">لوحة المفاتيح المالطية</translation>
 <translation id="3685122418104378273">‏يتم إيقاف مزامنة Google Drive بشكل تلقائي، عند استخدام بيانات الجوّال.</translation>
 <translation id="3726463242007121105">لا يمكن فتح الجهاز لأن نظام الملفات غير متوافق.</translation>
@@ -414,7 +413,7 @@
 <translation id="5752453871435543420">‏النسخ الاحتياطي في السحاب عبر نظام التشغيل Chrome</translation>
 <translation id="5756666464756035725">‏QWERTY المجرية</translation>
 <translation id="5771585441665576801">‏التحويل الصوتي (جيا ← γεια)</translation>
-<translation id="5776325638577448643">محو البيانات والتنسيق</translation>
+<translation id="5776325638577448643">المحو والتنسيق</translation>
 <translation id="57838592816432529">كتم الصوت</translation>
 <translation id="5788127256798019331">‏ملفات Play</translation>
 <translation id="5790193330357274855">الكازاخية</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     تم العثور على <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">رأسًا على عقب</translation>
-<translation id="6937152069980083337">‏أسلوب الإدخال باللغة اليابانية لـ Google (للوحة المفاتيح بالولايات المتحدة)</translation>
 <translation id="6939777852457331078">‏لوحة مفاتيح US Workman</translation>
 <translation id="696203921837389374">تفعيل المزامنة عبر بيانات الجوّال</translation>
 <translation id="6965382102122355670">موافق</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">الأمس <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">لوحة مفاتيح أيسلندية</translation>
 <translation id="8342318071240498787">هناك ملف أو دليل موجود بهذا الاسم فعلاً.</translation>
+<translation id="8382450452152102026">إلى <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">‏التحويل الصوتي (إيماندي ← ఏమండీ)</translation>
 <translation id="8395901698320285466">الأبعاد</translation>
 <translation id="8412586565681117057">أسلوب الإدخال السريع</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">عدد الصفحات</translation>
 <translation id="9110990317705400362">‏نحن نبحث باستمرار عن طرق من شأنها زيادة أمان تجربة تصفحك. في السابق، كان من الممكن لأي موقع ويب أن يطالبك بتثبيت إضافة في متصفحك. أما في أحدث إصدارات Google Chrome، فيجب أن تبلغ Chrome صراحة أنك تريد تثبيت هذه الإضافات عن طريق إضافتها عبر صفحة الإضافات. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">برنامج ترميز</translation>
+<translation id="9129931661813833980">تثبيت المجلد</translation>
 <translation id="9130775360844693113">سيحصل أعضاء '<ph name="DESTINATION_NAME" />' على إمكانية الوصول إلى هذه العناصر.</translation>
 <translation id="9131598836763251128">تحديد ملف واحد أو أكثر</translation>
 <translation id="9133055936679483811">تعذّر الضغط. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
index cf07d47..4356fb9 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Надясно</translation>
 <translation id="1351692861129622852">Импортират се <ph name="FILE_COUNT" /> файла...</translation>
 <translation id="1352103415082130575">Тайландска клавиатура (паташот)</translation>
-<translation id="1358032944105037487">Японска клавиатура</translation>
 <translation id="1358735829858566124">Файлът или директорията не могат да се използват.</translation>
 <translation id="1363028406613469049">Запис</translation>
 <translation id="1378727793141957596">Добре дошли в Google Диск!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">На <ph name="FILE_COUNT" /> снимки бяха създадени резервни копия в <ph name="BEGIN_LINK" />Google Диск<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Копира се...</translation>
 <translation id="3475447146579922140">Електронна таблица в Google</translation>
-<translation id="3494768541638400973">Google Редактор с метод за въвеждане на японски (за японска клавиатура)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> грешки.</translation>
 <translation id="3519867315646775981">Транслитерация (shalom ← שלום)</translation>
 <translation id="3522708245912499433">португалски</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">На всичко бе създадено резервно копие!</translation>
 <translation id="3626281679859535460">Яркост</translation>
 <translation id="3644896802912593514">Ширина</translation>
+<translation id="3645531960514756307">Освобождаване на папката</translation>
 <translation id="3678559383040232393">Малтийска клавиатура</translation>
 <translation id="3685122418104378273">Синхронизирането на Google Диск е деактивирано по подразбиране, когато се използват мобилни данни.</translation>
 <translation id="3726463242007121105">Това устройство не може да бъде отворено, защото файловата му система не се поддържа.</translation>
@@ -514,7 +513,6 @@
 <ph name="LINE_BREAK1" />
 Намерихме <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Наопаки</translation>
-<translation id="6937152069980083337">Google Редактор с метод за въвеждане на японски (за американска клавиатура)</translation>
 <translation id="6939777852457331078">Американска (Уъркман) клавиатура</translation>
 <translation id="696203921837389374">Активиране на синхронизирането чрез мобилни данни</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Вчера, <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Исландска клавиатура</translation>
 <translation id="8342318071240498787">Вече съществува файл или директория със същото име.</translation>
+<translation id="8382450452152102026">До <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Транслитерация (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Размери</translation>
 <translation id="8412586565681117057">Бърз метод на въвеждане</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Брой страници</translation>
 <translation id="9110990317705400362">Непрекъснато търсим начини да правим сърфирането ви по-безопасно. По-рано всеки уебсайт можеше да ви подкани да добавите разширение в браузъра си. В най-новите версии на Google Chrome трябва изрично да укажете на браузъра, че искате да инсталирате съответния софтуер, като го добавите чрез страницата „Разширения“. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Кодек</translation>
+<translation id="9129931661813833980">Фиксиране на папката</translation>
 <translation id="9130775360844693113">Членовете на „<ph name="DESTINATION_NAME" />“ ще получат достъп до тези елементи.</translation>
 <translation id="9131598836763251128">Изберете един или повече файлове</translation>
 <translation id="9133055936679483811">Компресирането не бе успешно. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
index baf62c7..0c3dffe 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">ডানে</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" />টি ফাইল ইমপোর্ট করা হচ্ছে...</translation>
 <translation id="1352103415082130575">থাই কীবোর্ড (পাট্টাচোটে)</translation>
-<translation id="1358032944105037487">জাপানী কীবোর্ড</translation>
 <translation id="1358735829858566124">ফাইল বা ডিরেক্টরি ব্যবহারযোগ্য নয়৷</translation>
 <translation id="1363028406613469049">ট্র্যাক</translation>
 <translation id="1378727793141957596">Google ড্রাইভে স্বাগতম!</translation>
@@ -90,7 +89,7 @@
 <translation id="197560921582345123">সম্পাদনা করতে পারবেন</translation>
 <translation id="1984603991036629094">আর্মেনিয় ফোনেটিক কীবোর্ড</translation>
 <translation id="2001796770603320721">ড্রাইভে পরিচালনা করুন</translation>
-<translation id="2009067268969781306">ড্রাইভ ফর্ম্যাট করা হলে, সেটিতে সেভ করা সব ডেটা মুছে যাবে। সেটিকে আর আগের অবস্থায় ফেরানো যাবে না।</translation>
+<translation id="2009067268969781306">ড্রাইভ ফরম্যাট করা হলে, সেটিতে সেভ করা সব ডেটা মুছে যাবে। সেটিকে আর আগের অবস্থায় ফেরানো যাবে না।</translation>
 <translation id="2028997212275086731">RAR আর্কাইভ</translation>
 <translation id="2046702855113914483">রামেন</translation>
 <translation id="2070909990982335904">ডট দিয়ে শুরু নমাগুলি সিস্টেমের জন্য সংরক্ষিত৷ দয়া করে অন্য নাম চয়ন করুন৷</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google ড্রাইভ<ph name="END_LINK" /> এ <ph name="FILE_COUNT" />টি ফটো ব্যাকআপ নেওয়া হয়েছে</translation>
 <translation id="3470502288861289375">অনুলিপি করা হচ্ছে...</translation>
 <translation id="3475447146579922140">Google স্প্রেডশীট</translation>
-<translation id="3494768541638400973">Google জাপানিয় ইনপুট (জাপানি কীবোর্ডের জন্য)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" />টি ত্রুটি৷</translation>
 <translation id="3519867315646775981">লিপ্যন্তরকরণ (shalom ← שלום)</translation>
 <translation id="3522708245912499433">পর্তুগিজ</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">সব ব্যাকআপ নেওয়া হয়ে গেছে!</translation>
 <translation id="3626281679859535460">উজ্জ্বলতা</translation>
 <translation id="3644896802912593514">প্রস্থ</translation>
+<translation id="3645531960514756307">ফোল্ডারটি আনপিন করুন</translation>
 <translation id="3678559383040232393">মাল্টাদেশীয় কীবোর্ড</translation>
 <translation id="3685122418104378273">মোবাইল ডেটা ব্যবহার করার সময় ডিফল্টরূপে Google ড্রাইভ সিঙ্ক বন্ধ করা হয়৷</translation>
 <translation id="3726463242007121105">এই ডিভাইসটি ফাইল সিস্টেমটি সমর্থিত না হওয়ার কারণে খুলতে পারা যায়না৷</translation>
@@ -455,7 +454,7 @@
 <translation id="6189412234224385711"><ph name="EXTENSION_NAME" /> এর মাধ্যমে খুলুন</translation>
 <translation id="6199801702437275229">স্থান তথ্যের জন্য অপেক্ষারত...</translation>
 <translation id="6205710420833115353">কিছু অ্যাক্টিভিটি প্রত্যাশিত সময়ের থেকে বেশি সময় নিচ্ছে। আপনি কি সেগুলি থামাতে চান?</translation>
-<translation id="6224253798271602650"><ph name="DRIVE_NAME" /> ফর্ম্যাট করা</translation>
+<translation id="6224253798271602650"><ph name="DRIVE_NAME" /> ফরম্যাট করা</translation>
 <translation id="6227235786875481728">এই ফাইলটি চালানো যাবেনা৷</translation>
 <translation id="6248400709929739064">সাবটাইটেল সক্ষম করুন</translation>
 <translation id="6264347891387618177">লিপ্যন্তরকরণ (selam → ሰላም)</translation>
@@ -513,7 +512,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" />টি পাওয়া যায়</translation>
 <translation id="6935521024859866267">ওলট পালট</translation>
-<translation id="6937152069980083337">Google জাপানিয় ইনপুট (ইউএস কীবোর্ডের জন্য)</translation>
 <translation id="6939777852457331078">মার্কিন ওয়ার্কম্যান কীবোর্ড</translation>
 <translation id="696203921837389374">মোবাইল ডেটার মাধ্যমে সিঙ্ক করা সক্ষম করুন</translation>
 <translation id="6965382102122355670">ঠিক আছে</translation>
@@ -646,6 +644,7 @@
 <translation id="8336153091935557858">গতলাক <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">আইসল্যান্ডিক কীবোর্ড</translation>
 <translation id="8342318071240498787">একই নাম সহ ফাইল অথবা একটি নির্দেশিকা ইতিমধ্যেই বিদ্যমান আছে৷</translation>
+<translation id="8382450452152102026"><ph name="FOLDER_NAME" />-এ</translation>
 <translation id="8391950649760071442">লিপ্যন্তরকরণ (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">আয়তন</translation>
 <translation id="8412586565681117057">দ্রুত ইনপুট পদ্ধতি</translation>
@@ -695,6 +694,7 @@
 <translation id="9099674669267916096">পৃষ্ঠার সংখ্যা</translation>
 <translation id="9110990317705400362">আমরা ক্রমাগত আপনার ব্রাউজিং নিরাপদ করতে উপায় খুঁজছি৷ আগে, যে কোনো ওয়েবসাইট আপনার ব্রাউজারে একটি এক্সটেনশন যোগ করার অনুরোধ জানাতে পারত৷ Google Chrome-এর সাম্প্রতিক ভার্সনে, আপনাকে অবশ্যই Chrome-কে স্পষ্টভাবে বলতে হবে যে আপনি এক্সটেনশনগুলির পৃষ্ঠার মাধ্যমে তাদের যোগ করে এই এক্সটেনশনগুলি ইনস্টল করতে চান৷ <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">কোডেক</translation>
+<translation id="9129931661813833980">ফোল্ডার পিন করুন</translation>
 <translation id="9130775360844693113">'<ph name="DESTINATION_NAME" />' এর সদস্যরা এই আইটেমগুলির অ্যাক্সেস পাবেন।</translation>
 <translation id="9131598836763251128">এক বা একাধিক ফাইল বেছে নিন৷</translation>
 <translation id="9133055936679483811">জিপ করা ব্যর্থ হয়েছে৷ <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
index 0888d7b..0203c3d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">A la dreta</translation>
 <translation id="1351692861129622852">S'estan important <ph name="FILE_COUNT" /> fitxers...</translation>
 <translation id="1352103415082130575">Teclat tailandès (pattachote)</translation>
-<translation id="1358032944105037487">Teclat japonès</translation>
 <translation id="1358735829858566124">El fitxer o directori no es pot fer servir.</translation>
 <translation id="1363028406613469049">Pista</translation>
 <translation id="1378727793141957596">Us donem la benvinguda a Google Drive.</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">S'ha creat una còpia de seguretat de <ph name="FILE_COUNT" /> fotos a <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">S'està copiant...</translation>
 <translation id="3475447146579922140">Full de càlcul de Google</translation>
-<translation id="3494768541638400973">Introducció de japonès de Google (per a teclat japonès)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> errors.</translation>
 <translation id="3519867315646775981">Transliteració (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portuguès</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Tots els elements tenen una còpia de seguretat.</translation>
 <translation id="3626281679859535460">Brillantor</translation>
 <translation id="3644896802912593514">Amplada</translation>
+<translation id="3645531960514756307">Deixa de fixar la carpeta</translation>
 <translation id="3678559383040232393">Teclat maltès</translation>
 <translation id="3685122418104378273">La sincronització amb Google Drive està desactivada de manera predeterminada en utilitzar les dades mòbils.</translation>
 <translation id="3726463242007121105">Aquest dispositiu no es pot obrir perquè el seu sistema de fitxers no és compatible.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     S'han trobat <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Cap per avall</translation>
-<translation id="6937152069980083337">Introducció de japonès de Google (per a teclat nord-americà)</translation>
 <translation id="6939777852457331078">Teclat Workman nord-americà</translation>
 <translation id="696203921837389374">Activa la sincronització mitjançant dades mòbils</translation>
 <translation id="6965382102122355670">D'acord</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Ahir a les <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Teclat islandès</translation>
 <translation id="8342318071240498787">Ja existeix un fitxer o un directori amb aquest nom.</translation>
+<translation id="8382450452152102026">A: <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteració (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensions</translation>
 <translation id="8412586565681117057">Mètode d'introducció ràpida</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Nombre de pàgines</translation>
 <translation id="9110990317705400362">Mai no deixem de cercar maneres de millorar la seguretat de la navegació. Anteriorment, des de qualsevol lloc web se us podia demanar que afegíssiu una extensió al navegador. A les versions més recents de Google Chrome, heu d'afegir aquestes extensions mitjançant la pàgina Extensions per fer saber explícitament a Chrome que voleu instal·lar-les. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Còdec</translation>
+<translation id="9129931661813833980">Fixa la carpeta</translation>
 <translation id="9130775360844693113">Els membres de la unitat <ph name="DESTINATION_NAME" />, obtindran accés a aquets elements.</translation>
 <translation id="9131598836763251128">Seleccioneu un o diversos fitxers</translation>
 <translation id="9133055936679483811">S'ha produït un error en la compressió. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
index e38e70a..ae36118b 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Doprava</translation>
 <translation id="1351692861129622852">Importování <ph name="FILE_COUNT" /> souborů...</translation>
 <translation id="1352103415082130575">Thajská klávesnice (Pattachote)</translation>
-<translation id="1358032944105037487">Japonská klávesnice</translation>
 <translation id="1358735829858566124">Soubor nebo adresář nelze použít.</translation>
 <translation id="1363028406613469049">Stopa</translation>
 <translation id="1378727793141957596">Vítá vás Disk Google!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Počet fotek, které byly zálohovány na <ph name="BEGIN_LINK" />Disk Google<ph name="END_LINK" />: <ph name="FILE_COUNT" /></translation>
 <translation id="3470502288861289375">Kopírování...</translation>
 <translation id="3475447146579922140">Tabulka Google</translation>
-<translation id="3494768541638400973">Zadávání japonštiny Google (pro japonskou klávesnici)</translation>
 <translation id="3495304270784461826">Chyby: <ph name="COUNT" />.</translation>
 <translation id="3519867315646775981">Přepis (shalom ← שלום)</translation>
 <translation id="3522708245912499433">portugalština</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Vše je zálohováno</translation>
 <translation id="3626281679859535460">Jas</translation>
 <translation id="3644896802912593514">Šířka</translation>
+<translation id="3645531960514756307">Odepnout složku</translation>
 <translation id="3678559383040232393">Maltská klávesnice</translation>
 <translation id="3685122418104378273">Když používáte mobilní datové připojení, synchronizace s Diskem Google je ve výchozím nastavení vypnutá.</translation>
 <translation id="3726463242007121105">Toto zařízení nelze otevřít, protože jeho systém souborů není podporován.</translation>
@@ -513,7 +512,6 @@
     <ph name="LINE_BREAK1" />
     Nalezeno: <ph name="FILE_COUNT" />.</translation>
 <translation id="6935521024859866267">Vzhůru nohama</translation>
-<translation id="6937152069980083337">Zadávání japonštiny Google (pro americkou klávesnici)</translation>
 <translation id="6939777852457331078">Americká klávesnice s rozložením Workman</translation>
 <translation id="696203921837389374">Aktivovat synchronizaci pomocí mobilního datového připojení</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -646,6 +644,7 @@
 <translation id="8336153091935557858">Včera <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Islandská klávesnice</translation>
 <translation id="8342318071240498787">Soubor nebo složka s daným názvem již existuje.</translation>
+<translation id="8382450452152102026">Do složky <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Přepis (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Rozměry</translation>
 <translation id="8412586565681117057">Zrychlená metoda zadávání</translation>
@@ -695,6 +694,7 @@
 <translation id="9099674669267916096">Počet stránek</translation>
 <translation id="9110990317705400362">Neustále hledáme způsoby, jak zvýšit bezpečnost prohlížení. V minulosti vás k přidání rozšíření do prohlížeče mohl vyzvat kterýkoliv web. V nejnovějších verzích Google Chrome musíte Chromu výslovně sdělit, že rozšíření chcete nainstalovat. Učiníte tak tím, že rozšíření přidáte na stránce Rozšíření. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodek</translation>
+<translation id="9129931661813833980">Připnout složku</translation>
 <translation id="9130775360844693113">Členové týmu <ph name="DESTINATION_NAME" /> získají přístup k těmto položkám.</translation>
 <translation id="9131598836763251128">Vyberte jeden nebo více souborů</translation>
 <translation id="9133055936679483811">Komprimace se nezdařila. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_da.xtb b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
index cc3a24cd..da2a589b 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_da.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Højre</translation>
 <translation id="1351692861129622852">Importerer <ph name="FILE_COUNT" /> filer...</translation>
 <translation id="1352103415082130575">Thailandsk tastatur (Pattachote)</translation>
-<translation id="1358032944105037487">Japansk tastatur</translation>
 <translation id="1358735829858566124">Filen eller mappen kan ikke bruges.</translation>
 <translation id="1363028406613469049">Spor</translation>
 <translation id="1378727793141957596">Velkommen til Google Drev!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> billeder blev sikkerhedskopieret til <ph name="BEGIN_LINK" />Google Drev<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Kopierer...</translation>
 <translation id="3475447146579922140">Google-regneark</translation>
-<translation id="3494768541638400973">Googles japanske indtastning (til japansk tastatur)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> fejl.</translation>
 <translation id="3519867315646775981">Translitteration (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugisisk</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Alt er sikkerhedskopieret.</translation>
 <translation id="3626281679859535460">Lysstyrke</translation>
 <translation id="3644896802912593514">Bredde</translation>
+<translation id="3645531960514756307">Frigør mappe</translation>
 <translation id="3678559383040232393">Maltesisk tastatur</translation>
 <translation id="3685122418104378273">Synkronisering af Google Drev er som standard deaktiveret, når du bruger mobildata.</translation>
 <translation id="3726463242007121105">Denne enhed kan ikke åbnes, fordi dens filsystem ikke understøttes.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Der blev fundet <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">På hovedet</translation>
-<translation id="6937152069980083337">Googles japanske indtastning (til amerikansk tastatur)</translation>
 <translation id="6939777852457331078">Amerikansk Workman-tastatur</translation>
 <translation id="696203921837389374">Aktivér synkronisering via mobildata</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">I går <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Islandsk tastatur</translation>
 <translation id="8342318071240498787">Der findes allerede en fil eller en mappe med samme navn.</translation>
+<translation id="8382450452152102026">I <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Translitteration (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Mål</translation>
 <translation id="8412586565681117057">Hurtig indtastningsmetode</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Sideantal</translation>
 <translation id="9110990317705400362">Vi leder hele tiden efter nye metoder til at gøre din browsing mere sikker. Før kunne ethvert website anmode dig om at tilføje en udvidelse i din browser. I de nyeste versioner af Google Chrome skal du udtrykkeligt give Chrome besked om, at du vil installere udvidelser, ved at tilføje dem via siden Udvidelser. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Fastgør mappe</translation>
 <translation id="9130775360844693113">Medlemmer af "<ph name="DESTINATION_NAME" />" får adgang til disse elementer.</translation>
 <translation id="9131598836763251128">Vælg en eller flere filer</translation>
 <translation id="9133055936679483811">Komprimering mislykkedes. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_de.xtb b/ui/chromeos/translations/ui_chromeos_strings_de.xtb
index a24b76c..6425ad0 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_de.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_de.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Rechts</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> Dateien werden importiert...</translation>
 <translation id="1352103415082130575">Thailändische Tastatur (Pattachote)</translation>
-<translation id="1358032944105037487">Japanische Tastatur </translation>
 <translation id="1358735829858566124">Die Datei oder das Verzeichnis kann nicht verwendet werden.</translation>
 <translation id="1363028406613469049">Titel</translation>
 <translation id="1378727793141957596">Willkommen bei Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> Fotos auf <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> gesichert</translation>
 <translation id="3470502288861289375">Wird kopiert...</translation>
 <translation id="3475447146579922140">Google-Tabellendokument</translation>
-<translation id="3494768541638400973">Google Japanese Input (für japanische Tastatur)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> Fehler</translation>
 <translation id="3519867315646775981">Transliteration (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugiesisch</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Alle Daten gesichert</translation>
 <translation id="3626281679859535460">Helligkeit</translation>
 <translation id="3644896802912593514">Breite</translation>
+<translation id="3645531960514756307">Ordner loslösen</translation>
 <translation id="3678559383040232393">Maltesische Tastatur</translation>
 <translation id="3685122418104378273">Die Google Drive-Synchronisierung ist bei der mobilen Datennutzung standardmäßig deaktiviert.</translation>
 <translation id="3726463242007121105">Dieses Gerät kann nicht geöffnet werden, da das zugehörige Dateisystem nicht unterstützt wird.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> gefunden</translation>
 <translation id="6935521024859866267">Auf dem Kopf</translation>
-<translation id="6937152069980083337">Google Japanese Input (für US-Tastatur)</translation>
 <translation id="6939777852457331078">US-amerikanische Workman-Tastatur</translation>
 <translation id="696203921837389374">Synchronisierung über mobile Daten aktivieren</translation>
 <translation id="6965382102122355670">Ok</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Gestern <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Isländische Tastatur</translation>
 <translation id="8342318071240498787">Es ist bereits eine Datei oder ein Verzeichnis mit dem gleichen Namen vorhanden.</translation>
+<translation id="8382450452152102026">In <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteration (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Abmessungen</translation>
 <translation id="8412586565681117057">Schnelle Eingabemethode</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Seitenzahl</translation>
 <translation id="9110990317705400362">Wir arbeiten stets daran, das Surfen für Sie sicherer zu machen. Früher konnten Sie von jeder beliebigen Website aufgefordert werden, eine Erweiterung zu Ihrem Browser hinzuzufügen. In neueren Versionen von Google Chrome müssen Sie Chrome ausdrücklich mitteilen, dass Sie diese Erweiterungen installieren möchten, indem Sie sie über die Seite "Erweiterungen" hinzufügen. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Ordner anpinnen</translation>
 <translation id="9130775360844693113">Mitglieder von "<ph name="DESTINATION_NAME" />" erhalten Zugriff auf diese Dateien.</translation>
 <translation id="9131598836763251128">Eine oder mehrere Dateien auswählen</translation>
 <translation id="9133055936679483811">Fehler beim Zippen. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_el.xtb b/ui/chromeos/translations/ui_chromeos_strings_el.xtb
index bebef9f..58a8699 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_el.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_el.xtb
@@ -37,7 +37,6 @@
 <translation id="1346748346194534595">Δεξιά</translation>
 <translation id="1351692861129622852">Εισαγωγή <ph name="FILE_COUNT" /> αρχείων…</translation>
 <translation id="1352103415082130575">Πληκτρολόγιο Ταϊλανδικών (Pattachote)</translation>
-<translation id="1358032944105037487">Πληκτρολόγιο με ιαπωνικούς χαρακτήρες</translation>
 <translation id="1358735829858566124">Το αρχείο ή ο κατάλογος δεν μπορούν να χρησιμοποιηθούν.</translation>
 <translation id="1363028406613469049">Κομμάτι</translation>
 <translation id="1378727793141957596">Καλώς ήρθατε στο Google Drive!</translation>
@@ -211,7 +210,6 @@
 <translation id="3468522857997926824">Δημιουργήθηκαν αντίγραφα ασφαλείας για <ph name="FILE_COUNT" /> φωτογραφίες στο <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Αντιγραφή…</translation>
 <translation id="3475447146579922140">Υπολογιστικό φύλλο Google</translation>
-<translation id="3494768541638400973">Εισαγωγή Ιαπωνικών Google (για πληκτρολόγιο Ιαπωνικών)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> σφάλματα.</translation>
 <translation id="3519867315646775981">Μεταγραφή (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Πορτογαλικά</translation>
@@ -227,6 +225,7 @@
 <translation id="3620292326130836921">Δημιουργήθηκαν αντίγραφα ασφαλείας για όλα τα αρχεία!</translation>
 <translation id="3626281679859535460">Φωτεινότητα</translation>
 <translation id="3644896802912593514">Πλάτος</translation>
+<translation id="3645531960514756307">Ξεκαρφίτσωμα φακέλου</translation>
 <translation id="3678559383040232393">Πληκτρολόγιο Μάλτας</translation>
 <translation id="3685122418104378273">Ο συγχρονισμός του Google Drive είναι απενεργοποιημένος από προεπιλογή όταν χρησιμοποιούνται δεδομένα κινητής τηλεφωνίας.</translation>
 <translation id="3726463242007121105">Δεν είναι δυνατό το άνοιγμα αυτής της συσκευής επειδή δεν υποστηρίζεται το σύστημα αρχείων της.</translation>
@@ -528,7 +527,6 @@
     <ph name="LINE_BREAK1" />
     Βρέθηκαν <ph name="FILE_COUNT" /> αρχεία</translation>
 <translation id="6935521024859866267">Ανάποδα</translation>
-<translation id="6937152069980083337">Εισαγωγή Ιαπωνικών Google (για πληκτρολόγιο ΗΠΑ)</translation>
 <translation id="6939777852457331078">Πληκτρολόγιο ΗΠΑ Workman</translation>
 <translation id="696203921837389374">Ενεργοποίηση συγχρονισμού μέσω δεδομένων κινητής τηλεφωνίας</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -666,6 +664,7 @@
 <translation id="8336153091935557858">Χθες <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Ισλανδικό πληκτρολόγιο</translation>
 <translation id="8342318071240498787">Υπάρχει ήδη αρχείο ή κατάλογος με το ίδιο όνομα.</translation>
+<translation id="8382450452152102026">Στον φάκελο <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Μεταγραφή (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Διαστάσεις</translation>
 <translation id="8412586565681117057">Μέθοδος εισαγωγής Quick</translation>
@@ -719,6 +718,7 @@
 <translation id="9099674669267916096">Πλήθος σελίδων</translation>
 <translation id="9110990317705400362">Αναζητούμε συνεχώς νέους τρόπους για να κάνουμε πιο ασφαλή την περιήγησή σας. Παλιότερα, ένας ιστότοπος μπορούσε να σας ζητήσει να προσθέσετε μια επέκταση στο πρόγραμμα περιήγησής σας. Στις πιο πρόσφατες εκδόσεις του Google Chrome, πρέπει να πείτε ρητά στο Chrome ότι επιθυμείτε την εγκατάσταση αυτών των επεκτάσεων, προσθέτοντάς τες μέσω της σελίδας "Επεκτάσεις". <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Κωδικοποιητής</translation>
+<translation id="9129931661813833980">Καρφίτσωμα φακέλου</translation>
 <translation id="9130775360844693113">Τα μέλη του "<ph name="DESTINATION_NAME" />" θα αποκτήσουν πρόσβαση σε αυτά τα στοιχεία.</translation>
 <translation id="9131598836763251128">Επιλέξτε ένα ή περισσότερα αρχεία</translation>
 <translation id="9133055936679483811">Αποτυχία συμπίεσης. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
index af406842..39f102c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Right</translation>
 <translation id="1351692861129622852">Importing <ph name="FILE_COUNT" /> files...</translation>
 <translation id="1352103415082130575">Thai keyboard (Pattachote)</translation>
-<translation id="1358032944105037487">Japanese keyboard</translation>
 <translation id="1358735829858566124">The file or the directory is not usable.</translation>
 <translation id="1363028406613469049">Track</translation>
 <translation id="1378727793141957596">Welcome to Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> photos backed up to <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Copying...</translation>
 <translation id="3475447146579922140">Google spreadsheet</translation>
-<translation id="3494768541638400973">Google Japanese Input (for Japanese keyboard)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> errors.</translation>
 <translation id="3519867315646775981">Transliteration (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portuguese</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">All backed up!</translation>
 <translation id="3626281679859535460">Brightness</translation>
 <translation id="3644896802912593514">Width</translation>
+<translation id="3645531960514756307">Unpin folder</translation>
 <translation id="3678559383040232393">Maltese keyboard</translation>
 <translation id="3685122418104378273">Google Drive sync is disabled by default, when using mobile data.</translation>
 <translation id="3726463242007121105">This device cannot be opened because its file system is not supported.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> found</translation>
 <translation id="6935521024859866267">Upside Down</translation>
-<translation id="6937152069980083337">Google Japanese Input (for US keyboard)</translation>
 <translation id="6939777852457331078">US Workman keyboard</translation>
 <translation id="696203921837389374">Enable syncing over mobile data</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Yesterday <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Icelandic keyboard</translation>
 <translation id="8342318071240498787">A file or a directory with the same name already exists.</translation>
+<translation id="8382450452152102026">To <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteration (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensions</translation>
 <translation id="8412586565681117057">Quick input method</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Page count</translation>
 <translation id="9110990317705400362">We're constantly looking for ways to make your browsing safer. Previously, any website could prompt you to add an extension into your browser. In the latest versions of Google Chrome, you must explicitly tell Chrome that you want to install these extensions by adding them through the Extensions page. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Pin folder</translation>
 <translation id="9130775360844693113">Members of '<ph name="DESTINATION_NAME" />' will gain access to these items.</translation>
 <translation id="9131598836763251128">Select one or more files</translation>
 <translation id="9133055936679483811">Zipping failed. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
index a5748db..414e547 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Derecha</translation>
 <translation id="1351692861129622852">Importando <ph name="FILE_COUNT" /> archivos…</translation>
 <translation id="1352103415082130575">Teclado tailandés (Pattachote)</translation>
-<translation id="1358032944105037487">Teclado japonés</translation>
 <translation id="1358735829858566124">No se puede utilizar el archivo o el directorio.</translation>
 <translation id="1363028406613469049">Seguimiento</translation>
 <translation id="1378727793141957596">Te damos la bienvenida a Google Drive</translation>
@@ -90,7 +89,7 @@
 <translation id="197560921582345123">Se puede editar</translation>
 <translation id="1984603991036629094">Teclado fonético armenio</translation>
 <translation id="2001796770603320721">Administrar en Drive</translation>
-<translation id="2009067268969781306">Si formateas una unidad, se borrarán todos los datos almacenados. No se puede deshacer esta acción.</translation>
+<translation id="2009067268969781306">Si formateas una unidad, se borrarán todos los datos almacenados en ella. No se puede deshacer esta acción.</translation>
 <translation id="2028997212275086731">Archivo RAR</translation>
 <translation id="2046702855113914483">Ramen</translation>
 <translation id="2070909990982335904">Los nombres que comienzan con un punto se reservan para el sistema. Elige otro nombre.</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Se guardaron <ph name="FILE_COUNT" /> fotos en una copia de seguridad en <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />.</translation>
 <translation id="3470502288861289375">Copiando…</translation>
 <translation id="3475447146579922140">Hoja de cálculo de Google</translation>
-<translation id="3494768541638400973">Entrada en japonés de Google (para teclado japonés)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> errores</translation>
 <translation id="3519867315646775981">Transliteración (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugués</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Todos los archivos están guardados en una copia de seguridad.</translation>
 <translation id="3626281679859535460">Brillo</translation>
 <translation id="3644896802912593514">Ancho</translation>
+<translation id="3645531960514756307">No fijar carpeta</translation>
 <translation id="3678559383040232393">Teclado maltés</translation>
 <translation id="3685122418104378273">La sincronización con Google Drive está inhabilitada de manera predeterminada cuando se usan los datos móviles.</translation>
 <translation id="3726463242007121105">Este dispositivo no puede abrirse porque su sistema de archivos no es compatible.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Se encontró un total de <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Cabeza abajo</translation>
-<translation id="6937152069980083337">Entrada en japonés de Google (para teclado estadounidense)</translation>
 <translation id="6939777852457331078">Teclado Workman (EE. UU.)</translation>
 <translation id="696203921837389374">Habilitar la sincronización mediante datos móviles</translation>
 <translation id="6965382102122355670">Aceptar</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Ayer a las <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Teclado islandés</translation>
 <translation id="8342318071240498787">Ya existe un archivo o un directorio con el mismo nombre.</translation>
+<translation id="8382450452152102026">En <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteración (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensiones</translation>
 <translation id="8412586565681117057">Método de entrada rápido</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Cantidad de páginas</translation>
 <translation id="9110990317705400362">Constantemente buscamos la forma de ofrecerte una navegación más segura. Antes, cualquier sitio web podía pedirte agregar una extensión al navegador. En las últimas versiones de Google Chrome, debes indicar a Chrome explícitamente que deseas instalar estas extensiones al agregarlas en la página Extensiones. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Códec</translation>
+<translation id="9129931661813833980">Fijar carpeta</translation>
 <translation id="9130775360844693113">Los miembros de "<ph name="DESTINATION_NAME" />" tendrán acceso a estos elementos.</translation>
 <translation id="9131598836763251128">Selecciona uno o más archivos.</translation>
 <translation id="9133055936679483811">Se produjo un error al comprimir. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es.xtb b/ui/chromeos/translations/ui_chromeos_strings_es.xtb
index 58fb455..7e7aa40c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_es.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_es.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Derecha</translation>
 <translation id="1351692861129622852">Importando <ph name="FILE_COUNT" /> archivos...</translation>
 <translation id="1352103415082130575">Teclado tailandés (pattachote)</translation>
-<translation id="1358032944105037487">Teclado japonés</translation>
 <translation id="1358735829858566124">No se puede utilizar el archivo o el directorio.</translation>
 <translation id="1363028406613469049">Pista</translation>
 <translation id="1378727793141957596">Te damos la bienvenida a Google Drive</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Se ha realizado la copia de seguridad de <ph name="FILE_COUNT" /> fotos en <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Copiando...</translation>
 <translation id="3475447146579922140">Hoja de cálculo de Google</translation>
-<translation id="3494768541638400973">Entrada de japonés de Google (para teclado japonés)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> errores.</translation>
 <translation id="3519867315646775981">Transliteración (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugués</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Se ha realizado la copia de seguridad de todos los archivos</translation>
 <translation id="3626281679859535460">Brillo</translation>
 <translation id="3644896802912593514">Anchura</translation>
+<translation id="3645531960514756307">No fijar carpeta</translation>
 <translation id="3678559383040232393">Teclado maltés</translation>
 <translation id="3685122418104378273">La sincronización con Google Drive está inhabilitada de forma predeterminada en redes de datos móviles.</translation>
 <translation id="3726463242007121105">No se puede abrir este dispositivo porque no se admite su sistema de archivos.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Archivos encontrados: <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Boca abajo</translation>
-<translation id="6937152069980083337">Entrada de japonés de Google (para teclado estadounidense)</translation>
 <translation id="6939777852457331078">Teclado estilo Workman (EE. UU.)</translation>
 <translation id="696203921837389374">Habilitar sincronización a través de redes de datos móviles</translation>
 <translation id="6965382102122355670">Aceptar</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Ayer a las <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Teclado islandés</translation>
 <translation id="8342318071240498787">Ya existe un archivo o un directorio con el mismo nombre.</translation>
+<translation id="8382450452152102026">A <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteración (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensiones</translation>
 <translation id="8412586565681117057">Método de entrada abreviado</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Número de páginas</translation>
 <translation id="9110990317705400362">No dejamos de buscar formas de ofrecerte una navegación más segura. Anteriormente, cualquier sitio web podía solicitarte que añadieras una extensión al navegador. En las últimas versiones de Google Chrome, debes indicarle explícitamente a Chrome que quieres instalar esas extensiones añadiéndolas a través de la página Extensiones. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Códec</translation>
+<translation id="9129931661813833980">Fijar carpeta</translation>
 <translation id="9130775360844693113">Los miembros de "<ph name="DESTINATION_NAME" />" obtendrán acceso a estos elementos.</translation>
 <translation id="9131598836763251128">Selecciona uno o varios archivos</translation>
 <translation id="9133055936679483811">Error al comprimir (<ph name="ERROR_MESSAGE" />)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_et.xtb b/ui/chromeos/translations/ui_chromeos_strings_et.xtb
index 5dc5be0..193bd56e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_et.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_et.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Paremale</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> faili importimine ...</translation>
 <translation id="1352103415082130575">Tai klaviatuur (Pattachote)</translation>
-<translation id="1358032944105037487">Jaapani klaviatuur</translation>
 <translation id="1358735829858566124">Fail või kataloog ei ole kasutatav.</translation>
 <translation id="1363028406613469049">Rada</translation>
 <translation id="1378727793141957596">Tere tulemast Google Drive'i!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotot on varundatud teenuses <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Kopeerimine ...</translation>
 <translation id="3475447146579922140">Google'i arvutustabel</translation>
-<translation id="3494768541638400973">Google'i jaapanikeelne sisestus (jaapani klaviatuuri jaoks)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> viga.</translation>
 <translation id="3519867315646775981">Transliteratsioon (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugali keel</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Kõik on varundatud.</translation>
 <translation id="3626281679859535460">Eredus</translation>
 <translation id="3644896802912593514">Laius</translation>
+<translation id="3645531960514756307">Vabasta kaust</translation>
 <translation id="3678559383040232393">Malta klaviatuur</translation>
 <translation id="3685122418104378273">Google Drive'i sünkroonimine on mobiilse andmeside kasutamisel vaikimisi keelatud.</translation>
 <translation id="3726463242007121105">Seadet ei saa avada, sest selle failisüsteemi ei toetata.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Leiti <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Tagurpidi</translation>
-<translation id="6937152069980083337">Google'i jaapanikeelne sisestus (USA klaviatuuri jaoks)</translation>
 <translation id="6939777852457331078">USA Workmani klaviatuur</translation>
 <translation id="696203921837389374">Luba sünkroonimine mobiilse andmeside kaudu</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Eile kell <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Islandi klaviatuur</translation>
 <translation id="8342318071240498787">Sama nimega fail või kataloog on juba olemas.</translation>
+<translation id="8382450452152102026">Kausta <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteratsioon (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensioonid</translation>
 <translation id="8412586565681117057">Kiire sisestusmeetod</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Lehtede arv</translation>
 <translation id="9110990317705400362">Otsime alati võimalusi, kuidas muuta sirvimine veelgi turvalisemaks. Varem võis iga veebisait paluda teil lisada brauserisse laiendusi. Google Chrome'i uusimas versioonis peate Chrome'ile selgelt ütlema, et soovite neid laiendusi installida, lisades need lehe Laiendused kaudu. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodek</translation>
+<translation id="9129931661813833980">Kinnita kaust</translation>
 <translation id="9130775360844693113">Sihtkoha „<ph name="DESTINATION_NAME" />” liikmed saavad juurdepääsu nendele üksustele.</translation>
 <translation id="9131598836763251128">Valige üks või mitu faili</translation>
 <translation id="9133055936679483811">Pakkimine ebaõnnestus. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
index 1728dbb..74789f3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">راست</translation>
 <translation id="1351692861129622852">وارد کردن <ph name="FILE_COUNT" /> فایل...</translation>
 <translation id="1352103415082130575">صفحه‌کلید تایلندی (پاتاشوت)</translation>
-<translation id="1358032944105037487">صفحه‌کلید ژاپنی</translation>
 <translation id="1358735829858566124">فایل یا فهرست راهنما قابل استفاده نیست.</translation>
 <translation id="1363028406613469049">تراک</translation>
 <translation id="1378727793141957596">‏به Google Drive خوش آمدید!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">‏<ph name="FILE_COUNT" /> عکس در <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> پشتیبان گرفته شدند</translation>
 <translation id="3470502288861289375">در حال کپی کردن...</translation>
 <translation id="3475447146579922140">‏صفحه‌گسترده Google</translation>
-<translation id="3494768541638400973">‏ورودی ژاپنی Google (برای صفحه‌کلید ژاپنی)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> خطا.</translation>
 <translation id="3519867315646775981">‏نویسه‌گردانی (shalom ← ‏שלום)</translation>
 <translation id="3522708245912499433">پرتغالی</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">همه پشتیبان‌گیری شدند.</translation>
 <translation id="3626281679859535460">روشنایی</translation>
 <translation id="3644896802912593514">عرض</translation>
+<translation id="3645531960514756307">برداشتن پین پوشه</translation>
 <translation id="3678559383040232393">صفحه‌کلید مالتی</translation>
 <translation id="3685122418104378273">‏هنگام استفاده از داده‌های شبکه همراه، همگام‌سازی Google Drive به صورت پیش‌فرض غیرفعال است.</translation>
 <translation id="3726463242007121105">این دستگاه باز نمی‌شود زیرا سیستم فایل آن پشتیبانی نمی‌شود.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> مورد پیدا شد</translation>
 <translation id="6935521024859866267">وارونه</translation>
-<translation id="6937152069980083337">‏ورودی ژاپنی Google (برای صفحه‌کلید آمریکایی)</translation>
 <translation id="6939777852457331078">‏صفحه‌کلید US Workman</translation>
 <translation id="696203921837389374">فعال کردن همگام‌سازی از طریق داده تلفن همراه</translation>
 <translation id="6965382102122355670">قبول</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">دیروز <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">صفحه‌کلید ایسلندی</translation>
 <translation id="8342318071240498787">یک فایل یا یک پوشه با همین نام از قبل وجود دارد.</translation>
+<translation id="8382450452152102026">به <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">‏نویسه‌گردانی (emandi ← ‏ఏమండీ)</translation>
 <translation id="8395901698320285466">ابعاد</translation>
 <translation id="8412586565681117057">روش ورودی سریع</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">تعداد صفحه</translation>
 <translation id="9110990317705400362">‏همواره به دنبال راه‌هایی هستیم تا مرورتان را ایمن‌تر کنیم. قبلاً هر وب‌سایتی از شما می‌خواست برنامه‌افزودنی‌ای را در مرورگرتان اضافه کنید. در جدیدترین نسخه Google Chrome، باید به Chrome صراحتاً بگویید که می‌خواهید با افزودن این برنامه‌های افزودنی از طریق صفحه افزونه‌ها آنها را نصب کنید. <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">کدک</translation>
+<translation id="9129931661813833980">پین کردن پوشه</translation>
 <translation id="9130775360844693113">اعضای «<ph name="DESTINATION_NAME" />» به این موارد دسترسی پیدا می‌کنند.</translation>
 <translation id="9131598836763251128">انتخاب یک یا چند فایل</translation>
 <translation id="9133055936679483811">فشرده‌سازی انجام نشد. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
index 276a6a9..d94def43 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Oikealle</translation>
 <translation id="1351692861129622852">Tuodaan <ph name="FILE_COUNT" /> tiedostoa…</translation>
 <translation id="1352103415082130575">Thainkielinen näppäimistö (pattachote)</translation>
-<translation id="1358032944105037487">Näppäimistö: japani</translation>
 <translation id="1358735829858566124">Tiedosto tai hakemisto ei ole käytettävissä.</translation>
 <translation id="1363028406613469049">Raita</translation>
 <translation id="1378727793141957596">Tervetuloa Google Driveen!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> valokuvaa on varmuuskopioitu <ph name="BEGIN_LINK" />Google Driveen<ph name="END_LINK" />.</translation>
 <translation id="3470502288861289375">Kopioidaan…</translation>
 <translation id="3475447146579922140">Google-laskentataulukko</translation>
-<translation id="3494768541638400973">Googlen japanilainen syöttötapa (japanilaiselle näppäimistölle)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> virhettä.</translation>
 <translation id="3519867315646775981">Translitterointi (shalom ← שלום)</translation>
 <translation id="3522708245912499433">portugali</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Kaikki on varmuuskopioitu!</translation>
 <translation id="3626281679859535460">Kirkkaus</translation>
 <translation id="3644896802912593514">Leveys</translation>
+<translation id="3645531960514756307">Irrota kansio</translation>
 <translation id="3678559383040232393">Näppäimistö: malta</translation>
 <translation id="3685122418104378273">Google Driven synkronointi on oletuksena pois käytöstä käyttäessäsi mobiilitiedonsiirtoa.</translation>
 <translation id="3726463242007121105">Tätä laitetta ei voi avata, sillä sen tiedostojärjestelmää ei tueta.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> löytyi</translation>
 <translation id="6935521024859866267">Ylösalaisin</translation>
-<translation id="6937152069980083337">Googlen japanilainen syöttötapa (yhdysvaltalaiselle näppäimistölle)</translation>
 <translation id="6939777852457331078">Näppäimistö: Yhdysvallat, Workman</translation>
 <translation id="696203921837389374">Ota käyttöön synkronointi mobiilitiedonsiirron kautta</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Eilen <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Islantilainen näppäimistö</translation>
 <translation id="8342318071240498787">Samanniminen tiedosto tai hakemisto on jo olemassa.</translation>
+<translation id="8382450452152102026">Kohde: <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Translitterointi (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Mittasuhteet</translation>
 <translation id="8412586565681117057">Nopea syöttötapa</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Sivumäärä</translation>
 <translation id="9110990317705400362">Pyrimme jatkuvasti tekemään selaamisesta turvallisempaa. Aiemmin mikä tahansa sivusto pystyi pyytämään laajennuksen lisäämistä selaimeen. Uusimmissa Google Chrome -versioissa sinun on erikseen ilmoitettava Chromelle, että haluat asentaa nämä laajennukset, lisäämällä ne Laajennukset-sivulla. <ph name="BEGIN_LINK" />Lisätietoja<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Pakkaus</translation>
+<translation id="9129931661813833980">Kiinnitä kansio</translation>
 <translation id="9130775360844693113">Paikan <ph name="DESTINATION_NAME" /> jäsenet saavat käyttöoikeuden näihin kohteisiin.</translation>
 <translation id="9131598836763251128">Valitse vähintään yksi tiedosto</translation>
 <translation id="9133055936679483811">Pakkaus epäonnistui. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
index 2d954c99..276637c7 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Kanan</translation>
 <translation id="1351692861129622852">Nag-i-import ng <ph name="FILE_COUNT" /> (na) file...</translation>
 <translation id="1352103415082130575">Thai keyboard (Pattachote)</translation>
-<translation id="1358032944105037487">Hapon na keyboard</translation>
 <translation id="1358735829858566124">Hindi nagagamit ang file o ang direktoryo.</translation>
 <translation id="1363028406613469049">Track</translation>
 <translation id="1378727793141957596">Maligayang pagdating sa Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> (na) larawan ang na-back up sa <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Kinokopya...</translation>
 <translation id="3475447146579922140">Spreadsheet ng Google</translation>
-<translation id="3494768541638400973">Pag-input na Japanese ng Google (para sa Japanese na keyboard)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> (na) error.</translation>
 <translation id="3519867315646775981">Transliteration (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portuguese</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Naka-back up na ang lahat!</translation>
 <translation id="3626281679859535460">Tingkad</translation>
 <translation id="3644896802912593514">Lapad</translation>
+<translation id="3645531960514756307">I-unpin ang folder</translation>
 <translation id="3678559383040232393">Maltese keyboard</translation>
 <translation id="3685122418104378273">Naka-disable ang Google Drive bilang default, kapag gumagamit ng mobile data.</translation>
 <translation id="3726463242007121105">Hindi mabuksan ang device na ito dahil hindi sinusuportahan ang filesystem nito.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> ang nakita</translation>
 <translation id="6935521024859866267">Paru-paro</translation>
-<translation id="6937152069980083337">Pag-input na Japanese ng Google (para sa US na keyboard)</translation>
 <translation id="6939777852457331078">US Workman na keyboard</translation>
 <translation id="696203921837389374">I-enable ang pagsi-sync gamit ang mobile data</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Kahapon <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Icelandic keyboard</translation>
 <translation id="8342318071240498787">Umiiral na ang isang file o direktoryong may parehong pangalan.</translation>
+<translation id="8382450452152102026">Sa <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteration (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Mga Sakop</translation>
 <translation id="8412586565681117057">Mabilis na paraan ng pag-input</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Bilang ng page</translation>
 <translation id="9110990317705400362">Patuloy kaming naghahanap ng mga paraan upang gawing mas ligtas ang iyong pagba-browse. Noong nakaraan, maaari kang i-prompt ng anumang website na magdagdag ng extension sa iyong browser. Sa mga pinakabagong bersyon ng Google Chrome, dapat na tahasan mong sabihin sa Chrome na gusto mong i-install ang mga extension na ito sa pamamagitan ng pagdaragdag sa mga ito sa page ng Mga Extension. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">I-pin ang folder</translation>
 <translation id="9130775360844693113">Magkakaroon ng access ang mga miyembro ng '<ph name="DESTINATION_NAME" />' sa mga item na ito.</translation>
 <translation id="9131598836763251128">Pumili ng isa o higit pang mga file</translation>
 <translation id="9133055936679483811">Nabigo ang pag-zip. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
index 95ecd9b1..ca92215 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fr.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Vers la droite</translation>
 <translation id="1351692861129622852">Importation de <ph name="FILE_COUNT" /> fichiers en cours…</translation>
 <translation id="1352103415082130575">Clavier thaï (pattachote)</translation>
-<translation id="1358032944105037487">Clavier japonais</translation>
 <translation id="1358735829858566124">Le fichier ou le répertoire ne sont pas utilisables.</translation>
 <translation id="1363028406613469049">Titre</translation>
 <translation id="1378727793141957596">Bienvenue dans Google Drive !</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> photos ont été sauvegardées sur <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />.</translation>
 <translation id="3470502288861289375">Copie en cours…</translation>
 <translation id="3475447146579922140">Feuille de calcul Google</translation>
-<translation id="3494768541638400973">Mode de saisie Google du japonais (pour clavier japonais)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> erreurs</translation>
 <translation id="3519867315646775981">Translittération (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugais</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Tout le contenu a été sauvegardé</translation>
 <translation id="3626281679859535460">Luminosité</translation>
 <translation id="3644896802912593514">Largeur</translation>
+<translation id="3645531960514756307">Retirer le dossier</translation>
 <translation id="3678559383040232393">Clavier maltais</translation>
 <translation id="3685122418104378273">Par défaut, la synchronisation Google Drive est désactivée lors de l'utilisation des données mobiles.</translation>
 <translation id="3726463242007121105">Impossible d'ouvrir ce périphérique, car son système de fichiers n'est pas compatible.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> trouvées</translation>
 <translation id="6935521024859866267">À l'envers</translation>
-<translation id="6937152069980083337">Mode de saisie Google du japonais (pour clavier américain)</translation>
 <translation id="6939777852457331078">Clavier Workman américain</translation>
 <translation id="696203921837389374">Activer la synchronisation via les données mobiles</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Hier à <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Clavier islandais</translation>
 <translation id="8342318071240498787">Un fichier ou un répertoire du même nom existe déjà.</translation>
+<translation id="8382450452152102026">Destination : <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Translittération (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensions</translation>
 <translation id="8412586565681117057">Mode de saisie quick</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Nombre de pages</translation>
 <translation id="9110990317705400362">Nous recherchons constamment à rendre votre navigation plus sûre. Auparavant, vous pouviez être invité à ajouter une extension dans votre navigateur par n'importe quel site Web. Dans les dernières versions de Google Chrome, vous devez explicitement indiquer que vous souhaitez installer une extension en l'ajoutant via la page "Extensions". <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Épingler le dossier</translation>
 <translation id="9130775360844693113">Les membres de "<ph name="DESTINATION_NAME" />" auront accès à ces éléments.</translation>
 <translation id="9131598836763251128">Sélectionnez un ou plusieurs fichiers</translation>
 <translation id="9133055936679483811">Échec de la compression au format .zip. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
index bd82ec7..2cc562d2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">જમણે</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ફાઇલો આયાત કરી રહ્યું છે...</translation>
 <translation id="1352103415082130575">થાઈ કીબોર્ડ (Pattachote)</translation>
-<translation id="1358032944105037487">જાપાનીઝ કીબોર્ડ</translation>
 <translation id="1358735829858566124">ફાઇલ કે ડિરેક્ટરી ઉપયોગ યોગ્ય નથી.</translation>
 <translation id="1363028406613469049">ટ્રૅક</translation>
 <translation id="1378727793141957596">Google ડ્રાઇવ પર આપનું સ્વાગત છે!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google ડ્રાઇવ<ph name="END_LINK" /> પર <ph name="FILE_COUNT" /> ફોટાનો બેક અપ લેવાયો</translation>
 <translation id="3470502288861289375">કૉપિ કરી રહ્યું છે...</translation>
 <translation id="3475447146579922140">Google સ્પ્રેડશીટ</translation>
-<translation id="3494768541638400973">Google જાપાનીઝ ઇનપુટ (જાપાનીઝ કીબોર્ડ માટે)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> ભૂલો.</translation>
 <translation id="3519867315646775981">લિવ્યંતરણ (shalom ← שלום)</translation>
 <translation id="3522708245912499433">પોર્ટુગીઝ</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">તમામનો બેક અપ લેવાયો!</translation>
 <translation id="3626281679859535460">તેજ</translation>
 <translation id="3644896802912593514">પહોળાઈ</translation>
+<translation id="3645531960514756307">ફોલ્ડરને અનપિન કરો</translation>
 <translation id="3678559383040232393">માલ્ટિઝ કીબોર્ડ</translation>
 <translation id="3685122418104378273">મોબાઇલ ડેટાનો ઉપયોગ કરી રહ્યાં હોય ત્યારે, Google ડ્રાઇવ સિંક ડિફોલ્ટ રૂપે બંધ છે.</translation>
 <translation id="3726463242007121105">આ ઉપકરણ ખોલી શકાતું નથી કારણ કે તેની ફાઇલસિસ્ટમને સપોર્ટ નથી.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> મળી</translation>
 <translation id="6935521024859866267">ઊલટું</translation>
-<translation id="6937152069980083337">Google જાપાનીઝ ઇનપુટ (યુએસ કીબોર્ડ માટે)</translation>
 <translation id="6939777852457331078">US Workman કીબોર્ડ</translation>
 <translation id="696203921837389374">મોબાઇલ ડેટા પર સિંક કરવાનું ચાલુ કરો</translation>
 <translation id="6965382102122355670">બરાબર, સમજાઇ ગયું</translation>
@@ -645,6 +643,7 @@
 <translation id="8336153091935557858">ગઈ કાલે <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">આઇસલેન્ડિક કીબોર્ડ</translation>
 <translation id="8342318071240498787">સમાન નામની ફાઇલ અથવા ડિરેક્ટરી પહેલાથી જ અસ્તિત્વમાં છે.</translation>
+<translation id="8382450452152102026"><ph name="FOLDER_NAME" />માં</translation>
 <translation id="8391950649760071442">લિવ્યંતરણ (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">પરિમાણો</translation>
 <translation id="8412586565681117057">ક્વિક ઇનપુટ પદ્ધતિ</translation>
@@ -694,6 +693,7 @@
 <translation id="9099674669267916096">પેજની સંખ્યા</translation>
 <translation id="9110990317705400362">અમે સતત તમારા બ્રાઉઝિંગને વધુ સલામત બનાવવાની રીતો શોધી રહ્યાં છીએ. પૂર્વમાં, કોઈપણ વેબસાઇટ તમને તમારા બ્રાઉઝરમાં એક્સ્ટેન્શન ઉમેરવા માટે સંકેત આપી શકતી હતી. Google Chrome ના નવીનતમ સંસ્કરણોમાં, તમે એક્સ્ટેન્શન્સ પૃષ્ઠ દ્વારા આ એક્સ્ટેન્શન્સને ઉમેરીને તમે તેમને ઇન્સ્ટોલ કરવા માગો છો તે, તમારે Chrome ને સ્પષ્ટપણે કહેવું આવશ્યક છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">કૉડેક</translation>
+<translation id="9129931661813833980">ફોલ્ડર પિન કરો</translation>
 <translation id="9130775360844693113">'<ph name="DESTINATION_NAME" />'ના સભ્યો આ આઇટમનો ઍક્સેસ મેળવશે.</translation>
 <translation id="9131598836763251128">એક અથવા વધુ ફાઇલ પસંદ કરો</translation>
 <translation id="9133055936679483811">ઝિપ કરવાનું નિષ્ફળ: <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hi.xtb b/ui/chromeos/translations/ui_chromeos_strings_hi.xtb
index 492e1301..94ecefb 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hi.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hi.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">दाएं</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> फ़ाइलें आयात की जा रही हैं...</translation>
 <translation id="1352103415082130575">थाई कीबोर्ड (पैट्टाशोटे)</translation>
-<translation id="1358032944105037487">जापानी कीबोर्ड</translation>
 <translation id="1358735829858566124">फा़इल या निर्देशिका उपयोग करने योग्य नहीं है.</translation>
 <translation id="1363028406613469049">ट्रैक</translation>
 <translation id="1378727793141957596">Google डिस्क में आपका स्वागत है!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> फ़ोटो का <ph name="BEGIN_LINK" />Google डिस्‍क<ph name="END_LINK" /> में बैक अप लिया गया</translation>
 <translation id="3470502288861289375">कॉपी किया जा रहा है...</translation>
 <translation id="3475447146579922140">Google spreadsheet</translation>
-<translation id="3494768541638400973">Google जापानी इनपुट (जापानी कीबोर्ड के लिए)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> त्रुटियां.</translation>
 <translation id="3519867315646775981">लिप्यंतरण (shalom ← שלום)</translation>
 <translation id="3522708245912499433">पुर्तगाली</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">सभी का बैक अप लिया गया!</translation>
 <translation id="3626281679859535460">स्क्रीन की रोशनी</translation>
 <translation id="3644896802912593514">चौड़ाई</translation>
+<translation id="3645531960514756307">फ़ोल्डर को अनपिन करें</translation>
 <translation id="3678559383040232393">माल्‍टीज़ कीबोर्ड</translation>
 <translation id="3685122418104378273">मोबाइल डेटा का उपयोग करते समय, Google डिस्‍क समन्‍वयन डिफ़ॉल्‍ट रूप से अक्षम रहता है.</translation>
 <translation id="3726463242007121105">यह डिवाइस नहीं खोला जा सकता क्‍योंकि इसका फ़ाइल सिस्‍टम समर्थित नहीं है.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> मिल गया</translation>
 <translation id="6935521024859866267">ऊपरी भाग नीचे</translation>
-<translation id="6937152069980083337">Google जापानी इनपुट (यूएस कीबोर्ड के लिए)</translation>
 <translation id="6939777852457331078">यूएस वर्कमैन कीबोर्ड</translation>
 <translation id="696203921837389374">मोबाइल डेटा पर सिंक करना चालू करें</translation>
 <translation id="6965382102122355670">ठीक है</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">कल <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">आइसलैंडिक कीबोर्ड</translation>
 <translation id="8342318071240498787">समान नाम वाली फ़ाइल या निर्देशिका पहले से ही मौजूद है.</translation>
+<translation id="8382450452152102026"><ph name="FOLDER_NAME" /> पर</translation>
 <translation id="8391950649760071442">लिप्यंतरण (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">आयाम</translation>
 <translation id="8412586565681117057">क्विक इनपुट पद्धति</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">पेज संख्या</translation>
 <translation id="9110990317705400362">हम आपकी ब्राउज़िंग को सुरक्षित रखने के तरीकों पर लगातार काम कर रहे हैं. पूर्व में, कोई भी वेबसाइट आपको अपने ब्राउज़र में एक्सटेंशन जोड़ने के लिए संकेत दे सकती थी. Google Chrome के नवीनतम संस्करणों में, आपको एक्सटेंशन पेज के माध्यम से इन एक्सटेंशन को जोड़कर Chrome को स्पष्ट रूप से बताना होगा कि आप इन्हें इंस्टॉल करना चाहते हैं. <ph name="BEGIN_LINK" />और जानें<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">कोडेक</translation>
+<translation id="9129931661813833980">पिन फ़ोल्डर</translation>
 <translation id="9130775360844693113">'<ph name="DESTINATION_NAME" />' के सदस्यों को इन आइटम का एक्सेस मिल जाएगा.</translation>
 <translation id="9131598836763251128">एक या ज़्यादा फ़ाइल को चुनें</translation>
 <translation id="9133055936679483811">ज़िप करना विफल रहा. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
index ffd34e8..65b9bfa 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Udesno</translation>
 <translation id="1351692861129622852">Uvoz datoteka (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1352103415082130575">tajska tipkovnica (pattachote)</translation>
-<translation id="1358032944105037487">Japanska tipkovnica</translation>
 <translation id="1358735829858566124">Datoteka ili direktorij nisu upotrebljivi.</translation>
 <translation id="1363028406613469049">Zvučni zapis</translation>
 <translation id="1378727793141957596">Dobro došli u Google disk!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Izrađene su sigurnosne kopije fotografija na <ph name="BEGIN_LINK" />Google disku<ph name="END_LINK" /> (ukupno <ph name="FILE_COUNT" />)</translation>
 <translation id="3470502288861289375">Kopiranje...</translation>
 <translation id="3475447146579922140">Googleova proračunska tablica</translation>
-<translation id="3494768541638400973">Google japanski unos (za japanske tipkovnice)</translation>
 <translation id="3495304270784461826">Broj pogrešaka: <ph name="COUNT" />.</translation>
 <translation id="3519867315646775981">transliteracija (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugalski</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Sve je sigurnosno kopirano!</translation>
 <translation id="3626281679859535460">Svjetlina</translation>
 <translation id="3644896802912593514">Širina</translation>
+<translation id="3645531960514756307">Otkvači mapu</translation>
 <translation id="3678559383040232393">Malteška tipkovnica</translation>
 <translation id="3685122418104378273">Sinkronizacija Google diska onemogućena je prema zadanim postavkama kada se upotrebljavaju mobilni podaci.</translation>
 <translation id="3726463242007121105">Nije moguće otvoriti ovaj uređaj jer nije podržan njegov datotečni sustav.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Pronađene su datoteke (ukupno <ph name="FILE_COUNT" />)</translation>
 <translation id="6935521024859866267">Naopako</translation>
-<translation id="6937152069980083337">Google japanski unos (za američke tipkovnice)</translation>
 <translation id="6939777852457331078">Američka Workman tipkovnica</translation>
 <translation id="696203921837389374">Omogući sinkronizaciju putem mobilnih podataka</translation>
 <translation id="6965382102122355670">U redu</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Jučer u <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Islandska tipkovnica</translation>
 <translation id="8342318071240498787">Datoteka ili direktorij s istim imenom već postoje.</translation>
+<translation id="8382450452152102026">U mapu <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">transliteracija (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimenzije</translation>
 <translation id="8412586565681117057">brzi način unosa</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Broj stranica</translation>
 <translation id="9110990317705400362">Neprestano nastojimo učiniti pregledavanje interneta sigurnijim. Ranije je bilo koja web-lokacija mogla tražiti da dodate proširenje u preglednik. Najnovije verzije Google Chromea traže da izričito odobrite instalaciju ovih proširenja tako da ih dodate na stranici Proširenja. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodek</translation>
+<translation id="9129931661813833980">Prikvači mapu</translation>
 <translation id="9130775360844693113">Članovi grupe "<ph name="DESTINATION_NAME" />" dobit će pristup tim stavkama.</translation>
 <translation id="9131598836763251128">Odaberite jednu ili više datoteka</translation>
 <translation id="9133055936679483811">Komprimiranje nije uspjelo. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
index 9a062eb..7de5c1a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Jobbra</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> fájl importálása folyamatban…</translation>
 <translation id="1352103415082130575">Thai billentyűzet (Pattachote)</translation>
-<translation id="1358032944105037487">Japán billentyűzet</translation>
 <translation id="1358735829858566124">A fájl vagy könyvtár nem használható.</translation>
 <translation id="1363028406613469049">Szám</translation>
 <translation id="1378727793141957596">Üdvözli a Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotó biztonsági mentése végrehajtva a <ph name="BEGIN_LINK" />Google Drive-on<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Másolás...</translation>
 <translation id="3475447146579922140">Google-táblázat</translation>
-<translation id="3494768541638400973">Google japán beviteli mód (japán billentyűzetre)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> hiba.</translation>
 <translation id="3519867315646775981">Átírás (shalom ← שלום)</translation>
 <translation id="3522708245912499433">portugál</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Mindenről készült biztonsági másolat!</translation>
 <translation id="3626281679859535460">Fényerő</translation>
 <translation id="3644896802912593514">Szélesség</translation>
+<translation id="3645531960514756307">Mappa rögzítésének feloldása</translation>
 <translation id="3678559383040232393">Máltai billentyűzet</translation>
 <translation id="3685122418104378273">A Google Drive szinkronizálása alapértelmezés szerint le van tiltva mobiladat-kapcsolat használatakor.</translation>
 <translation id="3726463242007121105">Ezt az eszközt nem lehet megnyitni, mert a fájlrendszere nem támogatott.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     A következőket találtuk: <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Fejjel lefelé</translation>
-<translation id="6937152069980083337">Google japán beviteli mód (US billentyűzetre)</translation>
 <translation id="6939777852457331078">USA „Workman” billentyűzet</translation>
 <translation id="696203921837389374">Szinkronizálás engedélyezése mobiladat-kapcsolaton</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Tegnap <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Izlandi billentyűzet</translation>
 <translation id="8342318071240498787">Már létezik ugyanezzel a névvel egy fájl vagy egy könyvtár.</translation>
+<translation id="8382450452152102026">Ide: <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Átírás (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Méret</translation>
 <translation id="8412586565681117057">Gyors beviteli mód</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Oldalak száma</translation>
 <translation id="9110990317705400362">Folyamatosan keressük az új módszereket, hogy a böngészést biztonságosabbá tegyük. Korábban bármelyik webhely megkérhette Önt, hogy adjon hozzá egy bővítményt a böngészőjéhez. A Google Chrome legújabb verzióiban kifejezetten meg kell mondania a Chrome-nak, hogy telepíteni szeretné ezeket a bővítményeket. Ehhez a Bővítmények oldalon kell hozzáadnia őket. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodek</translation>
+<translation id="9129931661813833980">Mappa rögzítése</translation>
 <translation id="9130775360844693113">A(z) „<ph name="DESTINATION_NAME" />” tagjai hozzá fognak férni ezekhez az elemekhez.</translation>
 <translation id="9131598836763251128">Válasszon ki egy vagy több fájlt</translation>
 <translation id="9133055936679483811">A tömörítés sikertelen. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_id.xtb b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
index e4d15d78..7db49452d 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_id.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Kanan</translation>
 <translation id="1351692861129622852">Mengimpor <ph name="FILE_COUNT" /> file...</translation>
 <translation id="1352103415082130575">Keyboard Thai (Pattachote)</translation>
-<translation id="1358032944105037487">Keyboard untuk bahasa Jepang</translation>
 <translation id="1358735829858566124">File atau direktori tidak dapat digunakan.</translation>
 <translation id="1363028406613469049">Lacak</translation>
 <translation id="1378727793141957596">Selamat datang di Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> foto dicadangkan ke <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Menyalin...</translation>
 <translation id="3475447146579922140">Spreadsheet Google</translation>
-<translation id="3494768541638400973">Masukan Jepang Google (untuk keyboard Jepang)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> kesalahan.</translation>
 <translation id="3519867315646775981">Transliterasi (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugis</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Semua dicadangkan!</translation>
 <translation id="3626281679859535460">Kecerahan</translation>
 <translation id="3644896802912593514">Lebar</translation>
+<translation id="3645531960514756307">Lepas pin pada folder</translation>
 <translation id="3678559383040232393">Keyboard Malta</translation>
 <translation id="3685122418104378273">Sinkronisasi Google Drive dinonaktifkan secara default saat menggunakan data seluler.</translation>
 <translation id="3726463242007121105">Perangkat ini tidak dapat dibuka karena sistem berkasnya tidak didukung.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> ditemukan</translation>
 <translation id="6935521024859866267">Terbalik</translation>
-<translation id="6937152069980083337">Masukan Jepang Google (untuk keyboard AS)</translation>
 <translation id="6939777852457331078">Keyboard Workman AS</translation>
 <translation id="696203921837389374">Aktifkan sinkronisasi melalui data seluler</translation>
 <translation id="6965382102122355670">Oke</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858"><ph name="YESTERDAY_DAYTIME" /> kemarin</translation>
 <translation id="8336579025507394412">Keyboard Islandia</translation>
 <translation id="8342318071240498787">Sudah ada file atau direktori dengan nama yang sama.</translation>
+<translation id="8382450452152102026">Ke <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliterasi (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensi</translation>
 <translation id="8412586565681117057">Metode masukan Quick</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Hitungan halaman</translation>
 <translation id="9110990317705400362">Kami terus mencari cara agar penjelajahan Anda lebih aman. Sebelumnya, situs web apa pun dapat meminta Anda untuk menambahkan ekstensi ke browser. Pada versi terbaru Google Chrome, Anda harus memberitahukan dengan jelas kepada Chrome bahwa Anda ingin memasang ekstensi ini dengan menambahkannya melalui halaman Ekstensi. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Pasang pin pada folder</translation>
 <translation id="9130775360844693113">Anggota '<ph name="DESTINATION_NAME" />' akan mendapatkan akses ke item berikut.</translation>
 <translation id="9131598836763251128">Pilih satu atau beberapa file</translation>
 <translation id="9133055936679483811">Gagal membuat file zip. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_it.xtb b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
index b874c8a5..c5ef27e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_it.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Destra</translation>
 <translation id="1351692861129622852">Importazione di <ph name="FILE_COUNT" /> file...</translation>
 <translation id="1352103415082130575">Tastiera Thailandese (Pattachote)</translation>
-<translation id="1358032944105037487">Tastiera giapponese</translation>
 <translation id="1358735829858566124">Il file o la directory non è utilizzabile.</translation>
 <translation id="1363028406613469049">Traccia</translation>
 <translation id="1378727793141957596">Benvenuto in Google Drive.</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Backup di <ph name="FILE_COUNT" /> foto su <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> completato</translation>
 <translation id="3470502288861289375">Copia...</translation>
 <translation id="3475447146579922140">Foglio di calcolo Google</translation>
-<translation id="3494768541638400973">Metodo di immissione giapponese Google (per tastiera giapponese)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> errori.</translation>
 <translation id="3519867315646775981">Traslitterazione (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portoghese</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Backup di tutti i contenuti completato.</translation>
 <translation id="3626281679859535460">Luminosità</translation>
 <translation id="3644896802912593514">Larghezza</translation>
+<translation id="3645531960514756307">Sblocca cartella</translation>
 <translation id="3678559383040232393">Tastiera Maltese</translation>
 <translation id="3685122418104378273">La sincronizzazione con Google Drive è disattivata per impostazione predefinita quando vengono utilizzati i dati mobili.</translation>
 <translation id="3726463242007121105">Impossibile aprire il dispositivo perché il suo filesystem non è supportato.</translation>
@@ -513,7 +512,6 @@
     <ph name="LINE_BREAK1" />
     Elementi trovati: <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Capovolta</translation>
-<translation id="6937152069980083337">Metodo di immissione giapponese Google (per tastiera USA)</translation>
 <translation id="6939777852457331078">Tastiera Workman USA</translation>
 <translation id="696203921837389374">Attiva sincronizzazione tramite dati mobili</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -646,6 +644,7 @@
 <translation id="8336153091935557858">Ieri alle <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Tastiera islandese</translation>
 <translation id="8342318071240498787">Esiste già un file o una directory con lo stesso nome.</translation>
+<translation id="8382450452152102026">A <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Traslitterazione (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensioni</translation>
 <translation id="8412586565681117057">Metodo di immissione rapido</translation>
@@ -695,6 +694,7 @@
 <translation id="9099674669267916096">Numero di pagine</translation>
 <translation id="9110990317705400362">Cerchiamo costantemente nuovi modi per rendere più sicura la navigazione. In passato, qualsiasi sito web poteva chiederti di aggiungere un'estensione nel browser. Nelle ultime versioni di Google Chrome, devi indicare esplicitamente a Chrome di voler installare le estensioni aggiungendole tramite la pagina Estensioni. <ph name="BEGIN_LINK" />Ulteriori informazioni<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Blocca cartella</translation>
 <translation id="9130775360844693113">I membri di "<ph name="DESTINATION_NAME" />" avranno accesso a questi elementi.</translation>
 <translation id="9131598836763251128">Seleziona uno o più file</translation>
 <translation id="9133055936679483811">Compressione non riuscita. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
index a07c8f7..c27e456 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_iw.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">ימינה</translation>
 <translation id="1351692861129622852">מייבא <ph name="FILE_COUNT" /> קבצים...</translation>
 <translation id="1352103415082130575">‏מקלדת תאילנדית (Pattachote)</translation>
-<translation id="1358032944105037487">מקלדת יפנית</translation>
 <translation id="1358735829858566124">לא ניתן להשתמש בקובץ או בספרייה.</translation>
 <translation id="1363028406613469049">רצועה</translation>
 <translation id="1378727793141957596">‏ברוכים הבאים ל-Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">‏<ph name="FILE_COUNT" /> תמונות גובו ב-<ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">מעתיק...</translation>
 <translation id="3475447146579922140">‏גיליון אלקטרוני של Google</translation>
-<translation id="3494768541638400973">‏קלט יפני של Google (למקלדת יפנית)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> שגיאות.</translation>
 <translation id="3519867315646775981">‏תעתוק (שלום ← shalom)</translation>
 <translation id="3522708245912499433">פורטוגזית</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">הכל מגובה!</translation>
 <translation id="3626281679859535460">בהירות</translation>
 <translation id="3644896802912593514">רוחב</translation>
+<translation id="3645531960514756307">ביטול הצמדת התיקייה</translation>
 <translation id="3678559383040232393">מקלדת מלטית</translation>
 <translation id="3685122418104378273">‏הסנכרון של Google Drive מושבת כברירת מחדל בעת שימוש בנתונים לנייד.</translation>
 <translation id="3726463242007121105">לא ניתן לפתוח מכשיר זה מאחר שמערכת הקבצים שלו אינה נתמכת.</translation>
@@ -342,7 +341,7 @@
 <translation id="5038625366300922036">פרטים נוספים...</translation>
 <translation id="5061708541166515394">ניגודיות</translation>
 <translation id="5068919226082848014">פיצה</translation>
-<translation id="5081517858322016911"><ph name="TOTAL_FILE_SIZE" /> מהקבצים יימחקו</translation>
+<translation id="5081517858322016911">קבצים בנפח כולל של <ph name="TOTAL_FILE_SIZE" /> יימחקו</translation>
 <translation id="509429900233858213">אירעה שגיאה.</translation>
 <translation id="5098629044894065541">עברית</translation>
 <translation id="5123433949759960244">כדורסל</translation>
@@ -515,7 +514,6 @@
     <ph name="LINE_BREAK1" />
     נמצאו <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">פרפר הפוך</translation>
-<translation id="6937152069980083337">‏קלט יפני של Google (למקלדת אמריקאית)</translation>
 <translation id="6939777852457331078">‏מקלדת US Workman</translation>
 <translation id="696203921837389374">הפעל סנכרון של חבילת הגלישה</translation>
 <translation id="6965382102122355670">אישור</translation>
@@ -648,6 +646,7 @@
 <translation id="8336153091935557858">אתמול <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">מקלדת איסלנדית</translation>
 <translation id="8342318071240498787">קובץ או ספריה עם אותו שם כבר קיימים.</translation>
+<translation id="8382450452152102026">בתיקייה <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">‏תעתוק (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">מימדים</translation>
 <translation id="8412586565681117057">‏שיטת קלט Quick</translation>
@@ -697,6 +696,7 @@
 <translation id="9099674669267916096">מספר עמודים</translation>
 <translation id="9110990317705400362">‏אנחנו מחפשים כל הזמן דרכים לגלישה בטוחה יותר. בעבר, כל אתר יכול היה להציע לך להוסיף תוסף לדפדפן. בגרסאות האחרונות של Google Chrome, עליך לציין באופן מפורש ל-Chrome שברצונך להתקין תוספים אלה על-ידי הוספתם דרך הדף 'תוספים'. <ph name="BEGIN_LINK" />למידע נוסף<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">הצמדת התיקייה</translation>
 <translation id="9130775360844693113">חברים באחסון השיתופי '<ph name="DESTINATION_NAME" />' יקבלו גישה לפריטים האלה.</translation>
 <translation id="9131598836763251128">בחר קובץ אחד או יותר</translation>
 <translation id="9133055936679483811">הכיווץ נכשל. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
index c6ff61a..ea924d3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">右</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> 件のファイルをインポートしています...</translation>
 <translation id="1352103415082130575">タイ語キーボード(Pattachote)</translation>
-<translation id="1358032944105037487">日本語のキーボード</translation>
 <translation id="1358735829858566124">このファイルまたはディレクトリは使用できません。</translation>
 <translation id="1363028406613469049">トラック</translation>
 <translation id="1378727793141957596">Google ドライブへようこそ。</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> 枚の写真を <ph name="BEGIN_LINK" />Google ドライブ<ph name="END_LINK" />にバックアップしました</translation>
 <translation id="3470502288861289375">コピーしています...</translation>
 <translation id="3475447146579922140">Google スプレッドシート</translation>
-<translation id="3494768541638400973">Google 日本語入力(日本語キーボード用)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> 件のエラーがあります。</translation>
 <translation id="3519867315646775981">文字変換(shalom ← שלום)</translation>
 <translation id="3522708245912499433">ポルトガル語</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">すべてバックアップ済みです。</translation>
 <translation id="3626281679859535460">輝度</translation>
 <translation id="3644896802912593514">幅</translation>
+<translation id="3645531960514756307">フォルダの固定を解除</translation>
 <translation id="3678559383040232393">マルタ語キーボード</translation>
 <translation id="3685122418104378273">Google ドライブの同期は既定で無効になっています(モバイルデータを使用する場合)。</translation>
 <translation id="3726463242007121105">ファイルシステムがサポートされていないため、このデバイスを開くことはできません。</translation>
@@ -456,7 +455,7 @@
 <translation id="6189412234224385711"><ph name="EXTENSION_NAME" /> で開く</translation>
 <translation id="6199801702437275229">空き容量情報を待機中...</translation>
 <translation id="6205710420833115353">一部の操作に予想より時間がかかっています。中止しますか?</translation>
-<translation id="6224253798271602650"><ph name="DRIVE_NAME" />をフォーマット</translation>
+<translation id="6224253798271602650"><ph name="DRIVE_NAME" /> をフォーマット</translation>
 <translation id="6227235786875481728">このファイルは再生できませんでした。</translation>
 <translation id="6248400709929739064">字幕を有効にする</translation>
 <translation id="6264347891387618177">文字変換(selam → ሰላም)</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" />が見つかりました</translation>
 <translation id="6935521024859866267">逆さま</translation>
-<translation id="6937152069980083337">Google 日本語入力(US キーボード用)</translation>
 <translation id="6939777852457331078">US Workman キーボード</translation>
 <translation id="696203921837389374">モバイルデータとの同期を有効にする</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">昨日 <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">アイスランド語キーボード</translation>
 <translation id="8342318071240498787">同じ名前のファイルまたはディレクトリが既に存在しています。</translation>
+<translation id="8382450452152102026">保存先: <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">文字変換(emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">サイズ</translation>
 <translation id="8412586565681117057">入力方法(Quick)</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">ページ数</translation>
 <translation id="9110990317705400362">Google では、より安全にウェブを閲覧できる方法を常に追求しています。以前は、どのウェブサイトでも、ブラウザに拡張機能を追加するように指示することができました。Google Chrome の最新バージョンでは、ユーザーのインストールの意思をより明確に確認するため、拡張機能の追加は拡張機能ページで行うこととなりました。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">コーデック</translation>
+<translation id="9129931661813833980">フォルダを固定</translation>
 <translation id="9130775360844693113">「<ph name="DESTINATION_NAME" />」のメンバーがこれらのアイテムにアクセスできるようになります。</translation>
 <translation id="9131598836763251128">1 つ以上のファイルを選択</translation>
 <translation id="9133055936679483811">圧縮できませんでした。<ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
index 18f0cbb..222c536 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
@@ -32,7 +32,6 @@
 <translation id="1346748346194534595">ಬಲಕ್ಕೆ</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ಫೈಲ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="1352103415082130575">ಥಾಯ್ ಕೀಬೋರ್ಡ್ (ಪ್ಯಾಟಾಚೊಟ್)</translation>
-<translation id="1358032944105037487">ಜಪಾನೀಸ್ ಕೀಬೋರ್ಡ್</translation>
 <translation id="1358735829858566124">ಫೈಲ್ ಅಥವಾ ಡೈರೆಕ್ಟರಿ ಬಳಸಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="1363028406613469049">ಟ್ರ್ಯಾಕ್</translation>
 <translation id="1378727793141957596">Google ಡ್ರೈವ್‌ಗೆ ಸುಸ್ವಾಗತ!</translation>
@@ -201,7 +200,6 @@
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google ಡ್ರೈವ್<ph name="END_LINK" /> ಗೆ <ph name="FILE_COUNT" /> ಫೋಟೋಗಳನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="3470502288861289375">ನಕಲಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="3475447146579922140">Google ಸ್ಪ್ರೆಡ್‌ಶೀಟ್‌</translation>
-<translation id="3494768541638400973">Google ಜಪಾನೀಸ್ ಇನ್‌ಪುಟ್ (ಜಪಾನೀಸ್ ಕೀಬೋರ್ಡ್‌ಗಾಗಿ)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> ದೋಷಗಳು.</translation>
 <translation id="3519867315646775981">ಲಿಪ್ಯಂತರಣ (shalom ← שלום)</translation>
 <translation id="3522708245912499433">ಪೋರ್ಚುಗೀಸ್</translation>
@@ -216,6 +214,7 @@
 <translation id="3620292326130836921">ಎಲ್ಲವನ್ನೂ ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗಿದೆ!</translation>
 <translation id="3626281679859535460">ಪ್ರಕಾಶಮಾನ</translation>
 <translation id="3644896802912593514">ಅಗಲ</translation>
+<translation id="3645531960514756307">ಫೋಲ್ಡರ್ ಅನ್ನು ಅನ್‌ಪಿನ್ ಮಾಡಿ</translation>
 <translation id="3678559383040232393">ಮಾಲ್ಟೀಸ್ ಕೀಬೋರ್ಡ್</translation>
 <translation id="3685122418104378273">ಮೊಬೈಲ್ ಡೇಟಾವನ್ನು ಬಳಸುತ್ತಿರುವಾಗ, Google ಡ್ರೈವ್ ಸಿಂಕ್ ಅನ್ನು ಡಿಫಾಲ್ಟ್ ಮೂಲಕ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.</translation>
 <translation id="3726463242007121105">ಇದರ ಫೈಲ್‌ಸಿಸ್ಟಂ ಅನ್ನು ಬೆಂಬಲಿಸದ ಕಾರಣ ಈ ಸಾಧನವನ್ನು ತೆರೆಯಲಾಗುವುದಿಲ್ಲ.</translation>
@@ -508,7 +507,6 @@
 <translation id="6930242544192836755">ಅವಧಿ</translation>
 <translation id="6934241953272494177">ನಿಮ್ಮ ಮಾಧ್ಯಮ ಸಾಧನವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ... <ph name="LINE_BREAK1" /> <ph name="FILE_COUNT" /> ಕಂಡುಬಂದಿವೆ</translation>
 <translation id="6935521024859866267">ಮೇಲಿನಿಂದ ಕೆಳಮುಖವಾಗಿ</translation>
-<translation id="6937152069980083337">Google ಜಪಾನೀಸ್ ಇನ್‍‌ಪುಟ್ (ಯುಎಸ್ ಕೀಬೋರ್ಡ್‌ಗಾಗಿ)</translation>
 <translation id="6939777852457331078">US ವರ್ಕ್‌ಮ್ಯಾನ್ ಕೀಬೋರ್ಡ್</translation>
 <translation id="696203921837389374">ಮೊಬೈಲ್ ಡೇಟಾ ಮೂಲಕ ಸಿಂಕ್ ಮಾಡುವುದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="6965382102122355670">ಸರಿ</translation>
@@ -635,6 +633,7 @@
 <translation id="8336153091935557858">ನಿನ್ನೆ <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">ಐಸ್‌ಲ್ಯಾಂಡಿಕ್ ಕೀಬೋರ್ಡ್</translation>
 <translation id="8342318071240498787">ಒಂದೇ ಹೆಸರಿನೊಂದಿಗೆ ಫೈಲ್ ಅಥವಾ ಡೈರೆಕ್ಟರಿ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.</translation>
+<translation id="8382450452152102026"><ph name="FOLDER_NAME" /> ಗೆ</translation>
 <translation id="8391950649760071442">ಲಿಪ್ಯಂತರಣ (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">ಅಳತೆಗಳು</translation>
 <translation id="8412586565681117057">ತ್ವರಿತ ಇನ್‌ಪುಟ್‌ ವಿಧಾನ</translation>
@@ -684,6 +683,7 @@
 <translation id="9099674669267916096">ಪುಟ ಎಣಿಕೆ</translation>
 <translation id="9110990317705400362">ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು ನಾವು ನಿರಂತರವಾಗಿ ಪ್ರಯತ್ನಿಸುತ್ತಿರುತ್ತೇವೆ. ಹಿಂದೆ, ನಿಮ್ಮ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ವಿಸ್ತರಣೆಯನ್ನು ಸೇರಿಸಲು ನಿಮಗೆ ಯಾವುದೇ ವೆಬ್‌ಸೈಟ್‌‌ ಕಾರ್ಯನಿರ್ವಹಿಸಿರಬಹುದು. ಇತ್ತೀಚಿನ Google Chrome ಆವೃತ್ತಿಗಳಲ್ಲಿ, ವಿಸ್ತರಣೆಗಳ ಪುಟದಿಂದ ಅವುಗಳನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಈ ವಿಸ್ತರಣೆಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಬಯಸುವುದಾಗಿ ನೀವು Chrome ಗೆ ಸ್ಪಷ್ಟವಾಗಿ ತಿಳಿಸಬೇಕು. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">ಕೋಡೆಕ್</translation>
+<translation id="9129931661813833980">ಫೋಲ್ಡರ್ ಅನ್ನು ಪಿನ್ ಮಾಡಿ</translation>
 <translation id="9130775360844693113">ಈ ಐಟಂಗಳಿಗೆ '<ph name="DESTINATION_NAME" />' ನ ಸದಸ್ಯರು ಪ್ರವೇಶ ಪಡೆದುಕೊಳ್ಳುವರು.</translation>
 <translation id="9131598836763251128">ಒಂದು ಅಥವಾ ಹೆಚ್ಚು ಫೈಲ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="9133055936679483811">ಜಿಪ್ ಮಾಡುವಿಕೆಯು ವಿಫಲವಾಗಿದೆ. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
index 7eed3082..ced586a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ko.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">오른쪽</translation>
 <translation id="1351692861129622852">파일 <ph name="FILE_COUNT" />개를 가져오는 중...</translation>
 <translation id="1352103415082130575">태국어 키보드(Pattachote)</translation>
-<translation id="1358032944105037487">일본어 키보드</translation>
 <translation id="1358735829858566124">파일 또는 디렉터리를 사용할 수 없습니다.</translation>
 <translation id="1363028406613469049">트랙</translation>
 <translation id="1378727793141957596">Google 드라이브에 오신 것을 환영합니다.</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">사진 <ph name="FILE_COUNT" />장을 <ph name="BEGIN_LINK" />Google 드라이브<ph name="END_LINK" />에 백업</translation>
 <translation id="3470502288861289375">복사 중...</translation>
 <translation id="3475447146579922140">Google 스프레드시트</translation>
-<translation id="3494768541638400973">Google 일본어 입력기(일본어 키보드용)</translation>
 <translation id="3495304270784461826">오류가 <ph name="COUNT" />개 있습니다.</translation>
 <translation id="3519867315646775981">음역(shalom ← שלום)</translation>
 <translation id="3522708245912499433">포르투갈어</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">백업되지 않은 파일이 없습니다.</translation>
 <translation id="3626281679859535460">밝기</translation>
 <translation id="3644896802912593514">너비</translation>
+<translation id="3645531960514756307">폴더 고정 해제</translation>
 <translation id="3678559383040232393">몰타어 키보드</translation>
 <translation id="3685122418104378273">모바일 데이터를 사용할 때는 Google 드라이브 동기화가 기본적으로 사용 중지됩니다.</translation>
 <translation id="3726463242007121105">파일 시스템이 지원되지 않아 이 기기를 열 수 없습니다.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     파일 <ph name="FILE_COUNT" />개 있음</translation>
 <translation id="6935521024859866267">180도 회전</translation>
-<translation id="6937152069980083337">Google 일본어 입력기(미국 키보드용)</translation>
 <translation id="6939777852457331078">미국 워크맨 키보드</translation>
 <translation id="696203921837389374">모바일 데이터를 이용한 동기화 사용 설정</translation>
 <translation id="6965382102122355670">확인</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">어제 <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">아이슬란드어 키보드</translation>
 <translation id="8342318071240498787">같은 이름을 가진 파일 또는 디렉터리가 이미 존재합니다.</translation>
+<translation id="8382450452152102026">대상 폴더: <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">음역(emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">크기</translation>
 <translation id="8412586565681117057">빠른 입력 방법</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">페이지 수</translation>
 <translation id="9110990317705400362">Google은 더 안전한 인터넷 사용 방법을 끊임없이 모색하고 있습니다. 이전에는 브라우저에 확장 프로그램을 추가하라는 메시지가 어느 웹사이트에서나 표시되었습니다. 하지만 Chrome의 최신 버전에서는 확장 프로그램 페이지를 통해 확장 프로그램을 추가함으로써 설치를 원한다는 사실을 Chrome에 명시적으로 알려야 합니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">코덱</translation>
+<translation id="9129931661813833980">폴더 고정</translation>
 <translation id="9130775360844693113">'<ph name="DESTINATION_NAME" />' 멤버에게 이 항목에 액세스할 수 있는 권한이 부여됩니다.</translation>
 <translation id="9131598836763251128">파일을 한 개 이상 선택하세요.</translation>
 <translation id="9133055936679483811">압축에 실패했습니다. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lt.xtb b/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
index dc57d489..e45e1151 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_lt.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Dešinė</translation>
 <translation id="1351692861129622852">Importuojami failai (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1352103415082130575">Tailandietiška klaviatūra („Pattachote“)</translation>
-<translation id="1358032944105037487">Japoniška klaviatūra</translation>
 <translation id="1358735829858566124">Failas arba katalogas nenaudojamas.</translation>
 <translation id="1363028406613469049">Takelis</translation>
 <translation id="1378727793141957596">Sveiki, tai – „Google“ diskas!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Sukurta atsarginių nuotraukų kopijų <ph name="BEGIN_LINK" />„Google“ diske<ph name="END_LINK" />: <ph name="FILE_COUNT" /></translation>
 <translation id="3470502288861289375">Kopijuojama...</translation>
 <translation id="3475447146579922140">„Google“ skaičiuoklė</translation>
-<translation id="3494768541638400973">„Google“ įvestis japonų k. (skirta japonų k. simbolių klaviatūrai)</translation>
 <translation id="3495304270784461826">Klaidų: <ph name="COUNT" />.</translation>
 <translation id="3519867315646775981">Transliteracija (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugalų</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Atsarginis kopijavimas baigtas!</translation>
 <translation id="3626281679859535460">Šviesumas</translation>
 <translation id="3644896802912593514">Plotis</translation>
+<translation id="3645531960514756307">Atsegti aplanką</translation>
 <translation id="3678559383040232393">Maltiečių klaviatūra</translation>
 <translation id="3685122418104378273">„Google“ disko sinchronizavimas pagal numatytuosius nustatymus yra išjungtas, kai naudojami mobiliojo ryšio duomenys.</translation>
 <translation id="3726463242007121105">Įrenginio negalima atidaryti, nes nepalaikoma jo failų išdėstymo sistema.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Rasta: <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Aukštyn kojomis</translation>
-<translation id="6937152069980083337">„Google“ įvestis japonų k. (skirta JAV klaviatūrai)</translation>
 <translation id="6939777852457331078">JAV „Workman“ klaviatūra</translation>
 <translation id="696203921837389374">Įgalinti mobiliųjų duomenų sinchronizavimą</translation>
 <translation id="6965382102122355670">Gerai</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Vakar <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Islandiška klaviatūra</translation>
 <translation id="8342318071240498787">Failas ar katalogas tokiu pačiu pavadinimu jau yra.</translation>
+<translation id="8382450452152102026">Į „<ph name="FOLDER_NAME" />“</translation>
 <translation id="8391950649760071442">Transliteracija (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Aspektai</translation>
 <translation id="8412586565681117057">Greitasis įvesties metodas</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Puslapių skaičius</translation>
 <translation id="9110990317705400362">Nuolat stengiamės padaryti naršymą saugesnį. Anksčiau bet kurioje svetainėje buvo leidžiama raginti jus pridėti plėtinį prie naršyklės. Naudodami naujausių versijų „Google Chrome“, privalote aiškiai nurodyti „Chrome“, kad norite įdiegti šiuos plėtinius, pridėję juos „Plėtinių“ puslapyje. <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodekas</translation>
+<translation id="9129931661813833980">Prisegti aplanką</translation>
 <translation id="9130775360844693113">„<ph name="DESTINATION_NAME" />“ nariai galės pasiekti šiuos elementus.</translation>
 <translation id="9131598836763251128">Pasirinkite bent vieną failą</translation>
 <translation id="9133055936679483811">Archyvuojant įvyko klaida. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
index 93cf537e..8f9bfea 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Pa labi</translation>
 <translation id="1351692861129622852">Notiek <ph name="FILE_COUNT" /> failu importēšana...</translation>
 <translation id="1352103415082130575">Taju valodas tastatūra (Pattachote)</translation>
-<translation id="1358032944105037487">Japāņu tastatūra</translation>
 <translation id="1358735829858566124">Fails vai katalogs nav izmantojams.</translation>
 <translation id="1363028406613469049">Izsekošana</translation>
 <translation id="1378727793141957596">Laipni lūdzam pakalpojumā Google disks!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotoattēli dublēti <ph name="BEGIN_LINK" />Google diskā<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Notiek kopēšana...</translation>
 <translation id="3475447146579922140">Google izklājlapa</translation>
-<translation id="3494768541638400973">Google japāņu valodas ievade (japāņu valodas tastatūrai)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> kļūdas.</translation>
 <translation id="3519867315646775981">Transliterācija (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugāļu valoda</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Visi faili ir dublēti.</translation>
 <translation id="3626281679859535460">Spilgtums</translation>
 <translation id="3644896802912593514">Platums</translation>
+<translation id="3645531960514756307">Atspraust mapi</translation>
 <translation id="3678559383040232393">Maltiešu tastatūra</translation>
 <translation id="3685122418104378273">Izmantojot mobilos datus, Google diska sinhronizācija pēc noklusējuma ir atspējota.</translation>
 <translation id="3726463242007121105">Šo ierīci nevar atvērt, jo tās failu sistēma netiek atbalstīta.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Atrasts: <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Otrādi</translation>
-<translation id="6937152069980083337">Google japāņu valodas ievade (ASV tastatūrai)</translation>
 <translation id="6939777852457331078">Workman (ASV) tastatūra</translation>
 <translation id="696203921837389374">Iespējot mobilo datu sinhronizāciju</translation>
 <translation id="6965382102122355670">Labi</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Vakar plkst. <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Īslandiešu tastatūras izkārtojums</translation>
 <translation id="8342318071240498787">Fails vai direktorijs ar šādu nosaukumu jau pastāv.</translation>
+<translation id="8382450452152102026">Mapē <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliterācija (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Izmēri</translation>
 <translation id="8412586565681117057">Ātrā ievades metode</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Lappušu skaits</translation>
 <translation id="9110990317705400362">Mēs arvien meklējam veidus, kā papildus aizsargāt pārlūkošanu. Iepriekš jebkura vietne varēja aicināt pievienot paplašinājumu pārlūkā. Jaunākajās Google Chrome versijās lapā “Paplašinājumi” ir precīzi jānorāda, ka vēlaties instalēt šos paplašinājumus. <ph name="BEGIN_LINK" />Uzziniet vairāk<ph name="END_LINK" />.</translation>
 <translation id="912419004897138677">Kodeks</translation>
+<translation id="9129931661813833980">Piespraust mapi</translation>
 <translation id="9130775360844693113">“<ph name="DESTINATION_NAME" />” dalībnieki iegūs piekļuvi šiem vienumiem.</translation>
 <translation id="9131598836763251128">Lūdzu, atlasiet vienu vai vairākus failus</translation>
 <translation id="9133055936679483811">Tilpsaspiešana neizdevās. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
index 0728217..a7baaae 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ml.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">ശരി</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ഫയലുകൾ ഇമ്പോർട്ടുചെയ്യുന്നു...</translation>
 <translation id="1352103415082130575">തായ് കീബോർഡ് (പറ്റച്ചോട്ടെ)</translation>
-<translation id="1358032944105037487">ജാപ്പനീസ്‌ കീബോര്‍ഡ്</translation>
 <translation id="1358735829858566124">ഫയലോ ഡയറക്‌റ്ററിയോ ഉപയോഗക്ഷമമല്ല.</translation>
 <translation id="1363028406613469049">ട്രാക്കുചെയ്യുക</translation>
 <translation id="1378727793141957596">Google ഡ്രൈവിലേക്ക് സ്വാഗതം!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ഫോട്ടോകൾ <ph name="BEGIN_LINK" />Google ഡ്രൈവിലേക്ക്<ph name="END_LINK" /> ബാക്കപ്പുചെയ്‌തു</translation>
 <translation id="3470502288861289375">പകർത്തുന്നു...</translation>
 <translation id="3475447146579922140">Google സ്‌പ്രെഡ്‌ഷീറ്റ്</translation>
-<translation id="3494768541638400973">Google ജാപ്പനീസ് ഇന്‍‌പുട്ട് (ജാപ്പനീസ് കീബോര്‍‌ഡിന് മാത്രം)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> പിശകുകൾ.</translation>
 <translation id="3519867315646775981">ലിപ്യന്തരണം (shalom ← שלום)</translation>
 <translation id="3522708245912499433">പോര്‍ച്ചുഗീസ്</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">എല്ലാം ബാക്കപ്പുചെയ്‌തു!</translation>
 <translation id="3626281679859535460">മിഴിവ്</translation>
 <translation id="3644896802912593514">വീതി</translation>
+<translation id="3645531960514756307">ഫോൾഡർ അൺപിൻ ചെയ്യുക</translation>
 <translation id="3678559383040232393">മാൾട്ടീസ് കീബോർഡ്</translation>
 <translation id="3685122418104378273">മൊബൈൽ ഡാറ്റ ഉപയോഗിക്കുമ്പോൾ, സാധാരണയായി Google ഡ്രൈവ് സമന്വയം പ്രവർത്തനരഹിതമാകുന്നു.</translation>
 <translation id="3726463242007121105">ഈ ഉപകരണത്തിന്റെ ഫയൽസിസ്റ്റം പിന്തുണയ്ക്കാത്തതിനാൽ ഇത് തുറക്കാനായില്ല.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> കണ്ടെത്തി</translation>
 <translation id="6935521024859866267">അപ്‌സൈഡ് ഡൗൺ</translation>
-<translation id="6937152069980083337">Google ജാപ്പനീസ് ഇന്‍‌പുട്ട് (യു‌എസ് കീബോര്‍‌ഡിന് മാത്രം)</translation>
 <translation id="6939777852457331078">യുഎസ് വർക്ക്‌മാൻ കീബോർഡ്</translation>
 <translation id="696203921837389374">മൊബൈൽ ഡാറ്റയിലൂടെയുള്ള സമന്വയം പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="6965382102122355670">ശരി</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">ഇന്നലെ <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">ഐസ്‌ലാൻഡിക് കീബോർഡ്</translation>
 <translation id="8342318071240498787">സമാന പേരിലുള്ള ഫയൽ അല്ലെങ്കിൽ ഡയറക്‌റ്ററി ഇതിനകം നിലവിലുണ്ട്.</translation>
+<translation id="8382450452152102026"><ph name="FOLDER_NAME" /> എന്ന ഫോൾഡറിലേക്ക്</translation>
 <translation id="8391950649760071442">ലിപ്യന്തരണം (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">തലങ്ങൾ</translation>
 <translation id="8412586565681117057">ക്വിക്ക് ടൈപ്പുചെയ്യൽ രീതി</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">പേജിന്റെ എണ്ണം</translation>
 <translation id="9110990317705400362">നിങ്ങളുടെ ബ്രൗസിംഗ് സുരക്ഷിതമാക്കുന്നതിനുള്ള മാർഗങ്ങൾക്കായി ഞങ്ങൾ സ്ഥിരമായി തിരയുന്നു. മുമ്പ്, എല്ലാ വെബ്‌സൈറ്റും നിങ്ങളുടെ ബ്രൗസറിൽ ഒരു വിപുലീകരണം ചേർക്കുന്നതിന് ആവശ്യപ്പെടുമായിരുന്നു. Google Chrome-ന്റെ ഏറ്റവും പുതിയ പതിപ്പുകളിൽ, വിപുലീകരണങ്ങളുടെ പേജ് മുഖേന ഈ വിപുലീകരണങ്ങൾ ചേർത്ത് അവ ഇൻസ്റ്റാൾ ചെയ്യണമെന്ന് നിങ്ങൾ Chrome-നോട് സ്പഷ്‌ടമായി പറയേണ്ടതുണ്ട്. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">കൊഡെക്</translation>
+<translation id="9129931661813833980">ഫോൾഡർ പിൻ ചെയ്യൂ</translation>
 <translation id="9130775360844693113">'<ph name="DESTINATION_NAME" />' എന്നതിലെ അംഗങ്ങൾ ഈ ഇനങ്ങളിലേക്ക് ആക്‌സസ് ‌കരസ്ഥമാക്കും.</translation>
 <translation id="9131598836763251128">ഒന്നോ അതില്‍ക്കൂടുതലോ ഫയലുകള്‍ തിരഞ്ഞെടുക്കുക</translation>
 <translation id="9133055936679483811">സിപ്പുചെയ്യൽ പരാജയപ്പെട്ടു. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
index d266b47..a676581 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">उजवे</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> फायली इंपोर्ट करीत आहे...</translation>
 <translation id="1352103415082130575">थाई कीबोर्ड (Pattachote)</translation>
-<translation id="1358032944105037487">जपानी कीबोर्ड</translation>
 <translation id="1358735829858566124">फाइल किंवा डिरेक्टरी वापरण्यायोग्य नाही.</translation>
 <translation id="1363028406613469049">ट्रॅक</translation>
 <translation id="1378727793141957596">Google ड्राइव्ह मध्ये तुमचे स्वागत आहे!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google ड्राइव्ह<ph name="END_LINK" /> वर <ph name="FILE_COUNT" /> फोटोंचा बॅकअप घेतला</translation>
 <translation id="3470502288861289375">कॉपी करत आहे...</translation>
 <translation id="3475447146579922140">Google स्प्रेडशीट</translation>
-<translation id="3494768541638400973">Google जपानी इनपुट (जपानी कीबोर्डसाठी)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> एरर.</translation>
 <translation id="3519867315646775981">लिप्यंतरण (shalom ← שלום)</translation>
 <translation id="3522708245912499433">पोर्तुगीज</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">सर्व बॅकअप घेतला!</translation>
 <translation id="3626281679859535460">ब्राइटनेस</translation>
 <translation id="3644896802912593514">रूंदी</translation>
+<translation id="3645531960514756307">फोल्डर अनपिन करा</translation>
 <translation id="3678559383040232393">माल्टीज कीबोर्ड</translation>
 <translation id="3685122418104378273">मोबाईल डेटा वापरला जातो, तेव्हा Google ड्राइव्ह सिंक बाय डीफॉल्ट बंद केले जाते.</translation>
 <translation id="3726463242007121105">हे डिव्हाइस उघडले जाऊ शकत नाही कारण त्याचे फाइलसिस्टम समर्थित नाही.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> आढळले</translation>
 <translation id="6935521024859866267">उलट सुलट</translation>
-<translation id="6937152069980083337">Google जपानी इनपुट (यूएस कीबोर्डसाठी)</translation>
 <translation id="6939777852457331078">यूएस कामगार कीबोर्ड</translation>
 <translation id="696203921837389374">मोबाईल डेटावर संकालन सुरू करा</translation>
 <translation id="6965382102122355670">ठीक आहे</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">काल <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">आइसलँडिक कीबोर्ड</translation>
 <translation id="8342318071240498787">समान नावाची एखादी फाइल किंवा डिरेक्टरी आधीपासूनच अस्तित्वात आहे.</translation>
+<translation id="8382450452152102026"><ph name="FOLDER_NAME" /> वर</translation>
 <translation id="8391950649760071442">लिप्यंतरण (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">परिमाण</translation>
 <translation id="8412586565681117057">द्रुत इनपुट पद्धत</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">पेज गणना</translation>
 <translation id="9110990317705400362">आम्ही तुमचे ब्राउझिंग सुरक्षित करण्यासाठी सातत्याने मार्ग शोधत आहोत. मागे, तुमच्या ब्राउझरमध्ये एक्स्टेंशन जोडण्यासाठी कोणतीही वेबसाइट तुम्हाला सूचित करू शकत होती. Google Chrome च्या नवीनतम आवृत्तीमध्ये, एक्स्टेंशन पेजद्वारे ते जोडून हे एक्स्टेंशन तुम्ही इंस्टॉल करू इच्छित आहात हे तुम्ही Chrome ला स्पष्टपणे सांगणे आवश्यक आहे. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">कोडेक</translation>
+<translation id="9129931661813833980">फोल्डर पिन करा</translation>
 <translation id="9130775360844693113">'<ph name="DESTINATION_NAME" />' चे सदस्य या आयटमचा अॅक्सेस मिळवतील.</translation>
 <translation id="9131598836763251128">एक किंवा अधिक फायली निवडा</translation>
 <translation id="9133055936679483811">झिप करणे अयशस्वी. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
index 53621bb..1940edb7 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Kanan</translation>
 <translation id="1351692861129622852">Mengimport fail <ph name="FILE_COUNT" />...</translation>
 <translation id="1352103415082130575">Papan kekunci bahasa Thai (Pattachote)</translation>
-<translation id="1358032944105037487">Papan kekunci Jepun</translation>
 <translation id="1358735829858566124">Fail atau direktori tidak boleh digunakan.</translation>
 <translation id="1363028406613469049">Penjejakan</translation>
 <translation id="1378727793141957596">Selamat datang ke Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> foto disandarkan pada <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Menyalin...</translation>
 <translation id="3475447146579922140">Hamparan Google</translation>
-<translation id="3494768541638400973">Input Jepun Google (untuk papan kekunci Jepun)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> ralat.</translation>
 <translation id="3519867315646775981">Pengalihan huruf (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Bahasa Portugis</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Semua disandarkan!</translation>
 <translation id="3626281679859535460">Kecerahan</translation>
 <translation id="3644896802912593514">Lebar</translation>
+<translation id="3645531960514756307">Nyahsemat folder</translation>
 <translation id="3678559383040232393">Papan kekunci Malta</translation>
 <translation id="3685122418104378273">Penyegerakan Google Drive dilumpuhkan secara lalai, apabila menggunakan data mudah alih.</translation>
 <translation id="3726463242007121105">Peranti ini tidak boleh dibuka kerana sistem failnya tidak disokong.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> ditemui</translation>
 <translation id="6935521024859866267">Terbalik</translation>
-<translation id="6937152069980083337">Input Jepun Google (untuk papan kekunci AS)</translation>
 <translation id="6939777852457331078">Papan kekunci US Workman</translation>
 <translation id="696203921837389374">Dayakan penyegerakan melalui data mudah alih</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Semalam <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Papan kekunci Iceland</translation>
 <translation id="8342318071240498787">Fail atau direktori dengan nama yang sama telah wujud.</translation>
+<translation id="8382450452152102026">Kepada <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Pengalihan huruf (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensi</translation>
 <translation id="8412586565681117057">Kaedah input pantas</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Kiraan halaman</translation>
 <translation id="9110990317705400362">Kami sentiasa mencari cara-cara untuk membuat penyemakan imbas anda lebih selamat. Sebelum ini, mana-mana laman web boleh menggesa anda untuk menambah sambungan ke dalam penyemak imbas anda. Dalam versi terbaharu Google Chrome, anda mesti memberitahu Chrome dengan jelas bahawa anda mahu memasang sambungan ini dengan menambahnya melalui halaman Sambungan. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Semat folder</translation>
 <translation id="9130775360844693113">Ahli '<ph name="DESTINATION_NAME" />' akan mendapat akses ke item ini.</translation>
 <translation id="9131598836763251128">Pilih satu fail atau lebih</translation>
 <translation id="9133055936679483811">Gagal mengezip. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
index dbbfc238..45bf829 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Rechts</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> bestanden importeren...</translation>
 <translation id="1352103415082130575">Thais toetsenbord (Pattachote)</translation>
-<translation id="1358032944105037487">Japans toetsenbord</translation>
 <translation id="1358735829858566124">Het bestand of de map is niet bruikbaar.</translation>
 <translation id="1363028406613469049">Track</translation>
 <translation id="1378727793141957596">Welkom bij Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Er is een back-up van <ph name="FILE_COUNT" /> foto's gemaakt in <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Kopiëren...</translation>
 <translation id="3475447146579922140">Google-spreadsheet</translation>
-<translation id="3494768541638400973">Japanse invoer van Google (voor Japans toetsenbord)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> fouten.</translation>
 <translation id="3519867315646775981">Transliteratie (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugees</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Er is een back-up van alles gemaakt</translation>
 <translation id="3626281679859535460">Helderheid</translation>
 <translation id="3644896802912593514">Breedte</translation>
+<translation id="3645531960514756307">Map losmaken</translation>
 <translation id="3678559383040232393">Maltees toetsenbord</translation>
 <translation id="3685122418104378273">De synchronisatie van Google Drive is bij het gebruik van mobiele data standaard uitgeschakeld.</translation>
 <translation id="3726463242007121105">Dit apparaat kan niet worden geopend omdat het bijbehorende bestandssysteem niet wordt ondersteund.</translation>
@@ -515,7 +514,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> gevonden</translation>
 <translation id="6935521024859866267">Ondersteboven</translation>
-<translation id="6937152069980083337">Japanse invoer van Google (voor Amerikaans toetsenbord)</translation>
 <translation id="6939777852457331078">Amerikaans Workman-toetsenbord</translation>
 <translation id="696203921837389374">Synchroniseren via mobiele data inschakelen</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -648,6 +646,7 @@
 <translation id="8336153091935557858">Gisteren <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">IJslands toetsenbord</translation>
 <translation id="8342318071240498787">Er bestaat al een bestand of map met dezelfde naam.</translation>
+<translation id="8382450452152102026">Naar <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteratie (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Afmetingen</translation>
 <translation id="8412586565681117057">Snelle invoermethode</translation>
@@ -697,6 +696,7 @@
 <translation id="9099674669267916096">Aantal pagina's</translation>
 <translation id="9110990317705400362">We zijn altijd op zoek naar manieren om het surfen veiliger te maken. Vroeger kon elke website je vragen een extensie toe te voegen aan je browser. In de nieuwste versies van Google Chrome moet je Chrome expliciet toestemming geven om deze extensies te installeren door ze toe te voegen via de pagina 'Extensies'. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Map vastzetten</translation>
 <translation id="9130775360844693113">Leden van '<ph name="DESTINATION_NAME" />' krijgen toegang tot deze items.</translation>
 <translation id="9131598836763251128">Selecteer een of meer bestanden</translation>
 <translation id="9133055936679483811">Inpakken mislukt. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_no.xtb b/ui/chromeos/translations/ui_chromeos_strings_no.xtb
index 30bb0cc..f7eada3 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_no.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_no.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Høyre</translation>
 <translation id="1351692861129622852">Importerer <ph name="FILE_COUNT" /> filer ...</translation>
 <translation id="1352103415082130575">Thai-tastatur (Pattachote)</translation>
-<translation id="1358032944105037487">Japansk tastatur</translation>
 <translation id="1358735829858566124">Filen eller katalogen ikke er brukbar.</translation>
 <translation id="1363028406613469049">Spor</translation>
 <translation id="1378727793141957596">Velkommen til Google Disk</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> bilder ble sikkerhetskopiert til <ph name="BEGIN_LINK" />Google Disk<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Kopierer ...</translation>
 <translation id="3475447146579922140">Google-regneark</translation>
-<translation id="3494768541638400973">Google-inndatametode for japansk (for japansk tastatur)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> feil.</translation>
 <translation id="3519867315646775981">Translitterasjon (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugisisk</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Alt er sikkerhetskopiert!</translation>
 <translation id="3626281679859535460">Lysstyrke</translation>
 <translation id="3644896802912593514">Bredde</translation>
+<translation id="3645531960514756307">Løsne mappen</translation>
 <translation id="3678559383040232393">Maltesisk tastatur</translation>
 <translation id="3685122418104378273">Google Disk-synkronisering er deaktivert som standard ved bruk av mobile data.</translation>
 <translation id="3726463242007121105">Denne enheten kan ikke åpnes fordi den har et filsystem som ikke støttes.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> ble funnet</translation>
 <translation id="6935521024859866267">Opp-ned</translation>
-<translation id="6937152069980083337">Google-inndatametode for japansk (for amerikansk tastatur)</translation>
 <translation id="6939777852457331078">Workman-tastatur (USA)</translation>
 <translation id="696203921837389374">Aktivér synkronisering via mobildata</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">I går kl. <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Islandsk tastatur</translation>
 <translation id="8342318071240498787">Det finnes allerede en fil eller en katalog med det samme navnet.</translation>
+<translation id="8382450452152102026">Til <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Translitterasjon (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensjoner</translation>
 <translation id="8412586565681117057">Rask inndatametode</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Antall sider</translation>
 <translation id="9110990317705400362">Vi jobber kontinuerlig for å gjøre surfingen din tryggere. Tidligere kunne et hvilket som helst nettsted be deg å legge til en utvidelse i nettleseren din. I de nyeste versjonene av Google Chrome må du gi Chrome uttrykkelig beskjed om at du ønsker å installere disse utvidelsene ved å legge dem til via Utvidelser-siden. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodek</translation>
+<translation id="9129931661813833980">Fest mappe</translation>
 <translation id="9130775360844693113">Medlemmer av «<ph name="DESTINATION_NAME" />» får tilgang til disse elementene.</translation>
 <translation id="9131598836763251128">Velg én eller flere filer</translation>
 <translation id="9133055936679483811">Opprettelsen av zip-filen mislyktes. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
index bbce1741..1d486b7 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">W prawo</translation>
 <translation id="1351692861129622852">Importuję <ph name="FILE_COUNT" /> pliki(ów)...</translation>
 <translation id="1352103415082130575">Klawiatura tajska (Pattachote)</translation>
-<translation id="1358032944105037487">Klawiatura japońska</translation>
 <translation id="1358735829858566124">Plik lub katalog nie nadaje się do użycia.</translation>
 <translation id="1363028406613469049">Utwór</translation>
 <translation id="1378727793141957596">Dysk Google – witamy</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Kopie zapasowe <ph name="FILE_COUNT" /> zdjęć zostały utworzone na <ph name="BEGIN_LINK" />Dysku Google<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Kopiuję...</translation>
 <translation id="3475447146579922140">Arkusz kalkulacyjny Google</translation>
-<translation id="3494768541638400973">japoński – Google (dla klawiatury japońskiej)</translation>
 <translation id="3495304270784461826">Błędy: <ph name="COUNT" />.</translation>
 <translation id="3519867315646775981">Transliteracja (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugalski</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Wszystko ma już kopię zapasową.</translation>
 <translation id="3626281679859535460">Jasność</translation>
 <translation id="3644896802912593514">Szerokość</translation>
+<translation id="3645531960514756307">Odepnij folder</translation>
 <translation id="3678559383040232393">Klawiatura maltańska</translation>
 <translation id="3685122418104378273">Gdy komórkowa transmisja danych jest włączona, synchronizacja z Dyskiem Google jest domyślnie wyłączona.</translation>
 <translation id="3726463242007121105">Nie można otworzyć urządzenia, ponieważ jego system plików nie jest obsługiwany.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Znaleziono <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Do góry nogami</translation>
-<translation id="6937152069980083337">japoński – Google (dla klawiatury amerykańskiej)</translation>
 <translation id="6939777852457331078">Amerykańska klawiatura Workman</translation>
 <translation id="696203921837389374">Włącz synchronizację przy użyciu komórkowej transmisji danych.</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Wczoraj, <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Klawiatura islandzka</translation>
 <translation id="8342318071240498787">Plik lub katalog o tej nazwie już istnieje.</translation>
+<translation id="8382450452152102026">Do: <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteracja (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Wymiary</translation>
 <translation id="8412586565681117057">Szybka metoda wprowadzania</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Liczba stron</translation>
 <translation id="9110990317705400362">Stale szukamy rozwiązań, dzięki którym przeglądanie internetu będzie bezpieczniejsze. Wcześniej każda strona mogła poprosić o dodanie rozszerzenia do przeglądarki. W nowszych wersjach Google Chrome musisz dodać rozszerzenie na stronie Rozszerzenia, by wyraźnie poinformować przeglądarkę, że chcesz je zainstalować. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodek</translation>
+<translation id="9129931661813833980">Przypnij folder</translation>
 <translation id="9130775360844693113">Osoby z uprawnieniami do: „<ph name="DESTINATION_NAME" />” uzyskają dostęp do tych elementów.</translation>
 <translation id="9131598836763251128">Wybierz jeden lub kilka plików</translation>
 <translation id="9133055936679483811">Pakowanie nie powiodło się. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb b/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
index ebe2f9b..b0de537ee 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pt-BR.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Para a direita</translation>
 <translation id="1351692861129622852">Importando <ph name="FILE_COUNT" /> arquivos...</translation>
 <translation id="1352103415082130575">Teclado tailandês (pattachote)</translation>
-<translation id="1358032944105037487">Teclado japonês</translation>
 <translation id="1358735829858566124">O arquivo ou o diretório não é utilizável.</translation>
 <translation id="1363028406613469049">Rastrear</translation>
 <translation id="1378727793141957596">Bem-vindo ao Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Foi realizado o backup de <ph name="FILE_COUNT" /> fotos para o <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Copiando...</translation>
 <translation id="3475447146579922140">Planilha do Google</translation>
-<translation id="3494768541638400973">Inserção de texto japonês do Google (para teclado japonês)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> erros.</translation>
 <translation id="3519867315646775981">Transliteração (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Português</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Backup completo.</translation>
 <translation id="3626281679859535460">Brilho</translation>
 <translation id="3644896802912593514">Largura</translation>
+<translation id="3645531960514756307">Liberar pasta</translation>
 <translation id="3678559383040232393">Teclado maltês</translation>
 <translation id="3685122418104378273">A sincronização do Google Drive é desativada por padrão durante o uso de dados móveis.</translation>
 <translation id="3726463242007121105">Não foi possível abrir este dispositivo porque seu sistema de arquivos não é suportado.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Total de arquivos encontrados: <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Ponta-cabeça</translation>
-<translation id="6937152069980083337">Inserção de texto japonês do Google (para teclado americano)</translation>
 <translation id="6939777852457331078">Teclado Workman dos EUA</translation>
 <translation id="696203921837389374">Ativar a sincronização de dados móveis</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Ontem <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Teclado para islandês</translation>
 <translation id="8342318071240498787">Já existe um arquivo ou diretório com o mesmo nome.</translation>
+<translation id="8382450452152102026">Para <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteração (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensões</translation>
 <translation id="8412586565681117057">Método de entrada rápida</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Contagem de páginas</translation>
 <translation id="9110990317705400362">Estamos constantemente à procura de maneiras para tornar sua navegação mais segura. Anteriormente, qualquer website podia pedir que você adicionasse uma extensão no seu navegador. Nas versões mais recentes do Google Chrome, você deve dizer explicitamente ao Chrome que deseja instalar essas extensões, adicionando-as através da página de extensões. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Fixar pasta</translation>
 <translation id="9130775360844693113">Membros de '<ph name="DESTINATION_NAME" />' terão acesso a esses itens.</translation>
 <translation id="9131598836763251128">Selecione um ou mais arquivos</translation>
 <translation id="9133055936679483811">Falha na compactação. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
index 0cc57dd..faf3205 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Direita</translation>
 <translation id="1351692861129622852">A importar <ph name="FILE_COUNT" /> ficheiros...</translation>
 <translation id="1352103415082130575">Teclado tailandês (pattachote)</translation>
-<translation id="1358032944105037487">Teclado japonês</translation>
 <translation id="1358735829858566124">O ficheiro ou o diretório não pode ser utilizado.</translation>
 <translation id="1363028406613469049">Faixa</translation>
 <translation id="1378727793141957596">Bem-vindo ao Google Drive!</translation>
@@ -162,7 +161,7 @@
 <translation id="2925966894897775835">Folhas</translation>
 <translation id="2938685643439809023">Mongol</translation>
 <translation id="2942290791863759244">Teclado NEO 2 alemão</translation>
-<translation id="2943400156390503548">Apresentações</translation>
+<translation id="2943400156390503548">Slides</translation>
 <translation id="2943503720238418293">Utilize um nome mais curto.</translation>
 <translation id="2951236788251446349">Medusa</translation>
 <translation id="2963783323012015985">Teclado turco </translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Foi feita uma cópia de segurança de <ph name="FILE_COUNT" /> fotos no <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">A copiar...</translation>
 <translation id="3475447146579922140">Folha de cálculo do Google</translation>
-<translation id="3494768541638400973">Introdução japonesa do Google (para teclados japoneses)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> erros.</translation>
 <translation id="3519867315646775981">Transliteração (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Português</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Foi feita uma cópia de segurança de todos os ficheiros!</translation>
 <translation id="3626281679859535460">Brilho</translation>
 <translation id="3644896802912593514">Largura</translation>
+<translation id="3645531960514756307">Soltar pasta</translation>
 <translation id="3678559383040232393">Teclado maltês</translation>
 <translation id="3685122418104378273">Quando utiliza dados móveis, a sincronização do Google Drive é desativada por predefinição.</translation>
 <translation id="3726463242007121105">Não é possível abrir este aparelho porque o sistema de ficheiros não é suportado.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> encontrada(s)</translation>
 <translation id="6935521024859866267">Ao Contrário</translation>
-<translation id="6937152069980083337">Introdução japonesa do Google (para teclado dos EUA)</translation>
 <translation id="6939777852457331078">Teclado Workman dos EUA</translation>
 <translation id="696203921837389374">Ativar a sincronização através de dados móveis</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Ontem <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Teclado islandês</translation>
 <translation id="8342318071240498787">Já existe um ficheiro ou diretório com o mesmo nome.</translation>
+<translation id="8382450452152102026">Para <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliteração (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensões</translation>
 <translation id="8412586565681117057">Método de introdução rápido</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Contagem de páginas</translation>
 <translation id="9110990317705400362">Estamos constantemente a procurar formas de tornar a navegação mais segura. Anteriormente, qualquer Website poderia pedir-lhe para adicionar uma extensão ao navegador. Nas versões mais recentes do Google Chrome, tem de definir explicitamente no Chrome que pretende instalar estas extensões adicionando-as através da página Extensões. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Fixar pasta</translation>
 <translation id="9130775360844693113">Os membros de "<ph name="DESTINATION_NAME" />" irão obter acesso a estes itens.</translation>
 <translation id="9131598836763251128">Selecione um ou mais ficheiros</translation>
 <translation id="9133055936679483811">Falha na criação de zip. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
index 19bbf4a..5a30d4a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Dreapta</translation>
 <translation id="1351692861129622852">Se importă <ph name="FILE_COUNT" /> fișiere...</translation>
 <translation id="1352103415082130575">Tastatură thailandeză (Pattachote)</translation>
-<translation id="1358032944105037487">Tastatură japoneză</translation>
 <translation id="1358735829858566124">Fișierul sau directorul nu este utilizabil.</translation>
 <translation id="1363028406613469049">Melodia</translation>
 <translation id="1378727793141957596">Bun venit la Disc Google!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotografii cu backup pe <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Se copiază...</translation>
 <translation id="3475447146579922140">Foaie de calcul Google</translation>
-<translation id="3494768541638400973">Metoda de introducere Google pentru japoneză (la tastatura pentru japoneză)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> erori.</translation>
 <translation id="3519867315646775981">Transliterație (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugheză</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">S-a făcut backup pentru tot!</translation>
 <translation id="3626281679859535460">Luminozitate</translation>
 <translation id="3644896802912593514">Lățime</translation>
+<translation id="3645531960514756307">Anulează fixarea dosarului</translation>
 <translation id="3678559383040232393">Tastatură malteză</translation>
 <translation id="3685122418104378273">Sincronizarea cu Google Drive este dezactivată în mod prestabilit la folosirea datelor mobile.</translation>
 <translation id="3726463242007121105">Acest dispozitiv nu poate fi deschis, deoarece sistemul său de fișiere nu este acceptat.</translation>
@@ -456,7 +455,7 @@
 <translation id="6189412234224385711">Deschide cu <ph name="EXTENSION_NAME" /></translation>
 <translation id="6199801702437275229">Se așteaptă informațiile despre spațiu...</translation>
 <translation id="6205710420833115353">Unele operațiuni durează mai mult decât ar trebui. Dorești să le anulezi?</translation>
-<translation id="6224253798271602650">Formatați <ph name="DRIVE_NAME" /></translation>
+<translation id="6224253798271602650">Formatează <ph name="DRIVE_NAME" /></translation>
 <translation id="6227235786875481728">Acest fișier nu a putut fi redat.</translation>
 <translation id="6248400709929739064">Activează subtitrările</translation>
 <translation id="6264347891387618177">Transliterație (selam → ሰላም)</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     S-au găsit <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Răsturnat</translation>
-<translation id="6937152069980083337">Metoda de introducere Google pentru japoneză (la tastatura americană)</translation>
 <translation id="6939777852457331078">Tastatură S.U.A. Workman</translation>
 <translation id="696203921837389374">Activează sincronizarea prin date mobile</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Ieri, la <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Tastatură islandeză</translation>
 <translation id="8342318071240498787">Un fișier sau un director cu același nume există deja.</translation>
+<translation id="8382450452152102026">În <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Transliterație (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensiuni</translation>
 <translation id="8412586565681117057">Metoda de introducere rapidă a textului</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Numărul de pagini</translation>
 <translation id="9110990317705400362">Google caută mereu modalități de a face navigarea mai sigură. Înainte, orice site îți putea solicita să adaugi o extensie în browser. În ultimele versiuni Google Chrome, trebuie să indici explicit că dorești să instalezi aceste extensii, adăugându-le în pagina Extensii. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Fixează dosarul</translation>
 <translation id="9130775360844693113">Membrii „<ph name="DESTINATION_NAME" />” vor obține acces la aceste articole.</translation>
 <translation id="9131598836763251128">Selectează un fișier sau mai multe</translation>
 <translation id="9133055936679483811">Arhivarea nu a reușit. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
index b08971c..6f8b1e4 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Справа</translation>
 <translation id="1351692861129622852">Импорт файлов (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1352103415082130575">Тайская раскладка (Pattachote)</translation>
-<translation id="1358032944105037487">Японская раскладка</translation>
 <translation id="1358735829858566124">Этот файл или каталог непригоден для использования.</translation>
 <translation id="1363028406613469049">Трек</translation>
 <translation id="1378727793141957596">Добро пожаловать в Google Диск!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">На <ph name="BEGIN_LINK" />Google Диске<ph name="END_LINK" /> сохранено <ph name="FILE_COUNT" /> фото</translation>
 <translation id="3470502288861289375">Копирование…</translation>
 <translation id="3475447146579922140">Электронная таблица Google</translation>
-<translation id="3494768541638400973">японская раскладка Google (для японской клавиатуры)</translation>
 <translation id="3495304270784461826">Ошибок: <ph name="COUNT" />.</translation>
 <translation id="3519867315646775981">Транслитерация (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Португальский</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Данные сохранены!</translation>
 <translation id="3626281679859535460">Яркость</translation>
 <translation id="3644896802912593514">Ширина</translation>
+<translation id="3645531960514756307">Открепить папку</translation>
 <translation id="3678559383040232393">Мальтийская раскладка</translation>
 <translation id="3685122418104378273">Синхронизация Google Диска по мобильной сети отключена по умолчанию.</translation>
 <translation id="3726463242007121105">Невозможно получить доступ к устройству, так как его файловая система не поддерживается.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Обнаружены файлы (<ph name="FILE_COUNT" />).</translation>
 <translation id="6935521024859866267">Вверх ногами</translation>
-<translation id="6937152069980083337">японская раскладка Google (для клавиатуры США)</translation>
 <translation id="6939777852457331078">Раскладка США (Workman)</translation>
 <translation id="696203921837389374">Синхронизировать по мобильной сети</translation>
 <translation id="6965382102122355670">ОК</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Вчера, <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Исландская раскладка клавиатуры</translation>
 <translation id="8342318071240498787">Такой файл или каталог уже существуют.</translation>
+<translation id="8382450452152102026">В папку "<ph name="FOLDER_NAME" />"</translation>
 <translation id="8391950649760071442">Транслитерация (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Размеры</translation>
 <translation id="8412586565681117057">Быстрое письмо</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Количество страниц</translation>
 <translation id="9110990317705400362">Мы постоянно работаем над тем, чтобы сделать наш браузер ещё более защищенным. Раньше любой сайт мог предложить вам установить расширение, что было небезопасно. В последних версиях Google Chrome добавить расширения можно только на странице "Расширения". <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Кодек</translation>
+<translation id="9129931661813833980">Закрепить папку</translation>
 <translation id="9130775360844693113">Пользователи общего диска "<ph name="DESTINATION_NAME" />" получат доступ к этим объектам.</translation>
 <translation id="9131598836763251128">Выберите файлы</translation>
 <translation id="9133055936679483811">Не удалось выполнить архивирование. <ph name="ERROR_MESSAGE" />.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
index a00a75b..c740cc7 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Doprava</translation>
 <translation id="1351692861129622852">Importujú sa súbory (počet: <ph name="FILE_COUNT" />)...</translation>
 <translation id="1352103415082130575">Thajská klávesnica (Pattachote)</translation>
-<translation id="1358032944105037487">japonská klávesnica</translation>
 <translation id="1358735829858566124">Súbor alebo adresár nie je možné použiť.</translation>
 <translation id="1363028406613469049">Stopa</translation>
 <translation id="1378727793141957596">Vitajte v službe Disk Google!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Počet fotiek zálohovaných na <ph name="BEGIN_LINK" />Disk Google<ph name="END_LINK" />: <ph name="FILE_COUNT" /></translation>
 <translation id="3470502288861289375">Prebieha kopírovanie...</translation>
 <translation id="3475447146579922140">Tabuľka Google</translation>
-<translation id="3494768541638400973">Japonská metóda vstupu Google (pre japonskú klávesnicu)</translation>
 <translation id="3495304270784461826">Počet chýb: <ph name="COUNT" />.</translation>
 <translation id="3519867315646775981">Prepis (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portugalčina</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Všetko je zálohované!</translation>
 <translation id="3626281679859535460">Jas</translation>
 <translation id="3644896802912593514">Šírka</translation>
+<translation id="3645531960514756307">Odopnúť priečinok</translation>
 <translation id="3678559383040232393">Maltézska klávesnica</translation>
 <translation id="3685122418104378273">Synchronizácia Disku Google je pri používaní mobilných dát v predvolenom nastavení zakázaná.</translation>
 <translation id="3726463242007121105">Toto zariadenie nie je možné otvoriť, pretože jeho systém súborov nie je podporovaný.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Počet nájdených súborov: <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Hore nohami</translation>
-<translation id="6937152069980083337">Japonská metóda vstupu Google (pre americkú klávesnicu)</translation>
 <translation id="6939777852457331078">Klávesnica US Workman</translation>
 <translation id="696203921837389374">Povoliť synchronizáciu prostredníctvom mobilných dát</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Včera o <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Islandská klávesnica</translation>
 <translation id="8342318071240498787">Súbor alebo priečinok s daným názvom už existuje.</translation>
+<translation id="8382450452152102026">Do priečinka <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Prepis (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Rozmery</translation>
 <translation id="8412586565681117057">Rýchla metóda vstupu</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Počet strán</translation>
 <translation id="9110990317705400362">Neustále hľadáme spôsoby, ako zvýšiť bezpečnosť vášho prehliadania. Predtým vás mohli všetky webové stránky vyzvať pridať rozšírenie do prehliadača. Keď chcete v novších verziách prehliadača Google Chrome pridať rozšírenia, musíte to urobiť explicitne ich pridaním na stránke Rozšírenia. <ph name="BEGIN_LINK" />Ďalšie informácie<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodek</translation>
+<translation id="9129931661813833980">Pripnúť priečinok</translation>
 <translation id="9130775360844693113">Členovia cieľa <ph name="DESTINATION_NAME" /> získajú prístup k týmto položkám.</translation>
 <translation id="9131598836763251128">Vyberte jeden alebo viac súborov</translation>
 <translation id="9133055936679483811">Komprimovanie zlyhalo. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
index 785f094..e6ccd44f 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">V desno</translation>
 <translation id="1351692861129622852">Uvoz toliko datotek: <ph name="FILE_COUNT" /> ...</translation>
 <translation id="1352103415082130575">Tipkovnica za tajščino (Pattachote)</translation>
-<translation id="1358032944105037487">Japonska tipkovnica</translation>
 <translation id="1358735829858566124">Neuporabna datoteka ali imenik.</translation>
 <translation id="1363028406613469049">Posnetek</translation>
 <translation id="1378727793141957596">Pozdravljeni v storitvi Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">V <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /> je varnostno kopiranih toliko fotografij: <ph name="FILE_COUNT" /></translation>
 <translation id="3470502288861289375">Kopiranje ...</translation>
 <translation id="3475447146579922140">Googlova preglednica</translation>
-<translation id="3494768541638400973">Googlov japonski način vnosa (za japonsko tipkovnico)</translation>
 <translation id="3495304270784461826">Št. napak: <ph name="COUNT" />.</translation>
 <translation id="3519867315646775981">Prečrkovanje (shalom ← שלום)</translation>
 <translation id="3522708245912499433">portugalščina</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Vse je varnostno kopirano!</translation>
 <translation id="3626281679859535460">Svetlost</translation>
 <translation id="3644896802912593514">Širina</translation>
+<translation id="3645531960514756307">Odpni mapo</translation>
 <translation id="3678559383040232393">Malteška tipkovnica</translation>
 <translation id="3685122418104378273">Sinhronizacija z Googlom Drive je ob uporabi prenosa podatkov v mobilnih omrežjih privzeto onemogočena.</translation>
 <translation id="3726463242007121105">Naprave ni mogoče odpreti, ker njen datotečni sistem ni podprt.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Št. najdenih: <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Obrnjeno</translation>
-<translation id="6937152069980083337">Googlov japonski način vnosa (za ameriško tipkovnico)</translation>
 <translation id="6939777852457331078">Tipkovnica za angleščino (Združene države) – Workman</translation>
 <translation id="696203921837389374">Omogoči sinhronizacijo prek prenosa podatkov v mobilnih omrežjih</translation>
 <translation id="6965382102122355670">V redu</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Včeraj <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Islandska tipkovnica</translation>
 <translation id="8342318071240498787">Datoteka ali imenik s tem imenom že obstaja.</translation>
+<translation id="8382450452152102026">V <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Prečrkovanje (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Mere</translation>
 <translation id="8412586565681117057">Hitri način vnosa</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Število strani</translation>
 <translation id="9110990317705400362">Stalno si prizadevamo zagotoviti, da bi bilo brskanje varnejše. Prej vas je lahko vsako spletno mesto pozvalo, da dodate razširitev v brskalnik. V zadnjih različicah Google Chroma pa morate Chromu izrecno povedati, da želite te razširitve namestiti, tako da jih dodate na strani »Razširitve«. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodek</translation>
+<translation id="9129931661813833980">Pripni mapo</translation>
 <translation id="9130775360844693113">Člani skupine »<ph name="DESTINATION_NAME" />« bodo imeli dostop do teh elementov.</translation>
 <translation id="9131598836763251128">Izberite eno ali več datotek</translation>
 <translation id="9133055936679483811">Ustvarjanje datoteke zip ni uspelo. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
index 6a19a8d..fa5da25 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Удесно</translation>
 <translation id="1351692861129622852">Увозе се датотеке (<ph name="FILE_COUNT" />)...</translation>
 <translation id="1352103415082130575">Тајска тастатура (Pattachote)</translation>
-<translation id="1358032944105037487">Језик тастатуре: јапански</translation>
 <translation id="1358735829858566124">Није могуће користити датотеку или директоријум.</translation>
 <translation id="1363028406613469049">Песма</translation>
 <translation id="1378727793141957596">Добро дошли у Google диск!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Резервна копија слика (<ph name="FILE_COUNT" />) је направљена на <ph name="BEGIN_LINK" />Google диску<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Копирање...</translation>
 <translation id="3475447146579922140">Google табела</translation>
-<translation id="3494768541638400973">Google јапански метод уноса (за јапанску тастатуру)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> грешака.</translation>
 <translation id="3519867315646775981">Транслитерација (shalom ← שלום)</translation>
 <translation id="3522708245912499433">португалски</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Направљене су резервне копије свих датотека!</translation>
 <translation id="3626281679859535460">Осветљеност</translation>
 <translation id="3644896802912593514">Ширина</translation>
+<translation id="3645531960514756307">Откачи директоријум</translation>
 <translation id="3678559383040232393">Малтешка тастатура</translation>
 <translation id="3685122418104378273">Синхронизација са Google диском је подразумевано онемогућена када се користи мобилна веза за пренос података.</translation>
 <translation id="3726463242007121105">Овај уређај не може да се отвори јер његов систем датотека није подржан.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Пронађене су датотеке (<ph name="FILE_COUNT" />)</translation>
 <translation id="6935521024859866267">Наопачке</translation>
-<translation id="6937152069980083337">Google јапански метод уноса (за америчку тастатуру)</translation>
 <translation id="6939777852457331078">Америчка Workman тастатура</translation>
 <translation id="696203921837389374">Омогући синхронизацију преко мобилне везе за пренос података</translation>
 <translation id="6965382102122355670">Потврди</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Јуче у <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Исландска тастатура</translation>
 <translation id="8342318071240498787">Већ постоји датотека или директоријум са истим називом.</translation>
+<translation id="8382450452152102026">У: <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Транслитерација (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Димензије</translation>
 <translation id="8412586565681117057">Брзи метод уноса</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Број страница</translation>
 <translation id="9110990317705400362">Стално тражимо нове начине да учинимо прегледање безбеднијим. Раније је сваки веб-сајт могао да вам затражи да додате додатак у прегледач. У најновијим верзијама Google Chrome-а морате експлицитно да кажете Chrome-у да желите да инсталирате те додатке тако што ћете их додати преко странице Додаци. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Кодек</translation>
+<translation id="9129931661813833980">Закачи директоријум</translation>
 <translation id="9130775360844693113">Чланови из „<ph name="DESTINATION_NAME" />“ ће добити приступ овим ставкама.</translation>
 <translation id="9131598836763251128">Избор једне или више датотека</translation>
 <translation id="9133055936679483811">Додавање у zip датотеку није успело. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
index e3fd5c16..109bf58 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Höger</translation>
 <translation id="1351692861129622852">Importerar <ph name="FILE_COUNT" /> filer …</translation>
 <translation id="1352103415082130575">Tangentbord för thailändska (Pattachote)</translation>
-<translation id="1358032944105037487">Japanskt tangentbord</translation>
 <translation id="1358735829858566124">Filen eller katalogen kan inte användas.</translation>
 <translation id="1363028406613469049">Spår</translation>
 <translation id="1378727793141957596">Välkommen till Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> foton har säkerhetskopierats på <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Kopierar ...</translation>
 <translation id="3475447146579922140">Kalkylark i Google Dokument</translation>
-<translation id="3494768541638400973">Googles japanska inmatning (för japanskt tangentbord)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> fel.</translation>
 <translation id="3519867315646775981">Translitterera (shalom ← שלום)</translation>
 <translation id="3522708245912499433">portugisiska</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Allt har säkerhetskopierats!</translation>
 <translation id="3626281679859535460">Ljusstyrka</translation>
 <translation id="3644896802912593514">Bredd</translation>
+<translation id="3645531960514756307">Lossa mapp</translation>
 <translation id="3678559383040232393">Maltesiskt tangentbord</translation>
 <translation id="3685122418104378273">Google Drive-synkronisering inaktiveras som standard när mobildata används.</translation>
 <translation id="3726463242007121105">Enheten kan inte öppnas eftersom dess filsystem inte stöds.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> hittades</translation>
 <translation id="6935521024859866267">Uppochned</translation>
-<translation id="6937152069980083337">Googles japanska inmatning (för amerikanskt tangentbord)</translation>
 <translation id="6939777852457331078">Workman-tangentbord för USA</translation>
 <translation id="696203921837389374">Aktivera synkronisering via mobildata</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Igår kl. <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Isländskt tangentbord</translation>
 <translation id="8342318071240498787">Det finns redan en fil eller en katalog med samma namn.</translation>
+<translation id="8382450452152102026">Till <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Translitterering (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Dimensioner</translation>
 <translation id="8412586565681117057">Snabb inmatningsmetod</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Sidantal</translation>
 <translation id="9110990317705400362">Vi strävar hela tiden efter att göra det säkrare för dig att surfa. Tidigare kunde du uppmanas att lägga till ett tillägg i webbläsaren på vilken webbplats som helst. I de senaste versionerna av Google Chrome måste du uttryckligen tala om för Chrome att du vill installera dessa tillägg genom att lägga till dem via sidan Tillägg. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodek</translation>
+<translation id="9129931661813833980">Fäst mapp</translation>
 <translation id="9130775360844693113">De som använder <ph name="DESTINATION_NAME" /> får åtkomst till dessa objekt.</translation>
 <translation id="9131598836763251128">Välj en eller flera filer</translation>
 <translation id="9133055936679483811">Komprimeringen misslyckades. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
index 7966912..87281e5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Kulia</translation>
 <translation id="1351692861129622852">Inaleta faili <ph name="FILE_COUNT" />...</translation>
 <translation id="1352103415082130575">Kibodi ya Kithai (Pattachote)</translation>
-<translation id="1358032944105037487">Kibodi ya Kijapani</translation>
 <translation id="1358735829858566124">Faili au saraka haitumiki.</translation>
 <translation id="1363028406613469049">Wimbo</translation>
 <translation id="1378727793141957596">Karibu kwenye Hifadhi ya Google!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Picha <ph name="FILE_COUNT" /> zimehifadhiwa nakala rudufu kwenye <ph name="BEGIN_LINK" />Hifadhi ya Google<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Inanakili...</translation>
 <translation id="3475447146579922140">Lahajedwali ya Google</translation>
-<translation id="3494768541638400973">Kibodi ya Google ya Kijapani (ya kibodi ya Kijapani)</translation>
 <translation id="3495304270784461826">Hitilafu <ph name="COUNT" />.</translation>
 <translation id="3519867315646775981">Unukuzi wa mfumo wa kuandika (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Kireno</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Zote zimehifadhiwa nakala!</translation>
 <translation id="3626281679859535460">Ung'aavu</translation>
 <translation id="3644896802912593514">Upana</translation>
+<translation id="3645531960514756307">Bandua folda</translation>
 <translation id="3678559383040232393">Kibodi ya Kimalta</translation>
 <translation id="3685122418104378273">Usawazishaji wa Hifadhi ya Google umezimwa kwa chaguomsingi wakati wa kutumia data ya kifaa cha mkononi.</translation>
 <translation id="3726463242007121105">Kifaa hakiwezi kufunguliwa kwa sababu mfumo wake wa faili hauhimiliwi.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> imepatikana</translation>
 <translation id="6935521024859866267">Juu Chini</translation>
-<translation id="6937152069980083337">Kibodi ya Google ya Kijapani (ya kibodi ya Marekani)</translation>
 <translation id="6939777852457331078">Kibodi ya US Workman</translation>
 <translation id="696203921837389374">Washa inasawazisha kwenye data ya kifaa cha mkononi</translation>
 <translation id="6965382102122355670">Sawa</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Jana <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Kibodi ya Kiayalandi</translation>
 <translation id="8342318071240498787">Faili au saraka iliyo na jina sawa tayari ipo.</translation>
+<translation id="8382450452152102026">Kwenye <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Unukuzi wa mfumo wa kuandika (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Vipimo</translation>
 <translation id="8412586565681117057">Mbinu ya kuingiza data ya Quick</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Idadi ya kurasa</translation>
 <translation id="9110990317705400362">Tunaendelea kutafuta njia za kufanya kuvinjari kwako kuwe salama zaidi. Hapo awali, tovuti yoyote ingeweza kukuomba kuongeza kiendelezi katika kivinjari chako. Katika matoleo mapya ya Google Chrome, lazima uiambie Chrome kwa uwazi kuwa unataka kusakinisha viendelezi hivi kwa kuviongeza kupitia ukurasa wa Viendelezi. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Kodeki</translation>
+<translation id="9129931661813833980">Bandika folda</translation>
 <translation id="9130775360844693113">Wanachama wa '<ph name="DESTINATION_NAME" />' watapata idhini ya kuvifikia vipengee hivi.</translation>
 <translation id="9131598836763251128">Chagua faili moja au zaidi</translation>
 <translation id="9133055936679483811">Haikuwezekana kubana. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
index fb2c67f8..eefb6ec8 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ta.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">வலது</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> கோப்புகளைப் பதிவிறக்குகிறது...</translation>
 <translation id="1352103415082130575">தாய் விசைப்பலகை (பட்டாசொட்டே)</translation>
-<translation id="1358032944105037487">ஜப்பானீஸ் விசைப்பலகை</translation>
 <translation id="1358735829858566124">கோப்பு அல்லது கோப்பகம் உபயோகிக்கக்கூடியதில்லை.</translation>
 <translation id="1363028406613469049">ட்ராக் எண்</translation>
 <translation id="1378727793141957596">Google இயக்ககத்திற்கு வருக!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="BEGIN_LINK" />Google இயக்ககத்தில்<ph name="END_LINK" /> <ph name="FILE_COUNT" /> படங்கள் காப்புப் பிரதி எடுக்கப்பட்டன</translation>
 <translation id="3470502288861289375">நகலெடுக்கிறது...</translation>
 <translation id="3475447146579922140">Google விரிதாள்</translation>
-<translation id="3494768541638400973">Google ஜப்பானிய உள்ளீடு (ஜப்பானிய விசைப்பலகைக்காக)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> பிழைகள்.</translation>
 <translation id="3519867315646775981">ஒலிபெயர்ப்பு (shalom ← שלום)</translation>
 <translation id="3522708245912499433">போர்ச்சுகீஸ்</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">எல்லாம் காப்புப் பிரதி எடுக்கப்பட்டன!</translation>
 <translation id="3626281679859535460">ஒளிர்வு</translation>
 <translation id="3644896802912593514">அகலம்</translation>
+<translation id="3645531960514756307">கோப்புறையைப் பிரித்தெடு</translation>
 <translation id="3678559383040232393">மால்டீஸ் விசைப்பலகை</translation>
 <translation id="3685122418104378273">மொபைல் டேட்டாவைப் பயன்படுத்தும்போது, இயல்புநிலையாகவே Google இயக்கக ஒத்திசைவு முடக்கப்பட்டுள்ளது.</translation>
 <translation id="3726463242007121105">இந்த சாதனத்தின் கோப்புமுறைமை ஆதரிக்கப்படாததால், இந்த சாதனத்தை திறக்க முடியவில்லை.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> உள்ளது</translation>
 <translation id="6935521024859866267">தலைகீழ்</translation>
-<translation id="6937152069980083337">Google ஜப்பானிய உள்ளீடு (யுஎஸ் விசைப்பலகைக்காக)</translation>
 <translation id="6939777852457331078">யுஎஸ் ஒர்க்மேன் விசைப்பலகை</translation>
 <translation id="696203921837389374">மொபைல் டேட்டாவுடன் ஒத்திசை</translation>
 <translation id="6965382102122355670">சரி</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">நேற்று <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">ஐஸ்லாண்டிக் விசைப்பலகை</translation>
 <translation id="8342318071240498787">ஒரே பெயருடைய கோப்பு  அல்லது கோப்பகம் ஏற்கனவே உள்ளன.</translation>
+<translation id="8382450452152102026">பெறுநர்: <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">ஒலிபெயர்ப்பு (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">பரிமாணங்கள்</translation>
 <translation id="8412586565681117057">விரைவு உள்ளீட்டு முறை</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">பக்க எண்ணிக்கை</translation>
 <translation id="9110990317705400362">உங்கள் உலாவலைத் பாதுகாப்பாக்கும் வழிகளைத் தொடர்ந்து தேடுகிறோம். முன்னர், எந்த இணையதளமும் நீட்டிப்பை உங்கள் உலாவியில் சேர்க்கக் கேட்கலாம். சமீபத்திய Google Chrome பதிப்புகளில், நீட்டிப்புகள் பக்கம் வழியாக அவற்றைச் சேர்ப்பதன் மூலம், இந்த நீட்டிப்புகளை நிறுவ விரும்புகிறீர்களா என்பதை வெளிப்படையாக Chromeக்குக் கூற வேண்டும். <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">கோடெக்</translation>
+<translation id="9129931661813833980">கோப்புறையைப் பின் செய்</translation>
 <translation id="9130775360844693113">'<ph name="DESTINATION_NAME" />' இன் உறுப்பினர்கள் இந்தக் கோப்புகளுக்கான அணுகலைப் பெறுவார்கள்.</translation>
 <translation id="9131598836763251128">ஒன்று அல்லது அதற்குமேற்பட்ட கோப்புகளைத் தேர்ந்தெடுக்கவும்</translation>
 <translation id="9133055936679483811">ஜிப் செய்தல் தோல்வி. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_te.xtb b/ui/chromeos/translations/ui_chromeos_strings_te.xtb
index 4a9fa2e..978252f5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_te.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_te.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">కుడి</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> ఫైల్‌లను దిగుమతి చేస్తోంది...</translation>
 <translation id="1352103415082130575">థాయ్ కీబోర్డ్ (పటాచోట్)</translation>
-<translation id="1358032944105037487">జపనీస్ కీబోర్డ్</translation>
 <translation id="1358735829858566124">ఈ ఫైల్ లేదా డైరెక్టరీ ఉపయోగించబడదు.</translation>
 <translation id="1363028406613469049">ట్రాక్ చేయండి</translation>
 <translation id="1378727793141957596">Google డిస్క్‌కు స్వాగతం!</translation>
@@ -90,7 +89,7 @@
 <translation id="197560921582345123">సవరించగలరు</translation>
 <translation id="1984603991036629094">అర్మేనియన్ ఫొనెటిక్ కీబోర్డ్</translation>
 <translation id="2001796770603320721">డిస్క్‌లో నిర్వహించు</translation>
-<translation id="2009067268969781306">డ్రైవ్‌ను ఫార్మాట్ చేయడం వలన దానిలో నిల్వ చేయబడిన మొత్తం డేటా తొలగించబడుతుంది. ఈ చర్యను చర్యరద్దు చేయలేరు.</translation>
+<translation id="2009067268969781306">డ్రైవ్‌ను ఫార్మాట్ చేయడం వలన దానిలో నిల్వ చేయబడిన మొత్తం డేటా తొలగించబడుతుంది. ఈ చర్యను రద్దు చేయలేరు.</translation>
 <translation id="2028997212275086731">RAR ఆర్కైవ్</translation>
 <translation id="2046702855113914483">రామెన్</translation>
 <translation id="2070909990982335904">డాట్‌తో ప్రారంభమయ్యే పేర్లు సిస్టమ్ కోసం ప్రత్యేకించబడినవి. దయచేసి మరొక పేరును ఎంచుకోండి.</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> ఫోటోలు <ph name="BEGIN_LINK" />Google డిస్క్<ph name="END_LINK" />కి బ్యాకప్ చేయబడ్డాయి</translation>
 <translation id="3470502288861289375">కాపీ చేస్తోంది...</translation>
 <translation id="3475447146579922140">Google స్ప్రెడ్‌షీట్</translation>
-<translation id="3494768541638400973">Google జపనీయుల ఇన్‌పుట్ (జపనీయుల కీబోర్డ్ కోసం)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> లోపాలు.</translation>
 <translation id="3519867315646775981">లిప్యంతరీకరణ (shalom ← שלום)</translation>
 <translation id="3522708245912499433">పోర్చుగీస్</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">అన్నీ బ్యాకప్ చేయబడ్డాయి!</translation>
 <translation id="3626281679859535460">ప్రకాశం</translation>
 <translation id="3644896802912593514">వెడల్పు</translation>
+<translation id="3645531960514756307">ఫోల్డర్‌ను అన్‌పిన్ చేయి</translation>
 <translation id="3678559383040232393">మాల్టెసె కీబోర్డ్</translation>
 <translation id="3685122418104378273">మొబైల్ డేటాను ఉపయోగిస్తున్నప్పుడు Google డిస్క్ సింక్ డిఫాల్ట్‌గా నిలిపివేయబడుతుంది.</translation>
 <translation id="3726463242007121105">పరికరం తెరవడం సాధ్యం కాదు ఎందుకంటే దాని ఫైల్‌సిస్టమ్‌కు మద్దతు లేదు.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" />కనుగొనబడ్డాయి</translation>
 <translation id="6935521024859866267">తలక్రిందులుగా</translation>
-<translation id="6937152069980083337">Google జపనీయుల ఇన్‌పుట్ (యుఎస్ కీబోర్డ్ కోసం)</translation>
 <translation id="6939777852457331078">US వర్క్‌మాన్ కీబోర్డ్</translation>
 <translation id="696203921837389374">మొబైల్ డేటా ఉపయోగించి సింక్ చేయడం ప్రారంభించు</translation>
 <translation id="6965382102122355670">సరే</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">నిన్న <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">ఐస్‌ల్యాండిక్ కీబోర్డ్</translation>
 <translation id="8342318071240498787">ఫైల్ లేదా డైరెక్టరీ అదే పేరుతో ఇప్పటికే ఉనికిలో ఉంది.</translation>
+<translation id="8382450452152102026"><ph name="FOLDER_NAME" />లోకి</translation>
 <translation id="8391950649760071442">లిప్యంతరీకరణ (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">కొలతలు</translation>
 <translation id="8412586565681117057">Quick ఇన్‌పుట్ పద్ధతి</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">పేజీ గణన</translation>
 <translation id="9110990317705400362">మేము మీ బ్రౌజింగ్‌ను సురక్షితం చేసే మార్గాల కోసం నిరంతరం శోధిస్తున్నాము. గతంలో, ఏ వెబ్‌సైట్ అయినా మీ బ్రౌజర్‌కు ఎక్స్‌టెన్ష‌న్‌ను జోడించడానికి మిమ్మల్ని ప్రాంప్ట్ చేయవచ్చు. Google Chrome తాజా వెర్ష‌న్‌ల్లో, మీరు తప్పనిసరిగా ఎక్స్‌టెన్ష‌న్‌ల పేజీలో వాటిని జోడించడం ద్వారా ఈ ఎక్స్‌టెన్ష‌న్‌లను ఇన్‌స్టాల్ చేయాలనుకుంటున్నట్లు Chromeకు ప్రత్యేకించి తెలియజేయాలి. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">కోడెక్</translation>
+<translation id="9129931661813833980">ఫోల్డర్‌ను పిన్ చేయి</translation>
 <translation id="9130775360844693113">'<ph name="DESTINATION_NAME" />' యొక్క సభ్యులు ఈ అంశాలకు యాక్సెస్ పొందుతారు.</translation>
 <translation id="9131598836763251128">దయచేసి ఒకటి లేదా మరిన్ని ఫైళ్ళను ఎంచుకోండి</translation>
 <translation id="9133055936679483811">జిప్ చేయడంలో విఫలమైంది. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_th.xtb b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
index 4796832..cc42d53 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_th.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">ขวา</translation>
 <translation id="1351692861129622852">กำลังนำเข้า <ph name="FILE_COUNT" /> ไฟล์...</translation>
 <translation id="1352103415082130575">แป้นพิมพ์ภาษาไทย (ปัตตะโชติ)</translation>
-<translation id="1358032944105037487">แป้นพิมพ์ภาษาญี่ปุ่น</translation>
 <translation id="1358735829858566124">ไฟล์หรือไดเรกทอรีใช้งานไม่ได้</translation>
 <translation id="1363028406613469049">แทร็ก</translation>
 <translation id="1378727793141957596">ยินดีต้อนรับสู่ Google ไดรฟ์!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">สำรองรูปภาพ <ph name="FILE_COUNT" /> รูปไปยัง <ph name="BEGIN_LINK" />Google ไดรฟ์<ph name="END_LINK" />แล้ว</translation>
 <translation id="3470502288861289375">กำลังคัดลอก...</translation>
 <translation id="3475447146579922140">สเปรดชีตของ Google</translation>
-<translation id="3494768541638400973">การป้อนข้อมูลภาษาญี่ปุ่นของ Google (สำหรับแป้นพิมพ์ภาษาญี่ปุ่น)</translation>
 <translation id="3495304270784461826">ข้อผิดพลาด <ph name="COUNT" /> รายการ</translation>
 <translation id="3519867315646775981">การทับศัพท์ (shalom ← שלום)</translation>
 <translation id="3522708245912499433">โปรตุเกส</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">สำรองข้อมูลทั้งหมดแล้ว!</translation>
 <translation id="3626281679859535460">ความสว่าง</translation>
 <translation id="3644896802912593514">ความกว้าง</translation>
+<translation id="3645531960514756307">เลิกตรึงโฟลเดอร์</translation>
 <translation id="3678559383040232393">แป้นพิมพ์มอลตา</translation>
 <translation id="3685122418104378273">เมื่อใช้ข้อมูลมือถือ การซิงค์ Google ไดรฟ์จะปิดใช้อยู่เป็นค่าเริ่มต้น</translation>
 <translation id="3726463242007121105">ไม่สามารถเปิดอุปกรณ์นี้ได้ เนื่องจากไม่สนับสนุนระบบไฟล์ของอุปกรณ์นี้</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     พบ <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">กลับหัว</translation>
-<translation id="6937152069980083337">การป้อนข้อมูลภาษาญี่ปุ่นของ Google (สำหรับแป้นพิมพ์สหรัฐฯ)</translation>
 <translation id="6939777852457331078">แป้นพิมพ์ Workman สหรัฐฯ</translation>
 <translation id="696203921837389374">เปิดใช้การซิงค์ผ่านข้อมูลมือถือ</translation>
 <translation id="6965382102122355670">ตกลง</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">เมื่อวานนี้ <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">แป้นพิมพ์ไอซ์แลนด์</translation>
 <translation id="8342318071240498787">มีไฟล์หรือไดเรกทอรีที่มีชื่อเดียวกันนี้อยู่แล้ว</translation>
+<translation id="8382450452152102026">ไปยัง <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">การทับศัพท์ (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">มิติข้อมูล</translation>
 <translation id="8412586565681117057">วิธีการป้อนข้อมูลอย่างรวดเร็ว</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">จำนวนหน้า</translation>
 <translation id="9110990317705400362">เรายังคงค้นหาวิธีที่จะทำให้การท่องเว็บของคุณปลอดภัยยิ่งขึ้นอย่างสม่ำเสมอ ก่อนหน้านี้ทุกเว็บไซต์สามารถแสดงข้อความแจ้งให้คุณเพิ่มส่วนขยายในเบราว์เซอร์ แต่ใน Google Chrome เวอร์ชันล่าสุด คุณจะต้องแจ้งให้ Chrome ทราบอย่างชัดเจนว่าคุณต้องการติดตั้งส่วนขยายเหล่านี้โดยการเพิ่มส่วนขยายผ่านหน้า "ส่วนขยาย" <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">ตัวแปลงรหัส</translation>
+<translation id="9129931661813833980">ตรึงโฟลเดอร์</translation>
 <translation id="9130775360844693113">สมาชิกของ "<ph name="DESTINATION_NAME" />" จะได้รับสิทธิ์เข้าถึงรายการเหล่านี้</translation>
 <translation id="9131598836763251128">โปรดเลือกอย่างน้อยหนึ่งไฟล์</translation>
 <translation id="9133055936679483811">การซิปล้มเหลว <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
index f2bbf51..3576152c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Sağa</translation>
 <translation id="1351692861129622852"><ph name="FILE_COUNT" /> dosya içe aktarılıyor...</translation>
 <translation id="1352103415082130575">Tayca klavye (Pattachote)</translation>
-<translation id="1358032944105037487">Japonca klavye</translation>
 <translation id="1358735829858566124">Dosya veya dizin kullanılamıyor.</translation>
 <translation id="1363028406613469049">Takip numarası</translation>
 <translation id="1378727793141957596">Google Drive'a hoş geldiniz!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824"><ph name="FILE_COUNT" /> fotoğraf <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" />'a yedeklendi</translation>
 <translation id="3470502288861289375">Kopyalanıyor...</translation>
 <translation id="3475447146579922140">Google e-tablosu</translation>
-<translation id="3494768541638400973">Google Japonca Girişi (Japonca klavye için)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> hata.</translation>
 <translation id="3519867315646775981">Harf çevirisi (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Portekizce</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Tümü yedeklendi!</translation>
 <translation id="3626281679859535460">Parlaklık</translation>
 <translation id="3644896802912593514">Genişlik</translation>
+<translation id="3645531960514756307">Klasörün sabitlemesini kaldır</translation>
 <translation id="3678559383040232393">Malta diline özgü klavye</translation>
 <translation id="3685122418104378273">Mobil veriler kullanılırken Google Drive senkronizasyonu varsayılan olarak devre dışıdır.</translation>
 <translation id="3726463242007121105">Bu cihaz, dosya sistemi desteklenmediğinden açılamıyor.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     <ph name="FILE_COUNT" /> bulundu</translation>
 <translation id="6935521024859866267">Baş Aşağı</translation>
-<translation id="6937152069980083337">Google Japonca Girişi (ABD klavye için)</translation>
 <translation id="6939777852457331078">ABD Workman klavye</translation>
 <translation id="696203921837389374">Mobil veriler üzerinden senkronizasyonu etkinleştir</translation>
 <translation id="6965382102122355670">Tamam</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Dün <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">İzlanda klavyesi</translation>
 <translation id="8342318071240498787">Aynı adda bir dosya veya dizin zaten var.</translation>
+<translation id="8382450452152102026">Alıcı: <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Harf çevirisi (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Boyutlar</translation>
 <translation id="8412586565681117057">Hızlı giriş yöntemi</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Sayfa sayısı</translation>
 <translation id="9110990317705400362">Sürekli olarak, web'e daha güvenli göz atabilmenizi sağlamanın yollarını aramaktayız. Önceden, herhangi bir web sitesi, tarayıcınıza uzantı eklemeniz için istekte bulunabiliyordu. Google Chrome'un son sürümlerinde bu uzantıları yüklemek istediğinizi Chrome'a açıkça söylemelisiniz. Bunu yapmak için uzantıları Uzantılar sayfası üzerinden eklemeniz gerekiyor. <ph name="BEGIN_LINK" />Daha fazla bilgi edinin<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Klasörü sabitle</translation>
 <translation id="9130775360844693113">"<ph name="DESTINATION_NAME" />" hedefinin üyeleri, bu öğelere erişim hakkı kazanacaktır.</translation>
 <translation id="9131598836763251128">Bir veya daha fazla dosya seçin</translation>
 <translation id="9133055936679483811">Sıkıştırma başarısız oldu. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
index fab3147f7..e2914824 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_uk.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Праворуч</translation>
 <translation id="1351692861129622852">Імпортування файлів (<ph name="FILE_COUNT" />)…</translation>
 <translation id="1352103415082130575">Тайська клавіатура (паттачоте)</translation>
-<translation id="1358032944105037487">Японська розкладка</translation>
 <translation id="1358735829858566124">Файл або каталог не можна використовувати.</translation>
 <translation id="1363028406613469049">Композиція</translation>
 <translation id="1378727793141957596">Вітаємо на Диску Google!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">На <ph name="BEGIN_LINK" />Google Диск<ph name="END_LINK" /> імпортовано <ph name="FILE_COUNT" /> фото</translation>
 <translation id="3470502288861289375">Копіювання…</translation>
 <translation id="3475447146579922140">Таблиці Google</translation>
-<translation id="3494768541638400973">Метод введення Google для японської мови (японська клавіатура)</translation>
 <translation id="3495304270784461826">Помилок: <ph name="COUNT" />.</translation>
 <translation id="3519867315646775981">Транслітерація (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Португальська</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Усі файли імпортовано!</translation>
 <translation id="3626281679859535460">Яскравість</translation>
 <translation id="3644896802912593514">Ширина</translation>
+<translation id="3645531960514756307">Відкріпити папку</translation>
 <translation id="3678559383040232393">Мальтійська клавіатура</translation>
 <translation id="3685122418104378273">Коли використовується мобільний Інтернет, синхронізацію Google Диска вимкнено за умовчанням.</translation>
 <translation id="3726463242007121105">Не вдається відкрити пристрій, оскільки його файлова система не підтримується.</translation>
@@ -342,7 +341,7 @@
 <translation id="5038625366300922036">Більше…</translation>
 <translation id="5061708541166515394">Контраст</translation>
 <translation id="5068919226082848014">Піца</translation>
-<translation id="5081517858322016911">Буде видалено файли розміром <ph name="TOTAL_FILE_SIZE" /></translation>
+<translation id="5081517858322016911">Буде видалено файли загальним обсягом <ph name="TOTAL_FILE_SIZE" /></translation>
 <translation id="509429900233858213">Сталася помилка.</translation>
 <translation id="5098629044894065541">Іврит</translation>
 <translation id="5123433949759960244">Баскетбол</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Знайдено: <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Догори дригом</translation>
-<translation id="6937152069980083337">Метод введення Google для японської мови (клавіатура США)</translation>
 <translation id="6939777852457331078">Клавіатура US Workman</translation>
 <translation id="696203921837389374">Увімкнути синхронізацію через мобільний Інтернет</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Учора <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Ісландська клавіатура</translation>
 <translation id="8342318071240498787">Файл або каталог з таким же ім’ям уже існує.</translation>
+<translation id="8382450452152102026">У папку "<ph name="FOLDER_NAME" />"</translation>
 <translation id="8391950649760071442">Транслітерація (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Розміри</translation>
 <translation id="8412586565681117057">Спрощений метод введення для стандарту цанцзе</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Кількість сторінок</translation>
 <translation id="9110990317705400362">Ми постійно шукаємо способи зробити перегляд веб-сторінок безпечнішим. Раніше будь-який веб-сайт міг пропонувати вам додати розширення у веб-переглядач. В останніх версіях Google Chrome ви маєте чітко вказати, що хочете встановити ці розширення, додавши їх на сторінці "Розширення". <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Кодек</translation>
+<translation id="9129931661813833980">Закріпити папку</translation>
 <translation id="9130775360844693113">Учасники, які мають доступ до розташування "<ph name="DESTINATION_NAME" />", отримають доступ до цих елементів.</translation>
 <translation id="9131598836763251128">Виберіть один або декілька файлів</translation>
 <translation id="9133055936679483811">Помилка архівування. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
index f00cd9e..f0c66d5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_vi.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">Phải</translation>
 <translation id="1351692861129622852">Đang nhập <ph name="FILE_COUNT" /> tệp...</translation>
 <translation id="1352103415082130575">Bàn phím tiếng Thái (Pattachote)</translation>
-<translation id="1358032944105037487">Bàn phím tiếng Nhật</translation>
 <translation id="1358735829858566124">Không thể sử dụng được tệp hoặc thư mục.</translation>
 <translation id="1363028406613469049">Số theo dõi</translation>
 <translation id="1378727793141957596">Chào mừng bạn đến với Google Drive!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">Đã sao lưu <ph name="FILE_COUNT" /> ảnh vào <ph name="BEGIN_LINK" />Google Drive<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">Đang sao chép...</translation>
 <translation id="3475447146579922140">Bảng tính Google</translation>
-<translation id="3494768541638400973">Phương pháp Nhập tiếng Nhật của Google (dành cho bàn phím Nhật)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" /> lỗi.</translation>
 <translation id="3519867315646775981">Chuyển ngữ (shalom ← שלום)</translation>
 <translation id="3522708245912499433">Tiếng Bồ Đào Nha</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">Đã sao lưu tất cả!</translation>
 <translation id="3626281679859535460">Độ sáng</translation>
 <translation id="3644896802912593514">Chiều rộng</translation>
+<translation id="3645531960514756307">Bỏ ghim thư mục</translation>
 <translation id="3678559383040232393">Bàn phím tiếng Malta</translation>
 <translation id="3685122418104378273">Tính năng đồng bộ hóa Google Drive được tắt theo mặc định khi sử dụng dữ liệu di động.</translation>
 <translation id="3726463242007121105">Thiết bị này không thể mở được vì hệ thống tệp của thiết bị không được hỗ trợ.</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     Đã tìm thấy <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">Lộn ngược</translation>
-<translation id="6937152069980083337">Phương pháp Nhập tiếng Nhật của Google (dành cho bàn phím Hoa Kỳ)</translation>
 <translation id="6939777852457331078">Bàn phím Workman Hoa Kỳ</translation>
 <translation id="696203921837389374">Bật đồng bộ hóa qua dữ liệu di động</translation>
 <translation id="6965382102122355670">OK</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">Hôm qua <ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">Bàn phím Iceland</translation>
 <translation id="8342318071240498787">Tệp hoặc thư mục có cùng tên đã tồn tại.</translation>
+<translation id="8382450452152102026">Đến <ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">Chuyển ngữ (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">Kích thước</translation>
 <translation id="8412586565681117057">Phương thức nhập nhanh</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">Số lượng trang</translation>
 <translation id="9110990317705400362">Chúng tôi không ngừng tìm cách để giúp cho quá trình duyệt web của bạn trở nên an toàn hơn. Trước đây, bất kỳ trang web nào cũng có thể nhắc bạn thêm tiện ích vào trình duyệt. Trong các phiên bản mới nhất của Google Chrome, bạn phải cho Chrome biết rõ rằng bạn muốn cài đặt các tiện ích này bằng cách thêm chúng thông qua trang Tiện ích. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">Codec</translation>
+<translation id="9129931661813833980">Ghim thư mục</translation>
 <translation id="9130775360844693113">Thành viên của '<ph name="DESTINATION_NAME" />' sẽ có quyền truy cập vào các tệp này.</translation>
 <translation id="9131598836763251128">Chọn một hoặc nhiều tệp</translation>
 <translation id="9133055936679483811">Nén không thành công. <ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
index c425552..bbec7bd 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-CN.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">向右</translation>
 <translation id="1351692861129622852">正在导入 <ph name="FILE_COUNT" /> 个文件…</translation>
 <translation id="1352103415082130575">泰语键盘(Pattachote)</translation>
-<translation id="1358032944105037487">日语键盘</translation>
 <translation id="1358735829858566124">该文件或目录无法使用。</translation>
 <translation id="1363028406613469049">曲目</translation>
 <translation id="1378727793141957596">欢迎使用 Google 云端硬盘!</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">已将 <ph name="FILE_COUNT" /> 张照片备份到 <ph name="BEGIN_LINK" />Google 云端硬盘<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">正在复制…</translation>
 <translation id="3475447146579922140">Google 电子表格</translation>
-<translation id="3494768541638400973">Google 日语输入法(日语键盘)</translation>
 <translation id="3495304270784461826"><ph name="COUNT" />个错误。</translation>
 <translation id="3519867315646775981">音译(shalom ← שלום)</translation>
 <translation id="3522708245912499433">葡萄牙语</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">所有文件都已备份!</translation>
 <translation id="3626281679859535460">亮度</translation>
 <translation id="3644896802912593514">宽度</translation>
+<translation id="3645531960514756307">取消固定文件夹</translation>
 <translation id="3678559383040232393">马耳他语键盘</translation>
 <translation id="3685122418104378273">当您使用移动数据网络时,Google 云端硬盘同步功能默认情况下处于停用状态。</translation>
 <translation id="3726463242007121105">系统不支持此设备的文件系统,因此无法打开此设备。</translation>
@@ -509,7 +508,6 @@
     <ph name="LINE_BREAK1" />
     找到了 <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">倒栽葱蝴蝶</translation>
-<translation id="6937152069980083337">Google 日语输入法(美式键盘)</translation>
 <translation id="6939777852457331078">美式 Workman 键盘</translation>
 <translation id="696203921837389374">在移动数据网络中启用同步功能</translation>
 <translation id="6965382102122355670">确定</translation>
@@ -642,6 +640,7 @@
 <translation id="8336153091935557858">昨天<ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">冰岛语键盘</translation>
 <translation id="8342318071240498787">已存在具有相同名称的文件或目录。</translation>
+<translation id="8382450452152102026">目标文件夹:<ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">音译(emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">尺寸</translation>
 <translation id="8412586565681117057">速成输入法</translation>
@@ -691,6 +690,7 @@
 <translation id="9099674669267916096">页数</translation>
 <translation id="9110990317705400362">我们在不断寻找各种方式来提高上网安全。之前,任何网站都可以提示您在浏览器中添加扩展程序;而在最新版本的Google Chrome中,您必须明确告诉Chrome您想要安装这些扩展程序(即:在“扩展程序”页添加它们)后才可以。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">编解码器</translation>
+<translation id="9129931661813833980">固定文件夹</translation>
 <translation id="9130775360844693113">“<ph name="DESTINATION_NAME" />”的成员将会有权访问这些内容。</translation>
 <translation id="9131598836763251128">选择一个或多个文件</translation>
 <translation id="9133055936679483811">压缩失败。<ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
index f34c466..37865554 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
@@ -36,7 +36,6 @@
 <translation id="1346748346194534595">向右</translation>
 <translation id="1351692861129622852">正在匯入 <ph name="FILE_COUNT" /> 個檔案...</translation>
 <translation id="1352103415082130575">泰文鍵盤 (Pattachote)</translation>
-<translation id="1358032944105037487">日文鍵盤</translation>
 <translation id="1358735829858566124">檔案或目錄無法使用。</translation>
 <translation id="1363028406613469049">追蹤</translation>
 <translation id="1378727793141957596">歡迎使用 Google 雲端硬碟!</translation>
@@ -90,7 +89,7 @@
 <translation id="197560921582345123">可以編輯</translation>
 <translation id="1984603991036629094">亞美尼亞文 (拼音) 鍵盤</translation>
 <translation id="2001796770603320721">在雲端硬碟中管理</translation>
-<translation id="2009067268969781306">格式化硬碟將刪除其中儲存的所有資料。這項操作無法復原。</translation>
+<translation id="2009067268969781306">若將硬碟格式化,其中儲存的所有資料都將遭到刪除。這項操作無法復原。</translation>
 <translation id="2028997212275086731">RAR 封存</translation>
 <translation id="2046702855113914483">拉麵</translation>
 <translation id="2070909990982335904">以點號開頭的名稱僅供系統使用,請選擇其他名稱。</translation>
@@ -205,7 +204,6 @@
 <translation id="3468522857997926824">已將 <ph name="FILE_COUNT" /> 張相片備份到 <ph name="BEGIN_LINK" />Google 雲端硬碟<ph name="END_LINK" /></translation>
 <translation id="3470502288861289375">複製中...</translation>
 <translation id="3475447146579922140">Google 試算表</translation>
-<translation id="3494768541638400973">Google 日文輸入法 (適用於日文鍵盤)</translation>
 <translation id="3495304270784461826">發生 <ph name="COUNT" /> 個錯誤。</translation>
 <translation id="3519867315646775981">音譯 (shalom ← שלום)</translation>
 <translation id="3522708245912499433">葡萄牙文</translation>
@@ -220,6 +218,7 @@
 <translation id="3620292326130836921">所有檔案都已備份!</translation>
 <translation id="3626281679859535460">亮度</translation>
 <translation id="3644896802912593514">寬度</translation>
+<translation id="3645531960514756307">取消固定資料夾</translation>
 <translation id="3678559383040232393">馬爾他文鍵盤</translation>
 <translation id="3685122418104378273">使用行動數據時,Google 雲端硬碟同步功能預設為停用。</translation>
 <translation id="3726463242007121105">這個裝置所用的檔案系統不受支援,因此系統無法開啟這個裝置。</translation>
@@ -514,7 +513,6 @@
     <ph name="LINE_BREAK1" />
     找到 <ph name="FILE_COUNT" /></translation>
 <translation id="6935521024859866267">上下顛倒</translation>
-<translation id="6937152069980083337">Google 日文輸入法 (適用於美式鍵盤)</translation>
 <translation id="6939777852457331078">美式 Workman 鍵盤</translation>
 <translation id="696203921837389374">啟用透過行動數據進行同步處理的功能</translation>
 <translation id="6965382102122355670">確定</translation>
@@ -647,6 +645,7 @@
 <translation id="8336153091935557858">昨天<ph name="YESTERDAY_DAYTIME" /></translation>
 <translation id="8336579025507394412">冰島文鍵盤配置</translation>
 <translation id="8342318071240498787">已存在名稱相同的檔案或目錄。</translation>
+<translation id="8382450452152102026">移至:<ph name="FOLDER_NAME" /></translation>
 <translation id="8391950649760071442">音譯 (emandi → ఏమండీ)</translation>
 <translation id="8395901698320285466">尺寸</translation>
 <translation id="8412586565681117057">簡易/速成輸入法</translation>
@@ -696,6 +695,7 @@
 <translation id="9099674669267916096">頁數</translation>
 <translation id="9110990317705400362">我們不斷努力提升網路瀏覽的安全性。過去,任何網站都可以提示你在瀏覽器中新增擴充功能。在最新版本的 Google Chrome 中,你必須統一透過「擴充功能」頁面新增擴充功能,讓 Chrome 確實瞭解你要安裝的各項擴充功能。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="912419004897138677">轉碼器</translation>
+<translation id="9129931661813833980">固定資料夾</translation>
 <translation id="9130775360844693113">「<ph name="DESTINATION_NAME" />」的成員將可存取這些項目。</translation>
 <translation id="9131598836763251128">選取一或多個檔案</translation>
 <translation id="9133055936679483811">壓縮失敗。<ph name="ERROR_MESSAGE" /></translation>
diff --git a/ui/chromeos/ui_chromeos_strings.grd b/ui/chromeos/ui_chromeos_strings.grd
index 50b7ae9..22e329e 100644
--- a/ui/chromeos/ui_chromeos_strings.grd
+++ b/ui/chromeos/ui_chromeos_strings.grd
@@ -766,8 +766,8 @@
       <message name="IDS_IME_NAME_KEYBOARD_ITALIAN" desc="The input method name shows in system tray menu, this shows [Italian keyboard].">
         Italian keyboard
       </message>
-      <message name="IDS_IME_NAME_KEYBOARD_JAPANESE" desc="The input method name shows in system tray menu, this shows [Japanese keyboard].">
-        Japanese keyboard
+      <message name="IDS_IME_NAME_KEYBOARD_JAPANESE" desc="The input method name shows in system tray menu, this shows [Alphanumeric input (for Japanese keyboard)]. Native name in Japanese is '英数入力(日本語キーボード用)'. This refers to the keyboard with Japanese JIS layout that types Latin alphanumeric and symbol characters.">
+        Alphanumeric input (for Japanese keyboard)
       </message>
       <message name="IDS_IME_NAME_KEYBOARD_KAZAKH" desc="The input method name shows in system tray menu, this shows [Kazakh keyboard].">
         Kazakh keyboard
@@ -893,11 +893,11 @@
       <message name="IDS_IME_NAME_INPUTMETHOD_DAYI" desc="The input method name shows in system tray menu, this is Dayi (\u5927\u6613) input method for Traditional Chinese.">
         Dayi input method
       </message>
-      <message name="IDS_IME_NAME_INPUTMETHOD_MOZC_JP" desc="The input method name shows in system tray menu, this is Japanese input method for Japanese keyboard.">
-        Google Japanese Input (for Japanese keyboard)
+      <message name="IDS_IME_NAME_INPUTMETHOD_MOZC_JP" desc="The input method name shows in system tray menu, this is Google Japanese input method on Japanese JIS keyboard layout. Native name in Japanese is '日本語入力(日本語キーボード用)'.">
+        Japanese input (for Japanese keyboard)
       </message>
-      <message name="IDS_IME_NAME_INPUTMETHOD_MOZC_US" desc="The input method name shows in system tray menu, this is Japanese input method for US keyboard.">
-        Google Japanese Input (for US keyboard)
+      <message name="IDS_IME_NAME_INPUTMETHOD_MOZC_US" desc="The input method name shows in system tray menu, this is Google Japanese input method on US ANSI keyboard layout. Native name in Japanese is '日本語入力(USキーボード用)'">
+        Japanese input (for US keyboard)
       </message>
       <message name="IDS_IME_NAME_INPUTMETHOD_PINYIN" desc="The input method name shows in system tray menu, this is Pinyin input method for Simplified Chinese.">
         Pinyin input method
diff --git a/ui/compositor/test/in_process_context_provider.cc b/ui/compositor/test/in_process_context_provider.cc
index e37a17b6..803af87 100644
--- a/ui/compositor/test/in_process_context_provider.cc
+++ b/ui/compositor/test/in_process_context_provider.cc
@@ -12,12 +12,12 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/trace_event.h"
 #include "components/viz/common/gpu/context_cache_controller.h"
+#include "components/viz/test/test_gpu_service_holder.h"
 #include "gpu/command_buffer/client/gles2_implementation.h"
 #include "gpu/command_buffer/client/raster_implementation_gles.h"
 #include "gpu/command_buffer/client/shared_memory_limits.h"
 #include "gpu/command_buffer/common/skia_utils.h"
 #include "gpu/ipc/gl_in_process_context.h"
-#include "gpu/ipc/test_gpu_thread_holder.h"
 #include "gpu/skia_bindings/grcontext_for_gles2_interface.h"
 #include "third_party/skia/include/gpu/GrContext.h"
 #include "third_party/skia/include/gpu/gl/GrGLInterface.h"
@@ -99,10 +99,11 @@
 
   context_ = std::make_unique<gpu::GLInProcessContext>();
   bind_result_ = context_->Initialize(
-      gpu::GetTestGpuThreadHolder()->GetTaskExecutor(), nullptr, /* surface */
-      !window_, /* is_offscreen */
-      window_, attribs_, gpu::SharedMemoryLimits(), gpu_memory_buffer_manager_,
-      image_factory_, base::ThreadTaskRunnerHandle::Get());
+      viz::TestGpuServiceHolder::GetInstance()->task_executor(),
+      /*surface=*/nullptr,
+      /*is_offscreen=*/!window_, window_, attribs_, gpu::SharedMemoryLimits(),
+      gpu_memory_buffer_manager_, image_factory_,
+      base::ThreadTaskRunnerHandle::Get());
 
   if (bind_result_ != gpu::ContextResult::kSuccess)
     return bind_result_;
diff --git a/ui/events/blink/input_handler_proxy.cc b/ui/events/blink/input_handler_proxy.cc
index 19480fd6..74cf707c9 100644
--- a/ui/events/blink/input_handler_proxy.cc
+++ b/ui/events/blink/input_handler_proxy.cc
@@ -390,7 +390,7 @@
       (is_first_gesture_scroll_update_)
           ? ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT
           : ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT,
-      original_timestamp, 1);
+      original_timestamp);
 }
 
 void InputHandlerProxy::DispatchQueuedInputEvents() {
@@ -406,7 +406,7 @@
     // output latency.
     LatencyInfo* latency_info = event_with_callback->mutable_latency_info();
     latency_info->AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_RAF_TIME_COMPONENT, now, 1);
+        ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_RAF_TIME_COMPONENT, now);
 
     DispatchSingleInputEvent(std::move(event_with_callback), now);
   }
diff --git a/ui/events/event.cc b/ui/events/event.cc
index 2874bd5..15252f61 100644
--- a/ui/events/event.cc
+++ b/ui/events/event.cc
@@ -521,7 +521,7 @@
       pointer_details_(GetMousePointerDetailsFromNative(native_event)) {
   latency()->set_source_event_type(ui::SourceEventType::MOUSE);
   latency()->AddLatencyNumberWithTimestamp(
-      INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, time_stamp(), 1);
+      INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, time_stamp());
   latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT);
   if (type() == ET_MOUSE_PRESSED || type() == ET_MOUSE_RELEASED)
     SetClickCount(GetRepeatCount(*this));
@@ -759,7 +759,7 @@
       hovering_(false),
       pointer_details_(GetTouchPointerDetailsFromNative(native_event)) {
   latency()->AddLatencyNumberWithTimestamp(
-      INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, time_stamp(), 1);
+      INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, time_stamp());
   latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT);
 
   if (type() == ET_TOUCH_RELEASED || type() == ET_TOUCH_CANCELLED)
@@ -934,7 +934,7 @@
       code_(CodeFromNative(native_event)),
       is_char_(IsCharFromNative(native_event)) {
   latency()->AddLatencyNumberWithTimestamp(
-      INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, time_stamp(), 1);
+      INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, time_stamp());
   latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT);
 
   if (IsRepeated(*this))
diff --git a/ui/file_manager/file_manager/foreground/elements/files_xf_elements.css b/ui/file_manager/file_manager/foreground/elements/files_xf_elements.css
index e78e099..d24ae42 100644
--- a/ui/file_manager/file_manager/foreground/elements/files_xf_elements.css
+++ b/ui/file_manager/file_manager/foreground/elements/files_xf_elements.css
@@ -13,65 +13,7 @@
     flex-direction: column;
 }
 
-.xf-panel-item {
-    align-items: center;
-    background-color: #FFF;
-    display: flex;
-    flex-direction: row;
-    max-width: 400px;
-}
-
-.xf-button {
-    height: 36px;
-    width: 36px;
-}
-
-.xf-panel-text {
-    font: 13px Roboto;
-    line-height: 20px;
-    max-width: 216px;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-}
-
-.xf-panel-label-text {
-    color: rgb(32, 33, 36);
-}
-
-.xf-panel-secondary-text {
-    color: rgb(95, 99, 104);
-}
-
-.xf-padder-4 {
-    width: 4px;
-}
-
-.xf-padder-16 {
-    width: 16px;
-}
-
-.xf-padder-24 {
-    flex-grow: 16;
-    width: 24px;
-}
 
 .xf-vertical-padder-8 {
     height: 8px;
 }
-
-xf-circular-progress {
-    padding: 16px;
-}
-
-xf-activity-complete {
-    padding: 16px;
-}
-
-.xf-success {
-    color: rgb(52, 168, 83);
-}
-
-.xf-failure {
-    color: rgb(234, 67, 53);
-}
diff --git a/ui/file_manager/file_manager/foreground/elements/xf_display_panel.js b/ui/file_manager/file_manager/foreground/elements/xf_display_panel.js
index d4fcf3f2..c6a352a 100644
--- a/ui/file_manager/file_manager/foreground/elements/xf_display_panel.js
+++ b/ui/file_manager/file_manager/foreground/elements/xf_display_panel.js
@@ -4,6 +4,7 @@
 
 /**
  * A panel to display a collection of PanelItem.
+ * @extends HTMLElement
  */
 class DisplayPanel extends HTMLElement {
   constructor() {
diff --git a/ui/file_manager/file_manager/foreground/elements/xf_panel_item.js b/ui/file_manager/file_manager/foreground/elements/xf_panel_item.js
index dbc70bb..ad8d1307 100644
--- a/ui/file_manager/file_manager/foreground/elements/xf_panel_item.js
+++ b/ui/file_manager/file_manager/foreground/elements/xf_panel_item.js
@@ -4,6 +4,7 @@
 
 /**
  * A panel to display the status or progress of a file operation.
+ * @extends HTMLElement
  */
 class PanelItem extends HTMLElement {
   constructor() {
@@ -45,14 +46,73 @@
    * @return {string}
    */
   static get template_() {
-    return `<link rel='stylesheet'
-              href='foreground/elements/files_xf_elements.css'>
-            <style>
+    return `<style>
+              .xf-panel-item {
+                  align-items: center;
+                  background-color: #FFF;
+                  display: flex;
+                  flex-direction: row;
+                  max-width: 400px;
+              }
+
+              .xf-button {
+                  height: 36px;
+                  width: 36px;
+              }
+
+              .xf-panel-text {
+                  font: 13px Roboto;
+                  line-height: 20px;
+                  max-width: 216px;
+                  overflow: hidden;
+                  text-overflow: ellipsis;
+                  white-space: nowrap;
+              }
+
+              .xf-panel-label-text {
+                  color: rgb(32, 33, 36);
+              }
+
+              .xf-panel-secondary-text {
+                  color: rgb(95, 99, 104);
+              }
+
+              .xf-padder-4 {
+                  width: 4px;
+              }
+
+              .xf-padder-16 {
+                  width: 16px;
+              }
+
+              .xf-padder-24 {
+                  flex-grow: 16;
+                  width: 24px;
+              }
+
+              xf-circular-progress {
+                  padding: 16px;
+              }
+
+              xf-activity-complete {
+                  padding: 16px;
+              }
+
+              // TODO(crbug.com/947388) Use '--goog' prefixed CSS varables.
+              .xf-success {
+                  color: rgb(52, 168, 83);
+              }
+
+              .xf-failure {
+                  color: rgb(234, 67, 53);
+              }
+
               :host([panel-type='0']) .xf-panel-item {
                 height: var(--progress-height);
                 padding-top: var(--progress-padding-top);
                 padding-bottom: var(--progress-padding-bottom);
               }
+
               :not(:host([panel-type='0'])) .xf-panel-item {
                 height: 68px;
               }
diff --git a/ui/file_manager/file_manager/foreground/js/metadata_box_controller.js b/ui/file_manager/file_manager/foreground/js/metadata_box_controller.js
index 3033a5c6..ff51b42 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata_box_controller.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata_box_controller.js
@@ -98,6 +98,7 @@
 /**
  * Update the view of metadata box.
  * @param {!Event} event
+ *
  * @private
  */
 MetadataBoxController.prototype.updateView_ = function(event) {
@@ -117,7 +118,7 @@
   if (event.type === 'date-time-format-changed') {
     // Update the displayed entry modificationTime format only, and return.
     this.metadataModel_.get([entry], ['modificationTime'])
-        .then(this.updateModificationTime_.bind(this, entry, isSameEntry));
+        .then(this.updateModificationTime_.bind(this, entry));
     return;
   }
 
@@ -154,18 +155,13 @@
     this.metadataBox_.metadataRendered('size');
   }
 
-  this.updateModificationTime_(entry, isSameEntry, items);
+  this.updateModificationTime_(entry, items);
 
-  if (item.externalFileUrl || item.alternateUrl) {
-    this.metadataModel_.get([entry], ['contentMimeType']).then(items => {
-      const item = items[0];
-      this.metadataBox_.mediaMimeType = item.contentMimeType || '';
-      this.metadataBox_.metadataRendered('mime');
-    });
-  } else {
-    this.metadataModel_.get([entry], ['mediaMimeType']).then(items => {
-      const item = items[0];
-      this.metadataBox_.mediaMimeType = item.mediaMimeType || '';
+  if (!entry.isDirectory) {
+    const sniffMimeType = (item.externalFileUrl || item.alternateUrl) ?
+        'contentMimeType' : 'mediaMimeType';
+    this.metadataModel_.get([entry], [sniffMimeType]).then(items => {
+      this.metadataBox_.mediaMimeType = items[0][sniffMimeType] || '';
       this.metadataBox_.metadataRendered('mime');
     });
   }
@@ -221,13 +217,12 @@
  * Updates the metadata box modificationTime.
  *
  * @param {!Entry} entry
- * @param {boolean} isSameEntry if the entry is not changed from the last time.
  * @param {!Array<!MetadataItem>} items
  *
  * @private
  */
 MetadataBoxController.prototype.updateModificationTime_ = function(
-    entry, isSameEntry, items) {
+    entry, items) {
   const item = items[0];
 
   if (item.modificationTime) {
diff --git a/ui/file_manager/file_manager/foreground/js/ui/progress_center_panel.js b/ui/file_manager/file_manager/foreground/js/ui/progress_center_panel.js
index 9c7ebf9..00d6f53 100644
--- a/ui/file_manager/file_manager/foreground/js/ui/progress_center_panel.js
+++ b/ui/file_manager/file_manager/foreground/js/ui/progress_center_panel.js
@@ -316,11 +316,44 @@
   }
 
   /**
-   * Updates an item to the progress center panel.
-   * @param {!ProgressCenterItem} item Item including new contents.
+   * Process item updates for feedback panels.
+   * @param {!ProgressCenterItem} item Item being updated.
+   * @param {?ProgressCenterItem} newItem Item updating with new content.
    * @suppress {checkTypes}
    * TODO(crbug.com/947388) Remove the suppress, and fix closure compile.
    */
+  updateFeedbackPanelItem(item, newItem) {
+    let panelItem = this.feedbackHost_.findPanelItemById(item.id);
+    if (newItem) {
+      if (!panelItem) {
+        panelItem = this.feedbackHost_.addPanelItem(item.id);
+        panelItem.panelType = panelItem.panelTypeProgress;
+        panelItem.setAttribute('primary-text', item.message);
+        panelItem.setAttribute('data-progress-id', item.id);
+        if (item.subMessage) {
+          panelItem.setAttribute('secondary-text', item.subMessage);
+        }
+      }
+      panelItem.signalCallback = (signal) => {
+        if (signal === 'cancel' && item.cancelCallback) {
+          item.cancelCallback();
+        }
+      };
+      panelItem.progress = item.progressRateInPercent.toString();
+      // Remove the feedback panel when complete, and create
+      // an activity complete panel.
+      if (item.state == 'completed') {
+        this.feedbackHost_.removePanelItem(panelItem);
+      }
+    } else if (panelItem) {
+      this.feedbackHost_.removePanelItem(panelItem);
+    }
+  }
+
+  /**
+   * Updates an item to the progress center panel.
+   * @param {!ProgressCenterItem} item Item including new contents.
+   */
   updateItem(item) {
     const targetGroup = this.getGroupForItem_(item);
 
@@ -330,31 +363,7 @@
     // Update an open view item.
     const newItem = targetGroup.getItem(item.id);
     if (util.isFeedbackPanelEnabled()) {
-      let panelItem = this.feedbackHost_.findPanelItemById(item.id);
-      if (newItem) {
-        if (!panelItem) {
-          panelItem = this.feedbackHost_.addPanelItem(item.id);
-          panelItem.panelType = panelItem.panelTypeProgress;
-          panelItem.setAttribute('primary-text', item.message);
-          panelItem.setAttribute('data-progress-id', item.id);
-          if (item.subMessage) {
-            panelItem.setAttribute('secondary-text', item.subMessage);
-          }
-        }
-        panelItem.signalCallback = (signal) => {
-          if (signal === 'cancel' && item.cancelCallback) {
-            item.cancelCallback(item.id);
-          }
-        };
-        panelItem.progress = item.progressRateInPercent;
-        // Remove the feedback panel when complete, and create
-        // an activity complete panel.
-        if (item.state == 'completed') {
-          this.feedbackHost_.removePanelItem(panelItem);
-        }
-      } else if (panelItem) {
-        this.feedbackHost_.removePanelItem(panelItem);
-      }
+      this.updateFeedbackPanelItem(item, newItem);
     } else {
       let itemElement = this.getItemElement_(item.id);
       if (newItem) {
diff --git a/ui/file_manager/integration_tests/file_manager/quick_view.js b/ui/file_manager/integration_tests/file_manager/quick_view.js
index 7017a17..30e9cd5 100644
--- a/ui/file_manager/integration_tests/file_manager/quick_view.js
+++ b/ui/file_manager/integration_tests/file_manager/quick_view.js
@@ -104,7 +104,7 @@
       case 'Size':
         filesMetadataBox += '[metadata~="size"]';
         break;
-      case 'Modified Time':
+      case 'Modified time':
       case 'Type':
         filesMetadataBox += '[metadata~="mime"]';
         break;
@@ -801,6 +801,10 @@
     const mimeType = await getQuickViewMetadataBoxField(appId, 'Type');
     chrome.test.assertEq('image/jpeg', mimeType);
 
+    // Check: the correct modified time should be displayed.
+    const time = await getQuickViewMetadataBoxField(appId, 'Modified time');
+    chrome.test.assertEq('Jan 18, 2038, 1:02 AM', time);
+
     // Check: the correct image EXIF metadata should be displayed.
     const size = await getQuickViewMetadataBoxField(appId, 'Dimensions');
     chrome.test.assertEq('378 x 272', size);
diff --git a/ui/gfx/animation/tween.cc b/ui/gfx/animation/tween.cc
index 917fe0e..cd38956 100644
--- a/ui/gfx/animation/tween.cc
+++ b/ui/gfx/animation/tween.cc
@@ -213,9 +213,17 @@
   return to_return;
 }
 
-gfx::SizeF Tween::SizeValueBetween(double value,
-                                   const gfx::SizeF& start,
-                                   const gfx::SizeF& target) {
+gfx::Size Tween::SizeValueBetween(double value,
+                                  const gfx::Size& start,
+                                  const gfx::Size& target) {
+  return gfx::Size(
+      Tween::LinearIntValueBetween(value, start.width(), target.width()),
+      Tween::LinearIntValueBetween(value, start.height(), target.height()));
+}
+
+gfx::SizeF Tween::SizeFValueBetween(double value,
+                                    const gfx::SizeF& start,
+                                    const gfx::SizeF& target) {
   return gfx::SizeF(
       Tween::FloatValueBetween(value, start.width(), target.width()),
       Tween::FloatValueBetween(value, start.height(), target.height()));
diff --git a/ui/gfx/animation/tween.h b/ui/gfx/animation/tween.h
index 5d26786a..01e978a 100644
--- a/ui/gfx/animation/tween.h
+++ b/ui/gfx/animation/tween.h
@@ -82,9 +82,13 @@
                                               const gfx::Transform& start,
                                               const gfx::Transform& target);
 
-  static gfx::SizeF SizeValueBetween(double value,
-                                     const gfx::SizeF& start,
-                                     const gfx::SizeF& target);
+  static gfx::Size SizeValueBetween(double value,
+                                    const gfx::Size& start,
+                                    const gfx::Size& target);
+
+  static gfx::SizeF SizeFValueBetween(double value,
+                                      const gfx::SizeF& start,
+                                      const gfx::SizeF& target);
 
  private:
   Tween();
diff --git a/ui/gfx/animation/tween_unittest.cc b/ui/gfx/animation/tween_unittest.cc
index 4d13c480..44b4c53 100644
--- a/ui/gfx/animation/tween_unittest.cc
+++ b/ui/gfx/animation/tween_unittest.cc
@@ -170,34 +170,63 @@
 }
 
 TEST(TweenTest, SizeValueBetween) {
-  const gfx::SizeF s1(12.0f, 24.0f);
-  const gfx::SizeF s2(36.0f, 48.0f);
+  constexpr gfx::Size kSize1(12, 24);
+  constexpr gfx::Size kSize2(36, 48);
 
-  double before = -0.125;
-  double from = 0.0;
-  double between = 0.5;
-  double to = 1.0;
-  double after = 1.125;
+  constexpr double kBefore = -0.125;
+  constexpr double kFrom = 0.0;
+  constexpr double kBetween = 0.5;
+  constexpr double kTo = 1.0;
+  constexpr double kAfter = 1.125;
 
-  EXPECT_SIZEF_EQ(gfx::SizeF(9.0f, 21.0f),
-                  Tween::SizeValueBetween(before, s1, s2));
-  EXPECT_SIZEF_EQ(s1, Tween::SizeValueBetween(from, s1, s2));
-  EXPECT_SIZEF_EQ(gfx::SizeF(24.0f, 36.0f),
-                  Tween::SizeValueBetween(between, s1, s2));
-  EXPECT_SIZEF_EQ(s2, Tween::SizeValueBetween(to, s1, s2));
-  EXPECT_SIZEF_EQ(gfx::SizeF(39.0f, 51.0f),
-                  Tween::SizeValueBetween(after, s1, s2));
+  EXPECT_EQ(gfx::Size(9, 21), Tween::SizeValueBetween(kBefore, kSize1, kSize2));
+  EXPECT_EQ(kSize1, Tween::SizeValueBetween(kFrom, kSize1, kSize2));
+  EXPECT_EQ(gfx::Size(24, 36),
+            Tween::SizeValueBetween(kBetween, kSize1, kSize2));
+  EXPECT_EQ(kSize2, Tween::SizeValueBetween(kTo, kSize1, kSize2));
+  EXPECT_EQ(gfx::Size(39, 51), Tween::SizeValueBetween(kAfter, kSize1, kSize2));
 }
 
 TEST(TweenTest, SizeValueBetweenClampedExtrapolation) {
-  const gfx::SizeF s1(0.0f, 0.0f);
-  const gfx::SizeF s2(36.0f, 48.0f);
+  constexpr gfx::Size kSize1(0, 0);
+  constexpr gfx::Size kSize2(36, 48);
 
-  double before = -1.0f;
+  constexpr double kBefore = -1.0f;
 
   // We should not extrapolate in this case as it would result in a negative and
   // invalid size.
-  EXPECT_SIZEF_EQ(s1, Tween::SizeValueBetween(before, s1, s2));
+  EXPECT_EQ(kSize1, Tween::SizeValueBetween(kBefore, kSize1, kSize2));
+}
+
+TEST(TweenTest, SizeFValueBetween) {
+  const gfx::SizeF s1(12.0f, 24.0f);
+  const gfx::SizeF s2(36.0f, 48.0f);
+
+  constexpr double kBefore = -0.125;
+  constexpr double kFrom = 0.0;
+  constexpr double kBetween = 0.5;
+  constexpr double kTo = 1.0;
+  constexpr double kAfter = 1.125;
+
+  EXPECT_SIZEF_EQ(gfx::SizeF(9.0f, 21.0f),
+                  Tween::SizeFValueBetween(kBefore, s1, s2));
+  EXPECT_SIZEF_EQ(s1, Tween::SizeFValueBetween(kFrom, s1, s2));
+  EXPECT_SIZEF_EQ(gfx::SizeF(24.0f, 36.0f),
+                  Tween::SizeFValueBetween(kBetween, s1, s2));
+  EXPECT_SIZEF_EQ(s2, Tween::SizeFValueBetween(kTo, s1, s2));
+  EXPECT_SIZEF_EQ(gfx::SizeF(39.0f, 51.0f),
+                  Tween::SizeFValueBetween(kAfter, s1, s2));
+}
+
+TEST(TweenTest, SizeFValueBetweenClampedExtrapolation) {
+  const gfx::SizeF s1(0.0f, 0.0f);
+  const gfx::SizeF s2(36.0f, 48.0f);
+
+  constexpr double kBefore = -1.0f;
+
+  // We should not extrapolate in this case as it would result in a negative and
+  // invalid size.
+  EXPECT_SIZEF_EQ(s1, Tween::SizeFValueBetween(kBefore, s1, s2));
 }
 
 }  // namespace
diff --git a/ui/gfx/buffer_format_util.cc b/ui/gfx/buffer_format_util.cc
index b066528..1a800d81 100644
--- a/ui/gfx/buffer_format_util.cc
+++ b/ui/gfx/buffer_format_util.cc
@@ -25,61 +25,6 @@
                   (static_cast<int>(BufferFormat::LAST) + 1),
               "BufferFormat::LAST must be last value of kBufferFormats");
 
-bool RowSizeForBufferFormatChecked(
-    size_t width, BufferFormat format, size_t plane, size_t* size_in_bytes) {
-  base::CheckedNumeric<size_t> checked_size = width;
-  switch (format) {
-    case BufferFormat::R_8:
-      checked_size += 3;
-      if (!checked_size.IsValid())
-        return false;
-      *size_in_bytes = (checked_size & ~0x3).ValueOrDie();
-      return true;
-    case BufferFormat::R_16:
-    case BufferFormat::RG_88:
-    case BufferFormat::BGR_565:
-    case BufferFormat::RGBA_4444:
-    case BufferFormat::UYVY_422:
-      checked_size *= 2;
-      checked_size += 3;
-      if (!checked_size.IsValid())
-        return false;
-      *size_in_bytes = (checked_size & ~0x3).ValueOrDie();
-      return true;
-    case BufferFormat::BGRX_8888:
-    case BufferFormat::BGRX_1010102:
-    case BufferFormat::RGBX_1010102:
-    case BufferFormat::RGBX_8888:
-    case BufferFormat::RGBA_8888:
-    case BufferFormat::BGRA_8888:
-      checked_size *= 4;
-      if (!checked_size.IsValid())
-        return false;
-      *size_in_bytes = checked_size.ValueOrDie();
-      return true;
-    case BufferFormat::RGBA_F16:
-      checked_size *= 8;
-      if (!checked_size.IsValid())
-        return false;
-      *size_in_bytes = checked_size.ValueOrDie();
-      return true;
-    case BufferFormat::YVU_420:
-      DCHECK_EQ(0u, width % 2);
-      *size_in_bytes = width / SubsamplingFactorForBufferFormat(format, plane);
-      return true;
-    case BufferFormat::YUV_420_BIPLANAR:
-      DCHECK_EQ(width % 2, 0u);
-      *size_in_bytes = width;
-      return true;
-    case BufferFormat::P010:
-      DCHECK_EQ(width % 2, 0u);
-      *size_in_bytes = 2 * width;
-      return true;
-  }
-  NOTREACHED();
-  return false;
-}
-
 }  // namespace
 
 std::vector<BufferFormat> GetBufferFormatsForTesting() {
@@ -152,6 +97,63 @@
   return row_size;
 }
 
+bool RowSizeForBufferFormatChecked(size_t width,
+                                   BufferFormat format,
+                                   size_t plane,
+                                   size_t* size_in_bytes) {
+  base::CheckedNumeric<size_t> checked_size = width;
+  switch (format) {
+    case BufferFormat::R_8:
+      checked_size += 3;
+      if (!checked_size.IsValid())
+        return false;
+      *size_in_bytes = (checked_size & ~0x3).ValueOrDie();
+      return true;
+    case BufferFormat::R_16:
+    case BufferFormat::RG_88:
+    case BufferFormat::BGR_565:
+    case BufferFormat::RGBA_4444:
+    case BufferFormat::UYVY_422:
+      checked_size *= 2;
+      checked_size += 3;
+      if (!checked_size.IsValid())
+        return false;
+      *size_in_bytes = (checked_size & ~0x3).ValueOrDie();
+      return true;
+    case BufferFormat::BGRX_8888:
+    case BufferFormat::BGRX_1010102:
+    case BufferFormat::RGBX_1010102:
+    case BufferFormat::RGBX_8888:
+    case BufferFormat::RGBA_8888:
+    case BufferFormat::BGRA_8888:
+      checked_size *= 4;
+      if (!checked_size.IsValid())
+        return false;
+      *size_in_bytes = checked_size.ValueOrDie();
+      return true;
+    case BufferFormat::RGBA_F16:
+      checked_size *= 8;
+      if (!checked_size.IsValid())
+        return false;
+      *size_in_bytes = checked_size.ValueOrDie();
+      return true;
+    case BufferFormat::YVU_420:
+      DCHECK_EQ(0u, width % 2);
+      *size_in_bytes = width / SubsamplingFactorForBufferFormat(format, plane);
+      return true;
+    case BufferFormat::YUV_420_BIPLANAR:
+      DCHECK_EQ(width % 2, 0u);
+      *size_in_bytes = width;
+      return true;
+    case BufferFormat::P010:
+      DCHECK_EQ(width % 2, 0u);
+      *size_in_bytes = 2 * width;
+      return true;
+  }
+  NOTREACHED();
+  return false;
+}
+
 size_t BufferSizeForBufferFormat(const Size& size, BufferFormat format) {
   size_t buffer_size = 0;
   bool valid = BufferSizeForBufferFormatChecked(size, format, &buffer_size);
diff --git a/ui/gfx/buffer_format_util.h b/ui/gfx/buffer_format_util.h
index 49263881..56f4c768 100644
--- a/ui/gfx/buffer_format_util.h
+++ b/ui/gfx/buffer_format_util.h
@@ -31,6 +31,11 @@
 GFX_EXPORT size_t RowSizeForBufferFormat(size_t width,
                                          BufferFormat format,
                                          size_t plane);
+GFX_EXPORT bool RowSizeForBufferFormatChecked(size_t width,
+                                              BufferFormat format,
+                                              size_t plane,
+                                              size_t* size_in_bytes)
+    WARN_UNUSED_RESULT;
 
 // Returns the number of bytes used to store all the planes of a given |format|.
 GFX_EXPORT size_t BufferSizeForBufferFormat(const Size& size,
diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn
index 78cdbc9..5251812 100644
--- a/ui/gl/BUILD.gn
+++ b/ui/gl/BUILD.gn
@@ -85,6 +85,8 @@
     "gl_enums.h",
     "gl_enums_implementation_autogen.h",
     "gl_export.h",
+    "gl_features.cc",
+    "gl_features.h",
     "gl_fence.cc",
     "gl_fence.h",
     "gl_fence_arb.cc",
diff --git a/ui/gl/android/surface_texture.cc b/ui/gl/android/surface_texture.cc
index eac4260..1ae2103 100644
--- a/ui/gl/android/surface_texture.cc
+++ b/ui/gl/android/surface_texture.cc
@@ -15,12 +15,30 @@
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_jni_headers/SurfaceTexturePlatformWrapper_jni.h"
 
+#ifndef GL_ANGLE_texture_storage_external
+#define GL_ANGLE_texture_storage_external 1
+#define GL_TEXTURE_NATIVE_ID_ANGLE 0x3481
+#endif /* GL_ANGLE_texture_storage_external */
+
 namespace gl {
 
 scoped_refptr<SurfaceTexture> SurfaceTexture::Create(int texture_id) {
+  int native_id = texture_id;
+
+  // ANGLE emulates texture IDs so query the native ID of the texture.
+  if (texture_id != 0 &&
+      gl::g_current_gl_driver->ext.b_GL_ANGLE_texture_external_update) {
+    GLint prev_texture = 0;
+    glGetIntegerv(GL_TEXTURE_BINDING_EXTERNAL_OES, &prev_texture);
+    glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture_id);
+    glGetTexParameteriv(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_NATIVE_ID_ANGLE,
+                        &native_id);
+    glBindTexture(GL_TEXTURE_EXTERNAL_OES, prev_texture);
+  }
+
   JNIEnv* env = base::android::AttachCurrentThread();
   return new SurfaceTexture(
-      Java_SurfaceTexturePlatformWrapper_create(env, texture_id));
+      Java_SurfaceTexturePlatformWrapper_create(env, native_id));
 }
 
 SurfaceTexture::SurfaceTexture(
@@ -58,6 +76,10 @@
   base::debug::ScopedCrashKeyString scoped_crash_key(kCrashKey, "1");
   JNIEnv* env = base::android::AttachCurrentThread();
   Java_SurfaceTexturePlatformWrapper_updateTexImage(env, j_surface_texture_);
+
+  // Notify ANGLE that the External texture binding has changed
+  if (gl::g_current_gl_driver->ext.b_GL_ANGLE_texture_external_update)
+    glInvalidateTextureANGLE(GL_TEXTURE_EXTERNAL_OES);
 }
 
 void SurfaceTexture::GetTransformMatrix(float mtx[16]) {
@@ -76,12 +98,24 @@
 }
 
 void SurfaceTexture::AttachToGLContext() {
-  int texture_id;
-  glGetIntegerv(GL_TEXTURE_BINDING_EXTERNAL_OES, &texture_id);
+  // ANGLE emulates texture IDs so query the native ID of the texture.
+  int texture_id = 0;
+  if (gl::g_current_gl_driver->ext.b_GL_ANGLE_texture_external_update) {
+    glGetTexParameteriv(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_NATIVE_ID_ANGLE,
+                        &texture_id);
+  } else {
+    glGetIntegerv(GL_TEXTURE_BINDING_EXTERNAL_OES, &texture_id);
+  }
   DCHECK(texture_id);
+
   JNIEnv* env = base::android::AttachCurrentThread();
   Java_SurfaceTexturePlatformWrapper_attachToGLContext(env, j_surface_texture_,
                                                        texture_id);
+
+  // Notify ANGLE that the External texture binding has changed
+  if (gl::g_current_gl_driver->ext.b_GL_ANGLE_texture_external_update) {
+    glInvalidateTextureANGLE(GL_TEXTURE_EXTERNAL_OES);
+  }
 }
 
 void SurfaceTexture::DetachFromGLContext() {
diff --git a/ui/gl/egl_api_unittest.cc b/ui/gl/egl_api_unittest.cc
index bbf2ce1e..045b8c9 100644
--- a/ui/gl/egl_api_unittest.cc
+++ b/ui/gl/egl_api_unittest.cc
@@ -4,6 +4,7 @@
 
 #include <memory>
 
+#include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gl/gl_egl_api_implementation.h"
 #include "ui/gl/gl_surface_egl.h"
@@ -26,7 +27,11 @@
     g_driver_egl.fn.eglGetErrorFn = &FakeGetError;
     g_driver_egl.fn.eglGetProcAddressFn = &FakeGetProcAddress;
 
+#if defined(OS_WIN)
+    SetGLImplementation(kGLImplementationEGLANGLE);
+#else
     SetGLImplementation(kGLImplementationEGLGLES2);
+#endif
   }
 
   void TearDown() override {
diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py
index 86e408a..7c442a51 100755
--- a/ui/gl/generate_bindings.py
+++ b/ui/gl/generate_bindings.py
@@ -1266,6 +1266,10 @@
   'arguments':
       'GLenum target, GLsizei numAttachments, const GLenum* attachments, '
       'GLint x, GLint y, GLint width, GLint height', },
+{ 'return_type': 'void',
+  'versions': [{ 'name': 'glInvalidateTextureANGLE',
+                 'extensions': ['GL_ANGLE_texture_external_update'] } ],
+  'arguments': 'GLenum target', },
 { 'return_type': 'GLboolean',
   'names': ['glIsBuffer'],
   'arguments': 'GLuint buffer', },
@@ -1882,6 +1886,12 @@
       'GLsizei height, GLint border, GLenum format, GLenum type, '
       'const void* pixels', },
 { 'return_type': 'void',
+  'versions': [{ 'name': 'glTexImage2DExternalANGLE',
+                 'extensions': ['GL_ANGLE_texture_external_update'] } ],
+  'arguments': 'GLenum target, GLint level, GLint internalformat, '
+               'GLsizei width, GLsizei height, GLint border, GLenum format, '
+               'GLenum type', },
+{ 'return_type': 'void',
   'versions': [{'name': 'glTexImage2DRobustANGLE',
                 'extensions': ['GL_ANGLE_robust_client_memory']}],
   'arguments':
diff --git a/ui/gl/gl_bindings_api_autogen_gl.h b/ui/gl/gl_bindings_api_autogen_gl.h
index 2daabaa..4209b0c7 100644
--- a/ui/gl/gl_bindings_api_autogen_gl.h
+++ b/ui/gl/gl_bindings_api_autogen_gl.h
@@ -874,6 +874,7 @@
                                   GLint y,
                                   GLint width,
                                   GLint height) override;
+void glInvalidateTextureANGLEFn(GLenum target) override;
 GLboolean glIsBufferFn(GLuint buffer) override;
 GLboolean glIsEnabledFn(GLenum cap) override;
 GLboolean glIsFenceAPPLEFn(GLuint fence) override;
@@ -1280,6 +1281,14 @@
                     GLenum format,
                     GLenum type,
                     const void* pixels) override;
+void glTexImage2DExternalANGLEFn(GLenum target,
+                                 GLint level,
+                                 GLint internalformat,
+                                 GLsizei width,
+                                 GLsizei height,
+                                 GLint border,
+                                 GLenum format,
+                                 GLenum type) override;
 void glTexImage2DRobustANGLEFn(GLenum target,
                                GLint level,
                                GLint internalformat,
diff --git a/ui/gl/gl_bindings_autogen_gl.cc b/ui/gl/gl_bindings_autogen_gl.cc
index 5222d8c..1383f590 100644
--- a/ui/gl/gl_bindings_autogen_gl.cc
+++ b/ui/gl/gl_bindings_autogen_gl.cc
@@ -293,6 +293,8 @@
       gfx::HasExtension(extensions, "GL_ANGLE_request_extension");
   ext.b_GL_ANGLE_robust_client_memory =
       gfx::HasExtension(extensions, "GL_ANGLE_robust_client_memory");
+  ext.b_GL_ANGLE_texture_external_update =
+      gfx::HasExtension(extensions, "GL_ANGLE_texture_external_update");
   ext.b_GL_ANGLE_translated_shader_source =
       gfx::HasExtension(extensions, "GL_ANGLE_translated_shader_source");
   ext.b_GL_APPLE_fence = gfx::HasExtension(extensions, "GL_APPLE_fence");
@@ -1784,6 +1786,12 @@
             GetGLProcAddress("glInvalidateSubFramebuffer"));
   }
 
+  if (ext.b_GL_ANGLE_texture_external_update) {
+    fn.glInvalidateTextureANGLEFn =
+        reinterpret_cast<glInvalidateTextureANGLEProc>(
+            GetGLProcAddress("glInvalidateTextureANGLE"));
+  }
+
   if (ext.b_GL_APPLE_fence) {
     fn.glIsFenceAPPLEFn = reinterpret_cast<glIsFenceAPPLEProc>(
         GetGLProcAddress("glIsFenceAPPLE"));
@@ -2512,6 +2520,12 @@
         GetGLProcAddress("glTexBufferRangeEXT"));
   }
 
+  if (ext.b_GL_ANGLE_texture_external_update) {
+    fn.glTexImage2DExternalANGLEFn =
+        reinterpret_cast<glTexImage2DExternalANGLEProc>(
+            GetGLProcAddress("glTexImage2DExternalANGLE"));
+  }
+
   if (ext.b_GL_ANGLE_robust_client_memory) {
     fn.glTexImage2DRobustANGLEFn =
         reinterpret_cast<glTexImage2DRobustANGLEProc>(
@@ -4552,6 +4566,10 @@
                                            x, y, width, height);
 }
 
+void GLApiBase::glInvalidateTextureANGLEFn(GLenum target) {
+  driver_->fn.glInvalidateTextureANGLEFn(target);
+}
+
 GLboolean GLApiBase::glIsBufferFn(GLuint buffer) {
   return driver_->fn.glIsBufferFn(buffer);
 }
@@ -5392,6 +5410,18 @@
                              border, format, type, pixels);
 }
 
+void GLApiBase::glTexImage2DExternalANGLEFn(GLenum target,
+                                            GLint level,
+                                            GLint internalformat,
+                                            GLsizei width,
+                                            GLsizei height,
+                                            GLint border,
+                                            GLenum format,
+                                            GLenum type) {
+  driver_->fn.glTexImage2DExternalANGLEFn(target, level, internalformat, width,
+                                          height, border, format, type);
+}
+
 void GLApiBase::glTexImage2DRobustANGLEFn(GLenum target,
                                           GLint level,
                                           GLint internalformat,
@@ -8029,6 +8059,11 @@
                                         y, width, height);
 }
 
+void TraceGLApi::glInvalidateTextureANGLEFn(GLenum target) {
+  TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glInvalidateTextureANGLE")
+  gl_api_->glInvalidateTextureANGLEFn(target);
+}
+
 GLboolean TraceGLApi::glIsBufferFn(GLuint buffer) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glIsBuffer")
   return gl_api_->glIsBufferFn(buffer);
@@ -9023,6 +9058,19 @@
                           format, type, pixels);
 }
 
+void TraceGLApi::glTexImage2DExternalANGLEFn(GLenum target,
+                                             GLint level,
+                                             GLint internalformat,
+                                             GLsizei width,
+                                             GLsizei height,
+                                             GLint border,
+                                             GLenum format,
+                                             GLenum type) {
+  TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glTexImage2DExternalANGLE")
+  gl_api_->glTexImage2DExternalANGLEFn(target, level, internalformat, width,
+                                       height, border, format, type);
+}
+
 void TraceGLApi::glTexImage2DRobustANGLEFn(GLenum target,
                                            GLint level,
                                            GLint internalformat,
@@ -12406,6 +12454,12 @@
                                         y, width, height);
 }
 
+void DebugGLApi::glInvalidateTextureANGLEFn(GLenum target) {
+  GL_SERVICE_LOG("glInvalidateTextureANGLE"
+                 << "(" << GLEnums::GetStringEnum(target) << ")");
+  gl_api_->glInvalidateTextureANGLEFn(target);
+}
+
 GLboolean DebugGLApi::glIsBufferFn(GLuint buffer) {
   GL_SERVICE_LOG("glIsBuffer"
                  << "(" << buffer << ")");
@@ -13726,6 +13780,23 @@
                           format, type, pixels);
 }
 
+void DebugGLApi::glTexImage2DExternalANGLEFn(GLenum target,
+                                             GLint level,
+                                             GLint internalformat,
+                                             GLsizei width,
+                                             GLsizei height,
+                                             GLint border,
+                                             GLenum format,
+                                             GLenum type) {
+  GL_SERVICE_LOG("glTexImage2DExternalANGLE"
+                 << "(" << GLEnums::GetStringEnum(target) << ", " << level
+                 << ", " << internalformat << ", " << width << ", " << height
+                 << ", " << border << ", " << GLEnums::GetStringEnum(format)
+                 << ", " << GLEnums::GetStringEnum(type) << ")");
+  gl_api_->glTexImage2DExternalANGLEFn(target, level, internalformat, width,
+                                       height, border, format, type);
+}
+
 void DebugGLApi::glTexImage2DRobustANGLEFn(GLenum target,
                                            GLint level,
                                            GLint internalformat,
@@ -16298,6 +16369,10 @@
   NoContextHelper("glInvalidateSubFramebuffer");
 }
 
+void NoContextGLApi::glInvalidateTextureANGLEFn(GLenum target) {
+  NoContextHelper("glInvalidateTextureANGLE");
+}
+
 GLboolean NoContextGLApi::glIsBufferFn(GLuint buffer) {
   NoContextHelper("glIsBuffer");
   return GL_FALSE;
@@ -17141,6 +17216,17 @@
   NoContextHelper("glTexImage2D");
 }
 
+void NoContextGLApi::glTexImage2DExternalANGLEFn(GLenum target,
+                                                 GLint level,
+                                                 GLint internalformat,
+                                                 GLsizei width,
+                                                 GLsizei height,
+                                                 GLint border,
+                                                 GLenum format,
+                                                 GLenum type) {
+  NoContextHelper("glTexImage2DExternalANGLE");
+}
+
 void NoContextGLApi::glTexImage2DRobustANGLEFn(GLenum target,
                                                GLint level,
                                                GLint internalformat,
diff --git a/ui/gl/gl_bindings_autogen_gl.h b/ui/gl/gl_bindings_autogen_gl.h
index a0241f5..a946928 100644
--- a/ui/gl/gl_bindings_autogen_gl.h
+++ b/ui/gl/gl_bindings_autogen_gl.h
@@ -1031,6 +1031,7 @@
     GLint y,
     GLint width,
     GLint height);
+typedef void(GL_BINDING_CALL* glInvalidateTextureANGLEProc)(GLenum target);
 typedef GLboolean(GL_BINDING_CALL* glIsBufferProc)(GLuint buffer);
 typedef GLboolean(GL_BINDING_CALL* glIsEnabledProc)(GLenum cap);
 typedef GLboolean(GL_BINDING_CALL* glIsFenceAPPLEProc)(GLuint fence);
@@ -1497,6 +1498,15 @@
                                                 GLenum format,
                                                 GLenum type,
                                                 const void* pixels);
+typedef void(GL_BINDING_CALL* glTexImage2DExternalANGLEProc)(
+    GLenum target,
+    GLint level,
+    GLint internalformat,
+    GLsizei width,
+    GLsizei height,
+    GLint border,
+    GLenum format,
+    GLenum type);
 typedef void(GL_BINDING_CALL* glTexImage2DRobustANGLEProc)(GLenum target,
                                                            GLint level,
                                                            GLint internalformat,
@@ -1842,6 +1852,7 @@
   bool b_GL_ANGLE_multi_draw;
   bool b_GL_ANGLE_request_extension;
   bool b_GL_ANGLE_robust_client_memory;
+  bool b_GL_ANGLE_texture_external_update;
   bool b_GL_ANGLE_translated_shader_source;
   bool b_GL_APPLE_fence;
   bool b_GL_APPLE_vertex_array_object;
@@ -2196,6 +2207,7 @@
   glInsertEventMarkerEXTProc glInsertEventMarkerEXTFn;
   glInvalidateFramebufferProc glInvalidateFramebufferFn;
   glInvalidateSubFramebufferProc glInvalidateSubFramebufferFn;
+  glInvalidateTextureANGLEProc glInvalidateTextureANGLEFn;
   glIsBufferProc glIsBufferFn;
   glIsEnabledProc glIsEnabledFn;
   glIsFenceAPPLEProc glIsFenceAPPLEFn;
@@ -2328,6 +2340,7 @@
   glTexBufferProc glTexBufferFn;
   glTexBufferRangeProc glTexBufferRangeFn;
   glTexImage2DProc glTexImage2DFn;
+  glTexImage2DExternalANGLEProc glTexImage2DExternalANGLEFn;
   glTexImage2DRobustANGLEProc glTexImage2DRobustANGLEFn;
   glTexImage3DProc glTexImage3DFn;
   glTexImage3DRobustANGLEProc glTexImage3DRobustANGLEFn;
@@ -3310,6 +3323,7 @@
                                             GLint y,
                                             GLint width,
                                             GLint height) = 0;
+  virtual void glInvalidateTextureANGLEFn(GLenum target) = 0;
   virtual GLboolean glIsBufferFn(GLuint buffer) = 0;
   virtual GLboolean glIsEnabledFn(GLenum cap) = 0;
   virtual GLboolean glIsFenceAPPLEFn(GLuint fence) = 0;
@@ -3736,6 +3750,14 @@
                               GLenum format,
                               GLenum type,
                               const void* pixels) = 0;
+  virtual void glTexImage2DExternalANGLEFn(GLenum target,
+                                           GLint level,
+                                           GLint internalformat,
+                                           GLsizei width,
+                                           GLsizei height,
+                                           GLint border,
+                                           GLenum format,
+                                           GLenum type) = 0;
   virtual void glTexImage2DRobustANGLEFn(GLenum target,
                                          GLint level,
                                          GLint internalformat,
@@ -4444,6 +4466,8 @@
   ::gl::g_current_gl_context->glInvalidateFramebufferFn
 #define glInvalidateSubFramebuffer \
   ::gl::g_current_gl_context->glInvalidateSubFramebufferFn
+#define glInvalidateTextureANGLE \
+  ::gl::g_current_gl_context->glInvalidateTextureANGLEFn
 #define glIsBuffer ::gl::g_current_gl_context->glIsBufferFn
 #define glIsEnabled ::gl::g_current_gl_context->glIsEnabledFn
 #define glIsFenceAPPLE ::gl::g_current_gl_context->glIsFenceAPPLEFn
@@ -4615,6 +4639,8 @@
 #define glTexBuffer ::gl::g_current_gl_context->glTexBufferFn
 #define glTexBufferRange ::gl::g_current_gl_context->glTexBufferRangeFn
 #define glTexImage2D ::gl::g_current_gl_context->glTexImage2DFn
+#define glTexImage2DExternalANGLE \
+  ::gl::g_current_gl_context->glTexImage2DExternalANGLEFn
 #define glTexImage2DRobustANGLE \
   ::gl::g_current_gl_context->glTexImage2DRobustANGLEFn
 #define glTexImage3D ::gl::g_current_gl_context->glTexImage3DFn
diff --git a/ui/gl/gl_bindings_autogen_mock.cc b/ui/gl/gl_bindings_autogen_mock.cc
index 3f16ef6..a123fe0 100644
--- a/ui/gl/gl_bindings_autogen_mock.cc
+++ b/ui/gl/gl_bindings_autogen_mock.cc
@@ -2847,6 +2847,12 @@
                                        y, width, height);
 }
 
+void GL_BINDING_CALL
+MockGLInterface::Mock_glInvalidateTextureANGLE(GLenum target) {
+  MakeGlMockFunctionUnique("glInvalidateTextureANGLE");
+  interface_->InvalidateTextureANGLE(target);
+}
+
 GLboolean GL_BINDING_CALL MockGLInterface::Mock_glIsBuffer(GLuint buffer) {
   MakeGlMockFunctionUnique("glIsBuffer");
   return interface_->IsBuffer(buffer);
@@ -4229,6 +4235,20 @@
 }
 
 void GL_BINDING_CALL
+MockGLInterface::Mock_glTexImage2DExternalANGLE(GLenum target,
+                                                GLint level,
+                                                GLint internalformat,
+                                                GLsizei width,
+                                                GLsizei height,
+                                                GLint border,
+                                                GLenum format,
+                                                GLenum type) {
+  MakeGlMockFunctionUnique("glTexImage2DExternalANGLE");
+  interface_->TexImage2DExternalANGLE(target, level, internalformat, width,
+                                      height, border, format, type);
+}
+
+void GL_BINDING_CALL
 MockGLInterface::Mock_glTexImage2DRobustANGLE(GLenum target,
                                               GLint level,
                                               GLint internalformat,
@@ -5793,6 +5813,9 @@
   if (strcmp(name, "glInvalidateSubFramebuffer") == 0)
     return reinterpret_cast<GLFunctionPointerType>(
         Mock_glInvalidateSubFramebuffer);
+  if (strcmp(name, "glInvalidateTextureANGLE") == 0)
+    return reinterpret_cast<GLFunctionPointerType>(
+        Mock_glInvalidateTextureANGLE);
   if (strcmp(name, "glIsBuffer") == 0)
     return reinterpret_cast<GLFunctionPointerType>(Mock_glIsBuffer);
   if (strcmp(name, "glIsEnabled") == 0)
@@ -6179,6 +6202,9 @@
     return reinterpret_cast<GLFunctionPointerType>(Mock_glTexBufferRangeOES);
   if (strcmp(name, "glTexImage2D") == 0)
     return reinterpret_cast<GLFunctionPointerType>(Mock_glTexImage2D);
+  if (strcmp(name, "glTexImage2DExternalANGLE") == 0)
+    return reinterpret_cast<GLFunctionPointerType>(
+        Mock_glTexImage2DExternalANGLE);
   if (strcmp(name, "glTexImage2DRobustANGLE") == 0)
     return reinterpret_cast<GLFunctionPointerType>(
         Mock_glTexImage2DRobustANGLE);
diff --git a/ui/gl/gl_bindings_autogen_mock.h b/ui/gl/gl_bindings_autogen_mock.h
index 1bbf8395..45a0b1bd43 100644
--- a/ui/gl/gl_bindings_autogen_mock.h
+++ b/ui/gl/gl_bindings_autogen_mock.h
@@ -1242,6 +1242,7 @@
                                 GLint y,
                                 GLint width,
                                 GLint height);
+static void GL_BINDING_CALL Mock_glInvalidateTextureANGLE(GLenum target);
 static GLboolean GL_BINDING_CALL Mock_glIsBuffer(GLuint buffer);
 static GLboolean GL_BINDING_CALL Mock_glIsEnabled(GLenum cap);
 static GLboolean GL_BINDING_CALL Mock_glIsFenceAPPLE(GLuint fence);
@@ -1844,6 +1845,14 @@
                                               GLenum format,
                                               GLenum type,
                                               const void* pixels);
+static void GL_BINDING_CALL Mock_glTexImage2DExternalANGLE(GLenum target,
+                                                           GLint level,
+                                                           GLint internalformat,
+                                                           GLsizei width,
+                                                           GLsizei height,
+                                                           GLint border,
+                                                           GLenum format,
+                                                           GLenum type);
 static void GL_BINDING_CALL Mock_glTexImage2DRobustANGLE(GLenum target,
                                                          GLint level,
                                                          GLint internalformat,
diff --git a/ui/gl/gl_context.cc b/ui/gl/gl_context.cc
index a42e2f08..deb062b 100644
--- a/ui/gl/gl_context.cc
+++ b/ui/gl/gl_context.cc
@@ -227,6 +227,7 @@
     case kGLImplementationDesktopGL:
       return false;
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
     case kGLImplementationSwiftShaderGL:
       return true;
     case kGLImplementationAppleGL:
diff --git a/ui/gl/gl_features.cc b/ui/gl/gl_features.cc
new file mode 100644
index 0000000..fb21871
--- /dev/null
+++ b/ui/gl/gl_features.cc
@@ -0,0 +1,16 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/gl/gl_features.h"
+
+namespace features {
+
+// Use the passthrough command decoder by default.  This can be overridden with
+// the --use-cmd-decoder=passthrough or --use-cmd-decoder=validating flags.
+// Feature lives in ui/gl because it affects the GL binding initialization on
+// platforms that would otherwise not default to using EGL bindings.
+const base::Feature kDefaultPassthroughCommandDecoder{
+    "DefaultPassthroughCommandDecoder", base::FEATURE_DISABLED_BY_DEFAULT};
+
+}  // namespace features
\ No newline at end of file
diff --git a/ui/gl/gl_features.h b/ui/gl/gl_features.h
new file mode 100644
index 0000000..3513df1
--- /dev/null
+++ b/ui/gl/gl_features.h
@@ -0,0 +1,20 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_GL_GL_FEATURES_H_
+#define UI_GL_GL_FEATURES_H_
+
+#include "base/feature_list.h"
+#include "build/build_config.h"
+#include "ui/gl/gl_export.h"
+
+namespace features {
+
+// All features in alphabetical order. The features should be documented
+// alongside the definition of their values in the .cc file.
+GL_EXPORT extern const base::Feature kDefaultPassthroughCommandDecoder;
+
+}  // namespace features
+
+#endif  // UI_GL_GL_FEATURES_H_
diff --git a/ui/gl/gl_image_native_pixmap_unittest.cc b/ui/gl/gl_image_native_pixmap_unittest.cc
index 83fe0f3..efaddc4 100644
--- a/ui/gl/gl_image_native_pixmap_unittest.cc
+++ b/ui/gl/gl_image_native_pixmap_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ui/gl/gl_image_native_pixmap.h"
 
+#include "build/build_config.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/test/gl_image_test_template.h"
 
@@ -33,7 +34,11 @@
  public:
   base::Optional<GLImplementation> GetPreferedGLImplementation()
       const override {
+#if defined(OS_WIN)
+    return base::Optional<GLImplementation>(kGLImplementationEGLANGLE);
+#else
     return base::Optional<GLImplementation>(kGLImplementationEGLGLES2);
+#endif
   }
 
   bool SkipTest() const override {
diff --git a/ui/gl/gl_implementation.cc b/ui/gl/gl_implementation.cc
index 68d8a5d6..8ade2d1 100644
--- a/ui/gl/gl_implementation.cc
+++ b/ui/gl/gl_implementation.cc
@@ -37,6 +37,7 @@
     {kGLImplementationAppleName, kGLImplementationAppleGL},
 #endif
     {kGLImplementationEGLName, kGLImplementationEGLGLES2},
+    {kGLImplementationANGLEName, kGLImplementationEGLANGLE},
     {kGLImplementationMockName, kGLImplementationMockGL},
     {kGLImplementationStubName, kGLImplementationStubGL},
     {kGLImplementationDisabledName, kGLImplementationDisabled}};
diff --git a/ui/gl/gl_implementation.h b/ui/gl/gl_implementation.h
index 8a2b295..91036f59 100644
--- a/ui/gl/gl_implementation.h
+++ b/ui/gl/gl_implementation.h
@@ -30,11 +30,12 @@
   kGLImplementationDesktopGLCoreProfile = 2,
   kGLImplementationSwiftShaderGL = 3,
   kGLImplementationAppleGL = 4,
-  kGLImplementationEGLGLES2 = 5,
+  kGLImplementationEGLGLES2 = 5,  // Native EGL/GLES2
   kGLImplementationMockGL = 6,
   kGLImplementationStubGL = 7,
   kGLImplementationDisabled = 8,
-  kMaxValue = kGLImplementationDisabled,
+  kGLImplementationEGLANGLE = 9,  // EGL/GL implemented using ANGLE
+  kMaxValue = kGLImplementationEGLANGLE,
 };
 
 struct GL_EXPORT GLWindowSystemBindingInfo {
diff --git a/ui/gl/gl_mock_autogen_gl.h b/ui/gl/gl_mock_autogen_gl.h
index c786528..59ef4f7b 100644
--- a/ui/gl/gl_mock_autogen_gl.h
+++ b/ui/gl/gl_mock_autogen_gl.h
@@ -866,6 +866,7 @@
                   GLint y,
                   GLint width,
                   GLint height));
+MOCK_METHOD1(InvalidateTextureANGLE, void(GLenum target));
 MOCK_METHOD1(IsBuffer, GLboolean(GLuint buffer));
 MOCK_METHOD1(IsEnabled, GLboolean(GLenum cap));
 MOCK_METHOD1(IsFenceAPPLE, GLboolean(GLuint fence));
@@ -1247,6 +1248,15 @@
                   GLenum format,
                   GLenum type,
                   const void* pixels));
+MOCK_METHOD8(TexImage2DExternalANGLE,
+             void(GLenum target,
+                  GLint level,
+                  GLint internalformat,
+                  GLsizei width,
+                  GLsizei height,
+                  GLint border,
+                  GLenum format,
+                  GLenum type));
 MOCK_METHOD10(TexImage2DRobustANGLE,
               void(GLenum target,
                    GLint level,
diff --git a/ui/gl/gl_stub_autogen_gl.h b/ui/gl/gl_stub_autogen_gl.h
index 175483d..5f464db 100644
--- a/ui/gl/gl_stub_autogen_gl.h
+++ b/ui/gl/gl_stub_autogen_gl.h
@@ -883,6 +883,7 @@
                                   GLint y,
                                   GLint width,
                                   GLint height) override {}
+void glInvalidateTextureANGLEFn(GLenum target) override {}
 GLboolean glIsBufferFn(GLuint buffer) override;
 GLboolean glIsEnabledFn(GLenum cap) override;
 GLboolean glIsFenceAPPLEFn(GLuint fence) override;
@@ -1296,6 +1297,14 @@
                     GLenum format,
                     GLenum type,
                     const void* pixels) override {}
+void glTexImage2DExternalANGLEFn(GLenum target,
+                                 GLint level,
+                                 GLint internalformat,
+                                 GLsizei width,
+                                 GLsizei height,
+                                 GLint border,
+                                 GLenum format,
+                                 GLenum type) override {}
 void glTexImage2DRobustANGLEFn(GLenum target,
                                GLint level,
                                GLint internalformat,
diff --git a/ui/gl/gl_surface_egl_unittest.cc b/ui/gl/gl_surface_egl_unittest.cc
index 58e3d42..8d9af305 100644
--- a/ui/gl/gl_surface_egl_unittest.cc
+++ b/ui/gl/gl_surface_egl_unittest.cc
@@ -30,8 +30,13 @@
 class GLSurfaceEGLTest : public testing::Test {
  protected:
   void SetUp() override {
+#if defined(OS_WIN)
+    GLSurfaceTestSupport::InitializeOneOffImplementation(
+        GLImplementation::kGLImplementationEGLANGLE, true);
+#else
     GLSurfaceTestSupport::InitializeOneOffImplementation(
         GLImplementation::kGLImplementationEGLGLES2, true);
+#endif
   }
 
   void TearDown() override { gl::init::ShutdownGL(false); }
diff --git a/ui/gl/gl_switches.cc b/ui/gl/gl_switches.cc
index d87c5fd..bb154dd 100644
--- a/ui/gl/gl_switches.cc
+++ b/ui/gl/gl_switches.cc
@@ -32,6 +32,10 @@
 const char kANGLEImplementationOpenGLESNULLName[] = "gles-null";
 const char kANGLEImplementationVulkanNULLName[] = "vulkan-null";
 
+// The command decoder names that can be passed to --use-cmd-decoder.
+const char kCmdDecoderValidatingName[] = "validating";
+const char kCmdDecoderPassthroughName[] = "passthrough";
+
 }  // namespace gl
 
 namespace switches {
@@ -66,6 +70,12 @@
 //  gles: GLES renderer, ES2 and ES3.
 const char kUseANGLE[]                      = "use-angle";
 
+// Use the Pass-through command decoder, skipping all validation and state
+// tracking. Switch lives in ui/gl because it affects the GL binding
+// initialization on platforms that would otherwise not default to using
+// EGL bindings.
+const char kUseCmdDecoder[] = "use-cmd-decoder";
+
 // ANGLE features are defined per-backend in third_party/angle/include/platform
 // Enables specified comma separated ANGLE features if found.
 const char kEnableANGLEFeatures[] = "enable-angle-features";
diff --git a/ui/gl/gl_switches.h b/ui/gl/gl_switches.h
index 5f234aa..97e7ff4 100644
--- a/ui/gl/gl_switches.h
+++ b/ui/gl/gl_switches.h
@@ -36,6 +36,9 @@
 GL_EXPORT extern const char kANGLEImplementationOpenGLESNULLName[];
 GL_EXPORT extern const char kANGLEImplementationVulkanNULLName[];
 
+GL_EXPORT extern const char kCmdDecoderValidatingName[];
+GL_EXPORT extern const char kCmdDecoderPassthroughName[];
+
 }  // namespace gl
 
 namespace switches {
@@ -49,6 +52,7 @@
 GL_EXPORT extern const char kGpuNoContextLost[];
 
 GL_EXPORT extern const char kUseANGLE[];
+GL_EXPORT extern const char kUseCmdDecoder[];
 GL_EXPORT extern const char kEnableANGLEFeatures[];
 GL_EXPORT extern const char kDisableANGLEFeatures[];
 GL_EXPORT extern const char kUseGL[];
diff --git a/ui/gl/gl_utils.cc b/ui/gl/gl_utils.cc
index 31eefc4..62589b4 100644
--- a/ui/gl/gl_utils.cc
+++ b/ui/gl/gl_utils.cc
@@ -8,6 +8,8 @@
 
 #include "base/logging.h"
 #include "ui/gl/gl_bindings.h"
+#include "ui/gl/gl_features.h"
+#include "ui/gl/gl_switches.h"
 
 #if defined(OS_ANDROID)
 #include "base/posix/eintr_wrapper.h"
@@ -38,4 +40,21 @@
   return merged;
 }
 #endif
+
+bool UsePassthroughCommandDecoder(const base::CommandLine* command_line) {
+  std::string switch_value;
+  if (command_line->HasSwitch(switches::kUseCmdDecoder)) {
+    switch_value = command_line->GetSwitchValueASCII(switches::kUseCmdDecoder);
+  }
+
+  if (switch_value == kCmdDecoderPassthroughName) {
+    return true;
+  } else if (switch_value == kCmdDecoderValidatingName) {
+    return false;
+  } else {
+    // Unrecognized or missing switch, use the default.
+    return base::FeatureList::IsEnabled(
+        features::kDefaultPassthroughCommandDecoder);
+  }
+}
 }
diff --git a/ui/gl/gl_utils.h b/ui/gl/gl_utils.h
index 4dce955..84303c6 100644
--- a/ui/gl/gl_utils.h
+++ b/ui/gl/gl_utils.h
@@ -7,6 +7,7 @@
 #ifndef UI_GL_GL_UTILS_H_
 #define UI_GL_GL_UTILS_H_
 
+#include "base/command_line.h"
 #include "build/build_config.h"
 #include "ui/gl/gl_export.h"
 
@@ -20,6 +21,10 @@
 #if defined(OS_ANDROID)
 GL_EXPORT base::ScopedFD MergeFDs(base::ScopedFD a, base::ScopedFD b);
 #endif
+
+GL_EXPORT bool UsePassthroughCommandDecoder(
+    const base::CommandLine* command_line);
+
 }  // namespace gl
 
 #endif  // UI_GL_GL_UTILS_H_
diff --git a/ui/gl/init/gl_factory.cc b/ui/gl/init/gl_factory.cc
index 9d71f34..e204ecd 100644
--- a/ui/gl/init/gl_factory.cc
+++ b/ui/gl/init/gl_factory.cc
@@ -13,6 +13,7 @@
 #include "base/trace_event/trace_event.h"
 #include "ui/gl/gl_share_group.h"
 #include "ui/gl/gl_surface.h"
+#include "ui/gl/gl_utils.h"
 #include "ui/gl/gl_version_info.h"
 #include "ui/gl/init/gl_initializer.h"
 
@@ -44,6 +45,16 @@
     GLVersionInfo::DisableES3ForTesting();
   }
 
+  // If the passthrough command decoder is enabled, put ANGLE first if allowed
+  if (gl::UsePassthroughCommandDecoder(cmd)) {
+    auto iter = std::find(allowed_impls.begin(), allowed_impls.end(),
+                          kGLImplementationEGLANGLE);
+    if (iter != allowed_impls.end()) {
+      allowed_impls.erase(iter);
+      allowed_impls.insert(allowed_impls.begin(), kGLImplementationEGLANGLE);
+    }
+  }
+
   if (allowed_impls.empty()) {
     LOG(ERROR) << "List of allowed GL implementations is empty.";
     return false;
@@ -62,8 +73,6 @@
                (requested_implementation_name ==
                 kGLImplementationSwiftShaderForWebGLName)) {
       impl = kGLImplementationSwiftShaderGL;
-    } else if (requested_implementation_name == kGLImplementationANGLEName) {
-      impl = kGLImplementationEGLGLES2;
     } else {
       impl = GetNamedGLImplementation(requested_implementation_name);
       if (!base::Contains(allowed_impls, impl)) {
diff --git a/ui/gl/init/gl_factory_android.cc b/ui/gl/init/gl_factory_android.cc
index 490f8ba8..4e77e6f 100644
--- a/ui/gl/init/gl_factory_android.cc
+++ b/ui/gl/init/gl_factory_android.cc
@@ -67,6 +67,7 @@
 std::vector<GLImplementation> GetAllowedGLImplementations() {
   std::vector<GLImplementation> impls;
   impls.push_back(kGLImplementationEGLGLES2);
+  impls.push_back(kGLImplementationEGLANGLE);
   return impls;
 }
 
@@ -74,6 +75,7 @@
                                   GLWindowSystemBindingInfo* info) {
   switch (GetGLImplementation()) {
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return GetGLWindowSystemBindingInfoEGL(info);
     default:
       return false;
@@ -113,6 +115,7 @@
   CHECK_NE(kGLImplementationNone, GetGLImplementation());
   switch (GetGLImplementation()) {
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       if (window != gfx::kNullAcceleratedWidget) {
         return InitializeGLSurface(new NativeViewGLSurfaceEGL(window, nullptr));
       } else {
@@ -129,14 +132,14 @@
   TRACE_EVENT0("gpu", "gl::init::CreateOffscreenGLSurface");
   CHECK_NE(kGLImplementationNone, GetGLImplementation());
   switch (GetGLImplementation()) {
-    case kGLImplementationEGLGLES2: {
+    case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE: {
       if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() &&
           (size.width() == 0 && size.height() == 0)) {
-        return InitializeGLSurfaceWithFormat(
-            new SurfacelessEGL(size), format);
+        return InitializeGLSurfaceWithFormat(new SurfacelessEGL(size), format);
       } else {
-        return InitializeGLSurfaceWithFormat(
-            new PbufferGLSurfaceEGL(size), format);
+        return InitializeGLSurfaceWithFormat(new PbufferGLSurfaceEGL(size),
+                                             format);
       }
     }
     case kGLImplementationMockGL:
@@ -153,6 +156,7 @@
   DCHECK_NE(kGLImplementationNone, implementation);
   switch (implementation) {
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       SetDisabledExtensionsEGL(disabled_extensions);
       break;
     case kGLImplementationMockGL:
@@ -168,6 +172,7 @@
   DCHECK_NE(kGLImplementationNone, implementation);
   switch (implementation) {
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return InitializeExtensionSettingsOneOffEGL();
     case kGLImplementationMockGL:
     case kGLImplementationStubGL:
diff --git a/ui/gl/init/gl_factory_mac.cc b/ui/gl/init/gl_factory_mac.cc
index 62d29a7..50b1244 100644
--- a/ui/gl/init/gl_factory_mac.cc
+++ b/ui/gl/init/gl_factory_mac.cc
@@ -67,6 +67,7 @@
   impls.push_back(kGLImplementationAppleGL);
 #if BUILDFLAG(USE_EGL_ON_MAC)
   impls.push_back(kGLImplementationEGLGLES2);
+  impls.push_back(kGLImplementationEGLANGLE);
   impls.push_back(kGLImplementationSwiftShaderGL);
 #endif  // BUILDFLAG(USE_EGL_ON_MAC)
   return impls;
@@ -89,6 +90,7 @@
                                  compatible_surface, attribs);
 #if BUILDFLAG(USE_EGL_ON_MAC)
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
     case kGLImplementationSwiftShaderGL:
       return InitializeGLContext(new GLContextEGL(share_group),
                                  compatible_surface, attribs);
@@ -114,6 +116,7 @@
     case kGLImplementationDesktopGLCoreProfile:
     case kGLImplementationAppleGL:
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
     case kGLImplementationSwiftShaderGL: {
       NOTIMPLEMENTED() << "No onscreen support on Mac.";
       return nullptr;
@@ -138,6 +141,7 @@
           new NoOpGLSurface(size), format);
 #if BUILDFLAG(USE_EGL_ON_MAC)
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
     case kGLImplementationSwiftShaderGL:
       if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() &&
           size.width() == 0 && size.height() == 0) {
diff --git a/ui/gl/init/gl_factory_win.cc b/ui/gl/init/gl_factory_win.cc
index 973fc4f..8631402 100644
--- a/ui/gl/init/gl_factory_win.cc
+++ b/ui/gl/init/gl_factory_win.cc
@@ -25,7 +25,7 @@
 
 std::vector<GLImplementation> GetAllowedGLImplementations() {
   std::vector<GLImplementation> impls;
-  impls.push_back(kGLImplementationEGLGLES2);
+  impls.push_back(kGLImplementationEGLANGLE);
   impls.push_back(kGLImplementationDesktopGL);
   impls.push_back(kGLImplementationSwiftShaderGL);
   return impls;
@@ -36,7 +36,7 @@
   switch (GetGLImplementation()) {
     case kGLImplementationDesktopGL:
       return GetGLWindowSystemBindingInfoWGL(info);
-    case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return GetGLWindowSystemBindingInfoEGL(info);
     default:
       return false;
@@ -49,7 +49,7 @@
   TRACE_EVENT0("gpu", "gl::init::CreateGLContext");
   switch (GetGLImplementation()) {
     case kGLImplementationSwiftShaderGL:
-    case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return InitializeGLContext(new GLContextEGL(share_group),
                                  compatible_surface, attribs);
     case kGLImplementationDesktopGL:
@@ -73,7 +73,7 @@
   TRACE_EVENT0("gpu", "gl::init::CreateViewGLSurface");
   switch (GetGLImplementation()) {
     case kGLImplementationSwiftShaderGL:
-    case kGLImplementationEGLGLES2: {
+    case kGLImplementationEGLANGLE: {
       DCHECK_NE(window, gfx::kNullAcceleratedWidget);
       return InitializeGLSurface(base::MakeRefCounted<NativeViewGLSurfaceEGL>(
           window, std::make_unique<VSyncProviderWin>(window)));
@@ -95,7 +95,7 @@
   TRACE_EVENT0("gpu", "gl::init::CreateOffscreenGLSurface");
   switch (GetGLImplementation()) {
     case kGLImplementationSwiftShaderGL:
-    case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() &&
           size.width() == 0 && size.height() == 0) {
         return InitializeGLSurfaceWithFormat(new SurfacelessEGL(size), format);
@@ -122,7 +122,7 @@
     case kGLImplementationDesktopGL:
       SetDisabledExtensionsWGL(disabled_extensions);
       break;
-    case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       SetDisabledExtensionsEGL(disabled_extensions);
       break;
     case kGLImplementationSwiftShaderGL:
@@ -140,7 +140,7 @@
   switch (implementation) {
     case kGLImplementationDesktopGL:
       return InitializeExtensionSettingsOneOffWGL();
-    case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return InitializeExtensionSettingsOneOffEGL();
     case kGLImplementationSwiftShaderGL:
     case kGLImplementationMockGL:
diff --git a/ui/gl/init/gl_factory_x11.cc b/ui/gl/init/gl_factory_x11.cc
index f6efd5d10..576f2d2 100644
--- a/ui/gl/init/gl_factory_x11.cc
+++ b/ui/gl/init/gl_factory_x11.cc
@@ -27,6 +27,7 @@
   std::vector<GLImplementation> impls;
   impls.push_back(kGLImplementationDesktopGL);
   impls.push_back(kGLImplementationEGLGLES2);
+  impls.push_back(kGLImplementationEGLANGLE);
   impls.push_back(kGLImplementationSwiftShaderGL);
   return impls;
 }
@@ -37,6 +38,7 @@
     case kGLImplementationDesktopGL:
       return GetGLWindowSystemBindingInfoGLX(gl_info, info);
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return GetGLWindowSystemBindingInfoEGL(info);
     default:
       return false;
@@ -53,6 +55,7 @@
                                  compatible_surface, attribs);
     case kGLImplementationSwiftShaderGL:
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return InitializeGLContext(new GLContextEGL(share_group),
                                  compatible_surface, attribs);
     case kGLImplementationMockGL:
@@ -76,6 +79,7 @@
       return InitializeGLSurface(new GLSurfaceGLXX11(window));
     case kGLImplementationSwiftShaderGL:
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       DCHECK(window != gfx::kNullAcceleratedWidget);
       return InitializeGLSurface(new NativeViewGLSurfaceEGLX11(window));
     case kGLImplementationMockGL:
@@ -96,6 +100,7 @@
           new UnmappedNativeViewGLSurfaceGLX(size), format);
     case kGLImplementationSwiftShaderGL:
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() &&
           size.width() == 0 && size.height() == 0) {
         return InitializeGLSurfaceWithFormat(new SurfacelessEGL(size), format);
@@ -120,6 +125,7 @@
       SetDisabledExtensionsGLX(disabled_extensions);
       break;
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       SetDisabledExtensionsEGL(disabled_extensions);
       break;
     case kGLImplementationSwiftShaderGL:
@@ -138,6 +144,7 @@
     case kGLImplementationDesktopGL:
       return InitializeExtensionSettingsOneOffGLX();
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return InitializeExtensionSettingsOneOffEGL();
     case kGLImplementationSwiftShaderGL:
     case kGLImplementationMockGL:
diff --git a/ui/gl/init/gl_initializer_android.cc b/ui/gl/init/gl_initializer_android.cc
index 8338906..0e1a952f 100644
--- a/ui/gl/init/gl_initializer_android.cc
+++ b/ui/gl/init/gl_initializer_android.cc
@@ -62,16 +62,12 @@
   return true;
 }
 
-bool InitializeStaticEGLInternal() {
+bool InitializeStaticEGLInternal(GLImplementation implementation) {
   bool initialized = false;
 
 #if BUILDFLAG(USE_STATIC_ANGLE)
-  const base::CommandLine* command_line =
-      base::CommandLine::ForCurrentProcess();
-  // Use ANGLE if it is requested via the --use-gl=angle flag and it is
-  // statically linked
-  if (command_line->GetSwitchValueASCII(switches::kUseGL) ==
-      kGLImplementationANGLEName) {
+  // Use ANGLE if it is requested and it is statically linked
+  if (implementation == kGLImplementationEGLANGLE) {
     initialized = InitializeStaticANGLEEGLInternal();
   }
 #endif  // BUILDFLAG(USE_STATIC_ANGLE)
@@ -84,7 +80,7 @@
     return false;
   }
 
-  SetGLImplementation(kGLImplementationEGLGLES2);
+  SetGLImplementation(implementation);
 
   InitializeStaticGLBindingsGL();
   InitializeStaticGLBindingsEGL();
@@ -97,6 +93,7 @@
 bool InitializeGLOneOffPlatform() {
   switch (GetGLImplementation()) {
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       if (!GLSurfaceEGL::InitializeOneOff(EGL_DEFAULT_DISPLAY)) {
         LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
         return false;
@@ -115,7 +112,8 @@
 
   switch (implementation) {
     case kGLImplementationEGLGLES2:
-      return InitializeStaticEGLInternal();
+    case kGLImplementationEGLANGLE:
+      return InitializeStaticEGLInternal(implementation);
     case kGLImplementationMockGL:
     case kGLImplementationStubGL:
       SetGLImplementation(implementation);
diff --git a/ui/gl/init/gl_initializer_mac.cc b/ui/gl/init/gl_initializer_mac.cc
index 8d690474..ca519e46 100644
--- a/ui/gl/init/gl_initializer_mac.cc
+++ b/ui/gl/init/gl_initializer_mac.cc
@@ -175,6 +175,7 @@
       return true;
 #if BUILDFLAG(USE_EGL_ON_MAC)
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
     case kGLImplementationSwiftShaderGL:
       if (!GLSurfaceEGL::InitializeOneOff(0)) {
         LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
@@ -206,6 +207,7 @@
       return InitializeStaticCGLInternal(implementation);
 #if BUILDFLAG(USE_EGL_ON_MAC)
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
     case kGLImplementationSwiftShaderGL:
       return InitializeStaticEGLInternal(implementation);
 #endif  // BUILDFLAG(USE_EGL_ON_MAC)
diff --git a/ui/gl/init/gl_initializer_win.cc b/ui/gl/init/gl_initializer_win.cc
index 37489a1..b3a41e0 100644
--- a/ui/gl/init/gl_initializer_win.cc
+++ b/ui/gl/init/gl_initializer_win.cc
@@ -105,7 +105,7 @@
   SetGLGetProcAddressProc(get_proc_address);
   AddGLNativeLibrary(egl_library);
   AddGLNativeLibrary(gles_library);
-  SetGLImplementation(kGLImplementationEGLGLES2);
+  SetGLImplementation(kGLImplementationEGLANGLE);
 
   InitializeStaticGLBindingsGL();
   InitializeStaticGLBindingsEGL();
@@ -191,7 +191,7 @@
       }
       break;
     case kGLImplementationSwiftShaderGL:
-    case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       if (!GLSurfaceEGL::InitializeOneOff(GetDC(nullptr))) {
         LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
         return false;
@@ -220,7 +220,7 @@
 
   switch (implementation) {
     case kGLImplementationSwiftShaderGL:
-    case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return InitializeStaticEGLInternal(implementation);
     case kGLImplementationDesktopGL:
       return InitializeStaticWGLInternal();
diff --git a/ui/gl/init/gl_initializer_x11.cc b/ui/gl/init/gl_initializer_x11.cc
index e3c481b..3fc37d1c 100644
--- a/ui/gl/init/gl_initializer_x11.cc
+++ b/ui/gl/init/gl_initializer_x11.cc
@@ -83,8 +83,6 @@
   base::FilePath glesv2_path(kGLESv2LibraryName);
   base::FilePath egl_path(kEGLLibraryName);
 
-  const base::CommandLine* cmd = base::CommandLine::ForCurrentProcess();
-
   if (implementation == kGLImplementationSwiftShaderGL) {
 #if BUILDFLAG(ENABLE_SWIFTSHADER)
     base::FilePath module_path;
@@ -97,8 +95,7 @@
 #else
     return false;
 #endif
-  } else if (cmd->GetSwitchValueASCII(switches::kUseGL) ==
-             kGLImplementationANGLEName) {
+  } else if (implementation == kGLImplementationEGLANGLE) {
     base::FilePath module_path;
     if (!base::PathService::Get(base::DIR_MODULE, &module_path))
       return false;
@@ -130,7 +127,11 @@
   SetGLGetProcAddressProc(get_proc_address);
   AddGLNativeLibrary(egl_library);
   AddGLNativeLibrary(gles_library);
-  SetGLImplementation(kGLImplementationEGLGLES2);
+  if (implementation == kGLImplementationEGLANGLE) {
+    SetGLImplementation(kGLImplementationEGLANGLE);
+  } else {
+    SetGLImplementation(kGLImplementationEGLGLES2);
+  }
 
   InitializeStaticGLBindingsGL();
   InitializeStaticGLBindingsEGL();
@@ -150,6 +151,7 @@
       return true;
     case kGLImplementationSwiftShaderGL:
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       if (!GLSurfaceEGL::InitializeOneOff(gfx::GetXDisplay())) {
         LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
         return false;
@@ -177,6 +179,7 @@
       return InitializeStaticGLXInternal();
     case kGLImplementationSwiftShaderGL:
     case kGLImplementationEGLGLES2:
+    case kGLImplementationEGLANGLE:
       return InitializeStaticEGLInternal(implementation);
     case kGLImplementationMockGL:
     case kGLImplementationStubGL:
diff --git a/ui/gl/vsync_thread_win.cc b/ui/gl/vsync_thread_win.cc
index 6deb285..a9e341573 100644
--- a/ui/gl/vsync_thread_win.cc
+++ b/ui/gl/vsync_thread_win.cc
@@ -54,7 +54,8 @@
   DCHECK(window_);
   DCHECK(callback_);
   base::Thread::Options options;
-  options.priority = base::ThreadPriority::DISPLAY;
+  // Inherit priority from GPU main thread which depends on finch flags.
+  options.priority = base::PlatformThread::GetCurrentThreadPriority();
   vsync_thread_.StartWithOptions(std::move(options));
 }
 
diff --git a/ui/latency/average_lag_tracker_unittest.cc b/ui/latency/average_lag_tracker_unittest.cc
index 82d7e89..dc4d7c7 100644
--- a/ui/latency/average_lag_tracker_unittest.cc
+++ b/ui/latency/average_lag_tracker_unittest.cc
@@ -39,10 +39,9 @@
 
     touch_latency.AddLatencyNumberWithTimestamp(
         ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT,
-        event_time, 1);
+        event_time);
     touch_latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, event_time,
-        1);
+        ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, event_time);
     average_lag_tracker_->AddLatencyInFrame(touch_latency, frame_time,
                                             "ScrollBegin");
   }
@@ -56,11 +55,9 @@
     touch_latency.set_predicted_scroll_update_delta(
         predicted_delta != 0 ? predicted_delta : delta);
     touch_latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, event_time,
-        1);
+        ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, event_time);
     touch_latency.AddLatencyNumberWithTimestamp(
-        ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, event_time,
-        1);
+        ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT, event_time);
     average_lag_tracker_->AddLatencyInFrame(touch_latency, frame_time,
                                             "ScrollUpdate");
   }
diff --git a/ui/latency/latency_info.cc b/ui/latency/latency_info.cc
index 5a1a4d9c..c1ef1d7 100644
--- a/ui/latency/latency_info.cc
+++ b/ui/latency/latency_info.cc
@@ -184,7 +184,7 @@
 
   for (const auto& lc : other.latency_components()) {
     if (lc.first == type) {
-      AddLatencyNumberWithTimestamp(lc.first, lc.second, 1);
+      AddLatencyNumberWithTimestamp(lc.first, lc.second);
     }
   }
 
@@ -208,7 +208,7 @@
 
   for (const auto& lc : other.latency_components()) {
     if (!FindLatency(lc.first, nullptr)) {
-      AddLatencyNumberWithTimestamp(lc.first, lc.second, 1);
+      AddLatencyNumberWithTimestamp(lc.first, lc.second);
     }
   }
 
@@ -221,28 +221,24 @@
 }
 
 void LatencyInfo::AddLatencyNumber(LatencyComponentType component) {
-  AddLatencyNumberWithTimestampImpl(component, base::TimeTicks::Now(), 1,
-                                    nullptr);
+  AddLatencyNumberWithTimestampImpl(component, base::TimeTicks::Now(), nullptr);
 }
 
 void LatencyInfo::AddLatencyNumberWithTraceName(
     LatencyComponentType component,
     const char* trace_name_str) {
-  AddLatencyNumberWithTimestampImpl(component, base::TimeTicks::Now(), 1,
+  AddLatencyNumberWithTimestampImpl(component, base::TimeTicks::Now(),
                                     trace_name_str);
 }
 
-void LatencyInfo::AddLatencyNumberWithTimestamp(
-    LatencyComponentType component,
-    base::TimeTicks time,
-    uint32_t event_count) {
-  AddLatencyNumberWithTimestampImpl(component, time, event_count, nullptr);
+void LatencyInfo::AddLatencyNumberWithTimestamp(LatencyComponentType component,
+                                                base::TimeTicks time) {
+  AddLatencyNumberWithTimestampImpl(component, time, nullptr);
 }
 
 void LatencyInfo::AddLatencyNumberWithTimestampImpl(
     LatencyComponentType component,
     base::TimeTicks time,
-    uint32_t event_count,
     const char* trace_name_str) {
   const unsigned char* latency_info_enabled =
       g_latency_info_enabled.Get().latency_info_enabled;
diff --git a/ui/latency/latency_info.h b/ui/latency/latency_info.h
index 47140fc..333f0590837 100644
--- a/ui/latency/latency_info.h
+++ b/ui/latency/latency_info.h
@@ -162,8 +162,7 @@
   // Modifies the current sequence number and adds a certain number of events
   // for a specific component.
   void AddLatencyNumberWithTimestamp(LatencyComponentType component,
-                                     base::TimeTicks time,
-                                     uint32_t event_count);
+                                     base::TimeTicks time);
 
   // Returns true if a component with |type| is found in the latency component.
   // The first such component (when iterating over latency_components_) is
@@ -210,7 +209,6 @@
  private:
   void AddLatencyNumberWithTimestampImpl(LatencyComponentType component,
                                          base::TimeTicks time,
-                                         uint32_t event_count,
                                          const char* trace_name_str);
 
   // Converts latencyinfo into format that can be dumped into trace buffer.
diff --git a/ui/latency/latency_info_unittest.cc b/ui/latency/latency_info_unittest.cc
index e2269ae..833f6c3 100644
--- a/ui/latency/latency_info_unittest.cc
+++ b/ui/latency/latency_info_unittest.cc
@@ -24,10 +24,10 @@
   info.set_trace_id(1);
   EXPECT_FALSE(info.began());
   info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
-                                     ToTestTimeTicks(100), 1);
+                                     ToTestTimeTicks(100));
   EXPECT_TRUE(info.began());
   info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
-                                     ToTestTimeTicks(1000), 2);
+                                     ToTestTimeTicks(1000));
 
   EXPECT_EQ(info.latency_components().size(), 2u);
   base::TimeTicks timestamp;
@@ -45,13 +45,13 @@
   info1.set_trace_id(1);
   info1.AddLatencyNumberWithTimestamp(
       INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT,
-      ToTestTimeTicks(1234), 1);
+      ToTestTimeTicks(1234));
   info1.set_scroll_update_delta(-3);
 
   info2.set_trace_id(2);
   info2.AddLatencyNumberWithTimestamp(
       INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT_COMPONENT,
-      ToTestTimeTicks(2345), 1);
+      ToTestTimeTicks(2345));
   info2.set_scroll_update_delta(5);
 
   info1.CoalesceScrollUpdateWith(info2);
diff --git a/ui/message_center/BUILD.gn b/ui/message_center/BUILD.gn
index 2fbff616..eb0016c 100644
--- a/ui/message_center/BUILD.gn
+++ b/ui/message_center/BUILD.gn
@@ -176,6 +176,7 @@
       ":test_support",
       "//base",
       "//base/test:test_support",
+      "//mojo/core/embedder",
       "//skia",
       "//testing/gmock",
       "//testing/gtest",
diff --git a/ui/message_center/test/DEPS b/ui/message_center/test/DEPS
index c451d9cf..cc28d54 100644
--- a/ui/message_center/test/DEPS
+++ b/ui/message_center/test/DEPS
@@ -1,3 +1,4 @@
 include_rules = [
+  "+mojo/core/embedder/embedder.h",
   "+ui/gl/test/gl_surface_test_support.h",  # To initialize GL for tests.
 ]
diff --git a/ui/message_center/test/run_all_unittests.cc b/ui/message_center/test/run_all_unittests.cc
index 4588051..6ce2137 100644
--- a/ui/message_center/test/run_all_unittests.cc
+++ b/ui/message_center/test/run_all_unittests.cc
@@ -10,6 +10,7 @@
 #include "base/test/test_discardable_memory_allocator.h"
 #include "base/test/test_suite.h"
 #include "build/build_config.h"
+#include "mojo/core/embedder/embedder.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/base/ui_base_paths.h"
@@ -49,6 +50,8 @@
 }  // namespace
 
 int main(int argc, char** argv) {
+  mojo::core::Init();
+
   MessageCenterTestSuite test_suite(argc, argv);
 
   return base::LaunchUnitTests(argc, argv,
diff --git a/ui/ozone/platform/drm/BUILD.gn b/ui/ozone/platform/drm/BUILD.gn
index c195b2d..6148f32 100644
--- a/ui/ozone/platform/drm/BUILD.gn
+++ b/ui/ozone/platform/drm/BUILD.gn
@@ -182,7 +182,6 @@
     "common/drm_overlay_manager_unittest.cc",
     "common/drm_util_unittest.cc",
     "gpu/drm_overlay_validator_unittest.cc",
-    "gpu/drm_thread_unittest.cc",
     "gpu/drm_window_unittest.cc",
     "gpu/hardware_display_controller_unittest.cc",
     "gpu/hardware_display_plane_manager_unittest.cc",
diff --git a/ui/ozone/platform/drm/gpu/drm_thread.cc b/ui/ozone/platform/drm/gpu/drm_thread.cc
index 38928f3..02f98a6 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread.cc
+++ b/ui/ozone/platform/drm/gpu/drm_thread.cc
@@ -19,6 +19,7 @@
 #include "ui/gfx/presentation_feedback.h"
 #include "ui/ozone/common/linux/drm_util_linux.h"
 #include "ui/ozone/common/linux/gbm_device.h"
+#include "ui/ozone/common/linux/gbm_wrapper.h"
 #include "ui/ozone/platform/drm/common/drm_util.h"
 #include "ui/ozone/platform/drm/gpu/drm_device_generator.h"
 #include "ui/ozone/platform/drm/gpu/drm_device_manager.h"
@@ -83,26 +84,43 @@
   *out_framebuffer = std::move(framebuffer);
 }
 
+class GbmDeviceGenerator : public DrmDeviceGenerator {
+ public:
+  GbmDeviceGenerator() {}
+  ~GbmDeviceGenerator() override {}
+
+  // DrmDeviceGenerator:
+  scoped_refptr<DrmDevice> CreateDevice(const base::FilePath& path,
+                                        base::File file,
+                                        bool is_primary_device) override {
+    auto gbm = CreateGbmDevice(file.GetPlatformFile());
+    if (!gbm) {
+      PLOG(ERROR) << "Unable to initialize GBM for " << path.value();
+      return nullptr;
+    }
+
+    auto drm = base::MakeRefCounted<DrmDevice>(
+        path, std::move(file), is_primary_device, std::move(gbm));
+    if (!drm->Initialize())
+      return nullptr;
+    return drm;
+  }
+
+ private:
+
+  DISALLOW_COPY_AND_ASSIGN(GbmDeviceGenerator);
+};
+
 }  // namespace
 
-DrmThread::TaskInfo::TaskInfo(base::OnceClosure task, base::WaitableEvent* done)
-    : task(std::move(task)), done(done) {}
-
-DrmThread::TaskInfo::TaskInfo(TaskInfo&& other) = default;
-
-DrmThread::TaskInfo::~TaskInfo() = default;
-
 DrmThread::DrmThread() : base::Thread("DrmThread"), weak_ptr_factory_(this) {}
 
 DrmThread::~DrmThread() {
   Stop();
 }
 
-void DrmThread::Start(base::OnceClosure binding_completer,
-                      std::unique_ptr<DrmDeviceGenerator> device_generator) {
+void DrmThread::Start(base::OnceClosure binding_completer) {
   complete_early_binding_requests_ = std::move(binding_completer);
-  device_generator_ = std::move(device_generator);
-
   base::Thread::Options thread_options;
   thread_options.message_loop_type = base::MessageLoop::TYPE_IO;
   thread_options.priority = base::ThreadPriority::DISPLAY;
@@ -111,22 +129,11 @@
     LOG(FATAL) << "Failed to create DRM thread";
 }
 
-void DrmThread::RunTaskAfterWindowReady(gfx::AcceleratedWidget window,
-                                        base::OnceClosure task,
-                                        base::WaitableEvent* done) {
-  if (!device_manager_->GetDrmDevices().empty() &&
-      window <= last_created_window_) {
-    std::move(task).Run();
-    if (done)
-      done->Signal();
-    return;
-  }
-  pending_tasks_[window].emplace_back(std::move(task), done);
-}
-
 void DrmThread::Init() {
-  device_manager_.reset(new DrmDeviceManager(std::move(device_generator_)));
+  device_manager_.reset(
+      new DrmDeviceManager(std::make_unique<GbmDeviceGenerator>()));
   screen_manager_.reset(new ScreenManager());
+
   display_manager_.reset(
       new DrmGpuDisplayManager(screen_manager_.get(), device_manager_.get()));
 
@@ -242,16 +249,10 @@
 }
 
 void DrmThread::CreateWindow(gfx::AcceleratedWidget widget) {
-  DCHECK_GT(widget, last_created_window_);
-  last_created_window_ = widget;
-
   std::unique_ptr<DrmWindow> window(
       new DrmWindow(widget, device_manager_.get(), screen_manager_.get()));
   window->Initialize();
   screen_manager_->AddWindow(widget, std::move(window));
-
-  // There might be tasks that were waiting for |widget| to become available.
-  ProcessPendingTasks();
 }
 
 void DrmThread::DestroyWindow(gfx::AcceleratedWidget widget) {
@@ -329,9 +330,6 @@
 
 void DrmThread::AddGraphicsDevice(const base::FilePath& path, base::File file) {
   device_manager_->AddDrmDevice(path, std::move(file));
-
-  // There might be tasks that were blocked on a DrmDevice becoming available.
-  ProcessPendingTasks();
 }
 
 void DrmThread::RemoveGraphicsDevice(const base::FilePath& path) {
@@ -370,20 +368,4 @@
   drm_bindings_.AddBinding(this, std::move(request));
 }
 
-void DrmThread::ProcessPendingTasks() {
-  DCHECK(!device_manager_->GetDrmDevices().empty());
-
-  auto it = pending_tasks_.begin();
-  for (; it != pending_tasks_.end() && it->first <= last_created_window_;
-       ++it) {
-    for (auto& task_info : it->second) {
-      std::move(task_info.task).Run();
-      if (task_info.done)
-        task_info.done->Signal();
-    }
-  }
-
-  pending_tasks_.erase(pending_tasks_.begin(), it);
-}
-
 }  // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/drm_thread.h b/ui/ozone/platform/drm/gpu/drm_thread.h
index cf9827f..2764633c 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread.h
+++ b/ui/ozone/platform/drm/gpu/drm_thread.h
@@ -19,7 +19,6 @@
 #include "ui/gfx/vsync_provider.h"
 #include "ui/ozone/common/gpu/ozone_gpu_message_params.h"
 #include "ui/ozone/platform/drm/common/display_types.h"
-#include "ui/ozone/platform/drm/gpu/drm_device_generator.h"
 #include "ui/ozone/public/interfaces/device_cursor.mojom.h"
 #include "ui/ozone/public/interfaces/drm_device.mojom.h"
 #include "ui/ozone/public/swap_completion_callback.h"
@@ -62,14 +61,7 @@
   DrmThread();
   ~DrmThread() override;
 
-  void Start(base::OnceClosure binding_completer,
-             std::unique_ptr<DrmDeviceGenerator> device_generator);
-
-  // Runs |task| once a DrmDevice is registered and |window| was created via
-  // CreateWindow(). |done| will be signaled if it's not null.
-  void RunTaskAfterWindowReady(gfx::AcceleratedWidget window,
-                               base::OnceClosure task,
-                               base::WaitableEvent* done);
+  void Start(base::OnceClosure binding_completer);
 
   // Must be called on the DRM thread. All methods for use from the GPU thread.
   // DrmThreadProxy (on GPU)thread) is the client for these methods.
@@ -150,24 +142,11 @@
   void Init() override;
 
  private:
-  struct TaskInfo {
-    base::OnceClosure task;
-    base::WaitableEvent* done;
-
-    TaskInfo(base::OnceClosure task, base::WaitableEvent* done);
-    TaskInfo(TaskInfo&& other);
-    ~TaskInfo();
-  };
-
   void OnPlanesReadyForPageFlip(gfx::AcceleratedWidget widget,
                                 SwapCompletionOnceCallback submission_callback,
                                 PresentationOnceCallback presentation_callback,
                                 std::vector<DrmOverlayPlane> planes);
 
-  // Called when a DrmDevice or DrmWindow is created. Runs tasks that are now
-  // unblocked.
-  void ProcessPendingTasks();
-
   std::unique_ptr<DrmDeviceManager> device_manager_;
   std::unique_ptr<ScreenManager> screen_manager_;
   std::unique_ptr<DrmGpuDisplayManager> display_manager_;
@@ -183,17 +162,6 @@
   // TODO(samans): Figure out why.
   mojo::BindingSet<ozone::mojom::DrmDevice> drm_bindings_;
 
-  // The AcceleratedWidget from the last call to CreateWindow.
-  gfx::AcceleratedWidget last_created_window_ = gfx::kNullAcceleratedWidget;
-
-  // The tasks that are blocked on a DrmDevice and a certain AcceleratedWidget
-  // becoming available.
-  base::flat_map<gfx::AcceleratedWidget, std::vector<TaskInfo>> pending_tasks_;
-
-  // Holds the DrmDeviceGenerator that DrmDeviceManager will use. Will be passed
-  // on to DrmDeviceManager after the thread starts.
-  std::unique_ptr<DrmDeviceGenerator> device_generator_;
-
   base::WeakPtrFactory<DrmThread> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(DrmThread);
diff --git a/ui/ozone/platform/drm/gpu/drm_thread_proxy.cc b/ui/ozone/platform/drm/gpu/drm_thread_proxy.cc
index 789b8907a..8395a45 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread_proxy.cc
+++ b/ui/ozone/platform/drm/gpu/drm_thread_proxy.cc
@@ -8,9 +8,6 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "ui/ozone/common/linux/gbm_wrapper.h"
-#include "ui/ozone/platform/drm/gpu/drm_device.h"
-#include "ui/ozone/platform/drm/gpu/drm_device_generator.h"
 #include "ui/ozone/platform/drm/gpu/drm_thread_message_proxy.h"
 #include "ui/ozone/platform/drm/gpu/drm_window_proxy.h"
 #include "ui/ozone/platform/drm/gpu/gbm_pixmap.h"
@@ -18,36 +15,6 @@
 
 namespace ui {
 
-namespace {
-
-class GbmDeviceGenerator : public DrmDeviceGenerator {
- public:
-  GbmDeviceGenerator() {}
-  ~GbmDeviceGenerator() override {}
-
-  // DrmDeviceGenerator:
-  scoped_refptr<DrmDevice> CreateDevice(const base::FilePath& path,
-                                        base::File file,
-                                        bool is_primary_device) override {
-    auto gbm = CreateGbmDevice(file.GetPlatformFile());
-    if (!gbm) {
-      PLOG(ERROR) << "Unable to initialize GBM for " << path.value();
-      return nullptr;
-    }
-
-    auto drm = base::MakeRefCounted<DrmDevice>(
-        path, std::move(file), is_primary_device, std::move(gbm));
-    if (!drm->Initialize())
-      return nullptr;
-    return drm;
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(GbmDeviceGenerator);
-};
-
-}  // namespace
-
 DrmThreadProxy::DrmThreadProxy() = default;
 
 DrmThreadProxy::~DrmThreadProxy() = default;
@@ -59,8 +26,7 @@
 }
 
 void DrmThreadProxy::StartDrmThread(base::OnceClosure binding_drainer) {
-  drm_thread_.Start(std::move(binding_drainer),
-                    std::make_unique<GbmDeviceGenerator>());
+  drm_thread_.Start(std::move(binding_drainer));
 }
 
 std::unique_ptr<DrmWindowProxy> DrmThreadProxy::CreateDrmWindowProxy(
@@ -77,13 +43,10 @@
                                   scoped_refptr<DrmFramebuffer>* framebuffer) {
   DCHECK(drm_thread_.task_runner())
       << "no task runner! in DrmThreadProxy::CreateBuffer";
-  base::OnceClosure task =
-      base::BindOnce(&DrmThread::CreateBuffer, base::Unretained(&drm_thread_),
-                     widget, size, format, usage, flags, buffer, framebuffer);
   PostSyncTask(
       drm_thread_.task_runner(),
-      base::BindOnce(&DrmThread::RunTaskAfterWindowReady,
-                     base::Unretained(&drm_thread_), widget, std::move(task)));
+      base::BindOnce(&DrmThread::CreateBuffer, base::Unretained(&drm_thread_),
+                     widget, size, format, usage, flags, buffer, framebuffer));
 }
 
 void DrmThreadProxy::CreateBufferFromHandle(
@@ -93,13 +56,10 @@
     gfx::NativePixmapHandle handle,
     std::unique_ptr<GbmBuffer>* buffer,
     scoped_refptr<DrmFramebuffer>* framebuffer) {
-  base::OnceClosure task = base::BindOnce(
-      &DrmThread::CreateBufferFromHandle, base::Unretained(&drm_thread_),
-      widget, size, format, std::move(handle), buffer, framebuffer);
-  PostSyncTask(
-      drm_thread_.task_runner(),
-      base::BindOnce(&DrmThread::RunTaskAfterWindowReady,
-                     base::Unretained(&drm_thread_), widget, std::move(task)));
+  PostSyncTask(drm_thread_.task_runner(),
+               base::BindOnce(&DrmThread::CreateBufferFromHandle,
+                              base::Unretained(&drm_thread_), widget, size,
+                              format, std::move(handle), buffer, framebuffer));
 }
 
 void DrmThreadProxy::SetClearOverlayCacheCallback(
@@ -118,14 +78,12 @@
     const std::vector<OverlaySurfaceCandidate>& candidates,
     OverlayCapabilitiesCallback callback) {
   DCHECK(drm_thread_.task_runner());
-  base::OnceClosure task = base::BindOnce(
-      &DrmThread::CheckOverlayCapabilities, base::Unretained(&drm_thread_),
-      widget, candidates, CreateSafeOnceCallback(std::move(callback)));
 
   drm_thread_.task_runner()->PostTask(
-      FROM_HERE, base::BindOnce(&DrmThread::RunTaskAfterWindowReady,
-                                base::Unretained(&drm_thread_), widget,
-                                std::move(task), nullptr));
+      FROM_HERE,
+      base::BindOnce(&DrmThread::CheckOverlayCapabilities,
+                     base::Unretained(&drm_thread_), widget, candidates,
+                     CreateSafeOnceCallback(std::move(callback))));
 }
 
 void DrmThreadProxy::AddBindingDrmDevice(
diff --git a/ui/ozone/platform/drm/gpu/drm_thread_unittest.cc b/ui/ozone/platform/drm/gpu/drm_thread_unittest.cc
deleted file mode 100644
index bc08d78..0000000
--- a/ui/ozone/platform/drm/gpu/drm_thread_unittest.cc
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/ozone/platform/drm/gpu/drm_thread.h"
-#include "base/bind_helpers.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/test/scoped_task_environment.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/ozone/platform/drm/gpu/drm_device_generator.h"
-#include "ui/ozone/platform/drm/gpu/mock_drm_device.h"
-#include "ui/ozone/platform/drm/gpu/mock_gbm_device.h"
-
-namespace ui {
-
-namespace {
-
-class FakeDrmDeviceGenerator : public DrmDeviceGenerator {
-  // DrmDeviceGenerator:
-  scoped_refptr<DrmDevice> CreateDevice(const base::FilePath& path,
-                                        base::File file,
-                                        bool is_primary_device) override {
-    auto gbm_device = std::make_unique<MockGbmDevice>();
-    return base::MakeRefCounted<MockDrmDevice>(std::move(gbm_device));
-  }
-};
-
-void StubTask() {}
-
-void StubTaskWithDoneFeedback(bool* done) {
-  *done = true;
-}
-
-}  // namespace
-
-class DrmThreadTest : public testing::Test {
- protected:
-  // Overridden from testing::Test
-  void SetUp() override {
-    drm_thread_.Start(base::DoNothing(),
-                      std::make_unique<FakeDrmDeviceGenerator>());
-    drm_thread_.task_runner()->PostTask(
-        FROM_HERE, base::BindOnce(&DrmThread::AddBindingDrmDevice,
-                                  base::Unretained(&drm_thread_),
-                                  mojo::MakeRequest(&drm_device_ptr_)));
-    drm_thread_.FlushForTesting();
-  }
-
-  std::unique_ptr<base::WaitableEvent> PostStubTaskWithWaitableEvent(
-      gfx::AcceleratedWidget window) {
-    base::OnceClosure task = base::BindOnce(StubTask);
-    auto event = std::make_unique<base::WaitableEvent>(
-        base::WaitableEvent::ResetPolicy::AUTOMATIC,
-        base::WaitableEvent::InitialState::NOT_SIGNALED);
-    drm_thread_.task_runner()->PostTask(
-        FROM_HERE, base::BindOnce(&DrmThread::RunTaskAfterWindowReady,
-                                  base::Unretained(&drm_thread_), window,
-                                  std::move(task), event.get()));
-    return event;
-  }
-
-  void PostStubTask(gfx::AcceleratedWidget window, bool* done) {
-    *done = false;
-    base::OnceClosure task = base::BindOnce(StubTaskWithDoneFeedback, done);
-    drm_thread_.task_runner()->PostTask(
-        FROM_HERE, base::BindOnce(&DrmThread::RunTaskAfterWindowReady,
-                                  base::Unretained(&drm_thread_), window,
-                                  std::move(task), nullptr));
-  }
-
-  void AddGraphicsDevice() {
-    base::FilePath file_path("/dev/null");
-    base::File file(file_path, base::File::FLAG_OPEN | base::File::FLAG_WRITE |
-                                   base::File::FLAG_READ);
-    drm_device_ptr_->AddGraphicsDevice(file_path, std::move(file));
-  }
-
-  base::test::ScopedTaskEnvironment env_;
-  DrmThread drm_thread_;
-  ozone::mojom::DrmDevicePtr drm_device_ptr_;
-};
-
-TEST_F(DrmThreadTest, RunTaskAfterWindowReady) {
-  bool called1 = false, called2 = false;
-  gfx::AcceleratedWidget widget1 = 1, widget2 = 2;
-
-  // Post a task not blocked on any window. It should still block on a graphics
-  // device becoming available.
-  PostStubTask(gfx::kNullAcceleratedWidget, &called1);
-  drm_thread_.FlushForTesting();
-  EXPECT_FALSE(called1);
-
-  // Add the graphics device. The task should run.
-  AddGraphicsDevice();
-  drm_thread_.FlushForTesting();
-  ASSERT_TRUE(called1);
-
-  // Now that a graphics device is available, further tasks that don't block on
-  // any window should execute immediately.
-  PostStubTask(gfx::kNullAcceleratedWidget, &called1);
-  drm_thread_.FlushForTesting();
-  ASSERT_TRUE(called1);
-
-  // Post a task blocked on |widget1|. It shouldn't run.
-  PostStubTask(widget1, &called1);
-  drm_thread_.FlushForTesting();
-  ASSERT_FALSE(called1);
-
-  // Post two tasks blocked on |widget2|, one with a WaitableEvent and one
-  // without. They shouldn't run.
-  std::unique_ptr<base::WaitableEvent> event =
-      PostStubTaskWithWaitableEvent(widget2);
-  PostStubTask(widget2, &called2);
-  drm_thread_.FlushForTesting();
-  ASSERT_FALSE(event->IsSignaled());
-  ASSERT_FALSE(called2);
-
-  // Now create |widget1|. The first task should run.
-  drm_device_ptr_->CreateWindow(widget1);
-  drm_thread_.FlushForTesting();
-  ASSERT_TRUE(called1);
-  ASSERT_FALSE(event->IsSignaled());
-  ASSERT_FALSE(called2);
-
-  // Now that |widget1| is created. any further task depending on it should run
-  // immediately.
-  PostStubTask(widget1, &called1);
-  drm_thread_.FlushForTesting();
-  ASSERT_TRUE(called1);
-  ASSERT_FALSE(event->IsSignaled());
-  ASSERT_FALSE(called2);
-
-  // Destroy |widget1| and post a task blocked on it. The task should still run
-  // immediately even though the window is destroyed.
-  drm_device_ptr_->DestroyWindow(widget1);
-  PostStubTask(widget1, &called1);
-  drm_thread_.FlushForTesting();
-  ASSERT_TRUE(called1);
-  ASSERT_FALSE(event->IsSignaled());
-  ASSERT_FALSE(called2);
-
-  // Create |widget2|. The two blocked tasks should run.
-  drm_device_ptr_->CreateWindow(widget2);
-  drm_thread_.FlushForTesting();
-  ASSERT_TRUE(event->IsSignaled());
-  ASSERT_TRUE(called2);
-
-  // Post another task blocked on |widget1| with a WaitableEvent. It should run
-  // immediately.
-  event = PostStubTaskWithWaitableEvent(widget1);
-  drm_thread_.FlushForTesting();
-  ASSERT_TRUE(event->IsSignaled());
-
-  // Post another task blocked on |widget2| with a WaitableEvent. It should run
-  // immediately.
-  event = PostStubTaskWithWaitableEvent(widget2);
-  drm_thread_.FlushForTesting();
-  ASSERT_TRUE(event->IsSignaled());
-
-  // Destroy |widget2| to avoid failures during tear down.
-  drm_device_ptr_->DestroyWindow(widget2);
-  drm_thread_.FlushForTesting();
-}
-
-}  // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/drm_window_proxy.cc b/ui/ozone/platform/drm/gpu/drm_window_proxy.cc
index 517fee2..45ed5b6 100644
--- a/ui/ozone/platform/drm/gpu/drm_window_proxy.cc
+++ b/ui/ozone/platform/drm/gpu/drm_window_proxy.cc
@@ -30,26 +30,21 @@
     std::vector<DrmOverlayPlane> planes,
     SwapCompletionOnceCallback submission_callback,
     PresentationOnceCallback presentation_callback) {
-  base::OnceClosure task = base::BindOnce(
-      &DrmThread::SchedulePageFlip, base::Unretained(drm_thread_), widget_,
-      base::Passed(&planes),
-      CreateSafeOnceCallback(std::move(submission_callback)),
-      CreateSafeOnceCallback(std::move(presentation_callback)));
   drm_thread_->task_runner()->PostTask(
-      FROM_HERE, base::BindOnce(&DrmThread::RunTaskAfterWindowReady,
-                                base::Unretained(drm_thread_), widget_,
-                                std::move(task), nullptr));
+      FROM_HERE,
+      base::BindOnce(&DrmThread::SchedulePageFlip,
+                     base::Unretained(drm_thread_), widget_,
+                     base::Passed(&planes),
+                     CreateSafeOnceCallback(std::move(submission_callback)),
+                     CreateSafeOnceCallback(std::move(presentation_callback))));
 }
 
 bool DrmWindowProxy::SupportsGpuFences() const {
   bool is_atomic = false;
-  base::OnceClosure task =
-      base::BindOnce(&DrmThread::IsDeviceAtomic, base::Unretained(drm_thread_),
-                     widget_, &is_atomic);
   PostSyncTask(
       drm_thread_->task_runner(),
-      base::BindOnce(&DrmThread::RunTaskAfterWindowReady,
-                     base::Unretained(drm_thread_), widget_, std::move(task)));
+      base::BindOnce(&DrmThread::IsDeviceAtomic, base::Unretained(drm_thread_),
+                     widget_, &is_atomic));
   return is_atomic && !base::CommandLine::ForCurrentProcess()->HasSwitch(
                           switches::kDisableExplicitDmaFences);
 }
diff --git a/ui/ozone/platform/drm/gpu/proxy_helpers.cc b/ui/ozone/platform/drm/gpu/proxy_helpers.cc
index c65c5f6..603b3bc 100644
--- a/ui/ozone/platform/drm/gpu/proxy_helpers.cc
+++ b/ui/ozone/platform/drm/gpu/proxy_helpers.cc
@@ -6,15 +6,28 @@
 
 #include <utility>
 
+#include "base/synchronization/waitable_event.h"
+
 namespace ui {
 
+namespace {
+
+void OnRunPostedTaskAndSignal(base::OnceClosure callback,
+                              base::WaitableEvent* wait) {
+  std::move(callback).Run();
+  wait->Signal();
+}
+
+}  // namespace
+
 void PostSyncTask(
     const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
-    base::OnceCallback<void(base::WaitableEvent*)> callback) {
+    base::OnceClosure callback) {
   base::WaitableEvent wait(base::WaitableEvent::ResetPolicy::AUTOMATIC,
                            base::WaitableEvent::InitialState::NOT_SIGNALED);
   bool success = task_runner->PostTask(
-      FROM_HERE, base::BindOnce(std::move(callback), &wait));
+      FROM_HERE,
+      base::BindOnce(OnRunPostedTaskAndSignal, std::move(callback), &wait));
   if (success)
     wait.Wait();
 }
diff --git a/ui/ozone/platform/drm/gpu/proxy_helpers.h b/ui/ozone/platform/drm/gpu/proxy_helpers.h
index d5be9bd..b037713 100644
--- a/ui/ozone/platform/drm/gpu/proxy_helpers.h
+++ b/ui/ozone/platform/drm/gpu/proxy_helpers.h
@@ -10,7 +10,6 @@
 #include "base/bind.h"
 #include "base/location.h"
 #include "base/memory/ref_counted.h"
-#include "base/synchronization/waitable_event.h"
 #include "base/threading/thread_task_runner_handle.h"
 
 namespace ui {
@@ -32,7 +31,7 @@
 // executing.
 void PostSyncTask(
     const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
-    base::OnceCallback<void(base::WaitableEvent*)> callback);
+    base::OnceClosure callback);
 
 // Creates a RepeatingCallback that will run |callback| on the calling thread.
 // Useful when posting a task on a different thread and expecting a callback
diff --git a/ui/ozone/platform/drm/host/drm_window_host.cc b/ui/ozone/platform/drm/host/drm_window_host.cc
index fd52ea4..6ffe44f 100644
--- a/ui/ozone/platform/drm/host/drm_window_host.cc
+++ b/ui/ozone/platform/drm/host/drm_window_host.cc
@@ -118,6 +118,14 @@
   return PlatformWindowState::kUnknown;
 }
 
+void DrmWindowHost::Activate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
+void DrmWindowHost::Deactivate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
 void DrmWindowHost::SetCursor(PlatformCursor cursor) {
   cursor_->SetCursor(widget_, cursor);
 }
diff --git a/ui/ozone/platform/drm/host/drm_window_host.h b/ui/ozone/platform/drm/host/drm_window_host.h
index ca0aa336..62fc547b 100644
--- a/ui/ozone/platform/drm/host/drm_window_host.h
+++ b/ui/ozone/platform/drm/host/drm_window_host.h
@@ -73,6 +73,8 @@
   void Minimize() override;
   void Restore() override;
   PlatformWindowState GetPlatformWindowState() const override;
+  void Activate() override;
+  void Deactivate() override;
   void SetCursor(PlatformCursor cursor) override;
   void MoveCursorTo(const gfx::Point& location) override;
   void ConfineCursorToBounds(const gfx::Rect& bounds) override;
diff --git a/ui/ozone/platform/scenic/scenic_window.cc b/ui/ozone/platform/scenic/scenic_window.cc
index c988485..99fdafa 100644
--- a/ui/ozone/platform/scenic/scenic_window.cc
+++ b/ui/ozone/platform/scenic/scenic_window.cc
@@ -138,6 +138,14 @@
   return PlatformWindowState::kNormal;
 }
 
+void ScenicWindow::Activate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
+void ScenicWindow::Deactivate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
 void ScenicWindow::SetCursor(PlatformCursor cursor) {
   NOTIMPLEMENTED_LOG_ONCE();
 }
diff --git a/ui/ozone/platform/scenic/scenic_window.h b/ui/ozone/platform/scenic/scenic_window.h
index 9b2003e..c2d39c73 100644
--- a/ui/ozone/platform/scenic/scenic_window.h
+++ b/ui/ozone/platform/scenic/scenic_window.h
@@ -58,6 +58,8 @@
   void Minimize() override;
   void Restore() override;
   PlatformWindowState GetPlatformWindowState() const override;
+  void Activate() override;
+  void Deactivate() override;
   void SetCursor(PlatformCursor cursor) override;
   void MoveCursorTo(const gfx::Point& location) override;
   void ConfineCursorToBounds(const gfx::Rect& bounds) override;
diff --git a/ui/ozone/platform/wayland/host/wayland_window.cc b/ui/ozone/platform/wayland/host/wayland_window.cc
index bc0598a1..4c481a0 100644
--- a/ui/ozone/platform/wayland/host/wayland_window.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window.cc
@@ -482,6 +482,14 @@
   return state_;
 }
 
+void WaylandWindow::Activate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
+void WaylandWindow::Deactivate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
 void WaylandWindow::SetCursor(PlatformCursor cursor) {
   scoped_refptr<BitmapCursorOzone> bitmap =
       BitmapCursorFactoryOzone::GetBitmapCursor(cursor);
diff --git a/ui/ozone/platform/wayland/host/wayland_window.h b/ui/ozone/platform/wayland/host/wayland_window.h
index 9fec3b4..419724d 100644
--- a/ui/ozone/platform/wayland/host/wayland_window.h
+++ b/ui/ozone/platform/wayland/host/wayland_window.h
@@ -129,6 +129,8 @@
   void Minimize() override;
   void Restore() override;
   PlatformWindowState GetPlatformWindowState() const override;
+  void Activate() override;
+  void Deactivate() override;
   void SetCursor(PlatformCursor cursor) override;
   void MoveCursorTo(const gfx::Point& location) override;
   void ConfineCursorToBounds(const gfx::Rect& bounds) override;
diff --git a/ui/ozone/platform/x11/x11_window_ozone.cc b/ui/ozone/platform/x11/x11_window_ozone.cc
index 9a80b98..61e56a6 100644
--- a/ui/ozone/platform/x11/x11_window_ozone.cc
+++ b/ui/ozone/platform/x11/x11_window_ozone.cc
@@ -276,6 +276,16 @@
   return state_;
 }
 
+void X11WindowOzone::Activate() {
+  // TODO(crbug.com/973772): Propagate activation changes
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
+void X11WindowOzone::Deactivate() {
+  // TODO(crbug.com/973772): Propagate activation changes
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
 void X11WindowOzone::MoveCursorTo(const gfx::Point& location) {
   XWarpPointer(xdisplay_, x11::None, xroot_window_, 0, 0, 0, 0,
                bounds_.x() + location.x(), bounds_.y() + location.y());
diff --git a/ui/ozone/platform/x11/x11_window_ozone.h b/ui/ozone/platform/x11/x11_window_ozone.h
index c859842..a8af1db 100644
--- a/ui/ozone/platform/x11/x11_window_ozone.h
+++ b/ui/ozone/platform/x11/x11_window_ozone.h
@@ -47,6 +47,8 @@
   void Maximize() override;
   void Minimize() override;
   void Restore() override;
+  void Activate() override;
+  void Deactivate() override;
   PlatformWindowState GetPlatformWindowState() const override;
   void MoveCursorTo(const gfx::Point& location) override;
   void ConfineCursorToBounds(const gfx::Rect& bounds) override;
diff --git a/ui/platform_window/platform_window.h b/ui/platform_window/platform_window.h
index dd10f5ea..f27b99f 100644
--- a/ui/platform_window/platform_window.h
+++ b/ui/platform_window/platform_window.h
@@ -53,6 +53,9 @@
   virtual void Restore() = 0;
   virtual PlatformWindowState GetPlatformWindowState() const = 0;
 
+  virtual void Activate() = 0;
+  virtual void Deactivate() = 0;
+
   virtual void SetCursor(PlatformCursor cursor) = 0;
 
   // Moves the cursor to |location|. Location is in platform window coordinates.
diff --git a/ui/platform_window/platform_window_init_properties.h b/ui/platform_window/platform_window_init_properties.h
index be59793..76113f4 100644
--- a/ui/platform_window/platform_window_init_properties.h
+++ b/ui/platform_window/platform_window_init_properties.h
@@ -56,6 +56,8 @@
 #if defined(OS_FUCHSIA)
   fuchsia::ui::views::ViewToken view_token;
 #endif
+
+  bool activatable = false;
 };
 
 }  // namespace ui
diff --git a/ui/platform_window/stub/stub_window.cc b/ui/platform_window/stub/stub_window.cc
index 80ca7e1..2a937869 100644
--- a/ui/platform_window/stub/stub_window.cc
+++ b/ui/platform_window/stub/stub_window.cc
@@ -64,6 +64,14 @@
   return PlatformWindowState::kUnknown;
 }
 
+void StubWindow::Activate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
+void StubWindow::Deactivate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
 void StubWindow::SetCursor(PlatformCursor cursor) {}
 
 void StubWindow::MoveCursorTo(const gfx::Point& location) {}
diff --git a/ui/platform_window/stub/stub_window.h b/ui/platform_window/stub/stub_window.h
index 88a762cd..752b227 100644
--- a/ui/platform_window/stub/stub_window.h
+++ b/ui/platform_window/stub/stub_window.h
@@ -44,6 +44,8 @@
   void Minimize() override;
   void Restore() override;
   PlatformWindowState GetPlatformWindowState() const override;
+  void Activate() override;
+  void Deactivate() override;
   void SetCursor(PlatformCursor cursor) override;
   void MoveCursorTo(const gfx::Point& location) override;
   void ConfineCursorToBounds(const gfx::Rect& bounds) override;
diff --git a/ui/platform_window/win/win_window.cc b/ui/platform_window/win/win_window.cc
index f0e4f209..ae9aad9 100644
--- a/ui/platform_window/win/win_window.cc
+++ b/ui/platform_window/win/win_window.cc
@@ -125,6 +125,14 @@
   return PlatformWindowState::kUnknown;
 }
 
+void WinWindow::Activate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
+void WinWindow::Deactivate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
 void WinWindow::SetCursor(PlatformCursor cursor) {
   ::SetCursor(cursor);
 }
diff --git a/ui/platform_window/win/win_window.h b/ui/platform_window/win/win_window.h
index 4a117df..26a959c 100644
--- a/ui/platform_window/win/win_window.h
+++ b/ui/platform_window/win/win_window.h
@@ -43,6 +43,8 @@
   void Minimize() override;
   void Restore() override;
   PlatformWindowState GetPlatformWindowState() const override;
+  void Activate() override;
+  void Deactivate() override;
   void SetCursor(PlatformCursor cursor) override;
   void MoveCursorTo(const gfx::Point& location) override;
   void ConfineCursorToBounds(const gfx::Rect& bounds) override;
diff --git a/ui/platform_window/x11/x11_window_base.cc b/ui/platform_window/x11/x11_window_base.cc
index 14deb96..f87681ea 100644
--- a/ui/platform_window/x11/x11_window_base.cc
+++ b/ui/platform_window/x11/x11_window_base.cc
@@ -262,6 +262,14 @@
   return state_;
 }
 
+void X11WindowBase::Activate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
+void X11WindowBase::Deactivate() {
+  NOTIMPLEMENTED_LOG_ONCE();
+}
+
 void X11WindowBase::MoveCursorTo(const gfx::Point& location) {
   XWarpPointer(xdisplay_, x11::None, xroot_window_, 0, 0, 0, 0,
                bounds_.x() + location.x(), bounds_.y() + location.y());
diff --git a/ui/platform_window/x11/x11_window_base.h b/ui/platform_window/x11/x11_window_base.h
index 2292f6a..05b8dd1 100644
--- a/ui/platform_window/x11/x11_window_base.h
+++ b/ui/platform_window/x11/x11_window_base.h
@@ -45,6 +45,8 @@
   void Minimize() override;
   void Restore() override;
   PlatformWindowState GetPlatformWindowState() const override;
+  void Activate() override;
+  void Deactivate() override;
   void MoveCursorTo(const gfx::Point& location) override;
   void ConfineCursorToBounds(const gfx::Rect& bounds) override;
   void SetRestoredBoundsInPixels(const gfx::Rect& bounds) override;
diff --git a/ui/strings/translations/ui_strings_am.xtb b/ui/strings/translations/ui_strings_am.xtb
index 26d0d7f..43c8ef5 100644
--- a/ui/strings/translations/ui_strings_am.xtb
+++ b/ui/strings/translations/ui_strings_am.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">ልኬት ማስተካከል ተጠናቅቋል</translation>
 <translation id="252373100621549798">ያልታወቀ ማሳያ</translation>
+<translation id="2545651323591713692">አሸልብ</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{በ 1ሰ ውስጥ}one{በ #ሰ ውስጥ}other{በ #ሰ ውስጥ}}</translation>
 <translation id="2583543531130364912">የእርስዎን ማያንካ ልኬት ያስተካክሉ</translation>
 <translation id="2666092431469916601">ላይ</translation>
diff --git a/ui/strings/translations/ui_strings_ar.xtb b/ui/strings/translations/ui_strings_ar.xtb
index d0068e8..2902e500 100644
--- a/ui/strings/translations/ui_strings_ar.xtb
+++ b/ui/strings/translations/ui_strings_ar.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">اكتملت المعايرة</translation>
 <translation id="252373100621549798">شاشة عرض غير معروفة</translation>
+<translation id="2545651323591713692">تأجيل</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{خلال ساعة واحدة}zero{خلال # ساعة}two{خلال ساعتين (#)}few{خلال # ساعات}many{خلال # ساعة}other{خلال # ساعة}}</translation>
 <translation id="2583543531130364912">معايرة الشاشة التي تعمل باللمس</translation>
 <translation id="2666092431469916601">أعلى</translation>
diff --git a/ui/strings/translations/ui_strings_bg.xtb b/ui/strings/translations/ui_strings_bg.xtb
index 727f772c..fccf819 100644
--- a/ui/strings/translations/ui_strings_bg.xtb
+++ b/ui/strings/translations/ui_strings_bg.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Калибрирането завърши</translation>
 <translation id="252373100621549798">Неизвестен дисплей</translation>
+<translation id="2545651323591713692">Отлагане</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{след 1 ч}other{след # ч}}</translation>
 <translation id="2583543531130364912">Калибриране на сензорния екран</translation>
 <translation id="2666092431469916601">Най-горе</translation>
diff --git a/ui/strings/translations/ui_strings_bn.xtb b/ui/strings/translations/ui_strings_bn.xtb
index 9d68bad9..62133de 100644
--- a/ui/strings/translations/ui_strings_bn.xtb
+++ b/ui/strings/translations/ui_strings_bn.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">ক্রমাঙ্কন সম্পূর্ণ হয়েছে</translation>
 <translation id="252373100621549798">অজানা প্রদর্শন</translation>
+<translation id="2545651323591713692">স্নুজ করুন</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{১ ঘণ্টার মধ্যে}one{# ঘণ্টার মধ্যে}other{# ঘণ্টার মধ্যে}}</translation>
 <translation id="2583543531130364912">আপনার টাচস্ক্রীন ক্যালিব্রেট করুন</translation>
 <translation id="2666092431469916601">শীর্ষ</translation>
diff --git a/ui/strings/translations/ui_strings_ca.xtb b/ui/strings/translations/ui_strings_ca.xtb
index 1d48495..378990d 100644
--- a/ui/strings/translations/ui_strings_ca.xtb
+++ b/ui/strings/translations/ui_strings_ca.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">S'ha acabat de calibrar</translation>
 <translation id="252373100621549798">Pantalla desconeguda</translation>
+<translation id="2545651323591713692">Posposa</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{d'aquí a 1 h}other{d'aquí a # h}}</translation>
 <translation id="2583543531130364912">Calibra la pantalla tàctil</translation>
 <translation id="2666092431469916601">Superior</translation>
diff --git a/ui/strings/translations/ui_strings_cs.xtb b/ui/strings/translations/ui_strings_cs.xtb
index 60df37d..ffad2a13 100644
--- a/ui/strings/translations/ui_strings_cs.xtb
+++ b/ui/strings/translations/ui_strings_cs.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibrace je dokončena</translation>
 <translation id="252373100621549798">Neznámý displej</translation>
+<translation id="2545651323591713692">Odložit</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{za 1 h}few{za # h}many{za # h}other{za # h}}</translation>
 <translation id="2583543531130364912">Zkalibrujte dotykovou obrazovku</translation>
 <translation id="2666092431469916601">Nahoru</translation>
diff --git a/ui/strings/translations/ui_strings_da.xtb b/ui/strings/translations/ui_strings_da.xtb
index fade393..5c4c0ab08 100644
--- a/ui/strings/translations/ui_strings_da.xtb
+++ b/ui/strings/translations/ui_strings_da.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibreringen er fuldført</translation>
 <translation id="252373100621549798">Ukendt skærm</translation>
+<translation id="2545651323591713692">Udsæt</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{om 1 t.}one{om # t.}other{om # t.}}</translation>
 <translation id="2583543531130364912">Kalibrer din touchskærm</translation>
 <translation id="2666092431469916601">Top</translation>
diff --git a/ui/strings/translations/ui_strings_de.xtb b/ui/strings/translations/ui_strings_de.xtb
index 3cce960..e2b9dc9 100644
--- a/ui/strings/translations/ui_strings_de.xtb
+++ b/ui/strings/translations/ui_strings_de.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Die Kalibrierung ist abgeschlossen</translation>
 <translation id="252373100621549798">Display unbekannt</translation>
+<translation id="2545651323591713692">Erneut erinnern</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{in 1 h}other{in # h}}</translation>
 <translation id="2583543531130364912">Touchscreen kalibrieren</translation>
 <translation id="2666092431469916601">Oben</translation>
diff --git a/ui/strings/translations/ui_strings_el.xtb b/ui/strings/translations/ui_strings_el.xtb
index ef047814..1e8c764f 100644
--- a/ui/strings/translations/ui_strings_el.xtb
+++ b/ui/strings/translations/ui_strings_el.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Η βαθμονόμηση ολοκληρώθηκε</translation>
 <translation id="252373100621549798">Άγνωστη οθόνη</translation>
+<translation id="2545651323591713692">Αναβολή</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{σε 1 ω.}other{σε # ω.}}</translation>
 <translation id="2583543531130364912">Βαθμονόμηση οθόνης αφής</translation>
 <translation id="2666092431469916601">Κορυφή</translation>
diff --git a/ui/strings/translations/ui_strings_en-GB.xtb b/ui/strings/translations/ui_strings_en-GB.xtb
index 859b702..1efbeb1 100644
--- a/ui/strings/translations/ui_strings_en-GB.xtb
+++ b/ui/strings/translations/ui_strings_en-GB.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Calibration is completed</translation>
 <translation id="252373100621549798">Unknown Display</translation>
+<translation id="2545651323591713692">Snooze</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{in 1 h}other{in # h}}</translation>
 <translation id="2583543531130364912">Calibrate your touchscreen</translation>
 <translation id="2666092431469916601">Top</translation>
diff --git a/ui/strings/translations/ui_strings_es-419.xtb b/ui/strings/translations/ui_strings_es-419.xtb
index a2b3509..903c4e6 100644
--- a/ui/strings/translations/ui_strings_es-419.xtb
+++ b/ui/strings/translations/ui_strings_es-419.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Se completó la calibración</translation>
 <translation id="252373100621549798">Pantalla desconocida</translation>
+<translation id="2545651323591713692">Posponer</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{en 1 h}other{en # h}}</translation>
 <translation id="2583543531130364912">Calibrar la pantalla táctil</translation>
 <translation id="2666092431469916601">Superior</translation>
diff --git a/ui/strings/translations/ui_strings_es.xtb b/ui/strings/translations/ui_strings_es.xtb
index 8f29dc9..6b451080 100644
--- a/ui/strings/translations/ui_strings_es.xtb
+++ b/ui/strings/translations/ui_strings_es.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Se ha completado la calibración</translation>
 <translation id="252373100621549798">Pantalla desconocida</translation>
+<translation id="2545651323591713692">Posponer</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{en 1 h.}other{en # h.}}</translation>
 <translation id="2583543531130364912">Calibra la pantalla táctil</translation>
 <translation id="2666092431469916601">Superior</translation>
diff --git a/ui/strings/translations/ui_strings_et.xtb b/ui/strings/translations/ui_strings_et.xtb
index e1405a46..ba38779 100644
--- a/ui/strings/translations/ui_strings_et.xtb
+++ b/ui/strings/translations/ui_strings_et.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibreerimine on lõpetatud</translation>
 <translation id="252373100621549798">Tundmatu ekraan</translation>
+<translation id="2545651323591713692">Edasilükkamine</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1 h pärast}other{# h pärast}}</translation>
 <translation id="2583543531130364912">Kalibreerige puuteekraan</translation>
 <translation id="2666092431469916601">Üles</translation>
diff --git a/ui/strings/translations/ui_strings_fa.xtb b/ui/strings/translations/ui_strings_fa.xtb
index 1708d892..223d2fe8 100644
--- a/ui/strings/translations/ui_strings_fa.xtb
+++ b/ui/strings/translations/ui_strings_fa.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">کالیبراسیون تمام شد</translation>
 <translation id="252373100621549798">نمایش ناشناس</translation>
+<translation id="2545651323591713692">تعویق</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{تا ۱ ساعت دیگر}one{تا # ساعت دیگر}other{تا # ساعت دیگر}}</translation>
 <translation id="2583543531130364912">کالیبراسیون صفحه لمسی</translation>
 <translation id="2666092431469916601">بالا</translation>
diff --git a/ui/strings/translations/ui_strings_fi.xtb b/ui/strings/translations/ui_strings_fi.xtb
index 73645ae9..bfef55e 100644
--- a/ui/strings/translations/ui_strings_fi.xtb
+++ b/ui/strings/translations/ui_strings_fi.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibrointi on valmis.</translation>
 <translation id="252373100621549798">Tuntematon näyttö</translation>
+<translation id="2545651323591713692">Torkuta</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1 h:n päästä}other{# h:n päästä}}</translation>
 <translation id="2583543531130364912">Kalibroi kosketusnäyttö</translation>
 <translation id="2666092431469916601">Yleisin</translation>
diff --git a/ui/strings/translations/ui_strings_fil.xtb b/ui/strings/translations/ui_strings_fil.xtb
index bf0bb21..f7684ae 100644
--- a/ui/strings/translations/ui_strings_fil.xtb
+++ b/ui/strings/translations/ui_strings_fil.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Nakumpleto na ang pag-calibrate</translation>
 <translation id="252373100621549798">Hindi Kilalang Display</translation>
+<translation id="2545651323591713692">I-snooze</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{sa loob ng 1 oras}one{sa loob ng # oras}other{sa loob ng # na oras}}</translation>
 <translation id="2583543531130364912">I-calibrate ang iyong touchscreen</translation>
 <translation id="2666092431469916601">Tuktok</translation>
diff --git a/ui/strings/translations/ui_strings_fr.xtb b/ui/strings/translations/ui_strings_fr.xtb
index a0924e7c..5641bca 100644
--- a/ui/strings/translations/ui_strings_fr.xtb
+++ b/ui/strings/translations/ui_strings_fr.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Calibrage terminé</translation>
 <translation id="252373100621549798">Écran inconnu</translation>
+<translation id="2545651323591713692">Répéter</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{dans 1 h}one{dans # h}other{dans # h}}</translation>
 <translation id="2583543531130364912">Calibrer votre écran tactile</translation>
 <translation id="2666092431469916601">En haut</translation>
diff --git a/ui/strings/translations/ui_strings_gu.xtb b/ui/strings/translations/ui_strings_gu.xtb
index be8181f..1c4f09a10 100644
--- a/ui/strings/translations/ui_strings_gu.xtb
+++ b/ui/strings/translations/ui_strings_gu.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">કૅલિબ્રેશન પૂર્ણ થયું</translation>
 <translation id="252373100621549798">અજાણ્યું ડિસ્પ્લે</translation>
+<translation id="2545651323591713692">સ્નૂઝ કરો</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1ક. માં}one{#ક. માં}other{#ક. માં}}</translation>
 <translation id="2583543531130364912">તમારી ટચસ્ક્રીનને કેલિબ્રેટ કરો</translation>
 <translation id="2666092431469916601">ઉપર</translation>
diff --git a/ui/strings/translations/ui_strings_hi.xtb b/ui/strings/translations/ui_strings_hi.xtb
index 7141652..da79c71 100644
--- a/ui/strings/translations/ui_strings_hi.xtb
+++ b/ui/strings/translations/ui_strings_hi.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">कैलिब्रेशन पूरा हो गया</translation>
 <translation id="252373100621549798">अनजान डिस्प्ले</translation>
+<translation id="2545651323591713692">स्नूज़ करें</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1 घंटे में}one{#घंटे में}other{#घंटे में}}</translation>
 <translation id="2583543531130364912">अपनी टचस्क्रीन कैलिब्रेट करें</translation>
 <translation id="2666092431469916601">शीर्ष</translation>
diff --git a/ui/strings/translations/ui_strings_hr.xtb b/ui/strings/translations/ui_strings_hr.xtb
index 467a713..a04e1c14 100644
--- a/ui/strings/translations/ui_strings_hr.xtb
+++ b/ui/strings/translations/ui_strings_hr.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibracija je gotova</translation>
 <translation id="252373100621549798">Nepoznati zaslon</translation>
+<translation id="2545651323591713692">Odgodi alarm</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{za 1 h}one{za # h}few{za # h}other{za # h}}</translation>
 <translation id="2583543531130364912">Kalibrirajte dodirni zaslon</translation>
 <translation id="2666092431469916601">Gornji</translation>
diff --git a/ui/strings/translations/ui_strings_hu.xtb b/ui/strings/translations/ui_strings_hu.xtb
index b9e12a5..60d1297 100644
--- a/ui/strings/translations/ui_strings_hu.xtb
+++ b/ui/strings/translations/ui_strings_hu.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">A kalibrálás befejeződött</translation>
 <translation id="252373100621549798">Ismeretlen kijelző</translation>
+<translation id="2545651323591713692">Halasztás</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1 óra múlva}other{# óra múlva}}</translation>
 <translation id="2583543531130364912">Az érintőképernyő kalibrálása</translation>
 <translation id="2666092431469916601">Felülre</translation>
diff --git a/ui/strings/translations/ui_strings_id.xtb b/ui/strings/translations/ui_strings_id.xtb
index dc1bacd..2a823cc1 100644
--- a/ui/strings/translations/ui_strings_id.xtb
+++ b/ui/strings/translations/ui_strings_id.xtb
@@ -26,7 +26,7 @@
 <translation id="1801827354178857021">Periode</translation>
 <translation id="1803208670097017349">{MONTHS,plural, =1{1 bulan}other{# bulan}}</translation>
 <translation id="1809410197924942083"><ph name="QUANTITY" /> MB/dtk</translation>
-<translation id="1812519734428420144">Skor bintang <ph name="RATING_SCORE" /></translation>
+<translation id="1812519734428420144">Rating bintang <ph name="RATING_SCORE" /></translation>
 <translation id="1830179671306812954">{HOURS,plural, =1{1 jam dan }other{# jam dan }}</translation>
 <translation id="1842960171412779397">pilih</translation>
 <translation id="1859234291848436338">Arah Penulisan</translation>
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibrasi selesai</translation>
 <translation id="252373100621549798">Tampilan yang Tidak Diketahui</translation>
+<translation id="2545651323591713692">Tunda</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{dalam 1 jam}other{dalam # jam}}</translation>
 <translation id="2583543531130364912">Kalibrasi layar sentuh</translation>
 <translation id="2666092431469916601">Atas</translation>
diff --git a/ui/strings/translations/ui_strings_it.xtb b/ui/strings/translations/ui_strings_it.xtb
index 8e11a86..ff836cc 100644
--- a/ui/strings/translations/ui_strings_it.xtb
+++ b/ui/strings/translations/ui_strings_it.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Calibrazione completata</translation>
 <translation id="252373100621549798">Display sconosciuto</translation>
+<translation id="2545651323591713692">Posticipa</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{tra 1 h}other{tra # h}}</translation>
 <translation id="2583543531130364912">Calibra il touchscreen</translation>
 <translation id="2666092431469916601">In alto</translation>
diff --git a/ui/strings/translations/ui_strings_iw.xtb b/ui/strings/translations/ui_strings_iw.xtb
index ebfd277..c3ebc99 100644
--- a/ui/strings/translations/ui_strings_iw.xtb
+++ b/ui/strings/translations/ui_strings_iw.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">הכיול הושלם</translation>
 <translation id="252373100621549798">תצוגה לא ידועה</translation>
+<translation id="2545651323591713692">הפעלת נודניק</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{עוד שעה}two{עוד 2 שעות}many{עוד # שעות}other{עוד # שעות}}</translation>
 <translation id="2583543531130364912">כיול מסך המגע</translation>
 <translation id="2666092431469916601">למעלה</translation>
diff --git a/ui/strings/translations/ui_strings_ja.xtb b/ui/strings/translations/ui_strings_ja.xtb
index 850847d..284b102 100644
--- a/ui/strings/translations/ui_strings_ja.xtb
+++ b/ui/strings/translations/ui_strings_ja.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">キャリブレーションが完了しました</translation>
 <translation id="252373100621549798">不明なディスプレイ</translation>
+<translation id="2545651323591713692">スヌーズ</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1時間}other{#時間}}</translation>
 <translation id="2583543531130364912">タッチスクリーンのキャリブレーション</translation>
 <translation id="2666092431469916601">一番上</translation>
diff --git a/ui/strings/translations/ui_strings_kn.xtb b/ui/strings/translations/ui_strings_kn.xtb
index cad38e56..b13a778 100644
--- a/ui/strings/translations/ui_strings_kn.xtb
+++ b/ui/strings/translations/ui_strings_kn.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">ಮಾಪನಾಂಕವು ಪೂರ್ಣಗೊಂಡಿದೆ</translation>
 <translation id="252373100621549798">ಅಪರಿಚಿತ ಪ್ರದರ್ಶನ</translation>
+<translation id="2545651323591713692">ಸ್ನೂಜ್ ಮಾಡಿ</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1ಗಂ. ಯಲ್ಲಿ}one{#ಗಂ. ಗಳಲ್ಲಿ}other{#ಗಂ. ಗಳಲ್ಲಿ}}</translation>
 <translation id="2583543531130364912">ನಿಮ್ಮ ಟಚ್‌ಸ್ಕ್ರೀನ್ ಕ್ಯಾಲಿಬ್ರೇಟ್ ಮಾಡಿ</translation>
 <translation id="2666092431469916601">ಮೇಲೆ</translation>
diff --git a/ui/strings/translations/ui_strings_ko.xtb b/ui/strings/translations/ui_strings_ko.xtb
index 2a57ef51..36e9cf0 100644
--- a/ui/strings/translations/ui_strings_ko.xtb
+++ b/ui/strings/translations/ui_strings_ko.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">보정이 완료되었습니다.</translation>
 <translation id="252373100621549798">알 수 없는 디스플레이</translation>
+<translation id="2545651323591713692">알림 일시 중지</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1시간 후}other{#시간 후}}</translation>
 <translation id="2583543531130364912">터치스크린 보정</translation>
 <translation id="2666092431469916601">맨 위</translation>
diff --git a/ui/strings/translations/ui_strings_lt.xtb b/ui/strings/translations/ui_strings_lt.xtb
index a41f183..c1e9b79 100644
--- a/ui/strings/translations/ui_strings_lt.xtb
+++ b/ui/strings/translations/ui_strings_lt.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibravimas baigtas</translation>
 <translation id="252373100621549798">Nežinoma pateiktis</translation>
+<translation id="2545651323591713692">Atidėti</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{po 1 val.}one{po # val.}few{po # val.}many{po # val.}other{po # val.}}</translation>
 <translation id="2583543531130364912">Jutiklinio ekrano kalibravimas</translation>
 <translation id="2666092431469916601">Į viršų</translation>
diff --git a/ui/strings/translations/ui_strings_lv.xtb b/ui/strings/translations/ui_strings_lv.xtb
index 75ad5cd..9f1a654 100644
--- a/ui/strings/translations/ui_strings_lv.xtb
+++ b/ui/strings/translations/ui_strings_lv.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibrēšana ir pabeigta.</translation>
 <translation id="252373100621549798">Nezināms displejs</translation>
+<translation id="2545651323591713692">Atlikt</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{pēc 1 h}zero{pēc # h}one{pēc # h}other{pēc # h}}</translation>
 <translation id="2583543531130364912">Skārienekrāna kalibrēšana</translation>
 <translation id="2666092431469916601">Augša</translation>
diff --git a/ui/strings/translations/ui_strings_ml.xtb b/ui/strings/translations/ui_strings_ml.xtb
index 3ece78e..56cdbaa 100644
--- a/ui/strings/translations/ui_strings_ml.xtb
+++ b/ui/strings/translations/ui_strings_ml.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">കാലിബറേഷൻ പൂർത്തിയായി</translation>
 <translation id="252373100621549798">അജ്ഞാത പ്രദർശനം</translation>
+<translation id="2545651323591713692">സ്‌നൂസ് ചെയ്യുക</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{ഒരു മണിക്കൂറിനുള്ളിൽ}other{# മണിക്കൂറിനുള്ളിൽ}}</translation>
 <translation id="2583543531130364912">നിങ്ങളുടെ ടച്ച്സ്‌ക്രീൻ കാലിബറേറ്റ് ചെയ്യുക</translation>
 <translation id="2666092431469916601">മുകളിലേക്ക്</translation>
diff --git a/ui/strings/translations/ui_strings_mr.xtb b/ui/strings/translations/ui_strings_mr.xtb
index 33db593b..c63667f 100644
--- a/ui/strings/translations/ui_strings_mr.xtb
+++ b/ui/strings/translations/ui_strings_mr.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">कॅलिब्रेशन पूर्ण झाले</translation>
 <translation id="252373100621549798">अज्ञात डिस्प्ले</translation>
+<translation id="2545651323591713692">स्नूझ करा</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{१ता मध्ये}other{#ता मध्ये}}</translation>
 <translation id="2583543531130364912">तुमची टचस्क्रीन कॅलिब्रेट करा</translation>
 <translation id="2666092431469916601">शीर्ष</translation>
diff --git a/ui/strings/translations/ui_strings_ms.xtb b/ui/strings/translations/ui_strings_ms.xtb
index c39da314..76d7892 100644
--- a/ui/strings/translations/ui_strings_ms.xtb
+++ b/ui/strings/translations/ui_strings_ms.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Penentukuran telah selesai</translation>
 <translation id="252373100621549798">Paparan Tidak Diketahui</translation>
+<translation id="2545651323591713692">Tunda</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{dalam 1j}other{dalam #j}}</translation>
 <translation id="2583543531130364912">Tentukur skrin sentuh anda</translation>
 <translation id="2666092431469916601">Atas</translation>
diff --git a/ui/strings/translations/ui_strings_nl.xtb b/ui/strings/translations/ui_strings_nl.xtb
index 270f1b2..1720db57 100644
--- a/ui/strings/translations/ui_strings_nl.xtb
+++ b/ui/strings/translations/ui_strings_nl.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibratie is voltooid</translation>
 <translation id="252373100621549798">Onbekend display</translation>
+<translation id="2545651323591713692">Snoozen</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{over 1 u}other{over # u}}</translation>
 <translation id="2583543531130364912">Je touchscreen kalibreren</translation>
 <translation id="2666092431469916601">Boven</translation>
diff --git a/ui/strings/translations/ui_strings_no.xtb b/ui/strings/translations/ui_strings_no.xtb
index f002ce4..77e6f8ee 100644
--- a/ui/strings/translations/ui_strings_no.xtb
+++ b/ui/strings/translations/ui_strings_no.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibreringen er ferdig</translation>
 <translation id="252373100621549798">Ukjent skjerm</translation>
+<translation id="2545651323591713692">Utsett</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{om 1 t}other{om # t}}</translation>
 <translation id="2583543531130364912">Kalibrer berøringsskjermen din</translation>
 <translation id="2666092431469916601">Topp</translation>
diff --git a/ui/strings/translations/ui_strings_pl.xtb b/ui/strings/translations/ui_strings_pl.xtb
index 3365dfe..43fe9869 100644
--- a/ui/strings/translations/ui_strings_pl.xtb
+++ b/ui/strings/translations/ui_strings_pl.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibracja została ukończona</translation>
 <translation id="252373100621549798">Nieznany wyświetlacz</translation>
+<translation id="2545651323591713692">Odłóż</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{za 1 godz.}few{za # godz.}many{za # godz.}other{za # godz.}}</translation>
 <translation id="2583543531130364912">Skalibruj ekran dotykowy</translation>
 <translation id="2666092431469916601">Do góry</translation>
diff --git a/ui/strings/translations/ui_strings_pt-BR.xtb b/ui/strings/translations/ui_strings_pt-BR.xtb
index 098b1ea9..f25c087 100644
--- a/ui/strings/translations/ui_strings_pt-BR.xtb
+++ b/ui/strings/translations/ui_strings_pt-BR.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">A calibração está concluída</translation>
 <translation id="252373100621549798">Exibição desconhecida</translation>
+<translation id="2545651323591713692">Soneca</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{em 1 h}one{em # h}other{em # h}}</translation>
 <translation id="2583543531130364912">Calibrar a touchscreen</translation>
 <translation id="2666092431469916601">Parte superior</translation>
diff --git a/ui/strings/translations/ui_strings_pt-PT.xtb b/ui/strings/translations/ui_strings_pt-PT.xtb
index 313a214..28331ce 100644
--- a/ui/strings/translations/ui_strings_pt-PT.xtb
+++ b/ui/strings/translations/ui_strings_pt-PT.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">A calibração foi concluída</translation>
 <translation id="252373100621549798">Apresentação Desconhecida</translation>
+<translation id="2545651323591713692">Suspender</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{em 1 h}other{em # h}}</translation>
 <translation id="2583543531130364912">Calibrar o ecrã tátil</translation>
 <translation id="2666092431469916601">Parte superior</translation>
diff --git a/ui/strings/translations/ui_strings_ro.xtb b/ui/strings/translations/ui_strings_ro.xtb
index d054f9c..1c23271 100644
--- a/ui/strings/translations/ui_strings_ro.xtb
+++ b/ui/strings/translations/ui_strings_ro.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Calibrarea este finalizată</translation>
 <translation id="252373100621549798">Afișaj necunoscut</translation>
+<translation id="2545651323591713692">Amână</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{în 1 h}few{în # h}other{în # h}}</translation>
 <translation id="2583543531130364912">Calibrează ecranul tactil</translation>
 <translation id="2666092431469916601">Sus</translation>
diff --git a/ui/strings/translations/ui_strings_ru.xtb b/ui/strings/translations/ui_strings_ru.xtb
index dc3dcc00..6855a960 100644
--- a/ui/strings/translations/ui_strings_ru.xtb
+++ b/ui/strings/translations/ui_strings_ru.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Калибровка завершена</translation>
 <translation id="252373100621549798">Неизвестный дисплей</translation>
+<translation id="2545651323591713692">Отложить</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{через 1 ч.}one{через # ч.}few{через # ч.}many{через # ч.}other{через # ч.}}</translation>
 <translation id="2583543531130364912">Откалибруйте сенсорный экран</translation>
 <translation id="2666092431469916601">Наверх</translation>
diff --git a/ui/strings/translations/ui_strings_sk.xtb b/ui/strings/translations/ui_strings_sk.xtb
index abfd405..38f62a80 100644
--- a/ui/strings/translations/ui_strings_sk.xtb
+++ b/ui/strings/translations/ui_strings_sk.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibrácia je dokončená</translation>
 <translation id="252373100621549798">Neznáma obrazovka</translation>
+<translation id="2545651323591713692">Stlmiť</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{o 1 h}few{o # h}many{o # h}other{o # h}}</translation>
 <translation id="2583543531130364912">Skalibrujte dotykovú obrazovku</translation>
 <translation id="2666092431469916601">Vrch</translation>
diff --git a/ui/strings/translations/ui_strings_sl.xtb b/ui/strings/translations/ui_strings_sl.xtb
index 85f4b0f..c1c27d72 100644
--- a/ui/strings/translations/ui_strings_sl.xtb
+++ b/ui/strings/translations/ui_strings_sl.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Umerjanje je končano</translation>
 <translation id="252373100621549798">Neznan prikaz</translation>
+<translation id="2545651323591713692">Preloži</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{čez 1 h}one{čez # h}two{čez # h}few{čez # h}other{čez # h}}</translation>
 <translation id="2583543531130364912">Umerjanje zaslona na dotik</translation>
 <translation id="2666092431469916601">Na vrh</translation>
diff --git a/ui/strings/translations/ui_strings_sr.xtb b/ui/strings/translations/ui_strings_sr.xtb
index 64ad59b..261dda8 100644
--- a/ui/strings/translations/ui_strings_sr.xtb
+++ b/ui/strings/translations/ui_strings_sr.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Калибрација је довршена</translation>
 <translation id="252373100621549798">Непознати приказ</translation>
+<translation id="2545651323591713692">Одложите</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{за 1 ч}one{за # ч}few{за # ч}other{за # ч}}</translation>
 <translation id="2583543531130364912">Калибрација додирног екрана</translation>
 <translation id="2666092431469916601">Врх</translation>
diff --git a/ui/strings/translations/ui_strings_sv.xtb b/ui/strings/translations/ui_strings_sv.xtb
index aca5b8b..eb811ff 100644
--- a/ui/strings/translations/ui_strings_sv.xtb
+++ b/ui/strings/translations/ui_strings_sv.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibreringen är slutförd</translation>
 <translation id="252373100621549798">Okänd visning</translation>
+<translation id="2545651323591713692">Snooza</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{om 1 tim}other{om # tim}}</translation>
 <translation id="2583543531130364912">Kalibrera pekskärmen</translation>
 <translation id="2666092431469916601">Överst</translation>
diff --git a/ui/strings/translations/ui_strings_sw.xtb b/ui/strings/translations/ui_strings_sw.xtb
index 3a4f140f..ad33670 100644
--- a/ui/strings/translations/ui_strings_sw.xtb
+++ b/ui/strings/translations/ui_strings_sw.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Imemaliza kurekebisha usahihi</translation>
 <translation id="252373100621549798">Onyesho Lisilojulikana</translation>
+<translation id="2545651323591713692">Ahirisha</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{saa 1}other{saa #}}</translation>
 <translation id="2583543531130364912">Rekebisha usahihi wa skrini yako ya kugusa</translation>
 <translation id="2666092431469916601">Ya Juu</translation>
diff --git a/ui/strings/translations/ui_strings_ta.xtb b/ui/strings/translations/ui_strings_ta.xtb
index d12b934..cbcf6ca3 100644
--- a/ui/strings/translations/ui_strings_ta.xtb
+++ b/ui/strings/translations/ui_strings_ta.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">அளவுத்திருத்தம் முடிந்தது</translation>
 <translation id="252373100621549798">அறியாதது</translation>
+<translation id="2545651323591713692">ஒத்திவை</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{இன்னும் 1ம}other{இன்னும் #ம}}</translation>
 <translation id="2583543531130364912">டச்ஸ்கிரீனை அளவுத்திருத்தம் செய்யவும்</translation>
 <translation id="2666092431469916601">மேலே</translation>
diff --git a/ui/strings/translations/ui_strings_te.xtb b/ui/strings/translations/ui_strings_te.xtb
index b582a1f85..1cf187d 100644
--- a/ui/strings/translations/ui_strings_te.xtb
+++ b/ui/strings/translations/ui_strings_te.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">క్రమాంకనం పూర్తయింది</translation>
 <translation id="252373100621549798">తెలియని ప్రదర్శన</translation>
+<translation id="2545651323591713692">తాత్కాలికంగా ఆపివేయి</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1 గంటలో}other{#గంటలలో}}</translation>
 <translation id="2583543531130364912">మీ టచ్‌స్క్రీన్‌ను క్రమాంకనం చేయండి</translation>
 <translation id="2666092431469916601">పైన</translation>
diff --git a/ui/strings/translations/ui_strings_th.xtb b/ui/strings/translations/ui_strings_th.xtb
index 1242379..f9b9083 100644
--- a/ui/strings/translations/ui_strings_th.xtb
+++ b/ui/strings/translations/ui_strings_th.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">การปรับเทียบเสร็จสมบูรณ์</translation>
 <translation id="252373100621549798">หน้าจอที่ไม่รู้จัก</translation>
+<translation id="2545651323591713692">เลื่อนการปลุก</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{ใน 1 ชม.}other{ใน # ชม.}}</translation>
 <translation id="2583543531130364912">ปรับเทียบหน้าจอสัมผัส</translation>
 <translation id="2666092431469916601">ด้านบน</translation>
diff --git a/ui/strings/translations/ui_strings_tr.xtb b/ui/strings/translations/ui_strings_tr.xtb
index c670c93..a140204 100644
--- a/ui/strings/translations/ui_strings_tr.xtb
+++ b/ui/strings/translations/ui_strings_tr.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Kalibrasyon tamamlandı</translation>
 <translation id="252373100621549798">Bilinmeyen Görünüm</translation>
+<translation id="2545651323591713692">Ertele</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1 saat içinde}other{# saat içinde}}</translation>
 <translation id="2583543531130364912">Dokunmatik ekranınızı ayarlayın</translation>
 <translation id="2666092431469916601">Üst</translation>
diff --git a/ui/strings/translations/ui_strings_uk.xtb b/ui/strings/translations/ui_strings_uk.xtb
index 3e8d593..9bfca4e 100644
--- a/ui/strings/translations/ui_strings_uk.xtb
+++ b/ui/strings/translations/ui_strings_uk.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Калібрування завершено</translation>
 <translation id="252373100621549798">Невідомий дисплей</translation>
+<translation id="2545651323591713692">Відкласти</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{через 1 год}one{через # год}few{через # год}many{через # год}other{через # год}}</translation>
 <translation id="2583543531130364912">Відкалібруйте сенсорний екран</translation>
 <translation id="2666092431469916601">Верх</translation>
diff --git a/ui/strings/translations/ui_strings_vi.xtb b/ui/strings/translations/ui_strings_vi.xtb
index 88f1aab..e8e53dcd 100644
--- a/ui/strings/translations/ui_strings_vi.xtb
+++ b/ui/strings/translations/ui_strings_vi.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">Hiệu chỉnh xong</translation>
 <translation id="252373100621549798">Màn hình không xác định</translation>
+<translation id="2545651323591713692">Tạm hoãn</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{trong 1 giờ}other{trong # giờ}}</translation>
 <translation id="2583543531130364912">Hiệu chỉnh màn hình cảm ứng</translation>
 <translation id="2666092431469916601">Hàng đầu</translation>
diff --git a/ui/strings/translations/ui_strings_zh-CN.xtb b/ui/strings/translations/ui_strings_zh-CN.xtb
index 0d59c495..63cea0e 100644
--- a/ui/strings/translations/ui_strings_zh-CN.xtb
+++ b/ui/strings/translations/ui_strings_zh-CN.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">已完成校准</translation>
 <translation id="252373100621549798">未知展示广告</translation>
+<translation id="2545651323591713692">延后</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1 小时后}other{# 小时后}}</translation>
 <translation id="2583543531130364912">校准您的触摸屏</translation>
 <translation id="2666092431469916601">顶部</translation>
diff --git a/ui/strings/translations/ui_strings_zh-TW.xtb b/ui/strings/translations/ui_strings_zh-TW.xtb
index 07f0e1c..078be6a 100644
--- a/ui/strings/translations/ui_strings_zh-TW.xtb
+++ b/ui/strings/translations/ui_strings_zh-TW.xtb
@@ -53,6 +53,7 @@
 <translation id="2515586267016047495">Alt</translation>
 <translation id="2522350507219695259">校正完成</translation>
 <translation id="252373100621549798">顯示器不明</translation>
+<translation id="2545651323591713692">延後</translation>
 <translation id="2573731672208488250">{HOURS,plural, =1{1 小時內}other{# 小時內}}</translation>
 <translation id="2583543531130364912">校正觸控螢幕</translation>
 <translation id="2666092431469916601">置頂</translation>
diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc b/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc
index befb2c5..336258b 100644
--- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc
+++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc
@@ -47,6 +47,8 @@
   ui::PlatformWindowState GetPlatformWindowState() const override {
     return ui::PlatformWindowState::kNormal;
   }
+  void Activate() override {}
+  void Deactivate() override {}
   void SetCursor(ui::PlatformCursor cursor) override {}
   void MoveCursorTo(const gfx::Point& location) override {}
   void ConfineCursorToBounds(const gfx::Rect& bounds) override {}
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
index 626aa32f..5cfc4a2 100644
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
@@ -1006,10 +1006,6 @@
   desktop_window_tree_host_->SizeConstraintsChanged();
 }
 
-void DesktopNativeWidgetAura::OnCanActivateChanged() {
-  desktop_window_tree_host_->OnCanActivateChanged();
-}
-
 std::string DesktopNativeWidgetAura::GetName() const {
   return name_;
 }
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.h b/ui/views/widget/desktop_aura/desktop_native_widget_aura.h
index 478ed52..3b21d60 100644
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.h
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.h
@@ -191,7 +191,6 @@
   bool IsTranslucentWindowOpacitySupported() const override;
   ui::GestureRecognizer* GetGestureRecognizer() override;
   void OnSizeConstraintsChanged() override;
-  void OnCanActivateChanged() override;
   std::string GetName() const override;
 
   // Overridden from aura::WindowDelegate:
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host.h b/ui/views/widget/desktop_aura/desktop_window_tree_host.h
index eff14bc..17f9725 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host.h
@@ -197,9 +197,6 @@
   // Sets the bounds in screen coordinate DIPs (WindowTreeHost generally
   // operates in pixels). This function is implemented in terms of Screen.
   virtual void SetBoundsInDIP(const gfx::Rect& bounds);
-
-  // See description in Widget::OnCanActivateChanged().
-  virtual void OnCanActivateChanged() {}
 };
 
 }  // namespace views
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
index 521601e5..cbd212d 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
@@ -50,6 +50,8 @@
   }
 
   properties.bounds = params.bounds;
+  properties.activatable =
+      params.activatable == Widget::InitParams::ACTIVATABLE_YES;
 
   if (params.parent && params.parent->GetHost())
     properties.parent_widget = params.parent->GetHost()->GetAcceleratedWidget();
@@ -306,13 +308,11 @@
 }
 
 void DesktopWindowTreeHostPlatform::Activate() {
-  // TODO: needs PlatformWindow support.
-  NOTIMPLEMENTED_LOG_ONCE();
+  platform_window()->Activate();
 }
 
 void DesktopWindowTreeHostPlatform::Deactivate() {
-  // TODO: needs PlatformWindow support.
-  NOTIMPLEMENTED_LOG_ONCE();
+  platform_window()->Deactivate();
 }
 
 bool DesktopWindowTreeHostPlatform::IsActive() const {
diff --git a/ui/views/widget/native_widget_private.cc b/ui/views/widget/native_widget_private.cc
index 1983a9c..a5933a8 100644
--- a/ui/views/widget/native_widget_private.cc
+++ b/ui/views/widget/native_widget_private.cc
@@ -26,7 +26,5 @@
   ui::ShowEmojiPanel();
 }
 
-void NativeWidgetPrivate::OnCanActivateChanged() {}
-
 }  // namespace internal
 }  // namespace views
diff --git a/ui/views/widget/native_widget_private.h b/ui/views/widget/native_widget_private.h
index b4f8732a..14e9825e 100644
--- a/ui/views/widget/native_widget_private.h
+++ b/ui/views/widget/native_widget_private.h
@@ -230,7 +230,6 @@
   virtual bool IsTranslucentWindowOpacitySupported() const = 0;
   virtual ui::GestureRecognizer* GetGestureRecognizer() = 0;
   virtual void OnSizeConstraintsChanged() = 0;
-  virtual void OnCanActivateChanged();
 
   // Returns an internal name that matches the name of the associated Widget.
   virtual std::string GetName() const = 0;
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc
index 8bb11af..6e100a7 100644
--- a/ui/views/widget/widget.cc
+++ b/ui/views/widget/widget.cc
@@ -1044,11 +1044,6 @@
 
 void Widget::OnOwnerClosing() {}
 
-void Widget::OnCanActivateChanged() {
-  if (native_widget_)
-    native_widget_->OnCanActivateChanged();
-}
-
 std::string Widget::GetName() const {
   return native_widget_->GetName();
 }
diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h
index e33b6cd..b0d969c0 100644
--- a/ui/views/widget/widget.h
+++ b/ui/views/widget/widget.h
@@ -813,9 +813,6 @@
   // Called when the delegate's CanResize or CanMaximize changes.
   void OnSizeConstraintsChanged();
 
-  // Called when WidgetDelegate::CanActivate() changes.
-  void OnCanActivateChanged();
-
   // Notification that our owner is closing.
   // NOTE: this is not invoked for aura as it's currently not needed there.
   // Under aura menus close by way of activation getting reset when the owner
diff --git a/ui/views/widget/widget_delegate.cc b/ui/views/widget/widget_delegate.cc
index 96563f1..703ee49 100644
--- a/ui/views/widget/widget_delegate.cc
+++ b/ui/views/widget/widget_delegate.cc
@@ -23,16 +23,7 @@
 }
 
 void WidgetDelegate::SetCanActivate(bool can_activate) {
-  if (can_activate == can_activate_)
-    return;
-
-  const bool previous_value = CanActivate();
   can_activate_ = can_activate;
-  if (previous_value != CanActivate()) {
-    Widget* widget = GetWidget();
-    if (widget)
-      widget->OnCanActivateChanged();
-  }
 }
 
 void WidgetDelegate::OnWidgetMove() {
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
index da11a3de..f388a37 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
@@ -2999,11 +2999,8 @@
   // which most likely happens for smart board, we should ignore these events
   // for now. POINTER_FLAG_INCONTACT indicates this pointer is in contact with
   // the digitizer surface, which means pressing the screen.
-  // POINTER_FLAG_INRANGE indicates the pointer is in the detection range of
-  // the screen.
   if ((message == WM_POINTERUPDATE) &&
-      !(pointer_flags & POINTER_FLAG_INCONTACT) &&
-      (pointer_flags & POINTER_FLAG_INRANGE)) {
+      !(pointer_flags & POINTER_FLAG_INCONTACT)) {
     SetMsgHandled(TRUE);
     return 0;
   }
@@ -3037,7 +3034,7 @@
       ui::GetModifiersFromKeyState());
 
   event.latency()->AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, event_time, 1);
+      ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, event_time);
 
   // Release the pointer id for touch release events.
   if (event_type == ui::ET_TOUCH_RELEASED)
@@ -3193,7 +3190,7 @@
   event.set_flags(ui::GetModifiersFromKeyState());
 
   event.latency()->AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, time_stamp, 1);
+      ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, time_stamp);
 
   touch_events->push_back(event);
 }
diff --git a/ui/views/win/pen_event_processor.cc b/ui/views/win/pen_event_processor.cc
index 6e8f488..36de1de 100644
--- a/ui/views/win/pen_event_processor.cc
+++ b/ui/views/win/pen_event_processor.cc
@@ -199,7 +199,7 @@
       flags | ui::GetModifiersFromKeyState());
   event->set_hovering(event_type == ui::ET_TOUCH_RELEASED);
   event->latency()->AddLatencyNumberWithTimestamp(
-      ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, event_time, 1);
+      ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, event_time);
   return event;
 }
 
diff --git a/ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu.js b/ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu.js
index 27b9569..877b67e 100644
--- a/ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu.js
+++ b/ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu.js
@@ -191,7 +191,9 @@
    * @private
    */
   getOptions_: function() {
-    return Array.from(this.querySelectorAll('.dropdown-item'))
+    return Array
+        .from(this.querySelectorAll(
+            '.dropdown-item:not([hidden]):not([disabled])'))
         .map(cr.ui.FocusRow.getFocusableElement);
   },
 
@@ -333,9 +335,6 @@
     do {
       focusedIndex = (numOptions + focusedIndex + step) % numOptions;
       nextOption = options[focusedIndex];
-      if (nextOption.disabled || nextOption.hidden) {
-        nextOption = null;
-      }
       counter++;
     } while (!nextOption && counter < numOptions);
 
diff --git a/ui/webui/resources/cr_elements/cr_toast/cr_toast_manager.js b/ui/webui/resources/cr_elements/cr_toast/cr_toast_manager.js
index e63875d..84bc9bd 100644
--- a/ui/webui/resources/cr_elements/cr_toast/cr_toast_manager.js
+++ b/ui/webui/resources/cr_elements/cr_toast/cr_toast_manager.js
@@ -31,6 +31,16 @@
     undoLabel: String,
   },
 
+  /** @return {boolean} */
+  get isToastOpen() {
+    return this.$.toast.open;
+  },
+
+  /** @return {boolean} */
+  get isUndoButtonHidden() {
+    return this.$.button.hidden;
+  },
+
   /** @override */
   attached: function() {
     assert(!cr.toastManager.instance_);
diff --git a/ui/webui/resources/js/icon.js b/ui/webui/resources/js/icon.js
index 4954ac9f7..2d713630 100644
--- a/ui/webui/resources/js/icon.js
+++ b/ui/webui/resources/js/icon.js
@@ -94,22 +94,31 @@
    * A regular expression for identifying favicon URLs.
    * @const {!RegExp}
    */
-  const FAVICON_URL_REGEX = /\.ico$/i;
+  const FAVICON_URL_REGEX = /\.(ico|png)$/i;
 
   /**
    * Creates a CSS -webkit-image-set for a favicon request.
    *
    * @param {string} url Either the URL of the original page or of the favicon
    *     itself.
+   * @param {boolean} isSyncedUrlForHistoryUi Should be set to true only if the
+   *     caller is an UI aimed at displaying user history, and the requested url
+   *     is known to be present in Chrome sync data.
+   *
    * @return {string} -webkit-image-set for the favicon.
    */
-  function getFavicon(url) {
+  function getFavicon(url, isSyncedUrlForHistoryUi) {
+    const isIconUrl = FAVICON_URL_REGEX.test(url);
     // Note: Literal strings used below must match those in the description of
     // chrome://favicon2 format in components/favicon_base/favicon_url_parser.h.
-    return getImageSet(
-        'chrome://favicon2/?size=16&scale_factor=SCALEFACTORx' +
-        '&url_type=' + (FAVICON_URL_REGEX.test(url) ? 'icon_url' : 'page_url') +
-        '&url=' + encodeURIComponent(url));
+    let path = 'chrome://favicon2/?size=16&scale_factor=SCALEFACTORx' +
+        '&url_type=' + (isIconUrl ? 'icon_url' : 'page_url') +
+        '&url=' + encodeURIComponent(url);
+    if (!isIconUrl) {
+      path += '&allow_google_server_fallback=' +
+          (isSyncedUrlForHistoryUi ? '1' : '0');
+    }
+    return getImageSet(path);
   }
 
   return {